docs(blueprint/intent-catalog): IC4 跨客户端纸面编译通过(Codex),按其反馈修订指南七处
Codex 照指南对 INT-02 纸面编译(只读、未粘贴)的确认卡原文如下: [INT-02@1.0#8392d18] 目标确认卡 项目: dev-manager-tauri | 分支/worktree: feat/intent-catalog @ E:\code-project\dev-manager-tauri-wt-intent | HEAD:216a056章意图: 人给出意图或模糊轮廓,agent 编译出可判定的 /goal:定型章编交付终点,探索章编每轮试验终点,人粘贴即确认 | 不做: 炼境不编译 goal、不判定完成;目录不存状态与进度 形态: 定型 纳入卡: IC6([gate 脚本] node .claude/hooks/intent-gate.cjs --self-test → exit 0 且输出 self-test ok,内置 6 类坏样例各恰好 1 条警告;node .claude/hooks/intent-gate.cjs → exit 0、真实目录 0 警告;INTENT_CATALOG=/nonexistent → 无输出、exit 0)、IC7([gate 脚本] --self-test 夹具的 --impact/--report/--pending 报 stale、orphan、low_confidence、divergence、status_source、缺终验、缺 Feature-Confirmed;全部 exit 0,运行前后 sha256sum 不变)、IC8([YAML 解析] lefthook.yml 可解析且 intent-gate.run 以 || true 结尾;[cargo test] cargo test onboarding → 0 failed;[CLI] AGENTS.md hunk 均在托管块前;grep → 0;临时 worktree 提交输出 1 条警告且成功,验证后移除)、IC9([cargo test] cargo test parse_module_md_ignores_intent_lines → 1 passed;全量 cargo test 无 FAILED)、IC10([gate 脚本] 0 警告;书签三行有效、coordination 指向书签、提案附 --report 与 base blob、提交带 Feature-Confirmed: true) 终点(合取): 1) IC6 的 self-test、真实目录检查和不存在目录降级均符合预期。 2) IC7 的夹具报告覆盖 stale、orphan、low_confidence、divergence、status_source、缺终验及目录提交审计,且全程不改 catalog/module 文件。 3) IC8 的 lefthook、Rust onboarding、AGENTS.md 位置、术语及临时 worktree 警告提交检查通过。 4) IC9 的定向与全量 Rust 测试通过。 5) IC10 的门控、书签、coordination 指向、提案证据及提交 trailer 检查通过。 6) IC6–IC10 均为 ✅,且收口提交已写 Goal-Receipt。 终验待办: IC10:用户确认书签切换。 停止找人: 出现 human_verify;需写运行中的数据库;需删除文件、数据或分支;需变更凭据或机器状态;工作超出 IC6–IC10 或 INT-02;需修改目录;出现 stale 或 orphan;同一问题失败 3 次。 能力入口: node .claude/hooks/intent-gate.cjs(IC6 落地后);cargo test onboarding;cargo test parse_module_md_ignores_intent_lines;cargo test;Git、YAML 解析与临时 worktree。 没验什么: 本次仅纸面编译,未执行尚未实现的 intent-gate,未运行 cargo test 或 lefthook,未创建/删除临时 worktree,未确认 P8 收口及各依赖卡实际状态,也未进行用户书签终验。 作废: 分支变化或 catalog blob ≠8392d18核对(主会话):9 个字段齐全;标签 blob8392d18= HEAD:.blueprint/catalog.md;5 条终点可追溯到 IC6–IC10 的 agent_verify;按当时的黑名单(按方针|符合设计|设计已完成|基本完成)命中 0。Codex 的 /goal 文本逐条写了「命令 → 预期输出」,但上面确认卡的终点 1 被改写成「均符合预期」,两者写法不一致,这是本次发现之一。 指南修订(docs/ai-context/intent-catalog-guide.md): - 无 Bash 环境(Codex 沙箱报 E_ACCESS_DENIED)允许用语义等价命令,并在确认卡注明 - 检查一律逐行解析(整文件正则会跨行误报悬空) - 只读演练不写盘:第 10 条改为管道检查 - 第 3 步区分机器检查(必须通过)和人工核对(结果写进确认卡) - 第 4 步检查 depends,确认卡新增「前置」行;有未满足的前置时只能纸面编译 - 体量改量提交里的 blob(git cat-file -s),工作区 CRLF 会让 wc -c 多算 34 字节 - 确认卡与 /goal 的终点写法必须一致;黑名单加「符合预期」 模块:IC4 ✅(附结果记录)、下一步 IC5;manifest 进度 31%。 Compiled-By: Codex Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
216a056ae1
commit
50a8bf2f8c
@ -529,7 +529,7 @@ modules:
|
||||
name: 意图目录
|
||||
area: backend
|
||||
status: in_progress
|
||||
progress: 23
|
||||
progress: 31
|
||||
updated: 2026-10-04
|
||||
note: "两层模型(人持有的意图目录 .blueprint/catalog.md + 蓝图正文),书装意图、指向事实;卡侧 intent 钉版,agent 编译可判定 /goal,确认卡兼作最小任务简报,回执写进提交。IC1 设计已确认(最小文件优先方案);IC2–IC4 只新增文档、可与 P8 并行,门控与接线等 P8 收口后做,IC13 按实测数据决定去留。"
|
||||
position: [4000, 950]
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# 意图目录(intent-catalog)
|
||||
|
||||
> status: in_progress | created: 2026-10-04 | 设计:docs/tasks/2026-10-04-intent-catalog-design.md(IC1 ✅,用户 2026-10-04 确认)| 指南:docs/ai-context/intent-catalog-guide.md(IC2 ✅)| 目录:.blueprint/catalog.md 1.0(IC3 ✅)| 下一步:IC4(跨 agent 纸面编译)
|
||||
> status: in_progress | created: 2026-10-04 | 设计:docs/tasks/2026-10-04-intent-catalog-design.md(IC1 ✅,用户 2026-10-04 确认)| 指南:docs/ai-context/intent-catalog-guide.md(IC2 ✅)| 目录:.blueprint/catalog.md 1.0(IC3 ✅)| 下一步:IC5(P8 收口后首次真实 /goal)
|
||||
> 来源:2026-10-03~04 与用户讨论(/goal 与 Loop Engineering 操作手册、目录/正文模型、承重墙),以及侦察工作流 wf_6dc3756a-b72 的重叠与冲突扫描。
|
||||
|
||||
## 概述
|
||||
@ -117,12 +117,13 @@ agent 开发子项目时躲不掉的现象。每面墙都要回答四个问题
|
||||
- depends: IC2
|
||||
- acceptance: "agent_verify: [CLI] grep -c 'catalog_version: 1.0' → 1;grep -cE '^## INT-[0-9]{2} ' 介于 2–4;wc -l ≤200 且 wc -c ≤8192;grep -cE '^- (status|progress|doc|files|acceptance|model):' → 0;指南中的 path 指针检查 → 0 悬空;cat .blueprint/modules/*.md | grep -c '^### ' 前后相等。human_verify: 用户逐章确认意图与不做(1.0 为大版本,人定稿),提交带 Feature-Confirmed: true。"
|
||||
|
||||
### 🔵 IC4 — 跨 agent 纸面编译:Codex 或 DSH 按指南对书签章编译确认卡(不粘贴)
|
||||
- status: in_progress
|
||||
### ✅ IC4 — 跨 agent 纸面编译:Codex 或 DSH 按指南对书签章编译确认卡(不粘贴)
|
||||
- status: done
|
||||
- complexity: S
|
||||
- files: .blueprint/modules/intent-catalog.md
|
||||
- depends: IC3
|
||||
- notes: 2026-10-04 报备改断言:目标章由「书签章」改为指定 INT-02。理由:书签所指的 INT-01(P8)卡在统筹会话的 agent-client-parity.md 中,且几乎全为 ✅,纸面编译无测试价值;INT-02 挂有 IC6–IC10 五张待做卡,纸面编译即 IC5 的预演。
|
||||
- result: 2026-10-04 Codex 纸面编译通过:9 个字段齐全;标签 blob 8392d18 等于目录 blob;5 条终点可追溯到 IC6–IC10 的 agent_verify;按当时的黑名单命中 0。Codex 环境起不了 Bash,改用语义等价的 PowerShell 执行;它报告的 5 处指南不足和主会话核对时发现的 2 处(字节数量法与平台有关;确认卡终点被改写成「均符合预期」,与 /goal 文本写法不一致)已修进指南。按新黑名单,该卡第 1 条终点会命中「符合预期」,这正是本次的发现。
|
||||
- acceptance: "agent_verify: [CLI] git log -1 --grep='IC4' --format=%B → 含 项目、分支/worktree、HEAD、纳入卡、终点、终验待办、停止找人、没验什么、作废 9 字段与 Compiled-By: <非 Claude 客户端>;标签 blob 等于该提交中 .blueprint/catalog.md 的短 blob;每条终点可在来源卡 agent_verify 原文找到;过程词黑名单 grep → 0。"
|
||||
|
||||
### 📋 IC5 — 首次真实 /goal:为 Phase 4 的卡编译 → 人粘贴 → 收口回执
|
||||
|
||||
@ -170,14 +170,20 @@ agent 不得自行延长预算。
|
||||
- 要求 `git status --porcelain -- .blueprint/catalog.md` 输出为空:目录有未提交改动时不编译。
|
||||
- 取 catalog blob:`git rev-parse --short HEAD:.blueprint/catalog.md`。
|
||||
2. **读书签**:书签指向当前章(P8 期间指向 coordination §0 的终点)。读该章的导语和 rev。
|
||||
3. **校验**:跑「离线检查」一节的全部命令(Phase 4 后改为 `node .claude/hooks/intent-gate.cjs --report INT-NN --impact`)。只要出现悬空指针、stale 或 orphan、防膨胀超限,就先修或先提案,不往下编译。
|
||||
3. **校验**:跑「离线检查」一节的命令(Phase 4 后改为 `node .claude/hooks/intent-gate.cjs --report INT-NN --impact`)。
|
||||
- 机器检查(第 1–7、9–11 条)必须全部通过。
|
||||
- 第 8 条(钉版对照)和 `card:`、`#标题` 指针属于人工核对,核对结果写进确认卡;门控落地后改为全自动。
|
||||
- 只要出现悬空指针、stale 或 orphan、防膨胀超限,就先修或先提案,不往下编译。
|
||||
4. **收卡**
|
||||
- 检查各纳入卡的 depends,未满足的写进确认卡的「前置」行。只要有未满足的前置,就只能做纸面编译,不能粘贴执行。
|
||||
- depends 尽量写卡键或模块 id。像「P8 收口」这样的自然语言前置,要在确认卡里写明人工判定的结果。
|
||||
- 取挂在本章、标题前缀为 📋 或 🔵 的卡。
|
||||
- 没有可执行 agent_verify 的卡,列入「须先补 acceptance」,不进 goal。
|
||||
5. **合成终点**
|
||||
- 取各卡 agent_verify 的合取,改写成在会话里能判定的形式:贴出命令和预期输出、纳入卡前缀都是 ✅、回执已写入。
|
||||
- human_verify 不进终点,单列为终验待办。
|
||||
- 过程词黑名单命中数必须为 0:「按方针」「符合设计」「设计已完成」「基本完成」,以及任何无法从会话输出判定的形容词。
|
||||
- 过程词黑名单命中数必须为 0:「按方针」「符合设计」「设计已完成」「基本完成」「符合预期」,以及任何无法从会话输出判定的形容词。
|
||||
- 确认卡和 /goal 文本里的终点写法必须一致,都写「命令 → 预期输出」。不能 /goal 里写得精确,确认卡里却改写成「均符合预期」。
|
||||
- **探索章**不编译「意图的终点」,只编译本轮试验的终点:
|
||||
- 做出可试用的 MVP 变体,写明最小动作和可演示方式;
|
||||
- 校验命令通过;
|
||||
@ -203,6 +209,7 @@ agent 不得自行延长预算。
|
||||
[INT-NN@X.Y#<blob7>] 目标确认卡
|
||||
项目: <project_id> | 分支/worktree: <branch> @ <path> | HEAD: <sha7>
|
||||
章意图: <一句> | 不做: <…>
|
||||
前置: <各纳入卡的 depends 及是否满足;有未满足的,注明「仅纸面」>
|
||||
形态: 定型 | 探索(第 k/N 轮;收敛信号: <…>)
|
||||
纳入卡: <卡键>(来源 agent_verify 原文)、<卡键>(…)
|
||||
终点(合取): 1) <命令> → <预期输出> 2) … 3) 纳入卡均 ✅ 且已写 Goal-Receipt
|
||||
@ -234,13 +241,17 @@ Human-Pending: <待人终验项>
|
||||
|
||||
试用期的检查全部是 shell 单行命令,在仓库根目录执行。期望输出写在每条后面的注释里。
|
||||
|
||||
- **没有 Bash 时**:命令按 POSIX shell(Git Bash)写成。部分客户端的沙箱里起不了 Bash,这时可以用语义等价的命令(PowerShell 等),并在确认卡的「没验什么」里注明用了哪种替代。
|
||||
- **一律逐行解析**:不要对整份文件跑一个正则,字符类会跨行吞掉换行符,把有效指针误报成悬空。
|
||||
- **只读演练不写盘**:所有检查都用管道或内存字符串完成,不创建临时文件。
|
||||
|
||||
```bash
|
||||
# 1. 版本行恰好一行
|
||||
grep -c '^> catalog_version: ' .blueprint/catalog.md # → 1
|
||||
# 2. 有效章数(墓碑不计)
|
||||
grep -cE '^## INT-[0-9]{2} ' .blueprint/catalog.md # → 章数
|
||||
# 3. 体量
|
||||
wc -l < .blueprint/catalog.md; wc -c < .blueprint/catalog.md # → ≤200 行、≤8192 字节
|
||||
wc -l < .blueprint/catalog.md; git cat-file -s HEAD:.blueprint/catalog.md # → ≤200 行、≤8192 字节(量提交里的 blob;工作区可能是 CRLF,wc -c 会多算换行)
|
||||
# 4. 禁用键与模型名
|
||||
grep -cE '^- (status|progress|doc|files|acceptance|model):' .blueprint/catalog.md # → 0
|
||||
# 5. path 指针可解析(没有输出即通过)
|
||||
@ -254,8 +265,8 @@ grep -hoE 'intent: INT-[0-9]{2}@[0-9]+\.[0-9]+' .blueprint/modules/*.md | sort |
|
||||
awk '/^## INT-[0-9]{2} /{c=$2} /^- rev:/{print c, $3}' .blueprint/catalog.md
|
||||
# 9. 改模块 md 前后的任务卡计数应相等(新增卡时等于新增数),防止误写 ###
|
||||
cat .blueprint/modules/*.md | grep -c '^### '
|
||||
# 10. goal 文本的过程词黑名单(把 /goal 文本存成临时文件后检查)
|
||||
grep -cE '按方针|符合设计|设计已完成|基本完成' <goal 文本文件> # → 0
|
||||
# 10. 确认卡和 /goal 文本的过程词黑名单(用管道检查,不写临时文件)
|
||||
printf '%s\n' "$GOAL_TEXT" | grep -cE '按方针|符合设计|设计已完成|基本完成|符合预期' # → 0
|
||||
# 11. 探索章的必填字段齐全(没有输出即通过)
|
||||
awk '/^## /{if(e&&!(b&&s))print "缺预算或收敛信号: "c; c=$2;e=0;b=0;s=0} /^- 形态: 探索/{e=1} /^- 预算:/{b=1} /^- 收敛信号:/{s=1} END{if(e&&!(b&&s))print "缺预算或收敛信号: "c}' .blueprint/catalog.md
|
||||
```
|
||||
|
||||
Loading…
Reference in New Issue
Block a user