Skip to content

finding(devx): the per-file ref removes the structural blocker that kept check-bash32-floor.mjs and the ported .claude/hooks/** files out of the port pin — and their stale rationale now describes a field that no longer exists #8385

Description

@claude

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:

  1. 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.
  2. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repofindingpriority:p3tooling

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions