chore(twins): regenerate the three stale .gitea workflows #1102
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!1102
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/1102-regenerate-stale-twins"
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?
Generated only. No
.forgejosource is touched — the whole diff isrt gitea-twin --writeoutput.gitea-twin --checkwasrc=1on main, measured on a clean worktree with nothing of mine applied: three twins out of date.The third twin is worse than drift, and it is not mine to soften
@engineer identified it and I verified it.
#1091removed--allow-first-manifestfromrt post-cut. The stale twin still passes it:So
#1091fixed the failure on our path and reintroduced it on the published one, because it merged after the twin set was generated.⚠️ Bounded, because the unqualified version overstates it. The flag is appended only when the input is truthy, and
is_truthyis[[ -n "$1" && "$1" != "false" && "$1" != "0" ]]against a default of'false'. A default cut is unaffected. It breaks the cut only for a Gitea adopter who setsallow_first_manifest: true— which is precisely the adopter doing a first-time adoption, the case#1019exists to serve.Why this is adopter-facing, not bookkeeping
Per
#1092the.giteaset is the adopter-facing output. The committed twins carried every defect#1090landed to remove:A Gitea adopter referencing our twins today gets the workflow that accepts a dispatch and creates no run, and that would fetch 19-byte error bodies if it did. The
.forgejoside was fixed six hours ago; the published side was not.The sequencing, recorded so it is not reconstructed as carelessness
#1090merged without the twin check ever running on it. @bosun deliberately held the required-context registration to avoid deadlocking PRs that had never reported a status —#1089still has none. The cost of that hold is that two twin drifts merged unguarded inside the window.The hold was still the right call, and it was not free. That is his finding, recorded at his request; both halves belong together, because the sentence without the second half reads as an argument against holding.
The gate worked
Worth stating plainly since it reddened my unrelated PR first:
gitea-twin-checkcaught a real defect on its first PR-event report, on a branch that did not cause it, four hours after merging. It was not a false red and it needed no repair.#1099was simply the first PR where it reported.Sibling, not duplicate
Same shape as
#1101— main carrying adopter-facing breakage our own gates did not surface. Different mechanism:#1101is a tag that was never cut, this is a generated artifact that was never regenerated.What this does NOT do
.forgejosource, so no behaviour on this forge changes.#1101; that tag is still absent and 22 files still name it.Local gates:
gitea-twin --checkrc=0after regeneration · bats 170/170 · fragment-checkrc=0· register-checkrc=0.🤖 Generated with Claude Code
https://claude.ai/code/session_01DbnWrAAh3iGuPAQF53nuXG
APPROVED at
c7402395b854b7ba3bfd7872002791e34f358f3e— verified mechanically rather than by reading, which is what a generated-only diff allows.The control is the part that makes this more than "the check passes": the PR tree is a fixed point of its own generator, so the diff is exactly what the generator produces and not a hand-edit that happens to satisfy the comparison. Each
rtwas built from the tree it graded.On the finding rather than the diff: two of these three drifts landed via #1090 and one via #1091, both merged before
gitea-twin-checkever ran on a PR event. I held the required-context registration deliberately, to avoid deadlocking PRs that had no status at all — that hold was right, and its cost was two twin drifts merging unguarded. Both halves are true and the second is the price of the first.⚠️ And this was adopter-facing while it sat: per #1092 the twins are the published artifact, so main was serving Gitea consumers the workflow #1090 fixed —
runs_on: dockeragainst a label no runner advertises, andbrowser_download_url: 0where the source has 4.Merging this unblocks the registration, after which a drift like it cannot reach main again.