=== repo_gates.py — pre-push, AFTER Part 4 ===
captured: 2026-08-20T08:41:20+00:00 UTC
==============================================================================
hub-copy gate OK — 95 hub file(s) scanned for 2 retired name(s); 4 customer surface(s) scanned for 4 retrieval stem(s), 0 registered claim(s), none unregistered
  drift: controller gate's STEMS match the shared list (4 stem(s))
  (BLIND SPOT: this checks the WORDS in the four declared customer surfaces. It cannot
   tell whether a true-looking sentence is wired to a predicate that is actually true —
   that is what render tests are for. And it does not read the operator's screens.)

==============================================================================
== gate: due-checks   (due_checks_gate.py)
==============================================================================
due-checks gate OK — 1 dated check(s) pending, none due yet.
  today (UTC): 2026-08-20
  nearest: R-341 due 2026-08-25 (in 5 day(s)) — same, +7 d. Anchor the elapsed time on `ps -o lstart= -p $MainPID`, NO
  (fires on the next PUSH after a date passes, not on the date itself — by design)

==============================================================================
== summary
==============================================================================
  site               OK            (exit 0)
  hostinstall        OK            (exit 0)
  hub-confirm        OK            (exit 0)
  manifest-bearer    OK            (exit 0)
  reuse-refs         OK            (exit 0)
  instructions       OK            (exit 0)
  golden-currency    OK            (exit 0)
  wire-contract      OK            (exit 0)
  hub-copy           OK            (exit 0)
  due-checks         OK            (exit 0)

all felhom.eu gates OK
rc=0
