Points

A Point is a marked part of your writing. Use one when a sentence, passage, or missing piece needs an explicit role or a reference. Ordinary body does not become a Point automatically. Points can be questions, gaps, or source material; they need not all be propositions that can be true or false.

Mark Name Use here
[Q] Question A question or issue to examine
[C] Claim A claim, position, or possible answer
[G] Ground A reason bearing positively on a target
[O] Objection An objection or alternative raised against a target
[R] Reply A response to an objection
[D] Distinction A distinction that helps clarify a target
[?] Gap An open gap or missing piece

A role describes what the material does here. The six roles are Q, C, G, O, R, and D. The mark on a Point’s declaration is also kept as its declaration information: how it was introduced, not a type every later use must follow. C means Claim, not a permanent conclusion; the same Claim can later serve as a Ground. Gap is a separate Point form, not an additional role, and remains open. Role-level openness is unsupported; the retired C? spelling receives a migration error. See the English / 繁體中文 glossary for suggested Chinese readings.

Preserve tentative content

Use C for a claim or possible answer, including tentative ones. C does not certify truth, acceptance, certainty or completion. Likewise, R does not certify a successful reply.

Wording such as “possibly P” is part of the claim’s content. When reconstructing, preserve whether the source asserts the claim or leaves it open. Distinguish the author’s commitment, your uncertainty about the reading, and your evaluation in prose. See the quick start for an example.

Leave context as body

- [C @claim] The current explanation is incomplete.
  - This paragraph supplies context without another marked point.
    - [G] It does not account for the second observation.

The reason connects to the enclosing claim through the body. Body itself creates no Point or connection. An intervening Point, however, becomes the nearest target candidate; the compiler does not skip it to find a more convenient ancestor. The nonblocking suggestion identifies this actual attachment through body; the author may retain that grouping deliberately.

Keep supplementary prose in a note

- [C @claim] These measurements can be compared under the same calibration conditions.
  - [note] Source and editorial details.
    - Laboratory record, section 2.
      - [G @unfinished] This is quoted syntax, not an active Ground.
  - [G] Both runs used the same calibration procedure.

Write note once; its whole indented subtree stays literal prose, including nested annotation-looking text. Dedenting restores interpretation, so the sibling Ground remains active. A note belongs to its direct source occurrence, including a use, rather than to shared Point content. Reusing the Claim does not copy this note. Keep qualifications that change the Claim’s scope in its content or a clearly retained argument context. Moving an active argument into note is an author-selected semantic edit, not a formatting repair.

Identity

- [C @claim] The current explanation is incomplete.
  - [G] It does not account for the second observation.
- [O -> @claim] That observation may be a measurement error.

The claim has the authored name claim. The reason and objection are anonymous: they remain full Points, and the objection can have an explicit target without naming itself.

Names match [a-z][a-z0-9_-]* and share a namespace with named connections. Prose can use any language. Keep a name across edits when the same authored item should remain identifiable; renaming requires updating references.

Content can also be named without assigning a role: [. @passage] declares a Neutral Point. This is a Point form, not another role; the machine contract records it as declaration.form: "material". See the complete syntax for this and all other naming forms.

Reuse without redeclaring

Use [. use @p] to bring an existing Point into the current discussion without copying its content or subtree. Add a local mark when its role here should create a connection:

- [C @observation] Two retries timed out.
- [C @claim] The shared configuration may explain the timeouts.
  - [G use @observation] Consider that observation in this step.

The observation remains one Claim in the graph; this occurrence uses it as a Ground. Its trailing explanation stays local rather than replacing the observation’s text. Beneath this occurrence, [O] challenges the shared observation itself, while [O/] objects only to the support made here. Bare [. use @observation] writes the neutral mark: it selects no role and adds no default connection, and the original declaration’s role is never imported as the local role. A local mark applies at its occurrence only; it does not change the Point’s declaration, text or Gap openness, and it does not fill a Gap. Names can resolve forward within the same document or selected host unit. [G @observation] would instead declare again and receive DUPLICATE_ID. For local attachment selection, failure boundaries and unsupported occurrence status, see reference-only occurrences.

For integrations, every compiled Point has a key; id is present only when the author supplied a name. Graph references use { key, kind: "point" }. Keys are local to one compilation and one graph, including one host fence. They are not stable cross-revision identifiers, source names, or global IDs. Source spans are locations, not identity.