F-3 Consolidation Rollback-Only Coverage Dry-Run — 04 Expanded-Scope Inventory Results
04 — Expanded-Scope Inventory Results
Live output of Phase A (full-35 ceiling) and Phase B (10-subset + real containment). All inside the rolled-back transaction.
4.1 A1–A3 — full-35 inventory ceiling proven LIVE
The inventory seam was wired over all governed BIRTH_REQUIRED collections (no IN (...) filter) — the exact collection-grain shape a ratified F-4 would commit:
A2 inv_full = 35
A3 gap_before_full = 210 ceiling_full = 210 (35 governed × 6 active scopes)
This closes the inference in F2-2: the full Phase-1 gap ceiling of 210 is now the empirical behavior of a real view object over the real source, not a computed estimate. The abort gate (> 210 ⇒ ROLLBACK) did not fire — observed exactly equals the ceiling, confirming the gap view fans every governed object across all 6 active scopes and nothing escapes the bound. (The superseded "38" ceiling is wrong; 210 is correct.)
4.2 B1–B3 — 10-collection subset inventory
Re-wired to a bounded subset spanning three real folder-groups:
object_ref | requires_owner | born
---------------------+----------------+------
approval_requests | t | t ┐
apr_action_types | t | t │ GRP-GOVERNANCE (4)
apr_approvals | t | t │
apr_request_types | t | t ┘
workflows | t | t ┐ GRP-WORKFLOW (2)
workflow_steps | t | t ┘
collection_registry | t | t ┐
dot_tools | t | t │ GRP-REGISTRY (4)
taxonomy | t | t │
taxonomy_facets | t | t ┘
(10 rows)
All 10 requires_owner=t born=t (governed + BIRTH_REQUIRED). Subset chosen to span ownership outcomes: one group will get an inherited anchor, one collection a direct owner, one whole group left unowned.
4.3 B4 — REAL containment edges (the F-3 differentiator)
Seam-B was derived from the live collection_registry."group" column — not a hand-made fixture:
parent_ref | children | members
----------------+----------+--------------------------------------------------------------------
GRP-GOVERNANCE | 4 | approval_requests,apr_action_types,apr_approvals,apr_request_types
GRP-REGISTRY | 4 | collection_registry,dot_tools,taxonomy,taxonomy_facets
GRP-WORKFLOW | 2 | workflows,workflow_steps
(3 rows)
10 child→group edges into 3 group (folder) parents. Every edge is a row that already exists in production (collection_registry.group), so the containment tree is discovered, not authored — satisfying the no-hardcode / no-hidden-island principle.
4.4 B5 — acyclicity confirmed
A recursive walk over the real containment seam:
max_depth | walk_rows | hit_cycle_guard
-----------+-----------+-----------------
1 | 10 | f
max_depth=1 (collection → group is a single hop; groups are leaves of the upward walk because no group is itself a governed collection_name — verified in preflight §1.4). hit_cycle_guard=false ⇒ the 64-depth guard never engaged ⇒ the source is acyclic. This is the precise property a ratified F-4 containment seam needs, and it holds on the real data.
4.5 B6 — gap before ownership (subset)
gap_before_subset = 60 (10 objects × 6 active scopes)
Matches the corrected object×scope ceiling exactly — the maximal honest gap when no owner exists.
4.6 Expanded-scope verdict
PASS. The inventory seam compiles and returns the correct bounded set at both full-35 (210 ceiling, live) and 10-subset (60) grains; the containment seam is sourced from real production folder-grouping, returns 10 acyclic edges across 3 groups, depth-1. The corrected thresholds (210 / 60) are confirmed empirically, not inferred.