Skip to content

Namespace academic cross-reference marks#77

Merged
gvonnessi merged 1 commit into
mainfrom
phase7a-namespace-academic-refmarks
Jun 29, 2026
Merged

Namespace academic cross-reference marks#77
gvonnessi merged 1 commit into
mainfrom
phase7a-namespace-academic-refmarks

Conversation

@gvonnessi

Copy link
Copy Markdown
Collaborator

Summary

  • Rename the academic cross-reference marks from bare type names to namespaced ones: theorem-refacademic:theorem-ref, equation-refacademic:equation-ref, algorithm-refacademic:algorithm-ref.
  • Bare extension mark names placed extension-owned identifiers in the core mark namespace. A consumer that does not load the academic schema saw an unknown bare mark and had to reject the whole document, whereas an unknown namespaced mark is ignored and rendered as plain text; the bare names also coupled the core content schema's known-mark registry to the academic extension.
  • The renamed marks remain registered in the core dispatch + knownMarkTypes (so their target → Content Anchor URI validation is retained), joining the namespaced-but-registered set alongside legal:cite and presentation:footnote.
  • Updated in lockstep: the canonicalizer's reference rewriter, the schema-closure vectors, the canonicalizer unit test, the document-hashing prose, the anchors/references table, and the academic documentation.
  • The academic example's document id and content hash are recomputed to match the renamed marks. No other example's document id moves, and both signed manifest projections are unchanged.

Test plan

  • npm test (schemas + examples) and npm run test:canonicalize pass.
  • check:document-id — academic id recomputed and verified; other 10 ids unmoved.
  • check:manifest-projection — both signed projections unchanged.
  • check:schema-closure (212 vectors, all with teeth), check:readme-examples, check:sync, check:refs, check:coverage, check:manifest-extension-config pass.
  • Seed-and-revert: a bare mark name now fails schema validation (unknown bare mark).
  • All 19 gates green from a clean npm ci; npx tsc --noEmit clean; npm audit 0 high.

The academic theorem/equation/algorithm cross-reference marks used bare
(unprefixed) type names, which placed extension-owned identifiers in the
core mark namespace. This had two consequences: a consumer that does not
load the academic schema saw an unknown *bare* mark and was obliged to
reject the whole document, where an unknown *namespaced* mark would have
been ignored and rendered as plain text; and the core content schema had
to hard-code the bare names in its known-mark registry, coupling the core
to the academic extension.

Rename them to academic:theorem-ref / academic:equation-ref /
academic:algorithm-ref so they route through the unknown-namespaced-mark
disposition and join the namespaced-but-registered set alongside
legal:cite and presentation:footnote (their dispatch branches, and thus
strict target validation, are retained). The canonicalizer's reference
rewriter, the closure vectors, the hashing prose, and the academic
documentation are updated in lockstep; the academic example's document id
and content hash are recomputed to match the renamed marks.
@gvonnessi gvonnessi merged commit ef99239 into main Jun 29, 2026
2 checks passed
@gvonnessi gvonnessi deleted the phase7a-namespace-academic-refmarks branch June 29, 2026 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant