Skip to content

Replace workflow docs sync with single-session orchestration#16

Merged
wlvh merged 1 commit into
mainfrom
agent/simplify-workflow-docs-sync
Jul 21, 2026
Merged

Replace workflow docs sync with single-session orchestration#16
wlvh merged 1 commit into
mainfrom
agent/simplify-workflow-docs-sync

Conversation

@wlvh

@wlvh wlvh commented Jul 21, 2026

Copy link
Copy Markdown
Owner

Supersedes #13

1. 背景与目标

workflow-docs-sync 的旧实现依赖六 mode harness、运行状态、review Skill 和发布绑定。
本 PR 将其替换为一次用户调用、单会话内建编排,并删除旧控制面。

本轮不重新设计产品,只处理三个合并 blocker:删除仓库中 tracked 的旧
PR_BODY.md、让安装器在升级时精确清理旧 reviewer Skill,以及严格验证可选
.gitignore 的文件类型和 UTF-8 编码。


2. 实现方案

  • 新增 DEC-005,确立主 Agent 唯一写入、四领域只读分析、内部只读审计和最终状态机械检查。
  • 重写 workflow-docs-sync 为单会话 Skill;无 subagent 平台时按四个隔离章节顺序执行。
  • sync_docs.py 只暴露 prepare / check:固定 upstream SHA、预检 dirty allowlist、只安装缺失模板,并只读检查九份最终文档。
  • 安装器只复制 canonical workflow-docs-sync,同时在两个固定平台 root 精确删除
    workflow-docs-sync-review;目录使用 shutil.rmtree,symlink 或普通文件使用
    unlink,不扫描其他 Skill,不读写 .source.json,不保存 migration state。
  • 可选 .gitignore 缺失时允许;存在时必须是非 symlink 普通 UTF-8 文件,并继续使用 Git-equivalent whitespace 检查。
  • 删除仓库根 tracked PR_BODY.md;根 .gitignore 继续允许本地普通 PR 草稿。

3. 变更范围

文件 / 目录 变更类型 说明
PR_BODY.md 删除 删除 PR #7/#8 时代的 tracked 运行产物;本地 ignored 草稿仍可使用
zh/skills/workflow-docs-sync/ 重写 / 修复 单会话 Skill、四领域 reference、审计 reference,以及带可选 .gitignore 严格检查的 sync_docs.py
zh/skills/workflow-docs-sync-review/ 删除 删除旧独立 review 控制面
zh/scripts/install_skills.py 重写 / 修复 单 Skill 薄安装器与精确旧 reviewer 升级清理
scripts/en/scripts/、旧 zh/scripts/ 文件 删除 删除旧同步器、launcher、runbook 与 reviewer prompt
tests/test_workflow_docs_sync.py 重写 / 扩充 覆盖单会话合同和三个本轮 blocker
README / development workflow / decisions 同步 更新单会话入口、边界与 DEC-005

本轮没有恢复旧 harness、mode、state、receipt、PR body 协议、.source.json
GitHub adapter,也没有改变主体架构。


4. 文档影响

受影响文档包括根目录与中英文 README、中英文 development workflow 入口,以及
zh/docs/development_workflow/decisions.md 中的 DEC-005。它们说明单会话入口、主
Agent 唯一写入、四领域只读分析、内部审计和最终机械检查。

本轮三个 blocker 是仓库卫生、安装升级和机械检查正确性修复,不新增产品能力或
用户流程,因此没有追加架构重设计。


5. 用户与架构影响

用户只调用一次 $workflow-docs-sync,只提供目标仓库、可选语言和可选 draft PR
意图。upstream checkout/SHA、领域分工和机械命令都是 Skill 内部细节。

同步过程不读取、改写或删除目标仓库自己的 ignored PR_BODY.md,不创建
.coding_workflow,不 commit、push 或执行 GitHub 写操作。PR 发布使用仓库外临时
Markdown body,并且只在本地报告获得用户明确批准后执行。


6. Review / 修复记录

轮次 来源 问题摘要 处理结果 证据
R0 初始实现 删除旧控制面并实现单会话最小核心 Fixed 单会话 Skill 与机械层
R1 实现对抗审计 checker 漏查已提交或 ignored 核心文件 whitespace Fixed committed / ignored 回归
R2 文档一致性审计 PR body 边界、fallback 用语、DEC supersede 和 WARN 处理描述 Fixed 中英文 workflow 与 DEC-005
R3 SEC_metrics Case A stage 10/11/12、LIGHT/FULL、生产化边界与 artifact 副作用 Fixed in synchronized docs Case A 证据见下节
R4 合并 blocker PR_BODY.md 仍是 tracked 的旧运行产物并引用已删除协议 Fixed git rm、工作树不存在、index 不再跟踪;目标 ignored 草稿回归继续通过
R5 合并 blocker 升级安装不会移除旧 workflow-docs-sync-review Fixed repo/user scope,目录/文件/symlink,精确 removed_obsolete 与幂等回归
R6 合并 blocker invalid UTF-8 .gitignore 可因 Git 返回 1 且无诊断而误通过 Fixed UTF-8、symlink、非普通文件、合法文件和 trailing-whitespace 回归

7. Case A 独立验证

7.1 Untouched heavy clone

  • 在未改写 committed artifact 的 heavy clone 上,stage 11 按预期失败。
  • 失败来自 committed artifact 中保留的历史绝对路径;这是 SEC_metrics artifact
    portability 问题,不是 workflow-docs-sync 编排或 checker 失败。

7.2 Test-only rebased disposable heavy clone

  • 仅在一次性测试 clone 中重基 artifact 路径后,stage 10 -> 11 -> 10 -> 12 通过。
  • golden:63/63 PASS
  • repair:75/75 PASS

结论:workflow-docs-sync Case A 通过。本 PR 没有修复、掩盖或宣称修复
SEC_metrics committed artifact 的可移植性。


8. 已知限制与回滚

  • SEC_metrics 已提交 artifact 含生成者历史绝对路径;untouched heavy clone 的 stage 11
    仍会因此失败。本 PR 不修改该 artifact portability 问题。
  • test-fixture-consolidation #13 保持打开;Supersedes #13 只表示本 PR 取代其方案,不关闭 issue。
  • 回滚方式:回退本 PR;旧实现只保留在 Git 历史中,不恢复兼容控制面。

9. 验证

  • python3 -m pytest -q tests/test_workflow_docs_sync.py87 passed
  • python3 -m pytest -q87 passed
  • 当前环境没有 python 命令别名;python -m pytest -q 返回 command not found,
    同一解释器入口已用 python3 完整执行并通过。
  • python3 -m py_compile zh/skills/workflow-docs-sync/scripts/sync_docs.py zh/scripts/install_skills.py:通过。
  • Skill quick_validate.pySkill is valid!
  • git diff --check:通过。
  • 定向 blocker / 结构验证:14 passed
  • 生产 Python:695wc -l 物理行;测试:999wc -l 物理行。
  • sync_docs.py --help 只列出 {prepare,check}
  • 生产面 forbidden-control-plane 扫描:0 命中。
  • prepare / check 不创建 .coding_workflowPR_BODY.md

本地验证没有重跑或修改远端 CI,也不声称存在两个不同的 CI checks。


10. 过程与发布闸门

上一轮提前发布违反了“先报告、后批准、再发布”的人工闸门。本轮已恢复两阶段流程:
第一阶段只进行本地修改、测试、仓库外 PR body 准备并返回报告;收到用户明确批准后,
第二阶段才 amend 单一 commit、以 force-with-lease 推送并更新本 PR body。PR 保持
draft;本轮没有评论 PR、关闭 issue 或创建新 PR。

@wlvh
wlvh force-pushed the agent/simplify-workflow-docs-sync branch from fd00006 to 6b8d2ca Compare July 21, 2026 05:41
@wlvh
wlvh marked this pull request as ready for review July 21, 2026 06:04
@wlvh
wlvh merged commit 9d0e069 into main Jul 21, 2026
2 checks passed
@wlvh wlvh mentioned this pull request Jul 21, 2026
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