-
New src/new_goal_dispatch.py (find_queued_tasks() + dispatch_once(), mirroring task_reconciliation.py's shape but deliberately a separate module/loop -- scheduler-task-reconciliation-design.md §7 already established the "don't merge into one mega scheduler loop" principle, this follows it). Wired into backend_server.py::main() as its own daemon thread with --new-goal-dispatch-interval-seconds (default 45s, shorter than reconciliation's 300s to satisfy the near-real-time acceptance bar) and --disable-new-goal-dispatch-loop. Also added the matching --disable-new-goal-dispatch-loop flag to supervisor/deploy_stage.py::_launch_candidate() -- same reasoning as the existing --disable-reconciliation-loop flag there: a health-checking deploy candidate runs against a copy of the production DB and must stay passive until Deploy Supervisor decides it's live, otherwise it would start autonomously dispatching real Goals off stale/copied state. User-confirmed 2026-08-13: full auto-dispatch, not a conservative default-disabled rollout -- this was previously flagged as a standalone "changes the system's own autonomy boundary" decision requiring separate review (docs/done/scheduler-new-goal-dispatch-requirements.md), now resolved. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-
… work, compress bloated incident log - Delete org-graph-as-work-graph-unified-loop-requirements.md: fully superseded by org-graph-unification-and-universal-self-planning- requirements.md; folded its one non-duplicated detail (the 2084590a benchmark-narration trigger incident) into that doc's background instead. - Split scheduler-production-polling-loop-{requirements,design}.md by completion status: FR-2 (in-flight task reconciliation, shipped) moves to docs/done/scheduler-task-reconciliation-{requirements,design}.md; FR-1 (new-goal auto-dispatch, still undecided) becomes a small standalone docs/todo/scheduler-new-goal-dispatch-requirements.md instead of staying bundled with a doc that's mostly done. - Compress validator-test-script-narrative-output-issue.md's six ad-hoc "第N轮更新" paragraphs crammed into one status line into a scannable timeline table; moved the task 2084590a benchmark evidence into §1 where the other repro examples live instead of leaving it stranded in the header. - implementation-gap-analysis.md: logged two new gaps found today (no pre-Coder review of Planner's output; node execution still depends on native Dynamic Workflow) plus the architecture.md §10.1 staleness itself, per that doc's own "edit in place" maintenance convention. - Updated the doc-path references left in src/task_execution.py and src/task_reconciliation.py docstrings to point at the new locations. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-
Recovers tasks abandoned mid-flight (status in queued/planning_brd_prd_sdd/ coding/validating with no recent execution_event) by re-driving them through task_execution.run_or_resume_task_lifecycle on a background poll, guarded by an in-process in-flight lock to avoid double dispatch. Responds to a real 2026-08-06 incident where a task sat stuck in 'validating' for 15+ hours with nothing polling it. Scoped to FR-2 only from docs/todo/scheduler-production-polling-loop- requirements.md; FR-1 (new-goal auto-dispatch) stays out per that doc's own non-goals -- it's a separate, larger autonomy-boundary decision. Design recorded in docs/todo/scheduler-production-polling-loop-design.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>