From 8b769e84629cec328d0f8e61c27c935ea3a1e185 Mon Sep 17 00:00:00 2001 From: agent-exec-transport Date: Sun, 18 Oct 2026 03:01:40 +0000 Subject: [PATCH] agent-exec transport 5d18af54ea86ffda69020fd99fcce3d7/a7f266a2e5df --- AGENTS.md | 173 ++++++++----------------------- PROJECT.md | 2 +- policy/adoption.md | 2 +- policy/delivery.md | 38 ++++++- policy/governance.md | 19 +--- policy/merge-queue.md | 76 +------------- policy/tool-adaptation-matrix.md | 2 +- scripts/task.sh | 2 +- 8 files changed, 88 insertions(+), 226 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index de09a87b..5d1a05b6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,168 +2,77 @@ 本仓开发遵循 Development-Guidelines(见 `deps/development-guidelines`,gitlink 固定版本): 核心规则与术语见其 `core/`,按任务触发阅读 `standards/` 专题;通用交付依据为 `workflows/delivery.md`。 -本项目的需求、设计试验、实施调整及交付**必读 [policy/delivery.md](policy/delivery.md)**: -目标、范围和交付终点一次确认;范围内的分析、方案、实施、修复、验证、代码 Review、 -PR 合入及安全收口由智能体连续推进。只在目标/范围/验收条件变更、存在会影响用户结果的 -重大取舍、触及高后果操作,或业务验收必须由用户判定时请求人工决策。智能体解决冲突并确认 -当前 HEAD 的 CI 通过后执行合入,无需另请人工操作。具体决策点、版本及授权条件见 -policy/delivery.md。 +本项目的需求、设计试验、实施调整及交付**必读 [policy/delivery.md](policy/delivery.md)**(交付规则唯一权威): +目标、范围和交付终点一次确认;范围内的分析、方案、实施、修复、验证、代码 Review、PR 合入及安全收口由智能体连续推进。 +只在目标/范围/验收条件变更、存在会影响用户结果的重大取舍、触及高后果操作,或业务验收必须由用户判定时请求人工决策。 +智能体解决冲突并确认当前 HEAD 的 CI 通过后执行合入,无需另请人工操作。本文件是入口摘要,细则以所链文档为准。 ## 立即生效的最高优先级(强制) -- 在既有授权与强制安全边界内,**先交付用户明确要求的产物**。不得用基础设施、工具治理、 - 通用化、加固、重构或“以后可能用到”替代当前目标;尤其禁止把简单 Markdown、配置或说明 - 修改擅自升级成平台、框架、自动化系统或大规模工程。 -- 采用最小充分实现:先让目标可用、系统可用并通过最小直接验证,然后立即停止并交付;体验、 - 结构、性能与治理完善必须作为后续独立增量,不得拖延当前结果。 -- 只修复直接阻塞目标、可用性、明确验收条件或强制安全门禁的问题。高价值非阻塞项只简记, - 低影响噪音直接忽略;Review/迭代循环只围绕阻塞项,阻塞项闭合即结束。 -- 测试与风险成比例:实施中只跑最小直接检查;完整/长耗时套件仅在最终候选、规范明确要求或 - 实际影响面确有必要时运行一次。禁止在每个小文档、配置或 adapter 修改后重复全量测试。 -- 编排成本不得超过任务本身。实施、修复与测试按 AGENT-EXECUTION.md 的候选和尝试上限调度; - 不限制单次 CLI 的推理时长、工具次数、规划方式或首次写文件时间。除非用户明确要求或已有证据 - 证明是当前目标的直接阻塞,否则不得新增嵌套控制器、额外 worktree、复杂收据体系或新架构。 - 执行路由是手段,不能成为推迟用户产物的理由。 +- **先交付用户产物**:在既有授权与强制安全边界内,先交付用户明确要求的产物;不得用基础设施、工具治理、通用化、加固、重构或“以后可能用到”替代当前目标,禁止把简单 Markdown、配置或说明修改擅自升级成平台、框架、自动化系统或大规模工程。 +- **最小充分实现**:目标可用、系统可用并通过最小直接验证后立即停止并交付;体验、结构、性能与治理完善作为后续独立增量,不得拖延当前结果。 +- **只修阻塞项**:只修复直接阻塞目标、可用性、明确验收条件或强制安全门禁的问题;高价值非阻塞项只简记,低影响噪音直接忽略;Review/迭代只围绕阻塞项,阻塞项闭合即结束。 +- **测试与风险成比例**:实施中只跑最小直接检查;完整/长耗时套件仅在最终候选、规范明确要求或影响面确有必要时运行一次,禁止每个小文档、配置或 adapter 修改后重复全量测试。 +- **编排成本不得超过任务本身**:按 AGENT-EXECUTION.md 的候选和尝试上限调度,不限制单次 CLI 的推理时长、工具次数、规划方式或首次写文件时间;除非用户明确要求或有证据证明直接阻塞,不新增嵌套控制器、额外 worktree、复杂收据体系或新架构;执行路由不能成为推迟用户产物的理由。细则见 [最高优先级](policy/delivery.md#最高优先级目标兑现与最小充分交付)。 ## 任务目标与范围(强制) -- 执行优先级固定为:授权与安全边界 → 本次任务目标和系统可用 → 阻塞目标的必要问题 → - 非阻塞改进。完成标准是已批准验收条件成立且受影响系统保持可用,不是把所有附近问题一并清零。 -- 绝对禁止私自扩大范围。影响目标的问题仅在既有授权内作最小充分修复;必要修复超出范围时,说明 - 阻塞、最小扩围和影响,取得授权后再做。“相关”、“顺手”或“更完美”不构成扩围授权。 -- 新发现按对当前目标的影响分流:阻塞验收、导致不可用/明确回归、违反安全边界或必需门禁失败的问题必须 - 处理;其余不阻塞交付。只有具备明确影响和后续价值的非阻塞问题才记录,不为低影响噪音制造新任务。 -- 先实现端到端可用和可验证的最小闭环,再将体验、结构、性能及治理优化作为独立增量迭代;非阻塞 Review - 意见不得阻止当前目标交付。 +- 优先级固定为:授权与安全边界 → 本次任务目标和系统可用 → 阻塞目标的必要问题 → 非阻塞改进。完成标准是已批准验收条件成立且受影响系统保持可用,不是清零所有附近问题。 +- 绝对禁止私自扩大范围:影响目标的问题只在既有授权内作最小充分修复;必要修复超出范围时,说明阻塞、最小扩围和影响,取得授权后再做。“相关”“顺手”“更完美”不构成扩围授权。 +- 新发现按影响分流:阻塞验收、导致不可用/明确回归、违反安全边界或必需门禁失败的必须处理;其余不阻塞交付,只有明确影响和后续价值的才记录。先实现端到端可用的最小闭环,非阻塞 Review 意见不阻止交付(见 [问题分流](policy/delivery.md#目标优先范围控制与问题分流))。 ## 实施执行路由(强制) -- 实施、修复、测试与审阅调度**必读根目录 [AGENT-EXECUTION.md](AGENT-EXECUTION.md)**(唯一项目执行路由配置)。通用工程 Agent 契约(agent-per-unit 隔离执行、会话独立、JSON 终态收据、无 host 隐式代写、受控 transport/admission 准入)遵循 Development-Guidelines [core/baseline.md(硬边界 8)](deps/development-guidelines/core/baseline.md) 与 [standards/agent-execution.md](deps/development-guidelines/standards/agent-execution.md);项目根目录配置仅声明角色候选顺序与适配器参数。 -- 产生仓库变更的实施按可独立实施的单元拆分;任务卡记 `实施执行:agent-per-unit(配置:AGENT-EXECUTION.md)`。 -- 外部 Agent 在新进程/隔离工作区执行一个有界单元;host 负责计划、拆解、范围审阅、权威验证、规范提交、 - PR/CI/合入、证据与任务元数据及安全清理。Worker 不得提交、推送、开或合 PR、部署、改路由或派遣同伴。 -- 实施、修复与测试的正常候选只有 Cursor、Antigravity(`agy`)和 PI,顺序以配置为准。每个候选对 - 安全可恢复失败(`unavailable`,或外部无副作用已被机制证明的 `failed-clean`)最多 3 次全新尝试,然后才换下一候选。 - 单元包的 `network=false`/`external_cost=false` 只是声明,不是证明;没有强制隔离或可信对账时, - 已启动的失败尝试即使私有克隆可精确恢复也记 `failed-unknown`。成功还须从该 CLI 实际事件信封解出 - 有效的 `completed` 终态记录(schema 写在 worker 提示词中);缺失或无效即 fail closed。 - 三者都安全耗尽后,才允许一次全新的 Codex CLI 紧急尝试。Codex 平时只用于规划、方案设计、实施计划 - 或独立 Review,不进入这三个正常角色。`fallback_to_host` 为 `never`。安全耗尽不发出 - host-fallback-authorized,终态为 unavailable 或 blocked,不授权 host 撰写该单元。旧值 - `all-unavailable` 仍可解析,同样不产生 host 撰写授权。 -- 显式 fail-stop 立即停止,不重试、不换候选、不启动紧急尝试:`failed-unknown`、`scope-expansion`、 - `blocked`、`cancelled`、无效配置、未对账 Git 状态与安全失败。总超时,以及 stdin/stdout/stderr - 都没有活动的空闲超时,归入 `failed-unknown`。 -- 一次尝试只在显式终态失败、进程退出、总超时或上述空闲超时时结束。CLI 可在目标、范围与安全边界内 - 自主检查、计划、测试并迭代。 -- 实施变更只经成功 transport 由 `scripts/agent-exec apply` 集成,或由 pre-commit `admit` 按精确内容 - 做本地完整性核对。本地 HMAC 历史与该钩子只是本地完整性/篡改证据(SELF),不是 GATE、可信身份, - 也不防同一主机 OS 用户;本地记录缺失或无效仍拒绝,交付信任只来自精确 HEAD 的 CI 或独立 REPLAY。 - host 直接管理的豁免只有 `.task/**`、`docs/superpowers/specs/**` 与 - `docs/superpowers/plans/**`。host 不直接撰写实施单元。细则见 - [policy/delivery.md](policy/delivery.md) 与 [policy/governance.md](policy/governance.md)。 - 不削弱 goal-first、严格范围、先可用、独立 Review、证据、平台准入与高后果双钥匙规则。 +- 调度**必读 [AGENT-EXECUTION.md](AGENT-EXECUTION.md)**(唯一项目执行路由配置);通用契约遵循 guidelines [core/baseline.md(硬边界 8)](deps/development-guidelines/core/baseline.md) 与 [standards/agent-execution.md](deps/development-guidelines/standards/agent-execution.md)。产生仓库变更的实施按可独立实施的单元拆分,任务卡记 `实施执行:agent-per-unit(配置:AGENT-EXECUTION.md)`。 +- 外部 Agent 在新进程/隔离工作区执行一个有界单元;host 负责计划、拆解、范围审阅、权威验证、规范提交、PR/CI/合入、证据与任务元数据及安全清理。Worker 不得提交、推送、开或合 PR、部署、改路由或派遣同伴。 +- 实施、修复与测试的正常候选只有 Cursor、Antigravity(`agy`)和 PI,顺序以配置为准;每个候选对安全可恢复失败(`unavailable`,或外部无副作用已被机制证明的 `failed-clean`)最多 3 次全新尝试后才换候选。`network=false`/`external_cost=false` 只是声明;没有强制隔离或可信对账时,已启动的失败尝试记 `failed-unknown`。成功须从该 CLI 实际事件信封解出有效的 `completed` 终态记录,缺失或无效即 fail closed。 +- 三者都安全耗尽后才允许一次全新的 Codex CLI 紧急尝试;Codex 平时只用于规划、方案设计、实施计划或独立 Review。`fallback_to_host` 为 `never`(旧值 `all-unavailable` 同样不授权):安全耗尽不发出 host-fallback-authorized,终态为 unavailable 或 blocked,host 不撰写该单元。 +- 显式 fail-stop 立即停止,不重试、不换候选、不启动紧急尝试:`failed-unknown`、`scope-expansion`、`blocked`、`cancelled`、无效配置、未对账 Git 状态与安全失败;总超时及 stdin/stdout/stderr 都无活动的空闲超时归入 `failed-unknown`。一次尝试只在显式终态失败、进程退出、总超时或空闲超时时结束,CLI 可在目标、范围与安全边界内自主检查、计划、测试并迭代。 +- 实施变更只经成功 transport 由 `scripts/agent-exec apply` 集成,或由 pre-commit `admit` 按精确内容核对。本地 HMAC 历史与该钩子只是本地完整性/篡改证据(SELF),不是 GATE、可信身份,也不防同一主机 OS 用户;本地记录缺失或无效仍拒绝,交付信任只来自精确 HEAD 的 CI 或独立 REPLAY。host 直接管理的豁免只有 `.task/**`、`docs/superpowers/specs/**` 与 `docs/superpowers/plans/**`,host 不直接撰写实施单元。细则见 [policy/delivery.md](policy/delivery.md#agent-实施单元与主模型职责) 与 [policy/governance.md](policy/governance.md);不削弱 goal-first、严格范围、先可用、独立 Review、证据、平台准入与高后果双钥匙规则。 ### 阶段与会话隔离(强制) -- 需求分析、方案、设计、计划、实施、测试、Review 与验收默认各启动一个全新会话;不同阶段、 - 不同实施单元不得复用同一 CLI 会话、conversation、thread 或 session。 -- Review 必须由当前主模型执行,或交给**全新且独立**的 CLI session。绝对禁止实施者使用原 session - 通过 `continue`、`resume`、conversation ID、session ID/路径或等价机制继续充当评审者。 -- 独立评审只接收固定的目标/需求、base/head、实际 diff、测试与证据;默认不转交实施聊天、思维过程、 - 中间自评或原会话历史。确需补充信息时只提供可复核产物,不把实施上下文整体灌入评审会话。 -- 每阶段记录工具、模型、stage、attempt/session 身份及 `fresh_session`。工具不暴露 session ID 时标 - `not-observable`,但仍须用新进程并禁用恢复/续聊;无法证明会话独立时,不得把结果标为独立 Review。 +- 需求分析、方案、设计、计划、实施、测试、Review 与验收默认各启动一个全新会话;不同阶段、不同实施单元不得复用同一 CLI 会话、conversation、thread 或 session。 +- Review 由当前主模型或**全新且独立**的 CLI session 执行;绝对禁止实施者通过 `continue`、`resume`、conversation/session ID、session 路径或等价机制继续充当评审者。 +- 评审只接收固定的目标/需求、base/head、实际 diff、测试与证据,默认不转交实施聊天、思维过程、中间自评或原会话历史;确需补充时只提供可复核产物。 +- 每阶段记录工具、模型、stage、attempt/session 身份及 `fresh_session`;工具不暴露 session ID 时标 `not-observable`,但仍须新进程并禁用恢复/续聊;无法证明会话独立时不得标为独立 Review(见 [会话隔离](policy/delivery.md#阶段会话隔离与独立-review))。 ## UI 设计门禁(强制) -- 本仓一切界面生成/修改**先读根目录 `DESIGN.md`**(四原则:美观、现代、简洁、易用), - 再动手;违反视为设计系统缺陷,不是风格偏好。 -- 颜色/圆角/字号只消费 `@ui/tokens.css` 令牌(字号走 `--fs-ui-*` 标尺);动效只用 - `@ui/motion.css` 的 `mk-*` 工具类;折叠一律用 `@ui` Collapsible 原语,禁止 `
`。 -- 守护测试(UI 仓与 Frontend 仓各一份 `design-guard.test.ts`)以棘轮拦截新增裸色值、 - 私有 `@keyframes` 与行内字号;风格调整须在同一变更集中关联 UI 令牌 PR 与 Dev 的 - `DESIGN.md`/gitlink 组合 PR,并验证精确组件 SHA(跨仓不要求两个文件出现在同一 PR)。 +- 本仓一切界面生成/修改**先读根目录 `DESIGN.md`**(四原则:美观、现代、简洁、易用)再动手;违反视为设计系统缺陷,不是风格偏好。 +- 颜色/圆角/字号只消费 `@ui/tokens.css` 令牌(字号走 `--fs-ui-*` 标尺);动效只用 `@ui/motion.css` 的 `mk-*` 工具类;折叠一律用 `@ui` Collapsible 原语,禁止 `
`。 +- 守护测试(UI 仓与 Frontend 仓各一份 `design-guard.test.ts`)以棘轮拦截新增裸色值、私有 `@keyframes` 与行内字号;风格调整须在同一变更集中关联 UI 令牌 PR 与 Dev 的 `DESIGN.md`/gitlink 组合 PR,并验证精确组件 SHA(跨仓不要求两个文件出现在同一 PR)。 - 异步状态只有一个所有者。事件按 seq 处理,过期事件丢弃。 ## 任务启动门禁(强制) -- **新需求分流检查**:每次接到新需求,在创建分支前以远端为准运行 `make task-triage REQ='<需求>' TRIAGE_RECEIPT=<路径>` 检查接纳中的大任务集成分支(`branch_kind=initiative` 且 `accepting_requirements=true`);有候选时再运行 `make task-triage-decide TRIAGE_RECEIPT=<路径> VERDICT=JOIN|NEW … REASON='<理由>'`;随后 `make task-start … TRIAGE_RECEIPT=<路径>` 核验收据,通过后才建分支。三态分流:`JOIN`(建立对应大任务的子任务 `make task-start KIND=child INITIATIVE=feature/ NAME=feature/- TRIAGE_RECEIPT=<路径>`)、`NEW`(建立普通任务或新的大任务 `make task-start [KIND=initiative] NAME=feature/ TRIAGE_RECEIPT=<路径>`)、`DECISION_REQUIRED`(存在候选时的待决策状态;改变范围/优先级的加入由人工决策)。 -- 任务启动或恢复后,**第一次项目写操作前**通过 - `RECEIPT=/tmp/<本次唯一名称>.json CMD="make precheck" make evidence` 运行一次启动检查并保存 - 完整脱敏收据(不要求已有任务卡);按输出完成必读。`SHARED_WORKSPACE_BUSY / SYNC_REQUIRED / - REMOTE_UNVERIFIED` 均不得进入写入流程;失败后排除原因再启动,不把缓存远端当最新事实。 -- 新任务运行 `make task-start NAME=feature/ TRIAGE_RECEIPT=<分流收据路径> PRECHECK_RECEIPT=/tmp/<本次唯一名称>.json`, - 建立独立 worktree 与任务卡并导入首次收据。恢复已有登记任务在原 worktree 用 - `make task-resume PRECHECK_RECEIPT=/tmp/<本次唯一名称>.json` 验证并原样导入收据。 - 默认 delivery 要求严格 READY;局部恢复接口、启用条件与旧收据处理见 [开发门禁](policy/governance.md#启动与恢复)。任务中途不重复启动检查。 -- **分支层级**:任务分支一律从权威 `origin/main` 切(`task-start` 已强制);同批互不依赖的 - 子任务用同一 R0 的兄弟分支。确有顺序依赖需从父 feature 分支切子分支时(collaboration.md - 允许的堆叠例外):启动命令增加 `PARENT=feature/<父slug> PARENT_PR=<父PR链接>`, - 任务卡记录主干 R0、父分支及其 SHA、父 PR;子分支命名 `/<父slug>-<子题>`, - 不嵌 SHA;合入顺序固定父→子;父合入后子分支须 `make task-sync` 并入最新 main 并把 PR - base 改回 main,方可声明可合入(分支保护要求 head 含 origin/main,未同步必被拦)。 -- **验收、请求审核、合入前**各运行一次 `make task-sync`,并运行 `make task-pr-check`(大任务收口用 `FINAL=1`)核验 PR base/head 门禁;完成声明的 precheck、task-sync、 - 测试三段输出由 `make evidence` 写入任务卡(见「证据与验证门禁」),不手抄。 -- **多个分支交付 / CI 调度**:先读 [合入调度](policy/merge-queue.md),核对采纳状态、协调者、 - 记录及当前窗口。新模式尚未启用时保留既有同步节点;启用后最终同步至合入核验共用窗口, - 同基线 `task-sync` 只核验,固定后检查用源码外 RECEIPT 保存(见 [证据流程](policy/governance.md#候选固定前后))。 -- 合入后核对所有写者退出;能从当前会话、进程、锁与工作区状态证明时,智能体在 - **已登记任务 worktree 根目录**运行 - `TASK_WRITERS_STOPPED=1 make task-finish`。父子仓改动、未跟踪/ignored 唯一文件先保存或显式处置;删除被拒时 - 保留现场并按原因处理,禁止强删兜底;无法证明写者已退出时才请 owner 确认。放弃未合入工作用 - `make task-finish ABANDON="--abandon <原因>"` 并记录原因;放弃不豁免现场保护。 -- **任务卡闭合(防欠账)**:默认在合入前闭合——最终同步/合入前,在任务 worktree 运行 - `make task-close SELF=1`:本分支任务卡改为"已完成(合入前闭合)"、主记录写入本 PR 链接并归档至 - `.task/archive/`,随同一 PR 合入,该 PR 的合并提交即落地记录,无需单独闭合 PR 或合入后回填。 - 它会提交并推送当前任务分支,属于已授权交付的收口;只处理本分支的卡。主检出 pull/merge 的 - post-merge 钩子仅提示,不自动写入或推送。主检出的 `make task-close`(建 `feature/card-close-*` - 分支+PR)或任务分支内 `FOLD=--fold` 只用于已合入但未闭合的遗留卡;仍须核对只包含目标任务卡, - 否则停止扩围。precheck 的 `[cards]` 行报告欠账,验收前应清零;遗留卡的闭合 PR 同样由智能体按 - policy/delivery.md 完成 Review、冲突处置及当前 HEAD 的 CI 核验后合入。 +- **新需求分流**:创建分支前以远端为准运行 `make task-triage REQ='<需求>' TRIAGE_RECEIPT=<路径>` 检查接纳中的大任务(`branch_kind=initiative` 且 `accepting_requirements=true`);有候选时运行 `make task-triage-decide TRIAGE_RECEIPT=<路径> VERDICT=JOIN|NEW … REASON='<理由>'`;`make task-start … TRIAGE_RECEIPT=<路径>` 核验收据通过后才建分支。`JOIN` 建子任务(`KIND=child INITIATIVE=feature/ NAME=feature/-`),`NEW` 建普通任务或新大任务(`[KIND=initiative] NAME=feature/`),`DECISION_REQUIRED` 为有候选时的待决策状态,改变范围/优先级的加入由人工决策。已登记在父卡 `## 子任务登记` 的计划内 L2 子任务可免分流收据。 +- **启动检查**:启动或恢复后、第一次项目写操作前运行一次 `RECEIPT=/tmp/<本次唯一名称>.json CMD="make precheck" make evidence` 保存完整脱敏收据并按输出完成必读;`make task-start` 省略 `PRECHECK_RECEIPT` 时自动捕获,恢复在原 worktree 用 `make task-resume PRECHECK_RECEIPT=<路径>`。`SHARED_WORKSPACE_BUSY / SYNC_REQUIRED / REMOTE_UNVERIFIED` 均不得进入写入流程,失败后排除原因再启动,不把缓存远端当最新事实。默认要求严格 READY,任务中途不重复;局部恢复见 [开发门禁](policy/governance.md#启动与恢复)。 +- **分支层级**:一律从权威 `origin/main` 切,同批互不依赖的子任务用同一 R0 的兄弟分支。确有顺序依赖的堆叠例外:加 `PARENT=feature/<父slug> PARENT_PR=<父PR链接>`,卡记主干 R0、父分支及 SHA、父 PR,命名 `/<父slug>-<子题>` 不嵌 SHA,合入顺序父→子,父合入后子须 `make task-sync` 并把 PR base 改回 main 才可合入(见 [policy/delivery.md](policy/delivery.md) 与 [开发门禁](policy/governance.md#启动与恢复))。 +- **同步与 PR 门禁**:验收、请求审核、合入前各运行一次 `make task-sync` 与 `make task-pr-check`(大任务收口用 `FINAL=1`);三段完成证据由 `make evidence` 写入任务卡。层级、任务通道与分级门禁见 [层级与分级门禁](policy/delivery.md#层级任务通道与分级门禁),多分支交付的最终窗口见 [合入调度](policy/delivery.md#合入调度)。 +- **回收**:合入后核对所有写者退出;能从当前会话、进程、锁与工作区状态证明时,智能体在**已登记任务 worktree 根目录**运行 `TASK_WRITERS_STOPPED=1 make task-finish`,无法证明时才请 owner 确认。父子仓改动、未跟踪/ignored 唯一文件先保存或显式处置;删除被拒时保留现场,禁止强删兜底。放弃未合入工作用 `make task-finish ABANDON="--abandon <原因>"` 并记录原因,不豁免现场保护。 +- **任务卡闭合**:默认在最终同步/合入前于任务 worktree 运行 `make task-close SELF=1`(卡改为“已完成(合入前闭合)”、写入本 PR 链接并归档,随同一 PR 合入;会提交并推送本分支,只处理本分支的卡)。post-merge 钩子仅提示。主检出 `make task-close` 或 `FOLD=--fold` 只用于已合入未闭合的遗留卡,须核对只含目标卡,其闭合 PR 同样经智能体 Review、冲突处置与当前 HEAD CI 后合入。precheck `[cards]` 欠账验收前须清零。 ## 证据与验证门禁(强制) -原则:**「声明已就位」≠「能力已就位」**。任何来源(用户输入、方案、报告、他人或自己的 -叙述)的结果声明都不是证据;证据 = 命令 × 被测对象 SHA × 可复核输出,三者齐备才算事实。 -规范依据:guidelines `standards/verification.md`「声明与证据来源」(draft.10)。 - -- **来源三分**:产出物(任务卡、PR、报告、review 结论)中的通过类断言须标注来源—— - `GATE`(可核验身份及固定对象的 CI/受信执行器)/ `REPLAY`(独立审阅者的重跑记录)/ - `SELF`(作者或本地工具记录,含 precheck)。工具写入、摘要和来源标签不提升可信等级。 - 合入与验收须核验 GATE 的运行链接/身份及 SHA,或 REPLAY 的独立审阅者、命令和对象; - 本地 evidence 只生成 SELF,不能靠 `SRC` 自行升级;与重验不一致时以重验为准。 -- **证据由工具写入**:命令输出进入任务卡/PR 一律经 `CMD="<命令>" make evidence` 写入 - (卡内写摘要块:脱敏命令、前后 HEAD、退出码、输出尾部与摘要;含执行前后对象和完整脱敏输出的 - 完整收据一次性存于仓外记录路径,见 policy/governance.md)。凭据只经环境或受保护文件 - 引用;命令、输出和摘要统一脱敏,摘要只证明记录完整性,不证明执行者身份。手抄、转写、 - 凭记忆重构的输出视为无效证据;补写输出与伪造测试同级红线。 -- **完成声明三段输出**(precheck / task-sync / 测试)必须由 evidence 工具写入任务卡, - PR 描述引用任务卡段落,不另手抄。测试通过的权威源是 CI(`.gitea/workflows/ci.yaml`, - 在 PR HEAD 上 `make test`+`make build`),本地输出降级为辅助线索。 -- **验收即重放**:请求审核后,审阅者先在评审环境重放最小重放集(关键门禁命令 + 变更 - 直接相关检查)再读作者证据;重放与声明不一致直接阻塞,并作为失实事件登记。 -- **外部事实零信任**:用户/文档/旧报告里的「可用/已就位」必须先执行 `policy/facts.md` - 登记表中对应验证命令(或当场实测)才能写进产出物;无法当场复核的结论标 `[未经证实]`, - 禁止裸写。登记表每条事实带 `last_verified` 与 TTL,precheck `[facts]` 报告过期项, - `make facts-verify` 逐条重验。 +- **声明不是证据**:「声明已就位」≠「能力已就位」;任何来源的结果声明都不是证据,证据 = 命令 × 被测对象 SHA × 可复核输出(guidelines `standards/verification.md`「声明与证据来源」)。 +- **来源三分**:通过类断言标注 `GATE`(可核验身份及固定对象的 CI/受信执行器)/ `REPLAY`(独立审阅者的重跑记录)/ `SELF`(作者或本地工具记录,含 precheck)。工具写入、摘要和标签不提升可信等级,本地 evidence 只生成 SELF,不能靠 `SRC` 升级;合入与验收须核验 GATE 的运行链接/身份及 SHA,或 REPLAY 的审阅者、命令和对象,与重验不一致以重验为准。 +- **证据由工具写入**:命令输出只经 `CMD="<命令>" make evidence` 写入(卡内写摘要块,完整脱敏收据一次性存于仓外,见 [开发门禁](policy/governance.md#本地记录与独立证据));凭据只经环境或受保护文件引用。手抄、转写、凭记忆重构的输出无效,补写输出与伪造测试同级红线。 +- **完成声明三段输出**(precheck / task-sync / 测试)由 evidence 写入任务卡,PR 描述引用不另手抄;测试通过的权威源是 CI(`.gitea/workflows/ci.yaml` 在 PR HEAD 上 `make test`+`make build`),本地输出只是辅助线索。 +- **验收即重放**:请求审核后,审阅者先在评审环境重放最小重放集(关键门禁命令 + 变更直接相关检查)再读作者证据;不一致直接阻塞并登记为失实事件。 +- **外部事实零信任**:用户/文档/旧报告中的“可用/已就位”须先执行 `policy/facts.md` 对应验证命令或当场实测才能写入产出物,无法复核标 `[未经证实]`;登记项带 `last_verified` 与 TTL,precheck `[facts]` 报告过期项,`make facts-verify` 逐条重验。 - **诚实出口**:未执行/未验证是合法状态,如实标注(NOT_RUN/未验证)优于补写。 ## 提交与 PR -- 主题行:英文祈使句一行(≤100 列,不以句点结尾);body 写 `Why: / Evidence: / Impact: / Refs:` - 四段;任务卡与 PR 描述为同一份文档。 +- 主题行:英文祈使句一行(≤100 列,不以句点结尾);body 写 `Why: / Evidence: / Impact: / Refs:` 四段;任务卡与 PR 描述为同一份文档。 - 跨仓 gitlink 变更须经组合验证(`make test`)后在 Dev 仓推进;受保护分支经 PR 合入。 - **等待 CI** 只用一条阻塞命令 `make ci-wait SHA=<完整 SHA>`(15 s 轮询、失败即停、默认 20 分钟超时); 禁止手写 `sleep` + `curl` 轮询循环,禁止对同一 SHA 重复/并行轮询;等待期间去做其他独立工作。 -- **高后果操作双钥匙**:改写历史、解除/变更分支保护、删除归档引用、发布版本——Agent 只准备 - 方案与命令,由用户确认并亲手执行;Agent 不得自行实施(baseline 硬边界 1 的授权范围要求)。 -- 模块边界、公开契约与隔离档位见 `policy/modules/`(如有)与 PROJECT.md。 -- 验证命令见 PROJECT.md「验证」节;完成声明的三段输出按「证据与验证门禁」节由 - `make evidence` 写入任务卡,不手抄。 +- **高后果操作双钥匙**:改写历史、解除/变更分支保护、删除归档引用、发布版本——Agent 只准备方案与命令,由用户确认并亲手执行;Agent 不得自行实施(baseline 硬边界 1 的授权范围要求)。 +- 模块边界、公开契约与隔离档位见 `policy/modules/`(如有)与 PROJECT.md;验证命令见 PROJECT.md「验证」节。 - 首次克隆本仓后运行 `make setup` 启用本地 pre-commit 钩子。 -- 治理脚本改动须运行 `make test-governance`:临时真实仓库覆盖正常、拒绝及异常路径;该套件 - 同时纳入 `make test`。证据、工作区和 CI 凭据边界的操作细则见 `policy/governance.md`。 +- 治理脚本改动须运行 `make test-governance`(临时真实仓库覆盖正常、拒绝及异常路径,已纳入 `make test`);证据、工作区和 CI 凭据边界细则见 `policy/governance.md`。 ## Gitea 与 Git 访问事实(2026-09-30 实测;登记表 `policy/facts.md`) diff --git a/PROJECT.md b/PROJECT.md index 33e78049..5a6c64a6 100644 --- a/PROJECT.md +++ b/PROJECT.md @@ -63,7 +63,7 @@ U2 起实施与部署分别评审。 ## 验证 -多个分支向 Dev main 交付时按[并行开发与串行合入](policy/merge-queue.md)执行:等待分支不追 main,轮到后同步一次、固定候选、运行当前 HEAD 的完整 CI,再由智能体合入。实际采纳范围见[采纳记录](policy/adoption.md)。 +多个分支向 Dev main 交付时按[合入调度](policy/delivery.md#合入调度)执行:等待分支不追 main,轮到后同步一次、固定候选、运行当前 HEAD 的完整 CI,再由智能体合入。实际采纳范围见[采纳记录](policy/adoption.md)。 `make test` 先核对子模块工作树与固定指针,再运行治理脚本、公开边界、跨仓指针、库及各模块 测试。实际目标以根 Makefile 为准。`make test-governance` 可独立检查开发门禁,使用临时 diff --git a/policy/adoption.md b/policy/adoption.md index acfea99a..97238e44 100644 --- a/policy/adoption.md +++ b/policy/adoption.md @@ -7,7 +7,7 @@ - 版本权威:父仓 gitlink - 批准/生效依据:Dev PR#1(19/19 正负例 + make test);guidelines PR#1 - 规范源码版本:`0.1.0-draft.12`,实际合入提交 `2688fd2be6a52c0bf110e7e6366b6f291ab5e4eb`(Guidelines PR #7);本仓 gitlink(`deps/development-guidelines`)固定该源码版本,版本权威为父仓 gitlink。 -- 合入调度通用版本:`0.1.0-draft.11`,实际合入提交 `2f5b19872be2a4597838a4131ad75d1be089ee5e`(Guidelines PR #5);draft.12 未修改其合入调度文件(standards/merge-queue.md、templates/merge-queue.md)。Dev 采用 [manual 串行合入规则](merge-queue.md):并行开发,轮到后才同步、跑最终 CI 并由智能体合入。该规则不要求先完成全写者审计或第二轮试行,也不宣称自动互斥已经实现。 +- 合入调度通用版本:`0.1.0-draft.11`,实际合入提交 `2f5b19872be2a4597838a4131ad75d1be089ee5e`(Guidelines PR #5);draft.12 未修改其合入调度文件(standards/merge-queue.md、templates/merge-queue.md)。Dev 采用 [manual 串行合入规则](delivery.md#合入调度):并行开发,轮到后才同步、跑最终 CI 并由智能体合入。该规则不要求先完成全写者审计或第二轮试行,也不宣称自动互斥已经实现。 - 过程计划固定:Documents PR #96 实际合入 `129cc3579d9c9e3edfb46c99270d65f3e1dad0a0`,包含既有主干文档及获批 U1–U6 计划;当前进展以任务/PR 记录为准。 | 规范/工作流 | 适用条件与范围 | 执行方式/证据 | diff --git a/policy/delivery.md b/policy/delivery.md index 42751976..8552b384 100644 --- a/policy/delivery.md +++ b/policy/delivery.md @@ -246,7 +246,7 @@ Review 只将阻塞项列为必修;非阻塞意见标明后续建议,不得 正式测试和最终 Review 的顺序不限制设计阶段试验、实施期测试或提前审阅。 文本合并无冲突不证明组合兼容;合入后仍核验真实内容与被测候选是否一致。 -多个就绪任务的最终验证与合入按 [合入调度](merge-queue.md) 的采纳状态执行。 +多个就绪任务的最终验证与合入按 [合入调度](#合入调度) 的采纳状态执行。 新模式生效后,阶段 7–9 在同一目标交付窗口内完成;对象未变时各节点重复核验, 不因记录检查再创建提交或重跑有效 CI。窗口领取不代替已触发的必要决策、独立 Review 或平台准入; 未生效时继续既有同步规则。固定后的证据按 [源码外收据流程](governance.md#候选固定前后) 保存。 @@ -344,6 +344,42 @@ Review 只将阻塞项列为必修;非阻塞意见标明后续建议,不得 对 head/base、依赖、需求或契约变化重新判断证据及评审的有效性,按影响补测和复审。 阶段状态、测试状态、代码审核状态及合入状态分别记录,不以一个“完成”互相替代。 +## 合入调度 + +状态:active;执行方式:manual。目标是多个分支并行开发,同时避免各分支随 `main` 移动反复同步、 +解决冲突和重跑最终 CI。本节只安排 Dev `refs/heads/main` 的最终交付顺序;需求、授权、阶段状态和 +证据仍在原任务卡,受保护分支的最终准入仍由 Gitea 执行。 + +- **队列**:Dev main 只用一份[合入队列 #518](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/issues/518), + 只记录顺序和当前窗口:任务/PR、owner、依赖、就绪状态、当前 base/head、CI、合入结果。 +- **职责**:协调智能体维护顺序和窗口;任务 owner 负责分支内容和必要整改;窗口内的同步、冲突处置、 + Review、当前 HEAD CI 核验和所有 PR 合入由智能体执行。 +- **范围**:只有推进 Dev main 的 PR 使用窗口,即 standalone/修复 PR、L1→main 与遗留卡闭合 PR;L2→L1 合入不排窗口 + (见 [层级、任务通道与分级门禁](#层级任务通道与分级门禁))。组件仓按各自目标分支单独安排。 +- **入队与顺序**:入队表示内容基本就绪且已取得所需授权,不要求已含最新 main。依赖未完成或待必要 + 人工决策的任务标 `blocked`,不占窗口。默认按就绪顺序;`fix/`、`hotfix/` 优先,插队须在 #518 写明原因。 +- **等待**:等待分支继续独立开发、提交和局部检查,但不因 main 前进而合并最新 main、解决无关冲突、 + 推送新最终候选或重跑完整最终 CI,只记“待轮到后同步”;开发期检查不作为之后新 HEAD 的准入证据。 + +同一时间只给一个 Dev main 任务最终窗口。领取前确认前一窗口已释放、依赖已完成,并在 #518 记录 +任务、PR、owner、当前 source HEAD 和领取时间。窗口内按序执行: + +1. 运行一次 `make task-sync` 纳入最新 `origin/main`,解决冲突并核对组件组合; +2. 完成并提交候选内容(含任务卡),固定 `base_sha` 与最终 `head_sha`; +3. 运行任务要求的本地检查,固定后的收据保存在源码外(见[候选固定前后](governance.md#候选固定前后)),不为记结果改变 HEAD; +4. 对固定 HEAD 运行完整 CI(`test`、`test-pg`、`svc-realcombo`),用 `make ci-wait SHA=<完整 SHA>` 等待; +5. 完成当前 HEAD 的必要人工决策(如有)和智能体 Review,合入前再核对 main、head、冲突和三项 CI; +6. 以固定 `head_commit_id`、`force_merge=false` 经 PR 合入,回读实际 main 与候选一致后释放窗口,结果写回 #518。 + +同一 base/head 下,验收、Review 和合入前的 `make task-sync` 只核验(`changed=0`),不创建额外提交, +也不重复仍有效的完整 CI。目标 base、候选 HEAD、组件 pin、检查定义或相关环境任一变化,旧最终结果即失效; +受影响任务回队等待新窗口,不复制旧绿色状态、不为省 CI 降低检查。窗口外仍有 main 推进时按对象变化处理并记录。 + +冲突、代码/Review/CI 失败或等待必要人工决策时,当前任务保存现场、标 `blocked` 并释放窗口,其它分支继续 +局部开发。合入请求超时或结果不明时先查询 PR 与 main 的真实状态,查清前暂停该目标,不重复发送合入请求。 +本流程不建设、也不得推断已存在自动队列、优先级、合并列车、批量预测合并、原子租约或旧执行者 fencing, +不修改分支保护、CI workflow 或 runner 配置。 + ## 合入、清理与恢复 ### 智能体 Review 与 PR 合入 diff --git a/policy/governance.md b/policy/governance.md index 5b1eeba8..41904cbe 100644 --- a/policy/governance.md +++ b/policy/governance.md @@ -16,21 +16,8 @@ 源码外;未知终态(`failed-unknown`)与 `scope-expansion` 的隔离工作区须保留待对账,不得静默丢弃。 清理须有精确恢复或保留现场的可复核证据。 -实施、修复与测试的正常候选只有 Cursor、Antigravity(`agy`)和 PI。每个候选对安全可恢复失败 -最多 3 次全新尝试,全部安全耗尽后才允许一次 Codex CLI 紧急尝试。Codex 平时只用于规划、方案设计、 -实施计划或独立 Review。`fallback_to_host` 为 `never`。安全耗尽不发出 host-fallback-authorized, -终态为 unavailable 或 blocked,不授权 host 撰写实施单元。显式 fail-stop 立即停止。一次尝试只在显式终态失败、进程退出、总超时, -或 stdin/stdout/stderr 都没有活动的空闲超时时结束;推理时长、工具次数、规划方式和首次写文件时间 -都不是结束条件。CLI 可在目标、范围与安全边界内自主检查、计划、测试并迭代。路由细则见 -[迭代交付](delivery.md)。 - -实施变更进入仓库,只通过成功 transport 的 `scripts/agent-exec apply`,或 pre-commit `admit` -对暂存内容的本地完整性核对。本地 HMAC 执行历史与该钩子只记作本地完整性/篡改证据(SELF), -不是 GATE、可信身份,也不防同一主机 OS 用户;本地记录缺失或无效仍拒绝,交付信任来自精确 HEAD 的 -CI 或独立 REPLAY。host 可以直接管理的豁免只有 `.task/**`、`docs/superpowers/specs/**` -与 `docs/superpowers/plans/**`。host 不直接撰写实施单元。`failed-unknown`、`scope-expansion`、 -无效配置、未对账 Git 状态与安全失败都不授权继续路由或代写。`network=false`/`external_cost=false` -声明不证明外部干净,已启动的失败尝试在没有强制隔离或可信对账时记 `failed-unknown`。 +候选、尝试上限、Codex 紧急尝试、fallback、fail-stop、尝试结束条件,以及 transport/admit +与 host 豁免路径,以[迭代交付](delivery.md#agent-实施单元与主模型职责)为唯一权威。 ## 启动与恢复 @@ -57,7 +44,7 @@ make task-start NAME=feature/my-task TRIAGE_RECEIPT=/tmp/my-task-triage.json PRE 默认 `TASK_WORK_MODE=delivery`,继续要求严格 READY 和当前目标一致。 工作区忙或落后时先由 owner 保存现场并同步;远端不可达时只继续不依赖新鲜基线的阅读和分析。 -局部恢复接口已具备,正式交付仍按[合入调度](merge-queue.md)的单一最终窗口执行。 +局部恢复接口已具备,正式交付仍按[合入调度](delivery.md#合入调度)的单一最终窗口执行。 启用后,既有任务可以显式选择 local,保持原 R0,标记落后,继续已授权局部工作: ```bash diff --git a/policy/merge-queue.md b/policy/merge-queue.md index 480515b4..cd24ad33 100644 --- a/policy/merge-queue.md +++ b/policy/merge-queue.md @@ -1,74 +1,4 @@ -# 并行开发与串行合入 +# 并行开发与串行合入(已并入) -状态:active;执行方式:manual。目标是让多个分支并行开发,同时避免所有分支随着 -`main` 持续移动而反复同步、解决冲突和重跑最终 CI。 - -本规则只安排 Dev `refs/heads/main` 的最终交付顺序。各任务的需求、授权、阶段状态和证据 -仍保存在原任务卡;受保护分支的最终准入仍由 Gitea 执行。 - -## 队列与职责 - -- Dev main 使用一份[合入队列 #518](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/issues/518)。 -- 队列只记录顺序和当前窗口:任务/PR、owner、依赖、就绪状态、当前 base/head、CI、合入结果。 -- 协调智能体维护顺序和窗口;任务 owner 负责分支内容和必要整改;窗口内的同步、冲突处置、Review、当前 HEAD CI 核验和所有 PR 合入由智能体执行。 -- 普通功能 PR、修复 PR 和任务卡闭合 PR 都会移动 main,因此使用同一队列。组件仓按各自目标分支单独安排。 - -入队表示内容基本就绪且已取得该任务所需授权,不要求分支已经包含不断移动的最新 main。 -依赖未完成或仍待必要人工决策的任务标为 `blocked`,不占窗口。默认按就绪顺序处理;紧急插队须在 -#518 写明原因。 - -## 开发与等待 - -等待中的分支继续独立开发、提交和运行必要的局部检查,但不因为别的任务合入 main 就自动: - -- 合并最新 main; -- 解决与最终交付无关的冲突; -- 推送新的最终候选; -- 重跑完整的最终 PR CI。 - -main 前进时,等待任务只记录“待轮到后同步”。开发期检查可以按任务需要运行,但不能作为之后 -新 HEAD 的最终准入证据。 - -## 最终交付窗口 - -同一时间只给一个 Dev main 任务最终窗口。领取窗口前,协调智能体确认前一窗口已经释放、依赖 -已完成,并在 #518 记录任务、PR、owner、当前 source HEAD 和领取时间。 - -窗口内按以下顺序执行: - -1. 运行一次 `make task-sync`,纳入当时最新的 `origin/main`,解决冲突并核对组件组合。 -2. 完成需要进入候选的代码、文档和任务卡内容,提交后固定 `base_sha` 与最终 `head_sha`。 -3. 运行任务要求的本地检查;固定后的命令收据保存在源码外,避免为了记结果再改变 HEAD。 -4. 对固定 PR HEAD 运行现有完整 CI;当前必需作业为 `test`、`test-pg`、`svc-realcombo`。 -5. 完成当前 HEAD 的必要人工决策结论(如有)和智能体 Review。合入前再次核对 main、head、冲突和三项 CI。 -6. 智能体使用固定 `head_commit_id`、`force_merge=false` 经 PR 合入,回读实际 main 与候选内容一致后释放窗口。 - -同一 base/head 下,验收、Review 和合入前的 `make task-sync` 只核验,输出 `changed=0`,不创建 -额外提交,也不重复仍然有效的完整 CI。 - -## 对象变化与失败 - -以下任一对象变化都会使旧的最终结果失效:目标 base、候选 HEAD、组件 pin、检查定义或与结果 -相关的环境。受影响任务保留旧结果的适用对象,回到队列等待新窗口;不得复制旧绿色状态或为了 -省 CI 而降低检查。 - -冲突、代码/Review/CI 失败或等待必要人工决策时,当前任务保存现场、标为 `blocked` 并释放窗口, -其它分支继续局部开发。合入请求超时或返回不明时,先查询 PR 和 main 的真实状态;结果查清前 -保持该目标暂停,不重复发送合入请求。 - -若窗口之外仍有 main 推进,当前固定候选按对象变化处理。协调智能体记录实际推进和受影响任务, -然后继续按队列安排;不要求为启用本规则证明所有历史写者、所有角色或自动互斥机制已经覆盖。 - -## 验收标准 - -一次排队交付满足以下条件即完成: - -- 等待任务没有仅为追 main 而反复生成最终候选或重跑最终 CI; -- 轮到的任务只在窗口内同步最新 main,冲突在固定候选前解决; -- 实际合入的 HEAD 拥有当前必需 CI 和有效 Review; -- 合入由智能体执行,实际 main 内容与受审候选一致; -- 窗口结果写回 #518,随后才处理下一任务。 - -本规则不建设自动优先级、合并列车、批量预测合并、原子租约、旧执行者 fencing,也不修改 -分支保护、CI workflow 或 runner 配置。将来需要自动队列时另行设计;不得从本 manual 流程推断 -这些能力已经存在。 +本规则已并入 [policy/delivery.md 合入调度](delivery.md#合入调度),以该节为唯一权威; +本文件只为保持旧链接可用而保留。 diff --git a/policy/tool-adaptation-matrix.md b/policy/tool-adaptation-matrix.md index b5efa38f..88ddb3b5 100644 --- a/policy/tool-adaptation-matrix.md +++ b/policy/tool-adaptation-matrix.md @@ -16,7 +16,7 @@ | A7 证据 | 本地 SELF 收据;外部来源独立核验 | 首次捕获、完整脱敏输出/摘要、对象记录、原样导入 | `tests/test_evidence.py`;CI/审阅链接另核 | | A8 阶段记录与迭代 | goal-first + agent-per-unit(AGENT-EXECUTION.md);模板默认连续执行,仅真实决策点需人工,没有全流程授权强制;实施/修复/测试仅 Cursor、agy、PI,每候选对安全可恢复失败最多 3 次全新尝试,全部安全耗尽后一次 Codex CLI 紧急尝试;Codex 平时仅规划、设计、计划或独立 Review;显式 fail-stop 立即停止;不限制推理时长、工具次数、规划方式或首次写文件时间;集成经成功 transport 的 agent-exec apply,或 pre-commit admit 精确内容来源;host 豁免仅为 .task/** 与 docs/superpowers/specs/**、plans/**;host 不直接实施;fallback_to_host 为 never;安全耗尽不发出 host-fallback-authorized,终态为 unavailable 或 blocked | policy/delivery.md、AGENT-EXECUTION.md;任务卡分别记录阶段状态、决策点、Agent 实施收据(配置摘要/角色/候选/attempt/CLI-模型/终态/transport/紧急尝试/源码外路径)、Review、冲突、当前 HEAD 的 CI 和合入;post-merge 默认仅提示 | `tests/test_task.py` 核对 goal-first/agent-per-unit 模板、正常路由、尝试上限、fail-stop、空闲超时与 apply/admit 来源表述,及钩子不自动写入;`scripts/agent-exec validate`(CI)与 parser·adapter·controller 假 CLI 契约(Development-Manager internal/agentexec 测试,经 deps/development-manager 钉住)为本地 SELF 强制行为;已安装 provider/model 身份待 U5,远端平台准入为 GATE;智能体核对授权范围、实施单元边界、Review、冲突及匹配 HEAD 的 CI/平台准入 | | A9 长期方向与后续任务 | manual;模板不校验规划有效性或自动调度任务 | policy/delivery.md;PROJECT.md 提供规划入口,任务卡关联规划/里程碑并记录下一步建议 | `tests/test_task.py` 核对生成字段与未授权默认值;智能体核对当前规划、进展、重复任务和建议依据,新任务仍不自动获得授权 | -| A10 交付窗口 | manual;无自动互斥或接管 | [合入调度](merge-queue.md)与 #518:同一目标一个最终窗口,等待分支不追 main;轮到后同步、固定、验证并由智能体合入 | 每个实际 PR 核对窗口记录、精确 HEAD 三项 GATE、Review 和合入后 main;不要求额外试行或全写者审计 | +| A10 交付窗口 | manual;无自动互斥或接管 | [合入调度](delivery.md#合入调度)与 #518:同一目标一个最终窗口,等待分支不追 main;轮到后同步、固定、验证并由智能体合入 | 每个实际 PR 核对窗口记录、精确 HEAD 三项 GATE、Review 和合入后 main;不要求额外试行或全写者审计 | | A11 固定后证据 | manual 选择源码外位置;工具捕获绝对未用路径/原始输出;无 OS 冻结 | policy/governance.md;RECEIPT 捕获,后续授权闭合再原样导入 | `tests/test_evidence.py` 固定对象、权限、覆盖拒绝、原样导入与幂等 | ## 失败处理 diff --git a/scripts/task.sh b/scripts/task.sh index 1a2b8aac..a64e6d01 100755 --- a/scripts/task.sh +++ b/scripts/task.sh @@ -393,7 +393,7 @@ EOF - 调度状态:未入队;调度记录:无 - entry_id:无;attempt_id:无;窗口执行者:无 - 固定候选:无(base/head、组件与相关配置引用实际尝试) -- 调度依据:policy/merge-queue.md;新模式启用前按既有交付门禁 +- 调度依据:policy/delivery.md#合入调度 - 固定后证据:源码外 RECEIPT;实际结果后按授权原样导入和闭合 EOF cat <<'EOF'