v1.0.5 — the paste fix, actually delivered (1.0.4 shipped it under a published version number)
If you are on 1.0.4, you do not have the fix below — update. v1.0.4 shipped the paste fix into an already-published version number, so /plugin update compared 1.0.4 == 1.0.4 and delivered nothing. 1.0.5 is the first version that actually carries it. (A silent no-op of exactly the kind this tool exists to catch: real work, real commit, real release — and it still did nothing.)
509 self-checks · red-team 14/14.
A pasted tool listing minted a phantom HARD deliverable — and phantom deliverables escalate to block
An operator pasted an MCP-server status listing raw — Project MCPs (…/.mcp.json) ❯ supabase · ✔ connected — purely as context. The task ledger read .mcp.json / claude.json as requested deliverables, minted a pending task, and since no commit ever touches those files it could never close — so every subsequent "done" tripped false completion (async), forever.
Root cause: pasteStripped() recognized only fenced ``` blocks, >-quoted lines, and file.js:42 stack refs. A raw pasted status/tool-output block — the way people actually paste — read as prose, so its filenames became hard deliverables.
Why it matters now: an open loop escalates to block. With block mode on, every pasted tool-output block naming a file would wedge the agent on nothing — precisely the failure that makes an operator rip block back out.
Fix: pasteStripped() now also strips lines carrying a structural tool-output glyph (❯ ⎿ ⏺ │ ├ └ ┌ ┐ ═ ║ …), so their tokens become paste-refs → soft (surfaced once, auto-expires, never blocks, still grounds to done). Nothing is dropped — the demote-never-drop invariant holds. A whole-line strip is required rather than glyph-onward: the motivating listing has ❯ mid-line, so anchoring would leave .mcp.json hard and un-fix it.
Adversarial review (Fable) removed ▶/► from the glyph class — the only ones a human writes in prose (refactor parser.js ▶ tokenizer.js), which they wrongly demoted. Accepted trade, pinned by test: an imperative sharing a line with a real tool glyph (vitest prints ❯) demotes to soft; restating it on a glyph-free line restores hard. Known-narrow: glyph-less pastes (plain ls, ASCII | tables) still mint.
Full symptom → root-cause → fix → regression-test in FIXES.md (v1.0.5).