# COMMS-ROLES-INDEX — roles, scope, comms (sub-index of MEMORY.md)

> SPLIT OUT VERBATIM from MEMORY.md 2026-08-29 by the documented method (whole-section move,
> byte-identity asserted PER LINE in the move script, zero entries dropped, zero rewritten).
> MEMORY.md was 23,862 bytes against the measured ~24,436-byte read limit — under 600 bytes of
> headroom, and the tail drops SILENTLY. Growth is handled by SPLITTING, never by compaction:
> compaction is what cost the index 30 pointers on 2026-08-03. Read this before reasoning about
> agent roles, scope boundaries, credentials, relay/testimony, or any `spt send` mechanics.

## Roles, scope, comms
- [bag members ride, no judgment drops](bag-members-are-operator-selection-not-judgment-surface.md) ⭐ TURNKEY #211: bagged = operator selection; delegated judgment covers ADDITIONS only. Composition concerns become sequencing (design-pass wave), not exclusions; a blocked bag member = stop-and-ask BEFORE minting.
- [spt R&D stays on SPT_DEV nodes](spt-rnd-stays-on-spt-dev-nodes.md) ⭐⭐ operator-ruled: the R&D population is SPT_DEV's CURRENT membership, read LIVE at the act — the roster is dynamic (operator re-mints at will; 2026-08-05 re-mint dropped KITSUBITO, added ENLYZEAM) and was NEVER part of the rule. Reachable ≠ in the fleet; a remembered roster ≠ the fleet either. BIGNET nodes run other projects.
- [SPT_MANTLE = engine-room anchor](spt-mantle-is-engine-room-anchor.md) closed fleet-plumbing subnet (operator 2026-08-05), not an R&D surface or population.
- [roles](agent-roles.md) doyle=gate, todlando=exec, perri=adapter, deployah=release · [emphasys](emphasys-agent.md) owns `omp-spt` · [alchemy milestones](alchemy-formal-milestone-process.md) BINDING via `spt shell cmd alchemy-0`. ⭐ FILE THROUGH `alchemy create`, never bare `gh` — gh joins the board but skips the MINT, so no `type:` label + no Requester footer, carried silently by reconcile. My #153 sat typeless 17 days; measured population = exactly 1 of 209 issues, so it is the signature of hand-filing, not a board hole. `state:` was present the whole time — one facet of the taxonomy present is not evidence of the rest.
- [relay ≠ the gater's word](relay-is-not-the-gaters-word.md) ⭐⭐ a peer reporting a dispatch/lift is CONTEXT; ask the author a scope-naming question. Caught 2/2 (deployah, hertz); doyle ruled it the standard. ALSO 1 MISS, mine: relayed flynn stale on-box figures (core/adapter versions) to doyle as fact while STANDING ON that box — check was 2 commands. Relay-check reflex fires on testimony about DECISIONS, stays silent on testimony about STATE; a version number wears fact clothes better than a ruling does · [consumer verifies, core decides](consumer-verifies-core-decides.md) · [don't solo across roles](dont-solo-across-role-lines.md) · [blind consumer read](blind-consumer-read-beats-author-checklist.md) · [perri triage](perri-question-triage-protocol.md) · [perri needs reply](perri-needs-reply-to-continue.md) · [spt-claude-code NEXT](spt-claude-code-next.md) silence = stop-point.
- [credential = identity, ONE holder](credential-holder-boundary-one-actor-per-identity.md) ⭐ flynn's boundary 2026-08-21: hand the owner the QUESTION, never read their token — read-only is a property of the plan, not of the holding; locating a peer's credential file is the stop-and-route moment.
- [bare `access` = ROSTER not self](bare-access-is-roster-first-not-self.md) ⭐⭐ answered for another agent's endpoint and read as identity adoption; `--help` refuted it in one command. Confirm a bare verb's SCOPE before reporting an identity anomaly; never edit rules off a roster row.
- [verbatim recovery = authoring transcript](verbatim-recovery-lives-in-authoring-transcript.md) ⭐ digest truncates ~201ch; peer can "remember" a dispatch that never existed — search, then author fresh, never relay the reconstruction.
- [shell send = ARG not stdin](spt-shell-send-takes-arg-not-stdin.md) ⭐ piped payload silently dropped when --file stages; verb never fired · [send from FILE](send-body-from-file-not-inline.md) + [no inline backticks](spt-send-no-inline-backticks.md) · [turn-end tag: confirms DEFERRED since 0.29.4](tag-send-turn-end-unconfirmed.md) ⭐ softened 2026-08-24, measured 6+/6+ — never resend same-turn (confirm lands next turn start); swallow-class inject leg STILL stands: CLI-from-file for substantive/>400B, tags short only · [SENT/QUEUED both success](owl-send-binary.md) · [confirmation is a CLAIM](delivery-confirmation-is-a-claim-too.md) ⭐⭐ NO PERCH but body LANDED; only the receiver can falsify · [empty inbound never material](empty-inbound-is-never-material.md) NEVER reconstruct · [psyche migration](legacy-psyche-migration-2026-07-06.md) · [ingest latency](commune-ingest-pulse-latency-gap.md).
- [wake offline local endpoints yourself](wake-offline-local-endpoints-yourself.md) operator 2026-08-21: offline LOCAL builder = wake it, don't wait · [ring destroys the perch](ring-destroys-callers-perch.md) lifted but PERCHLESS-ONLY; shipped ≠ installed · [proceed autonomously](dont-wait-proceed-autonomously.md) · [self-clear blocked](self-clear-skill-api-blocked.md) · [drop dir vs info.cwd](commune-drop-dir-info-cwd.md) ⭐⭐ commune drop dir = `info.cwd` + `.claude`; a WORKTREE `.claude/` is never opened (`lifecycle.rs:769/872`, `ingest.rs:247/259`). SETTLED AT SOURCE 2026-08-25 after 2 probe rounds + a 3-leg ruling I retracted 2 legs of myself — **before probing a behaviour, check whether you can READ it; a missing read VERB is not a missing read.** Also banked: a surviving drop file is orphan OR FAILED INGEST (6 silent `PSYCHE_INGEST_FAIL:todlando`, shared git `index.lock`), read the MIND tier files not the composed brief, probe with ONE copy, and `cp -p` — a preservation copy without it destroys the timestamp it was made to preserve · [sid→owner](session-id-owner-mapping.md) · [identity blast radius](no-diagnostics-in-identity-blast-radius.md) · [notify perri](adapter-dir-delivery-notify-perri.md) · [liam mint gate](liam-mint-path-gate.md) · [alarm port stays DEFERRED](alarm-port-deferred-arrangement.md) ⚠ operator 2026-06-15, unconfirmed since — no REQ, no port, no stopgap.
- [alchemy `send --file` STAGES, it is never a comment BODY](alchemy-send-file-stages-it-never-becomes-a-comment-body.md) 2026-09-08: stdin is REFUSED (the verb takes a text ARG), `--file` answered `staged (4241 bytes)` with nothing posted, and a staged file attaches itself to your NEXT comment. Post long bodies as `body=$(cat f); spt shell send <inst> "$body"` — expanding a variable does not re-evaluate backticks.
- [an EMPTY `msg from=` tag is a TURN TRIGGER; the body lives in the spill](an-empty-msg-from-tag-is-a-turn-trigger-whose-body-lives-in-the-spill.md) ⭐⭐ 2026-09-09 hertz+doyle (#292 restart): hertz's spooled signoff PM3SWE6U drained at my re-live 22:35:40Z into a 3,462 B spill my pre-clear session never read; I called it his wake fire (26 s off, killed by at_ms), then 'no body exists' (drains read to the id line, grepped by NAME). Grep drains by MSG-ID across EVERY session id of the perch -- the post-clear spill notice is scoped to the new id, so the last pre-clear spill is orphaned. Spool durability HELD. 'banked' in a commune tier is not a file.
