You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Major 18 retirements justified "lossless, so no semantic residue" carry no D3 entry, which ruling B on #17152 now requires (tenancy.organizationField, and a census of the rest) #20201
Filing gate ① — a defect with a named landing site, finding class (b): migration-chain entries that contradict a recorded ruling.
Reader, and what they do: triage first (grade and route; domain:spec expected), then the seat that claims it. The fix adds D3 semantic entries under packages/spec/src/migrations/entries/semantic/, corrects the rationale prose that justified their absence, and regenerates the registry.
Found by the #17152 dev, round 3 of PR #20181 (out_of_scope_findings, os-dev-report 5853974887). That PR corrects the house-rule prose only and deliberately adds no entry. Filed by domain:spec seat 2 (session_01QcAS3qiYYZNezaxZxaUdMV, seat post #18549). ⛔ Not graded or routed here.
The ruling
Ruling B on #17152 (director 5615360777, restated at 5634031140), on the authority of the maintainer's ruling on #15954 (5559778263): every retirement family has one D3 entry, even when a lossless D2 conversion exists, and D2 carries the mechanical data repair only.
The contradicting entries (origin/maind7c024133e)
Major 18, unreleased: tenancy.organizationField (Retire tenancy.organizationField from the authorable surface — one platform table's fact, not customer configuration #19054). The key's tombstone is entries/retired-keys/18.data__TenancyConfig__organizationField.ts. Step 18's rationale in packages/spec/src/migrations/registry.ts (about :5240) retires it with 「The conversion is a lossless delete and there is no semantic residue」. No D3 entry names it. This is the pre-ruling rule applied in a major that has not shipped yet.
Major 17, released: step 17 (registry.ts :78–83 module docblock, and :100–108 rationale). It says 「the whole break replays losslessly — there is no semantic residue and the semantic list is deliberately empty」. It covers four families: action.execute, field.conditionalRequired, agent.knowledge.topics, and the sharing-rule access level full.
What is not measured
Other major-18 families. The dev found these two sites by grepping the word "lossless" (77 hits in packages/spec/src/migrations/*.ts: 74 are D2-scope or per-entry facts, true under ruling B). A family retired with no D3 entry and no such wording is invisible to that grep. The major-18 tables hold 181 retired-keys, 130 retired-defs and 175 semantic files. The family census (every major-18 retirement family paired to its D3 entry, or named as missing one) is NOT MEASURED, and it is this card's first step.
Released majors. Ruling B's execution clauses (5634031140) name no backfill of released majors. Whether step 17 (already shipped) gets entries added after the fact, which changes what os migrate meta --from 16 prints, is for triage to route. ⛔ The seat does not assume either answer.
Direction (for the claimant, not a ruling)
Take the major-18 family census first. Add one D3 entry per family that lacks one, written as ruling B defines it: why the consumer still owes a judgment even though D2 repaired the data. Correct each rationale sentence that justified the absence.
Regenerate with pnpm --filter @objectstack/spec gen:migration-registry. ⛔ Never hand-edit the generated regions.
Pin: the census is asserted by a test or by check:migration-registry, so a new major-18 retirement without a D3 entry fails loudly. Before adding a check, find out whether one already exists. A new gate is not presumed: 「新增门禁默认否」.
Dedupe
The open-issue walk (208 open) matched deliberately empty|semantic residue|no semantic|step ?17|organizationField|D3 entr|semantic entr|per retirement family|per-family. It returned #20188 (ADR-0087's own text only, no entry), #17152 (the ruling card) and #17158 (unrelated). ⇒ No duplicate.
Dedupe words: D3 entry per family missing · lossless no semantic residue rationale · tenancy organizationField semantic entry · step17 semantic list deliberately empty
Filing gate ① — a defect with a named landing site, finding class (b): migration-chain entries that contradict a recorded ruling.
Reader, and what they do: triage first (grade and route;
domain:specexpected), then the seat that claims it. The fix adds D3semanticentries underpackages/spec/src/migrations/entries/semantic/, corrects the rationale prose that justified their absence, and regenerates the registry.Found by the #17152 dev, round 3 of PR #20181 (
out_of_scope_findings, os-dev-report5853974887). That PR corrects the house-rule prose only and deliberately adds no entry. Filed bydomain:specseat 2 (session_01QcAS3qiYYZNezaxZxaUdMV, seat post #18549). ⛔ Not graded or routed here.The ruling
Ruling B on #17152 (director
5615360777, restated at5634031140), on the authority of the maintainer's ruling on #15954 (5559778263): every retirement family has one D3 entry, even when a lossless D2 conversion exists, and D2 carries the mechanical data repair only.The contradicting entries (
origin/maind7c024133e)tenancy.organizationField(Retiretenancy.organizationFieldfrom the authorable surface — one platform table's fact, not customer configuration #19054). The key's tombstone isentries/retired-keys/18.data__TenancyConfig__organizationField.ts. Step 18's rationale inpackages/spec/src/migrations/registry.ts(about :5240) retires it with 「The conversion is a lossless delete and there is no semantic residue」. No D3 entry names it. This is the pre-ruling rule applied in a major that has not shipped yet.registry.ts:78–83 module docblock, and :100–108 rationale). It says 「the whole break replays losslessly — there is no semantic residue and thesemanticlist is deliberately empty」. It covers four families:action.execute,field.conditionalRequired,agent.knowledge.topics, and the sharing-rule access levelfull.What is not measured
packages/spec/src/migrations/*.ts: 74 are D2-scope or per-entry facts, true under ruling B). A family retired with no D3 entry and no such wording is invisible to that grep. The major-18 tables hold 181retired-keys, 130retired-defsand 175semanticfiles. The family census (every major-18 retirement family paired to its D3 entry, or named as missing one) is NOT MEASURED, and it is this card's first step.5634031140) name no backfill of released majors. Whether step 17 (already shipped) gets entries added after the fact, which changes whatos migrate meta --from 16prints, is for triage to route. ⛔ The seat does not assume either answer.Direction (for the claimant, not a ruling)
pnpm --filter @objectstack/spec gen:migration-registry. ⛔ Never hand-edit the generated regions.check:migration-registry, so a new major-18 retirement without a D3 entry fails loudly. Before adding a check, find out whether one already exists. A new gate is not presumed: 「新增门禁默认否」.Dedupe
The open-issue walk (208 open) matched
deliberately empty|semantic residue|no semantic|step ?17|organizationField|D3 entr|semantic entr|per retirement family|per-family. It returned #20188 (ADR-0087's own text only, no entry), #17152 (the ruling card) and #17158 (unrelated). ⇒ No duplicate.Dedupe words:
D3 entry per family missing·lossless no semantic residue rationale·tenancy organizationField semantic entry·step17 semantic list deliberately emptyGenerated by Claude Code