Window: last 24h (extended 72h for recurrence). Runs: 97. Total actions: 1336. Avg actions/run: 12.72.
235 operator_ticket_exists
229 repo_dirty_observed
97 run_start
97 disk_worktree_snapshot
97 memory_snapshot
97 done_audit_summary
97 run_complete
76 recent_task_failure
52 blocked_runtime_failure_reset
50 active_lane_snapshot
49 blocked_lane_classification_summary
33 attach_operator_context_to_closed_failure_ticket
32 operator_dev_loop_throttled
19 todo_backlog_observed
17 defer_task_failure_to_watchdog
12 promote_dead_zone_ticket
8 pickup_direct_run
7 create_operator_ticket
7 active_lane_backlog_observed
7 operator_dev_loop_finished
4 repo_dirty_all_known_generated
2 blocked_lane_completed_marked_done
1 ticket_advance
1 signal_archive
1 operator_ticket_resolved
1 operator_session_summary
1 reopen_weak_done_ticket
1 needs_input_reclassified_in_review
1 runtime_session_reconcile
1 code_fix_committed
1 needs_input_runtime_failure_reset
1 worktree_reaper_ran
1 breakglass_noop_healthy
1 in_review_stale_failure_state_cleared
Reviewed report + source. Three high-confidence improvements, two signals too thin to act.
1. graphify-out/ not whitelisted → drives workspace dirty-repo noise
- Problem: repo_dirty_observed=229 + recurring [operator:dirty-repo:workspace] (4× in 72h). Live git status shows graphify-out/converted/*.md modified and graphify-out/cache/*.json untracked — generated by graphify task, not anomalies. Only 4 lines classified generated-only, so workspace marker re-fires every run.
- Location: _GIT_KNOWN_GENERATED_PREFIXES tuple (the prefix list).
- Change: add "graphify-out/" (covers converted/ + cache/). Optionally ".mc-wt-" if confirmed transient worktree marker dirs.
- Effect: workspace repo_dirty_observed collapses, repo_dirty_all_known_generated rises, [operator:dirty-repo:workspace] stops recurring, operator_ticket_exists (235) drops materially.
2. Active-lane staleness trigger too aggressive at 2h
- Problem: [operator:active-lane-backlog] is the most-recurrent marker (6× in 72h); active_lane_backlog_observed=7. Count trigger is 25 (board not that big), so the 2h age trigger is firing. One ticket legitimately in_progress >2h trips an escalation ticket every cycle.
- Location: ACTIVE_LANE_STALE_HOURS_TRIGGER = 2.
- Change: raise to 4.
- Effect: cuts active-lane escalations roughly in half, keeps genuine multi-hour stalls caught. Reduces active_lane_backlog_observed and marker recurrence; active_lane_snapshot absorbs the difference.
3. recent_task_failure double-counts across overlapping runs
- Problem: recent_task_failure=76 in window. audit_scheduled_task_health looks back a fixed 2h (now - timedelta(hours=2)) every run; cadence is sub-30min, so each failed task_run is re-logged ~4×. Inflates the signal and log volume; only CRITICAL_TASK_IDS ticket (correctly deduped), so this is logging noise, not health.
- Location: audit_scheduled_task_health — the started_at >= ? (now - 2h) query bound.
- Change: scope to since-last-operator-run (persist last-tick ts like the dev-loop throttle state does), or dedupe by task_run_id already seen. Smaller: narrow window to 35min.
- Effect: recent_task_failure drops to ~1× per real failure, cleaner failure-rate signal. No behavior change to ticketing.
audit_recent_done_tickets thresholds or _steward_reopen_count cap warranted._is_known_generated hard-returns False for non-workspace repos, so these could be real uncommitted code OR generated churn — report gives no paths. Won't extend the generated filter blind. Dedup already works (no duplicate tickets). Investigate actual dirty paths before tuning; do not act on count alone.