---
name: measure-what-costs-one-command
description: "BINDING: if a quantity feeding a decision costs ONE command to measure, measure it — clock, free disk, published counter, current sha are all routinely guessed instead"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: b92eeee4-bbf1-4d22-b02f-a83d4e68fe0a
  modified: 2026-08-05T20:50:43.426Z
---

**If a quantity feeding a decision costs one command to measure, MEASURE IT.** The routinely-guessed
set: current clock, free disk bytes, the published release counter, the current sha of a ref. Each is
one command. Each has been wrong in a way that changed a decision.

Caught 2026-07-29 (deployah's own diagnosis, ruled worth banking). He sized a midnight margin for an
irreversible date stamp against a "now" that was **1.6 hours stale**: he had read an `epoch_ms` out
of a daemon log line early in the session and carried it forward across many tool calls as though
time had not advanced. **A log timestamp says when the log was WRITTEN, not what time it is.**
`Get-Date` was one command away and never ran.

doyle's ruling sentence, verbatim (2026-07-29), folded in from a duplicate index entry that pointed at
no file: *"a margin computed off a wrong clock is the same failure as a condition quoted off a stale
checkout."*

**Why:** this is the same family as reading a condition out of a stale working checkout
([[name-the-file-and-sha-a-condition-came-from]]) — a value that was TRUE when first observed and
became false while still being cited as current. It bites hardest where the decision is
irreversible: under the no-post-golden-edits freeze the date call could not be repaired after the
run, so the margin was only as good as the clock under it.

⭐⭐ **THE PUBLISHED INSTRUMENT MUST BE THE ONE YOU RAN (deployah, 2026-07-30).** He handed the team
`grep -c 'spt_home()'` as the check, but his OWN measurements used PowerShell .NET regex with
*escaped* parens, scoped to exclude `mod tests`. His instrument was correct; the one he published
was not. **Nothing in his own results could ever have warned him**, because his results never came
from the command he told others to run. Then two agents ran the published form on different dialects
and got 5 and 10 — both correct, a false discrepancy, and the missing piece was the TOOL, not the
number (`()` is literal in POSIX BRE, an empty group in ERE/PCRE/rg/.NET). Rule: **publish the exact
command you executed, verbatim, including flags and scoping — a paraphrased instrument is an
unverified one, and its author is the last person who can catch the paraphrase.** State the dialect
or use fixed-string (`grep -F`). Seventh appearance of [[verdict-from-probe-competence]] in one day.

⭐⭐ **PARKING A HYPOTHESIS HAS TWO QUESTIONS, AND I ONLY ASKED ONE (deployah, 2026-08-05, v0.55.0
cut; doyle's precision).** I found a main-branch CI run concluded `cancelled` while `ci.yml` sets
`cancel-in-progress: false` for main. I labelled it UNPROVEN and refused to write it into the
runbook — **correct**, since a manual cancel would have looked identical. But I then PARKED it, and
the settling measurement was one command away. The split, which is the reusable part:

- **The withholding question** — "is this proven enough to write down?" I asked this and got it right.
- **The settling question** — "what measurement would settle it, and does it cost one command?" I
  never asked. doyle did, and it did.

**And a claim can DECOMPOSE into two questions with two separate one-command answers.** Here
`gh run view <id> --json jobs` returned **0 jobs ever started**, which settles NEVER-STARTED — but
says nothing about WHO cancelled. The manual-cancel alternative died only on a second read: cancelled
`04:03:49Z`, one second after the newer push's run entered the group at `04:03:48Z`, with the older
run still in flight. Two reads, two cheap commands, one conclusion (`cancel-in-progress:false`
governs STARTED runs only; a queued run is superseded and leaves NO record). **Expect to need both —
"I can't prove it" often means "I proved half of it and stopped."** Landed as IR-41.

**How to apply:** (0) when you park something as unproven, name the discriminator out loud and price
it; refusing to publish is not the same act as refusing to look; (1) when a decision turns on a cheap quantity, re-measure at decision time rather
than reusing an earlier read — freshness, not availability, is the property that matters; (2) state
the absolute figures you used so a peer can falsify them (\"23:52Z, local 16:52 PDT, midnight
07:00Z\") instead of a derived margin (\"seven hours out\"), because only the raw figures expose a
bad clock; (3) treat any timestamp harvested from a log, a message, or a previous tool result as an
observation with an age, never as the present. Kin: [[measure-the-box-before-the-instrument]],
[[load-claim-needs-measured-axes]], [[release-counter-from-published]],
[[quiet-window-predicate]].

## [root-merge 2026-08-23] lines present only in the .claude copy (union-merged at alt-profile migration; placement lost, content verbatim)

**How to apply:** (1) when a decision turns on a cheap quantity, re-measure at decision time rather
