Skip to content

handbook: a step that produces nothing still reports success - #17

Merged
inhuman merged 1 commit into
mainfrom
handbook-silent-noop-and-volume
Aug 19, 2026
Merged

handbook: a step that produces nothing still reports success#17
inhuman merged 1 commit into
mainfrom
handbook-silent-noop-and-volume

Conversation

@inhuman

@inhuman inhuman commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Three classes from a week of live work, none of them in the handbook.

F9 — the silent no-op. A skipped when, a call error swallowed by
on_error: continue, a variable resolving to empty: all of them reach the trace
as successful steps with non-zero duration. One pass was placed four times
before it applied anything, and every trace looked identical — all steps fine,
turn completed. The four causes were a wrong argument name, a gate testing for
the presence of success instead of the absence of failure, a step sitting
outside the branch that owns its variable, and a neighbouring loop wiping that
variable on every clean run. All four were found by comparing a FACT with an
expectation, never by reading the trace.

F10 — a branch that never fired is dead, not rare. Measured on a live
catalogue: the only dead branches sat in one description, where half the
branches were never chosen and two fallbacks did the work. The threshold
matters — a rule of "never fired in twenty runs" missed it, because dead
branches live where traffic is thin.

Context section — an extractor whose output the model reads must be
bounded, because it grows with the data. A cluster-wide list was printed in
full and the next step died with a context-length error. Volume has to be made
artificially: stored fixtures are trimmed, or they weigh too much.

Verification, V7 — code inside steps is checked by none of the first three
layers: the linter does not execute it, and the step probe visits only steps
with a schema. Two cheap layers close the gap, along with the two traps that
made each of them pass on any code.

The package's own test caught a mistake in this text — it named a trace field as
if it belonged to the format. Reworded.

🤖 Generated with Claude Code

Three classes from a week of live work, none of them in the handbook.

F9 — the silent no-op. A skipped `when`, a swallowed call error, a
variable resolving to empty: all reach the trace as successful steps
with non-zero duration. One pass was placed four times before it applied
anything, and every trace looked identical. All four causes were found
by comparing a FACT with an expectation, never by reading the trace.

F10 — a branch that never fired is dead, not rare. Measured: the only
dead branches in a live catalogue sat in one description, and half its
branches were never chosen while two fallbacks did the work. The
threshold matters — dead branches live where traffic is thin, so count
the share rather than the absolute.

Context section — an extractor whose output the model reads must be
bounded, because it grows with the data. A cluster-wide list killed the
next step with a context-length error; the volume has to be made
artificially, since stored fixtures are trimmed.

Verification section, V7 — code inside steps is checked by none of the
first three layers: the linter does not execute it and the step probe
visits only steps with a schema. Two cheap layers close it, with the two
traps that made each of them pass on any code.

The library's own test caught a mistake in this text: it named a trace
field as if it were part of the format. Reworded.
@inhuman
inhuman merged commit 8861ba3 into main Aug 19, 2026
1 check passed
@inhuman
inhuman deleted the handbook-silent-noop-and-volume branch August 19, 2026 09:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant