---
name: resume-attach-intent-token-untrusted-v0540
description: "RESUME_ATTACH_INTENT shipped in v0.54.0 on a dead path AND formats a hardcoded constant — its absence and its presence both lie to a #123 hunter."
metadata: 
  node_type: memory
  type: project
  originSessionId: 97bd4780-202d-4522-9abc-8ac75f327f07
  modified: 2026-08-05T01:46:45.468Z
---

`RESUME_ATTACH_INTENT` is a diagnostic breadcrumb that **shipped in v0.54.0 (@`86f0d84`)** and
cannot answer the question anyone greps it for. Two independent faces, both measured 2026-08-04
(hertz) at the shipped tag. Treat the token as untrusted in any v0.54.0 log you triage.

Emit site: `crates/spt-daemon/src/brain.rs`, inside `Brain::resume_sessions`. Literal:
`RESUME_ATTACH_INTENT: resume={} session={} intent={} from_seq={} idx={} of={}`

**Face 1 — absence is not a negative.** `resume_sessions` has **zero production callers** at the
shipped tag: `git grep '\.resume_sessions('` at `v0.54.0` = 0 in `*/src/*.rs`, 4 in `*/tests/*.rs`.
`run_brain` calls `resume_session_cursors` (brainproc.rs) instead. So the token NEVER appears in a
production log, and reading its absence as "no resume happened" or "resume chose viewer, all clear"
is reading an uncalled function. doyle's withdrawal ruling names this face.

**Face 2 — presence is not a datum, and this face is worse.** The shipped block is:
```rust
let intent = AttachIntent::Viewer;
let intent_lbl = match intent { Viewer => "viewer", Control => "control", Take => "take" };
```
`intent` is a **literal constant**; two of the three match arms are unreachable. On the 4 test paths
where the breadcrumb does fire, `intent=viewer` is the only string it can ever print, whatever the
attach actually did. A hunter who reads it as the measured choice has a clean zero **dressed as
evidence** — which survives scrutiny better than a missing line does. The breadcrumb cannot
discriminate viewer-vs-control on ANY path, dead or live.

**How it shipped:** the probe was authored 2026-08-03, merged at `a8a2eb6` into the USHER golden
assembly 2026-08-04 11:38, shipped 15:40. doyle's ruling withdrawing it as a dead-path probe was
issued 18:30 — ~7h after it assembled, ~3h after it shipped. The withdrawal is real; the code is in
the release anyway. A withdrawal is a statement of intent and does not remove code from a tree.

**How to apply:** (1) never cite this token as resume evidence on v0.54.0; (2) any replacement must
bind intent from the actual chooser and label THAT binding, or it inherits face 2 at live sites
where it would be trusted more, not less — the replacement lane (todlando, re-aimed onto
attach.rs:276 gap-resume Control + serve_attach dispatch + `subscribe()` production callers) is
where that matters.

Instance of [[accused-mechanism-needs-a-production-caller]] and of an instrument inheriting its
accusation's error. Kin: [[a-predicate-without-its-tool-is-not-evidence]],
[[announce-token-from-the-failing-frame-not-the-register]] (the literal above was derived from the
emit site, not from the ruling that discusses it), [[waiting-branch-read-by-ref-not-ancestry]]
(how the shipped state went unnoticed by both of us).
