agent-exec transport 5d18af54ea86ffda69020fd99fcce3d7/a7f266a2e5df

This commit is contained in:
agent-exec-transport
2026-10-18 03:01:40 +00:00
parent a28318c97a
commit 8b769e8462
8 changed files with 88 additions and 226 deletions
+1 -1
View File
@@ -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 记录为准。
| 规范/工作流 | 适用条件与范围 | 执行方式/证据 |
+37 -1
View File
@@ -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 合入
+3 -16
View File
@@ -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
+3 -73
View File
@@ -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#合入调度),以该节为唯一权威;
本文件只为保持旧链接可用而保留。
+1 -1
View File
@@ -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` 固定对象、权限、覆盖拒绝、原样导入与幂等 |
## 失败处理