fix(anchor): manifest SHA vs tag ref precedence ambiguity — document + enforce #380
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#380
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?
Empirical finding (external cold-read round 4)
.release-toolkit-manifest.jsonrecords the SHA of the last cut. Existing tag (via Forgejo API) records what the tag currently points to. If they disagree (force-push after cut, manual tag surgery, cross-repo mirror desync), release-decide.sh anchor logic uses the manifest SHA. Adopter intuition says the tag itself should be authoritative — the code's chosen precedence is undocumented + potentially counterintuitive.Blocking rationale
Silent divergence between manifest and tag → release cut anchored to unexpected commit → CHANGELOG walks unexpected range → release notes surface unrelated commits. Trust-breaking on adopter's first "wait, why is that in the release notes?" moment.
Fix path
Two axes:
Axis 1 — precedence rule: which wins on disagreement? Options: (a) manifest wins silently (current), (b) tag wins silently, (c) fail loud on disagreement, (d) prefer newer SHA by commit-date. My lean: (c) fail loud for v1.0.0, add explicit resolution modes in v1.1.0.
Axis 2 — document the rule: whatever we pick, name it in docs/integration.md + name the disagreement scenarios adopters might hit.
Verification AC
Anchor
External outside-model cold-read round 4 (fresh ChatGPT session, 2026-07-03 late). Verdict: 'promising but not yet trustworthy' — SAME TIER as round-3 despite round-3 delta cycle. Meta-pattern named this round: grep-sweep-missed-siblings — the sweep-pattern targeted the literal grep-target, not the semantic class, so class-axis closed PARTIALLY per round. Operator ratified filing round-4 trackers 2026-07-04. This tracker addresses one of the round-4 findings. Success criterion: subsequent external cold-read returns no further objections of this class.
BLOCKING v1.0.0.