---
name: brief-rule-scoped-to-mechanism
description: "2026-09-06 operator correction: agents took a follow-up tool call after EVERY commune because the brief put the rule under the plain Commune bullet; a plain commune arms nothing. Scope a brief rule to the mechanism it serves (v0.38.6)."
metadata:
  type: feedback
---

Operator (2026-09-06): "agents are following the 'tool call after' direction for normal communes.
it should only apply to across-communes." The v0.38.1 rule ("do not write the commune as your
turn's LAST act — take one more tool call") lived in the plain **Commune** bullet of
`adapter/strings/briefs/live-ops.md`; every live agent obeyed it on every commune. Moved under
**Commune across** and stated as across-only in v0.38.6 (commit f955824; SHIPPED 09:54Z in doyle's build window, node on 0.38.6, installed brief verified). Related: [[v0384-commune-frame-replay]], [[v0370-commune-drop-detect]].

**Why:** the extra call exists ONLY so a hook can read a marker-bearing drop before ingest
deletes it — it buys the wake arm. A plain commune has no boundary to arm, so the rule is pure
cost there, and agents cannot tell the difference from the text alone.

**How to apply:** when a brief rule is a workaround for one mechanism, write it under that
mechanism's bullet and say which case it does NOT cover. Re-read every brief edit as the agent
who will follow it literally on every occurrence. Still owed: drop the rule entirely once
spt-bs-releases#276 (core stops the echo writing `<id>-commune.md`) lands — the 0.38.5 frame leg
already arms without it (field-verified 09:07Z).

**Status 2026-09-06 12:38Z (doyle):** #276 is on core main @914805d1, UNRELEASED. Retire the across-only rule from `live-ops.md` only after a core release carries it (check `spt --version` on the node first). Side facts: our manifest already declares `[session] commune_dir = ".claude"`, so the "declared without commune_dir now echoes" change is a no-op for us; `ECHO_PROJECT_UNROUTABLE` is a loud discard of an echo project slice on an endpoint with no project anchor — the COMMUNE frame stays the record.

**Refuted 2026-09-07 07:01Z (hertz field case, perri-verified):** the across-commune brief still claims the extra tool call "buys the wake, not the delta." hertz's funnel shows it buys NEITHER when the echo host is slow: authored commune seq 42 at 06:40:11Z, echo overwrote at seq 44 06:41:52Z (1m41s later) and seq 65 06:57Z, no clear fired. The extra call only spans the sub-second write-moment race; a slow echo overwrites the ingested+frame-recorded delta minutes later and the frame leg's newest-wins then picks the echo. So the missed `/clear` IS releases#276 (echo overwrite), not a separate boundary bug. Do NOT re-assert "buys the wake" as reliable — it holds only against a same-turn/fast echo. The whole rule is deleted when a release carries #276. Falsifier to hand agents: still running minutes after arming a wake = likely echo overwrite, not a slow boundary; verify newest COMMUNE frame starts with your bytes.
