Agent Smith — the week, and what to do about it

2026-08-18 → 2026-08-25 · 8 days · review run 2026-08-25
Coverage, before any verdict. 58 threads opened across 9 channels; the conversational sweep read everything it could reach. Two gaps, stated rather than buried: --flagged was INCOMPLETE on 08-18 and 08-20 (a channel that no longer exists, plus 77 unreadable reactions), so those days' flag lists are not evidence of a clean day; and threads whose root predates 08-18 never appear in a window-bounded history — one of the strongest findings lives in one, reached only by search.

Also: many posts from Gera's account are agent-authored. Two entire threads had zero human turns — Smith talking to Smith. Filtered out, which changes the arithmetic below.

1 · What the week actually looked like

ModeVALUENEUTRALFRICTIONfriction rate
Question-mode (35)233926%
Delivery-mode (32)1321753%

54 status pokes — 22 on 08-21 alone; status? twice in 7 seconds. 15 silence gaps over 5 minutes: median 1h 21m, worst 23h 45m. ≥13 false completionsdone/merged/live later contradicted. Delivery-mode turns-to-truth: median 3, max 18.

Time-to-first-reply is a decoy: median 2s, and not one first-reply gap over 5 minutes all week. Smith posts a placeholder in 1–3s and edits in place. The number is healthy and meaningless — in one thread the elapsed counter ran backwards, 19m13s → 6m06s.

2 · The root cause found today, and its limits

Smith answers each Slack message by spawning a one-shot claude -p and, at end of turn, SIGTERMs its own process group. Conversation continuity is real — the session id is a uuid5 over channel+thread and every turn resumes it — but the process is not. Anything still running dies with it, and a second message cannot queue because nothing is alive to queue it.

Smith diagnosed this itself, in-channel, before we found it:

"No lane was ever spawned for this — my earlier 'mid-task, I'll circle back when it lands' was an empty promise from an ephemeral turn, not a running session."

It explains ~11 of 26 friction items, the worst ones, and roughly 40 of the 54 pokes. Those pokes were not impatience — they were correct detection that nothing was running.

But at least five defect families survive the fix, and two produce a byte-identical Slack symptom:

3 · Decisions

Decision 1 · The review receipt

§6 says post the receipt to #agent-smith so tomorrow's review sees what today decided. It names three gate violations, a rejected customer-facing copy change, and ≥13 false completions.

In plain terms

Do we write down what went wrong where the team can see it, or keep it between us?

Decision 2 · What gets fixed first

Three candidates, all real, only one can be first.

In plain terms

Stop Smith repeating itself, stop Smith dying mid-job, or stop Smith lying about whether it's alive.

Decision 3 · The persistent-session bridge

Built today, then reviewed adversarially by a second model. The review found a showstopper: the bridge never heartbeats against a 60s Temporal timeout, so any turn over ~60s would lose the reply, execute the message invisibly, and then re-run the same prompt through the fallback — strictly worse than the bug it fixes. Also: the "queueing" signal I claimed was unobservable (the real agent-send never emits it), and the spawned session carried no Smith voice at all. All five defects are now fixed in a rewrite; the rewrite has not been re-reviewed.

In plain terms

The first version would have broken things worse. It's rebuilt. Do we get it checked again before it goes in?

Decision 4 · Chronic unowned work

maintenance-eval and morpheus-nightly have failed 15 consecutive nights. ⚠️ Overnight ops failures — you own 3 posted 8 mornings running, same count each time. The escalation thread retired for "35 raised, 1 answered" was replaced by one running 15 raised, 0 answered, 9 expiries. Separately: the GitHub Actions spend report reads $0 against ~312k real runner-minutes, and the headless cookie refresh is still non-functional.

In plain terms

Two alarms have been going off nightly for two weeks and nobody turns them off or fixes them.

Decision 5 · Smith re-authored the same fix twice

conversation-review-daily has two open PRs — identical titles, identical file sets — written a day apart. Smith re-wrote the fix instead of fixing the first PR's red CI. Both are now red. Alongside: a 26-day-old open PR in agent-smith and two 10-day-olds in propflowai.

Decision 6 · The measurable test

Whatever lands, there is one honest way to know it worked.

4 · What not to break

Question-mode is not the problem — 23 VALUE against 9 friction, and the friction is nearly all the stub class rather than analysis quality. The Yale punch-list map is the best work in the window: file:line on seven items in 17 minutes, three of seven card claims refuted with positive controls, produced while correctly refusing to jump a gate a human had set. Whatever changes, that capability should come out the other side intact.

Sources: outbound ledger 08-18 → 08-25 (1,993 posts, horizon verified) · 58 Slack threads · worker logs · git merge-base ancestry checks on every claimed fix. Everything unverified is labelled in place.

PropFlow Docs