Files
Agent-System-Dev/policy/merge-queue.md
T
weichen 98d08347bd Integrate current task recovery and accepted planning contracts
Why:
Preserve work merged by concurrent tasks while adopting versioned dependency workspaces.

Evidence:
SELF task receipts record conflict detection, all 96 task/recovery/cutover cases, all 33 evidence cases and 5 component identity cases. Documents links and requirements were replayed after preserving both planning entries.

Impact:
Keep upstream idempotent sync, local resume and source-external receipt rules; adapt fixed-guidelines readiness and ignored component identity validation. Remove only obsolete index links and retain their physical Git metadata.

Refs:
Authoritative main57bcb17ea212a531186b6e21617a7f3bea65a791; Documents4a26798000c39cc59ba0c2cc6328f5c8f10dcb32; dependency-workspace R15.
2026-10-13 17:38:24 +00:00

13 KiB
Raw Blame History

最终验证与合入调度(候选条文 r1)

状态:approved(r1 条文作为实施计划基线);执行模式:未切换;日期:2026-10-13(Asia/Shanghai);规范采纳负责人:weichen。 r1 条文来源提交为 913b214f2826a50b3dab65f79d9ebf83e84f2519;Documents 实施与测试计划 r1@ba4044d57e38d0887dd425d052abf26b20a28bf4 已于 2026-10-13 获用户「批准」。阶段结论与执行进展按 迭代交付 记录在任务主记录,候选固定后的结论保存在关联 PR 与源码外收据中;规范及计划批准不等于模式已启用。 现行规则仍以根 AGENTS.md、迭代交付、开发门禁 和已采纳的固定规范来源为准。 本分支已实施 CLI 同步/恢复及源码外证据基础,自检依据见任务主记录及固定后记录;通用条文和实施计划已经各自 PR 合入,本候选组合固定实际合入版本。线上队列、CI 分流与平台保护尚未切换,不承诺自动调度能力已就位。

通用规范与项目职责

通用正文的唯一候选来源是 Development-Guidelines 的 standards/merge-queue.md, 配套模板为该仓 templates/merge-queue.md,候选内容版本 0.1.0-draft.11。 本仓仅细化目标、入口、阶段、预算和采纳条件,不复制通用调度正文。 通用候选已经 Guidelines PR #5 合入为 2f5b19872be2a4597838a4131ad75d1be089ee5e;本候选 components.lock.json 固定的规范包含该提交及上述文件。Dev 组合验收、平台正负例、全部正常写入者覆盖及模式切换条件满足前,本文件保持 approved/pending-activation,不标 active。

Dev 目标身份使用实际托管实例、仓库 ID 与 refs/heads/main;其他组件仓各有自己的目标队列。 跨仓组合按任务中的依赖关系先交付组件,再固定父仓组合;保留其他任务已经合入的依赖和治理能力。 队列仅安排工作,受保护分支最终准入继续由 Gitea 或等价受信入口负责。

项目调度记录

采纳后的首版使用每个目标一份 Gitea 调度 Issue,由一个明确协调者维护,标为 manual。 任务卡引用 Issue 条目及尝试标识,原任务仍是授权、需求和阶段的状态权威。 共享记录已建立:Dev main 调度记录 #518,包含实际托管实例、仓库 ID 和目标引用。用户已指定当前交付智能体负责后续人工协调,weichen 保留阶段评审和平台保护操作;具体任期与接管约束以该记录为准。 记录仍为准备中,不开放领取,不自动向其他任务分配工作;角色分工不代替启用条件。

必须记录目标、条目、执行者、源 HEAD、依赖、顺序、尝试、最终 base/head、组件清单、 检查定义及相关配置、实际 CI 链接/身份、Review 对象、真实合入结果和暂停/恢复原因。 平台结果先保存于调度记录;本地命令仍用 make evidence 保存完整 SELF 收据。 候选固定后新增命令收据使用源码之外的唯一绝对 RECEIPT 路径,不立即提交进被测分支。 收据之后按已授权闭合流程原样导入;不能手抄、补写或自行提升来源。

候选固定前完成任务卡、必要收据和其他需提交内容,再推送最终 HEAD。 固定后如果必须提交新内容,即使是任务卡,也建立新尝试并核验新 HEAD 的必需 CI;不复用旧提交状态放行。 合入 SHA 和清理结果在实际发生后回填,不能提前将未来合入或清理标为已完成。 闭合 PR 进入同一队列;可在授权范围内批量闭合已合入任务,保留每个真实主 PR 和结果。

拟替换的启动与同步要求

正式采纳时须一起修订根 AGENTS.md、policy/governance.md 与 scripts/task.sh 的对应入口; 不能仅新增本文就宣布以下能力有效。

场景 拟采用动作 当前实现边界
新任务启动 保留唯一 precheck 收据与 task-start,从最新权威 main 建独立工作区 现有命令保留
恢复落后任务的局部工作 核对现场、授权和落后状态,记录待最终同步;允许已授权局部编辑 已实现显式 local/LOCAL_READY 及 task-resume;默认仍严格,流程待采纳启用
其他任务合入、排队等待 更新落后/依赖提示,不自动同步各分支或触发完整 CI 无自动调度能力,不能宣称已接线
领取最终交付窗口 成功 fetch,运行 make task-sync,实际合并最新 main、处置冲突、物化固定组件 使用真实同步及祖先检查,保留脏状态/远端失败拒绝
窗口内再次到达验收、审核、合入节点 再查最新目标和候选;未变只核验,不创建元数据提交 已实现同基线不提交,保留组件核对和完整最终 SHA
base/head、组件或相关配置变化 保留旧结果对象范围,重新建立尝试并按影响补测/复审 当前 HEAD 的全部必需 CI 仍必须实际通过

SYNC_REQUIRED 不整体降级为 READY;local 与 delivery 用独立结果和验证用途区分。 已同步启动收据验证、恢复入口及回归,写守卫保留原分支检查,不宣称已校验阶段批准。 共享工作区忙、未知远端和活动 Git 操作继续拒绝相应写入。

幂等化的判据是:成功 fetch、目标已包含、递归组件检查通过时,重复核验不改变 HEAD、索引和提交内容; 仍产生可复核的实际输出。任务真正需要纳入新目标时保留 merge 与对应对象记录。 所有候选身份使用必要记录提交完成后的最终 HEAD,不能把记录提交前的 SHA 当作最终被测对象。

拟调整的交付阶段

人工评审和独立 Review 要求不变;提前审阅可以并行,最终有效性核验和受影响重放在窗口内完成。 入队与领取不构成人工批准,也不授权跳过缺失阶段。

原阶段 采纳后的调度衔接
1–6 需求、设计、计划、实施 各任务并行推进,在既有授权内局部检查;内容就绪时登记交付条目
7 正式测试与验收 领取窗口后实际同步最新 main,固定候选,完成正式验证并取得必要人工结论
8 代码 Review 对同一固定候选核验有效 Review、独立重放和问题闭合;同步或整改后按影响复审
9 合入 保持窗口,核验最新 base/head、全部必需 CI 和平台准入,经 PR 合入并查询真实结果
10 核验与收口 核对合入内容和组件后释放窗口;部署、清理另按原授权,闭合 PR 单独排队

等待人工结论超过预算时进入 blocked 并安全释放窗口;再次领取时判断原结论及证据是否仍适用。 窗口不得长期持有等待新的需求或方案批准;必要前置安排应在入队时说明。 普通失败和需要决策只阻塞当前条目及依赖项;未知合入结果则保持该目标在 reconciling,先对账。

CI 资源与检查

本草案只定义后续分配要求;.gitea/workflows/ci.yaml 当前行为保持原样。 后续将局部反馈与最终准入的触发和资源安排区分,不通过跳过必需作业返回绿色来节省成本。 当前 workflow 中的 test、test-pg、svc-realcombo 等作业须按最终已批准集合核验; 平台状态上下文的完整名称、运行身份和被测 SHA 从当次实际运行核对,不从历史文档直接照抄。

建议首轮人工试行预算,待本文件及试行计划获批后使用:

  • 每个目标一个最终候选;其独立作业可在实际 runner 能力内并行。
  • 最大无进展时间 20 分钟,单次窗口预算 90 分钟;有效进展、延长及原因记入尝试。
  • 已知基础设施失败最多额外重试一次;代码失败直接退出整改,不自动重复跑完整 CI。
  • 等待队列每 30 分钟复查一次;最终准入优先,但不无限延后其他目标、main 验证或发布检查。
  • 全局 runner 并发预算在试行前读取实际容量后登记;未核验容量时按现有资源安排,不凭建议数值调整平台。

预算是试行参数,长期值由真实耗时和等待情况复盘决定。 容量不足时先等待 runner,再领取目标窗口;不得持有另一个仓库窗口去等待组件窗口。 取消仅针对失效且归属明确的当前尝试,其他任务有效的局部检查继续运行。

平台与接管边界

现有 平台准入所有者操作 是历史准备材料,执行前仍需当场重验。 最新只读配置观察、命令和对象由本任务 evidence 收据保存;配置读取属于 SELF,不证明拒绝路径已经有效。 本草案不修改分支保护、批准数或白名单。

人工协调期间,全部正常合入者按窗口约定行动。没有执行端覆盖全部写入者及原子准入的正负例时,能力上限为 manual。 发现外部目标推进,立即判定本轮候选失效,保留结果并建立新尝试;不能以目标锁的本地存在绕过平台拒绝。 自动模式未来必须具备原子持久领取和合入入口的旧执行者拒绝;租约到期不直接授权接管。 合入请求超时先核对 PR 和目标真实状态,旧执行者退出后才能安全重试或释放。

需要调整平台保护时,由 Agent 准备具体配置、回退和隔离验证命令,用户按根 AGENTS.md 双钥匙要求确认并亲手执行。 至少验证合法候选可合入,以及缺检查、失败检查、陈旧候选和无权限推进被拒。 人工首版验证旧执行者确认退出后交接及未知结果对账;自动接管启用前另须验证实际合入入口拒绝旧代次。 当前不运行这些平台试验,也不影响其他进行中任务。

采纳顺序与停止条件

  1. 人工审阅通用候选、Dev 条文及记录模板;确认同步时机、阶段衔接、预算和恢复边界。
  2. 在通用仓完成候选修订 Review 与其文档验证,按授权经 PR 合入;宿主采纳完整固定 SHA。
  3. 另行提交实施计划,覆盖 task-sync 幂等化、恢复/写守卫兼容、源码外收据、CI 分配和能力矩阵。
  4. 在隔离场景完成治理脚本正负例;涉及脚本必须运行 make test-governance。
  5. 跨仓语言依赖/应用源码锁正式推进前运行 Dev make test;最终对象的 CI/构建及平台准入遵循现行规则。
  6. 完成所有者平台操作和对应验证,登记真实协调者与调度 Issue,才切换新交付模式。
  7. 用三个就绪任务试行,记录同步轮数、CI 次数/耗时、废弃运行、排队和恢复,复盘后决定扩大。

第 2 步规范文本合入或第 5 步指针推进均不自动将新模式标 active/enforced。 迁移期保留现行准入规则,直到新条文、命令和平台条件一致;未满足时暂停模式切换,已授权局部开发可继续。 回退先停止新领取并对账活动合入,再恢复旧同步流程,保留尝试和证据历史。

验收 ID 需验证的行为 本轮状态
MQ1 A/B/C 正常顺序交付;各任务轮到后最终同步一次,无外部推进时不因其他正常合入反复跑最终 CI NOT_RUN(后续隔离试行)
MQ2 同目标重复领取被拒,不同目标可在资源预算内并行 NOT_RUN(后续机制验证)
MQ3 同步后目标未变,重复核验不改 HEAD;固定后记录不改变候选 本地 CLI/证据回归已执行(SELF,原始输出见任务卡);平台试行 NOT_RUN
MQ4 新 HEAD、base 或组合不能使用旧 CI/Review 直接放行 NOT_RUN(后续正负例)
MQ5 冲突、代码失败、等待人工决定超时释放窗口,不阻塞无依赖任务 NOT_RUN(后续试行)
MQ6 紧急插队有依据,受影响候选失效;跨仓依赖和组件能力不回退 NOT_RUN(后续试行)
MQ7 请求超时、协调者退出先对账;不能仅因租约过期让旧新执行者同时合入 NOT_RUN(后续恢复验证)
MQ8 平台拒绝未满足准入者,合法固定候选可合入;manual 能力如实登记,自动接管另验证旧代次拒绝 NOT_RUN(所有者操作后验证)
MQ9 文档链接、入口、版本、单一来源、状态与模板字段一致 本轮执行;原始输出见任务卡 SELF 收据

这些验收 ID 用于实施与验收追溯;本分支已完成可独立实施的 CLI/证据基础、规则与模板准备及临时真实 Git 场景自检。固定规范采纳、实际模式切换、平台正负例和真实 CI/三任务试行仍待各自门禁,未执行项保持 NOT_RUN;当前进展与原始证据统一见任务卡。