Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .claude/board/ISSUES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
## ISS-SUPERVISOR-RESPAWN-BACKOFF-NOT-APPLIED — a crashed consumer actor is respawned at once and the respawn is rescheduled forever (2026-10-13)

**Status:** OPEN. **Basis:** VERIFIED-IN-CODE (`crates/lance-graph-supervisor/src/supervisor.rs`, `RespawnG` arm); found by the codex review of #1536.

- On `ActorTerminated` the supervisor casts `RespawnG { crash_count: n }`. The arm computes the backoff delay, spawns a task that sleeps that delay and casts `RespawnG { crash_count: 0 }`, and then calls `spawn_consumer_actor` right away (the comment says the delayed cast is a retry "if we need to").
- The delayed `RespawnG` runs the same arm: another immediate spawn, another delayed cast. So the backoff never delays the first respawn, the crash count is reset to 0 on every round, and each round schedules the next one 100 ms later, whether or not the child is alive.
- The `>10` escalation guard cannot trip, because the count it reads is reset.
- What closes it: the delayed cast becomes the only respawn path (no immediate spawn), the count is carried rather than reset, and the arm does nothing when the slot is already alive. Needs a test that crashes a child twice and checks one spawn per crash after the delay.

## ISS-CLASSID-READ-MODE-IS-A-SECOND-RESOLUTION-PATH — the `0x1000` V3 marker still selects the reading (2026-10-10)

**Status:** OPEN. **Basis:** VERIFIED-IN-CODE; DECISION by operator 2026-10-10 (the V3 marker is a fossil; only `hotplug.rs` and the slab metadata envelope decide whether a slab is `Facet96` (32 + 96) or `Register128` (128, classid via SPOG/plug)). Record: `entries/2026-10-10-classid-layout-ruling.md`, plan `cross-glove-business-parity-v1.md` §C.9.3.
Expand Down
4 changes: 3 additions & 1 deletion .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 2026-10-13 — main after #1505, #1506, #1507–#1509, #1514, #1516, #1518, #1520, #1523, #1524, #1525, #1526, #1529, #1530, #1531, #1534 (merged)
## 2026-10-13 — main after #1505, #1506, #1507–#1509, #1514, #1516, #1518, #1520, #1523, #1524, #1525, #1526, #1529, #1530, #1531, #1534, #1536, #1537 (merged)

- **On `main`, live:** `.cargo/config.toml` defaults to `-Ctarget-cpu=native` with `config-v3.toml` as the portable baseline and `debug = 0` everywhere (#1505); `compute_dag_kahn` checks all 256 field positions (#1506); R2IL `MIN`/`MAX` lowering onto mask-risc (#1518, the part outside glove-parity).
- **Merged then withdrawn by #1524 (D-CMR-RESET):** the class-method layer of `lance-graph-glove-parity` (`method`, `call`, `decl`, `gremlin`, `awareness`; #1507, #1508, #1509, #1514, #1516, #1518, #1520). Prior state: `backup/session-011BMJ-2026-10-12`. Inventory: entry `2026-10-12-session-reset-inventory.md`.
Expand All @@ -7,6 +7,8 @@
- **On `main` (#1529, merged `2d33bb0`):** D-PROD-V4. `Dockerfile.avx512` builds `sapphirerapids`, `Dockerfile` builds `native`, the other images and the wheel build `x86-64-v4`; `linux-build-v4` compiles both tiers in CI without running them.
- **On `main` (#1530 `c864721`, #1531 `86e3174`):** the thinking-engine, cognitive-stack and symbiont images build on `rust:1.99.0-bookworm` against ndarray `master`; the thinking-engine images build v4 with `--target <host triple>`.
- **On `main` (#1534, merged `0a6708b`):** `lance-graph-r2il` is a workspace member; r2il, `lance-graph-nal` and `r2il-mask-abi-probe` take OGAR by git `main`, so the graph holds one `ogar-loco` and one `lance-graph-contract` (D-FOLD-CORE-a).
- **On `main` (#1537, merged `befbf1d`):** core `lance-graph` depends on mask-risc, Quack and R2IL by default and exposes them as `lance_graph::fold` (D-FOLD-CORE-b). NAL stays in `crates/lance-graph-nal` (D-FOLD-CORE-c dropped).
- **Docs only (#1536, merged `2b28a19`):** outer-membrane graph lab, epoch-indexed temporal graph agenda, and the ONA → NAL/R2IL fold-method program (W3–W9). Proposals; nothing in them is built by that PR. The supervisor's restart backoff is not applied (`ISS-SUPERVISOR-RESPAWN-BACKOFF-NOT-APPLIED`).
- **CI (#1526, merged `abc0a1f`):** the native default plus `rust-cache` reused AVX-512 artifacts on runners without them (SIGILL in `dir-sim log in Lance`). `native` is now written out as each runner's exact feature list, and the cache is keyed to it.
- **Rules carried from this session (operator):** classid-dependent methods go through the existing `hotplug.rs` plug-and-play; NAL/NARS operations are global core methods (no classid check, no plug, no `BeliefClass`); internal pins are forbidden (the v3 pins in the Dockerfiles and wheel build were replaced in #1529).

Expand Down
14 changes: 14 additions & 0 deletions .claude/board/PR_ARC_INVENTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
## 2026-10-13 — lance-graph PR #1536 (merged `2b28a19`, branch `docs/outer-membrane-graph-lab-20261013`, head `93b0993`, 5 commits) — docs: outer membrane graph lab, epoch-indexed temporal graph agenda, ONA → NAL/R2IL fold-method program

- **Added:** three proposal documents under `docs/architecture/`: `OUTER_MEMBRANE_GRAPH_LAB_VERTICAL_SLICE.md` (ownership rule, callcenter/supervisor evidence table, a falsifiable two-node one-edge vertical slice), `EPOCH_TEMPORAL_GRAPH_RESEARCH_AGENDA.md` (E01–E20 exploration questions, three time axes, T0–T6 sequence), `ONA_NAL_R2IL_FOLD_METHOD_ASSIMILATION.md` (ONA source map, W3–W9 coding waves, falsifiers). No code.
- **Locked:** ONA is a pinned oracle and a source of pure laws to reimplement, not a runtime; NAL stays its own crate over R2IL/mask-risc; decision methods stay inert until authorised. The ONA assimilation brief behind these documents is what superseded D-FOLD-CORE-c (NAL as a core module); the documents themselves only describe the crate as the starting contract (recorded under the D-FOLD-CORE decision in `STATUS_BOARD.md`).
- **Deferred / open:** written by another agent and merged with two open codex P2s; taken over and corrected in the follow-up PR: ONA links pinned to `dc4efd0` instead of `master`, and the supervisor row no longer claims restart backoff (`ISS-SUPERVISOR-RESPAWN-BACKOFF-NOT-APPLIED`).
- **Confidence:** medium; proposals grounded in code reads, two factual errors found after merge.

## 2026-10-13 — lance-graph PR #1537 (merged `befbf1d`, branch `ccr-9f3b8075-74u47l-core-fold`, head `8091f98`, 2 commits) — D-FOLD-CORE-b: core depends on mask-risc, Quack and R2IL; `lance_graph::fold`

- **Added:** `crates/lance-graph` depends on `lance-graph-mask-risc`, `lance-graph-quack` and `lance-graph-r2il` by default and re-exports them as `lance_graph::fold::{mask_risc, quack, r2il}`. `tests/fold_path.rs` runs a Quack query (two row ranges intersected, a value residual) and an R2IL count through core, each against a row loop.
- **Locked:** `Cmp::Range` is a row range on the ordered axis, not a value range; a condition on another column is a residual over the extent.
- **Deferred / open:** D-FOLD-CORE-c (NAL as a core module) dropped: the ONA brief keeps `lance-graph-nal` as the authoritative NAL crate.
- **Confidence:** high; disable run (dropping one row range) turns the Quack test red.

## 2026-10-13 — lance-graph PR #1534 (merged `0a6708b`, branch `ccr-9f3b8075-74u47l-r2il-member`, head `196eb2e`, 1 commit) — D-FOLD-CORE-a: `lance-graph-r2il` joins the workspace; OGAR by git `main`

- **Added:** `crates/lance-graph-r2il` moves from `exclude` to `members` and loses its own `[workspace]` and `[patch]` sections. It, `crates/lance-graph-nal` and `crates/r2il-mask-abi-probe` take `ogar-loco` / `ogar-r2il` from `https://github.com/AdaWorldAPI/OGAR` `main` instead of `../../../OGAR` paths. The root `Cargo.toml` patches `https://github.com/AdaWorldAPI/lance-graph` `lance-graph-contract` to the in-tree crate.
Expand Down
6 changes: 4 additions & 2 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,13 @@ Plan: `.claude/plans/gremlin-composable-algebra-v1.md`.

Decision (operator, 2026-10-13): the contract's only dependency becomes mask-risc and through it ndarray (the other session's step); `lance-graph` core depends on mask-risc, quack and R2IL by default; NAL moves into core as a module and keeps lowering through R2IL. The contract never depends on OGAR (`ogar-loco` depends on the contract).

> ⊘ **Superseded in part, 2026-10-13.** DECISION: the ONA assimilation brief given in the same session (2026-10-13) directs that "NAL stays the authoritative `lance-graph-nal` crate", so NAL does not move into core; it keeps lowering through R2IL as its own crate. SCOPE: the NAL half of the decision above only; mask-risc / quack / R2IL in core (D-FOLD-CORE-a/b) stand. BASIS: that brief, not the #1536 doc, which only describes the crate as the starting contract. REVISIT WHEN: a later decision moves NAL into core again.

| D-id | scope | status | gate / falsifier |
|---|---|---|---|
| **D-FOLD-CORE-a** | `lance-graph-r2il` becomes a workspace member; it, `lance-graph-nal` and `r2il-mask-abi-probe` take OGAR by git `main` (the `lance-graph-ogar` coordinate) instead of `../../../OGAR` paths; the root patches the contract's git URL to the member | Shipped #1534 `0a6708b` | `cargo metadata`: one `lance-graph-contract`, one `ogar-loco`, one `ogar-r2il`; tests: r2il 19, nal 8, probe 40, all green |
| **D-FOLD-CORE-b** | `crates/lance-graph` depends on mask-risc, quack and R2IL by default | In PR | core builds and tests green with the three in the default graph; `tests/fold_path.rs` runs a Quack query and an R2IL count through `lance_graph::fold` against row loops (disable run: dropping one row range turns it red, 303 vs 201) |
| **D-FOLD-CORE-c** | NAL as a module of `crates/lance-graph`; `crates/lance-graph-nal` removed; W2 tests moved unchanged | Queued | the 8 W2 tests pass unchanged in core |
| **D-FOLD-CORE-b** | `crates/lance-graph` depends on mask-risc, quack and R2IL by default | Shipped #1537 `befbf1d` | core builds and tests green with the three in the default graph; `tests/fold_path.rs` runs a Quack query and an R2IL count through `lance_graph::fold` against row loops (disable run: dropping one row range turns it red, 303 vs 201) |
| **D-FOLD-CORE-c** | NAL as a module of `crates/lance-graph`; `crates/lance-graph-nal` removed; W2 tests moved unchanged | Dropped 2026-10-13: superseded by the ONA assimilation brief's direction to keep `lance-graph-nal` as the authoritative NAL crate (see the ⊘ note under the decision above) | the 8 W2 tests pass unchanged in core |

## D-PROD-V4 — production build tiers (2026-10-13)

Expand Down
18 changes: 9 additions & 9 deletions docs/architecture/ONA_NAL_R2IL_FOLD_METHOD_ASSIMILATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,19 @@ The existing [`NalOp`](../../crates/lance-graph-nal/src/nal.rs) and R2IL procedu

## 2. ONA source mapping (what to assimilate)

**Primary upstream:** [opennars/OpenNARS-for-Applications](https://github.com/opennars/OpenNARS-for-Applications), in C under MIT license. Review and independently reimplement with source attribution; do not copy C generated dispatch tables into Rust by default.
**Primary upstream:** [opennars/OpenNARS-for-Applications](https://github.com/opennars/OpenNARS-for-Applications), in C under MIT license. Every source link below is pinned to the audited commit `dc4efd0`; `master` can change these functions. Review and independently reimplement with source attribution; do not copy C generated dispatch tables into Rust by default.

| ONA authority | Relevant C functions / behaviors | Target NAL method and fold shape | Hard semantic gate |
|---|---|---|---|
| [`src/Truth.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Truth.c) | `Truth_w2c`, `c2w`, `Revision`, `Expectation` | `TruthWeight`, `Revision`: grouped evidence moment fold / typed truth result | Independent original observation roots; right evidence horizon and rounding |
| [`src/Truth.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Truth.c) | `Truth_w2c`, `c2w`, `Revision`, `Expectation` | `TruthWeight`, `Revision`: grouped evidence moment fold / typed truth result | Independent original observation roots; right evidence horizon and rounding |
| Same | `Deduction`, `Induction`, `Abduction`, `Analogy`, `Comparison`, `Resemblance`, `Conversion`, `Negation`, intersections/unions | Pure typed truth-map methods over aligned lanes or scalar oracle | Exactly named law variant and input premise orientation |
| Same | `Truth_Projection`, `Eternalize`, time decay | `TemporalProjection`: typed clock-aware value-map, not a new clock | Compare source occurrence time / target time / eternal sentinel / decay parameter |
| [`src/Stamp.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Stamp.c) | `Stamp_make`, `Stamp_checkOverlap`, `Stamp_hasDuplicate` | `IndependentEvidence` mask / `UnionRoots` witness constructor | Never revise as independent if roots overlap or cannot be proven disjoint |
| [`src/Inference.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Inference.c) | Belief induction/intersection, event/implication revision, implication/goal deduction, revision-and-choice | `Inference::InduceTemporal` / `Derive` / `Revise`; pairing + mask + truth law + witnessed conclusion | Source and target node identities, temporality, separate witness roots, no recursive self-support |
| [`src/NAL.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/NAL.c) | `NAL_GenerateRuleTable`, premise unification, conclusion substitution/reduction | Compile declarative rule templates into **typed bound NAL methods** over existing R2IL/Quack join primitives | Grammar coverage, variable capture, term identity, multiplicity, rule applicability; refuse unknown shape |
| [`src/Cycle.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Cycle.c) | Temporal belief event selection and inference, goal-event decomposition | Pure event selection / ranking / temporal candidate predicates; produce bounded candidate handles | No second event loop, no speculative inference promoted to observation |
| [`src/Decision.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Decision.c) | Goal/implication desirability, best candidate, anticipation, negative confirmation, `^op` execution | `GoalCandidateScore`, `BestCandidate`, `AnticipationProbe` → **inert proposed action** | Actual effects only via existing Rubicon, RBAC, capability, freshness, receipt and feedback checks |
| [`src/Memory.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Memory.c) and priority queue | Concept activation, forgetting, selection pressure | Prioritization/budget as planner method over canonical SoA and existing masks | No second memory database, hidden non-deterministic reordering or copied retention mechanism |
| [`src/Stamp.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Stamp.c) | `Stamp_make`, `Stamp_checkOverlap`, `Stamp_hasDuplicate` | `IndependentEvidence` mask / `UnionRoots` witness constructor | Never revise as independent if roots overlap or cannot be proven disjoint |
| [`src/Inference.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Inference.c) | Belief induction/intersection, event/implication revision, implication/goal deduction, revision-and-choice | `Inference::InduceTemporal` / `Derive` / `Revise`; pairing + mask + truth law + witnessed conclusion | Source and target node identities, temporality, separate witness roots, no recursive self-support |
| [`src/NAL.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/NAL.c) | `NAL_GenerateRuleTable`, premise unification, conclusion substitution/reduction | Compile declarative rule templates into **typed bound NAL methods** over existing R2IL/Quack join primitives | Grammar coverage, variable capture, term identity, multiplicity, rule applicability; refuse unknown shape |
| [`src/Cycle.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Cycle.c) | Temporal belief event selection and inference, goal-event decomposition | Pure event selection / ranking / temporal candidate predicates; produce bounded candidate handles | No second event loop, no speculative inference promoted to observation |
| [`src/Decision.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Decision.c) | Goal/implication desirability, best candidate, anticipation, negative confirmation, `^op` execution | `GoalCandidateScore`, `BestCandidate`, `AnticipationProbe` → **inert proposed action** | Actual effects only via existing Rubicon, RBAC, capability, freshness, receipt and feedback checks |
| [`src/Memory.c`](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Memory.c) and priority queue | Concept activation, forgetting, selection pressure | Prioritization/budget as planner method over canonical SoA and existing masks | No second memory database, hidden non-deterministic reordering or copied retention mechanism |

**Known oracle caveats, not corner-case footnotes:**

Expand Down Expand Up @@ -143,7 +143,7 @@ Each row is a **separate coding PR** with raw engine fixtures pinned and indepen

## 7. References and decisions to preserve

- [ONA repository](https://github.com/opennars/OpenNARS-for-Applications) and [ONA truth laws](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Truth.c), [inference](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Inference.c), [rule generation](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/NAL.c), [decision machinery](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Decision.c), [evidence stamps](https://github.com/opennars/OpenNARS-for-Applications/blob/master/src/Stamp.c).
- [ONA repository](https://github.com/opennars/OpenNARS-for-Applications) and [ONA truth laws](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Truth.c), [inference](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Inference.c), [rule generation](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/NAL.c), [decision machinery](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Decision.c), [evidence stamps](https://github.com/opennars/OpenNARS-for-Applications/blob/dc4efd0abd520cdb79bf53bfa3c285ebb24f2e8a/src/Stamp.c).
- [Existing D-NALP plan](../../.claude/plans/nal-polyfill-v1.md), [NAL implementation](../../crates/lance-graph-nal/src/nal.rs), [R2IL implementation](../../crates/lance-graph-r2il/src/lib.rs), [R2IL procedures](../../crates/lance-graph-r2il/src/procs.rs).
- [Prior independent ONA/OpenNARS oracle outputs](../../.claude/knowledge/nal-recipe-audit/oracles.md); [NAL capability audit](../../.claude/knowledge/nal-recipe-audit/README.md).
- [SAG method alignment](../../.claude/plans/sag-capstone-alignment-v1.md), [ONA/Hyperon wisdom frontier](../../.claude/plans/sag-wisdom-frontier-ona-hyperon-v1.md): `ProposedMethod` is inert and must not bypass canonical authorization.
Expand Down
Loading
Loading