♻️ refactor(runtime): 迁移 ESP 事件循环与行为轨迹 - #282
Conversation
There was a problem hiding this comment.
审查结论
未发现需要阻止合并的正确性问题。逐项核对了应用层 InteractionOrchestrator 对既有 VoiceInteractionController 状态/动作的映射、ESP 事件循环到动作投影的同步调用链、Runtime/ESP 组件依赖边界,以及启动、唤醒、打断、端点、最终 STT 超时和 TTS follow-up 轨迹;迁移后的状态读取和指令执行与原路径保持一致。
验证
./scripts/check_architecture.sh通过。interaction_orchestrator_test与voice_interaction_controller_test可执行文件均通过。- 聚合主机构建在未改动的 display/audio 头文件上因 GCC 将
[[maybe_unused]]视为错误而中止;相关失败不位于本 PR 的变更路径。
76c4d58 to
a30a682
Compare
a30a682 to
01167fe
Compare
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
|
@fennoai 严格仔细检查 |
审查结论逐方法对照固定范围 [P2] 行为轨迹没有记录唤醒动作的关键参数
验证
|
|
@fennoai 请对本 PR 做一次独立、严格且可追溯的代码审查。不要因其标为重构、已有通过检查或先前结论而降低标准,也不要回避可能阻塞合并的问题。\n\n审查方法:\n1. 以本 PR 的 merge base 与当前 head 为准,逐文件检查 diff,并将被迁移/拆分的实现与迁移前路径逐段对照。\n2. 核对所有公开接口、调用路径、状态机转换、异常与边界值、资源/并发/生命周期语义;重构 PR 必须证明可观察行为、执行顺序和错误语义没有非预期差异。\n3. 对涉及事件、队列、异步任务或数据持久化的改动,检查参数是否完整传递、所有权与生命周期是否稳定、是否可能丢失/串换/重复执行,并用可复现的最小输入说明问题。\n4. 审查测试是否真正覆盖本 PR 的风险,而非只覆盖表面分支;指出任何缺失的回归测试、断言不足或无法由现有测试发现的行为回归。\n5. 审查模块边界、依赖方向、私有实现与公开 API 的一致性,指出会造成架构退化、重复职责或跨层泄漏的具体位置。\n6. 运行或明确说明实际运行的检查;无法运行时必须说明受限原因、未验证范围与残余风险,不能将未运行项表述为通过。\n\n输出要求:\n- 发现问题时按 P0/P1/P2 排序,每项包含准确文件/行、触发条件、实际影响、为何违反本 PR/Issue 验收,以及最小修复建议。\n- 没有问题时,也必须列出已对照的行为、已运行命令及结果、未覆盖的风险,不能仅给出“looks good”。\n- 不要修改代码或提交;只给出审查结论。 |
审查结论基于固定范围 P2 — 行为轨迹丢失唤醒动作的关键参数
P2 —
|
|
@fennoai 请基于此 PR 的当前 head进行独立严格复审。先确认本次审查的 head SHA 与 merge base;不得复用旧 head 的结论,也不得因 CI、重构标签或已有 Review 省略逐文件核对。\n\n必须检查:\n- 逐项验证此前已报告问题是否被真正修复,并尝试构造最小反例使其重新出现;\n- 对新增/修改测试做 mutation 思考:改变关键实现值、参数或调用顺序后,测试是否会失败;\n- 对接口、所有权、生命周期、异常、并发/状态机和组件依赖方向进行实际代码级检查;\n- 运行可用的相关检查;未运行项必须说明原因、影响与残余风险。\n\n发现问题请按 P0/P1/P2 给出准确位置、触发条件、影响、违反的 Issue/PR 验收及最小修复。未发现问题也必须列出对照行为、命令结果和未覆盖范围。不要修改代码或提交。 |
当前 Head 与基线
审查结论逐文件复核完整固定 diff,并将拆分后的 Runtime 方法与 merge base 实现逐方法对照。此前“唤醒参数不进入 trace”的问题已从模型、投影路径和测试断言上真正修复;mutation 能捕获参数丢失、常量替换、状态错误和动作错误。但当前 head 新增一个 P1 编译回归,且此前报告的组件隐藏反向依赖仍存在。 P1 — 新增字段后测试无法在仓库告警策略下编译
P2 —
|
|
@fennoai 请基于刚推送的当前 head 严格复审。先确认 head SHA 与 merge base;不要复用对旧 head 的结论。逐项检查:(1) 所有聚合初始化在 GNU |
|
An internal error occurred. Please try again later. |
|
@fennoai 请基于刚推送的当前 head 严格复审。先锁定 head SHA 与 merge base,禁止复用旧结论。此前架构和编译问题已在前一 head 修复;本次新增验证只涉及交互动作投影失败与完整动作等价比较。请验证:(1) |
严格复审结论未发现可复现的 P0 / P1 / P2。 本次结论仅针对当前锁定提交,不复用旧 head 结论。 锁定范围
逐项证据
可复现验证
剩余风险
|
2cf2ae9 to
e5e1802
Compare
|
@fennoai 请仅基于当前 head 审查要求:
输出规则:只报告可复现的 P0/P1/P2,每项包含准确位置、触发条件、影响、违反的验收要求与最小修复。若没有问题,也必须列出核对范围、实际命令结果及未覆盖风险。禁止修改代码或提交。 |
独立严格复审结论实际取得的 head SHA: 固定审查范围为: 未发现可复现的 P0 / P1 / P2。 本次从当前固定 diff 独立核对,未以 CI 或旧审查结论代替检查。 源码漂移核对
语义核对
Mutation 灵敏度
实际命令结果
未覆盖风险
|
结论
Runtime 的公共装配契约仍位于
voicelife_runtime;ESP-only 实现、任务和调度已迁入voicelife_runtime_esp。交互状态由应用编排器拥有,ESP 适配器保留既有 FreeRTOS 队列、任务和定时器调度;唤醒参数被作为值拥有的动作数据传递。请审查迁移后行为轨迹与原状态机语义是否一致。Fixes #280
Lifecycle: Ready for review. Merge after prerequisite PR #275 is merged, all required checks pass, and a non-author reviewer approves. This PR targets
mainand temporarily includes #275 as ancestry; after #275 merges,GitHub 会自动收敛 diff。Scope
voicelife_runtime_esp.voicelife_runtimeas the public API and platform-assembly contract; the ESP component explicitly depends on it and provides the API implementation.InteractionOrchestratorownVoiceInteractionControllerand project legal transitions through a platform action sink.Migration Mapping
runtime::Startandruntime::RequestInterrupt; their implementation is linked from the ESP Runtime component, with compatibility forwarding retained forruntime_espcallers.EspInteractionTaskHost->InteractionOrchestrator-> existing queue/timer/display action projection.InteractionOrchestrator::state().voicelife_runtime/srctovoicelife_runtime_esp/srcwith declared build dependencies.Non-goals
Verification
./scripts/run_checks.sh(73/73 主机测试)./scripts/check_architecture.sh./scripts/check_format.sh-Wmissing-field-initializers -Werror构建interaction_orchestrator_testpython3 scripts/check_public_api_docs.pypython3 scripts/check_contract_dual_end.pypython3 -m unittest discover -s tests/python -p "test_*.py"(110 通过、1 跳过)Risk and Closeout
Primary risks are action-projection ordering and component-link ownership across synchronous state transitions. Host trace tests assert state, directive, wake-word and invalid-event behavior; the architecture test fixes the dependency graph and rejects hidden cross-component includes. GitHub CI and a non-author review remain required before merge.
AI assistance: Codex performed the mechanical relocation, contract-preserving refactor, and local verification. The resulting module responsibilities, public API stability, and verification evidence are explicitly documented above for human review.