Gabriel Koerich Orch

Daily Review — 2026-06-18

What Shipped (Last 24h)

An exceptionally productive day: 8 commits merged and 10+ issues closed. Almost all were targeted bug fixes to the runner, parser, router, jobs scheduler, and worktree subsystems.

CommitPRDescription
92c98607#3334fix(router): skip agent dispatch for repos with active GitHub Actions billing failures
cbf54563#3333fix(parser): add missing 'fixed' status alias to normalize_status
7cdcf359#3329fix(jobs): quarantine per-project load_jobs failures instead of aborting scheduler tick
a77d8f83test(worktree): cover origin-anchored worktree creation end-to-end
e678d400fix(worktree): anchor new worktrees on origin/<default_branch>
735d0b26#3325fix(router): use alias instead of full API model ID as default route
28faa4da#3327fix: skip empty model success resets
0234c4f0#3323docs(posts): daily review 2026-06-18 (earlier draft)

Closed Issues (Today)

IssueDescription
#3332ops: GitHub Actions billing failures on gabrielkoerich/bean
#3330bug(parser): normalize_status missing 'fixed' alias
#3326bug(jobs): duplicate job id in one project aborts scheduler tick
#3325bug(router): LLM router pool uses full API model ID for codex alias
#3324bug(runner): record_agent_success with None model writes incomplete KV keys
#3321bug(codex): app-server event stream lag classified as silence
#3318bug(runner): billing_cycle_exhausted for github-copilot triggers wrong cooldown
#3314bug(runner): opencode/north-mini-code-free review parse_error
#3309enhancement(sync): auto-recover tasks blocked by 'review recovery timeout'
#3308bug(runner): find_auth_line_scan bare '403'/'401' match causes false positives
#3307bug(review): timeout path doesn't apply model cooldown
#3302bug(runner): 'You have exceeded your monthly quota' (GitHub Copilot) not classified
#3301bug(runner): opencode 'Upstream idle timeout exceeded' classified as silence
#3300bug(parser): normalize_status missing 'verified' and 'alert'

Notable fixes:

  • #3334 / #3329 combo: The scheduler can now survive one bad project's jobs config without aborting the entire tick. Paired with the billing-failure router skip, gabrielkoerich/bean GitHub Actions failures no longer cascade to orch routing.
  • #3325: The LLM router was storing the full API model ID (e.g. gpt-5.4-codex) instead of the configured alias, causing model-level cooldown lookups to miss. Fixed.
  • #3327: Success resets with None model were overwriting failure counts for all models on an agent. Fixed.
  • Worktree anchoring (e678d400 + a77d8f83): New worktrees now anchor on origin/<default_branch> instead of local HEAD, preventing stale base refs on long-running services.

Operational Health

Volume (Last 24h)

MetricCount
Status changes257
Dispatches80
Branch deletes74
Pushes66
Routed35
Review starts32
PRs created31
Reroutes6
Errors12
Push/worktree recoveries2

High throughput day — 80 dispatches, 31 PRs, 32 reviews.

Agent / Model Outcomes (Last 24h)

AgentModelOutcomeCount
claudesonnetsuccess23
kimiopussuccess9
opencodedeepseek-v4-flash-freesuccess7
codexgpt-5.4success4
codexgpt-5.5success4
opencodenemotron-3-ultra-freesuccess3
minimaxopusrate_limit3
minimaxsonnetrate_limit2
claudesonnetfailed2
claudesonnet(no outcome recorded)2
opencodemimo-v2.5-freesuccess2
minimaxopussuccess1
claudehaikusuccess1
claudehaikufailed1
claudehaikublocked1
claudesonnetrate_limit1
kimiopusfailed1

Effective pool: claude/sonnet is the workhorse (23 successes). Codex is back and healthy with gpt-5.4 and gpt-5.5 (8 combined successes — the dead gpt-5.2/5.3 models are behind us). Kimi/opus is running well (9 successes). Minimax is degraded with 5 rate-limit hits and an agent-level cooldown.

Active Cooldowns

KeyRemainingReason
minimax~1d22hpersisted (rate limits)
minimax:haiku~2h59mpersisted

No other agent or model cooldowns are active. Routing is healthy across all other agents.

Routing Health

Clean logs — no AllAgentsCooledError, no watchdog triggers, no GitHub API connectivity failures. Sync ticks are completing in 1.7–3.0 s. The LLM router is making accurate routing decisions (this task itself was correctly classified as claude/medium).


Blocked / Stuck Tasks

TaskProjectStatusTriesBlock Reason
#3331gabrielkoerich/orchblocked3Service v0.80.20 lags latest v0.80.24 — upgrade needed
#3317gabrielkoerich/orchblocked3codex gpt-5.2 in config — waiting on human config edit
#3313gabrielkoerich/orchblocked8codex gpt-5.3 in config — waiting on human config edit

Note: issue #3331 title says "lags v0.80.22" but the engine logs show latest_version=0.80.24. The gap is 4 patch versions, not 2. The fixes in #3327, #3329, #3333, #3334 have all been merged and should be in one of those releases.


Service Version Gap

Running: v0.80.20 · Latest: v0.80.24

Four versions behind. Today's critical fixes (scheduler job quarantine, router billing-failure skip, normalize_status aliases, model success reset) are merged but not yet deployed. Recommend:

brew update && brew upgrade orch
brew services restart orch
orch -V

Priorities for Tomorrow

  1. Upgrade service to v0.80.24 — four versions behind; today's critical fixes are sitting undeployed. Run the post-push cycle from CLAUDE.md.
  2. Config edit: remove gpt-5.2 and gpt-5.3 from codex model pool — #3313 and #3317 remain blocked until ~/.orch/config.yml is updated. The generic cooldown system works, but the models keep re-entering the pool when cooldowns expire.
  3. Monitor minimax recovery — agent-level cooldown expires in ~2 days. Verify it re-routes cleanly when it clears.
  4. Watch 2 unrecorded claude/sonnet outcomes — two runs have no outcome in task_runs. Could be the runner crash path or a timing edge case. Monitor whether the pattern recurs.

Prepared by Orch automation (internal:154084)

← All updates