fix(#149): router marker parser 修复(终结 dispatch-gap)#153
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🤖 质量审查通过:router marker parser 改动聚焦TL;DR
详细说明这次改动把原来的 ASCII payload gate 改成 ,也就是一组 route-specific marker 解析规则。这个命名贴近 Phase 9 router 的业务语义,新增方法都很短,并且分别被 和 调用,不是挂空的 helper。 新增测试覆盖了中文 summary / reason、跨 tick triplet、合法 converge 与 source-regression 检查。范围集中在 router marker parser,没有看到 unrelated cleanup。Refactor Old/New 自说明也存在且能读懂,不是 形式的占位。 📎 完整 codex 原始输出(存档备查)---
pr: 153
role: quality
verdict: approve
---
## Verdict
Approve: the router marker parser change is focused, readable, and does not introduce dead code or unnecessary abstraction from a quality perspective.
## Evidence
- `skills/codex-refactor-loop/scripts/phase9_router_daemon.py:53` introduces `Phase9MarkerGrammar`, a domain-specific parser name that describes the business intent better than the removed generic payload regex.
- `skills/codex-refactor-loop/scripts/phase9_router_daemon.py:61` keeps the parser entrypoint small and routes to tiny helpers; the new methods are reachable from `_extract_marker` and `_round_from_converge`.
- `skills/codex-refactor-loop/scripts/phase9_router_daemon.py:54` and `skills/codex-refactor-loop/scripts/phase9_router_daemon.py:253` include the required Refactor Old/New self-doc blocks, and they are specific enough to explain the parser bug and the intended route-specific fix without relying on a `see issue #X` placeholder.
- `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:168`, `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:279`, and `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:672` add focused behavior/source-regression coverage for the new grammar without unrelated cleanup.
⟦AI:AUTO-LOOP⟧⟦AI:AUTO-LOOP⟧ |
🤖 架构审查通过:router marker parser 仍在窄 daemon 边界内TL;DR
详细说明这次 diff 只改 架构上新增的 行为和 source-regression 都落在同一个测试文件里:中文 solver summary、跨 tick triplet、中文 converge reason、regex/prompt echo 拒绝、禁止旧 ASCII payload gate 回归。符合 CLAUDE.md 里“变更必须可验证”和 narrow allowlist daemon 的要求。 📎 完整 codex 原始输出(存档备查)pr: 153
|
🤖 质量审查通过:router marker parser 改动聚焦(修正版)TL;DR
详细说明这次改动把原来的 ASCII payload gate 改成 新增测试覆盖了中文 summary / reason、跨 tick triplet、合法 converge 与 source-regression 检查。范围集中在 router marker parser,没有看到 unrelated cleanup。Refactor Old/New 自说明也存在且能读懂,不是 📎 完整 codex 原始输出(存档备查)---
pr: 153
role: quality
verdict: approve
---
## Verdict
Approve: the router marker parser change is focused, readable, and does not introduce dead code or unnecessary abstraction from a quality perspective.
## Evidence
- `skills/codex-refactor-loop/scripts/phase9_router_daemon.py:53` introduces `Phase9MarkerGrammar`, a domain-specific parser name that describes the business intent better than the removed generic payload regex.
- `skills/codex-refactor-loop/scripts/phase9_router_daemon.py:61` keeps the parser entrypoint small and routes to tiny helpers; the new methods are reachable from `_extract_marker` and `_round_from_converge`.
- `skills/codex-refactor-loop/scripts/phase9_router_daemon.py:54` and `skills/codex-refactor-loop/scripts/phase9_router_daemon.py:253` include the required Refactor Old/New self-doc blocks, and they are specific enough to explain the parser bug and the intended route-specific fix without relying on a `see issue #X` placeholder.
- `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:168`, `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:279`, and `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:672` add focused behavior/source-regression coverage for the new grammar without unrelated cleanup.
⟦AI:AUTO-LOOP⟧⟦AI:AUTO-LOOP⟧ |
🤖 tests reviewer approve: PR 153 测试覆盖足够TL;DR
详细说明我按 检查点里没有发现新增 验证命令均已在 PR worktree 通过:router daemon 测试 36 个,project fixed-points source-regression 测试 144 个。 📎 完整 codex 原始输出(存档备查)---
pr: 153
role: tests
verdict: approve
---
## Verdict
Approve: the PR adds behavior tests for the route-specific parser outcomes and a source-regression guard for the new no-regression rule.
## Evidence
- `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:168` covers `SOLVER_DONE:<role>:propose:<non-ASCII summary>` across all three solver roles and asserts the business outcome: exactly one judge dispatch plus the `149-1-judge` ledger key.
- `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:184` covers cross-tick triplet accumulation: 2/3 solver logs do not dispatch, then the third solver log triggers exactly one judge dispatch.
- `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:279` covers `META_JUDGE_DONE:converge:round-N:<non-ASCII reason>` and asserts the next-round solver triplet plus all three ledger keys.
- `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:624` keeps the junk-marker regression case alive while allowing the legal Unicode converge marker; assertions check dispatch goes only to issue 41 round 2 and forbidden regex fragments do not leak into fallback events.
- `skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py:672` adds a source-regression assertion for the route-specific grammar helper and blocks reintroducing `VALID_MARKER_PAYLOAD.match(candidate)` or `Phase9RoundProjection`.
- No new `sleep`/`delay`, `[Skip]`, or manual-test traits were added in the PR diff, and I found no assertion loosening in the touched tests.
- Verification run from the PR worktree: `git diff --check origin/auto-refact-dev...origin/refactor/issue149-router-marker-parser`, `python3 -m unittest skills/codex-refactor-loop/scripts/test_phase9_router_daemon.py` (36 tests), and `python3 -m unittest skills/codex-refactor-loop/scripts/test_ensure_project_rules_fixed_points.py` (144 tests) all passed.
REVIEW_DONE:153:tests:approve
⟦AI:AUTO-LOOP⟧⟦AI:AUTO-LOOP⟧ |
Phase 9 r2 consensus(structural)。route-specific marker-grammar parser fix(无 Phase9RoundProjection):router 可靠解析含中文收敛问题的 judge/route marker → 可靠 dispatch triplet judge/converge,终结 controller-fallback toil(本会话 no-gap churn 根因)。Closes #149
⟦AI:AUTO-LOOP⟧