Files
Agent-System-Backend/.task/fix-resolve-hitl-run-status-ordering.md
T
weichen f39b683188
governance / governance (pull_request) Successful in 16s
ci / vet-and-test (pull_request) Successful in 1m19s
Record task authorization and agent receipt for the run-status fix
Why: the card must record the scope, the (r1 scope-expansion -> granted
expansion -> r2 success) trajectory, and the rebase onto 241e1b3 before delivery.
Evidence: /tmp/be-runhitl-impl-r2-20261021.json (pi, success, transport 789f67f);
no PR/merge facts yet.
Impact: card metadata only; no behaviour change.
Refs: fix/resolve-hitl-run-status-ordering
2026-10-21 07:12:13 +00:00

4.8 KiB
Raw Blame History

fix/resolve-hitl-run-status-ordering 任务卡

任务主记录:<Issue/PR 链接,或注明"本文件随 PR 描述维护">。 状态:进行中;owner:weichen

基线与授权

  • 权威仓:ssh://git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Backend.git;root_target:main;immediate_target:main
  • branch_kind:standalone;initiative_id:
  • R0(initial_main_sha):07228aa38139d974e88573a84ad992fd66166168;工作区:/home/weichen/projects/Agent-System-Backend-wt-fix-resolve-hitl-run-status-ordering(worktree);分支:fix/resolve-hitl-run-status-ordering
  • 父任务信息(仅子任务填写):无
  • accepting_requirements:false
  • 需求分流:verdict=NEW;selected_initiative=无;候选=无;理由=no accepting initiative;triage 收据=/tmp/be-triage-runhitl-20261021.json;receipt_sha256=39dc1067007f31d2871e03c86a389f882925d5279198b0d3bdf9d8ccd253a6f7;requirement_sha256=2756850b023061065b52aac9b8f318a9802d56bdc97882ac24b749e940ea8559
  • 授权与交付终点:修复 Manager.ResolveHITL 的 run 状态写入顺序竞态并补回归测试;按 Backend 仓现行门禁完成 Review、PR、CI、合入、任务卡闭合与回收。不得改其它子系统、不得改 HTTP/server 层、不得放宽断言。
  • 实施执行:agent-per-unit(配置:AGENT-EXECUTION.md;外部 Agent 一单元一新进程/会话/工作区)

目标与非目标

目标:Manager.ResolveHITL 先向 hitlCh 投递答案、再无条件 UpdateRun(running),会在 runner 已把 run 写成 completed/ended_at 之后被覆盖回 running/ended_at=NULL,导致 run 永久卡在 running(无执行者)、会话永不释放、后续每次提交都是 409。修复为先以条件更新 WHERE status='waiting_hitl' 把 run 推进到 running(由 store 报告是否命中),再交答案给 runner;交答案后该 run 行此后唯一写者是 runner,不会被反向覆盖。

非目标:不改 HTTP/server 层、不改其它 store 表的写入语义、不放宽任何断言、不引入新依赖、不改 schema。

验收条件:(1) 新回归测试在修复前红(runner 抢先结算后 DB 仍为 completed/ended_at)、修复后绿;(2) go test ./internal/runmgr ./internal/store 全绿;(3) 独立 Review 无阻塞项。

Agent 实施收据

按根目录 AGENT-EXECUTION.md 路由;外部 Agent 一单元一新进程/会话/隔离工作区。实施、修复与测试必须通过登记的候选执行;未配置或候选安全耗尽停在 unavailable/blocked,禁止 host 隐式代写。

单元 ID 预期范围 角色 候选顺序 attempt CLI/模型 终态 transport fallback 源码外收据路径
待定义 — NOT_RUN NOT_RUN NOT_RUN NOT_RUN NOT_RUN NOT_RUN NOT_RUN —

复用材料(task-start 自动检索结果摘录)

  • 相关近期提交:<git log -- 命中;无则写无>。
  • 相关经验条目:<检索命中;无则写无>。

同步记录

节点 sync_base_sha tested_head_sha checked_at 结果
启动 <HEAD> <日期时间> <一致/已同步>
验收前 <填写> <填写> <填写> <填写>

字段没有发生的写"无",不省略。本卡与 PR 描述同源:开 PR 时将"目标与非目标、结果与验证、影响与剩余项"复制进 PR 描述,不另写第二份。

交付调度(有多个就绪任务时)

  • 调度记录 / entry_id / 当前 attempt_id:<平台或调度服务链接及标识;未入队写无>。
  • 入队源 HEAD / owner / 依赖:<完整 SHA、身份、依赖或无>。
  • 固定候选引用:<调度尝试中的 base/head、组件与配置;未固定写无>。
  • 窗口、最终 CI、Review 与真实合入结果:<引用调度记录及原始证据,不复制全队列>。

定义见 合入调度与 CI 分配。本段在候选固定前整理;固定后先使用源码之外的记录保存运行结果,再按项目闭合流程回填。

结果与验证(完成后填写)

  • 结果:<交付了什么;未发生写无>。
  • 验证:<结论性摘要:PASS/FAIL/SKIP/NOT_RUN 逐项;逐条证据见下表,来源标注与写入规则见 按影响选择验证与证据>。
  • 影响与剩余项:<影响面、遗留风险、后续任务>。
时间(UTC) 命令 被测 HEAD exit 来源 摘要/位置
<时间> <命令;由项目 evidence 工具写入,无工具时附命令+对象 SHA+输出 digest 并标 SELF> <HEAD> GATE/REPLAY/SELF <摘要/位置>

回收(task-finish)

  • 合入核对:<分支已包含于目标分支的核对输出>。
  • 未跟踪/ignored 文件处置:<归档/可再生/存疑 逐项;无则写无>。
  • 回收动作:<worktree remove、分支删除、prune;放弃路径注明原因>。