Skip to content

Commit 384cbe0

Browse files
committed
docs(board): absorb PR #355 — SPO-1 + TTL-PROBE-5 closures + 8 new rows + Per-row-context cluster
Append a 2026-05-07 dated section recording the architectural impact of PR #355 (palantir-cascade, 11 deliverables / 12 agents / 3 waves, merged 13:40 UTC). Pillar 0 realized end-to-end: OntologyRegistry IS the SoA, schema IS the DTO + index. O(1) probe: 2554× over SPARQL- proxy (target ≥ 100× exceeded by 25.5×). State changes: - SPO-1: Stalled (entropy 4) → Wired (entropy 2) via SpoBridge:: promote_to_spo writer. The two SPO stores are tiers, not duplicates. - TTL-PROBE-5: Aspirational → Wired via AttributeProvenance + Wave-3 cascade-cols. New rows (entropy / maturity / Smart-Dumb scored): - ONTOLOGY-REGISTRY-SOA-1 (E 2, Stage 3, Smart) — Pillar 0 - MUL-THRESHOLD-1 (E 3, Stage 2, Smart) — for_context() carrier - CASCADE-COLS-1 (E 3, Stage 2, Dumb) — codec cols on MappingRow - OBJECT-VIEW-1 (E 3, Stage 1, Smart-leaning) — POD foundry primitives - BUSDTO-BRIDGE-1 (E 2, Stage 2, Smart) — bit-exact encode path - CERT-OFFICER-1 (E 3, Stage 2) — syn-based Zone-1/2 build-script gate - CONTEXT-ID-1 (E 3, Stage 3, Smart) — SchemaPtr widened + 14 ns mappings - DTO-CLASS-CHECK-1 (E 4, Stage 1) — currently 28/28 FAIL until owner crates add classification doc comments New cluster — Per-row-context (members: MUL-THRESHOLD-1, CASCADE-COLS-1, CONTEXT-ID-1 + ONTOLOGY-REGISTRY-SOA-1 loose-end; cluster entropy 9): single 200-300 LOC PR landing per-row BindSpace.context_ids drops three rows entropy 3 → 2, closes lance_cache.rs lossy-replay seam, and re-wires driver.rs:303-321 to make trust_below_floor live-effect. Open seams: 5 → 4 + 2 new = 6 active. Highest-leverage cluster shifts from Board-hygiene to Per-row-context (lower LOC, cross-row unlock). Total rows tracked: 43 → 53.
1 parent 99de70d commit 384cbe0

1 file changed

Lines changed: 257 additions & 0 deletions

File tree

.claude/board/ARCHITECTURE_ENTROPY_LEDGER.md

Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)