Skip to content

修复 workflow-docs-sync PASS completion 错误成功#14

Merged
wlvh merged 1 commit into
mainfrom
agent/workflow-docs-sync-pass-completion-hotfix
Jul 20, 2026
Merged

修复 workflow-docs-sync PASS completion 错误成功#14
wlvh merged 1 commit into
mainfrom
agent/workflow-docs-sync-pass-completion-hotfix

Conversation

@wlvh

@wlvh wlvh commented Jul 20, 2026

Copy link
Copy Markdown
Owner

1. 背景与目标

上一版 completion 规格已基本按当时要求实现;本轮是对规格本身的 correctness 修正,不是“修复 Codex 未按要求实现”。

本轮只处理四个边界:

  • PREPARE 在 sync 前接受可迁移的旧 schema,sync 后严格执行 current schema;
  • PASS_1 的 Repo Facts schema 从当前 pinned skeleton 派生;
  • completion 除了拒绝 待补充,还要求当前责任 block/cell 非空,并定义轻量 literal-pipe 合同;
  • 文档把正式 PR_BODY.md 的机械准备责任从 PASS Agent 移回工作流准备阶段。

不修改 pin、seal / SUBMIT、reviewer、run/result schema;不新增 receipt、restart、rebaseline、通用 Markdown parser、Threat Model B 或 Shadow Case B/C;不修改 SEC_metrics 旧失败 run。


2. 实现方案

F01:migration-aware PREPARE

  • sync 前 validate_refreshable_pr_body 镜像 ordinary sync 的 refreshable 边界:sync marker 与 auto pair 必须唯一、闭合;当前 agent section 可完整缺失,但 partial、duplicate、overlap、sentinel 外内容和非 sync body 全部失败;旧 section 顺序只要求 spans 合法且不重叠。
  • sync 后沿用 strict current validator:所有当前 section 各恰好一次、canonical 顺序合法、sentinel 外无内容。
  • 缺失正式 body 时由 PREPARE 从当前 skeleton 机械创建,再执行同一 strict validator。

F02:non-empty completion

  • PASS_1 十个 Repo Facts heading 从当前 .coding_workflow/diffs/pr_body_skeleton.md 派生;每个 current block 必须有且仅有一行非空 证据:,且不含 待补充
  • Full Document Reconcile 当前 owned row 必须唯一、列数等于 current skeleton canonical header、最后五个责任 cell 非空。
  • Agent Execution Evidence 当前 PASS row 必须唯一、列数等于 current skeleton canonical header、后三个责任 cell 非空。
  • PASS_4 Remaining Human Decisions 必须在 heading 后至少有一行非空 payload。
  • 轻量 splitter 只把未转义 | 当分隔符;cell 内字面 pipe 必须写为 \|<br>none 与允许位置的 待判断 均合法。

其他 alignment

  • 新增双向断言:harness.PERMITTED_INHERIT_PATHS == set(sync_coding_workflow.PERMITTED_INHERIT_FILES);生产常量不变,没有第三份配置。
  • 中文四个 PASS 明确:正式 body 应由 PREPARE 机械创建,缺失立即停止;英文 manual track 同样禁止 PASS 内自行从 skeleton 创建,但不虚构不存在的英文 PREPARE mode。
  • 机械 PASS completion 只证明产物、结构、责任字段非空与 owned readiness;真实性和证据质量仍由独立 reviewer 判断。

3. 变更范围

文件 说明
zh/skills/workflow-docs-sync/scripts/harness.py F01/F02 validators、current schema 派生、轻量 table splitter。
tests/test_workflow_sync_skill.py 扩展既有两个 PREPARE 回归,不新增完整 PREPARE→SUBMIT E2E;保留并恢复全部独立语义断言。
tests/test_sync_coding_workflow.py 文档责任与 literal-pipe 合同断言。
zh/scripts/OPERATIONS.md 四个 PASS 的 PREPARE 责任、literal-pipe 规则、机械/语义边界。
en/scripts/OPERATIONS.md literal-pipe 规则及 PASS 内不得自行创建 body。
zh/skills/workflow-docs-sync/evals/README.md Case A 的空 block/cell、表格宽度与 reviewer 边界。

4. Review / 修复记录

编号 来源 复现 / 判断 处理与证据
F01 migration 规格修正 旧实现的 sync 前 strict validator 会拒绝 ordinary sync 能合法补回的完整缺失 section。 缺 1 / 缺 2 section 均成功插入;missing + duplicate/partial、only-start/end、overlap、非 sync、sentinel 外内容均失败;旧顺序迁移后满足 strict current schema,既有 agent-owned 内容精确保持。
F02 completion 规格修正 fail-first 证明:只移除 placeholder、留下空 Repo Facts block/cell 时,旧 completion 仍可能错误成功。 空 block、空 证据:、reconcile/execution 空 cell、Remaining 无 payload、未转义 pipe 均失败;具体 evidence、none、允许位置的 待判断、具体 decision 与 escaped | 均成功。
BUDGET 一次性 correctness 例外 原生产硬上限 2200 无法同时容纳本轮 migration/current-schema/non-empty correctness 回归。 固定三文件生产口径临时允许 2500;该例外不构成永久上调。Production consolidation 由 #15 跟踪,测试恢复至 1800 仍由 #13 跟踪。
SEC 既有独立 reviewer,source 019f7e7c-e952-7643-ac42-225ece901b33 stage 10/11/12 dispatch chain 与 calculation CIK / 8-K aggregation scope 仍有语义 BLOCKER。 本轮不修 SEC 语义、不进入 PASS_2;该 BLOCKER 原样保留,继续证明机械 completion 不等于语义正确。

migration 内部 heading 兼容

旧 body 的 repo_facts_map 可少一个 current heading;PREPARE 保留旧语义内容,PASS_1 Agent 再从当前 skeleton 补入该 heading,completion 成功。scope 仍以 start-pass baseline 为准,schema 则来自 current pinned skeleton,不会被旧 baseline 的 heading 数永久锁死。


5. 预算例外与 follow-up

生产 Python 固定统计口径始终为:

  • zh/skills/workflow-docs-sync/scripts/*.py:harness 1902 行;
  • zh/skills/workflow-docs-sync-review/scripts/*.py:reviewer validator 354 行;
  • zh/scripts/install_skills.py:installer 244 行;
  • 合计:2500 行。

原生产硬上限是 2200。本 correctness hotfix 为同时闭合 migration-aware PREPARE、current Repo Facts schema、非空 completion 和 literal-pipe 错误合同,获得一次性 2500 行例外;该例外不构成永久预算上调。

本 PR 不同时进行大规模 consolidation。专项测试当前为 2150 行,符合本 PR 临时上限。


6. 验证

  • 全量 pytest:42 passed in 97.15s
  • 无真实 gh PATH 专项:22 passed in 93.10s
  • 无真实 gh PATH 全量:42 passed in 101.11s
  • collected / passed / 显式 unittest.subTest 迭代:42 / 42 / 24;subtest 不计入 pytest collected。
  • scoped flake8:通过。
  • git diff --check:通过。
  • execution/reviewer 两个 Skill quick validation:均为 Skill is valid!
  • Actions:push run 与 Draft PR run 均通过(2973398715629733990278)。

7. SEC_metrics 新 Case A

  • 新 detached worktree 从 baa200f209945bcf5c1918b4ff5e4b08b589c3f8 创建;pinned upstream 为本 PR commit 544f1877158b123b00cb4d4c9711e5d1558bc21c
  • 新 run:d87cfbc815504de09f12711e57e21295。PREPARE 自动创建正式 body,初始 body 与 current skeleton SHA-256 完全一致。
  • 只删除当前责任 placeholders、留下十个空 证据: 和空 reconcile/execution cells 后,finish 以 PASS PR_BODY 未完成 / 证据: 值不得为空 失败;active 仍为 PASS_1,completed 仍只有 PREPARE,PASS_1 result 不存在。
  • 填入非空机械责任项、none待判断 与 escaped \|,并给 owned architecture 加入明确“no SEC semantic repair”的 readiness 探针后,原地 finish 成功。
  • 最终 state:completed [PREPARE, PASS_1]、active null、submit_ready false;PASS_1 changed paths 精确为 PR_BODY.mdarchitecture.md
  • state snapshot 与文件事实一致:PR_BODY.md SHA-256 5e6577a47aeb1013009c3b128e4142eae3c2b1d69e3728ae796b0c0a0d20e439architecture.md SHA-256 ddc95aa137289288eebf19bb98022c3e08ef754b0bbd1dd61c348589f7e96ef7
  • PASS_2 baseline/result 均不存在;停在 PASS_1,不进入 PASS_2。SEC 主 checkout clean,旧 run 2edb59977eb143e5bb9a4555f38e572a 未修改。
  • 既有独立 reviewer 语义 verdict 仍为 BLOCKER;本轮没有把机械成功表述成 SEC 内容正确。

8. 已知限制与回滚


9. 最终自检

  • PR 修复 workflow-docs-sync PASS completion 错误成功 #14 保持 Draft/Open,未新建 PR,未合并
  • 分支相对 origin/main 恰好一个 commit,使用 amend + force-with-lease
  • 未修改冻结范围内的 pin、seal/SUBMIT、reviewer、run/result schema
  • 未加入 receipt、restart、rebaseline、通用 Markdown parser、Threat Model B 或 Shadow Case B/C
  • F01 migration、F02 non-empty、预算口径和 SEC reviewer BLOCKER 已记录
  • SEC 新 Case A 停在 PASS_1,未修复 SEC 语义内容

@wlvh
wlvh force-pushed the agent/workflow-docs-sync-pass-completion-hotfix branch from e9f2fa6 to 544f187 Compare July 20, 2026 10:08
@wlvh
wlvh marked this pull request as ready for review July 20, 2026 10:23
@wlvh
wlvh merged commit a086ce7 into main Jul 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant