Blocked-by: objectui#8288 (must land first — this is only actionable once the per-file ref exists)
What is stale
scripts/check-bash32-floor.mjs carries a ~40-line section, ## Why this port is not pinned in scripts/upstream-port-pin.json, whose whole argument rests on a field that #8288 removes. It says, quoting the file:
Read off the pin's own schema and check-upstream-port-parity.mjs: the ref is a SINGLE GLOBAL field (pin.upstream.ref), one per pin and not one per file, and --resync rewrites it for the whole ledger (pin.upstream.ref = ref;). The ledger currently names bf10deb. This port was taken from 6136293.
After #8288 lands, every clause of that is false:
The section then enumerates two options and rejects both, and rejects a third as the one that must not be taken. All three were consequences of the single global ref. The real conclusion it records is the one that matters:
Consequence, stated so it is inherited rather than rediscovered: this file has NO drift gate.
What is now possible
Both blocked registrations were blocked by the same structural fact, and both are unblocked:
scripts/check-bash32-floor.mjs — taken from objectstack 6136293. It can now be registered at its OWN ref without disturbing any other entry, so neither of the two rejected options (ship a weaker construct table, or force a re-sync of all three pinned files) is needed any more.
- objectui#7953 (closed) recorded the same gap from the other direction: two ported
.claude/hooks/** files do not exist upstream at the then-global ref at all, so the ledger could not reach them. A per-file ref reaches them.
Why this was not done in #8288
Out of scope by that card's own file surface, and correctly so: registering a port is not a schema change. Each registration needs its upstream blob read at a named ref, its digest computed, and its divergences declared as exact text pairs with a stated why — real per-file work with its own review surface, and for the hooks files it also crosses GOVERNED surface (.claude/**), which --resync refuses to rewrite without the long-form flag.
Suggested shape
- Correct the rationale section in
scripts/check-bash32-floor.mjs — at minimum it must stop describing a retired field as the blocker.
- Register
check-bash32-floor.mjs at 6136293, with its divergences declared.
- Re-triage objectui#7953's seven hook files against a per-file ref, deciding registration per file rather than as one all-or-nothing batch.
Each can be a separate card; they are grouped here because they share one cause.
Filed by the os-dev seat working objectui#8288, as an out-of-scope finding. No assignee.
Generated by Claude Code
Blocked-by: objectui#8288 (must land first — this is only actionable once the per-file
refexists)What is stale
scripts/check-bash32-floor.mjscarries a ~40-line section,## Why this port is not pinned in scripts/upstream-port-pin.json, whose whole argument rests on a field that #8288 removes. It says, quoting the file:After #8288 lands, every clause of that is false:
pin.upstream.refdoes not exist — the field is retired, andvalidatePinREFUSES a pin that still carries it.--resyncno longer writes any ledger-wide field; it writes only the re-synced entry'srefand digest.bf10deb" was ALREADY stale before finding(tooling):upstream-port-pin.jsonhas ONE globalupstream.refbut per-file digests —--resyncof one file re-labels the other two with a ref their digests were not taken from #8288: objectui#7749 moved the global ref to70e77ec3b. That staleness is itself an instance of the bug finding(tooling):upstream-port-pin.jsonhas ONE globalupstream.refbut per-file digests —--resyncof one file re-labels the other two with a ref their digests were not taken from #8288 fixes — one global field that every re-sync silently rewrote out from under the prose describing it.The section then enumerates two options and rejects both, and rejects a third as the one that must not be taken. All three were consequences of the single global ref. The real conclusion it records is the one that matters:
What is now possible
Both blocked registrations were blocked by the same structural fact, and both are unblocked:
scripts/check-bash32-floor.mjs— taken from objectstack6136293. It can now be registered at its OWN ref without disturbing any other entry, so neither of the two rejected options (ship a weaker construct table, or force a re-sync of all three pinned files) is needed any more..claude/hooks/**files do not exist upstream at the then-global ref at all, so the ledger could not reach them. A per-file ref reaches them.Why this was not done in #8288
Out of scope by that card's own file surface, and correctly so: registering a port is not a schema change. Each registration needs its upstream blob read at a named ref, its digest computed, and its divergences declared as exact text pairs with a stated
why— real per-file work with its own review surface, and for the hooks files it also crosses GOVERNED surface (.claude/**), which--resyncrefuses to rewrite without the long-form flag.Suggested shape
scripts/check-bash32-floor.mjs— at minimum it must stop describing a retired field as the blocker.check-bash32-floor.mjsat6136293, with its divergences declared.Each can be a separate card; they are grouped here because they share one cause.
Filed by the os-dev seat working objectui#8288, as an out-of-scope finding. No assignee.
Generated by Claude Code