---
name: frames-encoding-docs-defect
description: "v0.39.3 docs-only cut ruled 2026-07-21 — frames.md lacks body/attr encoding rules; todlando authoring, doyle gates, deployah cuts counter 71"
metadata: 
  node_type: memory
  type: project
  originSessionId: 36030a05-26db-4122-af21-94ea24dad123
  modified: 2026-07-21T15:50:41.173Z
---

**Defect (flynn, 2026-07-21):** published `docs-site/src/shells/frames.md` (v0.39.2 frame contract page) documents NO body/attribute encoding — claims shell_text "body is the raw text". Actual codec (`spt-proto/src/envelope.rs`, used by `compose_typed_event`): 4-entity HTML-escape (& < > ") on attrs AND bodies, amp-FIRST encode; body-only `\n`→`<br>`; decode `<br>` FIRST / amp LAST both directions (REQ-HAZARD-ENVELOPE-DECODE-ORDER), decode only extracted body substring; escape-side CR normalization CRLF/`\r`→`\n` (REQ-HAZARD-ENVELOPE-CR-LINESAFE), `\r` unrepresentable. Triple-grounded: flynn wire obs + clean-room repro, todlando code confirm, doyle own-eyes envelope.rs read. Frames correct, page wrong — doc-only fix, NO codec change.

**Ruling (doyle):** docs-only **v0.39.3, counter 71** — NOT riding v0.40.0 NOTIF-TRUTH (milestone GO'd same day, unbounded days out; page is live trap for clean-room shell authors meanwhile). Deployah's v0.39.2 Documentation note overstated ("body format" claimed present) — deployah carries corrective Documentation line WITHOUT re-overstating, deployah self-flagged, approved.

**✅ WAVE CLOSED 2026-07-21: flynn field-verify CONFIRMED (clean-room build-from-page-alone walk, zero page-vs-decoder disagreements vs shipped alchemy decoder). Published v0.39.3 counter 71 @bc561c7; #49 runbook merged. Release detail [[v0393-published]].**

**Queued for v0.40.0 docs tail (flynn observations, doyle-grounded + accepted, todlando tasked):** (1) drive-poll frames arrive BARE — no MAC prefix; slot 'stamp' = writing link token enforced SERVER-side at take (drivehub.rs no-replay-across-relink), decoder never verifies; (2) attr order NOT guaranteed — match by name (type-first is composer accident, not contract). Silence-not-lie class → rides next cut, no standalone release.

**Status 2026-07-21 (same day): GATE PASS FINAL @d588999, MERGED @b246493 (doyle merged, todlando handoff). CI green first try both platforms; twohost skipped (docs-only filter). Verdict sent; deployah cutting release/v0.39.3 c71 from release-lane worktree, dedicated release PR off main.** Earlier detail: PR #48 CONTENT GATE PASS both commits (0ed08bb encoding section per scope + todlando's MAC-over-escaped-form precision; d588999 never-split/EVENT-PART sentence after flynn's 7/7-conform diff surfaced the chunking silence — doyle verified EVENT-PART is agent-listener-only, spt-msg emit + chunk.rs, no shell-surface reference, PTY 512-wide stdin conduit). TR exit 0 @d588999. Final verdict pended CI (Windows legs) only. flynn GREEN-FOR-CUT final, already deleted their defensive EVENT-PART skip (their 348a592) — page is load-bearing. Deployah cuts release/v0.39.3 same hour on verdict. Gate rider seed filed: attr line-safety unenforced (Linux `\n` filename → raw newline in path attr) → [[spt-core-findings-backlog]].

**Vets 2026-07-21:** #50 (v0.39.3 cut, c71) changelog vet PASS — Documentation entry enumerates from merged section, overstatement paragraph = template shape (quote/gap/closure); MAC clause ruled OUT (stamp-adjacent, not encoding; adding would imply stamp claim false). #49 (runbook) vet PASS — dedicated-only + 3 reasons + dated Supersedes, OR-form retired unbounded. Deployah tags on green. Deployah shared-checkout near-miss (reset --hard over todlando's live branch, no loss verified) → mechanism: standing `.worktrees/release-lane` + occupancy protocol (in [[worktrees-under-project-root]]). Remaining leg: flynn published-page re-read.

**Runbook defect thread (same day, deployah-filed):** RELEASE-RUNBOOK step 1 still carried the 2026-06-23 OR-form ("feature PR's final commit OR dedicated release PR") — doyle ruled it SUPERSEDED text, not mistranscription: dedicated release PR off main is now the ONLY form (gate separation / counter freshness / no-second-CI-wait goal preserved). Deployah fixes in own tiny PR, doyle vets wording, no changelog line. [[release-standard-bump-in-pr]] updated.

**Sequence:** todlando authors (scope sent: new "Body and attribute encoding" section + sweep ALL per-frame raw-body claims incl. escaped-JSON-before-parse for shell_command; hazard doc-tags per per-wave activation rule) → doyle gates PR → deployah cuts. flynn post-publish clean-room re-read = field verify.

Related: [[v0392-published]] [[notif-truth-plan]] [[agent-roles]]
