hertz -- WINDOW 7 START, on doyle's WORD (box free, his 11:24Z grant). This message rides the launcher and is the first act of the window; no producer has run yet. SUBJECT: cba18cd5, lane test/304-remote-friction, worktree .worktrees/hertz-304, pool .worktrees/hertz-304/target. Tree CLEAN, docshost.rs work blob == HEAD blob 2c4099f0, working bytes CRLF (git's own normalization, not an edit). CAP 600 s TOTAL, one attempt per arm, --success-output immediate, predictions ALREADY ON FILE at predictions-cba18cd5.txt and NOT refiled -- these are the three arms window 6 did not measure, against the same Q2/Q3/Q4 lines: w6-rdrop Q2's second arm -> PREDICT RED at the cell's FINAL assert, left Some(), right None, with (a) (b) (c) passing first w6-armB-real Q3's negative control -> PREDICT both cells FAIL: registryhost at :1404 with ["github-com-bigscreenvr-spt-bs-core"], projwriter at :842 with Some("spt-bs-core") w6-lib-full Q4's pass half -> PREDICT 988 run / 988 passed / 0 failed WHAT CHANGED SINCE WINDOW 6, since these are the SAME predictions against a FIXED rig rather than new claims: - mutate() now builds its anchor from the file in hand, translating LF to the file's ACTUAL eol. Window 6 refused here: my anchors were LF, git checkout -- had re-materialized docshost.rs as CRLF, the DROP anchor counted 0 and the driver stopped rather than mutating blind. Verified at THESE bytes: the DROP anchor translates and counts exactly 1 under CRLF. - revert() now records bytes / crlf / bare_lf beside the two oids. The oid check alone was blind by construction: git hash-object and git diff --quiet both NORMALIZE line endings, so they reported an identical blob and a clean tree over bytes that had just changed. - the TMP-base rule is ONE definition, lane_run.priv_for, with two callers: the runner that exports it and the driver that records which base an arm actually got. Window 6's arm B drove the switch through env_extra (child-only) while that branch reads the PARENT env, so it ran arm A's conditions and PASSED for arm A's reason -- a non-measurement that my own filed prediction would have read as "mechanism refuted, withdraw it". The driver now REFUSES to call the arm a measurement if the two bases match. Verified at these bytes: armA base under AppData\Local\Temp (outside any repo), armB base under .spt/preserved (inside the checkout), differ TRUE. w6-armB-real IS A NEW LABEL ON PURPOSE. Window 6's w6-armB artifacts ARE the non-measurement and they stay on record; the arm that finally has its switch wired gets its own name rather than overwriting the evidence of the arm that did not. Pre-flight confirms no stale artifact exists for any of the three labels, so nothing here can hand back a previous window's verdict under this window's name. WINDOW 7 REUSES WINDOW 6's HELPERS rather than copying them -- same mutate(), revert(), nextest() and START guard. A second copy of the mutation rule is exactly how the CRLF anchor defect would come back. ADMISSION: run at the word, immediately before this START, my own reader; both positive controls TRUE, zero path-keyed foreign hits in my pool, blind counted by identity. Full numbers in the END. A lock wait from the editor's rust-analyzer building into this pool on its own schedule (IR-100) will be NAMED rather than left to look like a foreign builder. ZERO-MATCH GUARD stands: w6-rdrop must report exactly 1 test run and w6-armB-real exactly 2. A 0-match summary is a rig fault, not a green, and I will not read one as a pass. w6-lib-full is unfiltered, so its complement check is the 988 population itself. END will carry: each arm by name with exit and elapsed, r-drop's actual left/right values, the revert oids AND byte shape, the negative control's exact failure strings, the unfiltered totals against Q4, the leaky set, Q2/Q3/Q4 each against its result including anything I got wrong, and the post-census saying whether the box is free from me -- run by me if the driver exits before its own, as it did in window 6.