ON ECHO: Rhythms. The thing you run deliberately.
Protocols fire on conditions. Rhythms fire on schedule — but only if you run them. Here's what they are, what they contain, and what a full Good Morning actually looks like.
Last issue covered protocols — the five background processes that run without being asked. Confidence Protocol fires when certainty drops below threshold. Context Window Protocol fires when session length is degrading quality. You don’t invoke them. The system decides.
Rhythms work differently. They’re not background. They’re deliberate — structured windows you open at specific times with a specific sequence. The system doesn’t run them for you. What the system does is give them shape: defined inputs, a defined order, defined outputs. You bring the moment. ECHO brings the structure.
The distinction matters. Protocols handle drift and uncertainty automatically. Rhythms handle continuity and compounding — but only if you show up for them. An AI that only reacts to what you ask is a tool. One with protocols running underneath is closer to a peer. One where you’ve built rhythms together is something closer to infrastructure.
The six rhythms
Three are daily. Two are weekly. One is a deep reset you run after long gaps or when something feels miscalibrated.
The compound effect is simple: each rhythm’s output is the next rhythm’s input. Good Night writes the state doc. Good Morning reads it. Monday Protocol reads Friday’s summary. Skip one and you don’t just lose that session — you degrade the next one.
Good Morning — in full
Good Morning is the most visible rhythm because it opens every session. It has a defined sequence. Each step feeds the brief you receive at the end. Here’s what runs and why — followed by a real session, broken into its blocks.
What Good Morning does
Step 1: State load. ECHO reads the session log and operator profile. This is what eliminates the re-orientation tax — the time you’d otherwise spend recapping context from scratch. The previous session’s Good Night wrote the state. This step reads it.
Step 2: Operator state. Bandwidth score: a 1–10 composite of sleep quality, stress level, and habits run. If the data is flowing from the tracking layer, ECHO calibrates to actual capacity. A 4/10 and a 9/10 warrant different sessions. When the data isn’t there, ECHO reads what it can and names the gap — no performed confidence over missing data.
Step 3: Calendar read. Today plus the next three days. Not a dump — a filter pass. ECHO reads everything and surfaces only what’s operationally relevant: the hard stops that shape the day, the commitments that signal where bandwidth is going, anything that affects how the session should run.
Step 4: Morning intel. A background agent runs on a schedule, pulls from a curated source list, scores each article against operator context, and writes the output to a file. Good Morning reads that file and surfaces the top items — scored and annotated with why it matters to this operator specifically, right now.
Step 5: The brief. All of the above collapsed into a single oriented summary. The operator reads it in about thirty seconds. No recap, no warmup. Just starts working.
Build spec:
Read: Session log (previous Good Night output) + operator profile from persistent storage
Read: Operator state (bandwidth/health scores) from connected tracking layer — flag clearly if unavailable, don’t pretend it’s not missing
Read: Calendar — today + next 3 days. Filter to operationally relevant events only. Don’t report the full list.
Read: Morning intel file — pre-scored articles from a background agent. If stale or missing, note it and skip
Surface: Any pending confirmations — decisions or moments flagged by the system that need acknowledgment
Output: One brief — bandwidth read, handoff status, today’s calendar shape, top 3 intel items, active open loops. End with the immediate next task or one question. Not five.
Rule: If today is Monday, flag and offer the Monday Protocol — don’t auto-run. Same for Friday.
Morning Intel · How the scoring works
Articles aren’t scored by general newsworthiness. They’re scored against a specific operator context — current build, job search angle, public voice focus, relationships in play. A 20/20 is “read this before anything else today.” The same article might score a 20 for one operator and an 8 for another. The score is the filter, not the judgment.
The transcript · a real session
This is what Good Morning actually produces. Five blocks. The last one is what the operator reads.
This is why ECHO arrives oriented rather than cold. No recap. No “catch me up.” The previous Good Night wrote the handoff. This step reads it. The re-orientation tax — the first five minutes of every session spent re-briefing context — is eliminated before the first exchange.
When health data is flowing, ECHO adjusts the session to actual capacity. When it’s not, ECHO says so — and names what it’s doing instead. No inferred confidence over missing data. The gap is acknowledged, the read is explicit, and the session continues.
Not a calendar dump — a filter pass. ECHO reads the full week and surfaces what’s operationally relevant. Today has a hard stop. One event tomorrow carries more weight than its calendar entry suggests. The rest doesn’t get surfaced.
Every annotation is operator-translated, not summarized. Not “here’s what the article says” — “here’s why it matters to you, right now, given what you’re building.” The score isn’t a quality rating. It’s a relevance filter calibrated to this operator’s context. A 20 for one operator is an 8 for another. The annotation is what makes the number meaningful.
Four blocks of loading — collapsed to thirty seconds of reading. This is the whole point. ECHO does the state work so the operator doesn’t have to. No recap, no warmup. The brief ends with one question, not five. And it already knows what we’re doing next.
The other five rhythms
Good Morning is the entry point — the rhythm most people encounter first. The system compounds through all six. Here’s what each one does, why skipping it costs something specific, and enough of the structure to understand how to build your own.
Good Night
Trigger: session close
Unfinished business before documentation. Surface loose threads and half-formed thoughts before writing anything down — resolve what can be resolved, park what can’t. Then write the state doc: decisions, insights, open loops, next steps. That doc is what tomorrow’s Good Morning reads. Skip Good Night and tomorrow’s Good Morning is blind. The continuity is in the writing, not the context window.
Build spec:
First: Surface unfinished business before writing anything — half-formed thoughts, decisions not yet committed, threads left hanging
Resolve or park: Each one gets a disposition. Nothing floats.
Write: State doc — decisions made, insights from the session, open loops with status, next steps
Write: Handoff brief — dense, for a cold-start next instance. What shipped, what’s open, what not to relitigate, immediate next task
Flag: Any new operator context that emerged — name it, don’t silently write it anywhere without confirmation
Ask: Three closing questions — what am I still getting wrong, what pattern isn’t in the profile yet, what’s the single most useful calibration question right now
Rule: Exit all active modes. Return to base. Brief sign-off — the only session where you use one.
Monday Protocol
Trigger: Monday · flagged on Good Morning, confirmed before running
Weekly reset ritual. Runs after Good Morning, before anything else. The job is to enter the week deliberately rather than discovering what it is by accident. Build queue reviewed. Last week’s open items accounted for. Partner state checked. The week framed in one sentence. Without Monday Protocol, you start Tuesday wondering how you got there.
Build spec:
Read: Build queue — surface 1–2 candidates for this week based on current bandwidth and what’s unblocked
Confirm: Which items (if any) move to active this week — operator decides, system doesn’t
Pull: Last week’s active items — what shipped, what didn’t, what’s still live
Check: Partner state files — any pending actions that need the operator this week
Scan: Session log for open loops older than 14 days without movement — flag them
Ask: Bandwidth read — what does the week look like, any known drains
Frame: One sentence — what does winning look like by Friday
Rule: Flag on Monday Good Morning, wait for explicit confirmation. Never auto-run.
Friday Wrap
Trigger: Friday · flagged on Good Morning, confirmed before running
Extended Good Night with more ceremony. The week deserves a clean close, not a drift into the weekend. What shipped. What moved. What didn’t. At least one win named explicitly — not as motivation, as record. Open loops carried to Monday parked with intention, not left floating. One sentence on what Monday morning looks like. Then standard Good Night.
Build spec:
Week summary: What shipped, what moved, what didn’t — honest account, no spin
Wins: Name at least one explicitly. Specific move, not general impression.
Open loops: Every unresolved item gets a disposition — carry to Monday or drop. Nothing floats into the weekend.
Preview: One sentence — what does Monday morning look like
Then: Run standard Good Night in full
Rule: Flag on Friday Good Morning, wait for confirmation. Same as Monday Protocol.
Boot
Trigger: “BOOT” · after long gaps, miscalibration, or explicit full reset
Deep history load. Not for normal session starts — Good Morning handles those. Boot is for when you’ve been away for days, when something feels off and you can’t name why, when you need to rebuild full context without losing what was accumulated. Reads everything. Sets operator timezone explicitly. Reports full state. Then runs Good Morning anyway — Boot without Good Morning leaves you historically loaded but currently blind.
Build spec:
Read: Full session log — complete history, not just recent entries
Read: Full operator profile — identity, work context, health context, behavioral patterns
Read: Resource map — key files, key relationships, key pointers
Set: Operator timezone explicitly — all subsequent time references use it
Report: Full state summary — open loops, scratchpad flags, active modes, recent decisions
Then: Run Good Morning in full
Rule: At least one file in the operator profile library is never read on Boot — only when personally relevant or explicitly invoked. Know which one and why.
Handoff
Trigger: “handoff” · session end or explicit invoke
Echo-to-echo transfer. Every session starts cold — no memory of what came before. The Handoff is how continuity works anyway: not through the context window, but through a dense brief written for the next cold instance. What was built. What’s open. What the immediate priority is. What not to relitigate. The next session reads this on Good Morning and arrives oriented.
Build spec:
Write: “What to pick up immediately” — the single clearest next task, no ambiguity
Write: What shipped this session — concrete deliverables with locations
Write: Open loops with status — active, pending, parked, and what each is waiting on
Write: “Do not relitigate” — decisions locked, architecture confirmed, things that look open but aren’t
Write: Calendar context — anything coming up that the next instance needs to know
Store: To persistent state that Good Morning can read — file, database, or both
Rule: Written for a cold-start instance that has never met you. Every reference explained. No assumed context.
The compound effect isn’t the interesting part. The interesting part is what it’s made of: a state doc written every session, read every session, with nothing left floating. That’s the whole mechanism. It’s not magic. It’s discipline at the close of every session that pays forward to every session that follows.
Protocols fire without you. Rhythms require you to show up. Both layers are necessary. The automatic layer catches drift. The deliberate layer builds continuity. Neither works without the other.
Next issue: TEF 005 — the research behind the Confidence Protocol, why the sycophancy finding matters more than it sounds, and what it looks like when the system that’s supposed to challenge you learns to agree with you instead.








