Files
buzz/docs
Duncan 05246f65a9 fix(acp): extract description from real producer shapes; delegate prose-suppression to computePermissionRequest
F2: Replace the dead `/params/subject` string pointer with
`description_from_request_permission`, a pure helper that tries the
three real wire shapes in priority order:
  1. `params.title` — buzz-agent v2 top-level string.
  2. `params.subject.toolCall.title` — v2 nested fallback.
  3. `params.toolCall.title` — buzz-agent v1 + codex-acp.
The old pointer hit an OBJECT (v2) or nothing (v1/codex) — description
was always null in production.  Extracted as `pub(crate)` so tests can
call it directly with verbatim wire shapes from `wire.rs`.  Two new
Rust tests use the exact v2 and v1 shapes; if the pointer changes either
goes red.  NIP-AO updated to cite the three real source fields.

F3: Replace the shape-only `isTrustedPermissionRequestSentinel` helper
with `hasPermissionRequestCard`, which delegates to
`computePermissionRequest` with the exact same arguments the block uses.
Prose suppression in MessageRow now holds iff the card renders — closing
the blank-row gap for every case `computePermissionRequest` rejects:
forged signer, born-resolved-no-provenance, and correlation-mismatch
resolved body.  Tests added for all three rejection shapes.

Mutation: re-point description extraction back to `/params/subject`
string → v2-shape test goes red.  Remove `editSignerPubkey` from
`hasPermissionRequestCard`'s computePermissionRequest call →
born-resolved-no-provenance test goes red.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-08-29 15:47:45 -04:00
..
2026-07-21 17:16:23 +00:00