Reconciled against the live roster, gh, and transcript timestamps
2026-07-31 16:20 CDT

39 sessions.
Twelve actual projects.

One slide each — where it stands, who owns it,
and the one session that should finish it.
3 DONE  ·  8 OPEN  ·  2 STILL HAVE AN OWNER
docs.propflowai.coFLEET STATUS
02 / STATE
The number of sessions is not the number of projects

Thirty-nine sessions are carrying eight open goals.

SESSIONS
39
duplicates, shells, finished work
REAL PROJECTS
12
distinct goals
STILL OPEN
8
3 done · 1 needs only a decision
HAVE A LIVE OWNER
2
and both are out of quota
Six of the eight open goals have nobody working on them. Not blocked — unowned. That is the whole problem, and it is why deleting sessions is safe: they were not doing the work anyway.
primary/LEDGER.md · reconciled 16:20 CDT02
03 / PLAN
Three moves, in this order

Delete the noise, name the survivors, one goal each.

1 — Delete

27 sessions

Orphans, picker shells and finished work. Proven by message-uuid containment, not guesswork. Nothing in flight is in this list.
2 — Create

final-*

One per open goal: final-touch-budget, final-alert-claim, final-noi… Its own directory, one goal, an explicit do-not list.
3 — Keep

primary

One thread holds the ledger and dispatches. It never writes code. You talk to it, not to twelve sessions.
You never open a final-* session yourself. They report into primary; primary reports to you. That is the whole point of the rename.
one goal per session03
04 / DONE
✅ Finished 14:53 today

CI reported green on a lane that ran nothing. Fixed.

Was
A PR with three changed test files, one failing, selected 0 tests and exited 0.
Shipped
PR #5159 merged · issue #5105 closed.
Real cause
Not the error-swallowing we first blamed — the job checks out at fetch-depth: 0 so --changed can diff, then the next step ran git fetch --depth=1 and undid it.
Leftover nobody owns: CLAUDE.md's Deploy Pipeline step 3 still claims push:main runs the full 12-shard suite. False since 2026-07-23.
no session needed04
05 / DONE
✅ Done — one loose thread

ADR-0119 outbound-record: seven PRs merged.

Shipped
#5104, #5123, #5127, #5129, #5142, #5146, #5168 — all merged.
Owner
c909b3a3 — idle, says "nothing of mine is left".
But
Issue #5027 still reads OPEN on GitHub while the session believes it shipped. One of them is wrong.
final-outbound-record — verify #5027 against main and close it or finish it. Half a session's work.
gh verified 16:20 CDT05
06 / DONE
✅ Merged

Concession extract proxy shipped — two follow-ups never filed.

Shipped
23 commits, six review findings addressed, approved and merged.
Unfiled
The concessionSource relabelling, and organization.ts:59 citing a single-field exemplar that actually sets three. No issue exists for either.
⚠ Naming trap
This session is called deployment because it began as "post a Slack update on every deploy". That original ask was never done.
No session. File two issues so they stop being invisible.
the name never described the work06
07 / URGENT
🟠 Highest-risk item in the fleet — do this one first

The only unpushed work anywhere, and a compliance guard passing on nothing.

Where the work is
Commit f2c84c98a on gera/touch-budget-enforcement in wt-touch-enforceunpushed. SMS and MMS doors bind.
Owner
None. Its session survives but its directory was deleted, so it cannot be resumed.
Left
Email and inbox doors, plus the UI copy flip — in the same PR.
Live bug it found and nobody fixed: the UI-copy guard keys on "is enforcement live?" — so the moment the first door was wired, the guard stopped checking the copy and started passing vacuously. Future-tense compliance text is currently unguarded.
→ final-touch-budget07
08 / OPEN
🟠 The session that owned this died mid-flight

The claim primitive is merged. Nothing calls it.

Shipped
agent-smith #150 and #154 merged — red-main alert collapse, the unretried watchdog and the state-dir fix are live.
Owner
Dead. smith-fail-flags-v3 died at 12:57 on a quota error and is gone from the roster.
Left
agent-smith PR #157 is open with review already passed. Then wire the merged primitive into the alert call site.
final-alert-claim — land #157, then wire the call site. Handoff doc is committed in the worktree.
merged but unwired08
09 / OPEN
🟠 You asked 30 hours ago and got no reply

Nothing was ever started on the sales work.

You asked
Update the prospect sheet, and rewrite the connect / follow-up DMs — "they're currently cringy" — proposing an approach first.
What happened
The session never replied. It transcribed the 07-29 call, posted it, and went quiet.
Complication
One sid, two live processes. Nothing in the transcript distinguishes them.
final-sales-outreach, fresh. It proposes an approach and waits for you — as originally asked.
cold since 07-30 10:3809
10 / OPEN
🟠 Stopped because it asked you a question

PR #5160 is open, and the session is waiting on an answer.

Left
Land #5160 — it corrects a doc on main that claimed #4900 was never started when it had merged. Then #4905, then #5004.
It asked
"Whether to spawn a fresh successor for #4905 — I don't think I should, unprompted." Never answered.
Two gotchas
git worktree add -b <branch> origin/main does not fail loudly against an existing branch · gh issue view shows open issues whose work already merged.
final-adr-0119 — land #5160 first; #4905 waits on your call.
→ final-adr-011910
11 / OPEN
⚫ This is the goal that caused the mess

The daemon still retires sessions you never closed.

Was building
A recency guard in machine_hygiene.py so the prune lane stops reaping live sessions.
Status
Edits lost. Cut off mid-Edit on 07-29; the worktree was deleted. Nothing to resume — it restarts from scratch.
Still happening
A worktree was deleted underneath a running session (that is goal 7's orphan), and a session that finished nine days ago still holds a pid.
final-hygiene-guard — from scratch off agent-smith main. Fixing this stops the fleet decaying again.
→ final-hygiene-guard11
12 / STALLED
🔴 Alive, owned, and out of quota — not done

The only two goals with a living owner are both stuck on limits.

Goal 4 · NOI history

All-time financial windows

Month-window fix done. Three consecutive continues all returned the limit error. Blocked on your answer: how far back should the NOI chart go? It only reaches July 2025.
Goal 5 · Touch ledger

Failover writes two rows

PR #5153 open, changes suggested. Verified: the fix as framed cannot work — the sort key is time-first and the write has no condition, so two legs milliseconds apart still write two rows.
Positive-control against the row count, not the arguments. A test asserting "both legs got the same id" passes on a change that still writes two rows.
→ final-noi · final-touch-ledger12
13 / DECIDE
🟣 No session will fix these

Two goals are finished work waiting on a call.

Goal 8 · docs answers

Blocked on /compact

bin/docs answers says "no answers saved yet" while a remote read returns all six. Its session sits at 83% context and refuses to open a new diagnosis. Only you can run /compact.
Goal 11 · PR #5166

Additive or redundant?

Two forks of one session analysed the same issue. One merged as #5164 + #5167; the other left #5166 open. Somebody has to say which survives.
neither needs a new session13
14 / RESIDUALS
Too small to be goals — invisible the moment their sessions close

Five things nobody owns and nothing tracks.

01 · LOG

#5130 — recipient emails land in logs unredacted

sanitizeForLog does not redact, and the sender calls its result maskedTo. Open.
02 · DOC

CLAUDE.md Deploy Pipeline step 3 is false

Claims push:main runs the full suite. Untrue since 2026-07-23.
03 · ASK

The original "deployment" request was never done

Post a Slack update on every deploy to main. The session drifted and kept the name.
04 · FILE

Two concession follow-ups have no issue

Verified: neither exists on GitHub.
05 · OPEN

#5027 open while claimed merged

The session and GitHub disagree.
primary/LEDGER.md — residuals14
15 / YOU
Four questions, none blocked on an agent

Four answers unblock four projects.

01 · NOI

How far back should the NOI chart go?

It reaches July 2025 today. Unblocks goal 4.
02 · COMPACT

Run /compact on follow-up-checks-v4

Nothing else can substitute. Waiting since 12:58.
03 · SALES

Approve an approach for the DM rewrite

You asked to be shown one first. 30 hours cold.
04 · #4905

Spawn a successor for #4905, or not?

Asked directly, never answered.
Separately parked, needing you and Fede: #5140 bulk repricing · two "delinquent" metrics that disagree · the activeTenants denominator · what stops CLAUDE.md growing (2,226 lines, three trim recommendations unactioned).
chase, don't decide15
16 / CLOSE

Delete 27. Create six
final-* sessions.

Talk to primary, not to the fleet.
Start with final-touch-budget — unpushed work and an unguarded compliance claim.
docs.propflowai.co/a/fleet-statusPROPFLOW · FLEET

All slides

PropFlow Docs