SIGN IN SIGN UP

pbz: Chunk 30 round-three fixes — the advice could hit the wrong device

A fresh adversarial reviewer (given no knowledge of the earlier rounds)
ranked one finding above the rest, correctly: the recovery command
dropped the host. `pbz activate 'Sweep'` targets whatever the config
resolves to, so advice printed during a `pbz save --host=<spare>`
failure would have told the user to run a command against the actual
LED wall. Every command a message names now carries --host, and
saved-maybe-inactive targets the id rather than the name, since
_resolveTarget takes the first name match and a pattern named --yes
would be eaten by argv as a flag.

Two claims of mine were unearned. running-unsaved asserted "(it
acknowledged the resume)" but is reachable two ways, and on the frames
path no such ack ever arrived — it now says "confirmed rendering"
without naming which evidence. And the honesty rule's own premise, that
a send returning proves the bytes left the machine, was FALSE: send() on
a closed socket returns and discards. alive() now refuses on a closed or
closing socket, which is what makes the rule mean anything.

The reviewer also found five surviving mutants and two vacuous tests.
The non-Error test threw from compile(), outside the try, so the
annotator was never reached; the frames-are-proof test asserted where
later assignments had already overwritten the promotion, so deleting the
promotion left it green. Both rewritten to the scenario that observes
them, plus tests for the double-annotation guard, run()'s side of the
line-order rule, and a getter-only message — which turned out to still
produce the TypeError the guard was written to prevent, since the hazard
is writability rather than type.

Narrowed the class header's "concurrent READS are fine": getConfig,
getState, ping and samplePreview each claim frames a concurrent write is
waiting for. Recorded as item 15, with item 14 for a late resume ack
burning a completion-ack slot.

32 new tests, 224 total, typecheck green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PZnUXRsLLnt2A7pR3X4Luj
T
Tarek Rached committed
bf0214e4760558f5fc7a9d7922946128b188e90c
Parent: 985673c