selfboot round-trip test couples baseline to live working-tree pin state → red on every release-prep PR #599
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#599
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Symptom
TestRoundTrip_ThreeActorBootstrap(internal/selfboot) failsgo-cion release-prep PRs (first seen on PR#552chore(release): v0.34.0, head edf9c4d):Root cause (verified empirically)
stageReusables(internal/selfboot/selfboot_test.go) stages the 5 real reusables from the live working tree (../../.forgejo/workflows/). The round-trip identity assertion —bake(main, PhaseMainReset)must equal thetree0baseline — holds only when the working tree is at the'main'build-ref marker state.release-prep.shpins those markers'main' → 'vX.Y.Z'on everychore(release): preparePR (the pin→reset oscillation;post-cut bookkeeping [skip ci]resetsmainback). So on a release-prep branch the baseline isvX.Y.Z-pinned whilebake(main)rewrites to'main'→ trees diverge → the "no-op" invariant is violated by the setup, not by the code under test.Measured: PR head = all 5 reusables
'v0.34.0';origin/main= all 5'main'; delta = exactly 1 line/file (theBUILD_BAKED_TOOLKIT_REFtoken). Reproduced verbatim in a worktree@edf9c4d (FAIL); resetting the reusables to'main'markers → PASS.Not a regression
roundtrip_test.gowas added by #547 (absent at v0.33.0). v0.34.0 is the first release-prep PR to carry this test — that is the "why now".'main'marker state, somain(and every merged commit) stays green. Left unfixed, it recurs on every futurepreparePR — permanent gate-oscillation → gate-erosion.Fix (Option A, ratified)
Normalize the staged reusables' build-ref markers to
'main'instageReusables, using bake's own byte-exact rewrite kernel (guaranteeing byte-identity withbake(main)'s fixpoint). Decouples the milestone-#77 gate baseline from the transient release-prep pin; preserves the dogfood + all assertions + zero coverage loss; permanent across all future cuts.Refs #547