---
name: a-number-in-a-diagnostic-can-be-a-remainder-not-the-state
description: "A duration or count printed in a refusal is often a DERIVED remainder, not the state variable it looks like — read the emit expression before inferring internal state from it."
metadata: 
  node_type: memory
  type: feedback
  originSessionId: c91b4116-10ae-4fd8-b1fa-4cc34de3a871
  modified: 2026-08-19T08:25:09.534Z
---

A number in a diagnostic looks like a state variable and is frequently a derived one. Measured
2026-08-19 (golden 32225436027, Phase B red): the refusal read *"too many wrong bring-up codes — try
again in 1s"*, and `backoff_ms(1)` is exactly 1000ms, so the inference "1s ⇒ failures == 1" is
available, tidy, and WRONG. The emit site (`broker.rs:1787`) formats
`retry_in_ms.div_ceil(1_000)`, and `retry_in_ms` is the time REMAINING in the window — a 16s window
with 900ms left prints "1s" too. The failure count is not recoverable from that string at all.

What survived: the arm was refused by the THROTTLE branch, so ≥1 counted failure existed before the
measured attempt and the measured attempt was not itself counted. That is the whole falsifiable
claim; the count is a labelled hole.

**Why:** the printed value is chosen for the human's next action ("when may I retry"), not to expose
the state machine. A monotone function of the state reads like the state right up until it is
many-to-one — and remaining-time, percentages, "N more", elapsed, and rounded/clamped values are all
many-to-one. The wrong inference is worse than no inference, because it arrives with a number
attached and gets quoted onward.

**How to apply:** before any claim of the form "the diagnostic says X, therefore internal state is
N", open the emit site and read the EXPRESSION passed to the formatter. Ask whether it is the state,
a function of it, or a countdown derived from it; whether it is rounded, clamped or ceil'd; and
whether two different states can print the same string. Report what the BRANCH proves (which arm
fired) separately from what the NUMBER proves, and leave the rest a named hole
([[derived-figure-without-its-formula-dies-with-the-context]],
[[precise-claim-is-falsifiable-vague-is-useless]]). Kin: a pre-authored panic message names one
mechanism whatever fired ([[panic-message-is-preauthored-not-a-finding]]) — the same read-the-source
move answers both.
