@@ -1132,3 +1132,260 @@ the PLURAL doc — meta-irony noted).
11321132 soa-dto-dependency-ledger): post-merge governance + 4-tier DTO
11331133 classification (bare-metal=9 / SoA-glue=7 / bridge-projection=6,
11341134 3 OPEN re-classifications). Merges 2026-05-07 10:47 UTC.
1135+
1136+ ---
1137+
1138+ ## 2026-05-07 — PR #355 absorption: SPO-1 + TTL-PROBE-5 closures + 8 new rows + Per-row-context cluster
1139+
1140+ > ** Append-only update.** PR #355 (palantir-cascade, merged 13:40 UTC,
1141+ > 11 deliverables / 12 agents / 3 waves, +4,092 / −263 across 36 files;
1142+ > base = ` a6797ad ` , head = ` 140dbc07 ` ) realized Pillar 0 end-to-end:
1143+ > ` OntologyRegistry ` IS the SoA, schema IS the DTO + index. Codec
1144+ > cascade columns now live ON ` MappingRow ` ; bridge collapsed to 2-line
1145+ > projection over ` OntologyRegistry::enumerate(ns) ` ; O(1) probe shows
1146+ > registry p99 = 253 ns vs SPARQL-proxy p99 = 646,220 ns = ** 2554×
1147+ > ratio** (target ≥ 100× exceeded by 25.5×).
1148+
1149+ ### State changes
1150+
1151+ #### SPO-1 — Stalled (Wired ×2 distinct, no bridge) → Wired (canonical bridge shipped)
1152+
1153+ ** Old state:** Two SPO stores wired in parallel. ` lance-graph::graph::spo::* `
1154+ (fingerprint-keyed, HammingMin truth-semiring) + `lance-graph::graph::
1155+ arigraph::triplet_graph` (string-keyed ` HashMap<String, Vec<usize >>`,
1156+ 1,072 LOC). Share only ` TruthValue ` . ** No bridge fn** between them —
1157+ ` to_fingerprints() ` was a derive, not a writer. Entropy 4. Cluster:
1158+ Foundry seal.
1159+
1160+ ** New state:** L1/L2 cache framing concretely realized via
1161+ ` SpoBridge::promote_to_spo ` writer at `crates/lance-graph/src/graph/
1162+ arigraph/spo_bridge.rs`. Warm string-keyed AriGraph (L1) → cold
1163+ fingerprint-keyed SPO (L2) via FNV-1a ` dn_hash ` . The two stores are
1164+ ** tiers, not duplicates** — bridge closes the missing writer seam.
1165+
1166+ ** Evidence:** PR #355 D-ONTO-V5-9 (Wave 1, agent-spo-promote;
1167+ commit ` 8528161 ` ).
1168+
1169+ ** Entropy:** 4 → ** 2** . Maturity Stage 3 (multi-crate consumer).
1170+ Smart/Dumb: ** Smart** (` promote_to_spo ` carrier method). Cluster
1171+ status: SPO-1 drops out of Section C "open seams" list.
1172+
1173+ #### TTL-PROBE-5 — Aspirational/Stub → Wired
1174+
1175+ ** Old state:** Per-attribute ` dcterms:source ` provenance referenced
1176+ in plans; no implementation surface.
1177+
1178+ ** New state:** Wired via sibling ` AttributeProvenance ` +
1179+ ` ProvenanceBundle ` types in ` proposal.rs ` . Wave-3 cascade-cols
1180+ (D-CASCADE-V1-7) threaded ` attribute_sources ` into ` MappingRow ` .
1181+
1182+ ** Evidence:** PR #355 D-ONTO-V5-1 (Wave 1, agent-ttl-source).
1183+
1184+ ** Entropy:** closed. Maturity Stage 2.
1185+
1186+ ### New row introductions
1187+
1188+ #### ONTOLOGY-REGISTRY-SOA-1 — Pillar 0 realized (Registry IS the SoA)
1189+
1190+ | Field | Value |
1191+ | ---| ---|
1192+ | Region | R6/R0 |
1193+ | Component | ` lance-graph-ontology::OntologyRegistry ` ; schema IS the DTO + index; ` enumerate(ns) ` + ` SchemaPtr ` carrier methods |
1194+ | Maturity | ** Stage 3** (consumed by bridge crates + ` MappingRow ` + callcenter) |
1195+ | Smart/Dumb | ** Smart** (carrier methods on registry; Click-P-1 satisfied) |
1196+ | State | Wired |
1197+ | DupCount | 1 |
1198+ | DupPotential | None |
1199+ | LooseEnds | (a) ` lance_cache.rs ` Arrow schema doesn't yet persist the 7 new MappingRow cascade columns — replay defaults them (CRITICAL per meta-3); (b) per-row ` BindSpace.context_ids ` deferred to Wave-3.5 |
1200+ | Plan | ` lance-graph-ontology-v5.md ` |
1201+ | Plan-status | Active |
1202+ | ** Entropy** | ** 2** (Mostly clean — wired with empirical proof; two known loose ends in cluster Per-row-context below) |
1203+ | Empirical | O(1) probe: registry p99 = 253 ns vs SPARQL-proxy p99 = 646,220 ns = ** 2554× ratio** (target ≥ 100×); 41/41 tests in ` lance-graph-ontology ` |
1204+ | Evidence | PR #355 D-CASCADE-V1-3 (bridge collapse, agent-bridge-collapse) + D-CASCADE-V1-11 (probe, agent-probes); commits ` 8528161 ` + ` fc49a29 ` |
1205+
1206+ #### MUL-THRESHOLD-1 — context-aware threshold profile
1207+
1208+ | Field | Value |
1209+ | ---| ---|
1210+ | Region | R6 (companion to MUL-ASSESS-1; consult site at ` driver.rs:303-321 ` ) |
1211+ | Component | ` lance-graph-contract::mul::MulThresholdProfile ` w/ const profiles ` MEDICAL ` / ` CALLCENTER ` / ` DEFAULT ` + ` for_context(u32) ` lookup |
1212+ | Maturity | Stage 2 |
1213+ | Smart/Dumb | Smart (` for_context() ` carrier method) |
1214+ | State | Wired (7/7 tests) |
1215+ | DupCount | 1 |
1216+ | DupPotential | None |
1217+ | LooseEnds | ` driver.rs:311 ` per-dispatch (not per-row) ` ctx_id ` — ` trust_below_floor ` branch is dead-effect today; per-row ` BindSpace.context_ids ` deferred to Wave-3.5 |
1218+ | Plan | ` ogit-cascade-supabase-callcenter-v1 ` D-ONTO-V5-9 |
1219+ | Plan-status | Active |
1220+ | ** Entropy** | ** 3** (Partial — wired but ` trust_below_floor ` branch dead-effect; cluster Per-row-context) |
1221+ | Evidence | PR #355 D-ONTO-V5-9 (Wave 2, agent-mul-threshold; commit ` 8366e70 ` ) |
1222+
1223+ #### CASCADE-COLS-1 — codec cascade columns ON MappingRow
1224+
1225+ | Field | Value |
1226+ | ---| ---|
1227+ | Region | R6/R7 |
1228+ | Component | ` MappingRow ` cascade cols: ` IdentityCodec { cam_pq_code, base17_head, palette_key, scent } ` + ` QualiaMeta { qualia, meta, edge } ` + ` thinking_style: Option<u16> ` + ` attribute_sources ` + 3 type-ref strings |
1229+ | Maturity | Stage 2 |
1230+ | Smart/Dumb | ** Dumb** (struct fields; no carrier methods yet declared beyond constructors — Click-P-1 deficit candidate) |
1231+ | State | Wired (4/4 cascade_cols tests) |
1232+ | DupCount | 1 |
1233+ | DupPotential | None |
1234+ | LooseEnds | ` lance_cache.rs ` Arrow schema bump pending — Lance-cache hydrate is currently ** lossy** (replay defaults the 7 new cols). Flagged in #355 body as item 5 of 9 handoff debt |
1235+ | Plan | ` ogit-cascade-supabase-callcenter-v1 ` D-V1-7 + ` palantir-parity-cascade-v2 ` D-V2-12 (3-gap closer: META-NUDGE-1 + META-NUDGE-4 + ontology_dto.rs empty-vec drift, all in one pass) |
1236+ | Plan-status | Active |
1237+ | ** Entropy** | ** 3** (Partial — Lance-cache replay lossy; cluster Per-row-context) |
1238+ | Evidence | PR #355 D-V1-7 + D-V2-12 (Wave 3, agent-cascade-cols; self-trimmed 1.87× → 1.41× envelope via BLOCKER-and-resolve discipline; commit ` fc49a29 ` ) |
1239+
1240+ #### OBJECT-VIEW-1 — Foundry Object/Notification primitives (POD)
1241+
1242+ | Field | Value |
1243+ | ---| ---|
1244+ | Region | R6 (contract surface for foundry) |
1245+ | Component | ` ObjectView ` , ` NotificationSpec ` , ` DisplayTemplate{Card,Detail,Summary} ` , ` NotificationTrigger{Created,Updated,Deleted,ThresholdCrossed} ` , ` NotificationChannel{Inline,Webhook,Email} ` , ` FieldRef ` . Zero serde, zero deps. POD-shaped |
1246+ | Maturity | ** Stage 1** (≤1 consumer — only the test suite; no production consumer until D-PARITY-V2-7 ships) |
1247+ | Smart/Dumb | Smart-leaning (carrier types with display/notification semantics) |
1248+ | State | Wired (4/4 object_view tests) |
1249+ | DupCount | 1 |
1250+ | DupPotential | ** Watch** (namespace pre-claim risk if Q2 Object Explorer invents parallel types before D-PARITY-V2-7 lands — CRYSTAL-1-style collision potential) |
1251+ | LooseEnds | No production consumer yet — POD primitives wait for the future Q2 Object Explorer (D-PARITY-V2-7) |
1252+ | Plan | ` palantir-parity-cascade-v2 ` D-V2-4 shipped; D-V2-7 future |
1253+ | Plan-status | Active |
1254+ | ** Entropy** | ** 3** (Partial — types exist with tests but namespace pre-claim risk + no consumer; Stage-1 risk row) |
1255+ | Evidence | PR #355 D-PARITY-V2-4 (Wave 3, agent-object-view; commit ` fc49a29 ` ) |
1256+
1257+ #### BUSDTO-BRIDGE-1 — engine_bridge BusDto → ShaderDispatch encode path
1258+
1259+ | Field | Value |
1260+ | ---| ---|
1261+ | Region | R3 |
1262+ | Component | ` engine_bridge.rs ` ` BusDto ` → ` ShaderDispatch::encode ` → ` BindSpace ` SoA path |
1263+ | Maturity | Stage 2 |
1264+ | Smart/Dumb | Smart (carrier-method encode path) |
1265+ | State | Wired (5/5 busdto_bridge tests) |
1266+ | DupCount | 1 |
1267+ | DupPotential | Low |
1268+ | LooseEnds | LOSSY only for non-positive-energy ` top_k ` entries (idx → 0; energy still bit-exact via qualia). Documented expected behaviour — but downstream consumers reading idx must handle the 0-marker convention |
1269+ | Bit-exact | ` codebook_index ` + positive-energy ` top_k ` + ` cycle_count ` + ` converged ` + all energies |
1270+ | Plan | ` palantir-parity-cascade-v2 ` D-V2-3 |
1271+ | Plan-status | Active |
1272+ | ** Entropy** | ** 2** (Mostly clean — bit-exact for canonical case, documented lossy edge case) |
1273+ | Evidence | PR #355 D-V2-3 (Wave 2, agent-busdto-bridge; commit ` 8366e70 ` ) |
1274+
1275+ #### CERT-OFFICER-1 — Zone 1/2 ` Serialize ` -leak build-script gate
1276+
1277+ | Field | Value |
1278+ | ---| ---|
1279+ | Region | R8 (build / governance) |
1280+ | Component | ` lance-graph-callcenter/build.rs ` syn-based static check; walks ` Item::Struct/Enum ` filtered by ` Visibility::Public ` , flags ` #[derive(Serialize)] ` on Zone 1/2 source files |
1281+ | Maturity | Stage 2 |
1282+ | Smart/Dumb | n/a (build script) |
1283+ | State | Wired (post-FIX-2: hard-abort scoped to direct builds + ` --features zone-check-strict ` ); 0 violations on canonical surface |
1284+ | DupCount | 1 |
1285+ | DupPotential | None |
1286+ | LooseEnds | ` zone_serialize_check_compile_fail.rs ` is ` assert!(true) ` smoke — trybuild-style probe is the proper fix (FIX-1, deferred per #355 handoff debt item 1) |
1287+ | Plan | ` ogit-cascade-supabase-callcenter-v1 ` D-V1-1 |
1288+ | Plan-status | Active |
1289+ | ** Entropy** | ** 3** (Partial — gate is wired but the test of the gate is ` assert!(true) ` ; trybuild deferred) |
1290+ | Evidence | PR #355 D-V1-1 (Wave 1, agent-cert-officer + meta-1 FIX-2 in commit ` 16a745c ` ) |
1291+
1292+ #### CONTEXT-ID-1 — ` SchemaPtr ` widened + NamespaceRegistry seed_defaults
1293+
1294+ | Field | Value |
1295+ | ---| ---|
1296+ | Region | R6 (contract::SchemaPtr) + R0 (BindSpace context-id column) |
1297+ | Component | ` SchemaPtr ` widened tuple → named struct w/ ` ontology_context_id: u32 ` ; new ` NamespaceRegistry::seed_defaults() ` with 14 mappings (WorkOrder=1, Healthcare=2, Network=3, SMB=0, Medical/{ICD10CM..CHEBI}=10..19) |
1298+ | Maturity | Stage 2 → Stage 3 (consumed by SchemaPtr + driver.rs + bridge crates) |
1299+ | Smart/Dumb | Smart (` SchemaPtr ` named struct + ` NamespaceRegistry::seed_defaults() ` carrier method) |
1300+ | State | Wired |
1301+ | DupCount | 1 |
1302+ | DupPotential | None |
1303+ | LooseEnds | per-row ` BindSpace.context_ids ` deferred to Wave-3.5 — ` driver.rs:311 ` uses per-dispatch ctx_id, not per-row (same loose end as MUL-THRESHOLD-1 + CASCADE-COLS-1) |
1304+ | Plan | ` ogit-cascade-supabase-callcenter-v1 ` D-V1-2 |
1305+ | Plan-status | Active |
1306+ | ** Entropy** | ** 3** (Partial — schema-side ctx_id wired, per-row ctx_id deferred; cluster Per-row-context) |
1307+ | Evidence | PR #355 D-V1-2 (Wave 2, agent-context-id; commit ` 8366e70 ` ) |
1308+
1309+ #### DTO-CLASS-CHECK-1 — workspace DTO classification gate
1310+
1311+ | Field | Value |
1312+ | ---| ---|
1313+ | Region | (board / governance tooling) |
1314+ | Component | ` tools/dto-class-check/ ` new bin scans 28 types vs 22-row hardcoded ledger const |
1315+ | Maturity | Stage 1 (gate exists; consumer-side annotations missing) |
1316+ | Smart/Dumb | n/a (binary tool) |
1317+ | State | Wired (gate works; 1/1 smoke test) / ** currently 28/28 FAIL** exit 1 (consumer side incomplete) |
1318+ | DupCount | 1 |
1319+ | DupPotential | None |
1320+ | LooseEnds | 22 ` // classification: … ` doc comments needed in owner crates to flip 28/28 FAIL → 28/28 PASS (#355 handoff debt item 4; deferable, not commit-blocking) |
1321+ | Plan | ` palantir-parity-cascade-v2 ` D-V2-10 |
1322+ | Plan-status | Active |
1323+ | ** Entropy** | ** 4** (High — gate works but workspace fails it 28/28; the gate is currently a shame-stick, not an enforced check, until owner crates add the doc-comment classifications) |
1324+ | Evidence | PR #355 D-V2-10 (Wave 3, agent-probes; commit ` fc49a29 ` ) |
1325+
1326+ ### New cluster — Per-row-context (joins Section B clusters)
1327+
1328+ | Cluster | Members | Total entropy | Suggested order |
1329+ | ---| ---| ---| ---|
1330+ | ** Per-row-context** | MUL-THRESHOLD-1 (3) + CASCADE-COLS-1 (3) + CONTEXT-ID-1 (3) + ONTOLOGY-REGISTRY-SOA-1 loose-end (b) | 9 (cluster of three rows + one carry-over) | (1) Land per-row ` BindSpace.context_ids ` column (Wave-3.5 carry); (2) Re-wire ` driver.rs:303-321 ` to use per-row ctx_id (closes MUL-THRESHOLD-1's ` trust_below_floor ` dead-effect); (3) Bump ` lance_cache.rs ` Arrow schema for the 7 new MappingRow cascade cols (closes CASCADE-COLS-1 lossy-replay). ** Single 200-300 LOC PR** drops three rows entropy 3 → 2. |
1331+
1332+ This cluster is the highest-leverage ** single-fix unlock** introduced
1333+ by PR #355 's deferred handoff debt — it shares the same root deficit
1334+ (per-row vs per-dispatch context) across three otherwise-independent
1335+ rows, and PR #355 's body explicitly identifies items 5 + 6 of the
1336+ 9-item handoff debt as the work to do.
1337+
1338+ ### Open seams update (Section C, current as of 2026-05-07 13:40 UTC)
1339+
1340+ Of the 5 remaining seams from PR #345 's update:
1341+
1342+ | Seam | Status |
1343+ | ---| ---|
1344+ | ~~ R6/R0 ontology-as-SoA seam (registry vs schema indirection)~~ | ** Closed** by PR #355 (Pillar 0 realized; ` OntologyRegistry::enumerate(ns) ` IS the canonical surface) |
1345+ | R0 ` BindSpace ` write airgap soft-enforced | unchanged |
1346+ | R3 ` step_trajectory_hash ` | unchanged |
1347+ | R7 LanceMembrane projection cold-path | unchanged |
1348+ | R8 cypher_bridge regex | unchanged |
1349+ | Pillar-7 prover | unchanged |
1350+ | Pillar-2 (Cartan-Kuranishi) genuinely deferred | unchanged (per PR #348 ) |
1351+ | ** NEW: per-row ` BindSpace.context_ids ` (Wave-3.5 carry)** | ** OPEN** — drives Per-row-context cluster above |
1352+ | ** NEW: ` lance_cache.rs ` Arrow schema bump for 7 cascade cols** | ** OPEN** — Lance-cache hydrate is currently lossy |
1353+
1354+ ** 4 seams remain + 2 new** = 6 active seams. Highest-leverage:
1355+ ** Per-row-context** (single 200-300 LOC PR closes three ledger rows
1356+ entropy 3 → 2, totals −3).
1357+
1358+ ### Cross-references added by this absorption
1359+
1360+ - ** PR #355 lance-graph** (palantir-cascade, 4,092 / 263, 36 files,
1361+ +5 commits, 11 deliverables, 12 agents, 3 waves):
1362+ realizes Pillar 0 end-to-end; closes SPO-1 + TTL-PROBE-5;
1363+ introduces 8 new rows above.
1364+ - ** Sibling OGIT PR #2 ** (merged): 24 WoA predicate fills + Healthcare
1365+ bootstrap (7 entities + 7 enums); woa-bridge + medcare-bridge
1366+ unblocked for OGIT-O(1) migration. (Out of MCP scope for direct
1367+ diff fetch; per user 2026-05-07.)
1368+ - ** ` .claude/board/AGENT_ORCHESTRATION_LOG.md ` ** — append-only timeline
1369+ of all 12 agents + 3 meta-reviews + main-thread arbitrations + FIX-
1370+ applied notes (introduced by PR #355 ).
1371+
1372+ ### Aggregate (post-PR #355 )
1373+
1374+ - ** Total rows:** 43 (post- #345 /346/347/348/353) + CYCLE-ACCUM-1
1375+ + LADYBUG-EQUIV-1 (this branch) + 8 new from #355 = ** 53 rows
1376+ tracked** .
1377+ - ** State changes this PR:** SPO-1 (4→2) = −2; TTL-PROBE-5 closed = ~ 0.
1378+ - ** New entropy added:** ONTOLOGY-REGISTRY-SOA-1 (2) + MUL-THRESHOLD-1
1379+ (3) + CASCADE-COLS-1 (3) + OBJECT-VIEW-1 (3) + BUSDTO-BRIDGE-1 (2)
1380+ + CERT-OFFICER-1 (3) + CONTEXT-ID-1 (3) + DTO-CLASS-CHECK-1 (4)
1381+ = ** 23 entropy units across 8 new rows** (mean 2.875 — lower than
1382+ the 2026-05-05 snapshot mean of 3.46, reflecting that Wave-3 BLOCKER
1383+ discipline produced cleaner deliverables than the 2026-04 baseline
1384+ did).
1385+ - ** Open seams:** 5 → 4 + 2 new = 6 active.
1386+ - ** Highest-leverage cluster:** ** Per-row-context** (9 cluster-entropy,
1387+ single 200-300 LOC PR, closes three rows entropy 3 → 2; shares root
1388+ with PR #355 's items 5+6 of 9-item handoff debt).
1389+ - ** Stage-1 risk row:** OBJECT-VIEW-1 — namespace pre-claim risk
1390+ pending Q2 Object Explorer (D-PARITY-V2-7) to materialise the
1391+ consumer side.
0 commit comments