Normative rule index
Carve has one normative language contract. These views filter that contract by implementation responsibility; they do not define conformance profiles or make any rule optional.
| View | Rules | Responsibility |
|---|---|---|
| Parsing | 111 | Input normalization, layout, block and inline recognition, attributes, and lexical boundaries. |
| Resolution and rendering | 36 | Document-wide resolution, core semantic behavior, and HTML serialization. |
| AST interchange | 36 | The core serialized tree shape, source positions, and cross-implementation AST guarantees. |
| Canonical writing | 42 | Canonical Carve source, Markdown and plain-text targets, round trips, and escaping. |
| Imports, security, and extensions | 24 | Optional and host-facing behavior, importer contracts, security limits, diagnostics, and extension surfaces. |
Together the views cover all 249 active rules exactly once. The source metadata lives in resources/spec/rules.json.
Retired rule IDs
Retired IDs are never reused. Their replacement points to the document that now owns the contract.
| Rule | Last title | Replacement |
|---|---|---|
CARVE-P9-028 | THE ENGINE'S OWN WORDS ARE A RENDER OPTION | CARVE-P9-063 |
CARVE-PRE-001 | THE EXECUTABLE ARTIFACTS DECIDE NOTHING | .github/CONTRIBUTING.md#what-settles-a-question |
CARVE-PRE-002 | A GOLDEN IS NORMATIVE ONCE COMMITTED, NOT ONCE GENERATED | .github/CONTRIBUTING.md#what-settles-a-question |
CARVE-PRE-003 | A CHECKER THAT DISAGREES WITH A COMMITTED GOLDEN IS WRONG UNTIL A CLAUSE SAYS OTHERWISE | .github/CONTRIBUTING.md#what-settles-a-question |