Skip to content

release-tag: name the desired state — Dependabot cannot see an untagged repo - #23

Merged
bdelanghe merged 1 commit into
mainfrom
claude/osv-rollout-adoption-gap-oistiz
Aug 3, 2026
Merged

release-tag: name the desired state — Dependabot cannot see an untagged repo#23
bdelanghe merged 1 commit into
mainfrom
claude/osv-rollout-adoption-gap-oistiz

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

#21's core assumption was falsified an hour after it merged, before the fan-out copied it 57 times. This PR is the repair, plus the correction of what #21 wrote.

The falsification

guest-room has run the exact config #21 fans outgithub-actions ecosystem, weekly, grouped — since June. Its group PR (guest-room#61), refreshed by tonight's scheduled run, bumps checkout → v7.0.1, codeql → v4.37.4, scorecard → v2.4.4 across three workflow files — and does not touch deps.yml's osv-scan pin, still at 8b7d8a8, three template moves behind.

Same engine, same config, one difference: those actions have tags. Dependabot resolves "latest" for a SHA-pinned uses: via the referenced repo's tags/releases, and ci-workflows has zero. The one pin the whole convergence loop exists to move was structurally invisible to the chosen applier.

The repair: name the desired state

release-tag.yml — a patch tag minted on every push to main that touches the lanes, templates/, or tools/; explicit vX.Y.Z via dispatch for a deliberate minor/major. Properties that matter:

  • contents:write on this repo only. No org-wide authority, no broker entry, no new standing grant — the no-bespoke-actor stance survives intact. The tag is the one piece of state the managed applier needs to act.
  • Tags are never moved. Minting an existing tag fails; callers stay SHA-pinned per org policy, and Dependabot rewrites both the SHA and the trailing # vX.Y.Z comment — exactly the shape check_template_pins.py requires.
  • Serialized (concurrency: release-tag) so two racing merges cannot compute the same next-patch.
  • Tag arithmetic exercised: (none)→v0.1.0, v0.1.0→v0.1.1, v1.2.9→v1.2.10.

Corrections to #21's text

Template header and README both claimed Dependabot converges callers onto the default-branch head. Wrong — it converges onto the latest tag. Both corrected with the guest-room evidence cited, since the fan-out copies the template header into every repo.

After this merges

  1. Dispatch release-tag.yml once to seed v0.1.0 (the merge push also triggers it via templates/**, whichever lands first — the loser fails loudly on "tag exists", which is correct).
  2. Fan out templates/dependabot.yml to the ~57 callers (append-don't-clobber for guest-room and prx, which have existing configs).
  3. Dependabot's first cycle per repo opens the re-pin PRs; census verifies; fail-on-lag flips when behind: 0.

🤖 Generated with Claude Code

https://claude.ai/code/session_017RMKHpGXzw9Zkv49fzVssg


Generated by Claude Code

… untagged repo

Falsified live an hour after #21 merged: guest-room has run the exact
Dependabot config #21 fans out -- github-actions ecosystem, weekly, grouped
-- since June, and its freshly-refreshed group PR (guest-room#61) bumps
checkout/codeql/scorecard pins across three workflow files while leaving
deps.yml's osv-scan pin untouched at 8b7d8a8, three template moves behind.
Same engine, same config. The difference is that those actions have tags:
Dependabot resolves 'latest' for a SHA-pinned uses: via the referenced
repo's tags, and this repo had none, so the one pin the whole loop exists
to move was invisible to the applier.

release-tag.yml mints a patch tag on every push to main touching the lanes,
templates, or tools (explicit vX.Y.Z via dispatch for minor/major). It
holds contents:write on THIS repo only -- nothing org-wide, no broker
entry, no new standing grant. Tags are never moved; minting an existing
tag fails.

Also corrects the head-tracking claim #21 wrote into the template header
and README: Dependabot converges callers onto the latest TAG, not the
default-branch head.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RMKHpGXzw9Zkv49fzVssg
@bdelanghe
bdelanghe marked this pull request as ready for review August 3, 2026 23:54
@bdelanghe
bdelanghe merged commit 07cab52 into main Aug 3, 2026
11 checks passed
@bounded-systems-front-desk bounded-systems-front-desk 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