docs(self-bootstrap): the check, rt repin and arc42 follow AGENTS.md section 2 on the @main pin (#1512) #1513
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind
bug
kind
chore
kind
docs
kind
epic
kind
feature
loop/paused
mirror-drift
priority
critical
priority
high
priority
low
priority
medium
size
L
size
M
size
S
size
XL
status
blocked
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frankenbit/release-toolkit!1513
Loading…
Reference in a new issue
No description provided.
Delete branch "claude/1512-self-bootstrap-456-framing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs #1512
#1511 rewrote AGENTS.md section 2 for the #456 floating pin. This PR brings every other surface that still prescribed the rc re-pin into line with it:
check-self-bootstrap's workflow header, failure messages and help,rt repin's doc and help, the C5repinrow, arc42 sections 7.3 and 11.1, anddocs/SECURITY.md.no-changelog: toolkit-self only.
rt check-self-bootstrapandrt repinare outside the C5 adopter contract, and the rest is documentation, so no adopter-visible behaviour changes.What changed
Row numbers are from #1512's table.
.forgejo/workflows/check-self-bootstrap.ymlheader@main, the check cannot go red for drift, so a red is alignment drift or a failed precondition, fixed by restoring@main. Under a tag pin, the red on a compose-script PR is expected, and the header names both remedies. The YAML change is comment-only and ASCII-only.rt check-self-bootstrap's drift and alignment redslogPinRemedies). Accidental tag pin: put each wrapper back on@mainin a reviewed PR, becausert repincannot. Deliberate tag pin:rt repin <vX.Y.Z-rc.N>.rt check-self-bootstrap --helpdocs/architecture/contracts/cli-surface.md,repinrow@main. It rewrites the top-level.forgejo/workflows/wrappers, not theexamples/ones. The matching comment inc5ExcludedVerbsdrops "example" too.@main, because a toolkit-self cut runs the commit it cuts. It returns with a tag pin. Section 7.3's tag-pin text is kept, labelled as the dormant posture.cmd/rt/repin.goLongtext with the #456 note: dormant for toolkit-self, for a deliberate tag pin only, and not a way back to@main.docs/SECURITY.md:33Decision tree
What a red should tell the reader.
rt repinif a tag pin is always deliberate. That was true before #456, and it is what the old text did.@main" if every tag pin is a slip. That breaks the day toolkit-self is pinned to a tag on purpose, a path AGENTS.md section 2.2 keeps open.Whether the alignment red gets the remedies too. Yes. It is the only red the check can raise under
@main; AGENTS.md section 2.2 says "If one wrapper moved, it is alignment drift". So this is where the@mainremedy matters most. It would get its own text only if alignment drift had a different fix, and it does not.What to keep from the retired
repin.shheader. It carried the #456 note, plus two remaining uses. One was toolkit-self recovery after an accidental tag pin. That use is not ported:repin.shalso refused any tag without-rc.(line 80 at25c2fb3), so it never could restore@main. The other, an adopter's emergency re-pin, is not ported either.cli-surface.mdclassifiesrt repinas not adopter-facing, and this PR did not measure whether it works in an adopter repo.Commit types.
chore:for the Go change. Under the consumer-facing-surface test indocs/conventions.md, no adopter observes it: both verbs are toolkit-self.docs:for the rest. Afix:subject would request a patch bump for a change no pinned consumer can see.Scope. In scope are the four surfaces #1510 listed, plus four rows (2a, 2b, 4a, 6) found by a
git grepfor the same phrases. #1512 records three items as out of scope:@main;register-checkmisattribution in section 11.1;AGENTS.md:131citation in02-constraints.md.Section 2 note
No re-pin is needed: toolkit-self floats
@main(AGENTS.md section 2.1).check-self-bootstrap.ymlis not ingates.DefaultComposeScripts. The two Go files change only log text, help text and comments. Adopters get the newrthelp and log text from the next cut tag; nothing they invoke changes behaviour.Verified at source
All reads are on live
origin/mainaa9521b, 2026-10-02.@maincannot go red for drift.cmd/rt/check_self_bootstrap.go:177-183returns beforerev-parse --verifyon the pinned ref..forgejo/workflows/reusable-release.yml. In itscheck-self-bootstrap / checkrun (run 18568, job 0), therun check-self-bootstrapstep loggedfloating-pin (release-toolkit#456): main matches main by constructionand the job passed. That is the job log, not only the status row.uses: frankenbit/release-toolkit/...lines under.forgejo/workflows/pin@main.rt repin.git grep repin -- .forgejo/workflows .gitea/workflowsreturns marker comments plusreusable-release.yml:192,263, all of them comments.rt repincannot restore@main.rcTagShape(cmd/rt/repin.go:24) is^v[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$.rt repindoes not touchexamples/.repinWrapperscallswrappers.Discoveron<dir>/.forgejo/workflows, which runsos.ReadDiron that one directory with no recursion.9bca7d5is "chore: re-pin self-bootstrap to v0.30.0-rc.2 (#172)", 2026-07-07.e9eca94is the #456 floating-pin commit, the same day.git ls-remote --tagsshowsv0.30.0-rc.2as the newest rc tag.aa9521b.Tests
Run in
golang:1.25against an LF clone.go test ./...: every package isok. gofmt is clean.New
cmd/rt/check_self_bootstrap_test.go. This command's output had no test before. The new tests drive the CLI against a fixture repo whose default branch istrunk. Nomainref exists there, so the floating-pin case passes only if the check returns before resolving any ref.Mutation-checked, each mutant in a fresh copy:
@mainremedy from the helperpinDrift…,alignmentDrift…pinDrift…alignmentDrift…floatingMain…pinDrift…Lockstep gates:
TestHelpSnapshot,TestSubcommandsMatchC5ContractandTestC5ExclusionsAreDocumentedare green.help.txtis unchanged, because no Short text changed.rt register-checkon the four changed docs and the YAML: 0 hits.bats:
workflows: check-self-bootstrap skips release-prep rolling PRs (#304 regression guard)is ok, and the YAML loads withyaml.safe_load.Not run locally:
scripts/workflow-parse-check.sh, because the local image has noforgejo-runner(rc=127). CI grades it.Review request
@alex, please do a verify-at-source pass (AGENTS.md section 6), not an FYI:
logPinRemedies,cmd/rt/check_self_bootstrap.go) with AGENTS.md section 2.2's two cases. Does the accidental arm say what 2.2 says, and no more?repinrow incli-surface.md.git grep -n repin -- .forgejo/workflowsshould show comments only.Pin your submission with
rt review-submit-check --owner frankenbit --repo release-toolkit --pr 1513 --reviewed-head 4ffde692129e10c252ec29dea53e910b268452f8(AGENTS.md section 6.2).🤖 Generated with Claude Code
Landing identity record
4ffde692129e10c252ec29dea53e910b268452f84ffde692129e10c252ec29dea53e910b268452f8This is a post-merge identity record. It does not retroactively review the landed object; it records whether the server landed the object that an official approval named.