# Voice 弱网最终真机验收（2026-10-09）

结论：修复后候选 `04a049ab8d40a459aba1d1561383927e5e890b88` 在用户缩减后的验收范围内 PASS，允许合入 main。

固件源码提交 `03914647e9fda2a6d99eb7d9b5f58fd1021d5bea`；最终候选仅另改 Gateway 和测试，firmware/boards 源码一致。
固件 SHA256 `3eaaa1526851761ff19994dd64c4b56cd478ce97e0b51f02be2daa8d26a7226c`，Help build `2026-10-09 02:32 UTC`。

| 项目 | 实际覆盖 |
|---|---|
| A Normal | PASS 3 |
| B Recording disconnect | PASS 10 次有效断连，完整保留前后录音 |
| C Upload disconnect | PASS 2；其余 8 次由用户取消 |
| D END tail-loss | PASS END 未达、END ACK 丢失各一次；ACK 丢失发现 blocker 后修复复测 |
| E STT reconnect | PASS 未完成时恢复、离线完成后恢复各一次；第三次重复取消 |
| F Retry | PASS 55 秒离线自动恢复、实体 A RETRY 两个分支 |
| G Hard expiry | PASS 130 秒离线；120 秒失效、不可 RETRY、旧请求清理 |
| H Invalidation | PASS B Cancel、target switch、Approval 各一次 |
| I 20s | PASS 20 秒上限，1,764,000 字节 / 500 chunks |
| J Stress | 额外 10 次重复由用户取消；检查同一固件 32 次录音内存采样 |

26 个有效用例中，22 次完整转写的 capture / END / Gateway 字节一致，sequence 连续，每次 STT invocation=1；4 次过期/失效用例 STT=0。
未实体 SEND 前 Agent input=0；一次实体 SEND 后只发送一次且 target 正确。
16 个用例使用 Gateway `0391464`，10 个使用修复后 Gateway `04a049a`，不能称原始完整 53 轮矩阵通过。

启动 mic ready：PSRAM free=6161556，internal free=222679，DMA largest=147456 bytes。
32 次 capture-start：PSRAM 5129364–5131720，internal 23031–25283，DMA 10752–13824 bytes。
mic stack min >=1440 bytes；未见明显持续内存下降，未出现意外 reboot/WDT/queue full。有限样本不替代长期压力测试。

已修复的 blocker：

- 原 `1e0e31b` 在启动约 1.9 秒 mic_capture 栈溢出并循环重启；`0391464` 把 drain buffer 移到独立 PSRAM allocation。
- Gateway `0391464` 在 END ACK 丢失且 STT 离线完成时卡 TRANSCRIBING，voice_id=`2ced5ae55cfa8cf5`；`04a049a` 保留离线结果并在重新交付时验证当前 context。修复后 voice_id=`bf88e5a8b02fdff5` 通过。
- 真实 Navigator context 回归 69 tests 在 iMac/lighthouse 均通过。

详细 metadata 日志、voice_id、双端 UTC 时间线、固件与清理记录保留于 iMac 的 git-ignored `dist/voice-stack-direct-20261009/`；原启动失败证据在 `dist/physical-acceptance-20261009/`。
不提交音频、token、完整 transcript 或构建产物。

移动热点专项、Speech + TLS 同时工作时的峰值测量与后续时延/录音上限优化仍是独立未完成事项，不包含在本次 PASS 中。
