Scope: registration only
Declarable bounded sentinel resolution (SPEC-144's revised D2, and its two corresponding criteria) is not in this item or this milestone. Registration is the independently valuable half, and the sentinel half migrates five core postProcess instances, including buildAutoBreadcrumb, which BUG-018 is changing in the same milestone.
Open question to settle here
SPEC-144 D3, channel explicitness: whether idFrom: name must say ref: / field:, or the implicit ref-then-bag fallback stands. The spec says to decide with a migration in hand. WORK-612 is that migration, so record the decision in this item's resolution, informed by it.
Acceptance Criteria
- A rune can declare
registers.entity with type, idFrom, scope, data and aliases - A rune can declare
registers.edge with from, to and kind - The declaration contains no function values and round-trips through
JSON.parse(JSON.stringify(…)) - One core hook performs the registration for every rune carrying the block, in the existing Phase 2 / Phase 3 slots, beside — not replacing —
PluginPipelineHooks - A declaration naming a field that no emitted node, field-bag entry or attribute provides is reported at validate time, with file and line — the same treatment a schema-table source already gets
refrakt inspect shows a rune's registration declaration- The generated reference documents
registers for every rune that carries one - The plan plugin's pipeline is unchanged, and the authoring guide states SPEC-144's reach table — storytelling and design are reachable, plan is not, and why (D5)
- D3 (channel explicitness) is decided and the decision recorded in the resolution
References
- SPEC-144 — mechanism, D1, D3, D5
- SPEC-072 — the relationship graph this declares into
- ADR-036 — why the vocabulary is closed