--stay leaves the loader's final prompt in the USB pipeline; a fresh invocation on a board that resets when its port opens then flushes too early, trusts the stale prompt, and spends the new activation window on a 2-second identity read against a device that never heard its knock — collecting the application's banner as an unknown signature. Three host-side moves, no device bytes: the line is drained until quiet (bounded, 250 ms) before the port's first knock — once per port, since a mid-session re-knock faces no foreign bytes and its own window is already burning; the identity read_exact drops 2.0 to 0.5 s, dozens of times the worst real answer, so any false prompt match leaves room for the retry that already works; and the tool version drifts to 8. The StaleDTRPort fixture models the whole moment — stale prompt in transit, reset holding the device off the line, a finite window, the banner — red against the old tool in exactly the field shape (unknown signature from banner bytes), green now; LoaderPort answers its prompt to the knock rather than to a read count, which the drain exposed as a call-order coupling. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
75 KiB
75 KiB