---
name: counter43-rc-window
description: "counter-43 (v0.23.0) RC-window flip-gate — ran 4 pre-flip ints in an SPT_HOME-isolated 0.23.0 candidate; 3 hard PASS + 1 clean → RC-GREEN, flip fired 2026-07-03"
metadata: 
  node_type: memory
  type: project
  originSessionId: 6381498d-5efd-4af4-835f-b4ef61197264
---

**2026-07-03 (perri): counter-43 / v0.23.0 (@289bdcd, deployah) RC-window verification — 4/4 GREEN, flip fired.** doyle staged the pre-flip candidate binary locally (draft assets need repo auth; shared box), SHA256-verified. I ran 4 ints in an ISOLATED 0.23.0 instance, reported each, doyle cleared deployah to sign+flip.

**ISOLATION RECIPE (doyle diagnostic ruling, test-rig-only — NOT public contract; D-track docs-gap seed):** `SPT_HOME` env var relocates spt-core's home (perch.rs honors it over %LOCALAPPDATA%\spt-core). Set on the candidate daemon AND every client call. Listener names are HOME-TAGGED (`spt-daemon-broker-<tag>.sock`) → the iso daemon coexists with the box's live 0.22.0 with ZERO contact (verified: distinct node key + broker socket). Recipe: fresh dir → `SPT_HOME=<iso> spt43 daemon run` (bg, stderr→file) → `subnet create` needs elevation but LOCAL ints run SUBNET-LESS fine → `adapter add --release` into iso home → all client calls carry SPT_HOME. Rig lives in scratchpad/rc-ints/ (_lib.sh + int1-4 + spt43.exe candidate). Teardown: kill YOUR daemon by pid (never machine-wide); box 0.22.0 stayed intact throughout.

**RESULTS (3 hard gates + 1 non-blocking hunt):**
- **INT-1 env scrub = PASS.** psyche host process env (psutil environ ground truth) has NO OWL_SESSION_ID / NO SPT_AGENT_ID, PATH present. F-028 C2 env_remove verified live on shipped 0.12.1.
- **INT-2 resume UUID = PASS.** Boot provisional = 16-hex; ledger harness id = 36-char UUID; resume resolves {session_id} = the 36-char UUID, != 16-hex provisional. B2 fix confirmed. (Authoritative capture = daemon ENDPOINT_RUN session=; transient claude.exe argv kept trust-dying — daemon record stable every run. Absent-guard negative leg NOT drivable in explicit-resume rig; unit-gated in-tree per doyle, non-blocking.)
- **INT-3 core backstop = PASS.** LIVEHOST_PSYCHE_THRASH stderr (thresholded ">= 10 / 60s") + the psyche_host_error FIELD stamped on the PARENT info.json: `{"reason":"psyche crash-loop: 14 session boundaries in 5s (>= 10 / 60s)","ts":...,"attempts":1}`. C3(b) is the CORE half (my adapter give-up @50af830 rides my next cut). KEY: psyche_host_error is a FILE FIELD not a log line — stderr grep is structurally blind to it (doyle's spec wording misled; corrected).
- **INT-4 boundary-race = CLEAN (non-blocking).** Real /clear boundary rotated (sessions.log grew); is_spt_hosted_no_relay gate stayed healthy (status=online/controllable=True/ready=yes, 0 bad-gate lines) through the window; post-boundary force-native delivered, translate live. No B6 race on 0.23.0. int4 hunts a PRE-EXISTING bug (B6 is in 0.22.0 too), so reproduced/void/clean all NON-BLOCKING; only 0.23.0-made-worse or a new regression blocks. B6 root stays open under its REQ for post-RC fix.

**RIG-DISCIPLINE lessons (I caught my own false results before reporting — never a false red):**
- INT-2 first runs: soft `endpoint stop` left session live → ENDPOINT_ALREADY_LIVE, no real resume; and I mislabeled a forced --resume as the absent-guard. Fixed: hard teardown + assert on the stable daemon session= line.
- INT-4 first run: FALSE "boundary-race candidate" from (a) case bug — checked `status=Online` but field is lowercase `online`, flagged all 52 healthy lines bad; (b) /clear never rotated (no boundary) + force-native UNDELIVERED was "translate not live" not decay. Fixed: baseline-deliver precondition + confirmed-boundary-rotation-or-VOID + case-correct check + translate-liveness.
- INT-3 first run: shallow rate-collapse "PASS" + broken stderr grep for a field that lives in info.json. Fixed with the file-field read.

**counter-43 GO SERVICED → adapter v0.13.0 SHIPPED** (tag v0.13.0, Latest, adapter.spt @1c61ffe): node updated to 0.23.0 (daemon+broker, pid 242420); adapter carries the C3(a) psyche-host thrash guard (@50af830) to the field; **floor 0.20.0→0.23.0** (doyle rec — guarantees the ordering-proved adapter-first/core-backstop pairing; give-up degrades safe on older cores). B2 = NO adapter edit (template unchanged, core-side value fix). Both binaries rebuilt (win+linux zigbuild), dogfood translate-proof OK, gates green, cplugs unchanged (0.1.9, binary-only cut). **doyle GATE = PASS** (verified vs published asset: version 0.13.0, floor 0.23.0, env_remove intact, PSYCHE_HOST_GIVE_UP token in shipped win binary, ordering pinned; field can update).

**B7 CLOSED** (doyle, 2026-07-03): ENLYZEAM operator-bounced + retested → CONTROLLED renders cross-node on two 0.23.0-era brokers, no code bug (version skew confirmed, as diagnosed).

**Standing threads (only these left):** F-027 tasking (doyle designs; sharpened by today's two field obs — fwd-slash shadow trust entries + resolved-spawn account root); changelog-lint gate (USER word, do NOT build unprompted). Related: [[b6-liverepro-hunt]], [[v0220-validation-wave]].
