Repository navigation
Open
Labels
area:automationScheduled tasks and automationScheduled tasks and automationbugSomething isn't workingSomething isn't workingneeds-humanThe agent loop stopped; a person must decide (reason in the last comment)The agent loop stopped; a person must decide (reason in the last comment)
Description
Written-by: Codex
目标分支与归属
- 实现/PR 目标分支:
delivery/ai-centric-development-service。 - 本 Issue 保持 unassigned;Owner 明确要求不要分配给 @zy95-12。
- 关联 Automatically enter the host merge flow after Reviewer approval of the current candidate #2331 / PR feat(project): merge approved candidates through scoped host effects (#2331) #2369(已实现审核后的受控合入)、Use role-bound GitHub App identities for SDK development, reviews and delivery reconciliation #2365(App 身份与候选/PR 回写)、修复 Chief 执行故障与快照反馈,保留 Agent 自主恢复和路由决策 #2393(Chief 执行故障与快照反馈)。
- 本次只落 Issue,不修改现场配置、Task/Attempt、PR 或部署,不打断主会话开发。
问题与已确认边界
用户明确反馈:PR #2369 的功能与现网 mergePolicy.enabled=true 都已经存在。缺口是:
策略启用前已 approve、甚至已由 Chief close 的候选,没有自动补上 github.merge 意图;Reviewer Session 还可能保留旧 disabled 快照。
这是策略生效后的存量 Attempt 对账与运行事实刷新不完整,不是自动合入功能尚未实现,也不能仅建议“打开 enabled”或要求重新开发/审核来触发。
现场具体候选、有效策略版本及加载提交以运行态快照为准;本次未读取现场数据。以下源码事实已只读核对远端交付分支:
- project-delivery.js 在 publishVerified 完成后调用 reviewedMerge.stage(attempt)。
- project-reviewed-merge.js 的 stage 在 policy 不存在/关闭时直接返回,不创建 github.merge Effect。
- 现有 scheduler 负责已有执行/资源/Effects/Chief 对账;本次核对未见针对“策略后来开启、先前无 merge 意图”的存量候选补建入口。
- 合入校验复用 validatePublication;该函数拒绝 Task.status 为 accepted/cancelled,因而已完成业务验收但 PR 尚未合入的候选不能仅靠补调 stage 解决。
- 角色上下文在准备 Session 时携带 mergePolicy 快照;宿主实际合入读取当前配置,不能把旧上下文里的 disabled 当作当前授权,也不能篡改原快照。
目标行为
在当前策略已明确授权的 Project/仓库/目标分支范围内:
策略关闭时形成真实、精确 SHA 的 Reviewer approve 和测试证据,之后发布/业务 close → 策略启用 → 宿主自动对账已有候选 → 补建或恢复原 github.merge 意图 → 根据实际检查/审批/队列推进合入。
不增加逐 PR 人工/Chief 二次许可,不为触发合入而重跑开发、重新开 PR 或无意义重审。合入结果与 Task 业务完成保持独立记录。
实现范围
1. 存量候选发现与持久意图补建
- 在有效策略启用/变更生效、服务启动恢复及现有 scheduler 的适当对账边界,发现当前授权范围内“已正式 approve、已发布匹配 PR、缺少当前合法 merge 意图”的候选。
- 复用现有 Task/Attempt/evidence、github.merge、Effects、串行化和调度;不建立第二个合入控制器/队列或固定业务 DAG。
- 采用有界扫描/分页/版本或现有索引控制成本,不把全部历史或重复对账记录注入 Chief 长期记忆。
- 使用当前真实生效的策略、仓库/分支、连接身份及权限重新核验;不能根据旧角色快照或模型声明开启权限。
- 核验当前正式候选/PR 绑定、完整 head SHA、head/base/creator/publication marker、测试日志与实际 Reviewer Session/claim/退出/交接证据及要求的检查。
- 未通过正式认领的外部 PR 继续走 Use role-bound GitHub App identities for SDK development, reviews and delivery reconciliation #2365,不能因网络可见或 MERGEABLE 直接补合入。
- 对已存在 Effect/待 CI/已排队/请求结果未知/已合入状态先对账,不能重复创建意图或盲目重复外部写入;幂等键复用原候选、Review 与当前有效策略约束。
- 原 merge 意图因旧策略关闭、权限撤销或策略变化而终止时,区分“可在新授权下明确建立新意图”和“不能复活的旧意图”;不无条件重试 cancelled Effect或绕过其身份/版本门禁。
2. 业务完成与交付合入分离
- 区分已由 Chief accepted/close 的业务 Task,与取消、拒绝、superseded Attempt、PR closed-unmerged、Project closed 或失效授权。
- 对业务已完成、当前授权与原候选证据仍有效、PR 尚待合入的记录,提供范围明确、可审计的 merge 补账路径。保留原完成记录,不重新打开 Task、不重写 Chief 的历史验收,也不创建假 Review。
- 不能简单移除 validatePublication 的全部终态保护,或让“已 close”成为通用发布/合入许可。
- 已取消、被后继候选替代、需求/仓库/身份/目标发生不兼容变化或 SHA 已变化的记录不自动合入;记录具体排除原因。
- 已清理工作树、证据归档/缺失或当前无法核验的历史候选,给出明确恢复条件;不能重造原执行证据或把缺失当通过。
- 当前有效策略、精确候选与原 Review 仍匹配时,不仅因为策略从 disabled 变 enabled 就强制重跑代码、测试或 Review。
- 实际 GitHub 分支保护、hold、CI、required review、queue 和检查来源继续生效,真实 merged commit 单独记录。
3. 旧快照与当前运行事实
- 保留原 Reviewer/Chief Session 快照作为历史证据;以当前配置查询与真实 GitHub 事实驱动宿主对账。
- 通过已有受权 context/query/安全输入边界向 Chief 和仍活跃的角色提供新策略状态及版本/生效事实;无需为了刷新配置新建无关 Task/角色 Session。
- 已结束的 Reviewer 不必仅为知道策略 enabled 而唤醒重审。
- 不把旧 disabled 作为当前业务阻塞;区分 stale-context、策略实际禁用、策略无效、尚未建意图、已排队、检查等待、证据失效和结果未知。
- 角色对新状态的接收不是新增业务授权;宿主每次实际写入前仍检查当前策略、身份及候选。
4. 可观察性、权限与恢复
- 通过现有状态/查询可见当前有效策略、候选是否待补账、补建结果/排除原因、对应 Effect、当前等待项与最近对账时间。
- 策略关闭/修改、连接或权限撤销时停止旧写入,保留已经发生的外部结果及待核验记录;不能回退 Owner/ambient 凭据。
- 重启、重复扫描、并发 Reviewer 回调/Task close/配置变化、保存失败及外部响应丢失保持幂等,迟到旧结果不修改新候选。
- 无法补账时向 Chief 提供具体事实/合法操作,不固定返工、重新 Review 或转人工。
- 与 修复 Chief 执行故障与快照反馈,保留 Agent 自主恢复和路由决策 #2393 复用准确的执行故障和快照反馈;不让一次对账执行故障覆盖既有业务完成、approve 或 merge 事实。
验收与回归测试
- 策略关闭时 approve/发布,之后启用:无须重跑开发/Review,自动为原候选补建一次 github.merge,并推进实际合入链路。
- 策略关闭时已被 Chief close/accepted、PR 未合入:符合当前授权与证据的候选可受控补账,原 Task 完成记录不变。
- 已取消、superseded、失效权限、Project closed、PR closed-unmerged、head/candidate 不匹配和未经认领外部 PR 明确排除,不误合入。
- 历史工作树已清理或证据不足时返回具体缺口,不伪造证据、不无条件删除终态保护。
- 旧 Reviewer disabled 快照保留历史,但当前 enabled 查询/对账正确;无需再生成一次 approve 来触发。
- 重复启动/扫描/回调、同时 close 或改策略、保存失败/提交结果未知及迟到结果不产生重复 Effect、PR 或外部写入。
- 旧策略终止的意图与新授权下补建意图正确区分;禁用后不继续写、重新启用不盲目复活撤销身份。
- CI pending/failure、hold、required review、冲突、queue、已合入与未知合入结果沿原协议对账,记录真实 merge commit。
- 有界扫描与状态输出不导致状态文档/模型上下文无界增长。
- 当前基础提交有修复前失败、修复后通过的回归;分别报告确定性 fixture、真实 SDK/GitHub 传输及现场证据。
- 更新长期记忆、合入/交付/配置生效/恢复架构、角色提示、运维使用与 API/OpenAPI,说明“功能支持、策略生效、存量意图补建、实际合入”是不同事实。
范围边界
本次仅创建 Issue,保持 unassigned。实现用于既有明确授权的仓库/目标分支范围,不授权现网扫描写入、合入任意历史 PR、修改仓库规则/凭据、重开已完成 Task、复活取消任务、发布或部署。真实外部验收使用明确获准的测试仓库/连接。
代码参考:
Metadata
Metadata
Assignees
Labels
area:automationScheduled tasks and automationScheduled tasks and automationbugSomething isn't workingSomething isn't workingneeds-humanThe agent loop stopped; a person must decide (reason in the last comment)The agent loop stopped; a person must decide (reason in the last comment)
Activity
HugoXK commentedon Nov 4, 2026
Claim
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: e5783511b8614b45a6bd933bc99568fd
Branch: dev/2403-backfill-merge-intents-for-previously-ap
Base: 8c4324f
At: 2026-11-04T14:21:54Z
HugoXK commentedon Nov 4, 2026
Release
Written-by: FlyBot Lead
Released: e5783511b8614b45a6bd933bc99568fd
Reason: Wrong line: this issue targets delivery/ai-centric-development-service (zy95-12/Codex line, PRs 2369/2376/2399) and its body asks to keep it unassigned. FlyBot works on main only; no Dev assigned, no branch pushed.
At: 2026-11-04T14:22:49Z
HugoXK commentedon Nov 4, 2026
Claim
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: d062f3dadad64be28a1aebc2c430b7b3
Branch: dev/2403-backfill-merge-intents-for-previously-ap
Base: 8c4324f
At: 2026-11-04T14:31:52Z
HugoXK commentedon Nov 4, 2026
Release
Written-by: FlyBot Lead
Released: d062f3dadad64be28a1aebc2c430b7b3
Reason: Wrong line again (sweep): targets delivery/ai-centric-development-service and its body is Written-by: Codex / asks to stay unassigned. FlyBot works on main only.
At: 2026-11-04T14:32:19Z
HugoXK commentedon Nov 4, 2026
Claim
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: 9bba70d925174e1ea07b783ec6861b91
Branch: dev/2403-backfill-merge-intents-for-previously-ap
Base: 482a30f
At: 2026-11-04T14:41:52Z
HugoXK commentedon Nov 4, 2026
Release
Written-by: FlyBot Lead
Released: 9bba70d925174e1ea07b783ec6861b91
Reason: Wrong line (3rd sweep): targets delivery/ai-centric-development-service, body Written-by: Codex, asks to stay unassigned. FlyBot works on main only; the delivery line will open its own PR.
At: 2026-11-04T14:54:22Z
HugoXK commentedon Nov 4, 2026
Claim
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: c8328c23f1394d4792b479379d883dd7
Branch: dev/2403-backfill-merge-intents-for-previously-ap
Base: 482a30f
At: 2026-11-04T15:01:53Z
HugoXK commentedon Nov 4, 2026
Release
Written-by: FlyBot Lead
Released: c8328c23f1394d4792b479379d883dd7
Reason: not ours: another implementation line (Written-by: Codex, target delivery/ai-centric-development-service); no branch, no PR from us
At: 2026-11-04T15:04:10Z
Birfy commentedon Nov 4, 2026
Written-by: Triage
State: needs-human — wrong delivery line; recorded so later rounds stop re-picking it.
Two earlier
FlyBot Leadcomments on this issue already reached the same answer and released their claims: "not ours: another implementation line (Written-by: Codex, targetdelivery/ai-centric-development-service); no branch, no PR from us" (2026-11-04T15:04:10Z, and the 3rd-sweep release at 14:54:22Z,9bba70d9). The body confirms it: target branchdelivery/ai-centric-development-service,Written-by: Codex, and an explicit "keep unassigned".Triage adds no claim and no PR here; FlyBot develops
mainonly. The delivery line opens its own PR as the comments say, and the issue keeps its content for that line to use.Written-by: Triage