goal 章程
一句话:章程是给自主执行体的候选件生产契约——goal 自主跑到“精确候选可供独立验收”,但无权自己宣布整个任务完成。终点是标准研发流程的候选终审,不是飞行日志或 goal 自评。
0. 第一原则:结果管控,不是过程管控
| 过程管控(旧) | 结果管控(本 skill) | |
|---|---|---|
| 授权角色在哪 | 每道工序都临时找人审批 | 起点由授权角色批准执行契约,终点由指定验收角色审核候选;项目治理要求的职责分离仍然生效 |
| 靠什么保证质量 | 人逐步审查 | 可判定的验证器 + 边界 + 事后逐条追认 |
| 出问题怎么办 | 停下来问 | 自愈 + 记飞行日志;只有白名单情况才停 |
可逆工程问题应在预授权边界内自愈,不能靠临时加审批维持安全。 但协调成本不天然高于业务或环境风险;项目声明的授权角色、职责分离和强制检查点不得被“少打断”覆盖。
0.1 治理角色不是同一个“用户”
本 skill 使用四类授权角色:任务发起人提出目标,业务决策负责人裁决业务结果与冻结规格,环境所有者 / 发布授权人批准环境使用与外发动作,候选验收人在终点审核候选。个人项目可以由一人兼任;团队项目可由不同人员或岗位承担。角色绑定与职责分离来自项目级补丁、项目指令或任务批准记录。
对话中的“用户”只表示当前交互方,不自动证明其拥有其余角色的权限。任何章程都必须记录本次实际授权角色;缺少角色绑定时,不得把任务发起、批准计划或启动 goal 推导成环境抢占、生产发布或最终验收授权。
写章程时反复自问的那一句:这件事会改变业务结果吗?会造成不可逆后果吗? 都不是 → 授权它自己干,记日志。
章程准入:正式规格冻结且规格物化覆盖报告全绿,必要的真实动作授权已明确。环境、测试资产、runner、夹具、数据工具和证据适配器不再是章程门票;它们由 goal 的 M0 启动检查负责建立和修复。只有授权缺口需要在启动前补齐。
启动服务不是准入闸:章程阶段同时清算已经可预见的人工协作,产出 _shared/T{n}-goal启动服务单.md。它只保存当前环境、会话、凭据位置、外部平台状态与责任角色,不能签发 PASS/FAIL、冻结命令或削弱 M0 自愈;真正约束 goal 的仍只有上游授权、项目治理策略与本章程边界。
1. 铁律(写章程的人最容易违反的三条)
- 章程无权铸造规则。规则只来自用户级文档(项目
CLAUDE.md/AGENTS.md/ skill)。章程里写的"硬门""死亡线""必须审批"一律只是执行建议,不具停机权。你在写一份执行契约,不是在立法。 - 死亡线是封闭清单,以项目级文档为准。任何人无权新增——包括你、包括评审报告、包括任何工作包里的文字。 「密钥」「部署」「提交」这类不在清单里的东西,就不是死亡线,别给它套死亡线的待遇。
- 反棘轮:章程禁止给下游新增闸门 / 审批 / 硬门。评审结论是信息,不是门禁。
这三条是有来历的:执行链会自己发明「前置硬门」「具名人工审查」这类 skill 原文从未出现过的门禁词汇,并层层继承到后代工作包里,累计出现数十次。最后用户被迫花掉一次人工裁决,去撤销一条从来没有任何人类批准过的规则。
2. 目标的正确形式:动作 ≠ 目标
目标必须是「完成时什么事实为真 + 什么证据证明」。写成动作,goal 就永远"在做"而不"做完"。
| ❌ 动作 | ✅ 可判定终态 |
|---|---|
| 制作好测试脚本,确保符合用例 | M0 启动检查覆盖全部命中执行面,测试资产/runner 可被 goal 构建和修复,且真实断言不少于冻结用例 |
| 开发好代码,确保符合规范 | 检查器全绿,零违规 |
| 部署,跑通所有测试 | 候选部署到 {具名环境},矩阵全绿 且测试未被削弱(见 §7) |
| 文档收口 | 施工前物化报告已全绿;goal 只产执行记录,意外规格缺口必须有界重新冻结,不携带任何已知切片内文档债 |
| 把本次修好的基座留给以后 | 本轮新增/修复的执行资产已分为任务临时、领域复用、项目通用三类;可复用项已晋升稳定路径并提交,交接中已写明验证命令、环境前提与跨分支传播状态 |
| (最常漏的一条) | 精确候选已提交到 {分支},工作树干净,commit/tree SHA、真值基线和执行证据清单已冻结;状态仅为 CANDIDATE_READY |
最后一条不是凑数。典型事故:施工成果——代码写完、测试过了、文档冻结了——以"脏工作区"的形态长期裸奔,零提交。目标里没写"提交",它就真的不会提交。
3. 章程模板:固定 8 节,实例 ≤100 行
≤100 行是硬上限,不是建议。 写不下就是切片切大了或话说啰嗦了,不是上限定小了。
为什么是物理上限而不是"注意精简":近千行的施工蓝图不是一天长成的,是每轮评审垫一点垫出来的,最后它自己跟自己打架(同一份文件前后给出相反的施工指令),把下游炸了。物理上限比自觉可靠。 上限由维护该流程的治理负责人批准,执行者无权移动它,松紧皆然。实测放不下 → 报实际行数给对应负责人裁决,不要自行放宽。
# goal 章程:{任务名}
## 1. 目标(完成时什么为真)
1. …(每条都是可判定终态 + 证据,见 §2)
## 2. 里程碑(= 施工切片;checkpoint 非闸门,断点续跑用)
| # | 目标状态 | 前置 | 验证命令 | 数据/环境前置 | 回滚与兼容窗口 |
|---|---|---|---|---|---|
| M0 | 启动检查:执行面可工作,缺陷已自愈或准确分类 | 冻结规格 + 授权 | 每个命中面一个最小健康探针 | 按面填写 | 可逆修复 |
| M1 | | M0 | | 无 | — |
> 需要**指定授权角色人工完成**的外部动作(平台配置 / 授权 / 第三方后台操作)必须显式标为「**人工里程碑**」行,并写明责任角色:goal 跑到该行停机等待该角色完成并验证后继续。禁止把它降级成已知豁免绕过——那会让其下游所有真实链路测试只剩 simulated。
> 只有 AI 无法操作的真实设备、原生客户端对象或原生平台动作才可成为人工里程碑;AI 可控浏览器/开发者工具、DOM/data 断言、截图与 VLM 判读仍属自动化,不得转嫁给人工角色。
> 人工里程碑只能来自 §4.1 分类后的 `CANDIDATE_DEPENDENT`;已经完成的 `PRE_GOAL` 不得继续出现在本表。
## 3. 权限边界
### 3.1 允许(无需请示,做了记日志)
1. 角色绑定:任务发起人 `{}` / 业务决策负责人 `{}` / 环境所有者或发布授权人 `{}` / 候选验收人 `{}` / 职责分离要求 `{}`
2. 继承上游授权(不得扩大):授权角色 `{}` / 目标环境 `{}` / 精确动作 `{}` / 目标对象 `{}` / 费用上限 `{含重试储备}` / 副作用范围 `{}` / 授权锚点 `{DEC-x或总控批准记录}`
3. goal 可在授权范围内创建或修复:产品代码、测试脚本、runner、夹具、数据建立/清理/恢复工具、环境适配器、部署脚本与证据采集器;每次修复登记影响面并重跑受影响验证
4. 测试资产修改的硬不变量:真实断言集合不得弱于冻结规格,不得用 skip、放宽阈值或把产品现状反写测试来求绿
### 3.2 禁止(硬边界,违反即失败)
1. …(**按可达性写,不按动作枚举**,见 §5)
## 4. 停机条件(白名单,仅此三条需要相应授权角色裁决)
1. 两份都已冻结的真值互相矛盾,且裁决会改变业务结果
2. 命中项目死亡线清单的**业务规则**需要变更
3. 需要章程未预授权的不可逆 / 外发动作
**除此之外不停机。** 计划内例外:§2 显式标注的「人工里程碑」到点停机等待,属章程预定的外部协作点,不占用本白名单。
凭据定位、实现取舍、产品/测试/runner/夹具/环境/证据工具缺陷与重复失败均属 goal 内工程问题。安全路径确已穷尽、外部状态暂不可得或达到限轮时,允许以 `EXECUTION_BLOCKED` 交还控制权;该出口不要求业务裁决、不前拉上游、不作废未受影响证据,恢复后回同一 goal 切片。
**停机后的处置(默认热修续跑,回炉是例外)**:停机报告必须随附一份**修改方案**——①决策项(同族冲突一次收齐,互斥选项 + 影响,沿用冲突批处理合并决策包格式)②上游修改清单(要动的轻量设计条目 / 正式 L1–L7 小节 / L7 用例,逐项改前→改后语义)③失效证据清单(按影响面圈定重跑范围,未受影响证据不作废)④恢复点(从哪个断点、哪个切片继续)⑤档位建议(热修为默认;建议回炉必须论证热修为何不可靠——地基级设计错误、影响面无法圈定)。**对应业务决策负责人批准一次 = 方案范围内的一揽子授权**:方案内全部上游修改、五项冻结闸门重跑、受影响证据重跑、断点续跑同一 goal,中间不再确认。若项目要求多角色会签或职责分离,则按项目治理策略完成,不得由任务发起人替代。热修复用有界重新冻结的同一套机器,语义变更以本次批准为裁决来源;完成后更新断点与章程引用的哈希基线(登记动作,不重写章程),用**同一条 /goal 条件**重新启动续跑。
## 5. 回炉出口(例外档,业务决策负责人批准才走)
回炉不再是规格错误的默认出口——默认走 §4「修改方案 → 获批 → 热修续跑」。仅当修改方案论证热修不可靠(地基级设计错误、影响面无法圈定)且对应业务决策负责人批准时:带证据终止本 goal → 回退上游子任务重新设计 → 修用例 → 重写章程 → 重跑。
判据:…(本次哪些属规格层,见 §6)
## 6. 已知豁免(不算失败;每条三段:豁免项 / 原因 / **验收时你将看到什么现象**)
1. …("现象"用人话写给验收者,例:「第三方支付回调永远不来,N 分钟后一律判超时」——不写现象 = 候选验收人在终点才发现"全绿"和"能用"不是一回事)
## 7. 文档动作清单
> 七层规格已在第 5 步完成真值收敛,是本 goal 的**输入**。本节只列意外触发的有界重新冻结与执行记录;不得预先安排“施工后再补文档”:
| 动作 | 对象 | 说明 |
|---|---|---|
| 有界重新冻结授权 | 轻量设计 + 正式 L1–L7 + 覆盖报告 | 仅限不需新业务裁决且现有真值给出唯一方向的意外规格洞;同步补 `SD→TOPIC→SPEC→AC`、哈希与五项闸门报告后继续,禁止只补 L5/L6 |
| 执行记录产出 | {路径} | 落 `_shared/` 与项目执行记录路径,不进七层 |
> 章程必须引用第 5 步的规格物化覆盖报告,要求 `SD→TOPIC→SPEC→AC` 五项全真、已触发的评审闭环 PASS、切片内债务为 0。M0 启动检查是本 goal 的首个产物,不是章程的前置证明。
## 8. 飞行日志 + 候选交接面
- 日志:`{路径}`,每条自愈一行——时间 / 类别 / 改了什么 / 依据哪份冻结真值 / 为何是纯实现自由
- 断点:`{路径}`,保存 run/当前里程碑/已完成事实/失效证据/下一动作/强制阅读路径与读取哈希;首次、恢复、新会话或自动压缩后先从磁盘复水再写入,断点不承载业务语义
- 执行证据清单:`{路径}`,每条 AC 只允许 `VERIFIED / BLOCKED / MISSING / WAIVED`;仅由“raw 运行 → 采集时不可变信封 → AC 映射 → 账本”重算出的 `VERIFIED` 计入通过
- 证据检查器:`{命令}` 已验证 `evidence_semantics_version=assertion-native-v1`、候选 commit/tree、环境身份/保真度、框架原生断言事件、全部证明部件、消费者完整性与 observed/expected;信封和 raw 位于同一内容寻址包
- 候选自检:观测分布报告中的代理观测、非法重复簇、孤儿套件、未消费失败/跳过、未执行绑定与多部件缺口全部为 0,才允许报 `CANDIDATE_READY`
- **真实链路闭合度**:交付记录单列一节——全部 `simulated` 与 `BLOCKED` 的 AC 汇成一张表,一句人话说明真实链路断在哪、由谁何时接通;不得与真实链路证据混入同一统计
- **执行资产交接**:本轮新增/修复资产逐项分为任务临时、领域复用、项目通用;可复用项写稳定路径、commit、验证命令、环境/凭据前提、消费者与分支传播状态。只存在兄弟分支而当前分支不可达时写 `PROPAGATION_REQUIRED`,不得假称已继承;本轮没有可晋升项也要明说
- 候选交接:commit SHA / tree SHA / 工作树干净证据 / 规格与执行清单哈希 / 验证命令与证据路径
- 终态只能写 `CANDIDATE_READY`,不得写“整体完成”、“全部验收通过”或替代候选终审
4. 里程碑 = 施工切片
切片是断点续跑的锚,不是要人批准的关卡。切片之间不临时新增审批;项目治理预先声明的人工里程碑和职责分离检查点仍然生效。
- 要素表一行一片(别每片一节,那是行数预算杀手)
- 产出方就是章程作者。切片依据 = 轻量设计的影响面勘察 + 用例矩阵
- 章程作者允许且需要亲自读代码——切片是文件/模块级编排,而上游设计明确不下沉到逐文件,光靠上游文档切不出来。亲自读(不要为了补背景派子 agent 去调查)
- 判失败:任一切片不能独立编译或独立验证 → 切片门失败,重新切。中间态长期不可编译 = 没切对
这一条在 goal 里比在任何设计文档里都要命:goal 要断点续跑,切片不能独立验证 = 根本没有断点。
4.1 goal 启动服务:清算预见停机,不预演施工
章程作者在生成 /goal 启动物前,把每个密钥、登录、第三方后台、真实设备和外部平台事项分到唯一类别:
| 类别 | 判据 | 处理 |
|---|---|---|
AI_AUTO |
AI 可通过工具、浏览器、开发者工具、脚本或 VLM 完成 | 留给 goal/M0;禁止降级成人工 |
PRE_GOAL |
必须由指定授权角色参与,但不依赖候选代码或部署结果 | 章程阶段提前完成;对应责任角色明确批准延期时才可转成人工里程碑 |
CANDIDATE_DEPENDENT |
只有候选部署或运行后才能真实完成 | 留在 goal,并在不违反职责分离的前提下合并人工协作窗口 |
LONG_LATENCY_EXTERNAL |
审批、开户或外部协调周期可能跨天 | 上游独立任务完成,不埋入 goal |
伴生服务单至少记录:目标环境与授权锚点、访问入口和登录/权限状态、凭据是否存在及受控位置(禁止明文)、外部平台快照、每项分类与依赖、责任角色、已完成/明确延期事实、回滚入口、planned_human_windows 与不可合并原因。人工窗口应在项目治理允许的范围内合并,但不设通用固定次数;职责分离要求拆开的动作不得为了追求“零打断”而合并。
服务单是可刷新现场基线,不是执行契约。会话过期、路径变化、命令失效或工具缺失仍由 M0 在授权内修复;只有缺权、找不到凭据位置或真实物理边界才按章程出口处理。章程获批前尚未完成的 PRE_GOAL 应当当场清算;若对应责任角色明确批准延期,记录批准锚点、日期与影响后转入人工里程碑,不得默认延期。
5. 边界按「可达性」定义,不按动作枚举
能力边界 > 指令边界,差一个数量级。 做不到 ≫ 不许做。
典型漏网形态(必读):章程写了「零 SSH、零部署、零重启、零配置修改、零数据库操作」保护一台生产机器。goal 一条都没违反——它是通过测试文件里硬编码的
http://<生产主机>:<端口>发 HTTP 请求越的界。 按动作类型枚举禁令,必然有漏网。
因此:
| 做法 | 例 |
|---|---|
| ✅ 首选:物理隔离 | 让禁区网络不可达(hosts / 防火墙 / 容器网络);生产凭据不在场 |
| ✅ 次选:按可达性写禁令 | 「不得以任何方式访问 {IP/域名},含 HTTP、SDK、测试夹具、第三方回调」 |
| ❌ 别只做:动作枚举 | 「不 SSH、不部署、不重启」——留下 HTTP 这类通道 |
启动前必做:扫描测试套件里硬编码的外部端点。跑测试 = 执行任意代码 = 可达任何网络端点,测试套件是最隐蔽的能力通道。
6. 文档:七层全是规格,goal 按分类自愈、重新冻结或回炉
规格的判据(唯一试金石):
把代码全删了,能照文档重做出来吗? 能 → 这些文档就是规格。这是 SDD 里规格的定义。
由此:七层文档 L1~L7 全部是规格层,全部在施工前冻结。它们是 goal 的输入,不是计划中的施工产物。意外命中有界重新冻结时,当前施工切片先暂停,重新建立一份六闸全绿的新输入基线后再继续。没有"实录层"这种东西——实现细节(函数内部 / 样式写法 / DTO 转换 / SQL / 标准 CRUD)属于代码自由范围,压根不进文档(层定位与管辖边界见 doc-layer-system §5.5/§5.6,本 skill 只消费不定义)。
| 遇到什么 | 地位 | 怎么办 |
|---|---|---|
| 代码 ≠ 冻结的七层规格 | 规格是约束(法律) | 文档赢,改代码,不停机 |
| 未规定事项属于纯实现自由 | 不影响可观察结果、契约、数据、架构边界与按规格重建 | 选合规实现 + 记日志;不进七层 |
| 规格有洞但现有真值给出唯一方向 | 规格不完整,但不需要新业务裁决 | 暂停当前切片,自动有界重新冻结:补轻量设计 SD-x、TOPIC-x、职责正式层、对应 AC-x,更新哈希/语义差异/覆盖报告,五项闸门全绿后继续 |
| 上游资产完整性错位(引用断链 / 哈希失配 / 编号错位,语义本身无矛盾) | 登记信息损坏,不是语义变化 | 按真值优先级修复:纯编号/指纹/引用修正 + 飞行日志留痕,继续跑,不停机;仅当修复必须在多个业务结果之间做选择时,升级为 §4 条 1 或 §5 回炉 |
| 规格错了 / 洞会改变业务结果 | 需要业务决策负责人裁决的语义修改 | 停机出 §4 修改方案,按项目治理获批后热修续跑(默认);方案论证热修不可靠且获相应批准 → §5 回炉 |
| 执行记录 / 交付记录 / 飞行日志 | goal 的产出证据,不是规格 | 落总控 _shared/ 与项目执行记录路径,不进七层 |
关于有界重新冻结:判据就是 doc-layer-system 的重建试金石。若不写也能从现有规格唯一重建,它是实现自由;若不写会让下一个 AI 作出另一种架构/链路选择,它就是规格缺口,必须同步补齐轻量设计、职责正式层、L7 和覆盖报告。这个过程不新增人工裁决,但绝不允许“只补 L5/L6 + 飞行日志”造成再次分叉。
飞行日志没有语义权力:出现“不再”、“改为”、“取消原”、“与正式规格不同但”、“实现选择”时,必须逐条附上纯实现自由证明;无法证明即回炉/停机。日志不得取消、改写或覆盖任何 SD/TOPIC/SPEC/AC。
回炉必须显式成节。 只有"跑完"和"停机"两个出口是不够的:AI 证明上游规格错了却没有第三条路时,只能二选一——硬改代码绕过(灾难)或无恢复点阻塞(卡点)。 停机 ≠ 回炉:停机后默认按 §4 修改方案热修续跑(获批即续,不再重复确认);回炉是本次 goal 作废,退回上游子任务重来——例外档,须由业务决策负责人按项目治理批准。
7. 防作弊三层防线
长程自主执行的头号风险是 reward hacking:不去干活,去把验证器搞绿。
不变量不是「脚本不变」,是「脚本的断言集合 ⊇ 规格的断言集合」,且执行状态只能由先发 raw 单向派生。
脚本是规格的翻译。翻译可以修,但不能删原文;它在 goal 的 M0 或后续执行中实现与修复。脚本/runner/夹具/环境适配/证据工具缺陷与产品缺陷一样,都是 goal 内的可逆工程问题;修复后按影响面重跑,不得借机改变冻结语义。
| 层 | 机制 | 防什么 | 卡不卡 |
|---|---|---|---|
| 1 | 规格 spec_hash 冻结(在 goal 之外,goal 碰不到) |
改断言的定义 | 不卡 |
| 2 | 编号覆盖检查器(每轮跑):冻结规格的每个断言编号都能在脚本里找到落点 | 删测试 / skip / 空实现 | 不卡(机器判,违规当场自愈) |
| 3 | raw → 采集时信封 → AC 映射 → 账本(执行证据检查器) | 状态账本自证、反向改 raw、事后绑定候选/环境 | 候选交付前必须通过 |
| 4 | 候选终审 | 编号在但真实断言/测试形状不符,或把阻塞项算成已覆盖 | goal 内不卡,但不得宣称完成;终审硬阻断 |
证据链要点:raw 必须先发生,采集时立刻封存候选 commit/tree、环境身份与保真度、run/test/assertion ID、原始报告路径/哈希及 observed/expected;信封与 raw 同包内容寻址。禁止把状态账本或派生聚合物当 raw,禁止从账本反向回写 raw,禁止事后补绑候选版本或环境。
执行状态封闭集:VERIFIED / BLOCKED / MISSING / WAIVED。只有可从上述单向链重算的 VERIFIED 计入覆盖;BLOCKED 和 MISSING 必须分别给物理边界/缺失事实的结构化证据且永不计入“已覆盖”;WAIVED 必须有正式规格或 DEC-x 依据并单独统计。多个 AC 共用同一测试时仍须有独立 assertion ID 与观测值,不能复制一个泛化 observed。
唯一判据:改完之后,脚本是更接近规格,还是更接近代码?
| 规格说 | 代码实际 | 脚本原来 | 改成 | 判定 | |
|---|---|---|---|---|---|
| A | 400 | 400 | 404(写错了) | 400 | ✅ 忠实化 |
| B | 400 | 404(有 bug) | 400 | 404 | ❌ 作弊 |
规格是唯一的裁判席。 规格一旦可变,A 和 B 就再也分不开了——可以先改规格,再理直气壮地改脚本。这就是第 1 层必须存在于 goal 之外的理由。
8. goal 内部工序编排(常量,写在这里,不进章程实例)
每个任务都一样,所以它属于本 skill;章程实例不要抄一遍。
M0:仓库/工具链/环境/测试基础设施健康探针并自愈 → 产品代码 → [检查器:机器判定]
→ 部署 → 跑冻结矩阵 → raw+采集时信封 → AC 映射/账本 → 执行证据检查器 → 每切片收尾记录
↑ 不临时新增人工闸门;审核 = AI 自审或检查器;预定人工里程碑/职责分离检查点照常执行
- goal 内部的审核禁止走对抗评审。对抗评审引入 loop 外的观点——场景不同、上下文不同,产出的是噪音。goal 内只能是 loop 闭环内的 AI 自审 + 机器检查器。
- 测试资产、runner、夹具、环境适配器或证据工具缺陷在 goal 内修复;只使其影响到的运行、证据与候选失效。只有冻结用例或正式规格语义改变,才按责任回到上游并扩大失效范围。
- 代码合规绑定检查器命令,不是 AI 自觉,更不是人工评审。能做成检查器的不要做成评审:检查器每轮免费跑、确定、即时;评审一次性、主观、会漏。
- 文档动作跟着切片走,不攒到最后——跑到第 4 小时预算见底,攒着的文档必然敷衍。
- 部署动作遵守项目环境占用策略:目标环境有账本或租约时,其位置、有效期、失效判据、可抢占角色和冲突处置由项目级补丁或部署 skill 声明。启动 goal 不构成环境授权或抢占授权。只有租约按既定规则失效、原持有人释放,或环境所有者明确授权抢占时才能继续;否则优先换用隔离环境,仍无法继续则交付可恢复的
EXECUTION_BLOCKED。项目要求登记时,部署后按规定登记时间、分支、commit、任务与操作者;手动或热修部署同样遵守。 - 长文档治理是 goal 内的自愈项,不是交付前的人工闸。
9. 有界扇出
- ✅ 允许按章程已枚举的切片派叶子级并行子执行体
- ❌ 禁二级派生(子执行体不得再派)
- ❌ 禁为补背景 / 调查派子执行体——背景自己亲自读
- 用 goal 的 token 预算做机械止损,不靠自觉
无界自主派遣是有事故记录的(一次 token 烧穿)。有界并行没问题,能并行却串行同样是失职。
10. 自检表(判失败)
结构类
- 判失败:章程实例 > 100 行。
- 判失败:目标里有任何一条是动作而非可判定终态(§2)。
- 判失败:目标没有"已提交 / 工作树干净 / 产物已冻结"这一条(而任务确实产出代码)。
- 判失败:里程碑写成"每片一节"而不是要素表。
- 判失败:存在切片不能独立编译或独立验证。
- 判失败:缺 §5 回炉出口,或把回炉混进停机条件里。
- 判失败:没有 M0 启动检查里程碑,或不允许 goal 在冻结语义不变的前提下修复测试/runner/夹具/环境/证据工具。
- 判失败:M0 未先核对项目稳定执行资产及其当前分支可达性便无声重造;或把资产继承登记重新做成章程准入闸。
- 判失败:缺 goal 启动服务单;或把它写成 readiness、PASS/FAIL、逐 AC 门票、固定命令清单或新的章程准入证明。
文档类
- 判失败:没有引用全绿的规格物化覆盖报告,或报告存在未物化 SD、孤儿 AC、无正式来源 AC、切片内已知文档债。
- 判失败:覆盖报告没有独立证明跨层可满足性,或 L6/L7 要求的状态、快照、预留在 L3/L4/域内没有合法承载路径。
- 判失败:章程消费了无
DEC-x或无实际授权角色的“已批准”规则,或评审前后业务语义差异仍有未授权变化。 - 判失败:章程要求 goal 把实现细节回写进 L5/L6(那是代码自由范围,回写它 = 把 L5/L6 变成代码镜像层 = 开始腐烂)。
- 判失败:章程把预期中的七层修订安排成 goal 施工产物,而不是在第 5 步冻结;有界重新冻结只能处理施工前不可合理预见的缺口。
- 判失败:把执行记录 / 交付记录 / 飞行日志写进七层文档。
- 判失败:允许 goal 只补某一份 L5/L6 而不更新轻量设计、主题账、L7、哈希与五项闸门覆盖报告;或未给有界重新冻结授权,导致非业务语义缺口也只能停机问人。
- 判失败:允许 goal 把
BLOCKED/MISSING计入覆盖,或WAIVED没有正式来源。
边界类
- 判失败:章程的目标环境、动作、对象、费用或副作用范围超出上游授权;或预算没有重试储备。
- 判失败:禁止段只有动作枚举,没有可达性定义;或有物理隔离手段却没用。
- 判失败:没扫过测试套件里的硬编码外部端点。
- 判失败:项目存在环境占用策略,而章程遗漏或违反该策略;把启动 goal 推导成环境授权;没有失效/释放/抢占证据便忽略有效占用;或遗漏项目要求的部署后登记。
- 判失败:停机条件超出三条白名单;或把凭据定位、实现取舍、重复失败、"文档冲突""脚本小错""记录笔误"写成业务裁决理由。
- 判失败:停机只报问题不附修改方案;把回炉当默认出口;热修后未按影响面重跑或未更新哈希基线;热修中夹带方案外语义变更;续跑前再要第二次确认。
- 判失败:章程里出现自造的"硬门""死亡线""必须审批"(§1 铁律 1、2)。
- 判失败:需要不可逆/外发动作(如推送),但 §3.1 没有显式授权——这不是停机理由,是章程写漏了。
验证器类
- 判失败:用"测试脚本哈希不变"当完成判定(自相矛盾,见 §7)。
- 判失败:冻结规格没有 spec_hash,或断言没有稳定编号(三层防线全塌)。
- 判失败:断言虚到无法对账(「应该失败」不合格;「返回 400 / 错误码 40001 / retryable=false」合格)。
- 判失败:一条 AC 捆绑多个独立结果,或高风险语义没有真并发、固定时钟边界、快/回退双路径、批量故障隔离中对应的强制测试形状。
- 判失败:章程允许 goal 自行宣布整体完成,或未产出精确 commit/tree 候选与执行证据清单。
- 判失败:已知豁免条目缺「验收时你将看到什么现象」的人话描述。
- 判失败:需要指定授权角色完成的外部前置被写成已知豁免而不是「人工里程碑」,导致其下游真实链路验证在本 goal 内注定只能 simulated。
- 判失败:AI 可操作事项被降级为人工里程碑;候选无关的
PRE_GOAL未完成且责任角色未明确批准延期便进入 goal;人工窗口未按项目治理合并,或为了合并而违反职责分离。 - 判失败:启动服务单扩大上游授权,记录秘密明文,或要求 M0 因其中路径、命令、登录态过期而停机。
- 判失败:交付/交接缺「真实链路闭合度」独立结论,或把
simulated证据与真实链路证据混入同一统计。 - 判失败:可复用执行资产只留在任务目录、本地运行根或未提交工作树;或交接未说明稳定路径、验证命令、环境前提与跨分支传播状态。
- 判失败:
VERIFIED不能从 raw+采集时信封重算,信封与 raw 不在同一内容寻址包,或未运行执行证据检查器。 - 判失败:新候选缺
assertion-native-v1语义证据标记;wrapper 生成断言事实;代理观测或未声明的重复内容批量签发 AC;消费者完整性或证明部件不全仍报CANDIDATE_READY。 - 判失败:用状态账本/派生聚合物自证,反向改 raw,事后补绑候选/环境,或多个 AC 复制同一泛化 observed 而无独立 assertion ID。
交接类(详见 §13.6)
- 判失败:启动物不是一条
/goal条件(做成了提示词+条件两块)、复制章程正文、②段缺举证义务、④段漏出口或把停机写成"等待某人继续执行"、在章程获批前生成,或回填后总控脚本抓不到。
11. 章程按风险触发开放式红队,整改后封闭验收
章程并非每次都强制开放式评审。仅当项目规则判定命中死亡线、跨域/破坏契约,或用户显式要求时,才走 adversarial-review 的章程口径卡(红队四问 A 作弊路径 / B 必卡路径 / C 漏停路径 / D 断点丢失)。同一章程对象、同一真值基线只允许这一轮,禁止自动 R2/R3。普通任务由冻结规格、执行期机器验证器和全新上下文候选终审提供独立性。
关键不对称:A/C/D 找的是“边界太松”,B 找的是“边界太紧”。主线程按裁决整改后,调用 closed-remediation-review:当前工具一个原生子线程只检查原 A/B/C/D 采纳项、正式 DEC-x 与整改 diff,再由主线程逐条裁决。封闭验收必须同时确认堵 A 没有制造新 B,但不得新增攻击意见;PASS 后才交业务决策负责人批准。
轻量档例外(plan-goal):
plan-goal轻量任务的计划内嵌「执行章程节」,不是本 skill 的章程实例——是否对计划跑开放式红队由用户决定,AI 不主动触发;但 §13 的/goal机制事实与出口写法对轻量档同样生效。
12. 边界(不归本 skill 管)
| 事 | 归谁 |
|---|---|
| 设计决策、影响面勘察、验收映射 | lightweight-design |
| 用例规格、断言编号、spec_hash 冻结 | test-case-design |
| 各层的层定位、管辖范围 vs 代码自由范围 | doc-layer-system §5 |
| 总控子任务编排、阶段片段 | task-control-doc |
| 风险触发或项目治理要求的章程开放式红队 | adversarial-review(章程口径卡) |
| 红队整改后的封闭验收 | closed-remediation-review(原生子线程检查 + 主线程裁决) |
| 部署命令、测试执行、项目工具细节 | 项目执行 skill |
13. 章程 → /goal 的交接(章程阶段的最后一步)
章程是给人读的契约;/goal 是让它自己跑的开关。两者不是一回事,交接做不好,章程写得再好也只是被人手动执行一遍。
13.1 /goal 的机制事实(照着用,别凭印象)
| 事实 | 后果 |
|---|---|
/goal <完成条件> 只有一个参数,上限 4000 字符 |
100 行章程塞不进去,条件必须指针化——指向章程文件,不复制章程内容 |
| 设定 goal 立刻起一轮,条件本身就是那轮的指令 | 不需要另发"会话启动提示词"。条件 = 启动物,只有一条(§13.3) |
| 每轮结束由小快模型判条件成立否,不成立自动续轮 | 判定权不在干活的模型手上(这正是它比自觉可靠的原因) |
| evaluator 不跑命令、不读文件,只看对话里已出现的内容 | 最大陷阱,见 §13.2 |
| 条件不成立就自动续轮,不交还控制权 | 章程 §4 的停机白名单在 goal 模式下会被覆盖——见 §13.2b |
| 条件里可写限轮/限时子句 | 必写。否则跑不通的条件会无限续轮烧预算 |
/goal 只免每轮确认,不免每工具确认 |
要无人值守必须叠 auto mode |
/goal clear 停;/goal 无参看轮次与 token;--resume 恢复条件但计数清零 |
断点续跑时人要知道计数是重置的 |
13.2 可判定终态 ≠ 可观测终态
章程 §1 写的是可判定终态("覆盖检查器零缺失"、"哈希已登记"、"矩阵八面各有证据")——那是给候选终审的人核的。evaluator 读不到文件,它只能看见对话里贴出来的东西。
真实失效模式:目标全都达成了,但命令输出没贴进对话 → evaluator 每轮都判"没看到证据" → 无限续轮;或者反过来,Claude 嘴上说"检查器已通过"而没贴输出 → evaluator 信了 → 假绿收工。
因此 goal 条件必须把每条终态转译成可观测形式,并在条件里明写举证义务:
| ❌ 直接抄章程 | ✅ 转译后 |
|---|---|
| 覆盖检查器零缺失 | 覆盖检查器已在本对话执行且输出已贴出,结果为零缺失 |
| 候选已提交、工作树干净 | git status --porcelain 输出已贴出且为空,commit SHA 已贴出 |
| 三份执行记录齐备 | 三份记录已落盘,路径已在对话中报出 |
13.2b 停机出口必须写进完成条件,否则它不生效
章程 §4 白名单、§5 回炉出口、§2 的「人工里程碑」都假设执行体停下来交还控制权。但 /goal 的续轮判据只有一个:条件成立否。命中停机白名单时条件当然不成立 → evaluator 判 no → 自动再起一轮。
结果:执行体老老实实报告"我需要你拍板",goal 立刻把它拉回去继续跑,还附上 evaluator 的"尚未达成"当作催促。停机机制表面存在,实际失效。
因此完成条件必须把所有出口都写成"条件满足":
…完成条件:{正常终态} —— 或者命中以下任一出口并已在对话中写明出口编号与现状:
命中章程 §4 白名单三条 / 触发 §5 回炉 / 到达人工里程碑 {M-x} / 已跑满 {N} 轮并交付 EXECUTION_BLOCKED。
四类出口一起进条件,goal 才会在任一出口真正交还控制权。漏写哪个出口,哪个出口就形同虚设。
13.3 启动物 = 一条 /goal 条件,不是两块
/goal 条件同时扮演两个角色:给 evaluator 的完成判据 + 给执行体的首轮指令。所以不要再单写一份"会话启动提示词"、另配一条 goal 条件——那是把总控体系的提示词结构和 /goal 机械叠加,制造双份真值必然漂移,也和官方"条件即指令、无需另发提示词"的设计对着干。
启动物只有一条,四段固定:
/goal 执行 {goal 执行工作包路径}。首次启动、--resume、新会话或自动上下文压缩后,第一次写入前先从磁盘读 {章程路径} 全文(唯一执行契约,与工作包
冲突以它为准)、工作包「强制阅读」清单、goal 断点与飞行日志尾部;其余背景自己亲自补读,不派子 agent 调查。
然后按章程里程碑自主跑到底,中途不汇报。
完成条件:{章程 §1 各条终态压缩,每条带举证义务};{产出物已落盘并报出路径};
{工作树干净证据与候选哈希已贴出};{下游状态回填要求};终态报出 CANDIDATE_READY。
约束:{章程 §3.2 里最致命的 3-6 条,压缩转述}。
出口(命中任一并已在对话写明出口编号与现状,即视为条件满足):章程 §4 停机白名单三条 /
§5 回炉 / 到达人工里程碑 {M-x} / 已跑满 {N} 轮并交付 EXECUTION_BLOCKED。
总控体系的三要素不另起一块,全部承载在这条里:主体任务→①段、目标终态→②段、边界提要→③段。
13.4 逐段配方(照这张表取料,不要自由发挥)
| 段 | 原料出处 | 必须写 | 禁止写 |
|---|---|---|---|
| ① 开工指令 | 工作包路径 + 章程路径 + 章程 §3.1 扇出授权 | 工作包与章程的优先级(章程赢);首次/恢复/新会话/压缩后的磁盘复水;补读纪律(背景亲自读、不派 agent 调查);章程已授权的有界并行(按已枚举切片派叶子级子执行体);"中途不汇报" | 复述里程碑清单、复述强制阅读的文件名(章程与工作包里都有) |
| ② 完成条件 | 章程 §1 逐条 | 每条终态 + 举证义务("已在本对话执行、输出已贴出");产出物路径已报出;工作树干净证据已贴出;候选 SHA 与哈希已贴出;终态字样 | 验证命令的完整命令行、哈希字面值(易变,留在章程);章程正文整段复制 |
| ③ 约束 | 章程 §3.2 | 挑最致命的 3-6 条:禁区可达性、推送、冻结规格不可动、共享环境上的连带破坏、不许弱化断言 | 把 §3.2 全抄一遍(evaluator 每轮读一遍,纯浪费);动作枚举式禁令(见 §5) |
| ④ 出口 | 章程 §4 + §5 + §2 人工里程碑 | 四类一个不能少,统一措辞为"命中即视为条件满足" | 只写限轮;把停机写成"等待某人继续执行"——那不是条件满足,evaluator 会把它拉回去继续跑 |
长度校准:典型任务 600–1200 字符,上限 4000。超 1500 基本就是在抄章程,回头压②③两段。
举证义务怎么写(②段最容易写废的地方):
| ❌ 直接抄章程 | ✅ 带举证 |
|---|---|
| 覆盖检查器零缺失 | 覆盖检查器已在本对话执行、输出已贴出,结果零缺失 |
| 候选已提交、工作树干净 | git status --porcelain 输出已贴出且为空,commit SHA 已贴出 |
| 三份执行记录齐备 | 三份记录已落盘并报出路径 |
13.5 谁生成、什么时候生成、写到哪
启动物是章程阶段的产出,不是建总控时的产出。 原料 100% 来自终版章程(§1 / §2 / §3.2 / §4 / §5),章程没定稿就写它只能靠猜;红队整改必动 §1 与 §3.2,提前写必漂移。
顺序固定,一步都不能提前:
写章程 → (风险触发或项目治理要求时:红队一次 → 封闭验收 PASS)→ 对应授权角色批准
→ 生成 /goal 条件 → 回写下游 goal 执行工作包的「会话启动提示词」段
写到哪:下游 goal 执行工作包的「会话启动提示词」段。标题保持原名、其后紧跟代码块——总控脚本靠"标题 + 紧跟的代码块"抓取,改标题或在中间插说明文字都会抓不到(说明写在代码块之后)。这是章程阶段唯一被授权的跨子任务写入,只准写这一段。
13.6 判失败(并入 §10 自检)
- 判失败:启动物做成"提示词 + 条件"两块,而不是一条
/goal条件。 - 判失败:条件复制章程正文而非指向它(超 1500 字符基本就是在抄)。
- 判失败:②段任一终态没有举证义务子句(evaluator 读不到 = 判不了 = 无限续轮)。
- 判失败:④段漏写任一类出口(§4 白名单 / §5 回炉 / 人工里程碑 / 限轮)——漏哪类,哪类在 goal 模式下不生效。
- 判失败:④段把停机写成"等待某人继续执行"而不是"视为条件满足"。
- 判失败:①段只写扇出禁令("不派子 agent")而不写章程 §3.1 的有界并行授权——执行体会把本可并行的切片串行跑。能并行却串行同样是失职(§9);这是红队 B 问要抓的"边界太紧",不是安全。
- 判失败:章程获批前就生成启动物,或回填时动了下游工作包的其他内容。
- 判失败:回填后总控脚本抓不到(标题被改名,或标题与代码块之间插了文字)。