rounds: the gate counts every row — no excused fail, a Not counted line, the Desktop pin, the legacy rows on a pre-client/v1 N−1, E2-unjoined #34

Open
caoer115 wants to merge 0 commits from agent/60ae1620-round-gate-waivers into main
Owner

tasks/round-gate-waivers.md (13-16-ucc-rearchitecture, worker 60ae1620). The commit message carries each change with its before/after; the replay receipts are results/round-gate-replays/ in the session. Shares rounds/manifest and score.py with update-door-readers, install-never-half and release-v4: whoever lands second merges main and keeps both; the manifest merges only while no round scope runs on nyc-2. The lane round r260 (--cccd-prev 4660a7c6 = v1.12.150) proves it before the candidate.

tasks/round-gate-waivers.md (13-16-ucc-rearchitecture, worker 60ae1620). The commit message carries each change with its before/after; the replay receipts are results/round-gate-replays/ in the session. Shares rounds/manifest and score.py with update-door-readers, install-never-half and release-v4: whoever lands second merges main and keeps both; the manifest merges only while no round scope runs on nyc-2. The lane round r260 (--cccd-prev 4660a7c6 = v1.12.150) proves it before the candidate.
score.py: a stage-marked or waived row that reads fail blocks whatever excuses it; rows that did not pass and are excused are named on the record's second line `Not counted:` with why (and in § Rows not counted, § Counts), so "every row counted" can only be written when that line reads none. The Desktop fold refuses — and the gate blocks — when the stage's PINS carries no desktop_claude_code or the guest's claude_code differs (build-tarball.sh --desktop-claude-code <ver>). Replayed against r244: pin 2.1.295 → pass; P1-daemon-down planted fail under an uncarried --stage-install → block; exchange/codex planted fail under its waiver → block; Desktop 9.9.999 → block.

manifest: K3-legacy, K3-legacy-upgrade, P1-heal-n1, K3-window-n1 are `stage: --legacy-prev` — carried when the stage's N−1 predates client/v1 (build-tarball.sh writes PINS cccd_prev_legacy from 28c2f4a8's ancestry; run.sh writes the token from it); their scripts gain fail branches: a legacy seat admitted and never served, a control that shows no defect on a legacy pair. exchange codex|kimi|grok and K3-pi-kind cite tasks/native-seat-rows.md — the step that drives each native seat on the VM (keys on record for kimi and grok, pi runs on the image's nodejs 22; codex is a login ZT provides). New row E2-unjoined (steps.d/48-unjoined.sh): an unseeded stock seat births INTENT then a card before its join; pass when the 025 refusal names the join, fail until daemon-v155 ships that text; the recovery is recorded on the row.

Tightenings, before → after: acts.sh — stock-seat-face's worktree path is the daemon's `entered <path>` alone (was: the first path of any answer, so a refusal naming the repo passed); 70-p1.sh — a lockout on any face call is the P1 and scores fail (was: off-script or n unless on the put); 66-stock-e2e.sh — the receipt lines are written by the harness (was: interpolated into the test user's shell, backticks ran); 55-nested.sh — the continue child resumes the parent's own session by id and NESTED-continue needs the daemon's nested-launch refusal naming the parent (was: --continue took any seat's newest conversation, the refusal asserted only when logged); 65-stock-acts.sh — the prompt names the acts, not the commands, and stock-seat-acts needs the Skill call that loaded /ccc-work (was: the commands handed over, no skill check).
Before: names_join matched *join* over the whole refusal, and the session
slug (<round>-unjoined) and card (round-unjoined.md) both carry "unjoined",
so door 025's old refusal — which echoes the card's path — scored pass with
no join teaching at all. After: "unjoined" is removed before the match, so
only the refusal's own words can name the join (old text: no; the 025 join
teaching from PR #33: yes). The comments name PR #33's rule as the text the
row asserts, merged from main.
Before: the unquoted PINS heredoc ran `stage: --legacy-prev` as a command
substitution (r260 build.log line 173: "stage:: command not found") and the
comment in PINS lost the marker. After: plain quotes; the heredoc expands
nothing in that line.
r260 (stage tb260: N 585c915d, N−1 v1.12.150 4660a7c6, cccd_prev_legacy=1)
blocked on four rows; none is a product failure:

- NESTED-continue | claude-patched. Before: pass required a "nested launch"
  line naming the parent, the stock parent's branch alone. A patched parent's
  connection holds the session, and the daemon answers the child's register
  with "register claude-stock for <s8>: the session is held by <conn>
  (claude-patched); nothing recorded" (r260 zitao2 daemon.log:355; the
  parent's own launch hook reads "seat pid <p> is held by", never this).
  After: either line, read off a register line for the parent's session.
- stock-seat-spawn. Before (this PR): step 3 named the act only, and the
  prompt bars every file but the skill, so floor 3's spawn line in
  accelerator.md was out of reach; r260's MiniMax seat guessed `cccd
  session spawn --window` and stopped. After: step 3 names `ccc-agent
  spawn` with no --launcher — the fallback the row asserts; list, send and
  killme stay acts, with the Skill call required.
- P1-restart-window-n1. Before: missed whenever no stock register was logged.
  v1.12.150 has no stock register path (no `register %s for` in its source,
  none in r260's log), so on a pre-client/v1 N−1 the window never opens.
  After: there (LEGACY_PREV=1) the row goes to R's write after the restart
  and /clear — no seat file at any sample, the put admitted — the branch the
  pass text already carried.
- K3-window-n1 leaves the manifest. It plants only on an N−1 that answers the
  hook held_by (client contract K3, 5f57c3f5) and lacks #788's routing
  (dad512a0); both shipped in v1.12.152, so no release pair has it:
  v1.12.150/.151 answer no held_by and record no frames (no socketrecord.go;
  r260: held_by=none prompt=none associate=none), and v1.12.152 onward carry
  #788. K3-window on N keeps the window.

Also the PINS heredoc comment and the --legacy-prev comments name the three
rows that plant.
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/60ae1620-round-gate-waivers:agent/60ae1620-round-gate-waivers
git switch agent/60ae1620-round-gate-waivers

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/60ae1620-round-gate-waivers
git switch agent/60ae1620-round-gate-waivers
git rebase main
git switch main
git merge --ff-only agent/60ae1620-round-gate-waivers
git switch agent/60ae1620-round-gate-waivers
git rebase main
git switch main
git merge --no-ff agent/60ae1620-round-gate-waivers
git switch main
git merge --squash agent/60ae1620-round-gate-waivers
git switch main
git merge --ff-only agent/60ae1620-round-gate-waivers
git switch main
git merge agent/60ae1620-round-gate-waivers
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!34
No description provided.