-- onboarding: the facts (each MUST be refused)
  ok  FACT: a new template with NO record                  rc=1 (expected 1)
  ok  FACT: a record missing id 1.4                        rc=1 (expected 1)
  ok  FACT: 1.4 answered only inside an HTML comment       rc=1 (expected 1)
  ok  FACT: done with a path that does not exist           rc=1 (expected 1)
  ok  FACT: done with an EMPTY directory (the mkdir shape) rc=1 (expected 1)
  ok  FACT: done naming an absent file in the sibling repo rc=1 (expected 1)
  ok  FACT: n/a with an EMPTY reason                       rc=1 (expected 1)
  ok  FACT: n/a with a two-word reason                     rc=1 (expected 1)
  ok  FACT: an OPEN row                                    rc=1 (expected 1)
  ok  FACT: opened: backdated before the checklist         rc=1 (expected 1)
  ok  FACT: a checklist id the template a new app copies lacks rc=1 (expected 1)
  ok  FACT: an exempt app's record with a done that points nowhere rc=1 (expected 1)
-- onboarding: the genuine articles (each MUST pass)
  ok  GENUINE: a complete record (catalog + sibling evidence) rc=0 (expected 0)
  ok  GENUINE: an id added AFTER opened: does not bind     rc=0 (expected 0)
  ok  GENUINE: an exempt app's record may say open         rc=0 (expected 0)
  ok  STATED SKIP: sibling repo absent (the CI shape) - printed, not checked rc=0 (expected 0)

catalog gate decoys OK — 121 case(s), every label judged on its fact (R-421)
