Commit babf501
committed
[arc A] smoke findings: mis-scoped GT assert + a log line I dropped
Two things the 4-peer smoke caught that the build could not.
1. HotPathGuard ERROR: "g_rows (roster_ledger::Reset) accessed OFF the game
thread". Reset is called from event_feed::OnSessionStart, which runs on the
BRINGUP thread at harness/session_runtime.cpp:386 -- before g_session.Start()
at :430 spawns the net thread and before the pump can tick a running session.
So the ACCESS is safe by construction (no concurrent reader; Start()'s thread
creation is the happens-before edge) and the ASSERT was mis-scoped. Reset is
now the one accessor deliberately without it, with the contract written down.
Also recorded there: Reset notifies subscribers per slot, but every outgoing
row is empty at bringup and every subscriber early-returns on an unoccupied
outgoing row -- so no subscriber body, none of which is bringup-thread-safe,
actually runs. That invariant is load-bearing and now says so.
2. The client-side "installed cross-peer identity" log line vanished when I
rewrote the handler, taking mp.py's xpeer_identity counter with it (the smoke
reported []). That is lost observability, not a stale matcher, so the line is
restored -- gated on the ACTUAL mirror install rather than on every pulse
re-assert, or a per-second repeat would make it useless as a signal.
mp.py's two matchers repointed at the renamed lines (held-WIP, not committed).
RE-SMOKE ON THE FIXED BYTES -- 4 peers, PASS:
host accepted [1,2,3], relayed roster 3x, epoch latched [1,2,3]
CLIENT1 slot=1 sees [0,2,3], xpeer=[2,3]; CLIENT2 slot=2 sees [0,1,3],
xpeer=[1,3]; CLIENT3 slot=3 sees [0,1,2], xpeer=[1,2]
ledger: slot 0 -> #1 (host role constant), slots 1..3 -> #2,#3,#4 (monotonic,
host never draws #1)
0 HotPathGuard violations, 0 puppet spawn failures, 0 malformed drops,
0 stale-gen drops, no roster/ledger WARN or ERROR
IDEMPOTENCY PROVEN: exactly 4 ledger transitions and exactly 2 identity
installs per client across the whole run, while the repair pulse re-asserted
every 1-5 s throughout -- the receiver treats rows as STATE, not events.
Still NOT hands-on, and the replacement/successor drills still owed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 13470f1 commit babf501
2 files changed
Lines changed: 24 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
132 | | - | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
133 | 142 | | |
134 | 143 | | |
135 | 144 | | |
136 | 145 | | |
137 | 146 | | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
138 | 154 | | |
139 | 155 | | |
140 | 156 | | |
| |||
Lines changed: 7 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
296 | 296 | | |
297 | 297 | | |
298 | 298 | | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
299 | 306 | | |
300 | 307 | | |
301 | 308 | | |
| |||
0 commit comments