Wednesday Session Lifecycle — Operator Guide
What it is, in one line: the handful of commands that start, close, hand off,
and persist a Wednesday working session — and the one confusion to avoid
(handoff ≠ commit ≠ push). Same triggers on every runtime (Claude Code, Telegram,
Codex). Unchanged by the “Wednesday possesses Hermes” rework
(2026-05-29) — that added boot checks, not new commands.
Start a session
boot wednesday — the full start
Runs the canonical boot path: MCP scan, vault audit, agentic-OS health, daemon health, bus anomalies, active lessons, skill surface, state-drift check, self-check → then enters active posture with a one-line verdict (clean / warn / blocked / stale).
You’ll now also see (added 2026-05-29): [AGENTS] surfaced=N, [CAPS] skills cc=…/hermes=…, [LEARNING] N candidate(s). Those are status lines, not new
commands — just richer awareness at boot.
The existing [CAPS] line also reports
behavior: endpoint:attachments=<status> for the workspace-md3/Familiars
attachment extractor. ok means the offline extractor harness completed with
its expected exit; broken means it completed with another exit; and
present (unprobed) means the scanner could not execute it because metadata or
the executable was invalid or missing, the launch failed, or it timed out. The
latter two states carry a warning marker. This is a local extractor probe, not a
claim of literal Apple Reminders attachment coverage.
Use it: at the start of any real working session. If anything is stale or blocked, Wednesday stops and tells you — she won’t pretend the state is clean.
load wednesday — inspect only
Reads the boot file and stops in inspection state. No self-check, no active posture. Use when you want to look without “starting” her.
wake wednesday — resume after a load
Assumes a load wednesday happened earlier in the same session. If not, she says
the self-check was skipped and points you to boot wednesday.
Close a session
close session / /session-close — the proper full close
Runs the session-close gate (mandatory before any “session safe / good state” claim):
- Updates
runtime_state.json(phase + last meaningful session + trimmed pending). - Appends a
runtime_notes_trailentry (incl. realignments — your mid-session corrections, quoted). - Overwrites
scratchpad.mdcurrent focus (old → archive). - Updates memory for anything that changed.
- Re-reads + cross-checks phase consistency. Any mismatch → STOP + fix + re-run.
This is the closing trigger. A commit usually happens here as hygiene. Push does not — see below.
Hand off mid-task (NOT a close)
handoff
Writes task_handoff.md so another LLM runtime can pick up an unfinished task
(e.g. you hit a Claude rate limit and want to continue on Codex). Wednesday
asks for: task name, done steps, next steps, context. Any runtime surfaces it on
next boot.
Important —
handoffis NOT how you commit or push. It only carries task state across a runtime switch. It writes one file. No git, no close.
clear handoff
Blanks task_handoff.md (task: "—"). Use when the task is done or the handoff is
no longer needed.
Persist to git (commit & push)
- commit — happens at close as hygiene (Wednesday commits the state/work). The vault tracks state files, so a close commit keeps history.
- push — explicit, never automatic. There IS a remote (
origin/main). Local commits accumulate until you saypush. (As of 2026-05-29 there were 34 commits parked locally — push only happens on your word.)
If you want everything on the remote, end with:
close session→ thenpush.
Cross-runtime parity (maintenance)
wednesday sync-all (or run _infra/scripts/wednesday-sync-all.py)
One command that brings every runtime to the same capability set (persona/SOUL + Claude-Code skills + agents + Hermes skills + MCP registry + capability registry). Run it after adding/editing skills or agents so Telegram-Wednesday and Claude-Code-Wednesday don’t drift apart. Boot already audits this and tells you if something’s stale.
Quick reference
| You want to… | Say | What it does | Auto-commit? | Auto-push? |
|---|---|---|---|---|
| Start working | boot wednesday | full boot + health + self-check | — | — |
| Just look | load wednesday | inspect, no start | — | — |
| Resume after load | wake wednesday | enter posture | — | — |
| Close properly | close session | state + scratchpad + notes + memory + verify | usually (hygiene) | ❌ |
| Switch runtime mid-task | handoff | writes task_handoff.md | ❌ | ❌ |
| Drop a handoff | clear handoff | blanks it | — | — |
| Upload to remote | push | git push origin main | — | ✅ (explicit) |
| Re-sync all runtimes | wednesday sync-all | parity across Claude/Telegram/etc. | — | — |
The one confusion to avoid
handoff, close session, and push are three different things:
handoff= “I’m switching runtime mid-task.” (one file, task state)close session= “we’re done for now.” (state files + verify; commit as hygiene)push= “put the commits on the remote.” (explicit, on your word)
A clean end-of-day is usually just: close session → push. You only use
handoff when a task is unfinished and you’re changing which LLM continues it.
Status (2026-05-29)
Triggers unchanged by the Hermes-possession rework. Boot now surfaces extra status
lines ([AGENTS], [CAPS], [LEARNING]) + an MCP scan; the session-close gate
dropped its old skill-review step. Canonical command definitions live in
CLAUDE.md (root) — this guide is the operator-facing summary.