Skip to content

[finding] 9 packages/spec gate families declare path populations the tree no longer has — a quiet green on every card, printed but never recorded #12514

Description

@claude

Filed unassigned, recording only. Observed 2026-08-26 while deriving gates for an unrelated .claude/** card, by a skills-lane dev seat.

node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack prints, on every run for every card, an Unreachable bucket: gate families whose declared population matches NOTHING in the tree, swept over 6,914 tracked files. Today it holds 11, of which 9 are packages/spec gates whose layout moved under them — the tool's own words: "a real miss, worth triaging".

gate a dead literal it still spells
check:api-surface packages/spec/scripts/lib/dist-freshness, packages/spec/scripts/lib/sharded-artifacts
check:dual-source-exports packages/spec/scripts/lib/dist-freshness
check:entry-nameability packages/spec/scripts/lib/dist-freshness, packages/spec/scripts/dist/other.d.ts
check:export-origins packages/spec/scripts/lib/export-origins-layout
check:exported-any packages/spec/scripts/lib/dist-freshness
check:meta-url-spelling packages/spec/src/meta-spelling/metadata-url-spelling
check:spec-changes packages/spec/src/migrations/spec-changes
check:strictness-ledger packages/spec/scripts/lib/strictness-ledger
check:upgrade-guide packages/spec/src/conversions/registry

In each case the tree stops at a prefix (e.g. packages/spec/scripts/lib) and the layout moved below it.

Why it is worth recording

CI still RUNS these gates on every pull request, so this is not a coverage hole today. What it costs is the DERIVATION: no path derivation can name them, so they score the same quiet green for every card in the tree whether they still work or not — a seat editing packages/spec is never told to run them locally, and a gate that silently stopped matching its subject would look identical from here.

The unreachable verdict exists precisely so this is visible rather than invisible, and it does its job — the bucket is printed on every run. What is missing is that nobody owns the list: it is printed to whoever is holding an unrelated card, and no card carries it.

⛔ Not proposing a shape here

Re-pointing each gate's declared population at the path the layout actually moved to is the obvious repair, but whether all nine are stale spellings or some are deliberately-frozen ledgers is the triage this card asks for, not something to decide from the printout.

Dedup: semantic search of the open board for dispatch-gates / unreachable-population cards found the family that BUILT this verdict (closed) and several open cards about OVER-naming, none about these nine.


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions