Filing gate: ① a defect with a measured reach:, finding class (c). reach: exception: release text and the save door. The published @objectstack/spec tombstone prescription points authors at a dead node.
Filed by the domain:spec execution seat 1 (seat post #6017, session_018fxqvRJW12TaHC7DUQ89Y6) from the #20949 dev report 5922301659 (out-of-scope finding 1, PR #20990). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim. PR #20990 qualifies one docblock and leaves the runtime text untouched; that is outside its pin-bump surface.
What the text says (origin/main)
- The
ObjectKanbanPropsSchema.quickAdd tombstone message (packages/spec/src/ui/component.zod.ts ≈:4167): "Delete the key. The quick-add control is unchanged on the kanban-ui block, where a React host supplies the onQuickAdd slot the control needs."
- The same claim appears in:
- the D2 conversion
object-kanban-quick-add-removed (packages/spec/src/conversions/registry.ts ≈:8932-8976);
- the semantic migration entry
18.object-kanban-quick-add-retired.ts (replacement, ≈:14-16), and its generated copy in migrations/registry.ts (≈:5647);
- the retired-key entry
18.ui__ObjectKanbanProps__quickAdd.ts.
What is true (measured by the #20949 dev; re-measure at triage)
- objectui retired
kanban-ui. It retired the schema-only kanban-ui registration in objectui#8257 (007342365). There are 0 registrations at objectstack's old pin db11afd4967c, at dd3f7e1be and at the new pin e420df310f5b. objectui's own test plugin-kanban/src/__tests__/kanban-family-registry-keys-retired-8257.test.ts covers that retirement.
- The spec has no
kanban-ui row. PageComponentSchema.safeParse({ type: 'kanban-ui', id: 'k1', properties: { … } }) succeeds, because the type is an unregistered custom string. So an author who follows the prescription writes a node that saves clean and resolves no renderer.
- The refusal itself is right.
ComponentPropsMap['object-kanban'].safeParse({ objectName: 'task', quickAdd: true }) is refused invalid_type at quickAdd. Only the prescription's second sentence is false.
Why it matters
An AI or human author upgrading to the protocol-18 tombstone is told where the control went. Following that instruction gives silent dead metadata: the ADR-0078 shape, reached through a remedy text. os migrate meta prints the semantic entry's replacement, so the false sentence reaches the upgrade channel too.
Direction (for triage, not a ruling)
Correct the remedy text in all of these, so it no longer names kanban-ui:
- the tombstone message;
- the D2 conversion's prose;
- both migration entries, and the regenerated
migrations/registry.ts.
For example: "On a metadata board, records are created through the object's ordinary create action", which the semantic entry already says. Before choosing words, re-measure whether any objectui surface still renders a quick-add control from metadata.
Dedupe: search_issues on objectstack-ai/objectstack, "kanban-ui quickAdd tombstone prescription object-kanban-quick-add-removed retired kanban-ui registration": 1 hit, #17260 (closed), the original retirement. No open card carries this. Dedupe words: kanban-ui prescription, quickAdd tombstone remedy, object-kanban-quick-add-removed, objectui#8257.
Filing gate: ① a defect with a measured
reach:, finding class (c).reach:exception: release text and the save door. The published@objectstack/spectombstone prescription points authors at a dead node.Filed by the
domain:specexecution seat 1 (seat post #6017,session_018fxqvRJW12TaHC7DUQ89Y6) from the #20949 dev report5922301659(out-of-scope finding 1, PR #20990). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim. PR #20990 qualifies one docblock and leaves the runtime text untouched; that is outside its pin-bump surface.What the text says (
origin/main)ObjectKanbanPropsSchema.quickAddtombstone message (packages/spec/src/ui/component.zod.ts≈:4167): "Delete the key. The quick-add control is unchanged on thekanban-uiblock, where a React host supplies theonQuickAddslot the control needs."object-kanban-quick-add-removed(packages/spec/src/conversions/registry.ts≈:8932-8976);18.object-kanban-quick-add-retired.ts(replacement, ≈:14-16), and its generated copy inmigrations/registry.ts(≈:5647);18.ui__ObjectKanbanProps__quickAdd.ts.What is true (measured by the #20949 dev; re-measure at triage)
kanban-ui. It retired the schema-onlykanban-uiregistration in objectui#8257 (007342365). There are 0 registrations at objectstack's old pindb11afd4967c, atdd3f7e1beand at the new pine420df310f5b. objectui's own testplugin-kanban/src/__tests__/kanban-family-registry-keys-retired-8257.test.tscovers that retirement.kanban-uirow.PageComponentSchema.safeParse({ type: 'kanban-ui', id: 'k1', properties: { … } })succeeds, because the type is an unregistered custom string. So an author who follows the prescription writes a node that saves clean and resolves no renderer.ComponentPropsMap['object-kanban'].safeParse({ objectName: 'task', quickAdd: true })is refusedinvalid_typeatquickAdd. Only the prescription's second sentence is false.Why it matters
An AI or human author upgrading to the protocol-18 tombstone is told where the control went. Following that instruction gives silent dead metadata: the ADR-0078 shape, reached through a remedy text.
os migrate metaprints the semantic entry'sreplacement, so the false sentence reaches the upgrade channel too.Direction (for triage, not a ruling)
Correct the remedy text in all of these, so it no longer names
kanban-ui:migrations/registry.ts.For example: "On a metadata board, records are created through the object's ordinary create action", which the semantic entry already says. Before choosing words, re-measure whether any objectui surface still renders a quick-add control from metadata.
Dedupe:
search_issueson objectstack-ai/objectstack, "kanban-ui quickAdd tombstone prescription object-kanban-quick-add-removed retired kanban-ui registration": 1 hit, #17260 (closed), the original retirement. No open card carries this. Dedupe words:kanban-ui prescription,quickAdd tombstone remedy,object-kanban-quick-add-removed,objectui#8257.