---
name: blank-diagnostic-panel-is-not-a-silent-product
description: "A rig panel reading EMPTY is a claim about the RIG until proven otherwise — the daemon repoints its stderr a few statements in, so the inherited file holds only the pre-redirect window"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: c5551e63-d5b9-48f6-b55b-0be7cf7ef18b
  modified: 2026-08-19T21:15:00.180Z
---

A BLANK DIAGNOSTIC PANEL AND A SILENT PRODUCT ARE THE SAME READING, and only one of them is
usually true. Measured #164 arms 4+5, 2026-08-19: my new miss-arm barrier waited the full 45s
for `ENGINE_ROOM_BRIEFING_UNPRESENTED`, found nothing, and printed an empty stderr panel. That
reads exactly like "the product fails silently on a miss" — which was the very defect the arm
existed to catch, so the red CONFIRMED my hypothesis and I was one inference from reporting a
product defect that did not exist.

**The mechanism.** `spt daemon run` calls `stderrlog::install("broker", 0)` a few statements in,
and `redirect_stderr_to` repoints the process std-error slot at `SPT_HOME/logs/daemon.stderr.log`
(on Windows a `SetStdHandle` whose handle is then `mem::forget`-ed). The file `spawn_broker` hands
the child therefore holds ONLY THE PRE-REDIRECT WINDOW. Every diagnostic worth reading lands in
the sink. Read both: the inherited file AND `home/logs/` + `spt_daemon::stderrlog::STDERR_LOG_BASENAME`.

**The tell I missed, and it is the general one:** the panel had been printing blank on the
PASSING arms too, for as long as the cell had existed. Nothing had ever needed to read one, so
nobody noticed. A diagnostic surface that no assertion depends on is UNTESTED BY CONSTRUCTION —
its first real use is its first test, and that use is always a red you are trying to explain, i.e.
the worst possible moment to discover the instrument was never wired. Before trusting a panel to
tell you a product was silent, prove it can print something: check it is non-empty on a GREEN run.

`engine_room_bringup_e2e.rs` had already measured the identical trap on this same rig family
(four bring-up reds, four blank panels, including the success line the passing control MUST have
written) and documents it in a doc comment on `daemon_diagnostics` — which I had not read before
authoring my own panel. Filed as the IR-50 rig-panel class; if hertz's sink census lands an
exported `stderrlog::sink_path(home)` helper, rigs should adopt it rather than keep local copies.

Second face of [[is-this-red-mine-delta-test]] applied to INSTRUMENTS rather than fixes: the
donor-rig question ("does the sibling rig already do this, and how?") answers a panel defect in
one read. Related: [[exit-status-is-not-a-diagnosis-capture-the-child]] (same family — the
diagnostic you inherit is not the diagnostic the child wrote), [[barrier-must-be-the-fact-you-assert]]
(a barrier reading the wrong FILE fails the same way one reading the wrong FACT does), and
[[absence-is-not-evidence-unless-the-probe-can-see-it]].
