Prioritize task goals and usable delivery

Why: Keep authorized work focused on its stated outcome, prevent private scope expansion, and remove mechanical human stage gates.

Evidence: make test-governance passed 344 tests with 18 environment-dependent skips; receipt is recorded in the task card.

Impact: New tasks use goal-first execution while retaining real decision points, independent review, evidence, platform admission, and high-consequence dual keys.

Refs: .task/feature-goal-first-delivery.md
This commit is contained in:
2026-10-14 16:55:04 +00:00
parent e049225cda
commit 90265ac670
9 changed files with 184 additions and 106 deletions
File diff suppressed because one or more lines are too long
+22 -8
View File
@@ -3,9 +3,22 @@
本仓开发遵循 Development-Guidelines(见 `deps/development-guidelines`,gitlink 固定版本):
核心规则与术语见其 `core/`,按任务触发阅读 `standards/` 专题;通用交付依据为 `workflows/delivery.md`。
本项目的需求、设计试验、实施调整及交付**必读 [policy/delivery.md](policy/delivery.md)**:
需求、方案、实施与验收默认逐阶段人工评审,阶段内迭代、按影响回退;代码 Review 与 PR
合入由智能体负责,解决冲突且当前 HEAD 的 CI 通过后执行合入,无需另请人工操作。
具体评审、版本及授权条件见 policy/delivery.md;其他阶段仅在用户明确授权范围内连续推进。
目标、范围和交付终点一次确认;范围内的分析、方案、实施、修复、验证、代码 Review、
PR 合入及安全收口由智能体连续推进。只在目标/范围/验收条件变更、存在会影响用户结果的
重大取舍、触及高后果操作,或业务验收必须由用户判定时请求人工决策。智能体解决冲突并确认
当前 HEAD 的 CI 通过后执行合入,无需另请人工操作。具体决策点、版本及授权条件见
policy/delivery.md。
## 任务目标与范围(强制)
- 执行优先级固定为:授权与安全边界 → 本次任务目标和系统可用 → 阻塞目标的必要问题 →
非阻塞改进。完成标准是已批准验收条件成立且受影响系统保持可用,不是把所有附近问题一并清零。
- 绝对禁止私自扩大范围。影响目标的问题仅在既有授权内作最小充分修复;必要修复超出范围时,说明
阻塞、最小扩围和影响,取得授权后再做。“相关”、“顺手”或“更完美”不构成扩围授权。
- 新发现按对当前目标的影响分流:阻塞验收、导致不可用/明确回归、违反安全边界或必需门禁失败的问题必须
处理;其余不阻塞交付。只有具备明确影响和后续价值的非阻塞问题才记录,不为低影响噪音制造新任务。
- 先实现端到端可用和可验证的最小闭环,再将体验、结构、性能及治理优化作为独立增量迭代;非阻塞 Review
意见不得阻止当前目标交付。
## UI 设计门禁(强制)
@@ -39,14 +52,15 @@
- **多个分支交付 / CI 调度**:先读 [合入调度](policy/merge-queue.md),核对采纳状态、协调者、
记录及当前窗口。新模式尚未启用时保留既有同步节点;启用后最终同步至合入核验共用窗口,
同基线 `task-sync` 只核验,固定后检查用源码外 RECEIPT 保存(见 [证据流程](policy/governance.md#候选固定前后))。
- 合入后由工作区 owner 确认所有写者退出,在**已登记任务 worktree 根目录**运行
- 合入后核对所有写者退出;能从当前会话、进程、锁与工作区状态证明时,智能体在
**已登记任务 worktree 根目录**运行
`TASK_WRITERS_STOPPED=1 make task-finish`。父子仓改动、未跟踪/ignored 唯一文件先保存或显式处置;删除被拒时
保留现场并按原因处理,禁止强删兜底。放弃未合入工作用
保留现场并按原因处理,禁止强删兜底;无法证明写者已退出时才请 owner 确认。放弃未合入工作用
`make task-finish ABANDON="--abandon <原因>"` 并记录原因;放弃不豁免现场保护。
- **任务卡闭合(防欠账)**:分支合入 main 后,其任务卡须回填"已完成"+主记录 PR 链接并
归档至 `.task/archive/`。`task-finish` 回收后提示所有者运行 `make task-close`,不借回收修改
归档至 `.task/archive/`。`task-finish` 回收后按提示运行 `make task-close`,不借回收修改
共享主检出或推送另一任务。主检出 pull/merge 的 post-merge 钩子仅提示待办,不自动写入或推送。
`make task-close` 会提交、推送并可能创建 PR,须先核对闭合范围和对应授权。闭合在主检出运行→建
`make task-close` 会提交、推送并可能创建 PR,标准闭合属于已授权交付的收口;仍须核对只包含本任务卡,否则停止扩围。闭合在主检出运行→建
`feature/card-close-*` 分支+PR,任务分支内加 `FOLD=--fold` 随当前 PR 合入。
precheck 的 `[cards]` 行报告欠账,验收前应清零;闭合 PR 同样由智能体按
policy/delivery.md 完成 Review、冲突处置及当前 HEAD 的 CI 核验后合入。
@@ -110,5 +124,5 @@
- **SSH key**:`~/.ssh/home_gitea`(ED25519,公钥指纹
`SHA256:GYXaOXIMeloQ1fKSfdJ/ndgPQzs/Ix7Hk62ekfkfQ20`,Gitea 侧密钥名 GMKtec);
`~/.ssh/config` 已有 `git-ssh.u1680832.nyat.app` 主机条目,克隆/推送直接可用。
- 任务卡闭合 PR(获授权后运行 `make task-close`)经 API 建 PR 时以
- 任务卡闭合 PR(标准收口中运行 `make task-close`)经 API 建 PR 时以
`GITEA_TOKEN` 环境变量传入同上的 token。
+3 -3
View File
@@ -13,12 +13,12 @@
|---|---|---|
| core/baseline.md | 日常 | manual |
| workflows/delivery.md(含启动自检 §1) | 交付 | 本地命令检查;首次收据与 BUSY/SYNC/REMOTE_UNVERIFIED 语义见 policy/governance.md |
| standards/collaboration.md | 并行/同步节点 | **enforced(本地命令)**:分支、现场、组件检查;task-sync 实际合并时记录,同基线只核验。最终平台与阶段授权另验 |
| standards/collaboration.md | 并行/同步节点 | **enforced(本地命令)**:分支、现场、组件检查;task-sync 实际合并时记录,同基线只核验。最终平台准入与任务授权边界另验 |
| 提交格式(主题行/四段 body) | 全部提交 | 主题行 enforced(local),body manual;任务工具生成四段 body,历史 PR 仅作旧版本证据 |
| standards/verification.md | 验收 | 本地 make test-governance + 组合测试;当前证据与历史 scratch 记录分开 |
| standards/multi-repo.md | 跨仓/gitlink | manual;受控历史迁移通道已于 2026-09-30 行使一次(documents/records/2026-09-30-history-migration.md) |
| 工作区回收 | 交付终点 | advisory(task-finish);负例:合入前 finish 拒绝输出 |
| policy/delivery.md(项目收紧) | 需求、长期方向、试验、实施迭代及交付 | manual(人工/Agent 执行):前序人工决策与有范围的连续推进授权;智能体完成 Review、冲突处置和当前 HEAD 的 CI 核验后合入;任务卡提供记录,post-merge 默认只提示,行为回归见 tests/test_task.py |
| policy/delivery.md(项目收紧) | 需求、长期方向、试验、实施迭代及交付 | goal-first:目标/范围/终点一次确认,范围内智能体连续完成实施、验证、Review、合入和安全收口;仅真实决策点需人工;任务卡提供记录,post-merge 默认只提示,行为回归见 tests/test_task.py |
| standards/tool-adaptation.md(draft.8) | 为工具创建规则/钩子实例 | 本组合 CLI/git 级实例已登记:policy/tool-adaptation-matrix.md(A1–A7 逐行定级+正负例证据) |
| 同上(zcode 实例) | zcode 客户端写路径 | policy/tool-adaptation-zcode.md:PreToolUse 写守卫;脚本负例与客户端接线分开,客户端 pending-live |
| core/baseline.md「规范层级」+ documentation.md「记忆分层/机制化」(draft.9) | 层级效力、记忆权威、经验机制化 | manual:本仓 policy/ 仅收紧不放宽;记忆四层按条文执行(任务卡=任务记忆,documents/records=项目记忆,Dev 仓 AGENTS.md 指针已就位) |
@@ -29,7 +29,7 @@
| 原规则/章节 | 项目采用方式 | 原因与风险 | 负责人/复查条件 |
|---|---|---|---|
| baseline 硬边界 1(授权范围) | 高后果双钥匙:改写历史/解除分支保护/删归档/发布——Agent 只准备,用户执行(AGENTS.md 条文) | 单人+Agent 场景下消除单点;风险=用户不在场时高后果操作排队 | weichen;首次触发时复查 |
| delivery.md §2、design-verification.md 的轻量流程默认做法 | 按 [policy/delivery.md](delivery.md) 保留需求、方案、实施与验收的人工节点;代码 Review 与 PR 合入交由智能体,冲突解决且当前 HEAD 的 CI 通过后合入;小任务简化篇幅,阶段内可迭代 | 2026-10-12 用户明确要求智能体 Review 后合入,合入前解决冲突且 CI 通过;其他人工决策与高后果双钥匙边界保留 | weichen;Review、CI 或平台准入条件变化时复查 |
| delivery.md §2、design-verification.md 的轻量流程默认做法 | 按 [policy/delivery.md](delivery.md) 保留阶段产物和验证,移除逐阶段人工签字;目标、范围和终点一次确认后,智能体连续完成范围内交付,只在结果变更、重大取舍、高后果操作或用户专属验收时请求决策 | 2026-10-15 用户要求目标优先、绝不私自扩围、先可用再迭代,并移除可移除的人工环节;独立 Review、证据、平台准入和高后果双钥匙保留 | weichen;目标/授权边界、Review、CI 或平台准入条件变化时复查 |
- 历史记录(2026-09-30)报告 11 个组合仓 main 禁直推、拒绝陈旧候选;当前平台能力须独立重验,本地脚本测试不替代远端证据。
- 规范源码以 gitlink 及其 VERSION 为准,流程启用以本采纳状态及项目条件为准;固定源码版本不代替实际能力证明。治理可靠性修复的命令与证据约定见 [开发门禁](governance.md),本地与客户端/平台能力分别登记;本轮不改变分支保护或发布授权。
+63 -40
View File
@@ -2,53 +2,76 @@
适用:本项目的需求、修复、规范修改和其他交付任务。依据固定版本的
[通用交付流程](../deps/development-guidelines/workflows/delivery.md),本项目收紧为
**需求、方案、实施与验收默认逐阶段人工评审;代码 Review 与 PR 合入由智能体完成;
阶段内迭代,按影响回退,按增量交付**。
本文件是阶段与评审的权威表述;启动、同步、命令证据和回收操作见
**目标、范围和交付终点一次确认;范围内连续推进;问题按是否阻塞目标分流;
先可用、再迭代完善**。代码 Review 和 PR 合入由智能体完成。
本文件是阶段、决策点与连续执行的权威表述;启动、同步、命令证据和回收操作见
[开发门禁](governance.md)。规则的执行能力见 [能力矩阵](tool-adaptation-matrix.md)。
## 授权与阶段评审
## 授权、决策点与连续执行
任务卡默认记为 `manual`。阶段 1–7 完成当前阶段产物并取得人工评审结论后,才进入下一阶段;
阶段 8–9 由智能体执行 Review 和合入,条件见下文「智能体 Review 与 PR 合入」。
评审记录包含阶段、对象版本、评审人、时间、结论、意见及可追溯依据;结论使用
未评审、通过、需修改、拒绝、不适用。人工结论与命令执行证据分开记录;Agent 自审、
测试通过、工具写入或用户沉默均不能代替阶段 1–7 的人工批准,也不能由作者代签独立审核。
任务卡默认记为 `goal-first`。用户的直接请求在目标、允许动作、写入对象和交付终点足够明确时,
即是对该范围的执行授权;方案、审计或只读请求仍不包含业务实施,本地实施不自动包含部署、迁移或共享环境写入。
授权一旦成立,范围内的调查、需求拆解、方案选择、计划、编辑、必要缺陷修复、测试、Review、PR 合入和安全收口连续推进,
不逐阶段、逐文件、逐命令重复请求批准。阶段用于追溯和质量控制,不是默认的人工停顿点。
只有用户明确要求自动或连续推进时,才将对应范围记为 `authorized-continuous`,记录
授权来源、覆盖阶段、允许动作、交付终点、资源约束和停止条件。未覆盖的人工节点仍逐阶段
人工评审;智能体 Review/合入按阶段 8–9 的职责与条件执行。
授权连续推进不免除需求分析、试验判定、测试、代码 Review、证据和平台准入;
既有独立审核要求及高后果操作双钥匙仍有效。智能体合入职责不补齐尚不存在的前序产物。
只有以下情况请求人工决策:
阶段内已授权的调查、编辑、自检、缺陷修复和等价实现可以持续进行,无需逐命令批准。
需求拆解、评估、需求表可以共用一份任务卡,但分别保留阶段结论。小任务缩短篇幅;
确实不适用的内容说明原因,经人工确认或在明确授权的裁剪范围内处理,不能静默跳步。
任务启动检查、独立工作区和收据用于准备现场,不表示任何阶段评审已通过。
- 目标、范围、优先级、验收条件或交付终点将发生变化;
- 多个可行选项会造成不同的用户结果、公开契约、权限/数据语义或持续运维成本,且现有决策无法确定取舍;
- 触及未授权共享环境、外部资源/成本、不可逆或本仓定义的高后果双钥匙操作;
- 用户感受、业务判断、用户持有的凭据/设备或平台 owner 操作使验收无法由可复核证据自动完成。
存在决策点时,只暂停受影响部分,提交具体选项、影响和推荐;其他已授权且不受影响的工作继续。
用户沉默不补齐真实决策点,但 Agent 自审、测试进展和工具记录也不得被包装成新的人工门禁。
独立 Review、证据、平台准入和高后果双钥匙仍有效;它们保证交付质量和安全,不扩大业务授权。
需求拆解、评估、方案和计划可以共用一份任务卡。小任务只记录目标、范围、验收、关键决定和验证;
不适用的阶段标记原因后直接跳过。任务启动检查、独立工作区和收据用于准备现场,不表示业务结果已验证。
## 目标优先、范围控制与问题分流
执行顺序为:
` 授权与安全边界 → 任务目标和系统可用 → 直接阻塞项 → 后续改进 `。
当前任务的完成标准是已批准的验收条件成立、目标用户链路可用,且受影响的既有关键能力没有明确回归。
完成不要求把所有邻近代码、历史欠账、工具噪音和低影响建议同时清零。先形成端到端可用、可验证的最小闭环,
再把体验、结构、性能和治理优化作为独立增量。
新发现按以下标准处理:
| 类别 | 判定 | 当前任务动作 |
|---|---|---|
| 阻塞项 | 直接导致目标无法实现、验收条件失败、系统/关键回归不可用、安全边界违反或必需门禁失败 | 在已授权范围内作最小充分修复;若超出范围,提交最小扩围决策 |
| 有价值非阻塞项 | 当前目标仍可交付,但有具体影响、复发风险或明确后续价值 | 只记录事实、影响和建议归属,不在当前任务修复,不阻塞交付 |
| 低影响噪音 | 不影响目标、可用性、安全、回归或后续决策 | 忽略或在当前记录中一句带过;不新建任务、不阻塞、不扩围 |
“影响目标”只决定问题的优先级,不自动扩大授权。“相关”、“顺手”、“重构更干净”、“以后可能用到”都不是当前实施依据。
Review 只将阻塞项列为必修;非阻塞意见标明后续建议,不得以“更完善”为由拒绝已达标且可用的当前增量。
## 阶段与出口
| 阶段 | 必需产物 | 进入下一阶段的条件 |
|---|---|---|
| 1 需求拆解 | 目标、用户场景、子需求、边界、非目标及待澄清问题 | 人工确认拆解与原始意图一致 |
| 2 需求评估 | 价值、可行性、成本、风险、依赖、现有能力及在途任务重叠;与项目定位、模块职责和公开契约的符合度 | 人工确认取舍;重大未知转入下述受控试验 |
| 3 需求表确认 | 稳定 ID、描述、适配依据、优先级、可判定验收条件、依赖和处理结论 | 人工确认本增量范围;影响实施的关键待核实项已处理 |
| 4 方案设计 | 推荐方案与主要备选、职责和接口、数据与权限影响、失败恢复、待验证假设及试验结论 | 人工批准当前方案版本及剩余风险处理方式 |
| 5 实施计划 | 关联需求的工作项、依赖顺序、责任人、文件或模块范围、测试方法与环境、完成条件及停止条件 | 人工批准当前实施和测试计划;远期工作可保留粗粒度 |
| 6 实施与自检 | 可审查变更、局部测试、计划偏差与迭代记录 | 人工确认当前增量实现产物,必要设计调整已重新获批 |
| 7 正式测试与验收 | 需求到证据映射;正常、异常、边界、回归结果及缺项 | 人工审阅当前候选的验证结果;正式验收前同步并固定被测对象 |
| 1 需求拆解 | 目标、用户场景、子需求、边界、非目标及待澄清问题 | 目标、授权范围和交付终点可执行;只有会改变结果的歧义才触发决策点 |
| 2 需求评估 | 价值、可行性、成本、风险、依赖、现有能力及在途任务重叠;与项目定位、模块职责和公开契约的符合度 | 无需用户取舍的评估由智能体结论;重大未知转入受控试验或具体决策点 |
| 3 需求表确认 | 稳定 ID、描述、适配依据、优先级、可判定验收条件、依赖和处理结论 | 当前增量与授权一致;影响实施的关键事实已核实或显式标注限制 |
| 4 方案设计 | 推荐方案与必要备选、职责和接口、数据与权限影响、失败恢复、待验证假设及试验结论 | 在已批准目标内选定最小充分方案;只有重大取舍触发人工决策 |
| 5 实施计划 | 关联需求的工作项、依赖顺序、责任人、文件或模块范围、测试方法与环境、完成条件及停止条件 | 计划足以执行且不扩大授权;远期工作保留粗粒度但不纳入当前任务 |
| 6 实施与自检 | 可审查变更、局部测试、计划偏差与迭代记录 | 当前增量达到验收条件,范围内阻塞项已闭合,非阻塞项已按价值分流 |
| 7 正式测试与验收 | 需求到证据映射;正常、异常、边界、回归结果及缺项 | 同步并固定被测对象,必需自动验证有有效证据;仅用户可判定的验收单独请求人工结论 |
| 8 代码 Review | 智能体审阅者、对象版本、需求符合性、正确性、维护性、测试充分性及问题闭合记录 | 智能体完成必要重放、整改、补测和复审;当前版本 Review 通过,平台要求的独立批准已满足 |
| 9 合入 | 最新 base/head、当前 HEAD 的 CI、Review、冲突处置和合入结果 | 智能体再次同步,确认冲突已解决、Review 有效且 CI 全部通过,经 PR 执行合入并核验真实结果;无需另请人工合入 |
| 10 合入核验与收口 | 实际合入内容及组件版本、验证依据、成果保存位置、写者状态、清理清单、任务归档安排及适用规划的进展与下一步建议 | 清理前取得人工批准或对应连续推进授权;安全回收后核对结果、闭合任务卡 |
| 10 合入核验与收口 | 实际合入内容及组件版本、验证依据、成果保存位置、写者状态、清理清单、任务归档安排及适用规划的进展与下一步建议 | 证明成果已保存、所有写者已退出并且回收条件满足后,智能体安全回收并闭合任务卡;无法证明时保留现场并请求决策 |
阶段 1–7 和阶段 10 的人工节点仅在明确的连续推进授权范围内按授权执行;
阶段 8–9 按智能体职责执行;各阶段产物及验证条件保留。
各阶段默认按已授权范围连续执行;只有命中本文定义的决策点才暂停受影响部分。
阶段产物、独立 Review、验证条件和平台准入保留;移除的是机械性人工签字,不是质量证据。
正式测试和最终 Review 的顺序不限制设计阶段试验、实施期测试或提前审阅。
文本合并无冲突不证明组合兼容;合入后仍核验真实内容与被测候选是否一致。
多个就绪任务的最终验证与合入按 [合入调度](merge-queue.md) 的采纳状态执行。
新模式生效后,阶段 7–9 在同一目标交付窗口内完成;对象未变时各节点重复核验,
不因记录检查再创建提交或重跑有效 CI。窗口领取不代替人工结论、独立 Review 或平台准入;
不因记录检查再创建提交或重跑有效 CI。窗口领取不代替已触发的必要决策、独立 Review 或平台准入;
未生效时继续既有同步规则。固定后的证据按 [源码外收据流程](governance.md#候选固定前后) 保存。
## 长期方向与任务衔接
@@ -80,7 +103,7 @@
进展更新和建议属于当前任务的收尾产物。跨仓更新遵循对应工作区、版本和评审要求;
更新尚未获批或合入时,任务卡保留待更新内容、负责人和下一动作,不能声称原规划已更新。
**下一步建议不等于启动授权**:没有覆盖该任务的明确授权,建议停留在待确认状态;
当前任务的完成、批准或连续推进授权不自动扩展到新任务。
当前任务的完成或执行授权不自动扩展到新任务。
## 需求表与追溯
@@ -99,13 +122,13 @@
## 设计探索循环
需求分析和设计阶段允许先试验再完善方案,无须先批准尚未能确定的完整设计。
执行试验前提交最小试验计划:待回答的问题或假设、对象和隔离环境、方法、预期判据、
允许副作用、时间或成本边界、停止条件及产物保存或处置方式,并取得人工批准;
已有连续推进授权明确覆盖该试验范围时,引用该授权。
执行试验前记录最小试验计划:待回答的问题或假设、对象和隔离环境、方法、预期判据、
允许副作用、时间或成本边界、停止条件及产物保存或处置方式。试验在已授权目标内、可逆、已隔离且不新增外部成本时直接执行;
命中决策点时再请求对应授权。
在已批准范围内可以反复尝试:
`初步方案 → 批准试验范围 → 原型或测试 → 分析证据 → 修订方案与计划 → 结果评审`。
`初步方案 → 核对授权与试验边界 → 原型或测试 → 分析证据 → 修订方案与计划 → 核对结果`。
记录成功、失败及不确定结果,以及下一步继续探索、采用、换方案或暂停的理由。
超出范围、触及未授权共享环境、达到预算或持续无有效进展时,暂停受影响试验并提交决策。
@@ -131,8 +154,8 @@
| 变化 | 执行动作与评审边界 |
|---|---|
| 已批准范围内的内部组织、等价实现、局部缺陷修正 | 当前阶段继续调整、自测并记录;按阶段表由人工或智能体完成出口评审 |
| 技术路线、模块职责、公开契约、数据或权限设计、外部影响,或计划的关键依赖、交付顺序和资源约束变化 | 暂停受影响工作,修订方案或计划,经人工重审后继续;已有明确授权覆盖该类调整时按其边界执行 |
| 已批准范围内的内部组织、等价实现、局部缺陷修正 | 当前阶段继续调整、自测并记录;满足阶段表的客观出口条件后继续 |
| 技术路线、模块职责、公开契约、数据或权限设计、外部影响,或计划的关键依赖、交付顺序和资源约束变化 | 先判断是否改变已批准用户结果或持续成本;否则在范围内调整并补测,是则暂停受影响部分并提交决策 |
| 目标、范围、优先级或验收条件变化 | 返回需求评估和需求表,取得对应批准后更新下游方案、计划和验证 |
| 影响不明 | 先调查;仍无法判定时提交人工决定,不自行归入细节调整 |
@@ -149,11 +172,11 @@
### 智能体 Review 与 PR 合入
已获实施及交付授权的任务,代码 Review 和所有 PR 合入必须由智能体执行,包括任务卡闭合 PR、
机器人和紧急通道。用户负责阶段评审及按双钥匙要求亲手调整平台保护;合入统一经智能体的
机器人和紧急通道。用户只负责已触发的必要决策及按双钥匙要求亲手调整平台保护;合入统一经智能体的
同步、Review、当前 HEAD CI 和平台准入流程完成,不由人工直接点击合入。
本条即该范围内的合入执行授权,条件满足后由智能体直接合入,无需用户再次批准或亲手点击。
用户明确限定为只读、方案、本地修改、草稿 PR 或禁止合入时,以该任务边界为准。
前序阶段的必要人工结论仍须齐备;合入职责不扩大需求、业务实施、清理或高后果操作授权。
前序阶段的必要产物和已触发决策结论仍须齐备;合入职责不扩大需求、业务实施、部署/迁移或高后果操作授权。
智能体按以下顺序执行:
@@ -181,9 +204,9 @@
### 清理与恢复
清理另行核对授权及条件。仅回收本任务登记工作区,按开发门禁核对当前权威目标、
已授权任务的标准安全收口无需另行人工批准。仅回收本任务登记工作区,按开发门禁核对当前权威目标、
父子仓成果、未跟踪和 ignored 文件、独有提交与引用、活动 Git 操作以及所有写者退出。
无法证明成果已保存时保留现场;本地删除与远端分支删除分别报告。
无法证明成果已保存或写者已退出时保留现场并只请求该具体决策;本地删除与远端分支删除分别报告。
清理前保存任务主记录与证据。执行回收时将命令输出用 evidence 的 `RECEIPT` 模式保存到
待删目录之外;回收后的结果写入后续闭合记录,不能向已删除的任务卡补写收据。
+2 -2
View File
@@ -3,8 +3,8 @@
本文件细化根 AGENTS.md 的启动、验证和回收规则。通用语义以固定的
`deps/development-guidelines` 为准;门禁实现及回归用例随本仓版本管理。
需求表、设计试验、迭代调整、阶段产物、人工决策及智能体 Review/合入按
[迭代交付](delivery.md) 执行。任务卡分别记录人工批准、智能体审阅者及对象版本;
本地 evidence 仅记录 SELF 命令,不能证明人工批准或提升为 CI/独立审阅证据。
[迭代交付](delivery.md) 执行。任务卡分别记录授权边界、必要人工决策点、智能体审阅者及对象版本;
本地 evidence 仅记录 SELF 命令,不能证明授权/人工决策或提升为 CI/独立审阅证据。
## 启动与恢复
+6 -6
View File
@@ -20,7 +20,7 @@ Dev 目标身份使用实际托管实例、仓库 ID 与 `refs/heads/main`;其
采纳后的首版使用每个目标一份 Gitea 调度 Issue,由一个明确协调者维护,标为 manual。
任务卡引用 Issue 条目及尝试标识,原任务仍是授权、需求和阶段的状态权威。
共享记录已建立:[Dev main 调度记录 #518](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/issues/518),包含实际托管实例、仓库 ID 和目标引用。用户已指定当前交付智能体负责后续人工协调,weichen 保留阶段评审和平台保护操作;具体任期与接管约束以该记录为准。
共享记录已建立:[Dev main 调度记录 #518](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/issues/518),包含实际托管实例、仓库 ID 和目标引用。用户已指定当前交付智能体负责后续协调,weichen 保留必要决策和平台保护操作;具体任期与接管约束以该记录为准。
本轮仅协调已获授权的三个真实任务,入队/阻塞/当前窗口及时维护于 #518。普通、闭合、机器人与紧急通道都必须经智能体和同一目标窗口;owner-only 合入账号与无自动合入 workflow/活跃 webhook 的当场清单另留 SELF 收据。用户不亲手合入;API 不具备区分人工与智能体共用账号的身份隔离,协调能力保持 manual。
必须记录目标、条目、执行者、源 HEAD、依赖、顺序、尝试、最终 base/head、组件清单、
@@ -57,18 +57,18 @@ SYNC_REQUIRED 不整体降级为 READY;local 与 delivery 用独立结果和
## 交付阶段与窗口
人工评审和独立 Review 要求不变;提前审阅可以并行,最终有效性核验和受影响重放在窗口内完成。
入队与领取不构成人工批准,也不授权跳过缺失阶段。
必要人工决策点和独立 Review 要求不变;提前审阅可以并行,最终有效性核验和受影响重放在窗口内完成。
入队与领取不扩大授权,也不授权跳过缺失产物或门禁。
| 原阶段 | 采纳后的调度衔接 |
|---|---|
| 1–6 需求、设计、计划、实施 | 各任务并行推进,在既有授权内局部检查;内容就绪时登记交付条目 |
| 7 正式测试与验收 | 领取窗口后实际同步最新 main,固定候选,完成正式验证并取得必要人工结论 |
| 7 正式测试与验收 | 领取窗口后实际同步最新 main,固定候选并完成正式验证;仅无法自动判定的业务验收取得人工结论 |
| 8 代码 Review | 对同一固定候选核验有效 Review、独立重放和问题闭合;同步或整改后按影响复审 |
| 9 合入 | 保持窗口,核验最新 base/head、全部必需 CI 和平台准入,经 PR 合入并查询真实结果 |
| 10 核验与收口 | 核对合入内容和组件后释放窗口;部署、清理另按原授权,闭合 PR 单独排队 |
| 10 核验与收口 | 核对合入内容和组件后释放窗口;部署另按原授权,标准安全清理连续执行,闭合 PR 单独排队 |
等待人工结论超过预算时进入 blocked 并安全释放窗口;再次领取时判断原结论及证据是否仍适用。
等待必要人工决策超过预算时进入 blocked 并安全释放窗口;再次领取时判断原结论及证据是否仍适用。
窗口不得长期持有等待新的需求或方案批准;必要前置安排应在入队时说明。
普通失败和需要决策只阻塞当前条目及依赖项;未知合入结果则保持该目标在 reconciling,先对账。
+5 -5
View File
@@ -7,15 +7,15 @@
| 要求 | 执行能力及范围 | 机制 | 复验入口 |
|---|---|---|---|
| A1 启动/恢复 | 本地命令阻断;首次调用及阶段授权仍属 manual | 默认严格 READY;显式 local 验证既有任务/R0及 LOCAL_READY;start 固定严格用途,resume 验证后导入 | `tests/test_task.py`、`tests/test_task_recovery.py`、`tests/test_evidence.py` |
| A1 启动/恢复 | 本地命令阻断;首次收据必需,不创建阶段人工停顿 | 默认严格 READY;显式 local 验证既有任务/R0及 LOCAL_READY;start 固定严格用途,resume 验证后导入 | `tests/test_task.py`、`tests/test_task_recovery.py`、`tests/test_evidence.py` |
| A2 同步 | 本地命令阻断;最终准入由平台承担 | 合并父仓、保护组件分支、物化固定指针、同基线幂等、完整最终 SHA | `tests/test_task.py`、`make test-worktree` |
| A3 集成分支 | 本地提交闸;平台状态须独立核验 | pre-commit 拒绝 main/master 与坏分支名 | 本地 hook 负例;远端缺 CI/陈旧候选/直推等负例另验 |
| A4 提交格式 | 主题行 enforced(local),body manual | commit-msg 校验宽度/句点;任务工具生成四段 body | `tests/test_task.py`;人工核对 PR/卡片同源 |
| A5 回收 | 本地命令检查;写者退出由 owner 确认 | 登记根目录、锁/操作状态、父子仓与唯一文件、合入核验 | `tests/test_task.py` |
| A4 提交格式 | 主题行 enforced(local),body manual | commit-msg 校验宽度/句点;任务工具生成四段 body | `tests/test_task.py`;智能体核对 PR/卡片同源 |
| A5 回收 | 本地命令检查;写者退出须可证明,无法证明时才请求 owner 决策 | 登记根目录、锁/操作状态、父子仓与唯一文件、合入核验 | `tests/test_task.py` |
| A6 秘密 | 本地脱敏及 CI 获取边界;权限与宿主隔离另验 | 命令/输出/摘要脱敏,凭据不持久写 Git 配置 | `tests/test_evidence.py`、`tests/test_ci_credentials.py` |
| A7 证据 | 本地 SELF 收据;外部来源独立核验 | 首次捕获、完整脱敏输出/摘要、对象记录、原样导入 | `tests/test_evidence.py`;CI/审阅链接另核 |
| A8 阶段评审与迭代 | manual(人工/Agent 执行);前序人工决策,智能体 Review/合入;模板和提示不构成批准身份校验或全流程阻断 | policy/delivery.md;任务卡分别记录阶段结论、Review、冲突、当前 HEAD 的 CI 和合入;post-merge 默认仅提示 | `tests/test_task.py` 核对模板及钩子不自动写入;智能体核对 Review、冲突及匹配 HEAD 的 CI/平台准入;人工批准范围仍须核验 |
| A9 长期方向与后续任务 | manual;模板不校验规划有效性或自动调度任务 | policy/delivery.md;PROJECT.md 提供规划入口,任务卡关联规划/里程碑并记录下一步建议 | `tests/test_task.py` 核对生成字段与未授权默认值;人工核对当前规划、进展、重复任务和建议依据 |
| A8 阶段记录与迭代 | goal-first;模板默认连续执行,仅真实决策点需人工,没有全流程授权强制 | policy/delivery.md;任务卡分别记录阶段状态、决策点、Review、冲突、当前 HEAD 的 CI 和合入;post-merge 默认仅提示 | `tests/test_task.py` 核对 goal-first 模板及钩子不自动写入;智能体核对授权范围、Review、冲突及匹配 HEAD 的 CI/平台准入 |
| A9 长期方向与后续任务 | manual;模板不校验规划有效性或自动调度任务 | policy/delivery.md;PROJECT.md 提供规划入口,任务卡关联规划/里程碑并记录下一步建议 | `tests/test_task.py` 核对生成字段与未授权默认值;智能体核对当前规划、进展、重复任务和建议依据,新任务仍不自动获得授权 |
| A10 交付窗口 | manual 受控试行;无自动互斥或接管 | policy/merge-queue.md;Issue #518 与协调者已登记,本候选固定实际合入规范版本;用户授权本轮三个任务并指定单一协调者;已实测平台机制及当前写者清单,当前候选组合与最终准入另核验 | tests/test_merge_queue_trial.py 临时 Git 场景 SELF;平台机制独立 REPLAY 已完成(范围见 Issue518);真实三任务及复盘待完成 |
| A11 固定后证据 | manual 选择源码外位置;工具捕获绝对未用路径/原始输出;无 OS 冻结 | policy/governance.md;RECEIPT 捕获,后续授权闭合再原样导入 | `tests/test_evidence.py` 固定对象、权限、覆盖拒绝、原样导入与幂等 |
+16 -16
View File
@@ -200,9 +200,9 @@ cmd_start() {
- 工作区:${wt}(worktree);分支:${name}
${parent_note}
- 授权与交付终点:<本次允许的动作与终点;未授权事项写明>
- 交付模式:manual(前序人工决策,智能体 Review/合入);其他阶段明确授权后可记为 authorized-continuous
- 交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进)
- 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)
- 自动推进授权:无;授权范围:无;授权来源:无;授权终点:无;停止条件:无(未授权)
- 人工决策点:仅限目标/范围/验收变更、重大取舍、高后果操作或无法自动判定的业务验收
- 当前阶段:需求拆解;当前增量:I1(待定义)
- 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位)
@@ -228,26 +228,26 @@ ${parent_note}
- 实施计划引用:待填写(含增量与需求 ID)
- 测试计划引用:待填写(含需求 ID 与验收条件)
## 阶段评审
## 阶段记录
| 阶段 | 对象版本 | 结论 | 评审人 | 时间 | 依据 |
| 阶段 | 对象版本 | 状态 | 决策/执行者 | 时间 | 依据 |
|---|---|---|---|---|---|
| 需求拆解 | 待定 | 未评审 | — | — | — |
| 需求评估 | 待定 | 未评审 | — | — | — |
| 需求表确认 | 待定 | 未评审 | — | — | — |
| 方案设计 | 待定 | 未评审 | — | — | — |
| 实施计划 | 待定 | 未评审 | — | — | — |
| 实施与自检 | 待定 | 未评审 | — | — | — |
| 正式测试与验收 | 待定 | 未评审 | — | — | — |
| 代码 Review | 待定 | 未评审 | — | — | — |
| 合入 | 待定 | 未评审 | — | — | — |
| 合入核验与收口 | 待定 | 未评审 | — | — | — |
| 需求拆解 | 待定 | 待执行 | — | — | — |
| 需求评估 | 待定 | 待执行 | — | — | — |
| 需求表确认 | 待定 | 待执行 | — | — | — |
| 方案设计 | 待定 | 待执行 | — | — | — |
| 实施计划 | 待定 | 待执行 | — | — | — |
| 实施与自检 | 待定 | 待执行 | — | — | — |
| 正式测试与验收 | 待定 | 待执行 | — | — | — |
| 代码 Review | 待定 | 待执行 | — | — | — |
| 合入 | 待定 | 待执行 | — | — | — |
| 合入核验与收口 | 待定 | 待执行 | — | — | — |
## 探索试验与迭代
| 增量/试验 | 假设 | 范围 | 判断和停止条件 | 批准依据 | 结果 | 变更影响 | 需重审补测 |
| 增量/试验 | 假设 | 范围 | 判断和停止条件 | 授权/决策依据 | 结果 | 变更影响 | 需重审补测 |
|---|---|---|---|---|---|---|---|
| 待定义 | — | — | — | 未批准 | NOT_RUN | 待评估 | 待评估 |
| 待定义 | — | — | — | 待核对 | NOT_RUN | 待评估 | 待评估 |
## 同步记录
+7 -8
View File
@@ -705,11 +705,10 @@ class TaskLifecycleTests(unittest.TestCase):
self.assertTrue((wt / ".task/feature-new.md").is_file())
card = (wt / ".task/feature-new.md").read_text()
self.assertIn("make precheck", card)
self.assertIn("交付模式:manual(前序人工决策,智能体 Review/合入)", card)
self.assertIn("authorized-continuous", card)
self.assertIn("交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进)", card)
self.assertIn("人工决策点:仅限目标/范围/验收变更、重大取舍、高后果操作或无法自动判定的业务验收", card)
self.assertNotIn("authorized-continuous", card)
self.assertIn("流程依据:仓库根目录 policy/delivery.md", card)
for field in ("授权范围", "授权来源", "授权终点", "停止条件"):
self.assertIn(f"{field}:无", card)
for field in ("当前阶段", "当前增量", "方案引用", "实施计划引用", "测试计划引用"):
self.assertIn(field + ":", card)
self.assertIn("## 交付调度\n", card)
@@ -725,15 +724,15 @@ class TaskLifecycleTests(unittest.TestCase):
self.assertIn("路径按仓库根目录定位,归档后不变", planning)
self.assertIn("只引用唯一正文", planning)
self.assertIn("| ID | 描述 | 项目符合度及依据 | 优先级 | 验收条件 | 依赖 | 结论 |", card)
reviews = card.split("## 阶段评审\n", 1)[1].split("\n## ", 1)[0]
self.assertIn("| 阶段 | 对象版本 | 结论 | 评审人 | 时间 | 依据 |", reviews)
reviews = card.split("## 阶段记录\n", 1)[1].split("\n## ", 1)[0]
self.assertIn("| 阶段 | 对象版本 | 状态 | 决策/执行者 | 时间 | 依据 |", reviews)
for stage in ("需求拆解", "需求评估", "需求表确认", "方案设计", "实施计划", "实施与自检",
"正式测试与验收", "代码 Review", "合入", "合入核验与收口"):
row = next(line for line in reviews.splitlines() if line.startswith(f"| {stage} |"))
self.assertEqual(row.split("|")[3].strip(), "未评审")
self.assertEqual(row.split("|")[3].strip(), "待执行")
self.assertNotIn("通过", reviews)
self.assertIn("## 探索试验与迭代", card)
for field in ("假设", "范围", "判断和停止条件", "批准依据", "结果", "变更影响", "需重审补测"):
for field in ("假设", "范围", "判断和停止条件", "授权/决策依据", "结果", "变更影响", "需重审补测"):
self.assertIn(field, card.split("## 探索试验与迭代\n", 1)[1].split("\n## ", 1)[0])
self.assertIn("## 规划进展与下一步\n", card)
next_step = card.split("## 规划进展与下一步\n", 1)[1].split("\n## ", 1)[0]