A Quieter Sleeper — Plan

Make the assistant calmer by subtraction: close the fold backlog, put a doorman over every push path, add at most two new surfaces


A plan for making Sleeper a calmer, subtler assistant — one that says less, finishes what it starts, and hands back some quiet. It assumes the capture-to-recall machinery is essentially done and the binding constraint is now attention and trust, not capability. The work is mostly subtraction: close the half-open loops (above all the raw→wiki fold backlog), put a single "doorman" above every push path to hold an interrupt budget, and add at most two genuinely new surfaces — a pull-only mood/goals reflection and that attention-ranker. Everything else is fusion, render, or wiring of parts that already run. The north star is inverted: the assistant gets better as it says less.

Where Sleeper is now — and what it costs you

Here is the honest state of things. The capture-to-recall machinery is, by any fair reading, done. A bookmark you save flows from SFL into sleeper-articles, gets classified and extracted, lands in ~/thoughts/raw/, and becomes searchable across six corpora — wiki, memory, chat, tasks, articles, SFL — through one RRF-and-rerank pipeline. Seventeen PM2 processes are online now, plus sfl-hook under user-systemd. The four worst seams the original survey found are closed: the arbitrary-code path in sfl-hook is gone, the two competing SFL pollers collapsed into a push pipeline with cron as a safety net, the wiki schema is enforced at commit time, and the fold queue is observable [~/thoughts/wiki/sleeper-stack-2026-05-25-maintenance-run.md]. Memory holds 61 durable facts and surfaces them every turn; the daily brief, obsession brief, and weekly wiki digest all run. As a nervous system — senses, reflexes, recall — Sleeper is complete. You are not missing any organs.

What you are missing is the thing that sits above all of it and decides what's worth your morning. And the clearest evidence is the one fact that should bother you most: most of what you've fed the system has never been digested. The raw layer is the soil the whole assistant reasons over, and right now it sits mostly untilled, because the fold from raw/ to wiki/ is still a manual Claude task you have to sit down and run [~/thoughts/CLAUDE.md; ~/thoughts/wiki/sleeper-cognition-stack.md]. The system that never forgets is, quietly, barely digesting. (The exact backlog figures are in §2.) That's the first open loop, and it nags precisely because it's invisible until you go looking.

So what's the binding constraint now? Not capability. It's your attention, and your trust in what the system does with it. Three things make that constraint real:

First, the assistant already talks to you unprompted. The obsession brief posts into your chat thread (OBSESSION_REPORT_TO_CHAT_ENABLED=true) and so does the weekly wiki digest (WEEKLY_WIKI_DIGEST_ENABLED=true); action-extraction, the task agent, and the Claude-execution path are all on too (verified live, 2026-05-28). These are your deliberate settings — the point isn't that something's misconfigured. The point is that there are now several independent mouths, each reasonable on its own, none of them aware of the others or of how much you've already heard today. Nobody is keeping a running total of how often the house speaks to you.

Second, this is a one-person system. That cuts two ways: no committee to please, no multi-tenant complexity to carry — you can tune it to one taste, yours — but also every proactive message lands on exactly one desk, and every half-finished loop is a thing only you will ever close. A noisy assistant in a team product is a feature request; a noisy assistant for an audience of one is just a roommate who won't stop narrating.

Third, the maintenance burden is load-bearing. Seventeen-plus services, four repos, a fold you run by hand, killswitches you have to remember the state of. Every new surface is something future-you keeps alive at 11pm when it breaks. This thing has mass, and mass wants feeding.

Put those together and the right north star falls out, inverted: the assistant gets better as it says less. Not less capable — less loud. You have built every sense an assistant could want; what you haven't built is the restraint to use them sparingly, the judgment to pick the one thing that matters this morning and hold the rest until you ask. More features would make a complete system louder. Fewer, quieter, more decisive ones make it kind. Nothing here is broken — it's just that a system this good at remembering needs, finally, to learn what to leave unsaid. The work begins with closing what's already open.

Phase 0 — Consolidation before construction

Before Sleeper learns to say less, it has to finish what it started. None of what follows is new machinery — it's the half-open loops that cost you a little attention every day just by being unfinished. Closing them is the Calm pillar. Build nothing until these are shut. Here's the inventory, worst-nag first.

The corpus is starving. The fold is still all you. This is the big one, and here are the authoritative figures, stated once: 292 raw notes sit on disk; 37 have ever been folded into the wiki (per .processed-raw-files), so ~255 have never been folded; 23 wiki articles carry all the synthesis. (The clustering tool counts 260 unfolded inputs; the separate refold queue for already-folded-but-since-changed notes is just 5.) The last commit that touched wiki/ was 2026-05-25 — three days ago — and it was only the maintenance-run write-up, not a real fold. So roughly eight raw sources have arrived for every one digested, and the digesting is a manual Claude task you run by hand with the wiki-maintenance skill. The whole assistant reasons over the wiki — retrieval, briefs, the obsession clustering, everything downstream pulls from those 23 articles. Every day the gap widens, the thing that's supposed to know you knows a smaller and smaller fraction of what you've actually fed it. The smallest fix is not to automate the fold (that's a real project, and it belongs to the "first move" in §7) — it's to make the backlog stop feeling infinite. The triage layer already clusters the unfolded entries into 28 thematic clusters; a fold session can pick three clusters off a menu rather than staring down the whole pile. The smallest honest step is a weekly standing fold-session — a recurring task, three clusters at a time — that you can actually finish and feel finished.

The cognition-stack rough edges — three of seven still open. The original sleeper-cognition-stack.md ranked seven seams; the 2026-05-25 run closed most. I checked each against the live server today:

So the residue from that catalog is doc-drift plus the manual fold (#5's deeper half — re-process is observable now via needs-refold.json, but folding is still hand-work).

Capture surfaces whose typed home dead-ends. The 2026-05-25 run gave every capture surface a "typed downstream home." But three of those homes are doors that don't open onto anything yet:

The orphans and the one contradiction. The wiki health block flags 6 orphan articles (no raw provenance — ai-fluency-framework, dora-ai-capabilities-model, shared-agent-memory, and three others) and 1 article the contradiction-checker thinks its raw queue may have superseded. Orphans aren't wrong, just untethered — they can't be re-folded because nothing points back to a source. The fix is a five-minute confirmation pass: confirm each orphan is intentional synthesis, and clear the contradiction flag by re-reading the article against its newer raw.

None of this is glamorous. It's closing tabs. But the calm you're after on this server is mostly the absence of "I should really deal with that" — and right now the loudest unspoken "should" is those ~255 never-folded notes.

Tickets P0-1 … P0-5 are listed in full, with one-liners and what each retires, in "The backlog" below.

Pillar I — Self-understanding: the mood, goals, and procrastination surface

You wrote this one down yourself. sfl meta #9 — "My mood, my goals — structure on mood, work tasks, procrastination." It is the one genuinely underserved corner of the whole system. Sleeper knows what you read, bookmarked, shipped, even what you've been quietly obsessing over for three weeks. The one thing it doesn't hold is how you are inside all of that — whether you meant to do the thing you did, whether the week felt like work or like wading. The trick is to fill that gap without building anything that needs feeding: no mood-tracking app, no nightly prompt asking how your day was — those die in a week and you know it. What we build instead is a signal so small it's almost not there, and an interaction that already exists. You talk to Sleeper; it already remembers. We just teach it to keep one more kind of thing, and to reflect it back gently when you ask.

The signal — keep it tiny

Memory already stores typed rows: fact, preference, project, relationship, event. We add one kind, intention — that's the whole data model. An intention row is a soft, time-bound thing you meant to do or be — "get the raw→wiki fold off my plate," "read less and write more this month," "stop opening the laptop after dinner." It lives in the same SQLite table, same importance, same valid_to soft-delete, same FTS index. Nothing new to back up or maintain.

Mood is lighter still — no mood table. Mood is read, not recorded: inferred at request time from signal you already produce — the tone and cadence of recent chat turns, whether tasks are aging or closing, whether this week's obsession clusters are tight (focused) or scattered (thrashing). If you ever want to state a mood, you say it in chat and it lands as a low-importance event ("felt flat today, couldn't start anything"). So the surface holds three things — what you meant to do (intention rows), what you actually did (existing tasks/articles/SFL activity), and a softly-inferred read on how the doing felt. No new write path you have to remember to use.

The interaction — you pull, it reflects

This is pull-by-default, hard. The mood/goals surface never pings you. It answers two questions, both on demand:

"How am I doing?" — you ask in plain language ("how's my week looking," "am I drifting," or /reflect). It assembles a short, warm reflection: your live intention rows, then a quiet honesty pass — you said you wanted to get the fold off your plate; it's still open, three weeks now — naming the gap between intention and activity without scolding. The voice matters more here than anywhere else: this is your inner life, not a build log. It should read like a friend who's been paying attention, not a dashboard. One paragraph, maybe two. Never a list of metrics about your feelings.

The daily block. Per the shared contract, this pillar does not push its own message. It contributes one block to the single daily artifact §4 assembles — today's one live intention (if any), and at most one gentle observation when intention and activity have drifted apart. If there's nothing worth saying, the block is omitted, the way the daily brief already drops empty sections. Most days it's two lines or silent. That restraint is the feature.

How it reuses what's there

The honesty pass is the obsession brief's machinery, borrowed, not rebuilt. The Sunday brief already TF-IDF-clusters 30 days of activity and runs a persona-drift check — what you've been doing vs. who the persona says you are. We point that same comparison at your intention rows instead of (or alongside) the persona; "what you've been doing" vs. "what you said you wanted" is the same computation, reading a different target. It reuses the existing cached clustering; at most one cheap cached generation call, only on explicit pull — never on the hot path. (Mid-week, when the cluster bundle is stale, it falls back to a single cheap FTS-and-task scan.)

Memory carries the goals; persona carries the disposition. Today persona.md's "Human" block is near-empty — exactly the durable self-knowledge your standing intentions can fill, which makes every other chat turn very slightly more grounded in who you actually are.

What it retires / merges

Three things, all itemized in the §9 receipts table: it folds the obsession brief's persona-drift §6 into this surface (drift stops being a buried once-a-week paragraph and becomes the live spine of the reflection — same computation, pull-able any day; the Sunday report keeps its five descriptive sections), it absorbs sfl meta #9 outright (this is the cashing of that idea), and by making mood inferred-and-pull-only it pre-empts a standalone "rate your day" mood tracker before anyone builds it — a retirement of a future surface, which counts.

Tickets P1-1 … P1-6 are listed in full in "The backlog" below.

Pillar II — Calm proactivity: the doorman

If §3 gives Sleeper something true to say, this pillar decides whether to say it at all. You have, by now, nine different parts of Sleeper (the table below enumerates them) that are each allowed to tap you on the shoulder, and not one of them knows about the others. The morning brief fires at 06:30. The obsession brief lands in chat Sunday morning, the wiki digest a couple of hours later — so your Sunday opens with two long machine-written essays before coffee. A starred-and-read article quietly spawns a draft task. The wrap-up nudges you at 22:00. Each was a good idea the day it shipped. The trouble is that "a good idea, in isolation" is exactly what adds up to a noisy house. Nobody is standing at the door deciding which of these actually deserves your morning.

That is the whole of this pillar: a single layer that sits above every existing push path, looks at everything that wants to reach you today, and decides. It ranks the contenders down to one thing that matters today plus a short, ordered tail, and it holds the line on a stated interrupt budget — at most N unsolicited messages a day, and everything below the line waits quietly until you come and pull it. Call it the doorman. (If you want the one indulgent metaphor: this is the prefrontal cortex the stack has been missing — the part that suppresses before it speaks.)

The most important thing up front is what this pillar does not do: it turns nothing new on. Your obsession brief and wiki digest push into chat right now because you deliberately flipped those switches — your settings, not a bug to "fix." The doorman doesn't second-guess what you enabled; its job is to make those already-on paths share one budget and one front door, so the sum stops feeling like a committee all talking at once. Consolidation, not construction.

What's reaching you now, and what the doorman does with it

One row per existing push path, using the verified live state. The disposition column is the new behaviour under the doorman; the rightmost column is the honest effect on how many times Sleeper interrupts you on an average day.

Push path Current behaviour Disposition under the doorman Net effect on msgs/day
Morning brief (BRIEF_CRON, 06:30) Silent APNs refresh; you open the Log tab to read it Becomes the daily artifact's body. The doorman composes its spine (one thing + tail) and the brief renders it. Still one silent refresh. 0 net (it is the channel)
Obsession brief → chat (Sun 07:00, ON) Posts a 200-char preview + file:// link straight into the chat thread Fold-into-daily. Build keeps running and writing to disk; the chat fanout is replaced by a one-line entry in Sunday's spine ("worth pulling: …"). Read in full on demand. −1 on Sundays
Weekly wiki digest → chat (Sun 09:00, ON) Posts a one-line file:// link into chat Fold-into-daily. Same treatment — disk write stays, chat post becomes a tail line in the same Sunday artifact, so the two Sunday essays arrive as one surface. −1 on Sundays
Action extraction (ACTION_EXTRACTION, ON) Starred+read article silently creates a draft task / SFL meta Keep-as-is (already silent). No push today, so no budget cost. The doorman reads the resulting drafts as candidates for the tail. 0
Task agent / claude execution (TASK_AGENT/TASK_CLAUDE, ON) Recurring + agent tasks run on schedule; results land in task rows Keep-as-is. Execution is not a push. Completions surface only through the task→chat path below, which is governed. 0
Task → chat mirror (TASK_TO_CHAT, OFF) Off — task comments/handoffs/completions do not enter chat Pull-only, and governed if ever on. Stays off. If you later want it, it routes through the doorman as a tail candidate, never a raw interrupt. 0
Write router G18 (ROUTING, OFF) Off — Write docs are not auto-dispatched Pull-only. Stays off; out of scope. No bearing on the budget. 0
Saved-search hits → brief (SAVED_SEARCH, OFF) Off — new FTS matches not folded Pull-only / fold-if-enabled. Stays off; the existing design already folds into the brief rather than pushing separately, so it is doorman-shaped by construction. 0
Wrap-up push (22:00, iOS ritual) Visible APNs at 22:00, seeds a chat turn Keep-as-is, but budget-aware. This is a ritual you asked for, so it stays. The doorman simply counts it against the day's budget and suppresses other evening pushes once it has fired. 0 (but caps the evening)

Read the right-hand column top to bottom and the result is plain: on an ordinary weekday the count barely moves, because most of what's "on" was already silent or already pull. The win lands on Sundays, where two long machine essays collapse into one artifact — and across the board as a ceiling: no matter how many paths get added later, the day cannot exceed the budget without the doorman saying so.

The one thing today — the ranking order

When several candidates clear the door on the same day, the doorman needs a stated preference, not a vibe. The order, highest first:

  1. A loop closing on a deadline you set. A task you marked due, a draft action aging past its window — something with a clock that is yours. Time-bound and self-imposed beats everything.
  2. A contradiction or decay in the corpus you reason over. A wiki article flagged stale-and-contradicted, a needs-refold entry — because a quietly wrong knowledge base poisons every later answer. This is the digest's signal, ranked but not shouted.
  3. A pattern about you that you'd want to know. The obsession brief's "two threads worth pulling" — what you keep circling, what you've stopped touching. Reflective, not urgent; it earns the top tail slot, rarely the headline.
  4. A fresh capture that needs a decision. A starred article with an extracted action awaiting your yes/no.
  5. Everything else — informational, no decision attached. These do not push at all; they sit in the pull view.

Ties break toward closure over novelty: finishing something you already started beats starting something new. That single rule is the calm pillar in miniature — the doorman would always rather hand you a loop to close than a thread to open.

The interrupt budget itself is a number you own, defaulted low — one proactive message on weekdays, two on the Sunday review day — exposed as a setting, never silently exceeded. When more than the budget clears the door, the surplus does not vanish; it drops into the pull view with a count ("3 more waiting"), so nothing is lost, it is merely not shoved at you. To be explicit: the pull view is not a new place — it is the same read-only render as §6's single pane of glass, one artifact with the overflow tail as one of its regions. The success test is deliberately inverted: a good week is one where the doorman stayed mostly quiet and the pull view did the work.

Tickets GOV-1 … GOV-5 are listed in full in "The backlog" below.

Pillars III & IV — Work and the wiki, served by fusion (zero net-new surfaces)

With the two new surfaces now spent, the next two pillars cost nothing. The work pillar — your AI-Labs life at Miles, the bi-weekly status meetings that sweep across AI Enablement, the QA Team, Autonomous Agents for Ops, Project Vibe — and the sense-making pillar — being able to think with the AI-in-orgs corpus you've spent months curating — need nothing new built. Everything the two want already exists, just pointed slightly away from each other. This whole section is wiring; if a proposal below isn't connecting two parts that already run, it doesn't belong here. The leverage is in the seams.

The corpus is already in the retrieval path — it's just dumb to context. context.ts pulls from five corpora, wiki among them, dropping up to three matched articles into a "Relevant from your knowledge base" block on every chat turn (backend/src/services/context.ts). So the DORA capabilities model or the AI Fluency 4Ds can surface when you ask — if the router searches and the embedding match is close enough. The gap: retrieval is keyed purely to your immediate message. It has no idea you have a Labs status meeting in two days, or that "Autonomous Agents for Ops" is what the ai-agents-practical-use-cases and ai-agent-infrastructure notes are about. The corpus is reachable but not timed, and it doesn't know your initiatives by name.

Memory is where the org lives — and it's underfed on this. memoryClient holds durable facts and surfaces them as a "Relevant memory" block every turn, plus the persona as a system prefix. The four initiatives, who owns which, the bi-weekly cadence, the recurring frustration you circle each cycle — these are exactly the project and relationship facts the extractor is built to hold. Right now it learns them only incidentally. We can seed them deliberately, once, and let the existing extractor maintain them.

The daily brief already gathers from tasks, memory, wiki moves, and SFL — it just doesn't know what week it is. briefBuilder.ts pulls aging tasks, memory deltas, moved wiki articles, and shipped SFL metas into one composed artifact, with no notion of your Labs rhythm. The fix is small: a "Labs cadence" signal that knows the bi-weekly date math and, on the day before a status meeting, folds a short block into the existing daily artifact — "Labs status tomorrow. Last cycle you flagged X on QA. Two wiki notes worth a glance: dora-ai-capabilities, organizational-ai-enablement." One block, on roughly one day in fourteen, inside the artifact you're already going to read. No new push.

The G18 router is the capture-to-corpus closer. write-api's classifier already sorts a Write doc into wiki-fold, memory-fact, sfl-meta, and the rest. When you jot a meeting note, wiki-fold carries an observation — say, how a team's weak version-control practice is blunting its AI gains — straight toward the knowledge base, precisely the cognitive-debt / DORA material your corpus already reasons about. It's off (ROUTING_ENABLED=false) and §4 governs whether it turns on — but the wiring from "I noticed this in a Labs meeting" to "the corpus now knows it" is already written.

So the fusion is a loop, and every piece of it exists in code — though the first hop stays dormant until you flip ROUTING_ENABLED (so this is the wiring that's built, not a loop that runs today):

A Labs meeting generates a note in Write → the router folds the durable parts into wiki and memory → the next time you ask the assistant about that initiative, retrieval surfaces your own folded thinking back to you → the brief, knowing the bi-weekly date, hands you the right two notes the morning before the next meeting.

Capture, type, retrieve, time. The system already does the first three. We're closing the fourth and pointing the first three at your work shape by name.

One honest caveat: fusion can't reason over notes that never got folded, so this section depends on the §2 fold backlog — it doesn't substitute for it.

Tickets F1 … F5 are listed in full in "The backlog" below (F1/F5 are blocked on the §11 org-facts answer).

Pillar V — Joy, craft, and the single calm pane of glass

There is a kind of help that arrives as a wall of text, correct and exhausting, and a kind that arrives as a sentence someone clearly chose. The whole difference between a system that serves you and a system that taxes you lives in that gap. So far this plan has been about subtraction — saying less, finishing more. This last pillar is about what's left after the subtraction, and how it should feel in your hand: like the inside cover of a slim, well-set book, not a SaaS dashboard blinking for attention.

What "joyful, calm, efficient" actually means

It means the assistant never speaks in log dumps. The briefs, the digests, and every system message in chat are written by good machinery — but machinery is the wrong author. WEEKLY_WIKI_DIGEST: 6 sections, 7-day window, 3 contradictions is a status code; "Three of your notes started arguing with each other this week — worth a look when you have a minute" is a person talking. Same information, opposite cost. The Almanac voice is already the house style for chat and the wiki reader; the work is to make it the rule everywhere the assistant emits prose, not a coat of paint on the parts you happen to look at.

Concretely, three commitments. One accent at the moment of attention — Almanac's discipline (hairline rules instead of boxed cards, one rust-or-amber mark per screen, serif body always, no chrome) is a forcing function: a surface that can hold only one accent forces the author to decide what the one thing is. That is §4's ranker, expressed in pixels. Prose that reads aloud — every recurring artifact passes the kitchen-table test: if a sentence would feel cold read aloud to a friend, it gets softened before it ships. No surface that is merely a dump of rows — keep tables terse and technical where a table is the right form (the backlog, the accounting); where prose is the form, let a person have written it.

This is cheap to do and easy to skip, which is why it needs to be a pillar. The cost of skipping it isn't ugliness — it's that you stop reading what the assistant writes, and a calm system you don't read is just a quiet failure.

The single pane of glass — a render, not a surface

Here is the temptation this plan must refuse out loud: build a beautiful dashboard — a live home screen with its own data model, its own write-backs, its own little push when something changes. That is net-new surface #3, and there is no room for it under the ≤2 cap. So the pane of glass is defined by what it is not. It is a read-only rendering of the one daily artifact — the same artifact §4 assembles (the single "one thing today" plus the ordered short tail), carrying §3's mood block and the current open-loop status. It owns no data, writes nothing, pushes nothing — a window onto a thing that already exists, the way the wiki reader is a window onto ~/thoughts/wiki/ and never the source of truth for it.

We already have the proof. The wiki reader (~/github/wiki-reader/) is node build.js — plain Node, marked, gray-matter, Almanac tokens read at build time, ~70 ms for the whole site, zero client runtime. It reads a JSON index plus markdown and emits dumb HTML in the house style. The pane of glass is the same shape of thing pointed at a different input: instead of wiki-index.json + wiki markdown, it reads the assembled daily artifact (the JSON §4 already produces to drive the chat spine) and renders one quiet Almanac page — headline "one thing today," a hairline, the short tail, a hairline, §4's overflow "N more waiting" tail (the pull view is this region — same render, not a second screen), a hairline, the §3 mood reflection, a hairline, the Phase-0 open-loop ledger. One accent. One screen. You pull it up when you want it; it does not pull you.

The contract test is unforgiving: if it cannot be a pure function of the daily artifact, it does not get built. The moment it needs a database, a POST, an "are you sure?", a notification, or any state of its own, it has become surface #3 — and the honest move is to not build it and say why. A view that quietly grows a write path is how every calm dashboard in history became a noisy one.

What it buys you: the daily artifact stops being trapped in a chat thread you have to scroll. It becomes a place — a single URL, same warm paper as everything else — that answers "what matters today, how am I doing, what's still open" in one glance, then lets you close the tab and get on with your morning. That is the joy. Not features. A made thing, made well, that asks nothing back.

Tickets V-1 … V-4 are listed in full in "The backlog" below.

What we will NOT build — and the first move

The easiest way to make Sleeper louder is to add something; the easiest way to make it calmer is to refuse to. Here is the list you can point at when the urge to build brief #19 arrives at 11pm. None are forbidden forever — only by this plan, because each would add a thing to your life when the whole point is to subtract.

No new capture surface. SFL, articles, memory, tasks, and Write already flow into typed homes. Another inbox doesn't help you think; it gives you one more place to feel behind.

No new push channel. The chat thread is the one place Sleeper may interrupt you, and §4's governor already throttles that. A second channel — email digest, notification, a new SSE stream — would just route around the interrupt budget this whole plan is building. The budget only means something if there's nowhere to leak.

No second persona. One voice everywhere. A "work persona" or "coach persona" splits trust and doubles the maintenance. The §3 mood/goals surface is a new block, not a new someone.

No multi-user creep. This is a one-person system and that is its superpower — it can be opinionated, it can know you. The moment we add accounts or sharing, every feature gets more general and less yours. Resist it by construction.

No net-new app or UI beyond the §6 render. If a proposal can't be a pure render of the daily artifact (the test §6 sets out), it's a new app wearing the pane's name, and it's out.

The rule underneath all five: if a proposal isn't one of the two sanctioned surfaces (§3 mood/goals, §4 the attention-ranker) or a fusion/closure of parts you already own, it is out of scope. Subtle is subtraction. This list is itself the calmest artifact in the plan — the work you've already decided not to do.

The first move

Everything above is a fence. This is the gate. Start here Monday, before any new surface: close the raw→wiki fold loop. The §2 backlog tells the story — ~255 never-folded notes against 23 articles carrying the weight — and every clever ranking layer we build sits on a corpus that's mostly stale; the doorman can't rank what the wiki never absorbed.

So the highest-leverage Monday is unglamorous: a bounded fold session. Not "automate the fold" — a capped, human-judgment pass via the wiki-maintenance skill, time-boxed, working oldest-first through raw/, folding or explicitly retiring each source until the backlog is under, say, 50. Then the standing weekly 30-minute fold (P0-1's cluster-menu) keeps it there. Closing this loop is the Calm pillar made literal: the open loop that's been nagging most, and the one that makes everything downstream smarter for free.

The backlog

Every section's startable tickets, grouped by phase. Each line: ID — title — one-liner — pillar — retires-what.

Phase 0 — Consolidation (Calm)

Phase 1 — Self-understanding (Pillar I, Surface #1)

Phase 2 — The doorman (Pillar II, Surface #2)

Phase 3 — Fusion / wiring (Pillars III + IV, zero net-new surface)

Phase 4 — Craft / pane of glass (Pillar V)

First move

The honest accounting (the receipts)

The plan commits to ≤2 net-new surfaces. Here is the proof, surface by surface. Everything not in this table is either a fusion of parts that already run, a render of an artifact that already exists, or wiring — never a new thing to feed.

# Net-new surface Section What it is Why it's genuinely net-new
1 Mood / goals / intention surface §3 One new memory kind (intention) + a pull-only reflection endpoint and chat intent New data kind + new interaction; everything else (clustering, drift, persona) is reused
2 Attention-ranker / the doorman (governor) §4 A ranking + interrupt-budget layer above all existing push paths New decision layer; it governs existing paths but is itself new logic

Everything else is explicitly not a surface:

Retirements and merges named across the plan

Retired / merged Into / by Section / ticket
Obsession brief's persona-drift §6 (once-a-week buried paragraph) The pull-able reflection path §3 / P1-5
sfl meta #9 (mood/goals idea) Cashed and closed by the §3 surface §3
A future standalone "rate your day" mood tracker Pre-empted by inferred, pull-only mood §3
Obsession brief → chat fanout (Sunday push) One-line entry in Sunday's daily artifact §4 / GOV-2
Weekly wiki digest → chat fanout (Sunday push) Tail line in the same single Sunday artifact §4 / GOV-2
The implicit unbounded push ceiling A stated, owned interrupt budget §4 / GOV-3
The open-ended "I should fold the wiki someday" dread A bounded, finishable standing fold-session §2 / P0-1, T-FIRST
Stale "default-off" killswitch claims in the docs A doc-truth pass matching live env §2 / P0-2
Ambiguous "is this article still true?" flags Confirmed orphans + cleared contradiction §2 / P0-3
Log-dump phrasing in assistant-authored prose Almanac, person-written voice everywhere §6 / V-1
The corpus-starving manual-fold loop Drained backlog + standing weekly fold §7 / T-FIRST

Two new surfaces. Eleven things retired or merged. That is the shape of subtraction.

Success metrics

All inverted: success is measured by how little Sleeper says and how much it closes.

Open questions

None of this adds anything to your life except quiet. That's the whole point.

— SOURCES
— GRAPH
— 6 RELATED