Phase D.5 smoke — Go backend in place of the Python spike listener¶
Status: verified — completed 2026-04-19
First real-CDS smoke test of the Go backend
(cmd/iosmux-backend/, commit 114548a). Cross-compiled
for havoc's darwin/amd64, deployed, and run in place of the
Python iter-4 listener. Byte-exact match against
iter-04/results/session-01-send.bin
(14,313 B, cmp clean). Same 9 server frames, same quiescent
state. CDS-side reorder of one SETTINGS-ACK is a legal
run-to-run variation, not a backend change. Full writeup:
findings.md.
Phase D.5 closes. Phase D.6 (per-service handlers) is the next implementation pass.
What D.5 proved¶
The 400-line Python spike listener that drove iter-1 through
iter-4 can now be replaced by the ~300 LOC Go dispatcher in
internal/backend/dispatcher.go with zero observable change to
CDS's behaviour. The replacement is:
- Byte-exact on the server→client direction (14,313 B cmp-clean)
- Behaviourally equivalent on the client←server side (same frame set, CDS reaches the same quiescent state)
Files¶
findings.md— full writeup: byte-level comparison table, client-side reorder analysis, implications for D.6/D.7.smoke-01.log— backend stdout from run 1 (no pcap).smoke-02.log— backend stdout from run 2 (with pcap). Identical to smoke-01.log.iosmux-d5-smoke.pcap— 18 KB loopback capture from run 2. Scanned for UDID/serial patterns, zero matches, kept as-is.
Why this directory is named "iter-05-go-backend"¶
For continuity with the iter-NN series in the parent directory. Each iter-NN tracked one empirical step in the Q3 research arc (iter-1 through iter-4 under Python replay). This "iter-05" is the first step beyond pure replay: same wire behaviour, different implementation language. The naming signals "same research cadence, still empirical, but we've crossed into Phase D implementation territory".
Next step¶
devicectl pair (or Xcode Pair button) on havoc should drive
CDS past handshake into an actual service request. Whatever CDS
asks for next is D.6's first dispatch target.