Blocked-by: #8819
Observation recorded while implementing #8820. ⚠️ Reachability is NOT measured — filing it plainly rather than grading it myself, because #8820 is precisely the card where an unmeasured reachability claim was the whole defect.
What was measured
At origin/mainb69d0f5e4 there are three type === 'objects' tolerances in packages/metadata-protocol/src/protocol.ts:
| line | site | what it does with the tolerant value |
|---|
:11487 | ensureObjectStorage | guard only — type never used again |
:11542 | dropObjectStorage | guard only — type never used again |
:10869 | applyObjectRegistryMutation | consumes it |
The first is handled by #8820. The third is different in kind:
privateapplyObjectRegistryMutation(request: {type: string; name: string;…}): void{if(request.type!=='object'&&request.type!=='objects')return;this.engine.registry.registerItem(request.type,request.item,'name');It does not merely admit a plural, it registers under it. That is the shape canonicalMetaType's header describes as already having cost the repo a real bug, in its own words:
One plural-spelled read minted a plural registry entry, listItems('actions') stopped being empty, and the singular fallback that had been supplying the code-authored items never ran again — so one overlay row shadowed an entire code-authored listing, and survived the DELETE that was supposed to lift it.
So if any caller can deliver 'objects', this mints exactly that entry. If none can, the limb is dormant and the tolerance is still the spelling-tolerant-lookup shape that header rejects.
Why I did not measure it
Sole caller is applyRegistryWriteThrough (:11193), which has four call sites: :12485, :13348, :15503, :15793. :13348 folds (that is #8820's edit). ⚠️:15503 and :15793 sit inside the region #8819 holds in flight, so tracing them to their producers was not mine to do this round. Deciding this one needs all four traced to where the value is produced — the step whose omission is the entire subject of #8820.
Suggested disposition
Sequence after #8819 lands, then trace all four callers. If any delivers a plural, this is a live registry-shadowing defect rather than dormant code. Note the fix shape #8820 settled on is available here too and is stronger than tightening the guard: fold at the producer so the tolerant spelling cannot arrive, rather than teaching the predicate which spellings to accept.
Backlink: #8820 (same tolerance family, same file; that card's measurement is what surfaced this one). See also the dropObjectStorage twin at :11542, which #8820's PM notes as looking dormant with one call site traced and one not.
Blocked-by: #8819
Observation recorded while implementing #8820.⚠️ Reachability is NOT measured — filing it plainly rather than grading it myself, because #8820 is precisely the card where an unmeasured reachability claim was the whole defect.
What was measured
At
origin/mainb69d0f5e4there are threetype === 'objects'tolerances inpackages/metadata-protocol/src/protocol.ts::11487ensureObjectStoragetypenever used again:11542dropObjectStoragetypenever used again:10869applyObjectRegistryMutationThe first is handled by #8820. The third is different in kind:
It does not merely admit a plural, it registers under it. That is the shape
canonicalMetaType's header describes as already having cost the repo a real bug, in its own words:So if any caller can deliver
'objects', this mints exactly that entry. If none can, the limb is dormant and the tolerance is still the spelling-tolerant-lookup shape that header rejects.Why I did not measure it
Sole caller is⚠️
applyRegistryWriteThrough(:11193), which has four call sites::12485,:13348,:15503,:15793.:13348folds (that is #8820's edit).:15503and:15793sit inside the region #8819 holds in flight, so tracing them to their producers was not mine to do this round. Deciding this one needs all four traced to where the value is produced — the step whose omission is the entire subject of #8820.Suggested disposition
Sequence after #8819 lands, then trace all four callers. If any delivers a plural, this is a live registry-shadowing defect rather than dormant code. Note the fix shape #8820 settled on is available here too and is stronger than tightening the guard: fold at the producer so the tolerant spelling cannot arrive, rather than teaching the predicate which spellings to accept.
Backlink: #8820 (same tolerance family, same file; that card's measurement is what surfaced this one). See also the
dropObjectStoragetwin at:11542, which #8820's PM notes as looking dormant with one call site traced and one not.