Skip to content

Proposal 0013: CND 0.5.0 — rich text and block containers - #7

Merged
Maxanox merged 3 commits into
mainfrom
cnd-15-cnd-0-5-0-proposal
Oct 13, 2026
Merged

Maxanox merged 3 commits into
mainfrom
cnd-15-cnd-0-5-0-proposal

Conversation

@Maxanox

@Maxanox Maxanox commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

Adds proposal 0013, the design for CND format 0.5.0. This is a redesign of the node model, not an addition.

What the proposal decides

  • Rich text. Every prose slot becomes a RichText object: value, lang, standoff marks, and the four link families. The families move off the node base. Every offset indexes the text it sits beside.
  • Marks. The known kinds are strong, emph, code, strike, sup, sub, underline, highlight and math; math carries its source in raw. Marks may overlap freely. They have a canonical form, with sorted order and same-kind marks merged. code and math marks are atomic.
  • Block containers. List items, term definitions, table cells, quotes and footnotes hold block nodes in children. A nested list therefore has its own kind. quote, code and math become block-only.
  • New elements:
    • admonition and layout nodes;
    • ListItem.checked;
    • figure.description;
    • code.title;
    • numbering {value, name}, which replaces number and counter_label;
    • table.kind (data / content / null), which replaces kind and content_kind;
    • doc.status, doc.version and doc.extra.
  • Removed: tight, table.raw, quote.text, quote.lang, code.block and math.block.
  • Cross-cutting rules:
    • open vocabularies (known values, free values, a defined fallback, no x- prefix);
    • no compatibility guarantee before 1.0.0;
    • hashing amendments: defaults dropped, nested nodes excluded, full position in the document hash;
    • traversal slots;
    • new validation invariants.
  • Rendering: Markdown renders marks it has no syntax for as inline HTML by default, with a text-only option.

Proposal 0002 is superseded. The spec, schema, models and ADRs change in the implementation pull requests, cut into four plans: core; renderers and converters; declaration, builder and reconciliation; fixtures.

Closes CND-15

🤖 Generated with Claude Code

https://claude.ai/code/session_01XxXUiDn2QyzNTYnZpeVFVS

Maxanox and others added 3 commits October 12, 2026 23:23
…s (draft)

Redesigns the node model: prose becomes a RichText with standoff marks and
its own link families; list items, term definitions, cells, quotes and
footnotes hold block nodes; adds admonition and layout nodes, checkboxes,
figure descriptions, code titles, numbering objects, and author-declared
document status, version and extra metadata. States the pre-1.0
compatibility policy and the open-vocabulary contract.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XxXUiDn2QyzNTYnZpeVFVS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XxXUiDn2QyzNTYnZpeVFVS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XxXUiDn2QyzNTYnZpeVFVS
@Maxanox
Maxanox merged commit 02565c5 into main Oct 13, 2026
3 checks passed
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