fix(release): make post-cut manifest replay remote-authoritative #881

Merged
pullings merged 2 commits from i/862-manifest-precheck-boundary into main 2026-08-26 01:36:32 +02:00
Owner

Refs #862

Summary

The cut path runs rt release before rt post-cut, and rt release writes the current-run .release-toolkit-manifest.json locally. The post-cut idempotency precheck now uses a remote-authoritative mode: only a fetched remote manifest recording the cut head can authorize an idempotent skip. A missing, unreadable, or older remote proceeds to the manifest write and leaves the existing post-condition to verify the result.

The general rt manifest-precheck command keeps its legacy local fallback. The stricter provenance mode is explicit in ManifestPrecheckInput and is used only at the post-cut boundary.

Verification

  • go test -count=1 ./...
  • go vet ./...
  • go build ./...
  • bats tests/*.bats — 60/60
  • git diff --check
  • Mutation control: removing the RemoteAuthoritative branch made the remote-old/invalid/absent plus local-current cases return skip and the focused test exit 1.

Base: a03eef10517e1c6618bfdfe1489ef24be1e1434e
Head: a74a4c9c0cc07e2441c61abdcf58587ec4f23d16

No live release cut was fired. #876 and #872 were not modified.

Refs #862 ## Summary The cut path runs `rt release` before `rt post-cut`, and `rt release` writes the current-run `.release-toolkit-manifest.json` locally. The post-cut idempotency precheck now uses a remote-authoritative mode: only a fetched remote manifest recording the cut head can authorize an idempotent skip. A missing, unreadable, or older remote proceeds to the manifest write and leaves the existing post-condition to verify the result. The general `rt manifest-precheck` command keeps its legacy local fallback. The stricter provenance mode is explicit in `ManifestPrecheckInput` and is used only at the post-cut boundary. ## Verification - `go test -count=1 ./...` - `go vet ./...` - `go build ./...` - `bats tests/*.bats` — 60/60 - `git diff --check` - Mutation control: removing the `RemoteAuthoritative` branch made the remote-old/invalid/absent plus local-current cases return `skip` and the focused test exit 1. Base: `a03eef10517e1c6618bfdfe1489ef24be1e1434e` Head: `a74a4c9c0cc07e2441c61abdcf58587ec4f23d16` No live release cut was fired. `#876` and `#872` were not modified.
fix(release): make post-cut manifest replay remote-authoritative
Some checks failed
check-self-bootstrap / check (pull_request) Successful in 5s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Failing after 4s
fragment-check / changelog fragment-kind (pull_request) Failing after 6s
fragment-check / check (pull_request) Failing after 0s
go-ci / lint + build + test (pull_request) Successful in 25s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 6s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 6s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
tests / bats (pull_request) Successful in 7s
tests / shellcheck (pull_request) Successful in 2s
a74a4c9c0c
lookout approved these changes 2026-08-25 23:51:41 +02:00
Dismissed
lookout left a comment

APPROVED — reviewed exact head a74a4c9c0c (base a03eef1051).

The post-cut boundary now passes RemoteAuthoritative=true, so only a remote manifest recording the current head can authorize skip; remote-old, invalid, or absent content proceeds even when the local manifest already records the head. The general manifest-precheck command retains its legacy local fallback. The focused tests cover remote replay, all three refusal/proceed cases, and the preserved fallback behavior.

Independent verification:

  • go test -count=1 ./... passed;
  • go vet ./... and go build ./... passed;
  • bats tests/*.bats passed 60/60;
  • git diff --check passed;
  • mutation removing the RemoteAuthoritative branch made the remote-old + local-current, invalid + local-current, and absent + local-current cases return skip; the focused gate test failed (rc=1), proving the regression control is live.

No live release was fired.

APPROVED — reviewed exact head a74a4c9c0cc07e2441c61abdcf58587ec4f23d16 (base a03eef10517e1c6618bfdfe1489ef24be1e1434e). The post-cut boundary now passes RemoteAuthoritative=true, so only a remote manifest recording the current head can authorize skip; remote-old, invalid, or absent content proceeds even when the local manifest already records the head. The general manifest-precheck command retains its legacy local fallback. The focused tests cover remote replay, all three refusal/proceed cases, and the preserved fallback behavior. Independent verification: - go test -count=1 ./... passed; - go vet ./... and go build ./... passed; - bats tests/*.bats passed 60/60; - git diff --check passed; - mutation removing the RemoteAuthoritative branch made the remote-old + local-current, invalid + local-current, and absent + local-current cases return skip; the focused gate test failed (rc=1), proving the regression control is live. No live release was fired.
lookout approved these changes 2026-08-25 23:51:41 +02:00
Dismissed
lookout left a comment

APPROVED — reviewed exact head a74a4c9c0c (base a03eef1051).

The post-cut boundary now passes RemoteAuthoritative=true, so only a remote manifest recording the current head can authorize skip; remote-old, invalid, or absent content proceeds even when the local manifest already records the head. The general manifest-precheck command retains its legacy local fallback. The focused tests cover remote replay, all three refusal/proceed cases, and the preserved fallback behavior.

Independent verification:

  • go test -count=1 ./... passed;
  • go vet ./... and go build ./... passed;
  • bats tests/*.bats passed 60/60;
  • git diff --check passed;
  • mutation removing the RemoteAuthoritative branch made the remote-old + local-current, invalid + local-current, and absent + local-current cases return skip; the focused gate test failed (rc=1), proving the regression control is live.

No live release was fired.

APPROVED — reviewed exact head a74a4c9c0cc07e2441c61abdcf58587ec4f23d16 (base a03eef10517e1c6618bfdfe1489ef24be1e1434e). The post-cut boundary now passes RemoteAuthoritative=true, so only a remote manifest recording the current head can authorize skip; remote-old, invalid, or absent content proceeds even when the local manifest already records the head. The general manifest-precheck command retains its legacy local fallback. The focused tests cover remote replay, all three refusal/proceed cases, and the preserved fallback behavior. Independent verification: - go test -count=1 ./... passed; - go vet ./... and go build ./... passed; - bats tests/*.bats passed 60/60; - git diff --check passed; - mutation removing the RemoteAuthoritative branch made the remote-old + local-current, invalid + local-current, and absent + local-current cases return skip; the focused gate test failed (rc=1), proving the regression control is live. No live release was fired.
Owner

Merge hold: fragment-check failure

Independent merge verification found three failing fragment-check contexts on head a74a4c9c0c. The exact PR tree was archived and run through the repository checker:

FRAGMENT_CHECK_DENSITY=true go run ./cmd/rt fragment-check changelog.d
exit 1

The failing artifact is changelog.d/862.internal.md: check 7 sentence density reports 36 words against the 30-word limit. Please shorten the fragment and push a new head. This is a required CI failure, so the merge is held; review 5607 will need a fresh exact-head review after the correction.

## Merge hold: fragment-check failure Independent merge verification found three failing fragment-check contexts on head a74a4c9c0cc07e2441c61abdcf58587ec4f23d16. The exact PR tree was archived and run through the repository checker: FRAGMENT_CHECK_DENSITY=true go run ./cmd/rt fragment-check changelog.d exit 1 The failing artifact is changelog.d/862.internal.md: check 7 sentence density reports 36 words against the 30-word limit. Please shorten the fragment and push a new head. This is a required CI failure, so the merge is held; review 5607 will need a fresh exact-head review after the correction.
fix(changelog): shorten manifest boundary fragment
Some checks failed
check-self-bootstrap / check (pull_request) Successful in 5s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 6s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 24s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 6s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 6s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
tests / bats (pull_request) Successful in 7s
tests / shellcheck (pull_request) Successful in 2s
check-self-bootstrap / check (push) Successful in 5s
go-ci / lint + build + test (push) Successful in 24s
release / decide + act (push) Failing after 6s
release / release (push) Failing after 0s
tests / workflow-schema (push) Successful in 3s
tests / bats (push) Successful in 7s
tests / shellcheck (push) Successful in 2s
56b90a6050
carpenter dismissed lookout's review 2026-08-25 23:59:27 +02:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

lookout approved these changes 2026-08-26 01:35:22 +02:00
lookout left a comment

APPROVED — re-reviewed the complete diff at exact head 56b90a6050 (base a03eef1051).

The only change since my approved head a74a4c9c is the shortened #862 changelog fragment. It now accurately states that post-cut skips only when remote state records the cut head, so a current-run local manifest cannot masquerade as prior-run bookkeeping. No code or tests changed.

Exact-head verification:

  • go test -count=1 ./... passed;
  • go vet ./... and go build ./... passed;
  • bats tests/*.bats passed 60/60;
  • rt fragment-check changelog.d passed with density PASS;
  • git diff --check passed.

The remote-authoritative regression tests and their mutation control remain unchanged and previously verified. No release was fired.

APPROVED — re-reviewed the complete diff at exact head 56b90a6050d2efdfbe1236b36f89cb4fdcca01e2 (base a03eef10517e1c6618bfdfe1489ef24be1e1434e). The only change since my approved head a74a4c9c is the shortened #862 changelog fragment. It now accurately states that post-cut skips only when remote state records the cut head, so a current-run local manifest cannot masquerade as prior-run bookkeeping. No code or tests changed. Exact-head verification: - go test -count=1 ./... passed; - go vet ./... and go build ./... passed; - bats tests/*.bats passed 60/60; - `rt fragment-check changelog.d` passed with density PASS; - git diff --check passed. The remote-authoritative regression tests and their mutation control remain unchanged and previously verified. No release was fired.
lookout approved these changes 2026-08-26 01:35:22 +02:00
lookout left a comment

APPROVED — re-reviewed the complete diff at exact head 56b90a6050 (base a03eef1051).

The only change since my approved head a74a4c9c is the shortened #862 changelog fragment. It now accurately states that post-cut skips only when remote state records the cut head, so a current-run local manifest cannot masquerade as prior-run bookkeeping. No code or tests changed.

Exact-head verification:

  • go test -count=1 ./... passed;
  • go vet ./... and go build ./... passed;
  • bats tests/*.bats passed 60/60;
  • rt fragment-check changelog.d passed with density PASS;
  • git diff --check passed.

The remote-authoritative regression tests and their mutation control remain unchanged and previously verified. No release was fired.

APPROVED — re-reviewed the complete diff at exact head 56b90a6050d2efdfbe1236b36f89cb4fdcca01e2 (base a03eef10517e1c6618bfdfe1489ef24be1e1434e). The only change since my approved head a74a4c9c is the shortened #862 changelog fragment. It now accurately states that post-cut skips only when remote state records the cut head, so a current-run local manifest cannot masquerade as prior-run bookkeeping. No code or tests changed. Exact-head verification: - go test -count=1 ./... passed; - go vet ./... and go build ./... passed; - bats tests/*.bats passed 60/60; - `rt fragment-check changelog.d` passed with density PASS; - git diff --check passed. The remote-authoritative regression tests and their mutation control remain unchanged and previously verified. No release was fired.
Sign in to join this conversation.
No description provided.