UPDATE.md § sessions root: the adoption loop waits a busy write.lock out and never leaves a half-armed root (r242 → r243) #31

Open
caoer115 wants to merge 0 commits from agent/237686e8-r243-adopt-wait into main
Owner

Branch agent/237686e8-r243-adopt-wait off M5 d014ceea, one commit 789e829, one file: UPDATE.md § sessions root — the owner's adoption block and the sentence after it. Nothing else in the block changes; § sessions root is lock-unpinned and UPDATE.md is not a tooling file.

Why. r242 (GATE: block, results/rounds/r242.md): the owner's step runs right after the reinstall, inside the first seconds of the daemon it just started; the engine takes .meridian/write.lock LOCK_NB while it primes, and mrd arm refuses busy with "transient; retry" and no wait (meridian-rs crates/mrd/src/arm_cmd.rs open_session). Three arms in a row were refused (027 re-arm, 028, 030 first arm); the root was left with 027 drifted and 030 unarmed, mrd rules rc 1, every gated birth refused armed_drift. r240's same step had one refusal (010, already armed) and landed by timing. Advisor ruling: decisions/r234-install-update-ruling.md § r242, option (c).

What the block does now (the advisor's condition 1): a busy-refused mrd arm is re-run every 0.5 s for up to 10 s and the wait is printed (adopt: <id> waited out a busy .meridian/write.lock: N refusal(s), 0.5 s each); a refusal that persists stops the loop at that door, names it and says to re-run the block — re-running is idempotent (an armed door reads unchanged). The root is never left half-armed silently. round-host.sh's awk still extracts the block whole (14 lines), bash -n clean.

Proof (condition 2) on the kept r242 VM ucc-round-r242-1958 as zitao2 — results/rounds/r242/diag/adopt-wait-proof/proof-run-1.txt (the block as run: adopt-step-fixed.sh, the driver: proof-adopt-wait.sh beside it):

  • P1, the failed root as r242 left it (027 armed=block(drifted), 030 armed=-): the block re-arms 027 at 501078c5b6d04f9e, arms 030, waits out one busy refusal on 035 (1 refusal(s), 0.5 s each), adopt-rc=0, mrd rules rc 0 (11 rows, no red), a record born after it through the face as zitao2 carries actor: 1039402f / principal: zitao2 / grade: asserted (triple 3/3).
  • P2.1–P2.3, the failed root restored from its snapshot, install.sh --floor 4 --from <the v3 stage> as the harness runs it (the daemon restarts: pids 17922, 20952, 24001), the block at once: 027 re-armed, 030 armed, adopt-rc=0, mrd-rules-rc=0, triple 3/3 each time.

Next (condition 3): merge → M6; release-candidate → M6 on the leader's go; Desktop r243 then VM r243 --public --public-branch release-candidate, every stage, zero waivers. Both r242 VMs destroyed and the r242 scope ended after this proof.

Branch `agent/237686e8-r243-adopt-wait` off M5 `d014ceea`, one commit `789e829`, one file: `UPDATE.md` § sessions root — the owner's adoption block and the sentence after it. Nothing else in the block changes; § sessions root is lock-unpinned and `UPDATE.md` is not a tooling file. **Why.** r242 (`GATE: block`, `results/rounds/r242.md`): the owner's step runs right after the reinstall, inside the first seconds of the daemon it just started; the engine takes `.meridian/write.lock` LOCK_NB while it primes, and `mrd arm` refuses busy with "transient; retry" and no wait (meridian-rs `crates/mrd/src/arm_cmd.rs` `open_session`). Three arms in a row were refused (027 re-arm, 028, 030 first arm); the root was left with 027 drifted and 030 unarmed, `mrd rules` rc 1, every gated birth refused `armed_drift`. r240's same step had one refusal (010, already armed) and landed by timing. Advisor ruling: `decisions/r234-install-update-ruling.md` § r242, option (c). **What the block does now** (the advisor's condition 1): a busy-refused `mrd arm` is re-run every 0.5 s for up to 10 s and the wait is printed (`adopt: <id> waited out a busy .meridian/write.lock: N refusal(s), 0.5 s each`); a refusal that persists stops the loop at that door, names it and says to re-run the block — re-running is idempotent (an armed door reads `unchanged`). The root is never left half-armed silently. `round-host.sh`'s awk still extracts the block whole (14 lines), `bash -n` clean. **Proof** (condition 2) on the kept r242 VM `ucc-round-r242-1958` as zitao2 — `results/rounds/r242/diag/adopt-wait-proof/proof-run-1.txt` (the block as run: `adopt-step-fixed.sh`, the driver: `proof-adopt-wait.sh` beside it): - P1, the failed root as r242 left it (027 `armed=block(drifted)`, 030 `armed=-`): the block re-arms 027 at `501078c5b6d04f9e`, arms 030, waits out one busy refusal on 035 (`1 refusal(s), 0.5 s each`), `adopt-rc=0`, `mrd rules` rc 0 (11 rows, no red), a record born after it through the face as zitao2 carries `actor: 1039402f / principal: zitao2 / grade: asserted` (triple 3/3). - P2.1–P2.3, the failed root restored from its snapshot, `install.sh --floor 4 --from <the v3 stage>` as the harness runs it (the daemon restarts: pids 17922, 20952, 24001), the block at once: 027 re-armed, 030 armed, `adopt-rc=0`, `mrd-rules-rc=0`, triple 3/3 each time. **Next** (condition 3): merge → M6; `release-candidate` → M6 on the leader's go; Desktop r243 then VM r243 `--public --public-branch release-candidate`, every stage, zero waivers. Both r242 VMs destroyed and the r242 scope ended after this proof.
The owner's step runs right after the reinstall, inside the first seconds of
the daemon it just started; the engine takes .meridian/write.lock LOCK_NB
while it primes, and `mrd arm` refuses busy with "transient; retry" and no
wait (meridian-rs crates/mrd/src/arm_cmd.rs open_session). On round r242
three arms in a row were refused (027 re-arm, 028, 030 first arm) and the
root was left with 027 drifted and 030 unarmed, mrd rules rc 1, every gated
birth refused armed_drift; on r240 one arm (already armed) was refused and
the step landed by timing.

The loop now re-runs a busy-refused arm every 0.5 s for up to 10 s and says
so; a refusal that persists stops the loop at that door, names it and says to
re-run the block (idempotent: an armed door reads unchanged) — the root is
never left half-armed silently. The prose after the block says the same.
Nothing else in the block changes; § sessions root is lock-unpinned and
UPDATE.md is not a tooling file.

Proven on the kept r242 VM as zitao2 (13-16-ucc-rearchitecture
results/rounds/r242/diag/adopt-wait-proof/proof-run-1.txt): on the failed
root the block re-arms 027 and arms 030, mrd rules rc 0, a birth after it
carries actor/principal/grade (one busy refusal on 035 waited out); three
times restore-the-failed-root -> reinstall (daemon restart) -> the block at
once: rc 0, triple 3/3 each.

Advisor ruling: decisions/r234-install-update-ruling.md § r242, option (c).
Round record: results/rounds/r242.md.
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/237686e8-r243-adopt-wait:agent/237686e8-r243-adopt-wait
git switch agent/237686e8-r243-adopt-wait

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/237686e8-r243-adopt-wait
git switch agent/237686e8-r243-adopt-wait
git rebase main
git switch main
git merge --ff-only agent/237686e8-r243-adopt-wait
git switch agent/237686e8-r243-adopt-wait
git rebase main
git switch main
git merge --no-ff agent/237686e8-r243-adopt-wait
git switch main
git merge --squash agent/237686e8-r243-adopt-wait
git switch main
git merge --ff-only agent/237686e8-r243-adopt-wait
git switch main
git merge agent/237686e8-r243-adopt-wait
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!31
No description provided.