### CONTROL 1 — an observation with NO row: must REFUSE (1) ###
  report            : ../../../../../tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/3b17bdbd-9113-4908-9b30-15678f2978bc/scratchpad/gate11/c1.md
  section           : ## 9. Observations
  observation items : 1

OBSERVATIONS GATE FAILED: 1 observation(s) with nothing behind them.

  item 1: The operator cooldown key carries no app identifier, so only the first app per…
     neither `FILED: R-NNN` nor `NOT-A-FINDING: <reason>`

An observation that lives only in REPORT.md has a lifetime of ONE SESSION — this file is overwritten every time. That is how the cooldown-grain finding was lost on 2026-08-23 and had to be re-derived the next day.
Fix: add `FILED: R-NNN` naming the row you opened for it, or `NOT-A-FINDING: <why this is not worth a row>`. Opening the row is the default; declaring is the exception and needs its reason stated.
EXIT=1

### CONTROL 2 — add the row: must PASS (0) ###
  report            : ../../../../../tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/3b17bdbd-9113-4908-9b30-15678f2978bc/scratchpad/gate11/c2.md
  section           : ## 9. Observations
  observation items : 1
      OK  1. FILED R-389
observations gate OK — every observation is either filed or explicitly declared
EXIT=0

### CONTROL 3 — remove the observation entirely: must PASS quietly (0) — Scenario F ###
observations gate OK — c3.md has no observations section (nothing to check)
EXIT=0
