--- title: "U2 治理交接收口:Gitea 原生门禁取代本地 agentctl 治理" date: 2026-09-29 task_id: multi-repo-design-2026-09-28 supersedes: agentctl-mandatory 客户端规则与本地租约/收据/候选集成流程 --- # U2 收口记录 ## 交接内容 | 旧机制(agentctl 本地治理) | 新权威 | 状态 | |---|---|---| | pre-commit/reference-transaction 本地租约与收据 | Gitea 受保护分支(dev/test/main) | 旧钩子文件已删除(原 chmod 停用,现正式退役) | | `agentctl with`/SQLite 写前置 | 无(普通 Git) | 编码流程零 agentctl | | `docs apply` 共享文档 CAS | PR 版本历史 + CI 一致性检查 | CURRENT/MATRIX 转只读快照 | | 候选 `validate`/`queue enqueue`/`integrate` | PR + 必需 CI(go-vet、backup-restore-drill、web)+ 非作者批准 | 旧本地 dev 推进入口退役 | | 需求重叠 catalog 硬门禁 | 降为建议(PR 审核中人工判断) | 不再阻塞写入 | | 收口必跑 cleanup report / docs drift | 移至维护任务/按需 | 不再是会话前置 | 保留不变的硬边界:凭证/秘密防护(新增 CI secrets 扫描)、共享环境写授权、 破坏性操作授权、他人现场保护、证据诚实、产品 IAM/文档职责/DB 事务(产品侧,与本交接无关)。 ## 协作模型(实测验证) - 编码 Agent = `agent-bot`(作者):功能分支、提交、建 PR。 - 用户 = `weichen`(审核者+合并者):批准、合并;白名单直推保留(不破坏既有习惯)。 - Gitea 1.27.3 硬禁止自批准 → 非作者审核由平台强制,非自觉约定。 - 完整闭环已跑通:PR #1(U1 文档 + CI 修复)bot 作者 → CI 绿 → weichen 批准 → 合并 4d716bcd。 ## 验收证据 | 场景 | 结果 | |---|---| | V19 两个独立 clone 同路径并行编辑、各自提交 | 双方均成功,无全局锁牵连(本日实测,分支已清理) | | V20 停 daemon/无本地治理 → 本地开发 | 本会话全部提交零 agentctl 调用;原仓钩子已删除 | | V23 旧入口不能推进远端 | agent-bot 直推 dev 被拒(N6);无批准/陈旧分支/缺 CI 的合并在演练仓全部被拒(N3–N5) | | V26 完整修复→测试→提交→PR→合并零 agentctl | PR #1 全流程即证据;CI 必需检查绿后合并 | | 白名单非破坏 | weichen 直推 dev 放行(P1,4d716bcd..9504b624) | ## 遗留与后续 - 短测存量失败(环境依赖用例)→ issue #2,修绿后并入必需门禁。 - Development-Manager 中 agentctl 的部署/发布/恢复角色重写(KTD13 裁剪矩阵)→ 后续任务,编码流程已不依赖。 - 锁库 `.locks/state.sqlite` 与历史任务记录冻结为只读证据,不再作为权威。 - 演练仓 `governance-drill-2026-09` 保留至 U6a 发布链路验证后删除。 - 规范文档链(worktree-workflow、policy-registry、validation-contract 等)保留为历史参考;AGENTS.md/PROJECT.md 已按新模型改写并在本 PR 生效。