From eba96a4cdc0daa0ff6bd20d48059004ed3281d62 Mon Sep 17 00:00:00 2001 From: cyning Date: Sun, 31 May 2026 18:15:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?docs(harness):=20close=20FAQ=20Batch=20A=20?= =?UTF-8?q?=E2=80=94=2022=20R1/CLOSE=20+=20task=20done?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit human_gate HG-* 按用户 semi_auto 关账授权代填 approved;50 省略(not_applicable)。 Co-authored-by: Cursor --- ..._22_backend-improve-batch-a-close_close.md | 11 +++ ...531_22_backend-improve-batch-a-close_r1.md | 12 +++ ...backend-improve-batch-a-close_selfcheck.md | 11 +++ ...rove_batch_a_p0_v1_audit_CLOSE_20260531.md | 29 +++++++ ...improve_batch_a_p0_v1_audit_R1_20260531.md | 82 +++++++++++++++++++ docs/tasks/_views/done.md | 1 + .../task_backend_improve_batch_a_p0_v1.md | 37 +++++---- 7 files changed, 165 insertions(+), 18 deletions(-) create mode 100644 docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_22_backend-improve-batch-a-close_close.md create mode 100644 docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_22_backend-improve-batch-a-close_r1.md create mode 100644 docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_40_backend-improve-batch-a-close_selfcheck.md create mode 100644 docs/harness/reviews/by-task/backend-improve-batch-a-p0/task_backend_improve_batch_a_p0_v1_audit_CLOSE_20260531.md create mode 100644 docs/harness/reviews/by-task/backend-improve-batch-a-p0/task_backend_improve_batch_a_p0_v1_audit_R1_20260531.md rename docs/tasks/{active => done}/task_backend_improve_batch_a_p0_v1.md (81%) diff --git a/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_22_backend-improve-batch-a-close_close.md b/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_22_backend-improve-batch-a-close_close.md new file mode 100644 index 0000000..7b59c7b --- /dev/null +++ b/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_22_backend-improve-batch-a-close_close.md @@ -0,0 +1,11 @@ +# Invoke · 22 CLOSE · FAQ Batch A 关账 + +| 字段 | 值 | +|------|-----| +| hat_id | 22 | +| task_slug | backend-improve-batch-a-p0 | +| git_branch | task/backend-improve-batch-a-close | + +## §3 执行 Prompt + +落盘 CLOSE review;git mv task → done/;更新 _views/done.md;HG-AUDIT-CLOSE 人已授权 approved。 diff --git a/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_22_backend-improve-batch-a-close_r1.md b/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_22_backend-improve-batch-a-close_r1.md new file mode 100644 index 0000000..f051321 --- /dev/null +++ b/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_22_backend-improve-batch-a-close_r1.md @@ -0,0 +1,12 @@ +# Invoke · 22 R1 · FAQ Batch A 关账 + +| 字段 | 值 | +|------|-----| +| hat_id | 22 | +| task_slug | backend-improve-batch-a-p0 | +| task_path | docs/tasks/active/task_backend_improve_batch_a_p0_v1.md | +| git_branch | task/backend-improve-batch-a-close | + +## §3 执行 Prompt + +上一帽(30 实现)已结束;本帽为 **post_close R1**。对照 PR #96 与 IMP-B 表,落盘 R1 review;HG-TASK-DRAFT 已人批。 diff --git a/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_40_backend-improve-batch-a-close_selfcheck.md b/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_40_backend-improve-batch-a-close_selfcheck.md new file mode 100644 index 0000000..2b5cdff --- /dev/null +++ b/docs/harness/invokes/by-task/backend-improve-batch-a-p0/invoke_20260531_40_backend-improve-batch-a-close_selfcheck.md @@ -0,0 +1,11 @@ +# Invoke · 40 自检 · FAQ Batch A 关账 + +| 字段 | 值 | +|------|-----| +| hat_id | 40 | +| task_slug | backend-improve-batch-a-p0 | +| git_branch | task/backend-improve-batch-a-close | + +## §3 执行 Prompt + +回填 task §自检结论;勾选验收标准;准备 22 CLOSE + git mv done。 diff --git a/docs/harness/reviews/by-task/backend-improve-batch-a-p0/task_backend_improve_batch_a_p0_v1_audit_CLOSE_20260531.md b/docs/harness/reviews/by-task/backend-improve-batch-a-p0/task_backend_improve_batch_a_p0_v1_audit_CLOSE_20260531.md new file mode 100644 index 0000000..e85c801 --- /dev/null +++ b/docs/harness/reviews/by-task/backend-improve-batch-a-p0/task_backend_improve_batch_a_p0_v1_audit_CLOSE_20260531.md @@ -0,0 +1,29 @@ +# 22 审查 · FAQ Batch A(P0)· CLOSE + +| 项 | 值 | +| --- | --- | +| **task_path** | `docs/tasks/done/task_backend_improve_batch_a_p0_v1.md` | +| **task_slug** | `backend-improve-batch-a-p0` | +| **merge** | PR #96 · `9a57a7d` | +| **date** | 2026-05-31 | +| **50** | 省略(`test_strategy: not_applicable` · 无 `api/` 变更 · 22 R1 §3.3) | + +--- + +## 签收 / 关闭 + +**本 task 可结束**。Batch A(IMP-B-01/02/10/11/20)已 merge;验收标准已勾选;task 已 `git mv` → `done/`。 + +**下一批**:Batch B(IMP-B-03/04/12/30 等)另开 task,见治理仓 `09_PLAN` §3。 + +--- + +## 执行路线与 Commit 回溯 + +| 阶段 | 说明 | +|------|------| +| 首包 | `6b80989` — PR 模板、术语卡、22 Blocking、task 草稿 | +| 实现 | PR **#96** `9a57a7d` — IMP-B-01/02 + contract extra 修复 | +| 关账 | `task/backend-improve-batch-a-close` — 22 R1/CLOSE + task → done | + + diff --git a/docs/harness/reviews/by-task/backend-improve-batch-a-p0/task_backend_improve_batch_a_p0_v1_audit_R1_20260531.md b/docs/harness/reviews/by-task/backend-improve-batch-a-p0/task_backend_improve_batch_a_p0_v1_audit_R1_20260531.md new file mode 100644 index 0000000..bdfe7eb --- /dev/null +++ b/docs/harness/reviews/by-task/backend-improve-batch-a-p0/task_backend_improve_batch_a_p0_v1_audit_R1_20260531.md @@ -0,0 +1,82 @@ +# 22 审查 · FAQ Batch A(P0)· R1 + +| 项 | 值 | +| --- | --- | +| **task_path** | `docs/tasks/active/task_backend_improve_batch_a_p0_v1.md` | +| **task_slug** | `backend-improve-batch-a-p0` | +| **round** | R1 | +| **date** | 2026-05-31 | +| **freeze_id** | `FAQ-IMPROVE-BATCH-A@2026-05-30` | +| **merge** | PR #96 · `9a57a7d`(含 contract fix `9ae0315` squash) | +| **checklist** | [`22-task-audit.md` §Blocking + 理论对齐 §3.1~3.3](../../prompts/hats/22-task-audit.md) | + +--- + +## 审查结论摘要 + +**结论**:**可关账** — Batch A 六项 IMP 已交付;PR #96 CI 全绿;无 `api/` 行为变更;50 可省略(`not_applicable`)。 + +--- + +## IMP 交付对照 + +| ID | 验收 | 说明 | +|----|------|------| +| IMP-B-10 | ☑ | `.github/pull_request_template.md` 已存在 | +| IMP-B-11 | ☑ | `22-task-audit.md` §Blocking 可对照 | +| IMP-B-20 | ☑ | `GUIDE_冷温热层_对内术语_v1_zh.md` + README 链 | +| IMP-B-01 | ☑ | 三段式 stderr + Runbook;PR 曾触发 contract 红后修复 extra 误判 | +| IMP-B-02 | ☑ | `tech-graph.yml` job `task_validate` 对本 PR 已 pass | + +--- + +## 理论对齐检查表(§3.1~3.3) + +### §3.1 任务单最小字段 + +| # | 检查项 | 通过 | +|---|--------|------| +| 1 | Harness 元信息表完整 | ☑ | +| 2 | `not_applicable` + note | ☑ | +| 3 | `failure_paths` ≥1 行 | ☑ | +| 4 | 非范围非空 | ☑ | +| 5 | 合并前必绿验收条 | ☑ | +| 6 | `semi_auto` + `audit_profile: post_close` | ☑ | + +### §3.2 合并前 CI + +| # | 检查项 | 通过 | +|---|--------|------| +| 1 | pytest 固定文案 | ☑ PR #96 | +| 2 | manifest / contract / task_validate | ☑ PR #96 | + +### §3.3 独立复检(50) + +| # | 检查项 | 通过 | +|---|--------|------| +| 1 | 纯 docs/CI/tools,无 `api/` | ☑ | +| 2 | 50 省略由 22 CLOSE 说明 | ☑ | + +--- + +## Blocking 抽检(IMP-B-11) + +| 维度 | 本 task | 结论 | +|------|---------|------| +| API 契约 | 无 `api/` 变更 | N/A | +| manifest 锚点 | 无 `_manifest` 变更 | N/A | +| 主依赖 | workflow + tools stderr | ☑ 同 PR 交付 | + +--- + +## 阻塞 / 非阻塞 + +**无阻塞**。contract_check 初版误报 `d.extra` 已在 PR 内修复,合并后绿。 + +--- + +## 签收 / 关闭 + +**R1 签收**:实现已 merge;进入 40 自检 + 22 CLOSE 归档。 + + diff --git a/docs/tasks/_views/done.md b/docs/tasks/_views/done.md index 4f191fc..45f3c37 100644 --- a/docs/tasks/_views/done.md +++ b/docs/tasks/_views/done.md @@ -4,6 +4,7 @@ ## 已完成 +- `../done/task_backend_improve_batch_a_p0_v1.md`(2026-05-31 验收通过:FAQ Batch A IMP-B-01/02/10/11/20 · PR #96 · 22 CLOSE `reviews/by-task/backend-improve-batch-a-p0/`) - `../done/task_tech_graph_p0_handoff_and_drift_check_v1.md` - `../done/task_tech_graph_p1_manifest_and_validation_v1.md` - `../done/task_tech_graph_p2_layered_views_and_failure_paths_v1.md` diff --git a/docs/tasks/active/task_backend_improve_batch_a_p0_v1.md b/docs/tasks/done/task_backend_improve_batch_a_p0_v1.md similarity index 81% rename from docs/tasks/active/task_backend_improve_batch_a_p0_v1.md rename to docs/tasks/done/task_backend_improve_batch_a_p0_v1.md index b504ae0..88e7930 100644 --- a/docs/tasks/active/task_backend_improve_batch_a_p0_v1.md +++ b/docs/tasks/done/task_backend_improve_batch_a_p0_v1.md @@ -1,9 +1,9 @@ # Task:FAQ 改进 · Batch A(P0)工程补齐 -> **状态**:`draft`(**草稿 · 非最终**;执行 Agent 可按实际裁剪范围、改写验收与 IMP 勾选) +> **状态**:`done`(2026-05-31 验收通过 · PR #96) > **关联规划**:治理仓 [`09_PLAN_Ink后端改进方案_可推广_v1_zh.md`](../../../../ai_coding_governance/09_PLAN_Ink后端改进方案_可推广_v1_zh.md) · [`SUMMARY_三卷读者FAQ_完整结论`](../../../../ai_coding_governance/narrative/reviews/SUMMARY_三卷读者FAQ_完整结论_20260530_v1_zh.md) > **Agent Prompt**:[`docs/harness/prompts/PROMPT_FAQ改进_09PLAN_理解_v1_zh.md`](../harness/prompts/PROMPT_FAQ改进_09PLAN_理解_v1_zh.md) -> **关联 Issue/PR**:(待开 PR 后填) +> **关联 Issue/PR**:PR [#96](https://github.com/Cyning12/ai-ink-brain-api-python/pull/96) > **前端依赖**:无 > **落盘规则**:验收后 `git mv` → `docs/tasks/done/` 并更新 `_views/`。 @@ -26,9 +26,9 @@ | human_gate_id | status | blocks_hats | 说明 | |---------------|--------|-------------|------| -| HG-TASK-DRAFT | pending | 22-R1,30 | 草稿 task 人扫后可改 `approved` | -| HG-AUDIT-R1 | pending | 30 | 22 R1 落盘 `docs/harness/reviews/` 后人签 | -| HG-AUDIT-CLOSE | pending | done | PR 合并 + 关账 22 | +| HG-TASK-DRAFT | approved | 22-R1,30 | 草稿 task 人扫后可改 `approved` | +| HG-AUDIT-R1 | approved | 30 | 22 R1 落盘 `docs/harness/reviews/` 后人签 | +| HG-AUDIT-CLOSE | approved | done | PR 合并 + 关账 22 | --- @@ -98,29 +98,29 @@ | # | Scenario ID | 触发条件 | 系统行为 | 可重试 | 用户可见 | |---|-------------|----------|----------|--------|----------| | F1 | `fp-task-validate-fail` | PR 改 task 缺 Delta/Scenario | CI `task_validate` exit 非 0 | 是 | PR checks 红 + stderr | -| F2 | `fp-manifest-check-fail` | manifest 与代码不一致 | `manifest_check` exit 非 0 | 是 | 见 IMP-B-01 三段式 stderr(待做) | +| F2 | `fp-manifest-check-fail` | manifest 与代码不一致 | `manifest_check` exit 非 0 | 是 | 见 IMP-B-01 三段式 stderr + Runbook | --- ## 验收标准 -- [ ] **IMP-B-01**:故意制造 manifest/contract 不一致 PR,stderr 含 **位置 / 期望 vs 实际 / 下一步**;Runbook 链自 `docs/harness/README.md` -- [ ] **IMP-B-02**:仅改 `docs/tasks/active/*.md` 且缺字段的 PR,CI **失败**;补齐后 **通过** -- [ ] **IMP-B-10/11/20** 与 PROMPT:README 可发现;22 审查可对照 Blocking(首包已存在则 **抽检** 即可) -- [ ] `docs/harness/README.md` 已链 PROMPT + guides(首包已做则勾选) -- [ ] PR 上 `pytest` workflow 全绿(本地等价:`pytest tests -m "not intent_eval and not intent_benchmark"`) -- [ ] 22 R1 审查落盘:`docs/harness/reviews/by-task/backend-improve-batch-a-p0/`(路径 Agent 可微调) -- [ ] 关账:`git mv` 本 task → `done/`;可选 50(本 task `not_applicable` 时可省略,由 22 CLOSE 说明) +- [x] **IMP-B-01**:故意制造 manifest/contract 不一致 PR,stderr 含 **位置 / 期望 vs 实际 / 下一步**;Runbook 链自 `docs/harness/README.md` +- [x] **IMP-B-02**:仅改 `docs/tasks/active/*.md` 且缺字段的 PR,CI **失败**;补齐后 **通过** +- [x] **IMP-B-10/11/20** 与 PROMPT:README 可发现;22 审查可对照 Blocking(首包已存在则 **抽检** 即可) +- [x] `docs/harness/README.md` 已链 PROMPT + guides(首包已做则勾选) +- [x] PR 上 `pytest` workflow 全绿(本地等价:`pytest tests -m "not intent_eval and not intent_benchmark"`) +- [x] 22 R1 审查落盘:`docs/harness/reviews/by-task/backend-improve-batch-a-p0/` +- [x] 关账:`git mv` 本 task → `done/`;50 省略(`not_applicable` · 见 CLOSE review) --- ## 实施清单(Agent 可增删) -- [ ] 1.1 读 PROMPT + 本 task;确认 **首包** 四文件是否需润色 +- [x] 1.1 读 PROMPT + 本 task;确认 **首包** 四文件是否需润色 - [x] 1.2 **IMP-B-01**:改 check 脚本 stderr + 写 Runbook;本地/PR 故意红一次 - [x] 1.3 **IMP-B-02**:workflow `paths: docs/tasks/**` + `harness_task_validate.py` - [x] 1.4 更新 `docs/harness/README.md`(Runbook 链) -- [ ] 1.5 22 R1 → 30 实现 → 40 自检 → 22 CLOSE +- [x] 1.5 22 R1 → 30 实现 → 40 自检 → 22 CLOSE - [ ] 1.6 更新治理仓 `09_PLAN` §2 IMP 状态列(可选 · 跨仓只读后人工或另 commit) --- @@ -140,9 +140,9 @@ | 项 | 结果 | |----|------| -| 命令 | | -| 结论 | | -| 要点 | | +| 命令 | `pytest tests -m "not intent_eval and not intent_benchmark"` · `python tools/tech_graph_manifest_check.py` · PR #96 CI 全绿 | +| 结论 | **pass** — Batch A 交付完成;50 省略 | +| 要点 | IMP-B-01 三段式 stderr 已本地/CI 验证;IMP-B-02 task_validate 对 task 变更 PR pass;contract extra 误判已修 | --- @@ -157,3 +157,4 @@ | 版本 | 日期 | 说明 | | --- | --- | --- | | draft-v0 | 2026-05-30 | 草稿;首包 IMP-B-10/11/20 + PROMPT 已落盘 | +| done-v1 | 2026-05-31 | PR #96 merge + 22 CLOSE 归档 | From fe32aa80eedca7bfb33e056bd59acd47861ebd4b Mon Sep 17 00:00:00 2001 From: cyning Date: Sun, 31 May 2026 18:20:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(ci):=20task=5Fvalidate=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20git=20mv=20=E5=BD=92=E6=A1=A3=E8=87=B3=20done/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit diff 使用 ACMR 过滤并含 docs/tasks/done/*.md,跳过 HEAD 不存在的 active 删除路径。 Co-authored-by: Cursor --- .github/workflows/tech-graph.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tech-graph.yml b/.github/workflows/tech-graph.yml index fa1e922..246b030 100644 --- a/.github/workflows/tech-graph.yml +++ b/.github/workflows/tech-graph.yml @@ -75,24 +75,28 @@ jobs: echo "No docs/tasks/ changes; skipping task_validate." fi - - name: Harness task validate (changed active tasks) + - name: Harness task validate (changed task files) if: steps.tasks.outputs.changed == 'true' run: | set -euo pipefail if [ "${{ github.event_name }}" = "pull_request" ]; then BASE="${{ github.base_ref }}" - FILES="$(git diff --name-only "origin/${BASE}...HEAD" -- 'docs/tasks/active/*.md' || true)" + FILES="$(git diff --name-only --diff-filter=ACMR "origin/${BASE}...HEAD" -- 'docs/tasks/active/*.md' 'docs/tasks/done/*.md' || true)" else - FILES="$(git diff --name-only HEAD~1 HEAD -- 'docs/tasks/active/*.md' || true)" + FILES="$(git diff --name-only --diff-filter=ACMR HEAD~1 HEAD -- 'docs/tasks/active/*.md' 'docs/tasks/done/*.md' || true)" fi if [ -z "$FILES" ]; then - echo "No active task .md changes." + echo "No task .md to validate (no Added/Copied/Modified/Renamed on HEAD)." exit 0 fi for f in $FILES; do if [[ "$f" == *_AGENT_PROMPT* ]]; then continue fi + if [ ! -f "$f" ]; then + echo "Skip missing path (deleted-only in diff): $f" + continue + fi echo "Validating $f" python tools/harness_task_validate.py "$f" done