Tracking anchor for the DEBT block in scripts/check-spec-symbol-derivation.mjs (DEBT_ISSUE). Filed by the dev seat implementing #6291; unassigned, for triage to grade and route.
Why this issue exists rather than a reused number
DEBT_ISSUE was 4115 (objectstack#4115), and the block had been empty since objectui#3162 — that ledger was burned down and objectstack#4115 was closed by objectstack#6883. #6291 dropped rule 1's export filter, which widened the rule's jurisdiction to module-local declarations and surfaced a population that predates the change. Those entries need an open anchor: the gate's own stale-ledger message reads "delete them … (and close #N once the ledger is empty)", which is a dead instruction pointing at a closed issue.
Re-anchoring on #6291 was not an option either — that card is closed by the PR that seeds the block.
The seed, mechanically regenerated by --ledger
14 distinct names, 15 findings, on the #6291 implementation commit against @objectstack/spec@17.2.0. Every one was classified by reading the site (census in PR #6284, re-taken on the implementing commit):
| package |
symbols |
@object-ui/app-shell |
AdminScope, AppLike, FlowEdge, FlowRuntimeState, ObjectLike (two sites), RemoteTable |
@object-ui/core |
CONTEXT_TOKEN_SUGGESTIONS, isContextToken |
@object-ui/types |
UserFilterFieldSchema, UserFiltersSchema |
@object-ui/components |
SortDirection |
@object-ui/data-objectstack |
normalizeFilterOperator |
@object-ui/plugin-detail |
RecordAlertProps |
@object-ui/plugin-tree |
TreeConfig |
These are real mirrors, not different-concept collisions — the four collisions in the same population got reasoned ALLOW entries in the same commit instead. Several carry a divergence measurable today: AppLike, ObjectLike, RemoteTable and FlowRuntimeState each relax a spec-REQUIRED key to optional; CONTEXT_TOKEN_SUGGESTIONS is byte-identical to the spec's nine-entry map, in a file that 25 lines earlier explains its neighbour became a re-export precisely because a byte-identical copy passes every value comparison and every behavioural test; normalizeFilterOperator is a second normalizer over the spec's, and two normalizers disagreeing about filter operators is the silent over-fetch class of objectstack#3948.
How to burn one down
Per the block's own governance: import it, derive it (z.infer<typeof SpecX> / SpecAuthoredInput< … >), or — if it deliberately differs — rename it to a declared dialect or move it to ALLOW with the reason written down. --ledger regenerates the block, so removal is a mechanical edit. The block is shrink-only: it grew once, at #6291, on a jurisdiction widening, and must not grow again for any other reason.
Deliberately filed as ONE ledger rather than 14 issues — PR #6284's report already argued why 19 loose issues for one ledger would be noise. The two entries that carry standalone defects beyond the mirroring already have their own cards (#6286, #6287).
Also seen while filing, NOT fixed here
CLAIM_DEBT_ISSUE = 4592 in the same file points at objectui#4592, which is also closed, and its 19-entry CLAIM_DEBT block is live. Rule 2's ledger has the same dead-anchor problem this issue fixes for rule 1. Left alone rather than changed as a rider on #6291's diff.
Refs: #6291 (the split that surfaced the population) · PR #6284 (the census) · #5899 (the finding) · #6286 / #6287 (standalone defects from the same population)
Tracking anchor for the
DEBTblock inscripts/check-spec-symbol-derivation.mjs(DEBT_ISSUE). Filed by the dev seat implementing #6291; unassigned, for triage to grade and route.Why this issue exists rather than a reused number
DEBT_ISSUEwas4115(objectstack#4115), and the block had been empty since objectui#3162 — that ledger was burned down and objectstack#4115 was closed by objectstack#6883. #6291 dropped rule 1's export filter, which widened the rule's jurisdiction to module-local declarations and surfaced a population that predates the change. Those entries need an open anchor: the gate's own stale-ledger message reads "delete them … (and close #N once the ledger is empty)", which is a dead instruction pointing at a closed issue.Re-anchoring on #6291 was not an option either — that card is closed by the PR that seeds the block.
The seed, mechanically regenerated by
--ledger14 distinct names, 15 findings, on the #6291 implementation commit against
@objectstack/spec@17.2.0. Every one was classified by reading the site (census in PR #6284, re-taken on the implementing commit):@object-ui/app-shellAdminScope,AppLike,FlowEdge,FlowRuntimeState,ObjectLike(two sites),RemoteTable@object-ui/coreCONTEXT_TOKEN_SUGGESTIONS,isContextToken@object-ui/typesUserFilterFieldSchema,UserFiltersSchema@object-ui/componentsSortDirection@object-ui/data-objectstacknormalizeFilterOperator@object-ui/plugin-detailRecordAlertProps@object-ui/plugin-treeTreeConfigThese are real mirrors, not different-concept collisions — the four collisions in the same population got reasoned
ALLOWentries in the same commit instead. Several carry a divergence measurable today:AppLike,ObjectLike,RemoteTableandFlowRuntimeStateeach relax a spec-REQUIRED key to optional;CONTEXT_TOKEN_SUGGESTIONSis byte-identical to the spec's nine-entry map, in a file that 25 lines earlier explains its neighbour became a re-export precisely because a byte-identical copy passes every value comparison and every behavioural test;normalizeFilterOperatoris a second normalizer over the spec's, and two normalizers disagreeing about filter operators is the silent over-fetch class of objectstack#3948.How to burn one down
Per the block's own governance: import it, derive it (
z.infer<typeof SpecX>/SpecAuthoredInput< … >), or — if it deliberately differs — rename it to a declared dialect or move it toALLOWwith the reason written down.--ledgerregenerates the block, so removal is a mechanical edit. The block is shrink-only: it grew once, at #6291, on a jurisdiction widening, and must not grow again for any other reason.Deliberately filed as ONE ledger rather than 14 issues — PR #6284's report already argued why 19 loose issues for one ledger would be noise. The two entries that carry standalone defects beyond the mirroring already have their own cards (#6286, #6287).
Also seen while filing, NOT fixed here
CLAIM_DEBT_ISSUE = 4592in the same file points at objectui#4592, which is also closed, and its 19-entryCLAIM_DEBTblock is live. Rule 2's ledger has the same dead-anchor problem this issue fixes for rule 1. Left alone rather than changed as a rider on #6291's diff.Refs: #6291 (the split that surfaced the population) · PR #6284 (the census) · #5899 (the finding) · #6286 / #6287 (standalone defects from the same population)