{"created_at":"2026-09-16T02:02:37Z","id":5690901925,"title":"**Prerequisite found 2026-09-16 02:00Z (doyle, from hertz W1c):** ENLYZEAM runs spt **0.69.0**; the `SPT_RC_HITCH_DIAG=1 spt node status --json` gauges (net_canary_age_ms, active_dial_tasks, sampled_at_ms, query_elapsed_ms) ship only from **0.70.0**. hertz's authorized read-only ssh baseline (01:56:38Z, explicit resident home, exit 0) returned ordinary status with all four gauges absent = UNSUPPORTED, not healthy. Receipt: spt-core `.spt/preserved/307/hertz-w1bc/enlyzeam-readonly-baseline.json`. The field reading this Request needs therefore requires `spt update` to 0.70.0 on enlyzeam (and gravity-nvidia-temp) first; operator asked via lia. On an isolated hfenduleam 0.70.0 home the steady-state hitch did not reproduce so far; a `node refresh` there froze PTY ACK/progress with canary fresh and dials 0, which is the #49/#267 class, being pursued under those Requests, not this one."}
{"created_at":"2026-09-16T02:29:18Z","id":5691117842,"title":"**Prerequisite cleared 2026-09-16 02:29Z:** ENLYZEAM is on spt 0.70.0 end to end — doyle staged the signed set from hfenduleam and applied (02:19Z, coordinator 0.70.0, broker layer still 0.69.0 answering `unknown command kind net-reactor-diag`), then the operator bounced the daemon manually (new pid 48932, broker image 0.70.0). First probe after the bounce: `net_canary_age_ms=187`, `active_dial_tasks=0`, `sampled_at_ms=1789525701006`, `query_elapsed_ms=0`, no probe_error. Field readings now possible: ball-b asked for the PTY-correlated healthy/hitch/after triple; hertz asked for a 3-minute 1 Hz passive canary/dials series over ssh (read-only). gravity-nvidia-temp (the other box named here) is still at its previous version."}
{"created_at":"2026-09-16T02:49:36Z","id":5691303196,"title":"**First field reading at 0.70.0 (hertz, ENLYZEAM, read-only ssh, 02:44:36-02:47:35Z, broker pid 48932):** 180 samples at ~1 Hz of `SPT_RC_HITCH_DIAG=1 spt node status --json`. net_canary_age_ms: min 0, p50 18, p95 1872, p99 3991, max 4912; 17 samples \u003e= 1 s, 7 \u003e= 2 s; peaks at 1789526677738 (4912), 1789526706724 (2346), 1789526736735 (2329). active_dial_tasks = 0 in ALL 180. No rc session running; box idle. Files: spt-core `.spt/preserved/307/hertz-w2-regression/enlyzeam-samples.jsonl` + `enlyzeam-distribution.json`. Reading (doyle): periodic multi-second canary staleness on an idle box = candidate #1 (net-runtime progress starvation) signature, BUT the starving work is not in the counted dial population (dials 0 throughout). Same box reports peer reachability DEGRADED, 4/7 peers unreachable at quic-connect for ~4.9 days, and its log holds 89 PUMP_PEER_FAIL entries incl. `stage=seed-proof-recv: submit-dial exceeded the 10s bound`. Working hypothesis: pump-round `submit_dial` attempts to dead peers (10 s bound) stall the runtime and are not counted by `active_dial_tasks`; peak spacing (~30 s) to be correlated with the pump period and with PUMP_PEER_FAIL timestamps. If it holds, the remedy is seam B covering BOTH `dial` and `submit_dial` (as REMEDY-DESIGN already requires) plus fixing the gauge population. PTY-correlated samples from ball-b still wanted for the causality half; the ~30 s peak cadence vs the reported 10-20 s hitch cadence is an open discrepancy."}
{"created_at":"2026-09-16T02:51:57Z","id":5691323505,"title":"**Correlation result (ball-b, ENLYZEAM log grep, 02:50Z) — NEGATIVE for the dead-peer-dial sub-hypothesis:** PUMP_PEER_FAIL lines in 02:44:30-02:47:40Z = ZERO (nearest: 02:44:00Z x1 before, 02:47:54Z x4 after). All three stale-canary peaks (02:44:37Z 4.9 s, 02:45:06Z 2.3 s, 02:45:36Z 2.3 s) sit inside a 3m54s gap with no dial failure and dials counted 0. In-window census: CONN_LIFECYCLE ~100 lines continuous (bursty: 12/s at 02:45:51Z, 5/s at 02:45:09Z/02:46:37Z/02:47:12Z), CONN_LIFECYCLE_SUMMARY on a clean 60 s cadence (02:45:12/02:46:13/02:47:13Z), nothing else; no PUMP_DIAL_SUBMIT. The ~29-30 s cadence is real in the log elsewhere (PUMP_PEER_FAIL pairs 29 s apart at 02:41:09/02:41:38Z and 02:47:54/02:48:23Z) and matches the peak spacing, so a ~30 s round exists that produces staleness in some rounds and logged dial failures in others — the round, not its failing dial, is the suspect, and the stall is decoupled from the logged failure. Next reads asked of ball-b: round/tick markers in the window; CONN_LIFECYCLE transition shape at the three peak seconds vs the 02:45:51Z burst. hertz reading the pump period and whether active_dial_tasks counts in-round quic-connect work at all."}
{"created_at":"2026-09-16T02:52:51Z","id":5691330935,"title":"**Cadence + gauge population (hertz, 02:52Z):** ENLYZEAM has no explicit daemon.json (read 02:51:37Z), so the pump runs defaults: registry 30 s / notif 15 s / sync 60 s. The 29-30 s stale-canary spacing is cadence-compatible with the REGISTRY round; the 60 s CONN_LIFECYCLE_SUMMARY cadence matches SYNC. Phase alignment not yet shown. Gauge correction from source: `active_dial_tasks` wraps `NetHost::submit_dial` (nethost.rs ~1607-1653, DialPlan ~975-1003) INCLUDING the semaphore wait after first poll, but EXCLUDES synchronous `dial()`, inbound accept/proof, and submitted tasks not yet polled. Therefore dials=0 during a stale peak does NOT place the starving work outside pump submits; queued-but-starved tasks are invisible to it. Standing candidate #1: the registry round starves the net runtime (synchronous dial() or unpolled submits), logged PUMP_PEER_FAIL being only the rounds that also hit the 10 s bound. W2c design consequence: seam B must cover BOTH dial() and submit_dial and the gauge must count queued tasks; ball-b round-marker/lifecycle-shape reads pending for phase alignment."}
{"created_at":"2026-09-16T02:54:08Z","id":5691342938,"title":"**Phase alignment (ball-b, ENLYZEAM log by line bracket, 02:53Z) — candidate #1 HOLDS, blocker narrowed:** method correction first: untimestamped kinds were missed by the earlier wall_ms filter; true in-window census = CONN_LIFECYCLE 102, PAIR_MEET_UP 18, NET_FAMILY_GATE 18, CONN_LIFECYCLE_SUMMARY 3, EPOCH_FAST_FORWARD 2, HELPER_SERVE_FOR 1, ENDPOINT_INJECT 1. Round marker = PAIR_MEET_UP (monotonic step, one per subnet per round, 3 per round on this 3-subnet node), each round preceded by 3x NET_FAMILY_GATE \"binding IPv4-only (IPv6 unreachable or disabled)\". Round starts ~02:44:01/02:44:27/02:45:01/02:45:27/02:45:57/02:46:27/02:46:54/02:47:28Z (spacing 26-34 s, mean ~30 s = registry period). Every stale-canary peak trails a round start by 5-10 s: 02:44:37 (4.9 s) \u003c- 02:44:27; 02:45:06 (2.3 s) \u003c- 02:45:01; 02:45:36 (2.3 s) \u003c- 02:45:27. At the three peak seconds the log holds ZERO lines (stall during silence); the 12-line CONN_LIFECYCLE burst at 02:45:51Z (brain-side stream-subscriber attach storm, conns 1365-1386) is 15 s off-peak with no staleness =\u003e connection churn on the serving runtime is OUT. Leading pointer (ball-b, not asserted): per-round per-subnet synchronous socket rebinding with an IPv6 probe that blocks before failing over to IPv4 (NET_FAMILY_GATE), no dial and no log line during the stall — matches peak shape; severity would scale with subnet count (3 here). Kin: the known broken-IPv6-poisons-iroh-discovery mechanism. Source read dispatched to hertz."}
{"created_at":"2026-09-16T02:57:16Z","id":5691366552,"title":"**Source correction (hertz, 02:56Z):** the ~30 s cadence is TOTP PERIOD_SECS — the pair-meet rotation (pairhost.rs ~188/242-244; totp.rs ~38) — independent of the registry pump period. Every attached subnet spawns its own bind on the SHARED 2-worker net runtime each rotation. The family TCP probes are ALREADY spawn_blocking, concurrent v4/v6, 1500 ms per connect (endpoint.rs ~183/245-253/272), and NET_FAMILY_GATE prints AFTER they finish — so \"cache/offload the family probe\" is NOT supported as the remedy. What runs after that line: iroh builder/discovery bind, then PAIR_MEET_UP; hertz is now reading the spawned endpoint actors/retirement on that path. Consequence: seam B limited to outbound dials would leave meet rotation on the serving runtime; the W2c remedy shape must cover (or move) the per-subnet per-rotation bind/discovery work — final mechanism + falsifier pending from hertz."}
{"created_at":"2026-09-16T03:04:07Z","id":5691417538,"title":"**W2c ruling (doyle, 03:05Z) on hertz's source RCA (`.spt/preserved/302/hertz-meet-rotation-rca.txt`, LMT7OBIT):**"}
{"created_at":"2026-09-16T03:59:22Z","id":5691820885,"title":"**STEP 1 driver ready (hertz, 03:58Z; doyle recorded):** contract + thresholds in `.spt/preserved/302/STEP1-DRIVER.md` (todlando instruments to it); delivery index `STEP1-DELIVERY.json` (sha256 a81c4d39…). One-command read-only SSH collector, meet/family round alignment, six boundary-pair parsers (interface enumeration, portmapper gateway, CancelMibChangeNotify2, meet bind/retire, NTP refresh) and the both-worker verdict join. Dry run on the legacy 180-row ENLYZEAM series reproduces 17 stale / 7 severe samples across 11 intervals, all correctly INSUFFICIENT without instrumentation; 12 synthetic discriminator + 4 round-uncertainty cases pass; 10 s read-only ENLYZEAM wrapper smoke passes. Canary/gauges untouched, no resident change. Field mechanism stays unmeasured until the instrumented build stages (W2c STEP 1, after W2b + #309)."}
{"created_at":"2026-09-16T04:56:00Z","id":5692252097,"title":"**Re-sequenced (doyle, 04:55Z):** STEP 1 producer dispatched to todlando NOW, in parallel with the #309 rig (hertz), rather than after #309 — todlando was idle and the two lanes touch disjoint code (NetHost stamps vs livehost/broker bring-up). Contract unchanged: STEP1-DRIVER.md, index sha256 a81c4d39. #309 product still follows the rig receipts."}
{"created_at":"2026-09-16T06:06:15Z","id":5692840578,"title":"**STEP 1 design ruling (doyle, 06:06Z):** the six OS boundaries sit inside iroh deps (netdev 0.42, netwatch 0.16); caller-only stamps cannot bracket them. Approved: narrow BEGIN/END hooks via [patch.crates-io] to rev-pinned BigscreenVR forks, runtime-gated by SPT_RC_HITCH_DIAG=1 (unset = one atomic load), stamp bytes per STEP1-DRIVER.md so the analyzer is unchanged. Lane reclassified DIAGNOSTIC: diag/302-net-worker-stamps is staged to ENLYZEAM by branch sha + binary sha256 and NOT merged to main (precedent diag/302-rc-hitch); the durable change is STEP 2. Proofs still required: knob-unset seam suites unchanged, knob-set run parses under step1-analyze.py, one forced-stale paired both-worker stack record."}
{"created_at":"2026-09-16T08:27:28Z","id":5694446838,"title":"STEP 1 handoff RECEIVED + VERIFIED (doyle): diag/302-net-worker-stamps @ 3142753a (pushed), 14 files +2023/-83 vs base, no fmt churn; spt.exe sha256 38cb1220…, fixture ab8acc48…, analyzer 6f36563c (hertz + doyle readbacks agree: 18/18 marked pairs, raw 0-1 ms, processing 89-415 ms, zero errors; FALSIFIED = boundary-outside arm, synthetic only)."}
{"created_at":"2026-09-16T09:27:14Z","id":5695200444,"title":"**NEEDS-OPERATOR — #302 STEP 1 field staging on ENLYZEAM is ready; the binary swap is operator-run.**"}
{"created_at":"2026-09-17T08:45:14Z","id":5711566298,"title":"**STEP 1 field staging on ENLYZEAM: DONE (doyle, 2026-09-17 08:45Z).** Operator stopped the resident daemon and delegated the swap to doyle over ssh."}
{"created_at":"2026-09-17T09:01:13Z","id":5711761491,"title":"Dispatched to `todlando` by doyle: STEP 2 remedy: meet-listener lifecycle off spt-broker-net + rendezvous portmapper off; field CONFIRMED via analyzer v2 (doyle 09:05Z)"}
{"created_at":"2026-09-17T09:01:22Z","id":5711763508,"title":"**STEP 1 field verdict: CONFIRMED (doyle, 2026-09-17 09:05Z). Mechanism located with symbolized stacks.**"}
{"created_at":"2026-09-17T09:08:33Z","id":5711853741,"title":"STEP 2 implementation started (todlando; Doyle dispatch JD62NOBM)."}
{"created_at":"2026-09-17T11:17:16Z","id":5713461826,"title":"STEP 2 implementation and local producer handoff ready; field acceptance remains pending."}
{"created_at":"2026-09-17T23:16:51Z","id":5722486171,"title":"#302 STEP 2 field verdict: FAIL on the broker sync-span gate, PASS on every user-facing metric. STEP 3 ruled."}
