Skip to content
18 changes: 11 additions & 7 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,17 @@
# CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS, and `make publish` in
# python/ sets RUSTFLAGS only on an x86_64 host. Note that the per-target
# variable is JOINED with this file's entry, with `native` last (measured), so
# it cannot pin a build that sees this file. Anything below v3 still SIGILLs on the
# `simd_avx2` intrinsics, so never build with no target-cpu at all. A build with
# no target-cpu takes ndarray's AVX2 arm, and that arm is kept only as the
# validation oracle. Real builds go through the ndarray polyfill at a declared
# tier once its arms are validated against that oracle: `native` for local and
# host-bound builds, the explicit x86-64-v4 / `sapphirerapids` tier above for
# shipped artifacts.
# it cannot pin a build that sees this file. Below v3 ndarray has two real
# arms, each selected only by an explicit target-cpu: AVX without AVX2
# (`simd_avx.rs`, ndarray `.cargo/config-avx.toml`) and x86-64-v2 (SSE4.2, no
# AVX; `simd_scalar.rs`, `.cargo/config-v2.toml`). A build with NO target-cpu
# gets neither: it compiles ndarray's AVX2 arm, which needs an AVX2 CPU, and
# ndarray's startup `cpu_guard` refuses to start it on a CPU without AVX2
# instead of letting it SIGILL. That arm is kept only as the validation
# oracle, so do not ship a build with no target-cpu. Real builds go through
# the ndarray polyfill at a declared tier once its arms are validated against
# that oracle: `native` for local and host-bound builds, the explicit
# x86-64-v4 / `sapphirerapids` tier above for shipped artifacts.
#
# The two crypto cfgs ndarray's config also carries (`curve25519_dalek_backend`,
# `poly1305_force_soft`) are deliberately NOT repeated: neither crate is in
Expand Down
6 changes: 5 additions & 1 deletion .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
## 2026-10-16 — synergy map since #1579 (entry `2026-10-16-synergy-map-since-1579.md`, in PR)

- Revises every point of the #1579 map against merges #1580–#1591. D2 (preimage op) closed as a violation; L6 closed (#1544 closed); X17 and D8 partly closed by #1582. Decisions recorded: 43..45 amended to orientation in the contract, activation becomes a row field, OpenPSI modulators only into qualia.

## 2026-10-16 — main after #1591 (merged `e53f2325`); ledger revision (c) in PR

- **On main since #1581:** #1582 (doc drift, OpenCog oracle-only decision), #1584/#1585 (D-ASM follow-ups queued), #1586/#1587 (WCOJ map and probes; `seek_from`, `is_alpha_acyclic`), #1588 (CATS three-valued binding), #1589 (arc catch-up), #1590 (gather designs bannered as violations), #1591 (`deepnsm_v2::wire`: every CE64 field of a parsed triple, Gadamer gate first; plan D-CGW-0..14).
- **In PR:** `LEDGER-REVISION-2026-10-16c.md`; arc entries for #1549 and #1581.
- **Flagged:** bits 50..52 now carry two opposite encodings in code (pyramid 7 → 0 vs `with_novelty_wisdom` 1 → 7).

## 2026-10-16 — CE64 grammar wiring (branch `ccr-9f3b8075-74u47l-ce64-grammar-wiring`, in PR)
## 2026-10-16 — CE64 grammar wiring (#1591, merged `e53f2325`)

- `deepnsm-v2::wire` writes every CausalEdge64 field of a parsed triple from a named source, with the Gadamer gate (`contract::revision`) deciding before anything is counted; W is the statement's Markov arc in a `WitnessTable<64>`; 43..45 is the Haspelmath dative-map function; loci carry Antecedent, TEKAMOLO, Quorum and Contradiction pointers. Probe: `lance-graph-quack/examples/wired_reasoning_probe.rs`. Plan: `ce64-grammar-wiring-v1.md` (D-CGW-0..12).
- Contract inventory delta: none (consumes `revision`, `witness_table`, `causal_witness`, `epistemic_state5`). `deepnsm-v2` gains `wire` and `DativeFunction::ALL`; `causal-edge` gains `activation` / `novelty_wisdom` accessors.
Expand Down
7 changes: 7 additions & 0 deletions .claude/board/PR_ARC_INVENTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 2026-10-16 — lance-graph PR #1591 (merged `e53f2325`, branch `ccr-9f3b8075-74u47l-ce64-grammar-wiring`, head `cd1b1b3c`, 24 commits incl. a merge of main) — deepnsm-v2 wire: every CE64 field of a parsed triple from its source, Gadamer gate first; plan D-CGW-0..14

- **Added:** `deepnsm_v2::wire` (verses → rows: F/C from the arm, Pearl from TEKAMOLO, 43..45 = Haspelmath dative function, W = the statement's Markov arc in `WitnessTable<64>`, epistemic state from the support balance, loci Antecedent / TEKAMOLO / Quorum / Contradiction); the Gadamer gate (`contract::revision`) admits before anything is counted; `DativeFunction::ALL`; `causal-edge` `activation` / `novelty_wisdom` accessors; probe `lance-graph-quack/examples/wired_reasoning_probe.rs` (741 rows, 0 rule violations); plan `ce64-grammar-wiring-v1.md`; entry `2026-10-16-grammar-coordinates-annotation-wiring.md` §10–11.
- **Locked:** each CE64 field has one global meaning held in the `causal-edge` contract (the versioned reading binding was withdrawn the same day); 46..49 stays the inference mantissa.
- **Deferred / open:** wire edges stay in the probe until D-CGW-1 lands; activation is written into 46..49 today, against the mantissa rule (D-CGW-9); D-CGW-2..14.
- **Confidence:** deepnsm-v2 tests pass (wire 27 tests; 11 disable runs red, including the two Codex P2 fixes in `2898f124`); causal-edge tests pass; clippy clean on the lib and the quack examples.

## 2026-10-16 — lance-graph PR #1581 (merged `95c0d104`, branch `ccr-b2e415d9-4jfvyk`, head `67d0698a`, 3 commits) — recovery ledger deduplicated against #1579; DOC-WIRE (2); N21

- **Added:** `.claude/research/2026-10-recovery/LEDGER-UPDATE-2026-10-16b.md`; dated corrections on three docs that still read bits 59..60 as two readings (`causal-plane-inventory.md`, `TYPE_DUPLICATION_MAP.md`, `causaledge64-mailbox-rename-soa-v1.md`); entry `2026-10-16-ledger-update-dedup-1579.md`; arc entry for #1578.
Expand Down
19 changes: 15 additions & 4 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,31 @@ Plan: `.claude/plans/ce64-grammar-wiring-v1.md`. Entry: `entries/2026-10-16-gram
| D-id | scope | status | gate / falsifier |
|---|---|---|---|
| **D-CGW-0** | `deepnsm-v2::wire`: CE64 0..63 from named sources; Gadamer gate before counting; W = Markov arc in `WitnessTable<64>`; activation = update-caused frequency change; 43..45 = Haspelmath function; Antecedent / TEKAMOLO / Quorum / Contradiction loci; qualia register; `wired_reasoning_probe` | In PR | 229 tests; probe 741 rows, 5 rules, 0 violations; disable runs red per entry §7–§11 |
| **D-CGW-1** | one global meaning per CE64 field, held in the `causal-edge` contract (no per-tenant readings; superseded the same day); amend 43..45 to orientation with all triad readers migrated | Queued | one code table shared by accessor, writer and readers; field isolation 43..49. **Gate:** wire edges stay in the probe until this lands |
| **D-CGW-1** | one global meaning per CE64 field, held in the `causal-edge` contract (no per-tenant readings; superseded the same day); amend 43..45 to orientation with all triad readers migrated | Queued — approved 2026-10-16 as its own test-first PR (readers census: synergy map since #1579 §4 S8; also `syllogize`/`execute`, ledger N1) | one code table shared by accessor, writer and readers; field isolation 43..49. **Gate:** wire edges stay in the probe until this lands |
| **D-CGW-2** | frequency-ranked default reading (COCA, DeReKo) + antecedent-tested promotion of the alternative (relative pronoun) with agreement | Queued | `der Mann, der …` promoted; `der Mann gab der Frau …` silent; English `that` promoted without a COCA Rel tag |
| **D-CGW-3** | case morphology decides argument order in the parser (`Den Hund biss der Mann`) | Queued | OVS flips, SVO unchanged, syncretic case unresolved; UD German GSD dev measured |
| **D-CGW-4** | counterfactual lanes: `CausalCandidate` → `Causes` only with `IncreaseEligible` ∧ `Necessary` | Queued | necessary / dispensable / not-run triple |
| **D-CGW-5** | concessive markers as gate resistance and refuted implication | Queued | marked vs unmarked contest |
| **D-CGW-6** | witness arcs across 63-row cohorts (196/741 probe rows broke) | Queued | arc walk across cohorts; `arc_breaks` 0 for the fixture |
| **D-CGW-7** | loci 24 → 32 × i4 over the full 16-byte lane | Queued | envelope audit; field isolation over 32 slots |
| **D-CGW-8** | S/P/O identity as 8 × u8:u8 rails beside the u8 palette | Queued | decision: palette stays in 0..23 |
| **D-CGW-9** | 46..49 stays the ISA inference mantissa (law); activation moves out of the edge until the contract gives it a field | Queued | every wire edge decodes through the mantissa decoder as the inference it states |
| **D-CGW-9** | 46..49 stays the ISA inference mantissa (law); activation moves out of the edge until the contract gives it a field | Queued — approved 2026-10-16: activation becomes a row field | every wire edge decodes through the mantissa decoder as the inference it states |
| **D-CGW-10** | `ce64-semantic-upper-half.md`: the grammar reading of 43..45 declared beside the triad | Queued | doc only |
| **D-CGW-11** | Judicantis and multifunctional forms without a lane: measure before adding context rules | Queued | measurement on a corpus with attested forms |
| **D-CGW-12** | word → qualia index source (WordNet × Jina) | Deferred (operator) | — |
| **D-CGW-13** | all oracles (Java OpenNARS, ONA, MeTTa, OpenCog, MORK) read out on the same CE64 fields | Queued | D-ORACLE readout |
| **D-CGW-14** | OpenPSI modulators as a qualia device profile into the #1571 PCS (demands stay goals) | Queued | — |
| **D-CGW-14** | OpenPSI modulators as a qualia device profile into the #1571 PCS (demands stay goals) | Queued — approved 2026-10-16: modulators only | — |

## D-ARG — AriGraph onto addresses: strings prohibited → codebook labels → basins → SPOFC (2026-10-16)

Order decided 2026-10-16; each step blocks the next. Finding: synergy map since #1579 (AriGraph keys `entity_index` / `spatial_edges` by `String` and turns a label's FNV hash into an identity via `label_fp`; no `NodeGuid`, HHTL or CE64 anywhere in it).

| D-id | scope | status | gate / falsifier |
|---|---|---|---|
| **D-ARG-1** | strings prohibited: no `String` as a key or address in AriGraph (`EntityVocab`, `TripletGraph::entity_index`, `spatial_edges`, `label_fp` hash-as-identity) | Queued — decided 2026-10-16 | a test fails if any AriGraph key or address type holds a `String`; text survives only as a label view |
| **D-ARG-2** | codebook labels: every entity, relation and place resolves once through the label codebook to an id; parsing goes through the codebook | Queued (after D-ARG-1) | same graph built from text and from ids is equal; an unknown label is refused, never hashed |
| **D-ARG-3** | basins: `EpisodicBasins` keyed by codebook ids, rows given NodeGuid addresses through `deepnsm-v2` `promote::key_at`, real Cam96 `self_code` instead of rung-0 zeros | Queued (after D-ARG-2) | every basin row has a V3 key (V1 refused); `self_code` non-zero and reproducible from its members |
| **D-ARG-4** | SPOFC: AriGraph facts written as CE64 S/P/O (0..23, palette indices under the row's classid) plus F/C (24..39) from the basins | Queued (after D-ARG-3 and D-CGW-1) | facts decode back to the same S/P/O ids and F/C; no field outside 0..39 is written by this step |

## Catch-up (2026-10-16) — D-ids named by merged PRs that had no row

Expand Down Expand Up @@ -84,7 +95,7 @@ Council 2026-10-16: `metta-datalog-assimilation-v1-council-v3.md` is the ratifie
| **D-ASM-9** | `lance-graph-das` attention-broker probe: `w = edge.count / node.count`, rent, spread over the D-ASM-2 hop | Queued (not authorized; gated on D-ASM-2; crate not created) | attention values == DAS broker on one fixture; crate created only when the probe runs |
| **D-ASM-10** | MORK as fourth oracle (Hyperon · PeTTa · datafrog · MORK), built as a separate binary outside the workspace, results only | Queued (not authorized) | MORK answers recorded beside the other three, divergences recorded, never averaged |
| **D-ASM-11** | **⛔ VIOLATION — GATHER. DO NOT BUILD. CORRECT: D-HOLO-H14c / H14d.** Leapfrog probe on a cyclic 3-way join, split into Q-E (exact existence mask where the semijoin chain over-approximates) and Q-A (binding enumeration emitting keyed counts, D-ASM-3's missing carrier), written from the paper (Veldhuizen, *Leapfrog Triejoin*, arXiv 1210.0481v5, ICDT '14); the zipper shape is the probe's question, not a premise — arm A: leapfrog triejoin over the existing sealed ordered lanes, with aperture depth as `open`/`up` and a galloping `seek` from the cursor (the paper's amortized O(1 + log(N/m)); today's `bound_aperture` is a fresh `partition_point`); cleanest, already integrated; arm B: leapfrog triejoin over a prefix-shared trie zipper (PathMap-like), studied as prior art to learn from (worst-case optimal on cyclic joins, which a semijoin chain is not); the arm that wins on cost per element and integration is adopted, and what B teaches (variable order, prefix sharing, seek pattern) is carried into A either way | Queued (not authorized; gated on D-ASM-2). Pre-work in #1587: F4 fixture, bag oracle, `seek_from` (P-1), GYO (P-3), P-7 insufficiency shown (entry `2026-10-16-wcoj-probes-1-3.md`); closing atoms split into D-ASM-11A/B | Q-E: mask == datafrog's SET of head rows; Q-A: == datafrog as a BAG; per-element cost on the v4 arm only; margin and lessons pre-registered before the run; findings from B recorded even when A wins |
| **D-ASM-11A** | **⛔ VIOLATION — GATHER. DO NOT BUILD. CORRECT: D-HOLO-H14c / H14d.** Closing atom for functional relations: `Pred::EqU32ViaLane` + ndarray `eq_u32_via_lane_to_mask` (spec `.claude/plans/wcoj-closing-atoms-v1.md` §2) | Spec ratified 2026-10-16; authorized 2026-10-16 (ungated from D-ASM-2) | G1 exact mask == datafrog; G2 op count fixed and < the disjunction; G5-A disables |
| **D-ASM-11A** | **⛔ VIOLATION — GATHER. DO NOT BUILD. CORRECT: D-HOLO-H14c / H14d.** Closing atom for functional relations: `Pred::EqU32ViaLane` + ndarray `eq_u32_via_lane_to_mask` (spec `.claude/plans/wcoj-closing-atoms-v1.md` §2) | Spec ratified 2026-10-16; authorized 2026-10-16 (ungated from D-ASM-2); ndarray #364 closed unmerged 2026-10-16 | G1 exact mask == datafrog; G2 op count fixed and < the disjunction; G5-A disables |
| **D-ASM-11B** | **⛔ VIOLATION — GATHER. DO NOT BUILD. CORRECT: D-HOLO-H14c / H14d.** Closing atom for n:m relations: `MaskOp::RunsMeet` (gated, beside `Gather`) + ndarray `runs_meet_under_to_mask` + lgj-abi status arm (spec §3) | Spec ratified 2026-10-16; authorized 2026-10-16, after D-ASM-11A | G0 fixtures; G3 edge oracle + projection; G4 elements-touched slope 1.5 ± 0.1; G5-B disables |
| **D-ASM-12** | `lance-graph-cog`: deterministic content → NodeGuid atom address, shared by the D-ASM-1b binder and the `atomspace-lance` StorageNode adapter (which calls it); replaces the Rocks `n@`/`l@`/`a@`/`h@` indexes | Queued (not authorized; crate not created) | same content → same address from both callers; no string or hash index reachable from a row; adapter carries no layout of its own |
| **D-ASM-13** | `lance-graph-cog` thinking API for OpenCog callers: a facade over existing algebra only — NAL (`lance-graph-nal`, global core methods), ONA-shaped term table + rule catalogue (D-ASM-5/6), R2IL procedures, relalg IR, all lowering to mask-risc | Queued (not authorized; gated on D-ASM-5/6 and D-ASM-12) | answers == OpenCog (PLN / ONA) on the same inputs, run outside the workspace; no new opcode, interpreter or executor (guard: every entry point resolves to an existing NAL/R2IL/relalg call) |
Expand Down
Loading
Loading