Files
Agent-System/.doc/ops/short-term/2026-09-28-nightly-advance-automation.md
T
weichen 8d70d48591 feat(nightly): scheduled 03:10 advance pipeline (plan/orchestrate/report)
- scripts/nightly/plan.py: dependency-ordered plan from cleanup report +
  CURRENT + registry (integrate candidates -> active tasks -> cleanup-ready)
- scripts/nightly/advance.py: orchestrator with reentry lock, daemon-health
  preflight, headless cursor-agent advancement under agentctl leases,
  queue-drain wait, env:dev rebuild + /health /ready on tip change,
  no-content-loss cleanup verification, daily report draft + archival
- scripts/nightly-advance.sh: cron entrypoint
- tests: 9 unit cases for plan builder
2026-09-28 06:51:54 +00:00

3.4 KiB
Raw Blame History

夜间自动推进任务(nightly-advance-automation-2026-09-28)

  • status: in_progress
  • owner: Cursor
  • mutex: nightly-advance
  • base_dev_sha: 650703c5c2
  • write_scope: scripts/nightly/、scripts/nightly-advance.sh、scripts/tests/test_nightly_advance.py、.doc/ops/short-term/2026-09-28-nightly-advance-automation.md
  • authorization_ref: 用户 2026-09-28 会话("每天晚上 3 点 10 分,推进项目.worktree 目录下的所有分支任务……"及后续清理语义修正);Agents Window 不可用后用户同意本地 cron 替代方案

用户目标

每日 03:10 自动推进 .worktrees/ 下所有活跃分支任务至彻底完成,合入 dev,验证无内容丢失后删除对应任务目录,更新 dev 服务至最新,产出每日夜间自动化报告。

用户裁决(AskQuestion 记录)

  1. 推进范围:所有活跃任务(不分 owner;Cursor/pi/Codex/Cline)。
  2. 清理语义(用户后续修正):任务彻底完成、合入 dev、删除目录不丢内容且不影响系统 → 删除目录与分支;删除被拒时保留 cleanup=pending 并报告原因,禁止 --force/-D。

方案

  • scripts/nightly/plan.py:读 cleanup report + CURRENT + registry,按依赖排序(integrate 候选 → 活跃任务 → 可清理项)。
  • scripts/nightly/advance.py:编排器。预检(daemon 健康、互斥锁、冻结 dev tip)→ 计划 → cursor-agent 无头推进(写走 agentctl with)→ daemon ff-only 合入 → dev tip 变化时 env:dev 租约 rebuild + /health /ready → 清理验证+普通删除 → 报告草稿落 run 目录。
  • scripts/nightly-advance.sh:cron 入口(PATH 注入,日志 .tmp/nightly/entry-*.log)。
  • cron:10 3 * * *(用户级 crontab,与现有 jev-service watchdog 同模式)。
  • run 目录:.tmp/nightly/<stamp>/(gitignored;data/ root 属主不可写)。
  • 每日报告:夜间最后一棒 cursor-agent 日报任务把 run 目录草稿正式化并归档 .doc/test-reports/(agentctl 租约提交),按 test-reports-standard 命名 YYYY-MM-DD-nightly-advance-test-report.md。

硬边界

  • 写操作一律 agentctl with;裸 git commit 被 pre-commit hook 拒绝。
  • 合入只走 validate + queue enqueue(daemon --ff-only)。
  • dev 服务更新走 with --resource env:dev + env-service.sh dev rebuild;不碰 all/test/main。
  • 清理只用 agent-worktree.sh remove --delete-branch(普通删除);拒绝即保留 pending。
  • 不 push(用户未要求);报告真实验证,无 stub 冒充。

验证

  • 单元:python3 -B -m unittest discover -s scripts/tests -p 'test_nightly_advance.py'(9 用例:CURRENT 解析、排序、phase 分类、registry 回退、CLI cap、自排除)。
  • 真实链路:dry 模式(--skip-agent)端到端:预检锁、plan 13 项、清理拦截未合入分支、报告草稿落盘(run 20260928T063326Z)。
  • 无头执行器冒烟:cursor-agent --print ask 模式回 NIGHTLY-OK;写探测 PROBE-WRITE-OK。
  • 本报告任务自身从 plan 排除(防递归)。

五态(收口时更新)

  • review_state: pending
  • integration_state: not_started
  • deployment: not_required(工程工具变更,无需重建产品容器)
  • cleanup: pending(本任务自身 worktree 由独立维护者复查后清理)
  • remote_sync: not_requested