Skip to content

[流程] 多会话共享同一 bot 身份:同分支静默覆盖另一会话的 CI-green head(billion-context-pi #384) #2

Description

@ranxianglei

来源: ranxianglei/billion-context-pi#384ranxianglei/billion-context-pi#387 分析「PR head 被意外替换」时发现

现象(时间线,2026-09-12,UTC)

  • 06:32 owner 在 #384 评论「解决冲突」。
  • ~06:51 处理 #384 的 daemon 会话完成 rebase 冲突解决,force-push a955eeb,CI 全绿(test matrix ubuntu/windows × 22/24 + e2e)。
  • 06:53 owner 开 #387,明确 scope:仅升级 acp-kernel 0.0.63→0.0.64、零代码改动,并说明 compress 结果侧块跨度已由 #377 实现(#376 视为已解决)。
  • 06:53 处理 #387 的另一 daemon 会话 picked up 后,复用了 #384 的分支 2026-09-12_compress-block-spans,force-push b91d5c7(pin-only,父提交为当前 master),并改写 #384 的标题/body 为 chore(#387): pin acp-kernel 0.0.64(body 内自述了历史与取舍)。
  • #384 线程中没有任何评论预告这次 head 替换。

影响

  1. 前一会话的 CI-green 冲突解决被覆盖。本次内容上无害——新 head 与 owner 在 #387 的最新意图一致,且被覆盖的 head(a955eeb)仍可从本地分支恢复。但流程上不可复现安全:若方向与 owner 意图不一致,该决策将由 bot 单方面做出,owner 未在任一线程看到两个方案的并排对比。
  2. 分支复用使 #384 的 PR 元数据(标题/body)被改写成另一 issue 的用途,#384 原有的 review 记录(冲突解决报告)相对当前 PR 内容变成「孤儿」,追溯困难。

根因

  • 所有 daemon 会话共用同一 git 身份(ework-agent <ework-daemon@users.noreply.github.com>),彼此无法在 git 层区分。
  • 分支命名规范 YYYY-MM-DD_short-title 不绑定 issue 编号,两个会话可独立推导出同一个分支名。
  • force-push 前没有「远端 head 是否属于自己工作线」的检测;也没有「先在被影响的 PR/issue 线程留言再推送」的约束。

建议修复

  1. 分支命名绑定 issue 号:YYYY-MM-DD_issue<N>_short-title,从命名上消除两会话撞名可能(需同步更新 AGENTS.md 规范)。
  2. force-push 前置检查:若远端 head 不在本地历史中(即会覆盖他人提交),必须先在对应 PR/issue 线程发评论说明,或拒绝直接推送、等待人工确认。
  3. 接任务时查重分支/PR:发现与既有 open PR/活跃会话工作重叠时,优先在对方线程留言协调,而不是直接替换。

本次处置

未回滚 b91d5c7(其内容与 #387 最新 scope 一致);已在 #384 线程完整报告情况与验证结果;a955eeb 保留在本地,如 owner 想恢复内核格式化器路线可随时重推。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions