release-check.sh: release moves only with the release that carries a lock-pinned change; install-update re-specified for v4 #35

Open
caoer115 wants to merge 0 commits from agent/ec53733e-release-v4 into main
Owner

Task: 13-16-ucc-rearchitecture tasks/release-v4.md step 1 (delta-review-2 new 2 P1, 23). Harness and SOP text only — install.sh, ucc, skills.md untouched, tooling.sh rc 0; UPDATE.md § release is not lock-pinned.

rounds/lib/release-check.sh — the step before release is pushed (now named in UPDATE.md § release). Refuses a move that changes a section the installed lock pins (UPDATE.md § sop, § tooling, releases/current.md § version, § pins) unless the candidate carries the release: releases/v<N>.md born (released, version v, absent before), § version bumped v → v, § pins the record's, a CHANGELOG § v<N> entry. Also refuses a § tooling that does not hash the candidate's three files, a second ## tooling/## sop heading anywhere (the P0 shadow shape), a non-fast-forward. Replay on a scratch clone (~/.local/share/ucc/work/ec53733e/guard-replay.out on devstation):

  • release at 4801f8f → 5ba1b10b: REFUSED — moved § sop, § tooling; § version v3 at both ends.
  • 4801f8f^ → 4801f8f (the v3 release): ok.
  • 4801f8f → a synthetic v4 commit on M7 (record + bump + entry): ok; the same without the CHANGELOG entry: REFUSED; with a fenced shadow ## tooling: REFUSED.

round-host.sh install-update (finding 23) — re-specified for a previous release whose updater is forward-tolerant (v3 on). The previous host now follows the public branch from its own release commit through a bare mirror whose branch the row moves to the public commit (the lock pins § sop/§ tooling off the followed checkout, so a host at the branch head would never read the move). The repo's answer (release-check.sh --list-moved prev → public) must agree with the host's walk, then: no pinned UPDATE.md section moved → the bare ucc update lands the release in place; § sop/§ tooling moved → the bare update refuses (rc 3, nothing applied, binaries unchanged), CHANGELOG § v<N> names ucc update --trust, and the owner's --trust lands it. Either way: no reinstall, no adoption step, the root's rules unchanged, lock green, core/daemon/cccd/mrd/claude-stock/claude-patched to the record, followed at the public commit, the install from ucc update's own stage. v1/v2 hosts keep the reinstall shape (public_update_reinstall).

Reading for the leader (overturnable in one line): v4 changes install.sh/ucc (update-door-readers, install-never-half), so every v3 host walks red on ucc:UPDATE.md § tooling and the door — by design, § one push — needs the owner's --trust; "nothing by hand" on the card is read as no reinstall, no adoption step, with --trust as the one owner-typed flag the entry names. The row's plain branch applies unchanged if a v4 leaves § sop/§ tooling as v3 pinned them.

Task: 13-16-ucc-rearchitecture `tasks/release-v4.md` step 1 (delta-review-2 new 2 P1, 23). Harness and SOP text only — `install.sh`, `ucc`, `skills.md` untouched, `tooling.sh` rc 0; `UPDATE.md § release` is not lock-pinned. **`rounds/lib/release-check.sh`** — the step before `release` is pushed (now named in `UPDATE.md § release`). Refuses a move that changes a section the installed lock pins (`UPDATE.md § sop`, `§ tooling`, `releases/current.md § version`, `§ pins`) unless the candidate carries the release: `releases/v<N>.md` born (released, version v<N>, absent before), § version bumped v<K> → v<N>, § pins the record's, a `CHANGELOG § v<N>` entry. Also refuses a § tooling that does not hash the candidate's three files, a second `## tooling`/`## sop` heading anywhere (the P0 shadow shape), a non-fast-forward. Replay on a scratch clone (`~/.local/share/ucc/work/ec53733e/guard-replay.out` on devstation): - `release` at `4801f8f` → `5ba1b10b`: **REFUSED** — moved § sop, § tooling; § version v3 at both ends. - `4801f8f^` → `4801f8f` (the v3 release): ok. - `4801f8f` → a synthetic v4 commit on M7 (record + bump + entry): ok; the same without the CHANGELOG entry: REFUSED; with a fenced shadow `## tooling`: REFUSED. **`round-host.sh` `install-update`** (finding 23) — re-specified for a previous release whose updater is forward-tolerant (v3 on). The previous host now follows the public branch *from its own release commit* through a bare mirror whose branch the row moves to the public commit (the lock pins § sop/§ tooling off the followed checkout, so a host at the branch head would never read the move). The repo's answer (`release-check.sh --list-moved prev → public`) must agree with the host's walk, then: no pinned `UPDATE.md` section moved → the bare `ucc update` lands the release in place; § sop/§ tooling moved → the bare update refuses (rc 3, nothing applied, binaries unchanged), `CHANGELOG § v<N>` names `ucc update --trust`, and the owner's `--trust` lands it. Either way: no reinstall, no adoption step, the root's rules unchanged, lock green, core/daemon/cccd/mrd/claude-stock/claude-patched to the record, followed at the public commit, the install from `ucc update`'s own stage. v1/v2 hosts keep the reinstall shape (`public_update_reinstall`). Reading for the leader (overturnable in one line): v4 changes `install.sh`/`ucc` (update-door-readers, install-never-half), so every v3 host walks red on `ucc:UPDATE.md § tooling` and the door — by design, `§ one push` — needs the owner's `--trust`; "nothing by hand" on the card is read as *no reinstall, no adoption step*, with `--trust` as the one owner-typed flag the entry names. The row's plain branch applies unchanged if a v4 leaves § sop/§ tooling as v3 pinned them.
- release-check.sh: before `release` is pushed, refuses a fast-forward that changes UPDATE.md § sop, § tooling, releases/current.md § version or § pins unless the candidate carries the release — releases/v<N>.md born (released, version v<N>), § version bumped and § pins the record's, a CHANGELOG § v<N> entry; also a § tooling that does not hash the candidate's files, a second `## tooling`/`## sop` heading anywhere, a non-fast-forward. --list-moved prints the moved pinned sections for the harness. Replayed: 4801f8f → 5ba1b10b refused (sop, tooling moved, no release); 4801f8f^ → 4801f8f (the v3 release) passes.
- round-host.sh: the previous release's host follows the public branch from its own release commit through a bare mirror (0b, PREVR) whose branch public_update moves to the public commit — the lock pins § sop/§ tooling off the followed checkout, so the host reads the move as a host of that release does. public_update (v3 on): the repo's answer (release-check.sh --list-moved prev → public) must agree with the host's walk; no pinned UPDATE.md section moved → the bare `ucc update` lands the release in place; § sop/§ tooling moved → the bare update refuses (rc 3, nothing applied, binaries unchanged), CHANGELOG § v<N> names `ucc update --trust`, the owner's --trust lands it. Landed state: VERSION.md, lock green, core/daemon/binaries to the record, followed at the public commit, the install from ucc update's stage, the root's rules unchanged. v1/v2 hosts keep the reinstall shape as public_update_reinstall.
- UPDATE.md § release names release-check.sh as the step before the push (§ release is not lock-pinned; § sop and § tooling untouched, tooling.sh rc 0).

Task: 13-16-ucc-rearchitecture tasks/release-v4.md steps 1 (delta-review-2 new 2 P1, 23).
This branch is already included in the target branch. There is nothing to merge.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin agent/ec53733e-release-v4:agent/ec53733e-release-v4
git switch agent/ec53733e-release-v4

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff agent/ec53733e-release-v4
git switch agent/ec53733e-release-v4
git rebase main
git switch main
git merge --ff-only agent/ec53733e-release-v4
git switch agent/ec53733e-release-v4
git rebase main
git switch main
git merge --no-ff agent/ec53733e-release-v4
git switch main
git merge --squash agent/ec53733e-release-v4
git switch main
git merge --ff-only agent/ec53733e-release-v4
git switch main
git merge agent/ec53733e-release-v4
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
caoer115/ucc!35
No description provided.