# Production notes This file summarizes behavior locked in for a **shippable** build. Detailed design history lives in `PLAN.md` / `IMPROVEMENTS.md`. ## Correctness & robustness - **4-way only:** `HANDSHAKE_EAPOL_FRAMES` in `HandshakeCapture.h` — SD write only when count is reached; `stopCapture()` only queues save if threshold met. - **No SD deadlock:** If the card is missing or open/write fails, the pending buffer is **dropped** and the slot cleared so the state machine and UI keep progressing. - **FAT filenames:** Non-portable characters in paths are replaced before `SD.open`. - **Concurrency:** Promiscuous callback uses short critical sections; SD I/O only in `handshakeCaptureProcessPending()` on the main loop. ## Operational - **Version:** `HANDSHAKE_FIRMWARE_VERSION` — change on every release; matches serial banner. - **Capture gating:** Main sketch calls `SD_Init()` / requires `SD_IsReady()` before `startMultiCapture()` (not `SD.cardType()` alone — shared SPI + WiFi). - **Authorization:** Operator must comply with local law and organizational policy.