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
32 changes: 16 additions & 16 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,29 @@ Plan: `.claude/plans/software-awareness-graph-v1.md`. No new opcode, Quack varia

| D-id | scope | status | gate / falsifier |
|---|---|---|---|
| D-SAG-1-0 | inventory: Bible work (6-lane fixture, English KJV; no 7-language graph in code), OGAR identities, dir-sim provenance, Quack/mask-risc | In PR | every row cites code or says documented-only |
| D-SAG-1-1 | typed schema + projection of prepared methods with tiers and provenance | In PR | `tests/awareness.rs` projection test; one identity, one kind |
| D-SAG-1-2 | queries A–D through Quack; compiler verdicts as edges | In PR | answers == the programs; falsifiers 1–10, each disable-verified |
| D-SAG-1-3 | H1 candidate + tier-labelled measurement; MDL measure with counterexample | In PR | `examples/awareness_loop.rs`; MDL test |
| D-SAG-1-4 | multi-hop dependency via relation carrier / factored `EqU32Via` | Queued (needs D-CMH-G1-4) | two-hop answer == closure computed from the programs |
| D-SAG-1-5 | G1 `CALLS` edges + method-reference refusals | In PR | `method_references_are_calls_edges_and_cycles_are_the_compilers`; callers via Quack; `MethodCycle` recorded, never re-derived |
| D-SAG-1-6 | persist as a Lance dataset; source revision from git; canonical body digest | Queued | reload equals projection; toolchain change keeps digests |
| D-SAG-1-0 | inventory: Bible work (6-lane fixture, English KJV; no 7-language graph in code), OGAR identities, dir-sim provenance, Quack/mask-risc | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | every row cites code or says documented-only |
| D-SAG-1-1 | typed schema + projection of prepared methods with tiers and provenance | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | `tests/awareness.rs` projection test; one identity, one kind |
| D-SAG-1-2 | queries A–D through Quack; compiler verdicts as edges | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | answers == the programs; falsifiers 1–10, each disable-verified |
| D-SAG-1-3 | H1 candidate + tier-labelled measurement; MDL measure with counterexample | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | `examples/awareness_loop.rs`; MDL test |
| D-SAG-1-4 | multi-hop dependency via relation carrier / factored `EqU32Via` | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | two-hop answer == closure computed from the programs |
| D-SAG-1-5 | G1 `CALLS` edges + method-reference refusals | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | `method_references_are_calls_edges_and_cycles_are_the_compilers`; callers via Quack; `MethodCycle` recorded, never re-derived |
| D-SAG-1-6 | persist as a Lance dataset; source revision from git; canonical body digest | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | reload equals projection; toolchain change keeps digests |

## D-CMH-G1 — Gremlin as a composable ClassId algebra (2026-10-12)

Plan: `.claude/plans/gremlin-composable-algebra-v1.md`.

| D-id | scope | status | gate / falsifier |
|---|---|---|---|
| D-CMH-G1-0 | vocabulary → algebra matrix, TinkerPop 3.7.7 | Shipped (#1508) | every row cites a test, a refusal or the missing capability |
| D-CMH-G1-1 | predicate methods + method references | Shipped (#1508) | composed `programs()` == hand conjunction; cycles, contract, cross-class refused |
| D-CMH-G1-2 | typed Gremlin steps → method body | Shipped (#1508) | == direct Quack program; both frontends == row oracle |
| D-CMH-G1-3 | Gremlin-shaped runtime declarations | Shipped (#1508) | loads after the build; effects refused at load |
| D-CMH-G1-4a | functional relation carrier: `out(rel)`, `out(rel).has`, `count()` | Shipped (#1514; ConflictingUniverse fix follows) | row loop over the text at n ∈ {1,64,65,4097}; 6 disable runs red; R2IL refuses (no `GATHER`) |
| D-CMH-G1-4b | edge table as the anchor (`E()`, M:N one hop, `outE/inV`) + `Fold::Distinct` (`out(rel).dedup().count()`) | In PR | bag and set == row loop over the text at n ∈ {1,64,65,4097}; unordered key lane refused (`LaneNotOrdered`); 7 disable runs red |
| D-CMH-G1-4 | rest: a second hop (blocked on the chained-hop decision), `V(parent).in(rel)` spelling, `bothE` | Queued | — |
| D-CMH-G1-5 | FirstOfRun | Queued | insufficiency proof first; Quack + R2IL vs independent oracle |
| D-CMH-G1-6 | ordered `I32` conditions + `MIN`/`MAX` folds as method steps; R2IL `MIN`/`MAX` wired | In PR | both frontends == row loop incl. empty selection; 8 disable runs red |
| D-CMH-G1-0 | vocabulary → algebra matrix, TinkerPop 3.7.7 | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | every row cites a test, a refusal or the missing capability |
| D-CMH-G1-1 | predicate methods + method references | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | composed `programs()` == hand conjunction; cycles, contract, cross-class refused |
| D-CMH-G1-2 | typed Gremlin steps → method body | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | == direct Quack program; both frontends == row oracle |
| D-CMH-G1-3 | Gremlin-shaped runtime declarations | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | loads after the build; effects refused at load |
| D-CMH-G1-4a | functional relation carrier: `out(rel)`, `out(rel).has`, `count()` | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | row loop over the text at n ∈ {1,64,65,4097}; 6 disable runs red; R2IL refuses (no `GATHER`) |
| D-CMH-G1-4b | edge table as the anchor (`E()`, M:N one hop, `outE/inV`) + `Fold::Distinct` (`out(rel).dedup().count()`) | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | bag and set == row loop over the text at n ∈ {1,64,65,4097}; unordered key lane refused (`LaneNotOrdered`); 7 disable runs red |
| D-CMH-G1-4 | rest: a second hop (blocked on the chained-hop decision), `V(parent).in(rel)` spelling, `bothE` | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | — |
| D-CMH-G1-5 | FirstOfRun | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | insufficiency proof first; Quack + R2IL vs independent oracle |
| D-CMH-G1-6 | ordered `I32` conditions + `MIN`/`MAX` folds as method steps; R2IL `MIN`/`MAX` wired | Withdrawn 2026-10-12 (backup `backup/session-011BMJ-2026-10-12`; see entry session-reset-inventory) | both frontends == row loop incl. empty selection; 8 disable runs red |

## D-NALP — `NAL::narsese()` polyfill over R2IL procedures and mask-risc (2026-10-12)

Expand Down
56 changes: 56 additions & 0 deletions .claude/board/entries/2026-10-12-session-reset-inventory.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# 2026-10-12 — Session reset: method layer moved to backup (D-CMR-RESET)

**Status:** DONE (removal); the rebuild is OPEN.

**Finding:** the class-method layer built on 2026-10-12 was a second algebra
beside the existing folds, not a binding over them, and it was slower than a
scalar row loop: `billable_hours` measured 430–480 µs per call against 283 µs
for the row loop (1,048,576 rows, AVX-512, release). Its hops were
foreign-key reads; the graph has none. Everything here is moved to backup and
rebuilt.

## Where the old state lives

| repo | branch | what |
|---|---|---|
| lance-graph | `backup/session-011BMJ-2026-10-12` | `main` at `8ae5bce4`, with the whole method layer |
| lance-graph | `backup/session-011BMJ-2026-10-12-chain2` | #1522 (`GatherChain`, `Filter::Chain`, two-hop glove) |
| lance-graph | `backup/session-011BMJ-2026-10-12-sagfix` | #1519 (SAG reprojection fixes) |
| lance-graph | `backup/session-011BMJ-2026-10-12-capstone` | #1523 (SAG docs capstone) |
| ndarray | `backup/session-011BMJ-2026-10-12` | `master` at `e726f98`, with `mask_gather_chain_u32` (#358) |

## Removed

| item | where | why |
|---|---|---|
| `method.rs`, `call.rs`, `decl.rs`, `gremlin.rs`, `awareness.rs` | `crates/lance-graph-glove-parity/src` | own `MethodBody` algebra, lowered per call through `Filter::cmp` over value lanes with fresh scratch (`run_quack`), no `Compiled`, no `lower_fused`, no resident planes |
| `Relation { fk }`, `ForeignLane` hops, `Cond::Reaches/Via`, edge-table anchor, `Fold::Distinct` | `method.rs` | foreign-key model; a hop is a coordinate range, not a key read |
| SAG graph (`Vec<Edge>`, `retain`, `HashSet`) | `awareness.rs` | O(edges) per operation; built on the removed method layer |
| 10 test files, 2 method fixtures, 4 examples | `crates/lance-graph-glove-parity/{tests,examples}` | test the removed code |
| mask-risc `GatherChain`, Quack `Filter::Chain` | #1522 (not merged) | per-row chained key reads |
| `mask_gather_chain_u32[_under]`, `ChainHop`, `ChainTest` | ndarray (#359 removes) | same |
| `lance-graph-r2il` dependency, OGAR checkout in `glove-parity.yml` | crate `Cargo.toml`, workflow | only the method layer needed them; both restored to their state before this session |

## Kept, and why

| item | why |
|---|---|
| `basis.rs`, `tests/authority.rs`, `tests/canonical_front.rs` | another session's work (D-XGP-1/2); untouched, tests green |
| r2il edits: every fold reads a resident plane as its mask (`8d5a36fb`); MIN/MAX and ordered-i32 procedures (`964a95c5`); declarative bodies (`0dbb6b52`, `b61f62fa`) | woven into r2il's own procedure surface; reviewed in the rebuild, not reverted blind |
| contract: compute DAG reads all 256 field positions (`6a83f99f`) | a correctness fix in `class_view.rs`, independent of the method layer |
| build: native target-cpu, debug 0, x86_64 pinned to v3 for wheels (`5cfc8453`, `12cdfde9`) | build configuration, not a primitive |
| NAL recipe audit, CE64 plateau, nal-polyfill plan, planner revision/receipt probes | research and oracle tests, no query path |

## The rebuild (D-CMR)

A class method is a binding `classid × WideFieldMask → an existing fold`: one
`Compiled` mask-risc program over resident planes and coordinate ranges
(`Lowering::Range`, ternlog fusion, the fold terminals, `CountKeyRunsU32`,
Quack `lower_fused`, `fold_ranges`, `prefix_*`). A call resolves the binding
and runs the compiled program; it does not lower, allocate or interpret. Chained
hops are coordinate-range intersections inside the same program. A fold that
does not exist is reported as a gap in the fold catalogue, not built in the
method layer.

OPEN: #1523 anchors `ProposedMethod` on `awareness::Candidate`, which this
reset removes; the anchor moves to the rebuilt binding.
3 changes: 2 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately
opposite directions; the stranding this convention prevents shows up in
exactly one of them, never both.

319 entries, 2026-08-06 .. 2026-10-12.
320 entries, 2026-08-06 .. 2026-10-12.

| date | entry id | finding | file |
|---|---|---|---|
| 2026-10-12 | `D-SAG-1` | | [2026-10-12-software-awareness-graph.md](2026-10-12-software-awareness-graph.md) |
| 2026-10-12 | `D-CMR-RESET` | method layer was a second algebra beside the folds and slower than a row loop (430–480 µs vs 283 µs); moved to backup, rebuild as bindings over existing folds | [2026-10-12-session-reset-inventory.md](2026-10-12-session-reset-inventory.md) |
| 2026-10-12 | `D-CMH-G1-6` | | [2026-10-12-ordered-conditions-and-extrema.md](2026-10-12-ordered-conditions-and-extrema.md) |
| 2026-10-12 | `opencog-pln-entropy-research-map` | Source inventory and falsifiable PLN/ECAN/Shannon/Moore attention comparison: entropy target, evidence overlap, graph projection, resource fairness | [2026-10-12-opencog-pln-entropy-research-map.md](2026-10-12-opencog-pln-entropy-research-map.md) |
| 2026-10-12 | `nars-self-evidence-literature` | NARS internal trace versus evidence, Jøsang dependent/independent fusion and fission, and the snapshot-stable fold assumption; source-grounded red tests for merged #1496 | [2026-10-12-nars-self-evidence-literature.md](2026-10-12-nars-self-evidence-literature.md) |
Expand Down
2 changes: 2 additions & 0 deletions .claude/plans/gremlin-composable-algebra-v1.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# gremlin-composable-algebra-v1 — Gremlin steps as typed building blocks of ClassId methods (D-CMH-G1)

> **⊘ WITHDRAWN 2026-10-12.** The code this plan describes was removed from main and kept on `backup/session-011BMJ-2026-10-12`. It built class methods as a second algebra beside the existing folds, lowered per call over value lanes, and modelled hops as foreign-key reads. See `.claude/board/entries/2026-10-12-session-reset-inventory.md`.

> **Status:** MEASURED for the slice in §2 (code: `crates/lance-graph-glove-parity/src/{method,gremlin,decl}.rs`,
> tests `tests/{compose,gremlin}.rs`). The vocabulary matrix (§4) is ANALYSIS against code and tests,
> one row per step family. Stacked on #1507 (runtime declarations); independent of #1506.
Expand Down
2 changes: 2 additions & 0 deletions .claude/plans/software-awareness-graph-v1.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# D-SAG-1 — Software-awareness graph: the methods, programs and evidence of lance-graph as graph rows

> **⊘ WITHDRAWN 2026-10-12.** The code this plan describes was removed from main and kept on `backup/session-011BMJ-2026-10-12`. It built class methods as a second algebra beside the existing folds, lowered per call over value lanes, and modelled hops as foreign-key reads. See `.claude/board/entries/2026-10-12-session-reset-inventory.md`.

**Status:** MEASURED for one concept's methods (#1504's `BillableWorkEntry` set).
Code: `crates/lance-graph-glove-parity/src/awareness.rs`, tests
`tests/awareness.rs` (19), example `examples/awareness_loop.rs`.
Expand Down
13 changes: 1 addition & 12 deletions .github/workflows/glove-parity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ on:
- 'crates/lance-graph-ontology/**'
- 'crates/lance-graph-quack/**'
- 'crates/lance-graph-mask-risc/**'
- 'crates/lance-graph-r2il/**'
- 'crates/lance-graph-contract/**'
- '.github/workflows/glove-parity.yml'
workflow_dispatch:
Expand All @@ -27,21 +26,11 @@ jobs:
ref: master
path: ndarray
persist-credentials: false
# lance-graph-r2il (method calls through R2IL) path-deps ogar-loco and
# ogar-r2il from the OGAR sibling.
- uses: actions/checkout@v4
with:
repository: AdaWorldAPI/OGAR
ref: main
path: OGAR
persist-credentials: false
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Record tested substrate
run: |
git -C ndarray rev-parse HEAD
git -C OGAR rev-parse HEAD
run: git -C ndarray rev-parse HEAD
- name: Format
run: cargo +stable fmt --manifest-path lance-graph/crates/lance-graph-glove-parity/Cargo.toml -- --check
- name: Lint
Expand Down
5 changes: 1 addition & 4 deletions crates/lance-graph-glove-parity/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,9 @@ lance-graph-quack = { path = "../lance-graph-quack" }
# The capability authority (`OgarAuthority`) and OGAR's promoted classes and
# `ClassView`, for the hot-plugs and the canonical field basis (`basis`).
lance-graph-ogar = { path = "../lance-graph-ogar" }
# Executes a method through both frontends: Quack (above) and R2IL. R2IL
# path-deps the OGAR sibling (`ogar-loco`, `ogar-r2il`), so CI checks it out.
lance-graph-mask-risc = { path = "../lance-graph-mask-risc" }
lance-graph-r2il = { path = "../lance-graph-r2il" }

[dev-dependencies]
lance-graph-mask-risc = { path = "../lance-graph-mask-risc" }
lance-graph-sap = { path = "../lance-graph-sap" }

# mask-risc names ndarray by its canonical git coordinate; point it at the
Expand Down
Loading
Loading