Skip to content

registry-graph: give it a pinned identity too, and honour the assertion (#92) - #100

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

registry-graph: give it a pinned identity too, and honour the assertion (#92)#100
bdelanghe merged 1 commit into
mainfrom
claude/dispatcher-repair-manifest-gate-usikb5

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

The other half of what #87/#99 fixed — on the job #92 predicted would fail. Broker half: infra#176.

It has all three defects, still armed

#99 fixed org-defaults.yml's pin job and left this one exactly as it was:

app: front-desk                                   # carries no `contents`
require: contents, pull_requests                  # asserts it...
GH_TOKEN: steps.app-token.outputs.token || …      # ...then ignores the verdict
git push origin "$b"                              # 403

It hasn't fired only because it early-exits on "in sync". That is #92's exact thesis, and it is worth quoting because it turned out to be right on the sibling job four times over:

reported success on every weekly scheduled run for over a month … it will fail the first time the registry actually changes.

A green job that did nothing is the absence of evidence, reported in the colour of evidence.

Changes

  1. app: front-desk-registry — its own pinned entry (infra#176). Not shareable with front-desk-pin: a workflowRef pins exactly one workflow, so each privileged caller needs its own entry. That constraint is worth noting for I2: exercise privileged identities on a schedule — a green job that did nothing is not evidence #92 itself — see below.
  2. Honour the assertion. The token is used only when the mint step succeeded. github.token holds contents: write in this job, so a scope gap still pushes the branch and loses only the PR — which this job already handles with a named annotation.

A finding that bears on #92

Building this surfaced something about the probe's shape. Since a workflowRef pins one workflow, a central probe workflow cannot mint any pinned identity — it would be a different ref, and the broker would refuse it. So "one scheduled probe per privileged identity" can't be a separate workflow that exercises them all; the exercise has to run from each pinned workflow itself (a scheduled no-op mode), or each identity needs a second entry pinned to the probe.

I've written that up on #92 rather than building the version that cannot work.

Verification

workflows.test.mjs: 27 pass, including the column-0 block-scalar check. The YAML parses and the step wiring is confirmed (app: front-desk-registry, guarded GH_TOKEN).

Not exercised end-to-end: this job only does real work when the registry changes. Same honest caveat as #99 — the mint is testable, the push is not, until it fires.


Generated by Claude Code

…on (#92)

The other half of what #87 fixed, on the job #92 predicted would fail.

registry-graph's `sync` had all three defects org-defaults' `pin` had, still
armed and untouched by #99:

  app: front-desk                                  # carries no `contents`
  require: contents, pull_requests                 # asserts it...
  GH_TOKEN: steps.app-token.outputs.token || …     # ...then ignores the verdict
  git push origin "$b"                             # 403

It has not fired only because it early-exits on "in sync". #92's words: it
"reported success weekly for over a month without once exercising the grant",
and "will fail the first time the registry actually changes". That is a green
job that did nothing, which is the absence of evidence reported in the colour of
evidence.

Not shareable with `front-desk-pin`: a workflowRef pins ONE workflow, so each
privileged caller needs its own entry. bounded-systems/infra adds
`front-desk-registry`, pinned to this workflow.

The token is now used only when the mint step actually succeeded. github.token
holds contents:write here, so a scope gap still pushes the branch and only loses
the PR — which this job already handles with a named annotation.

Refs #92, #87
@bdelanghe
bdelanghe marked this pull request as ready for review August 3, 2026 21:56
@bdelanghe
bdelanghe requested a review from a team as a code owner August 3, 2026 21:56
@bdelanghe
bdelanghe merged commit 2f6f3d8 into main Aug 3, 2026
9 checks passed
@bdelanghe
bdelanghe deleted the claude/dispatcher-repair-manifest-gate-usikb5 branch August 3, 2026 21:56
@github-project-automation github-project-automation Bot moved this from Todo to Done in Front Desk Aug 3, 2026
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