+ "_containers": "`containers`: the child keys under these coordinates are classified NOWHERE — not in this ledger, not in another file, nowhere. Each row is a recorded, countable gap and a candidate for drilling. The gate prints the total on every run; `check:liveness --undrilled` prints the worklist. A row leaves by being DRILLED (add `children` with a status + evidence per key, the way `view.list` / `view.form` are drilled), never by being deleted for convenience — a row whose container has since been drilled FAILS the gate, so the debt cannot be overstated either. Adding a row is legitimate only when you have no per-key evidence to record, and it is deliberately a visible edit to a file named for the debt, because the alternative it replaced (a reassuring sentence in a `note`) cost nothing to write and could not be checked. ⚠️ DEPTH-TWO MIGRATION (#17424): 51 rows arrived at once when the walk learned to recurse. They are not new debt — every one of them was already riding on a blanket verdict, below a DRILLED container, where the one-level walk could not see it and therefore never counted it. Reading the jump as a regression is the wrong reading: the instrument's denominator grew to match the surface it always covered. Each of these rows is a `<type>/<prop>.<child>` coordinate, and each leaves the same way any other does — by being drilled, deferred, or by its property going away. [#18582] One row arrived with the `connector` ledger: `connector/webhooks`. It was a container whose blanket verdict was `dead` — a connector's nested webhook array never became a `webhook` metadata item, so the `sys_webhook` materializer never saw it. It was RECORDED rather than deferred because `WebhookConfigSchema` was `WebhookSchema.extend({ events, signatureAlgorithm })`, so the gate's key-set EQUALITY check would correctly have refused a `deferred` row pointing at the governed `webhook` type; and rather than drilled because 8 of its 21 child keys were the ADR-0010 protection envelope this gate auto-classifies `live` everywhere else, and the other 13 would each have repeated one sentence — fabricated granularity over a container that was dead as a whole. That row has since LEFT by the third route above, its property going away: `connector.webhooks` was retired under ADR-0049 and is now a `retiredKey()` tombstone rather than a container, so the gate reported the row stale and it was deleted (the `connector` ledger's `webhooks` row carries the census).",
0 commit comments