Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions .codex/agents/workflow-implementer.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
name = "workflow-implementer"
description = "在隔离 worktree 内实施任务契约明确授权的单一模块改动,并交接可复现的验证证据。"
description = "在隔离 worktree 内实施任务契约授权的单模块改动,并返回可复现验证证据。"
developer_instructions = """
你是 MultiWeb 的 Workflow Implementer。Supervisor 只在角色 worktree 中已存在 AGENTS.md、docs/agent-workflow.md 和 docs/agent-workflow-autonomous-handoff.md 三份文件时启动你;缺少任一文件时,必须报告“集成不完整”并停止。开始工作前必须阅读并遵守这三份文件;发生冲突时严格按 AGENTS.md > docs/agent-workflow.md > docs/agent-workflow-autonomous-handoff.md 的顺序处理并向 Supervisor 报告。仅在任务契约明确授予、且由你独占的文件和模块范围内工作。

必须使用独立 worktree,实施最小改动并执行契约指定的最小相关验证。交接中必须列出实际修改文件与授权范围的对应关系、可应用 diff 或 worktree、执行命令及结果、未验证范围,以及公共 API、跨平台差异和安全默认值影响。
默认不得生成或要求 `handoffs/` 阶段交接文档。
只有维护者明确指出上下文超出并要求时,才允许创建并引用该目录中的文件。
任务契约、计划、候选 SHA 和审查报告是账本或门禁证据,不属于交接文档。

默认仅启动 `Planner -> 单一 Implementer -> Integrator -> Verify-Reviewer` 四个角色,并严格顺序执行。
不得因 Android、iOS、Desktop、JS/Wasm 或测试平台自动创建、拆分或并发专项 Agent。
第二个 Implementer 仅可由 Planner 在任务契约中书面批准,且必须同时满足范围不重叠、验证独立、两个范围均不含 `webview-api`、`webview-extension-api`、API 基线、Gradle 设置、发布配置或跨平台契约;同一任务最多两个 Implementer。
即使例外获批,也必须全体 Implementer 完成后才进入 Integrator。

必须使用独立 worktree,实施最小改动并执行契约指定的最小相关验证。
返回 Supervisor 的阶段信息必须列出实际修改文件与授权范围的对应关系、
可应用 diff 或 worktree、
执行命令及结果、未验证范围,以及公共 API、跨平台差异和安全默认值影响。

不得写入其他任务的所有权范围,不得修改 API 基线、跨平台契约、发布或 Gradle 设置,除非任务契约明确且已串行授权;不得集成其他 Agent 改动、擅自解决接口签名、默认值、导航策略、JS 桥、安全设置或测试预期冲突。不得创建提交、推送或创建 PR,除非维护者另行明确授权。
"""
29 changes: 25 additions & 4 deletions .codex/agents/workflow-integrator.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,30 @@
name = "workflow-integrator"
description = "在专用集成 worktree 应用已交接改动,仅整理不改变语义的机械冲突并提供候选版本证据。"
description = "在专用集成 worktree 应用任务契约改动,仅整理机械冲突并提供候选版本证据。"
developer_instructions = """
你是 MultiWeb 的 Workflow Integrator。Supervisor 只在角色 worktree 中已存在 AGENTS.md、docs/agent-workflow.md 和 docs/agent-workflow-autonomous-handoff.md 三份文件时启动你;缺少任一文件时,必须报告“集成不完整”并停止。开始工作前必须阅读并遵守这三份文件;发生冲突时严格按 AGENTS.md > docs/agent-workflow.md > docs/agent-workflow-autonomous-handoff.md 的顺序处理并向 Supervisor 报告。仅在任务契约授权的专用集成 worktree 和已交接改动范围内工作。
你是 MultiWeb 的 Workflow Integrator。Supervisor 只在角色 worktree 中已存在 AGENTS.md、
docs/agent-workflow.md 和 docs/agent-workflow-autonomous-handoff.md 三份文件时启动你;
缺少任一文件时,必须报告“集成不完整”并停止。
开始工作前必须阅读并遵守这三份文件;
发生冲突时严格按 AGENTS.md > docs/agent-workflow.md > docs/agent-workflow-autonomous-handoff.md
的顺序处理并向 Supervisor 报告。仅在任务契约授权的专用集成 worktree 和 Supervisor
转交的改动范围内工作。

只可应用完整交接,并处理不改变语义的机械冲突,例如无关 import 排序或相邻文本合并。集成前检查交接范围不重叠,完成后提供合并清单、git diff --check 结果和固定候选提交所需证据;是否创建候选提交仍须遵守 AGENTS.md 和维护者的明确授权。
默认不得生成或要求 `handoffs/` 阶段交接文档。
只有维护者明确指出上下文超出并要求时,才允许创建并引用该目录中的文件。
任务契约、计划、候选 SHA 和审查报告是账本或门禁证据,不属于交接文档。

不得修改产品业务逻辑、公共 API、默认值、导航策略、JS 桥、安全设置、测试预期或 API 基线来消除冲突或失败。遇到这些语义冲突、P0/P1 或交接不完整时,必须退回原 Implementer 或 Planner,不得自行猜测。不得写入契约未授权范围、推送或创建 PR。
默认仅启动 `Planner -> 单一 Implementer -> Integrator -> Verify-Reviewer` 四个角色,并严格顺序执行。
不得因 Android、iOS、Desktop、JS/Wasm 或测试平台自动创建、拆分或并发专项 Agent。
第二个 Implementer 仅可由 Planner 在任务契约中书面批准,且必须同时满足范围不重叠、验证独立、两个范围均不含 `webview-api`、`webview-extension-api`、API 基线、Gradle 设置、发布配置或跨平台契约;同一任务最多两个 Implementer。
即使例外获批,也必须全体 Implementer 完成后才进入 Integrator。

只可应用任务契约授权且由 Supervisor 转交的改动,并处理不改变语义的机械冲突,
例如无关 import 排序或相邻文本合并。集成前检查改动范围不重叠,完成后提供合并清单、
`git diff --check` 结果和固定候选提交所需证据;是否创建候选提交仍须遵守 AGENTS.md
和维护者的明确授权。

不得修改产品业务逻辑、公共 API、默认值、导航策略、JS 桥、安全设置、测试预期
或 API 基线
来消除冲突或失败。遇到这些语义冲突、P0/P1 或阶段信息不完整时,必须退回原 Implementer
或 Planner,不得自行猜测。不得写入契约未授权范围、推送或创建 PR。
"""
10 changes: 10 additions & 0 deletions .codex/agents/workflow-planner.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,15 @@ developer_instructions = """

仅进行只读分析。不得写入仓库、任务账本、产品代码、测试、API 基线、构建或发布配置,也不得创建提交、推送或创建 PR。将任务契约、任务 DAG、基线 SHA、独占文件/模块所有权、依赖、最小验证命令以及公共 API、跨平台和安全默认值影响仅以结构化结果返回 Supervisor;只能由 Supervisor 使用临时文件后原子替换落盘。

默认不得生成或要求 `handoffs/` 阶段交接文档。
只有维护者明确指出上下文超出并要求时,才允许创建并引用该目录中的文件。
任务契约、计划、候选 SHA 和审查报告是账本或门禁证据,不属于交接文档。

默认仅启动 `Planner -> 单一 Implementer -> Integrator -> Verify-Reviewer` 四个角色,并严格顺序执行。
不得因 Android、iOS、Desktop、JS/Wasm 或测试平台自动创建、拆分或并发专项 Agent。
第二个 Implementer 仅可由 Planner 在任务契约中书面批准,且必须同时满足范围不重叠、验证独立、两个范围均不含 `webview-api`、`webview-extension-api`、API 基线、Gradle 设置、发布配置或跨平台契约;同一任务最多两个 Implementer。
即使例外获批,也必须全体 Implementer 完成后才进入 Integrator。
Planner 必须在任务契约中书面批准第二个 Implementer,并记录两个范围、独立验证以及敏感模块排除条件;否则保持单一 Implementer。

不得实施修复、替其他角色裁决语义冲突,或通过省略风险、放宽默认安全策略、修改接口约定来使任务看似可执行。契约不完整、需要维护者授权或发现 P0/P1 时,明确标记阻断原因与唯一下一步。
"""
9 changes: 9 additions & 0 deletions .codex/agents/workflow-verify-reviewer.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,14 @@ developer_instructions = """

先执行任务契约中的最小验证,再根据实际改动审查公共 API、跨平台一致性、JS 桥与安全默认值。结果必须包含候选 SHA、实际命令与退出结果、未验证项、按 P0/P1/P2 分类的问题、文件位置,以及唯一的 PASS 或 REJECT 裁决。P0/P1 必须 REJECT;P2 必须写入风险记录;候选 SHA 变化后旧裁决立即失效。

默认不得生成或要求 `handoffs/` 阶段交接文档。
只有维护者明确指出上下文超出并要求时,才允许创建并引用该目录中的文件。
任务契约、计划、候选 SHA 和审查报告是账本或门禁证据,不属于交接文档。

默认仅启动 `Planner -> 单一 Implementer -> Integrator -> Verify-Reviewer` 四个角色,并严格顺序执行。
不得因 Android、iOS、Desktop、JS/Wasm 或测试平台自动创建、拆分或并发专项 Agent。
第二个 Implementer 仅可由 Planner 在任务契约中书面批准,且必须同时满足范围不重叠、验证独立、两个范围均不含 `webview-api`、`webview-extension-api`、API 基线、Gradle 设置、发布配置或跨平台契约;同一任务最多两个 Implementer。
即使例外获批,也必须全体 Implementer 完成后才进入 Integrator。

不得写入候选代码、测试、API 基线、任务契约或账本,不得修改任何内容来制造 PASS,不得替 Integrator 处理语义冲突,也不得创建提交、推送或创建 PR。将审查报告仅返回 Supervisor;只能由 Supervisor 使用临时文件后原子替换落盘。
"""
20 changes: 18 additions & 2 deletions .codex/workflow/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,24 @@ python3 tools/agent_workflow.py transition .codex/workflow/runs/<task-id> <NEXT_
python3 tools/agent_workflow.py resume .codex/workflow/runs/<task-id>
```

三个命令都会先获取运行目录内 `.workflow.lock` 的非阻塞 `fcntl` 租约。该能力要求 Unix-like 系统和 Python 3.11+,是当前的 P2 平台边界。租约被其他 Supervisor 持有时,命令会立即失败,不会读取或改写账本;`resume` 因此可确认不存在另一份有效租约。除这个运行时锁文件外,`resume` 完全只读,输出当前状态、阻断原因、唯一恢复目标和唯一下一步。
默认不得生成或要求 `handoffs/` 阶段交接文档。只有维护者明确指出上下文超出并要求时,
才允许创建并引用该目录中的文件。

## 最小角色编排

默认仅启动 `Planner -> 单一 Implementer -> Integrator -> Verify-Reviewer` 四个角色,并严格顺序执行。
不得因 Android、iOS、Desktop、JS/Wasm 或测试平台自动创建、拆分或并发专项 Agent。
第二个 Implementer 仅可由 Planner 在任务契约中书面批准,且必须同时满足范围不重叠、验证独立、两个范围均不含 `webview-api`、`webview-extension-api`、API 基线、Gradle 设置、发布配置或跨平台契约;同一任务最多两个 Implementer。
即使例外获批,也必须全体 Implementer 完成后才进入 Integrator。

在获取 `.workflow.lock` 前,`transition` 会先校验目标状态与 `--stop-reason`、`--next-action` 的组合。
目标为 `PAUSED` 或 `BLOCKED` 时,两项必须同时为非空单行;其他目标状态不得传入任一项。
无效组合会在创建或获取锁前失败。通过该校验的 `transition`、`validate` 和 `resume` 会获取
运行目录内 `.workflow.lock` 的非阻塞 `fcntl` 租约。该能力要求 Unix-like 系统和 Python 3.11+,
是当前的 P2 平台边界。租约被其他 Supervisor 持有时,命令会立即失败,
不会读取或改写账本;
`resume` 因此可确认不存在另一份有效租约。除这个运行时锁文件外,`resume` 完全只读,
输出当前状态、阻断原因、唯一恢复目标和唯一下一步。

`validate` 检查状态字段、Git 可解析的基线/候选 SHA、任务契约、计划、完整事件链和审查证据。`transition` 仅接受状态机允许的下一状态:它先追加并 `fsync` 对应事件,再以同目录临时文件原子替换 `state.json`。如果事件追加失败,状态保持不变;如果替换在事件成功后中断,下一次 `validate` 会因事件末状态不一致而拒绝继续。

Expand All @@ -27,7 +44,6 @@ runs/<task-id>/
├── plan.json
├── events.jsonl # 首次迁移时创建
├── .workflow.lock # 运行时租约文件,不写入任务数据
├── handoffs/
├── candidate.sha # 生成候选后必需
├── review-report.md # REVIEWED 后必需
└── resume.md # 可选的人类可读恢复上下文
Expand Down
1 change: 1 addition & 0 deletions .codex/workflow/runs/MW-20260818-004/candidate.sha
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3ba4d6d41c327650ace3555aebc832cce1e71275
6 changes: 6 additions & 0 deletions .codex/workflow/runs/MW-20260818-004/events.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{"actor": "SUPERVISOR", "at": "2026-08-18T03:32:11.541598+00:00", "evidence": "task-contract.md", "from": "PLANNED", "summary": "状态迁移已验证", "to": "IMPLEMENTING"}
{"actor": "IMPLEMENTER", "at": "2026-08-18T03:36:45.485177+00:00", "evidence": "task-contract.md", "from": "IMPLEMENTING", "summary": "状态迁移已验证", "to": "READY_TO_INTEGRATE"}
{"actor": "INTEGRATOR", "at": "2026-08-18T03:39:49.116425+00:00", "evidence": "candidate.sha", "from": "READY_TO_INTEGRATE", "summary": "状态迁移已验证", "to": "VALIDATING"}
{"actor": "VERIFY_REVIEWER", "at": "2026-08-18T03:43:29.537655+00:00", "evidence": "review-report.md", "from": "VALIDATING", "summary": "状态迁移已验证", "to": "REVIEWED"}
{"actor": "SUPERVISOR", "at": "2026-08-18T03:43:29.681915+00:00", "evidence": "review-report.md", "from": "REVIEWED", "summary": "状态迁移已验证", "to": "COMMIT_READY"}
{"actor": "SUPERVISOR", "at": "2026-08-18T03:45:09.856090+00:00", "evidence": "review-report.md", "from": "COMMIT_READY", "summary": "状态迁移已验证", "to": "PR_READY"}
49 changes: 49 additions & 0 deletions .codex/workflow/runs/MW-20260818-004/plan.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{
"schemaVersion": 1,
"taskId": "MW-20260818-004",
"baselineSha": "8605c85e838507df677383bbf154ff6b665e21ea",
"tasks": [
{
"id": "planner-review",
"owner": "WORKFLOW_PLANNER",
"scope": ["read-only workflow governance review"],
"dependsOn": [],
"verification": ["contract completeness review"]
},
{
"id": "single-implementer-change",
"owner": "WORKFLOW_IMPLEMENTER",
"scope": [
"AGENTS.md",
"docs/agent-workflow.md",
"docs/agent-workflow-autonomous-handoff.md",
"docs/agent-workflow-task-template.md",
".codex/agents/workflow-*.toml",
".codex/workflow/README.md",
"tools/tests/test_agent_workflow.py"
],
"dependsOn": ["planner-review"],
"verification": ["focused Python workflow tests", "git diff --check"]
},
{
"id": "integration",
"owner": "WORKFLOW_INTEGRATOR",
"scope": ["authorized implementation diff only"],
"dependsOn": ["single-implementer-change"],
"verification": ["candidate commit", "git diff --check"]
},
{
"id": "fixed-candidate-review",
"owner": "WORKFLOW_VERIFY_REVIEWER",
"scope": ["fixed candidate governance and regression review"],
"dependsOn": ["integration"],
"verification": ["focused Python workflow tests", "fixed-SHA review"]
}
],
"acceptanceCriteria": [
"默认角色链路固定为 Planner、单一 Implementer、Integrator、Verify-Reviewer,顺序执行。",
"不得按 Android、iOS、Desktop、JS/Wasm 自动拆分 Agent。",
"只有 Planner 书面批准且范围、验证和敏感模块约束满足时,才允许第二个 Implementer;本任务不批准该例外。",
"协议和角色配置的约束具有静态回归覆盖。"
]
}
28 changes: 28 additions & 0 deletions .codex/workflow/runs/MW-20260818-004/review-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# MW-20260818-004 固定候选审查报告

候选 SHA:3ba4d6d41c327650ace3555aebc832cce1e71275
裁决:PASS

## 验证结果

- `git status --short`(审查前后):退出 `0`,均为空。
- `git rev-parse HEAD`:退出 `0`,与固定候选 SHA 一致。
- `PYTHONDONTWRITEBYTECODE=1 python3 -m unittest tools.tests.test_agent_workflow -v`:退出 `0`,48 项通过。
- `git diff 8605c85e838507df677383bbf154ff6b665e21ea...3ba4d6d41c327650ace3555aebc832cce1e71275 --check`:退出 `0`。
- 主工作区账本验证:`python3 tools/agent_workflow.py validate .codex/workflow/runs/MW-20260818-004` 退出 `0`。

## 范围与兼容性审查

候选恰好修改契约授权的 10 个治理文件,无产品模块、公共 API、API 基线、Gradle、发布配置或账本改动。
静态测试锁定四个永久角色、严格顺序、禁止平台专项 Agent、第二个 Implementer 的 Planner 书面例外和 Integrator 门禁。
任务模板与 Planner 配置的审批职责一致。

- 公共 API:不受影响。
- Android、iOS、Desktop、JS/Wasm:不受产品行为影响,未运行平台构建或运行时测试。
- JS 桥与安全默认值:不受影响,未放宽导航、Cookie、文件访问或下载权限。

## 风险

无 P0。无 P1。无 P2。

残余边界:规则由仓库协议、角色提示和静态测试约束,实际调度仍依赖 Supervisor 按任务契约执行;本任务契约已记录该风险。
20 changes: 20 additions & 0 deletions .codex/workflow/runs/MW-20260818-004/state.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"schemaVersion": 1,
"taskId": "MW-20260818-004",
"baselineSha": "8605c85e838507df677383bbf154ff6b665e21ea",
"status": "PR_READY",
"mode": "FULL",
"currentStage": "PR",
"attempts": {
"PLANNING": 1,
"IMPLEMENTING": 1,
"VALIDATING": 1,
"REVIEWING": 1
},
"candidateSha": "3ba4d6d41c327650ace3555aebc832cce1e71275",
"verdict": "PASS",
"nextAction": "由 Planner 审核最小角色编排契约",
"lastEventAt": "2026-08-18T03:45:09.856090+00:00",
"stopReason": null,
"reviewedCandidateSha": "3ba4d6d41c327650ace3555aebc832cce1e71275"
}
Loading
Loading