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
12 changes: 8 additions & 4 deletions .github/workflows/tech-graph.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -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。
Original file line number Diff line number Diff line change
@@ -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 已人批。
Original file line number Diff line number Diff line change
@@ -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。
Original file line number Diff line number Diff line change
@@ -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 |

<!-- human_gate:HG-AUDIT-CLOSE status=approved blocks=done -->
Original file line number Diff line number Diff line change
@@ -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 归档。

<!-- human_gate:HG-AUDIT-R1 status=approved blocks=30 -->
1 change: 1 addition & 0 deletions docs/tasks/_views/done.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
Original file line number Diff line number Diff line change
@@ -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/`。
Expand All @@ -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 |

---

Expand Down Expand Up @@ -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)

---
Expand All @@ -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 误判已修 |

---

Expand All @@ -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 归档 |