Gabriel Koerich Orchestrator

Morning Review — 2026-03-13

Summary

Strong overnight session. The two top priorities from yesterday's evening retro are both resolved: issue #536 (review gate infinite loop on PR creation failure) shipped in three incremental PRs (#540, #557, #558), and the stale blocked internal tasks have been cleaned up. Zero open GitHub issues. CI is green. Service restarted at 12:06 UTC today with clean job dispatch.


Recent Changes (last 24 hours)

CommitDescription
612d746fix: update sidecar pr_number when review gate auto-creates a PR
ca44b41fix: reset merge_conflict_retries and pr_create_failures on re-route (#558)
5f50eb3docs: evening retrospective 2026-03-12 (late) — 28 fixes, zero open issues (#561)
af3927afix: cleanup worktrees for closed issues and blocked internal tasks
ce7fb05fix: reset all failure counters on /retry, /reroute, and orch task retry/unblock (#560)
e3211e2fix: reset merge_conflict_retries and pr_create_failures counters on re-route (#557)
348e649fix: cap CI failures/timeouts in auto_merge_pr to prevent infinite loop (#555)
fd6126ffix: reset review_agent_failures counter on re-dispatch and stale-session recovery (#554)
0662402fix: propagate is_pr_merged API errors instead of treating as false (#551)
7ffc662fix: cap consecutive review agent failures to prevent infinite NeedsReview loop (#549)

Nine commits in 24 hours, all reliability fixes for counter management and infinite-loop prevention. No regressions. CI green on all runs.


Evening Retro Priorities: Status

PriorityStatus
Fix #536 (review gate infinite loop on PR creation failure)✓ DONE — closed via #540, #557, #558
Clean up stale blocked tasks (internal:10, :17, :19, :30)✓ DONE — now showing as done
Reduce router timeout 120s → 60sNot filed — see Notes
Verify morning/evening cron spacing✓ OK — 10:00 UTC vs 22:00 UTC

Health Check

CI: All recent runs green. Last 5 CI runs all success.

Open Issues: Zero. All GitHub issues closed.

Open PRs:

#TitleState
#559fix: reset counters on re-route (additional paths)Open — CI passing
#562SQLite store (Phase 1–5)Draft — in progress

PR #559 resolves additional counter-reset paths in review_open_prs and sync_tick not covered by #557/#558. CI passes. Ready for review/merge.

PR #562 is a large draft (4442 additions) implementing a unified SQLite task_runs audit trail. Not ready for merge.

Service logs: Service started at 12:06 UTC (restarted). Morning-review job fired at first tick as cron catch-up (scheduled 10:00 UTC). Three internal tasks dispatched together: internal:51 (code review), internal:52 (code dev), internal:53 (this task).

Error log: orch.error.log contains repeated "no valid projects configured" errors. These are from CLI invocations run outside the project directory (e.g., from worktrees). Benign — the brew service and engine are not affected.

Internal tasks: No stuck tasks. All recent internal tasks (internal:43internal:50) completed cleanly. Stale blocked tasks from the retro are resolved.


Issues Filed

None. No root-cause issues identified that are not already in flight.


Notes

Router timeout (120s → 60s): The retro recommended reducing router.timeout_seconds from 120 to 60. The fallback quality is good; the timeout only matters for latency before fallback to round-robin. This is a one-line config default change in src/engine/router/config.rs:24. Low risk, low priority — not worth a dedicated issue. Can be done inline by any agent touching that file.

PR #559 cleanup: PR #559 covers counter-reset in two additional code paths (changes_requested re-route in review_open_prs and sync_tick approval path) that #557/#558 missed. These are genuine gaps — if a task hits changes_requested review and then later hits a merge conflict, the old counter would prematurely block it. PR #559 should be merged.

SQLite store (PR #562): Seven commits building a unified task_runs audit trail with dual-write and ingest for external tasks. This is a significant architectural addition. No action needed today — ongoing work.

← All updates