问题
headless 下 worker codex(implement / reviewer)经常把终止 marker(IMPLEMENT_DONE:issue-<N>:<status> / REVIEW_DONE:<pr>:<role>:<verdict>)只写进 run artifact(.refactor-loop/runs/*.md)末尾,不在 log 末尾 echo (codex stdout marker 落点不可靠,同批 worker 有的在 log、有的只在 artifact)。系统多个消费点只扫 log 末尾 marker,导致 markerless worker 被系统性误判:
detection (wakeup_plan.completed_marker_actions):markerless → 不生成 publish/review action。已 hotfix(commit 8aeea89 ,implement artifact fallback)。
revalidation (wakeup_runner._source_log_has_clean_marker):markerless → reject publish(clean_exit_marker_missing)。已 hotfix(commit dfacc64 )。
readiness (consensus-implementation readiness / suppressed_reason):最破坏的一处 。系统扫 log 不知道 implement 已完成(marker 在 artifact)→ 判定该派 implement → 重派覆盖已完成的 worktree 工作,原本 IMPLEMENT_DONE:ok 退化成 :partial、工作丢失 + 浪费 codex (dogfood 实测 测试纪律修宪(CLAUDE.md):behavior-first;source-regression 仅锁 doc↔code 授权边界;禁同义反复实现字面断言 #493 :ok→:partial、发行前 clean-room 集成测试制度:独立干净 host 仓库完整 dogfood 验证后才发版 #421 /同义反复 source-literal 测试普查与替换为 behavior test #494 被重派)。未修 。
review verdict (review gate truth table):markerless reviewer verdict 在 artifact、log 无 → 真值表判 missing role → WAIT_OR_REDISPATCH,review→merge 卡(dogfood 实测 让 review comment 与 refactor marker 冲突可收敛 #402 tests/quality REVIEW_DONE:approve 只在 artifact)。未修 。
连续单点 hotfix(detection + revalidation)已证明是打地鼠:readiness 重派还会丢失已完成工作 ,review 还卡。implement→PR、review→merge 两条链都被 markerless 卡死(open PR 数长期只有 2)。
新原则(待共识收窄)
统一 marker-reading robustness:一个共享的 marker reader (契约待定:log-first + artifact-fallback,或与 #205 rule 4 的 review-verdict-artifact-first 对齐),所有终止-marker 消费点(detection / revalidation / readiness / review-verdict)都经它,保证 worker marker 落 log 或 artifact 都被一致识别。可双管齐下同时强化 worker prompt 要求 marker 落 log 末尾,但不能只靠 prompt (worker 行为不可靠是前提)。
不变量 / 边界
decision questions
共享 reader 契约:log-first+artifact-fallback / artifact-first / 两者一致性校验?
readiness 端如何识别「已完成 implement,不重派」(避免丢工作)而不与「真需重派的失败 implement」混淆?
与 design: dogfood 运维经验写回 SKILL.md(并行audit覆盖/prompt注册/verdict源/daemon重启) #205 rule 4(review verdict from artifact frontmatter)如何收口为单一来源?
是否同时加 worker-prompt 强化 + source-regression 锁住所有消费点都用共享 reader?
证据
⟦AI:AUTO-LOOP⟧
问题
headless 下 worker codex(implement / reviewer)经常把终止 marker(
IMPLEMENT_DONE:issue-<N>:<status>/REVIEW_DONE:<pr>:<role>:<verdict>)只写进 run artifact(.refactor-loop/runs/*.md)末尾,不在 log 末尾 echo(codex stdout marker 落点不可靠,同批 worker 有的在 log、有的只在 artifact)。系统多个消费点只扫 log 末尾 marker,导致 markerless worker 被系统性误判:wakeup_plan.completed_marker_actions):markerless → 不生成 publish/review action。已 hotfix(commit 8aeea89,implement artifact fallback)。wakeup_runner._source_log_has_clean_marker):markerless → reject publish(clean_exit_marker_missing)。已 hotfix(commit dfacc64)。IMPLEMENT_DONE:ok退化成:partial、工作丢失 + 浪费 codex(dogfood 实测 测试纪律修宪(CLAUDE.md):behavior-first;source-regression 仅锁 doc↔code 授权边界;禁同义反复实现字面断言 #493:ok→:partial、发行前 clean-room 集成测试制度:独立干净 host 仓库完整 dogfood 验证后才发版 #421/同义反复 source-literal 测试普查与替换为 behavior test #494 被重派)。未修。WAIT_OR_REDISPATCH,review→merge 卡(dogfood 实测 让 review comment 与 refactor marker 冲突可收敛 #402 tests/qualityREVIEW_DONE:approve只在 artifact)。未修。连续单点 hotfix(detection + revalidation)已证明是打地鼠:readiness 重派还会丢失已完成工作,review 还卡。implement→PR、review→merge 两条链都被 markerless 卡死(open PR 数长期只有 2)。
新原则(待共识收窄)
统一 marker-reading robustness:一个共享的 marker reader(契约待定:log-first + artifact-fallback,或与 #205 rule 4 的 review-verdict-artifact-first 对齐),所有终止-marker 消费点(detection / revalidation / readiness / review-verdict)都经它,保证 worker marker 落 log 或 artifact 都被一致识别。可双管齐下同时强化 worker prompt 要求 marker 落 log 末尾,但不能只靠 prompt(worker 行为不可靠是前提)。
不变量 / 边界
runs/<worker>.md同名伴随面,clean-exit-scoped。decision questions
证据
IMPLEMENT_DONE:ok→重派→:partial、发行前 clean-room 集成测试制度:独立干净 host 仓库完整 dogfood 验证后才发版 #421/同义反复 source-literal 测试普查与替换为 behavior test #494 重派、让 review comment 与 refactor marker 冲突可收敛 #402 reviewer verdict 仅在 artifact、open PR 数长期=2⟦AI:AUTO-LOOP⟧