Skip to main content

TLDR zero-input false PASS — MC #900160

TLDR zero-input false PASS — MC #900160

Incident

On 2026-08-23 the TLDR briefing/actionizer chain produced no actionable output. The absence of input is the incident signal; it must not be reported as a healthy run.

Verified current behavior

  1. com.john.tldr-briefing finds zero eligible emails, writes a JSON sentinel with reason: no_unbriefed_emails, and exits 0.
  2. com.john.tldr-actionizer reads zero insights, emits no result/task, and exits 0.
  3. com.john.tldr-watch maps the zero-input sentinel to VERDICT=PASS.

This is fail-open observability: missing input is converted into green health and the operator receives no useful run result.

Required outcome

  • Explicitly distinguish a day when no TLDR run is expected from a scheduled run that expected input.
  • Any unexplained zero-input scheduled run returns actionable UNKNOWN or FAIL, never PASS.
  • The run output names the missing stage/source and preserves evidence.
  • Positive no-content policy, if retained for weekends/holidays, must be explicit and tested rather than inferred from a sentinel.

Implemented result

Live commits: 854aa1a5f (fail-closed zero input) and a853184cc (publication-day schedule).

The three stages now fail closed on zero input:

  • briefing writes error: true, reason: zero_input_error, emits ZERO_INPUT_ERROR, exit 2;
  • actionizer emits the source reason and exits 2 without fabricating a successful run;
  • watcher reports Verdict=FAIL, sends the actionable alert, and exits 2.

Positive control with five insights still completes with exit 0. Independent Gemini review returned PASS with zero unresolved P0/P1 findings.

Debugged source and schedule root cause

The mail database and direct IMAP search agree: no TLDR message exists after Friday 2026-08-21. Historical delivery data over 120 days contains messages only Monday-Friday, normally arriving after the old 09:00 briefing slot. The jobs nevertheless ran every day, so Sunday and Monday were guaranteed zero-input runs.

The active schedule is now explicit:

  • briefing: Tuesday-Saturday 09:00;
  • actionizer: Tuesday-Saturday 09:30;
  • watcher: Tuesday-Saturday 09:40.

This processes the prior Monday-Friday publication day. RunAtLoad was removed from briefing. On a scheduled Tuesday-Saturday run, missing input remains ZERO_INPUT_ERROR/FAIL; on Sunday/Monday no run is scheduled. Active plists were reloaded and launchd shows weekdays 2-6 with zero immediate Sunday runs.

Evidence

  • /Users/makinja/system/evidence/tldr-incident-2026-08-23/status.md
  • /Users/makinja/system/logs/tldr-briefing.log
  • /Users/makinja/system/logs/tldr-actionizer.log
  • /Users/makinja/system/logs/tldr-watch.log
  • /Users/makinja/system/logs/tldr-insights/2026-08-23.json
  • /Users/makinja/system/evidence/900160/runtime-controls.json
  • /Users/makinja/system/evidence/900160/live-chain-verification.txt
  • /Users/makinja/system/evidence/900160/gemini-review-clarification.json
  • /Users/makinja/system/evidence/900160/gemini-schedule-review.json
  • /Users/makinja/system/evidence/900160/pre-schedule-plists/