================================================================================ T1 What each engine offers ================================================================================ PASS the library exposes a substantial surface 173 public methods across 30 files ================================================================================ T2 EVERY CAPABILITY MUST BE REACHABLE ================================================================================ Reachable by nothing but their own tests: loyalty.php propose, review, pending Either wire them, or add them to INTERNAL with a reason. PASS NO NEW CAPABILITY IS LEFT UNREACHABLE the backlog is not growing PASS the backlog is not being padded 3 unreachable, backlog allows 3 BACKLOG: 3 capabilities built and unreachable — propose, review, pending. ================================================================================ T2b EVERY STOCK MOVEMENT LEAVES A TRACE ================================================================================ 5 file(s) move stock: billing.php cache 3, ledger 2 migration.php cache 1, ledger 1 purchase_match.php cache 1, ledger 1 returns.php cache 2, ledger 2 routes.php cache 2, ledger 2 PASS NO FILE MOVES STOCK WITHOUT RECORDING IT every cache write has a ledger write beside it ================================================================================ T3 The jobs that must exist ================================================================================ PASS accounting.post is scheduled the ledger, the P&L and the GST return PASS backup.run is scheduled a shop losing a disk PASS backup.verify is scheduled a backup nobody has restored PASS invariants.check is scheduled drift between the register and the books PASS outbox.drain is scheduled every message the shop sends PASS reorder.run is scheduled what the shop is told to buy PASS and every scheduled job has a handler in the worker 13 jobs, all wired ================================================================================ T4 The INTERNAL list is a decision, not a dumping ground ================================================================================ PASS the internal list has not drifted far from reality 17 entries match nothing — defensive, not stale PASS the list is small relative to the surface 70 internal of 173 — if this ratio grows, the check is being silenced rather than satisfied ================================================================================ RESULT ================================================================================ 13 passed, 0 failed