Skip to content

Commit 67534a3

Browse files
authored
Merge pull request #443 from AdaWorldAPI/claude/jolly-cori-clnf9-darm14-p2
feat(arm-discovery): D-ARM-14 Phase 2 — aerial→hub landing + the OWL/DOLCE-domain HHTL potential
2 parents 415971a + 7087fda commit 67534a3

8 files changed

Lines changed: 598 additions & 5 deletions

File tree

.claude/board/AGENT_LOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
## [Main thread / Opus] D-ARM-14 Phase 2 — rebased onto post-#442 main + swapped inline nibble → real contract::hhtl::NiblePath
2+
3+
**Branch:** claude/jolly-cori-clnf9-darm14-p2 (rebased onto main 415971a, #442 merged) | **Files:** `tests/wikidata_landing.rs` (inline `np_*` helpers + inline FieldMask union → real `NiblePath::{root,child,basin,is_ancestor_of,depth,packed}` + `FieldMask::inherit`), STATUS_BOARD (D-ARM-14 row: swap done).
4+
5+
**Cargo:** rebase clean (no conflicts); default **42/42** + clippy clean; `--features landing` `wikidata_landing` green + clippy clean — now landing on the REAL merged `contract::hhtl::NiblePath`. Output shows real depths (person 0x1 d2 → human 0x12 d3), 6→5 collapse holds.
6+
7+
**Outcome:** DONE. User: "442 merged please rebase." #442 put `contract::hhtl::NiblePath` + `FieldMask::inherit` + `ontology::wikidata_hhtl` on main, so the rebase also unlocked the promised inline→real swap (the "swap on #442 merge" remaining item). The worked example now lands on the canonical 16ⁿ router, not a stand-in. Force-push follows (rebase rewrote the 3 P2 commits onto new main). PR #443 updated.
8+
9+
---
10+
11+
## [Main thread / Opus] D-ARM-14 Phase 2 — proposer→hub landing (dolce_id emit + worked Wikidata example)
12+
13+
**Branch:** claude/jolly-cori-clnf9-darm14-p2 (off main a77e119) | **Files:** `crates/lance-graph-arm-discovery/src/aerial/ontology.rs` (+`OntologyProjector::dolce_id`, `DolceCategory::from_index`, `is_dolce`), `Cargo.toml` (+`landing` feature + optional `lance-graph-contract` dev-dep), `tests/wikidata_landing.rs` (NEW, gated) + STATUS_BOARD (D-ARM-14 Phase 2).
14+
15+
**Cargo:** DEFAULT (zero-dep) → **42/42** + clippy `-D warnings` clean. `--features landing` → the `wikidata_landing` worked example green + clippy clean (lands on REAL `lance-graph-contract` types).
16+
17+
**Outcome:** Phase 2 DONE. User: "how to use aerial + the 10000² splat + add the ontology to land on Wikidata-shaped HHTL?" → built the answer. **(a) The OD-DOLCE alignment #442 deferred to my lane:** `OntologyProjector::dolce_id()` emits the stable `dolce_id` u8 (= basin nibble, already matching `dolce_id::{ENDURANT=0,..}`) — the proposer hands the hub the enum-free routing key, the IRI becomes a late-resolvable label (resolve-through-cache). **(b) The worked end-to-end example** (`tests/wikidata_landing.rs`, `--features landing`, opt-in `dev-dep lance-graph-contract` exactly like jc's bridge examples — lib stays zero-dep): splat top-k → `extract_rules` recovers all 6 DOLCE basins → lands each on the REAL `contract::class_view::FieldMask` (presence) + `hash::fnv1a_str` (StructuralSignature value); `NiblePath` 16ⁿ routing inlined (annotated, swap on #442 merge since contract::hhtl isn't on main yet). CONFIRMED on data: corpus collapses 6→5 families (film Q11424 ≡ tv Q5398426, sig 0xad7fade7), human⊂person inherits path + mask-as-delta, basin preserved down the subclass path. Respects the firewall (lib never imports the hub; the test bridges both to prove the `(ClassId, signature, FieldMask)` triple + `dolce_id` u8 seam). NOT pushed yet — awaiting confirm (prior branch merged). Map: `splat-codebook-aerial-wikidata-compression.md`.
18+
19+
---
20+
121
## [Main thread / Opus 4.7] odoo-classes-bitmask-render-v1 — authored bounded-weekend plan + 10-agent A2A wave split (pre-council)
222

323
**Branch:** claude/activate-lance-graph-att-k2pHI | **Files (additive only):**

.claude/board/EPIPHANIES.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,19 @@
1515
**#438 council verdict (4f381a8):** no code action items — it reviewed a `discovery_origin` byte-grammar plan, not the crate; fixed a stale Wave-1 citation, escalated 2 spec decisions (tier-set + proposer-id width) to ISSUES, queued D-CHESS-BRINGUP-1.
1616

1717
**Cross-ref:** #441 (D-CLS), #438 (D-ARM-14 P1), 67903a8 (proposer-layering), b31464d (OD-DOLCE), `splat-codebook-aerial-wikidata-compression.md`, `wikidata-hhtl-load.md`, `contract::hhtl`.
18+
## 2026-05-31 — FINDING: ANY OWL/DOLCE domain compartmentalizes into the same 16ⁿ HHTL, fed by aerial — the class-meta-DTO is the universal substrate; domains differ in content, never structure (D-ARM-14 Phase 2)
19+
20+
**Status:** FINDING (per-layer domain-independence is shipped/proven on 2 domains; full-scale universality is CONJECTURE — each new domain is a falsifier). Doc: `owl-dolce-hhtl-compartments-aerial-fed.md`. PR: D-ARM-14 Phase 2 (`claude/jolly-cori-clnf9-darm14-p2`).
21+
22+
**The generalization (the user's "potential"):** medicine (SNOMED/FMA), finance (FIBO), geography, law, Odoo, and all of Wikidata are NOT bespoke loaders — each yields the SAME four things and lands as the SAME `(ClassId, StructuralSignature, FieldMask)` row: a **basin** (DOLCE `dolce_id` 0..3), a **nibble path** (`NiblePath`, P279 subClassOf descent), a **`FieldMask`** (property presence), a **`StructuralSignature`** (FNV-1a shape-family). Domain enters only as *content* (the property-id set + the corpus), never as *structure*. This is `cognitive-risc-classes.md` N4 operationalised — "chess + Odoo + Wikidata-anatomy through one Class+SoA+HHTL+CAM, no special-case."
23+
24+
**Why it holds (proof chain, not hope):** every layer is domain-agnostic by construction — `NiblePath` takes a `basin: u8` with zero DOLCE knowledge (#442); `FieldMask` is one-bit-per-property (#441); `StructuralSignature` is label/QID/domain-independent (Odoo #441 + Wikidata #442 BOTH collapse structurally-identical classes to one family); `ClassView` is a trait both `RegistryClassView` (Odoo) and `WikidataClassView` (Wikidata) impl unchanged. DOLCE is resolved late from the cache (`basin = dolce_id`, no enum). The **aerial feed** is the part that makes each domain self-populating: similarity is an injected integer `CodebookDistance` (the 10000² splat, jc-certified), so a new domain is fed by pointing aerial at (a) a domain splat codebook + (b) a domain row corpus — `tests/wikidata_landing.rs` is the template; swap the fixture, **no new hub code**. Phase 2 proved this end-to-end (splat → recover 6 DOLCE basins → land on real `FieldMask`+signature; film≡tv collapse, human⊂person inherit).
25+
26+
**Compartmentalization rule:** ONE tree axis (Abstammung/P279), DOLCE facets seed root nibbles 0x0..0x3 (0x4..0xF reserved). The DOMAIN is an ORTHOGONAL compartment (namespace/facet tag), NOT a second path — cross-domain multi-typing is a facet bit in the same `FieldMask`, like bat = mammal-path + flight-bit. Open: reconcile the OGIT *byte*-basins (0x10..) with the `NiblePath` *nibble*-basin before a multi-domain load.
27+
28+
**Scale-freezes (carry from the #442 review):** `NiblePath` silent truncation at depth-16 (deep medical/bio chains collide), `StructuralSignature` u32 (birthday-collision among shape-families across many domains), the DOLCE nibble/byte addressing. None bites the 2 curated domains; all bite at full multi-domain scale — name each as a conscious freeze before the load that needs it. Gated on D-ARM-7 (`jc::jirak`) before any domain's feed writes the store.
29+
30+
**Cross-ref:** `owl-dolce-hhtl-compartments-aerial-fed.md`, `wikidata-hhtl-load.md`, `ogit-owl-dolce-ontology-compartments.md`, `splat-codebook-aerial-wikidata-compression.md`; #441 (D-CLS), #442 (Wikidata-HHTL), #438 + Phase 2 (aerial feed); the D-CLS↔D-ARM-14 convergence FINDING; `cognitive-risc-classes.md` N4.
1831

1932
## 2026-05-31 — FINDING (research): arm-discovery is a PROPOSER that FEEDS the SPO-AST, not the SPO-AST itself — using it AS the AST would conflate proposer↔hub + push similarity into addressing
2033

.claude/board/STATUS_BOARD.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ The missing UPSTREAM discovery leg. Today's proposers (curated L-docs + AST-extr
645645
| D-ARM-11 | `style_recipe.rs` rule 8 — ArmDiscovered backing adds `DAtom::Compute` weight 2 (provisional) | lance-graph-ontology::style_recipe | 80 | MED | **Queued** | depends on D-ARM-1 |
646646
| D-ARM-12 | End-to-end pipeline test + bench (synthetic Odoo feed → all 5 stages → council micro-batch) | lance-graph-arm-discovery::tests + benches | 400 | MED | **Queued** | depends on Waves 1-6; informs OQ-ARM-2 + OQ-ARM-7 |
647647
| D-ARM-13 | **Aerial+ Rust transcode — deterministic codebook-probe backend** (float-free). The paper's `f32` denoising autoencoder is REPLACED by an integer `CodebookDistance` oracle (palette256 distance, ρ=0.9973 vs cosine): the reconstruction probe is a codebook top-k, not a softmax over float weights. Integer evidence counts + ppm gates + `TruthU8` (= CausalEdge64 wire). `AerialProposer` impl of `Proposer`. Count loop is a row-bitset SoA (`RowMasks`) → AND+popcount, routed through `ndarray::simd::U64x8` under the `ndarray-simd` feature. | lance-graph-arm-discovery::aerial | ~1.1K | HIGH | **Shipped (branch)** | branch `claude/jolly-cori-clnf9`; standalone zero-dep crate (excluded); **33/33** tests + clippy `-D warnings` clean on BOTH default (scalar) and `--features ndarray-simd`; **zero f32 in the discovery path** (audit), float only at the `TruthValue`/`Triple` serialization edge. Bitwise-deterministic ⇒ joins the trunk; the nondeterminism firewall + D-ARM-9 IPC rationale are moot. SIMD target-cpu caveat: real AVX-512/AMX kernels need `-C target-cpu=native`/`x86-64-v4`. v1 (autoencoder) superseded per the user's no-float directive. |
648-
| D-ARM-14 | **Splat-codebook oracle + Wikidata skeleton discovery** — wire the certified jc splat codebook into aerial as the `CodebookDistance` oracle, discover OWL/DOLCE+ SPO HHTL classes + basins, drive the `wikidata-hhtl-load.md` deterministic compression (skeleton + basins + CAM-dedup + thin rows). | lance-graph-arm-discovery::aerial + crates/jc + wikidata loader | ~? | MED | **In progress** | **Phase 1 (branch `claude/jolly-cori-clnf9-darm14`):** the two aerial-side seams — `aerial::TopKDistance` (the sparse splat-top-k `CodebookDistance` the 10000² BLASGraph splat actually emits; top-k per node, not a dense table) + `aerial::ontology::{DolceCategory, OntologyProjector}` (DOLCE 4-facet skeleton → `rdfs:subClassOf`/`rdf:type` SPO). End-to-end test: splat top-k → aerial discovers `occupation→DOLCE-class` → projects the skeleton triple. 41/41 + clippy clean (default + `ndarray-simd`), zero-dep. Float still OFFLINE in jc only (`ewa_sandwich`+`sigma_codebook_probe` ρ=0.9973+`pflug` Lε); aerial online path integer. **Remaining:** real jc/blasgraph splat producing the lists; Wikidata loader; gated on D-ARM-7 (`jc::jirak`). Map: `splat-codebook-aerial-wikidata-compression.md`; E-ARM-JC-RESOLVES-BOTH-SEAMS. |
648+
| D-ARM-14 | **Splat-codebook oracle + Wikidata skeleton discovery** — wire the certified jc splat codebook into aerial as the `CodebookDistance` oracle, discover OWL/DOLCE+ SPO HHTL classes + basins, drive the `wikidata-hhtl-load.md` deterministic compression (skeleton + basins + CAM-dedup + thin rows). | lance-graph-arm-discovery::aerial + crates/jc + wikidata loader | ~? | MED | **In progress** | **Phase 1 (branch `claude/jolly-cori-clnf9-darm14`):** the two aerial-side seams — `aerial::TopKDistance` (the sparse splat-top-k `CodebookDistance` the 10000² BLASGraph splat actually emits; top-k per node, not a dense table) + `aerial::ontology::{DolceCategory, OntologyProjector}` (DOLCE 4-facet skeleton → `rdfs:subClassOf`/`rdf:type` SPO). End-to-end test: splat top-k → aerial discovers `occupation→DOLCE-class` → projects the skeleton triple. 41/41 + clippy clean (default + `ndarray-simd`), zero-dep. Float still OFFLINE in jc only (`ewa_sandwich`+`sigma_codebook_probe` ρ=0.9973+`pflug` Lε); aerial online path integer. **Phase 2 (branch `claude/jolly-cori-clnf9-darm14-p2`):** the proposer→hub landing. (a) `OntologyProjector::dolce_id()` — emits the stable `dolce_id` u8 (= basin nibble) the hub routes by, NOT a hardcoded IRI (the OD-DOLCE alignment #442 deferred to this lane; basin ordering already matches `dolce_id::{ENDURANT=0..}`). (b) gated worked example `tests/wikidata_landing.rs` (`--features landing`, opt-in `dev-dep lance-graph-contract` à la jc): splat top-k → aerial recovers all 6 DOLCE basins → lands each on the REAL merged `contract::hhtl::NiblePath` (16ⁿ router, #442) + `class_view::FieldMask` (+`inherit`) + `hash::fnv1a_str` signature. CONFIRMED on data: corpus collapses 6→5 families (film≡tv-series twin), human⊂person inherits path + mask-as-delta, basin preserved. 42/42 default (zero-dep) + landing test green, clippy clean both. Rebased onto post-#442 main; the inline-nibble stand-in swapped for the real `NiblePath`. **Remaining:** real jc/blasgraph splat producing the lists; the ndjson→`WikidataClass` loader; gated on D-ARM-7 (`jc::jirak`). Map: `splat-codebook-aerial-wikidata-compression.md`; E-ARM-JC-RESOLVES-BOTH-SEAMS. |
649649
| D-ARM-SYN-1 | Add `Implies`/`CoOccursWith` to `ruff_spo_triplet::Predicate` closed vocabulary (+ `Provenance` tier) so ARM rules load through the same `parse_triples` ndjson path as the static extractor | ruff/ruff_spo_triplet | 40 | MED | **Queued** | council-gated (deliberate ontology change); blocks SYN-2; see `.claude/knowledge/aerial-arm-ruff-spo-codegen-synergies.md` §1 |
650650
| D-ARM-SYN-2 | `CandidateRule → ruff_spo_triplet::ModelGraph` adapter so the Aerial runtime-data leg joins the `ruff_python_dto_check` static-AST leg in one graph before `expand()` | lance-graph-arm-discovery + ruff_spo_triplet | 120 | MED | **Queued** | depends on SYN-1; synergy doc §2 |
651651
| D-ARM-SYN-3 | Calibrate `ProvenanceTier::ArmDiscovered` `(f,c)` below the `op_emitter` ratification gate + below static `Inferred (0.85,0.75)` so un-ratified ARM truth is council-visible but codegen-filtered | lance-graph-contract + lance-graph-ontology::op_emitter | 30 | MED | **Queued** | depends on D-ARM-1 + SYN-1; synergy doc §3/§4 |

0 commit comments

Comments
 (0)