Live tracker
Decision b87939371 — drive the 6 revivable stale PRs to merge; close #260 with reasoning.
Measured per branch rather than treated as one backlog. Two are a merge-main away from green; four are 2-5 conflicts in small diffs; #260 is 111 behind with 14 conflicting files across 16 — a rewrite, not a rebase. Three already have RED CI, which the derived status surfaced and a hand-written page would have missed.
Status is DERIVED from each row’s own PR and decision
links by bin/refresh-tracker stale-pr-drive — never typed. Last refreshed
2026-09-16 06:40Z.
Nothing from this list yet. The measurement itself is the landed part: every branch now has a behind-count, a conflict count and a file count, so none of them has to be re-diagnosed.
Two PRs that only ever needed their branch brought up to date reach main.
| Status | Item | Evidence |
|---|---|---|
| done | #142 — standup: an owned commitment is a ticket, a dropped item is never silent“a commitment someone made in standup should not evaporate because nobody wrote it down”108 behind but zero conflicts across 4 files. ⚠️ Fede’s branch, not a Smith one — worth a word with him before driving it. | PR #142 108 behind · 0 conflicts · 4 files |
| done | #291 — docs(failure-notes): fold PR #5496’s root cause into maintenance-eval“the same maintenance-eval failure keeps being rediscovered from scratch”51 behind, zero conflicts, 1 file — the cheapest diff here. Its CI is nonetheless RED, which is why the status column is derived and not typed. | PR #291 51 behind · 0 conflicts · 1 file |
The four small-conflict PRs land, or fail on something real rather than on staleness.
| Status | Item | Evidence |
|---|---|---|
| done | #303 — feat(hygiene): session-gc — collect the disk state dead sessions leave“dead sessions leave state on disk forever and nothing reaps it”41 behind, 2 conflicts across 6 files. Newest of the stale set. | PR #303 41 behind · 2 conflicts · 6 files |
| done | #271 — fix(alerts): the decider ledger discarded morpheus-nightly’s own root cause“the alert told us something failed and threw away the reason”67 behind, 2 conflicts across 4 files. | PR #271 67 behind · 2 conflicts · 4 files |
| done | #295 — tests(eval_heal): raise the real-time wait ceilings 20s → 90s“eval_heal flakes on timing and the red is never the code”66 behind, 3 conflicts across 6 files. CI already RED. | PR #295 66 behind · 3 conflicts · 6 files |
| done | #267 — The decision driver records the answer it observed“a decision Gera answered can read as unanswered, and nothing records what was seen”69 behind, 5 conflicts across 9 files. Checked for the same supersession as #260 and it is NOT superseded — answer_record appears zero times anywhere on main and twice on this branch. Genuinely unshipped work, and it closes the exact gap hit this morning: Gera’s three answers landed with answer: null, provable only from by: “gera via /agents”.Merge finished by hand after its agent died on a session limit. Verified the resolution kept BOTH sides: zero code tokens from main missing, and the _NO_ANSWER_ECHO_PATCH_ID determinism gate intact (4 occurrences, same as main). A line-level check first flagged 16 “lost” docstring lines — a false alarm: the branch REPHRASED them (“TWO PATCH GATES” where main says ONE, “five activities” where main says four). Its docstring is the superset. 265 tests green. | PR #267 69 behind · 5 conflicts · 9 files |
#260 is closed with its reasoning recorded, and the work stays recoverable in git.
| Status | Item | Evidence |
|---|---|---|
| withdrawn | #260 — fix(decisions): three guards more permissive than the thing they guard“three guards pass inputs they were written to reject”CLOSED — and the 14-file conflict was never the real objection. The work is already on main: all four decision-block files exist there and are LARGER (1161/359/897/334 vs 915/265/685/259), landed 2026-08-23 — six days after this branch’s head. Including the fixes, not just the feature: main carries the exit-3/exit-4 split (WAKE_UNREACHABLE / WAKE_NEEDS_CONFIRMATION) from this branch’s own 3c6caf1.Stripping comments and docstrings and comparing code tokens: zero unique to this branch in three of the four files. The 66 raw line differences are reflowed prose. ⚠️ And its one real difference is why it must not merge. It defaults chat_jid=channel or config.SLACK_AGENT_SMITH_CHANNEL. Main removed that default on purpose — its docstring names the 2026-08-19 incident: the sweep armed 25 drivers and every one announced into #agent-smith, because a block raised by a Claude Code session has no Slack thread and the missing origin fell back to a broadcast. Merging this would reintroduce a fixed production incident. | PR #260 111 behind · 14 conflicts · 16 files close, do not resolve |
These are not tasks. They are things that stay true until someone changes them.
Merge origin/main FIRST on every one. agent-smith's manifest tests read propflowai's LIVE SHARED manifest, and manifest.py carries the allowed-value enum — main taught it the github-actions runtime, so a branch predating that commit rejects a manifest the fleet already accepts and reds the pre-push gate on 5 tests it never touched. Every branch here is 41-111 behind. Also: #142 is Fede's branch, not a Smith one.