Skip to content

chore(bootstrap): pin 9536835c92d4 and re-record digests - #98

Merged
bdelanghe merged 1 commit into
mainfrom
claude/dispatcher-repair-manifest-gate-usikb5
Aug 3, 2026
Merged

chore(bootstrap): pin 9536835c92d4 and re-record digests#98
bdelanghe merged 1 commit into
mainfrom
claude/dispatcher-repair-manifest-gate-usikb5

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

The follow-up #97 could not do on its own branch: PIN is a commit and cannot name a merge commit that does not exist yet.

By hand again, because the pin job still cannot push its bump branch#87, the App installation lacks contents: write on this repo. This is the third bump in this pattern (#79, #86, #89), and the automated half has never once completed.

Why this is urgent rather than tidy

#97 changed session-start-dispatch.mjs, which is in the verified fetch set. Two consequences on main right now:

  1. A session without .github attached installs the pre-I1: replace the dispatcher's bespoke repairs with a manifest, gated against the canonical field text #97 dispatcher from the pinned commit — older bytes than the tree contains, and nothing else reports it, because the attached checkout always wins locally.
  2. FRESHNESS is asserted on push (reported only on pull_request), so schema is red on main until this lands.

What changed

Only two lines, both written by gen-bootstrap-pin.mjs rather than by hand:

-PIN=7ee3d5cc6416ecf9a5c37bce3b66fae62ac2599d
+PIN=9536835c92d4cdd8be02c93cc30b024455b7353d
-SUM_session_start_dispatch_mjs=43711be3…
+SUM_session_start_dispatch_mjs=4da7bb6e…

register-mcp.mjs and stop-hook-git-check.sh are byte-identical at the new pin, so their digests are untouched — which is the expected shape, since #97 changed only the dispatcher.

Verification

Run with GITHUB_EVENT_NAME unset — the mode that asserts FRESHNESS instead of reporting it, i.e. what main will do:

  • bootstrap-pin.test.mjs: 6 pass, 0 fail (INTEGRITY and FRESHNESS both green).
  • Full .claude/ suite: 109 pass, 0 fail.

Generated by Claude Code

By hand again, for #97, because the `pin` job still cannot push its bump branch
(#87 — the App installation lacks `contents: write` on this repo).

Third hand-bump in the same pattern. #97 changed session-start-dispatch.mjs, a
fetched file, so main is serving older bytes than the tree contains to any
session without `.github` attached — and FRESHNESS is asserted on push, so
`schema` is red on main until this lands.

Only the dispatcher's digest moved; register-mcp.mjs and stop-hook-git-check.sh
are byte-identical at the new pin. Verified with GITHUB_EVENT_NAME unset, the
mode that asserts FRESHNESS rather than reporting it: 6 pass, and 109 across
`.claude/`.

This is the designed hand-off running with its automated half broken, and every
PR touching `.claude/` will keep needing it until #87 is fixed.
@bdelanghe
bdelanghe marked this pull request as ready for review August 3, 2026 19:06
@bdelanghe
bdelanghe requested a review from a team as a code owner August 3, 2026 19:06
@bdelanghe
bdelanghe merged commit 5a87800 into main Aug 3, 2026
9 checks passed
@bdelanghe
bdelanghe deleted the claude/dispatcher-repair-manifest-gate-usikb5 branch August 3, 2026 19:06
@bounded-systems-front-desk bounded-systems-front-desk Bot moved this from Todo to Done in Front Desk Aug 3, 2026
bdelanghe added a commit that referenced this pull request Aug 3, 2026
Two changes, one cause (#87).

1. Point at `front-desk-pin`, not `front-desk`. The fan-in entry carries no
   `contents`, so it could never push the bump branch, and it cannot be given
   any: it is deliberately unpinned and `contents` is privileged, so the broker
   would refuse the entry outright and take every other consumer with it. The
   separate pinned entry is bounded-systems/infra#172.

2. Do not use the token when the mint step FAILED. `require: contents,
   pull_requests` (#93) worked exactly as designed on the merge of #97 — it
   reported `contents(granted: absent)` and named both places the gap could
   live. Then `continue-on-error: true` swallowed the verdict, the job used the
   token anyway, and died on the very push the assertion had just said would
   fail. An assertion whose verdict nothing consumes is decoration.

The fallback is not a downgrade: github.token holds contents:write here and
pushed this branch fine before the broker was wired in (#79). So on a scope gap
the branch now LANDS with the correct pin and only opening the PR is lost — a
click, versus the full hand-regenerate it costs today (#79, #86, #89, #98).

A third annotation separates "broker reachable, scopes insufficient" from
"broker unreachable", since the two are fixed in different systems.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants