|
| 1 | +## [Main thread / Opus 4.7] streaming-arm-nars-discovery-v1 — integration plan + handover + #434 corrections (the upstream proposer leg) |
| 2 | + |
| 3 | +**Branch:** claude/activate-lance-graph-att-k2pHI (rebased onto origin/main post PR #434 merge) | **Files:** |
| 4 | +- `.claude/plans/streaming-arm-nars-discovery-v1.md` (+766 LOC new) — 18 sections, 12 deliverables, 10 OQs, 5 risks |
| 5 | +- `.claude/handovers/2026-05-29-2030-arm-discovery-author-to-impl.md` (+225 LOC new) |
| 6 | +- `.claude/board/INTEGRATION_PLANS.md` (prepend new section header) |
| 7 | +- `.claude/board/STATUS_BOARD.md` (new D-ARM-1..D-ARM-12 row section) |
| 8 | + |
| 9 | +**Cargo:** not invoked (per session-stability rule + this is a SPEC PR with no code changes). |
| 10 | + |
| 11 | +**D-ids:** D-ARM-1 through D-ARM-12 (**Queued**) |
| 12 | + |
| 13 | +**Outcome:** DONE. Authored the integration plan for the missing **upstream proposer leg** — ARM rule discovery over streaming runtime tabular data (20K-200K rows/window) → translator to NARS-compatible `TruthValue(f,c)` → SpoStore round-trip hypothesis test (revise / commit contradiction per The Click) → council ratification gate (Stage D = the determinism firewall) → `op_emitter` codegen consumes only ratified candidates. Two corrections proposed to PR #434's unified-SoA plan: separate `discovery_arc: [u32; D]` SoA column (D=8 default; for tracking in-flight candidate rules per row, distinct from the witness-arc that tracks committed revisions) + `discovery_origin: u8` per-row provenance byte (2 bits ProvenanceTier + 2 bits proposer-id + 4 reserved; lets council's prior-art-savant tell ArmDiscovered from Curated/Extracted at lookup time). |
| 14 | + |
| 15 | +**Paper anchors:** Karabulut, Groth, Degeler — *Neurosymbolic Association Rule Mining from Tabular Data* (arxiv 2504.19354v1, Apr 2025; ARM truth definitions in §2 map verbatim to NARS `(f,c)`; Algorithm 1 in §3.3 is the Aerial+ rule extraction the optional `arm-aerial` feature wraps via IPC). Abreu, Cruz, Guerreiro — *Ontology-Driven M2M Transformation of Workflow Specifications* (arxiv 2511.13661v1, Nov 2025; §4 "from code-centric to ontology-driven" ratifies the externalize-interpretation-not-code doctrine). The two papers BRACKET the architecture: discovery upstream, codegen downstream, SPO+NARS middle. Candidate epiphany `E-DISCOVERY-CODEGEN-BRACKET-1` (council-pending). |
| 16 | + |
| 17 | +**Iron-rule respect:** I-NOISE-FLOOR-JIRAK (mandatory Stage A threshold via D-ARM-7), I-SUBSTRATE-MARKOV (NARS revision IS the Markov trajectory; bundle math untouched), I-VSA-IDENTITIES (operates on typed `(s,p,o)` triples, never bundles content). E-SOA-IS-THE-ONLY (writes via SpoBuilder only), E-BATON-1 (Stage C emissions are batons riding existing handoff), E-INTERPRET-NOT-STORE-1 (ARM is one interpretation projection of the lossless substrate). |
| 18 | + |
| 19 | +**Plan-writing pattern:** `tee -a` chunked appends (12 chunks) per user instruction — avoids memory pressure for long-form plan writes; each chunk independently verifiable in `wc -l` post-append. Pattern documented in plan §17 decision log. |
| 20 | + |
| 21 | +**Next session entry:** Council ratification of `E-DISCOVERY-CODEGEN-BRACKET-1` + §7 corrections, then Wave 1 (D-ARM-1 + D-ARM-2 contract additions). Full sequencing in handover. |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## [Main thread / Opus 4.8] op_emitter — Phase 2 bucket-dispatch codegen (SoA → Foundry SoC) |
| 26 | + |
| 27 | +**Branch:** claude/activate-lance-graph-att-k2pHI | **Files:** |
| 28 | +- `crates/lance-graph-ontology/src/odoo_blueprint/op_emitter.rs` (+400 LOC new) |
| 29 | +- `crates/lance-graph-ontology/src/odoo_blueprint/mod.rs` (+8 lines, `pub mod op_emitter` + comment block) |
| 30 | + |
| 31 | +**Commit:** `63f3e2ca` |
| 32 | +**Tests:** 12/12 passed (`bucket_corpus_empty_input_produces_empty_vec`, `bucket_corpus_no_methods_entity_produces_empty_vec`, `bucket_corpus_groups_three_methods_into_correct_kinds`, `bucket_corpus_method_id_matches_entity_dot_method`, `emit_op_dispatch_empty_produces_valid_header_only_rust`, `emit_op_dispatch_produces_struct_and_static_for_each_kind`, `emit_op_dispatch_recipe_const_present_for_each_unique_id`, `emit_op_dispatch_deterministic_across_calls`, `emit_op_dispatch_recipe_dedup_collapses_identical_profiles`, `emit_op_dispatch_ops_sorted_by_recipe_id_then_method_id`, `kind_ord_is_injective_over_all_variants`, `kind_ord_roundtrips_via_from_ord`). Total lance-graph-ontology: 230/230 green. |
| 33 | + |
| 34 | +**D-ids:** D-ODOO-OP-1 (**Shipped**) |
| 35 | + |
| 36 | +**Outcome:** DONE. Phase 2 of the Odoo SoA → Foundry SoC pipeline. `bucket_corpus` groups `OdooStyleRecipe` corpus by semantic `OdooMethodKind` (10-variant: Compute/Inverse/Constrain/Onchange/Action/Cron/ApiModel/ApiModelCreateMulti/Override/Helper). `emit_op_dispatch` emits deterministic compilable Rust: per-unique-recipe_id `RECIPE_<HEX8>: u32` consts + per-kind `<Pascal>Op { method_id, recipe_id }` struct + `static <UPPER>_OPS: &[<Pascal>Op]` slice. Recipe dedup: identical DAtom weight vectors collapse to one `RECIPE_*` const (many-to-one method→recipe mapping preserved in the static slice). Output is zero-dep Rust — no imports needed in the emitted file; consumers write it to `OUT_DIR` and `include!()`. Deterministic by construction: buckets in declaration order, within each bucket sorted by recipe_id then method_id. |
| 37 | + |
| 38 | +--- |
| 39 | + |
1 | 40 | ## [SavantPattern / Opus 4.8] style_recipe — D-Atom interpretation step |
2 | 41 |
|
3 | 42 | **Branch:** claude/activate-lance-graph-att-k2pHI | **Files:** |
|
0 commit comments