---
name: v0262-monic-reveal
description: "2026-08-05 SHIPPED + FIELD-CLOSED v0.26.2 — render_frames kept from+body and dropped mnemonics-json, so core's trust-warning suppression + our drop = a classified peer read as a stranger. Carries the cross-node recipe for measuring a SUPPRESSION (a single node cannot)."
metadata: 
  node_type: memory
  type: project
  originSessionId: d14533f3-8188-4bfe-ab57-ebd49676b6e3
  modified: 2026-08-06T00:05:53.568Z
---

**v0.26.2 (2026-08-05, `533da1d` + `4c09334`), `REQ-MONIC-REVEAL`, KNOWN-HAZARDS §2.15.** hertz field
RCA (lia ↔ ball-b on 0.26.1), routed by doyle as category 1 — the public contract already answered it.

spt-core rides matched monics on the envelope as `mnemonics-json` **and suppresses the stranger trust
warning on the strength of that same match** ("the two never disagree, so you can never be warned about
a stranger whose monic you were handed in the same envelope"). Our `hook::render_frames` kept `from` +
body and dropped every other attribute → warning suppressed AND judgement invisible: **the adapter
manufactured the one disagreement the contract forbids**, silently.

⭐ **A re-render is a lossy copy, and what it loses is invisible at the far end.** Nothing errored; the
loss was only detectable by someone who already knew a monic existed. Custody was innocent (park writes
the RAW envelope) — the drop was in the ONE renderer serving both drain legs, which is also why parity
came free. When core's grammar gains an attribute, `render_frames` is the seam that decides whether an
agent ever sees it.

⭐⭐ **An assertion a single node cannot make.** The last arm of the regression spec — suppression AND
revelation in ONE delivery — is unbuildable node-locally: **same-node arrivals AND posture-open
endpoints are both ratified never-warning**, so a local probe has no warning whose suppression it could
observe. A "no warning" reading there proves nothing. It needs an **entry-admitted cross-node sender**,
and the honest instrument is a DISPOSABLE perch carrying the access entry — never restricting a live
perch (a restriction denies every unlisted peer for the window). Recipe, run green ENLYZEAM →
HFENDULEAM: `api seed` + `api bind --subnet` a throwaway, `endpoint access allow <id> --endpoint <peer>
--surfaces ALL`, peer sends → drain with the SHIPPED hook binary (a bound perch spools; **no listener
needed**, and the binary IS the render path), then write the monic (`monic add --owner <id>`), peer
sends again, capture RAW via `api poll` first and re-park it so both wire bytes and render are observed.
Leg 1 (warning present) is what makes leg 2's absence a SUPPRESSION rather than a warning that never
fires — skip leg 1 and the whole run measures nothing. Teardown: `purge --force`, never `rm`
([[purge-not-rm-for-perch-state]]).

**Observe the schema before asking.** A content-trigger monic on my own endpoint + one self-send gave
the real 0.55.0 bytes — `{id, triggers[], text, set_ms, origin}` — which matched doyle's source read and
independently caught that the published docs example carried a superseded `peer` key (docs fixed
@898f16f). Two independent derivations agreeing is better evidence than either alone.

Bounded risk recorded rather than left in chat: bodies unescape, so a peer can TYPE a monic block; the
discriminant is positional (ours renders at frame level, outside any peer body — the same reasoning as
core's reserved system author). Reveal half is **interim** — now-signal's MONICS category replaces it at
milestone D, so it is one helper + one call site + one `frame_spans` entry: a removal, not surgery.
**SUPERSEDED 2026-08-21 (core 0.59.0):** the trust warning no longer arrives as its own frame
`from="spt-access"` — it now rides the delivery's OWN envelope as a `trust-warning` attribute
composed by the receiving node, exactly as `mnemonics-json` does (one arrival, not two). Only a body
that is already a typed envelope still gets a separate system-authored delivery. **For that attribute
the usual rule inverts: being ignored IS the failure**, so a re-render must carry it through.

**The published never-warn list is why a single node still cannot witness it.** The monics page
ratifies THREE arrivals that never warn: `same-node` (“inside your node’s own trust unit”), a reply
correlated to your own outbound, and `posture-open`. My earlier same-node/posture-open finding was
right and is now published rule rather than inference — but it means no node-local rig can produce a
warning-eligible delivery at all, however the access rules are written.

⭐ **The discriminator for “the caution did not appear” is the RAW `spt api poll`, not the rendered
output.** Measured 2026-08-21: rule-admitted same-node sender, receiver holding no monics, and the raw
wire carried no attribute — which pins the absence in core’s ratified pass rather than in our
re-render. Had the wire carried it while the render dropped it, that is the v0.26.2 defect again, and
**the rendered output looks identical either way**. Always read the wire before calling an absence a
defect, and before calling it someone else’s. See [[list-vs-predicate-assertions]] for the
sibling instrument lessons.
