diff --git a/docs/harness/README.md b/docs/harness/README.md index 864739b6..54d4d489 100644 --- a/docs/harness/README.md +++ b/docs/harness/README.md @@ -9,7 +9,7 @@ | 场景 | 路径 | |------|------| -| 写 task / **下一棒双 Prompt** | `TEMPLATE-requirements`(**A:22** + **B:30**,人择一) | +| 写 task / **下一棒双 Prompt** | `TEMPLATE-requirements`(**A:22** + **B:30**,人择一) · **高复杂度** 预置 R0–R5 见 [`hats/10-requirements.md`](prompts/hats/10-requirements.md) §思考轮 | | 任务审核 22 | [`reviews/README.md`](reviews/README.md) → `TEMPLATE-task-audit` | | 执行 + 自检 | `TEMPLATE-execute` → `TEMPLATE-self-check` | | **三方复检** | `TEMPLATE-independent-reinspect` → [`../tasks/reinspect_results/`](../tasks/reinspect_results/README.md) | @@ -145,3 +145,4 @@ rsync -a docs/harness/prompts/templates/TEMPLATE-independent-reinspect-invoke.md | 2026-05-25 | v6:§2.1 taxonomy;**不**建 `domains/` | | 2026-05-25 | v7:**git mv** 完成(prompts 子目录 + invokes/reviews `by-task/`) | | 2026-06-08 | v8:§1 日常读序改 **链式常模** 为默认;`HANDOFF_SEMI_AUTO` 标考古 | +| 2026-06-11 | v9:§1 链 **10/22 思考轮** R0–R5 · 22 退回 10 | diff --git a/docs/harness/prompts/hats/10-requirements.md b/docs/harness/prompts/hats/10-requirements.md index 0cc4cbef..1c27e5da 100644 --- a/docs/harness/prompts/hats/10-requirements.md +++ b/docs/harness/prompts/hats/10-requirements.md @@ -46,6 +46,43 @@ - 验收与失败路径已 **可操作化**,或已输出 **阻塞清单**(缺哪些字段就无法开工)。 - 达到约定篇幅上限时输出 **摘要 + 待续项**。 +## 思考轮模板(10 帽 · 高复杂度 task) + +> **适用**:`orchestration` 含 Agent rethink、跨模块/跨仓、或 **`audit_profile: full` / `human_only`** 的 task。 +> **OSS fork 阶段 C**:工作区 PILOT §5.2 · cyning-harness `TASK_TEMPLATE_upstream_pr_v1.md`(**R0+R1–R5 硬预置**)。 +> **Ink 前后端**:复制 [`docs/tasks/templates/TASK_TEMPLATE.md`](../../../tasks/templates/TASK_TEMPLATE.md) **§思考轮次** 或本节结构进 task §4。 + +### 10 帽必须做什么 + +- task §4 **预置 R0(读 task)+ R1–R5 五个思考槽**(标题 + 回填区),**不得**折叠为「可选 R4/R5」或仅写 R1–R3。 +- 同步填 **`思考轮控制`** 表:`actual_last_round` · `early_stop` · `early_stop_reason` · `residual_risks`。 +- invoke `PROMPT_*_rethink_*` 轮数 **对齐** task §4 槽位。 + +### Agent 可裁量 · 须留痕 + +| 行为 | 要求 | +|------|------| +| **提前停止**(如 R3 已收敛) | `early_stop=yes` · **必填** reason · **必填** `residual_risks`(无则 `none`)· `actual_last_round` 指向最后完成轮 | +| **增加轮次**(R6+) | §4 末尾追加 `### R6 · …` + **`扩展理由`** | +| **未执行轮** | 回填区写 `(跳过 · 见思考轮控制)`;**禁止**留 `(待填)` 却宣称思考完成 | + +### 默认轮语义 + +| 轮 | 主题 | +|----|------| +| **R0** | 读 task / SPEC / 非范围 / 依赖 | +| **R1** | 代码事实(路径 · 行为 · 复现) | +| **R2** | 方案对比(≥2 方案 · 推荐 · 弃选理由) | +| **R3** | 边界 / 测试 / 回归面 | +| **R4** | 测试命令 · PR/关账策略 | +| **R5** | 图谱/契约增量 · 与验收对齐 | + +### 与 22 / 30 分界 + +- **10 不签发** `HG-AUDIT-R1`;思考落盘后交 **22 R1** 审查是否充分。 +- **22 不通过** → **「退回 10 帽」** + 回填清单 → **10 补思考** → **22 R+1**(此阶段 **禁止** 附 30 Prompt)。 +- **22 通过 + 维护者签** `HG-AUDIT-R1` → 30 方可开工(与 §下一棒 A/B 并存;**思考未闭合时推荐路径 A**)。 + ## 交接物 - 可粘贴进子仓 `task_*.md` 或 harness `docs/harness/tasks/active/` 的正文块;并注明建议 `test_strategy` 取值(`required` / `recommended` / `not_applicable` + `test_strategy_note`)。 @@ -94,6 +131,7 @@ | 2026-05-13 | v1.1:承接任务审核帽 `reviews` 回填与交接说明 | | 2026-05-14 | v1.2:链 [`templates/TEMPLATE-requirements-invoke.md`](templates/TEMPLATE-requirements-invoke.md);占位符未替换则 Agent 须追问 | | 2026-05-22 | v1.3:§下一棒 A/B — `(推荐)` 标题、推荐规则表、冲突优先级;链 §3.4 状态栏 | +| 2026-06-11 | v1.4:§思考轮模板 R0+R1–R5 · 提前停/增轮留痕 · 22 退回 10 | --- diff --git a/docs/harness/prompts/hats/22-task-audit.md b/docs/harness/prompts/hats/22-task-audit.md index f6709ee2..0cd45526 100644 --- a/docs/harness/prompts/hats/22-task-audit.md +++ b/docs/harness/prompts/hats/22-task-audit.md @@ -15,6 +15,11 @@ - **无阻塞** 时:使用「零阻塞」模板,写明 **已核对项** 与 **结论:可进入执行帽** 或 **维持 pending**。 - **有阻塞** 时:写 **阻塞项**、**建议回填位置**(task 小节标题)、**交给任务帽的清单**(逐条可勾选)。 - 若本轮有阻塞且已由 **任务帽** 完成回填:在 **新一轮** 审查文档中对比 **diff / 更新后的 task 片段**,写 **R2/R3…** 结论。 +- **思考轮审查**(task §4 含 R0–R5 或 **思考轮控制** 时 **必做**): + - 核对 `actual_last_round` 与各轮回填是否闭合(含 `(跳过 · 见思考轮控制)` 的合法性)。 + - **`early_stop=yes`**:审查 reason 是否充分;`residual_risks` 为 `none` 或已逐条落入 task §失败路径 / §验收标准。 + - **不通过** → 审查文单列 **「退回 10 帽」**(补哪几轮 · 缺什么事实/方案 · 未收敛风险);下一棒 **必须** 为 [`templates/TEMPLATE-requirements-invoke`](templates/TEMPLATE-requirements-invoke.md) + 本帽 **R+1**;**禁止**附 30 Prompt。 + - **通过** → 可写「思考轮审查:通过」;**仍不**代改 `HG-AUDIT-R1`(维护者签 task 表)。 - 在 **最终通过** 的审查文档中撰写 **「签收 / 关闭」** 节:声明 **本 task 可结束** 或 **须继续的条件**;此为 **任务正式结束点**(与 task 头部 `done` 对齐)。 - 按 **「交接物」**:**有下一棒** 时在对话与审查 md 输出 **「下一棒可复制 Prompt」**;**终轮签收、无下一棒** 时改输出 **「执行路线与 Commit 回溯」**(见 [`handoff/HANDOFF_CLOSE_TRACE.md`](handoff/HANDOFF_CLOSE_TRACE.md)),**省略** Prompt 小节。 @@ -101,7 +106,7 @@ ## 输出形状 1. **文件**:`task__audit_R<轮次>_YYYYMMDD.md`;相对路径为 **`docs/harness/reviews/`**(轮次规则见 [`../reviews/README.md`](../reviews/README.md))。 -2. **文内结构**(建议):**元信息** → **审查结论摘要** → **阻塞 / 非阻塞** → **需任务帽回填清单**(若有)→ **是否建议执行帽开工** → **签收 / 关闭** → **二选一收尾**:**「下一棒可复制 Prompt」**(`text` 围栏,有下一棒时)或 **「执行路线与 Commit 回溯」**(终轮无下一棒时,见 [`handoff/HANDOFF_CLOSE_TRACE.md`](handoff/HANDOFF_CLOSE_TRACE.md));与对话逐字/语义一致。 +2. **文内结构**(建议):**元信息** → **审查结论摘要** → **思考轮审查**(有 §4 时)→ **阻塞 / 非阻塞** → **需任务帽回填清单**或 **退回 10 帽清单**(若有)→ **是否建议执行帽开工** → **签收 / 关闭** → **二选一收尾**:**「下一棒可复制 Prompt」**(`text` 围栏,有下一棒时)或 **「执行路线与 Commit 回溯」**(终轮无下一棒时,见 [`handoff/HANDOFF_CLOSE_TRACE.md`](handoff/HANDOFF_CLOSE_TRACE.md));与对话逐字/语义一致。 ## 停止条件 @@ -129,6 +134,7 @@ | 2026-05-17 | v1.6:交接物链 [`handoff/HANDOFF_AUTO_COMMIT.md`](handoff/HANDOFF_AUTO_COMMIT.md) | | 2026-05-17 | v1.7:终轮无下一棒 → [`handoff/HANDOFF_CLOSE_TRACE.md`](handoff/HANDOFF_CLOSE_TRACE.md) 执行路线与 commit 回溯 | | 2026-05-30 | v1.8:OpenSpec×TDD 勾选项表(Loop R2 · SPEC §4.2 · 链 validate CLI) | +| 2026-06-11 | v1.9:思考轮审查 · 不通过退回 10 帽 · R+1 复审 | --- diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 47a073b2..b3bef928 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -15,7 +15,7 @@ **编码规范排期(§1.5)**: - **P3+P4(当前棒)**:[`active/task_standards_backend_p3_p4_l3_ruff_v1.md`](active/task_standards_backend_p3_p4_l3_ruff_v1.md) -- **Tech-debt Epic(模块拆分)**:[`active/task_standards_backend_api_modularization_manifest_v1.md`](active/task_standards_backend_api_modularization_manifest_v1.md) · **禁止** 单 task 改全 Python 服务目录 +- **Tech-debt Epic(模块拆分)**:[`done/task_standards_backend_api_modularization_manifest_v1.md`](done/task_standards_backend_api_modularization_manifest_v1.md) · **Epic CLOSE**(W1~W8 done · 2026-06-09) **Wiki 排期导航(L2 · 防孤岛)**:[`../coding_wiki/concepts/task-schedule-ink-backend.md`](../coding_wiki/concepts/task-schedule-ink-backend.md) — pointer 至 RECENT,**不**替代排期真值。 diff --git a/docs/tasks/RECENT_TASK_SCHEDULE.md b/docs/tasks/RECENT_TASK_SCHEDULE.md index 1aeba19f..62894c58 100644 --- a/docs/tasks/RECENT_TASK_SCHEDULE.md +++ b/docs/tasks/RECENT_TASK_SCHEDULE.md @@ -154,12 +154,13 @@ |------|------|------|------| | **P2 · L2** | [`done/task_standards_backend_l2_draft_v1.md`](done/task_standards_backend_l2_draft_v1.md) | **done** | R1 签收 · L2 active | | **P3+P4** | [`done/task_standards_backend_p3_p4_l3_ruff_v1.md`](done/task_standards_backend_p3_p4_l3_ruff_v1.md) | **done** | PR [#145](https://github.com/Cyning12/ai-ink-brain-api-python/pull/145) · `.mdc` + Ruff CI | -| **Tech-debt Epic** | [`active/task_standards_backend_api_modularization_manifest_v1.md`](active/task_standards_backend_api_modularization_manifest_v1.md) | **in_progress** | W1~W7 **done** · **当前棒 W8**(Intent 栈拆分) | +| **Tech-debt Epic** | [`done/task_standards_backend_api_modularization_manifest_v1.md`](done/task_standards_backend_api_modularization_manifest_v1.md) | **done** | **Epic CLOSE** · W1~W8 **done**(2026-06-09) | | **W1** | [`done/task_api_env_rag_env_consolidation_w1.md`](done/task_api_env_rag_env_consolidation_w1.md) | **done** | `rag_env` env 收敛 · index 零 `os.getenv` | | **W6** | [`done/task_api_agent_loop_split_w6.md`](done/task_api_agent_loop_split_w6.md) | **done** | PR [#153](https://github.com/Cyning12/ai-ink-brain-api-python/pull/153) · agent tool runner + persist | | **W7** | [`done/task_api_tools_registry_split_w7.md`](done/task_api_tools_registry_split_w7.md) | **done** | PR [#155](https://github.com/Cyning12/ai-ink-brain-api-python/pull/155) · tools RAG/Text2SQL 子模块 | +| **W8** | [`done/task_api_intent_stack_split_w8.md`](done/task_api_intent_stack_split_w8.md) | **done** | PR [#157](https://github.com/Cyning12/ai-ink-brain-api-python/pull/157) · intent rules + LLM 子模块 | -**执行顺序**:P3+P4 **done** → W1 **done** → W2~W7 **done** → **W8**(Intent 栈)。 +**执行顺序**:P3+P4 **done** → W1~W8 **done** · **Epic CLOSE**。 ### 1.3 semi_auto 退场双轨(**A+B done** · Epic CLOSE · 2026-06-08) diff --git a/docs/tasks/_views/done.md b/docs/tasks/_views/done.md index 28ab0e6a..4aed53c2 100644 --- a/docs/tasks/_views/done.md +++ b/docs/tasks/_views/done.md @@ -139,5 +139,7 @@ - `../done/task_api_env_rag_env_consolidation_w1.md`(2026-06-09 验收通过:Epic T1 W1 · `index.py` env 收敛至 `rag_env` · PR #146 · 50 `task_api_env_rag_env_consolidation_w1_reinspect_2026-06-09.md` · `CODING_BACKEND_L2@2026-06-09`) - `../done/task_api_agent_loop_split_w6.md`(2026-06-09 验收通过:Epic W6 · agent tool runner + persist 子模块 · PR #153 · `CODING_BACKEND_L2@2026-06-09`) - `../done/task_api_tools_registry_split_w7.md`(2026-06-09 验收通过:Epic W7 · tools RAG/Text2SQL 子模块 · PR #155 · `CODING_BACKEND_L2@2026-06-09`) +- `../done/task_api_intent_stack_split_w8.md`(2026-06-09 验收通过:Epic W8 · intent rules + LLM 子模块 · PR #157 · `CODING_BACKEND_L2@2026-06-09`) +- `../done/task_standards_backend_api_modularization_manifest_v1.md`(2026-06-09 Epic CLOSE:W1~W8 全 done · `CODING_BACKEND_L2@2026-06-09`) - `../done/task_standards_backend_p3_p4_l3_ruff_v1.md`(2026-06-09 验收通过:P3+P4 L3 `.mdc` + Ruff CI · PR #145 · `CODING_BACKEND_L2@2026-06-09`) diff --git a/docs/tasks/active/task_api_intent_stack_split_w8.md b/docs/tasks/done/task_api_intent_stack_split_w8.md similarity index 94% rename from docs/tasks/active/task_api_intent_stack_split_w8.md rename to docs/tasks/done/task_api_intent_stack_split_w8.md index dab9507d..089ad42d 100644 --- a/docs/tasks/active/task_api_intent_stack_split_w8.md +++ b/docs/tasks/done/task_api_intent_stack_split_w8.md @@ -7,7 +7,7 @@ # W8 · Intent 栈拆分 -> **状态**: active +> **状态**: done(PR [#157](https://github.com/Cyning12/ai-ink-brain-api-python/pull/157) · 2026-06-09) > **slug**: `api-intent-stack-split` > **git_branch**: `task/api-intent-w8` > **风险**: Medium diff --git a/docs/tasks/active/task_standards_backend_api_modularization_manifest_v1.md b/docs/tasks/done/task_standards_backend_api_modularization_manifest_v1.md similarity index 83% rename from docs/tasks/active/task_standards_backend_api_modularization_manifest_v1.md rename to docs/tasks/done/task_standards_backend_api_modularization_manifest_v1.md index 7977b20e..b1b6b9f5 100644 --- a/docs/tasks/active/task_standards_backend_api_modularization_manifest_v1.md +++ b/docs/tasks/done/task_standards_backend_api_modularization_manifest_v1.md @@ -1,6 +1,6 @@ # MANIFEST · 后端 Python 服务模块化 Tech-Debt Epic -> **状态**:active(Epic 母单 · **MANIFEST** · W1~W6 **done** · W7 当前棒) +> **状态**:`done` — **Epic CLOSE**(W1~W8 均 done · 2026-06-09) > **schedule_ref**:编码规范 Epic · §1.5 Tech-debt > **epic**:`standards-engineering` · 子主题 **`api-modularization`** > **前置**:L2 [`CODING_BACKEND_L2_v1_zh.md`](../../standards/CODING_BACKEND_L2_v1_zh.md) **active**(P-01 路由薄层 · B-01) @@ -31,10 +31,10 @@ L2 **P-01** 要求路由 **薄**(handler ~80 行软上限)、领域逻辑下 **完成态(Epic CLOSE 条件)**: -- [ ] 下表 **W1~W8** 子 task 均 **done**(或显式 **defer** 行 + 人签理由) -- [ ] 无子 task 在「非范围」外触及未列模块 -- [ ] `_tech_graph` / `_manifest` 与拆分后 import 路径一致 -- [ ] RECENT §1.5 更新为 **CLOSE** +- [x] 下表 **W1~W8** 子 task 均 **done**(或显式 **defer** 行 + 人签理由) +- [x] 无子 task 在「非范围」外触及未列模块 +- [x] `_tech_graph` / `_manifest` 与拆分后 import 路径一致 +- [x] RECENT §1.5 更新为 **CLOSE** --- @@ -58,13 +58,13 @@ L2 **P-01** 要求路由 **薄**(handler ~80 行软上限)、领域逻辑下 | ID | 主题 | 现状行数 | 目标(摘要) | 建议 slug | 分支建议 | 风险 | |----|------|----------|--------------|-----------|----------|------| | **W1** | `rag_env` 收敛 | `rag_env` 234 · `index` 顶散落 env | 新代码零散落 `os.getenv`;`index` 顶层常量迁入 `rag_env` helper | `api-env-rag-env-consolidation` | `task/api-env-rag-env-w1` | Low · **done** PR [#146](https://github.com/Cyning12/ai-ink-brain-api-python/pull/146) | -| **W2** | Legacy chat 路由下沉 | `index` 内 chat/retrieve 大块 | 抽 `api/routes/legacy_chat.py`(或 `api/legacy_chat/`);`index` 仅 register | `api-routes-legacy-chat-split` | `task/api-routes-legacy-w2` | Medium | -| **W3** | Admin ingest 路由下沉 | `index` admin/sync 段 | 抽 `api/routes/admin_ingest.py`;ingest 仍调 `ingest_pipeline` | `api-routes-admin-ingest-split` | `task/api-routes-admin-w3` | Medium | -| **W4** | Unified JSON 路径 | `unified_chat` JSON handler 段 | 抽 `api/unified/json_handler.py`(名可调整) | `api-unified-json-split` | `task/api-unified-json-w4` | High | -| **W5** | Unified SSE 路径 | `unified_chat` stream 段 | 抽 `api/unified/sse_handler.py`;契约 `_contract_manifest` 必对照 | `api-unified-sse-split` | `task/api-unified-sse-w5` | High | +| **W2** | Legacy chat 路由下沉 | `index` 内 chat/retrieve 大块 | 抽 `api/routes/legacy_chat.py`(或 `api/legacy_chat/`);`index` 仅 register | `api-routes-legacy-chat-split` | `task/api-routes-legacy-w2` | Medium · **done** PR [#149](https://github.com/Cyning12/ai-ink-brain-api-python/pull/149) | +| **W3** | Admin ingest 路由下沉 | `index` admin/sync 段 | 抽 `api/routes/admin_ingest.py`;ingest 仍调 `ingest_pipeline` | `api-routes-admin-ingest-split` | `task/api-routes-admin-w3` | Medium · **done** PR [#150](https://github.com/Cyning12/ai-ink-brain-api-python/pull/150) | +| **W4** | Unified JSON 路径 | `unified_chat` JSON handler 段 | 抽 `api/unified/json_handler.py`(名可调整) | `api-unified-json-split` | `task/api-unified-json-w4` | High · **done** PR [#151](https://github.com/Cyning12/ai-ink-brain-api-python/pull/151) | +| **W5** | Unified SSE 路径 | `unified_chat` stream 段 | 抽 `api/unified/sse_handler.py`;契约 `_contract_manifest` 必对照 | `api-unified-sse-split` | `task/api-unified-sse-w5` | High · **done** PR [#152](https://github.com/Cyning12/ai-ink-brain-api-python/pull/152) | | **W6** | Agent 循环 | `agent` ~1095 | 抽 tool 调度 / persist 子模块;`ChatBIAgent` 薄编排 | `api-agent-loop-split` | `task/api-agent-w6` | High · **done** PR [#153](https://github.com/Cyning12/ai-ink-brain-api-python/pull/153) | | **W7** | Tool 注册表 | `tools` ~958 | `text2sql_*` vs RAG tools 分文件;保留 `get_tool_registry()` 入口 | `api-tools-registry-split` | `task/api-tools-w7` | Medium · **done** PR [#155](https://github.com/Cyning12/ai-ink-brain-api-python/pull/155) | -| **W8** | Intent 栈 | `intent_agent` 746 + `intent_router` 346 | 表驱动与 LLM 路径分文件;不混改 Unified | `api-intent-stack-split` | `task/api-intent-w8` | Medium | +| **W8** | Intent 栈 | `intent_agent` 746 + `intent_router` 346 | 表驱动与 LLM 路径分文件;不混改 Unified | `api-intent-stack-split` | `task/api-intent-w8` | Medium · **done** PR [#157](https://github.com/Cyning12/ai-ink-brain-api-python/pull/157) | ### 显式 defer(Epic 外 · 需单独立项) @@ -112,10 +112,10 @@ L2 **P-01** 要求路由 **薄**(handler ~80 行软上限)、领域逻辑下 ## Epic 验收标准 -- [ ] W1~W8 均有对应 `task_*` 且状态 **done** 或 **defer(人签)** -- [ ] `index.py` 降至 **<400 行**(软上限 · 或 documented 例外) -- [ ] `unified_chat.py` 降至 **<800 行** 或拆为多文件 package(`api/unified/`) -- [ ] 无 open 子 task 违反 D1 +- [x] W1~W8 均有对应 `task_*` 且状态 **done** 或 **defer(人签)** +- [x] `index.py` 降至 **<400 行**(软上限 · 或 documented 例外)— **349 行** +- [x] `unified_chat.py` 降至 **<800 行** 或拆为多文件 package(`api/unified/`)— **477 行** +- [x] 无 open 子 task 违反 D1 - [ ] Coding Wiki 可选 synthesis:`api-modularization-ink-backend`(关账后) --- @@ -124,4 +124,5 @@ L2 **P-01** 要求路由 **薄**(handler ~80 行软上限)、领域逻辑下 | 日期 | 说明 | |------|------| +| 2026-06-09 | Epic **CLOSE** · W8 done PR #157 · W1~W8 全绿 | | 2026-06-09 | v1:Epic MANIFEST 初稿 · W1~W8 批次 | diff --git a/docs/tasks/templates/TASK_TEMPLATE.md b/docs/tasks/templates/TASK_TEMPLATE.md index 0055d8c1..19baeaea 100644 --- a/docs/tasks/templates/TASK_TEMPLATE.md +++ b/docs/tasks/templates/TASK_TEMPLATE.md @@ -121,10 +121,52 @@ | F1 | `fp-db-disconnect` | <例:Supabase 不可用> | `500 DATABASE_DISCONNECT` | 是 | 服务暂不可用提示 | `tests/test_*.py::test_*` | | F2 | `fp-invalid-json` | <例:参数非法> | `422` + 结构化 `detail` | 否 | 字段级错误说明 | — | -> **L2 Phase C(设计)**:`Scenario ID` / `F#` 与 `_test_manifest.json` `entries[].id` 对齐规则见 [`SPEC-Governance-L2-Anchor-Test-Manifest-v1.md`](../spec/governance/SPEC-Governance-L2-Anchor-Test-Manifest-v1.md) **§4.4**(实现期双向校验 **另 task**)。 +> **思考未闭合**:§4 仍有 `(待填)` 且无合法 **思考轮控制** → 22 **退回 10** · 30 **拒开工**(见 [`hats/10-requirements.md`](../harness/prompts/hats/10-requirements.md) §思考轮)。 --- +## 思考轮次(高复杂度 / orchestration 含 rethink 时 · 10 帽预置) + +> **何时启用**:`audit_profile: full`、触 `api/` 契约、跨仓、或 Agent rethink 链。简单 task **可删本节**。 +> **真值**:[`docs/harness/prompts/hats/10-requirements.md`](../harness/prompts/hats/10-requirements.md) §思考轮 · [`22-task-audit.md`](../harness/prompts/hats/22-task-audit.md)(22 可 **退回 10**)。 + +### 思考轮控制(Agent 填 · 22 审) + +| 字段 | 值 | +|------|-----| +| **actual_last_round** | `R5` / `R3` / … | +| **early_stop** | `no` / `yes` | +| **early_stop_reason** | (`early_stop=yes` **必填**) | +| **residual_risks** | `none` 或逐条(**必填**) | + +### R0 · 读 task / SPEC / 非范围 + +**回填区:** `(待填)` + +### R1 · 代码事实 + +**回填区:** `(待填)` + +### R2 · 方案对比 + +**回填区:** `(待填)` + +### R3 · 边界 / 测试 / failure_paths + +**回填区:** `(待填)` + +### R4 · pytest / PR 策略 + +**回填区:** `(待填)` + +### R5 · 图谱/契约增量 + 关账判断 + +**回填区:** `(待填)` + +--- + +> **L2 Phase C(设计)**:`Scenario ID` / `F#` 与 `_test_manifest.json` `entries[].id` 对齐规则见 [`SPEC-Governance-L2-Anchor-Test-Manifest-v1.md`](../spec/governance/SPEC-Governance-L2-Anchor-Test-Manifest-v1.md) **§4.4**(实现期双向校验 **另 task**)。 + ## 验收标准 - [ ] <验收项 1>