Shutting Down All Personas
Overview
The live persona sessions of one app form a pod: a required operator and engineer,
plus whatever optional roles are armed. They talk between wakes through the shared comm
(docs/operation/<app>/comm/YYYY-MM-DD.md, read every wake). That channel is how a pod
is stood down: one shutdown entry addressed to pod, which each persona acts on
at its next wake by running the shutting-down-current-persona procedure in its own
session and posting its ack.
This skill is the broadcaster and the verifier. It does not stop anyone else's session,
and it cannot: a session is only stood down from inside. What it produces is the order,
the wait, and a per-role verdict the user can act on — which windows are safe to close,
which need a hand, and what stopped being watched.
Run it from the user's own session or from any pod member. Setting the pod up is
setting-up-persona-loops; standing down the one session you are in is
shutting-down-current-persona.
When to Use
- The user is closing the loop for the night, freeing the machine, or going on leave.
- Guides changed enough that every persona should be re-armed from a fresh paste.
- The repo is being moved, archived, or handed over.
Not for: one session (that is shutting-down-current-persona), a pod with no comm
(stand each session down individually, oldest cadence first), or retiring a persona
permanently (a to-user proposal, then a removal).
The Rule
Broadcast, then verify — never seize. A shutdown order does not suspend edit
rights: another role's claimed item, worktree, cron and heartbeat stay untouched even
when its session never answers. A persona that cannot stand itself down leaves work
that gets filed, not taken.
And the order is the user's to give. The pod exists because something needed watching;
the moment it stops, that thing is unwatched. This skill names what goes dark and gets
a yes before it posts anything.
Sequence
Commands, templates and the report skeleton are in
references/broadcast-and-verify.md.
- Take the pod's pulse before ordering it down. Who is actually live
(
ls -l ~/.<app>/*-heartbeat and their ages), and what is mid-flight: a deploy
started but not verified, an open soak, an unapplied migration, an unmerged
worktree, a to-user item waiting on an answer the user is about to walk away
from. A pod ordered down mid-deploy leaves an env in a state nobody is watching.
- Say what goes dark, then get the go. Which envs lose monitoring and self-heal,
from when, what an open soak loses by being abandoned, and anything irreversible
still in flight. The user decides; this skill never decides that the loop should
stop.
- Post one
shutdown entry addressed to pod. Name the roles, the time, and the
procedure each is to follow, so nobody improvises a shutdown of their own design.
Commit it comm:-prefixed with named paths and push immediately — an unpushed
order reaches nobody.
- Touch nothing else. No deleting another session's cron, no editing its claimed
items, no removing its worktree, no
/loop stop from outside. The entry is the
whole mechanism.
- Wait by cadence, not by clock. Each persona acts at its next wake: an operator
at ~900 s, an engineer at ~1800 s, a product manager at ~3600 s. Expect the last ack
about one full interval after the post, and say so up front — a pod that looks
unresponsive for forty minutes is usually just a product manager between wakes.
If the user will not wait, the fast path per role is to open that window and run
shutting-down-current-persona in it.
- Go last if you are the operator. The operator is the comm's custodian: it
collects the acks, files what nobody could close, prunes, and posts
note: pod down
before standing itself down. Any other pod member stands down at its own wake like
everyone else. A caller that is not a pod member skips this step.
- Verify per role, not in aggregate. Every armed role ends in exactly one state:
acked, still-looping, crashed, or never-looped — the table below tells them apart
from the ack and the heartbeat. "No new comm entries" is not a verdict.
- File the leftovers and report. Every
in-progress item with no owner left alive
becomes a to-user ops-issue naming the item, the role, and where the work got
to. Then the report: per role, safe-to-close or needs-a-hand; what is unmonitored
from what time; and the exact pastes that bring the pod back.
Reading the pod after the order
| What you see |
What it means |
What you do |
ack: <role> stood down in the comm |
stood down cleanly |
tell the user that window is safe to close |
| No ack, heartbeat fresh |
still looping; its wake has not come yet |
wait one more interval before concluding anything |
| No ack, heartbeat stale, no commits since |
crashed, or died mid-stand-down |
do not seize its claims — file the ops-issue; the user closes the window |
| Heartbeat absent |
never looped: it never read the comm, so the order never reached it |
check the bus for anything it claimed while running by hand, file it, user closes the window |
| Ack posted, heartbeat now stale |
normal and expected |
nothing — a stood-down persona leaves a stale heartbeat on purpose |
Quick Reference
| Need |
Goes to |
Never |
| Stop every live persona |
one shutdown entry addressed to pod |
one entry per role, or a message in each window |
| Stop one session |
shutting-down-current-persona, inside that session |
an order from outside |
| A persona that never answers |
a to-user ops-issue naming its open claims |
taking its item, worktree or cron |
| The order's deadline |
the slowest cadence in the pod, stated when posting |
a clock time the personas cannot see |
| The last one out |
the operator: acks collected, leftovers filed, note: pod down |
the operator first, leaving the comm unpruned and the acks uncollected |
| Bringing the pod back |
paste each guide into a fresh session, /model, /loop — required pair first |
expecting a stood-down session to resume itself |
Common Mistakes
- Ordering the pod down mid-deploy — the one moment an env most needs someone
watching is the moment after a deploy nobody verified. Take the pulse first.
- Posting per-role entries — they drift: one says the procedure, the next says
"stand down", a third gets edited. The comm is read by everyone; one entry addressed
to
pod is the whole order.
- Seizing a silent persona's work — a shutdown order does not transfer edit
rights. The claim is what a fresh session resumes; take it and the resumption breaks.
- Declaring the pod down from silence — silence is the same shape as a persona
between wakes. A verdict needs an ack or a heartbeat, per role.
- Killing the windows to be quick — a closed window is a crash: an item stays
in-progress, the CURRENT STATE block is a day stale, and the next arming starts by
reconciling a mess. The broadcast costs one wake.
- Standing the operator down first — it is the custodian; going first leaves the
acks uncollected, the leftovers unfiled and the comm unpruned.
- Forgetting the comm is transient — the shutdown entry and every ack are gone in
7 days. What must survive goes into each persona's
CURRENT STATE (its own
stand-down writes it) and into the ops-issues filed for the stragglers.
- Silence about what stopped being watched — the report names each env, the time
it went dark, and what no longer self-heals. That is the whole reason the pod ran.
1---2name: shutting-down-all-personas3description: Use when the whole pod of live persona sessions for a repo has to stop — closing the loop for the night, freeing the machine, or re-arming everything after a guide overhaul. Posts one `shutdown` entry to the shared comm that every persona acts on at its next wake, then verifies the acks so the user knows which windows are safe to close. Triggers on "shut down all personas", "close the pod", "stop the loop", "I'm done for the day, shut everything down".4---56# Shutting Down All Personas78## Overview910The live persona sessions of one app form a **pod**: a required operator and engineer,11plus whatever optional roles are armed. They talk between wakes through the shared comm12(`docs/operation/<app>/comm/YYYY-MM-DD.md`, read every wake). That channel is how a pod13is stood down: **one `shutdown` entry addressed to `pod`**, which each persona acts on14at its next wake by running the `shutting-down-current-persona` procedure in its own15session and posting its ack.1617This skill is the broadcaster and the verifier. It does not stop anyone else's session,18and it cannot: a session is only stood down from inside. What it produces is the order,19the wait, and a per-role verdict the user can act on — which windows are safe to close,20which need a hand, and what stopped being watched.2122Run it from the user's own session or from any pod member. Setting the pod up is23`setting-up-persona-loops`; standing down the one session you are in is24`shutting-down-current-persona`.2526## When to Use2728- The user is closing the loop for the night, freeing the machine, or going on leave.29- Guides changed enough that every persona should be re-armed from a fresh paste.30- The repo is being moved, archived, or handed over.3132Not for: one session (that is `shutting-down-current-persona`), a pod with no comm33(stand each session down individually, oldest cadence first), or retiring a persona34permanently (a `to-user` proposal, then a removal).3536## The Rule3738**Broadcast, then verify — never seize.** A shutdown order does not suspend edit39rights: another role's claimed item, worktree, cron and heartbeat stay untouched even40when its session never answers. A persona that cannot stand itself down leaves work41that gets *filed*, not taken.4243And the order is the user's to give. The pod exists because something needed watching;44the moment it stops, that thing is unwatched. This skill names what goes dark and gets45a yes before it posts anything.4647## Sequence4849Commands, templates and the report skeleton are in50`references/broadcast-and-verify.md`.51521. **Take the pod's pulse before ordering it down.** Who is actually live53 (`ls -l ~/.<app>/*-heartbeat` and their ages), and what is mid-flight: a deploy54 started but not verified, an open soak, an unapplied migration, an unmerged55 worktree, a `to-user` item waiting on an answer the user is about to walk away56 from. A pod ordered down mid-deploy leaves an env in a state nobody is watching.572. **Say what goes dark, then get the go.** Which envs lose monitoring and self-heal,58 from when, what an open soak loses by being abandoned, and anything irreversible59 still in flight. The user decides; this skill never decides that the loop should60 stop.613. **Post one `shutdown` entry addressed to `pod`.** Name the roles, the time, and the62 procedure each is to follow, so nobody improvises a shutdown of their own design.63 Commit it `comm:`-prefixed with named paths and push immediately — an unpushed64 order reaches nobody.654. **Touch nothing else.** No deleting another session's cron, no editing its claimed66 items, no removing its worktree, no `/loop` stop from outside. The entry is the67 whole mechanism.685. **Wait by cadence, not by clock.** Each persona acts at its *next wake*: an operator69 at ~900 s, an engineer at ~1800 s, a product manager at ~3600 s. Expect the last ack70 about one full interval after the post, and say so up front — a pod that looks71 unresponsive for forty minutes is usually just a product manager between wakes.72 If the user will not wait, the fast path per role is to open that window and run73 `shutting-down-current-persona` in it.746. **Go last if you are the operator.** The operator is the comm's custodian: it75 collects the acks, files what nobody could close, prunes, and posts `note: pod down`76 before standing itself down. Any other pod member stands down at its own wake like77 everyone else. A caller that is not a pod member skips this step.787. **Verify per role, not in aggregate.** Every armed role ends in exactly one state:79 acked, still-looping, crashed, or never-looped — the table below tells them apart80 from the ack and the heartbeat. "No new comm entries" is not a verdict.818. **File the leftovers and report.** Every `in-progress` item with no owner left alive82 becomes a `to-user` `ops-issue` naming the item, the role, and where the work got83 to. Then the report: per role, safe-to-close or needs-a-hand; what is unmonitored84 from what time; and the exact pastes that bring the pod back.8586## Reading the pod after the order8788| What you see | What it means | What you do |89|---|---|---|90| `ack: <role> stood down` in the comm | stood down cleanly | tell the user that window is safe to close |91| No ack, heartbeat fresh | still looping; its wake has not come yet | wait one more interval before concluding anything |92| No ack, heartbeat stale, no commits since | crashed, or died mid-stand-down | do not seize its claims — file the ops-issue; the user closes the window |93| Heartbeat absent | never looped: it never read the comm, so the order never reached it | check the bus for anything it claimed while running by hand, file it, user closes the window |94| Ack posted, heartbeat now stale | normal and expected | nothing — a stood-down persona leaves a stale heartbeat on purpose |9596## Quick Reference9798| Need | Goes to | Never |99|---|---|---|100| Stop every live persona | one `shutdown` entry addressed to `pod` | one entry per role, or a message in each window |101| Stop one session | `shutting-down-current-persona`, inside that session | an order from outside |102| A persona that never answers | a `to-user` ops-issue naming its open claims | taking its item, worktree or cron |103| The order's deadline | the slowest cadence in the pod, stated when posting | a clock time the personas cannot see |104| The last one out | the operator: acks collected, leftovers filed, `note: pod down` | the operator first, leaving the comm unpruned and the acks uncollected |105| Bringing the pod back | paste each guide into a fresh session, `/model`, `/loop` — required pair first | expecting a stood-down session to resume itself |106107## Common Mistakes108109- **Ordering the pod down mid-deploy** — the one moment an env most needs someone110 watching is the moment after a deploy nobody verified. Take the pulse first.111- **Posting per-role entries** — they drift: one says the procedure, the next says112 "stand down", a third gets edited. The comm is read by everyone; one entry addressed113 to `pod` is the whole order.114- **Seizing a silent persona's work** — a shutdown order does not transfer edit115 rights. The claim is what a fresh session resumes; take it and the resumption breaks.116- **Declaring the pod down from silence** — silence is the same shape as a persona117 between wakes. A verdict needs an ack or a heartbeat, per role.118- **Killing the windows to be quick** — a closed window is a crash: an item stays119 `in-progress`, the CURRENT STATE block is a day stale, and the next arming starts by120 reconciling a mess. The broadcast costs one wake.121- **Standing the operator down first** — it is the custodian; going first leaves the122 acks uncollected, the leftovers unfiled and the comm unpruned.123- **Forgetting the comm is transient** — the shutdown entry and every ack are gone in124 7 days. What must survive goes into each persona's `CURRENT STATE` (its own125 stand-down writes it) and into the ops-issues filed for the stragglers.126- **Silence about what stopped being watched** — the report names each env, the time127 it went dark, and what no longer self-heals. That is the whole reason the pod ran.