Make silent failures observable

Make silent failures observable

A code path that does nothing must say so. Whether the path returned early because of an empty input, skipped a step because a precondition wasn’t met, or genuinely had no work to do, the fact that nothing happened is itself a signal — and the signal has to leave a record.

A silent no-op is invisible work. Invisible work cannot be debugged, cannot be tracked, cannot be calibrated against, and erodes operator trust the moment the operator notices the thing-that-should-have-happened didn’t happen.

What “observable silent failure” looks like

Why this exists

Three concrete examples from the platform’s recent history:

The silent-failure alternative — let the code path return early without emitting anything — produces three predictable failure modes:

  1. Cannot diagnose. The operator sees an outcome (or the absence of one) and has no record of why. Diagnosis becomes archeology.
  2. Cannot calibrate. Trust calibration and graduation logic depend on outcome attribution. A silent no-op contributes nothing to either — the gear train spins without registering torque or slip.
  3. Cannot prevent recurrence. A silent failure that happens twice is indistinguishable from a silent failure that happens a hundred times. The pattern compounds invisibly.

What “structured signal” means

Not every signal needs to be a log line at WARN severity. The signal must:

When silent return is acceptable

The bar: a future debugger looking at this no-op must be able to tell that it happened, why, and whether to care — without re-running the original execution.

The contract

Before merging a code path that can return early without doing the work the caller expected:

  1. Name the no-op. What does it look like from the caller’s side?
  2. Emit a signal. Log line, typed return, or tracking record.
  3. Make the signal queryable. Future-you needs to find these by grep or by DB query.
  4. Decide whether to track. If the no-op represents future work, file a tracking BI in the same PR.

Anti-patterns

Spec references