feat: comment categories; emend, relink and resolve corrections

scienting-layer/1: an optional, fixed category on comment, caveat and
question bodies (comment, context, critique, question, correction,
feedback, resource).

Corrections: emend fixes the authors' own slip and keeps what was printed
(a run's printed), never lowering fidelity or a witness match; relink sets
or removes what a citation names; resolve sets a reference's resolution.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017R7sgDNvUGWY2zFPCq2JH6
This commit is contained in:
alexmandClaude committed 2026-10-17 06:17:10 -04:00
1 parent 4d59b29b63
commit 8b5ee87275
33 files changed
+726 -80

No files matched your search

+21 -4
View File
@@ -45,9 +45,9 @@ Replies are annotations that target annotations, so discussions are threads anch
| `gloss` | `TextualBody` | `audience` | An explanation at `novice`, `student` or `expert` level. |
| `claim-link` | `SpecificResource` | `source` (`lode:<tag>`), `pin`, `role` | That the span `states`, `uses` or `disputes` a claim. |
| `symbol` | `SpecificResource` | `source`, `pin`, `symbol` | That this occurrence of a symbol is a symbol claim. |
| `comment` | `TextualBody` | | A remark, opinion or interpretation. |
| `caveat` | `TextualBody` | | A warning a reader should see. |
| `question` | `TextualBody` | `for` | A question for a `reader`, a `group` or the `authors`. |
| `comment` | `TextualBody` | `category` | A remark, opinion or interpretation. |
| `caveat` | `TextualBody` | `category` | A warning a reader should see. |
| `question` | `TextualBody` | `for`, `category` | A question for a `reader`, a `group` or the `authors`. |
| `exercise` | `TextualBody` | `exercise` | A task with a key and a rule ([19](19-exercises.md)). |
| `citation-context` | `TextualBody` | `reference`, `verdict`, `reason` | Why a sentence cites a reference, and whether it supports it. |
| `prerequisite` | `SpecificResource` | `source` | What to read or know first. |
@@ -57,7 +57,24 @@ Replies are annotations that target annotations, so discussions are threads anch
| `generated` | `TextualBody` | `generator` | Text a model wrote about the span; never mistaken for source. `generator` is `{model, run}` as a correction's model author is ([11.2](11-corrections.md#112-every-correction-records)). |
A textual body has a `value`, and optionally a `format` (`text/plain` or `text/markdown`) and a `language`.
A `comment`, `caveat` or `question` body MAY carry a `category`, which says what it is about, from a fixed list:
| `category` | Says |
| --- | --- |
| `comment` | A general remark. |
| `context` | Background, related work, or what a reader should know to follow the span. |
| `critique` | A flaw in the method, the analysis or the argument. |
| `question` | A question. |
| `correction` | An error of fact, number, citation or reference in the paper. |
| `feedback` | A suggestion addressed to the authors. |
| `resource` | Data, code or a related paper. |
A producer that supports categories SHOULD set one on every comment, caveat and question; the property is optional only so that layers written before it stay valid.
The category is independent of the kind, so a caveat may be a `correction` and a question a `critique`.
A `correction` category says that a reader found an error in the paper; correcting the document's reading of it is a correction of [11](11-corrections.md).
The store's `annotations` table keeps the category beside the body's kind ([13.4](13-database.md#134-the-store-tables)).
Nothing a model writes is ever stored as source text.
A model may propose a `description`, and like any annotation it stays `proposed` until a person confirms it; an accessible export uses confirmed descriptions only, and a figure with none has no description.
Other text a model writes about a span, such as a summary, is a `generated` annotation, which names its `generator`.
`fixtures/records/layer/` holds a layer with one annotation of each common kind and the receipt that confirms some of them.
`fixtures/records/layer/` holds a layer with one annotation of each common kind, each comment, caveat and question with its category, and the receipt that confirms some of them.