From f6cd3122cf1b96f1716404833835f5b90bb44152 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 23:29:29 +0000 Subject: [PATCH] Record six decisions: ADMISSION B, D-RA-2 A, WIRE-50 A, ACTION-GATE A, FLOAT-REFS B, O30 A Board entry 2026-10-20-six-decisions.md carries each ruling with its binding qualifications (DECISION / SCOPE / REVISIT WHEN). Status updates in the same commit: ISS-ADMISSION-PREP-BINDING ruled (B; D-MPS-8 stays conditionally blocked), ISS-GATHER-HOP-1616 stays quarantined until a co-addressed rewrite; STATUS rows D-RA-2, D-CMR-1, D-HL-1 (O2), D-MATURATION3-1 record the decisions; stale rows D-CGW-9, D-CMR-2, D-CGW-0 corrected. The two lance-cache agent cards get frontmatter so they load; the agents README states 59 cards and gains a generated complete index. Ledger (d) gets a pointer section. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013z2e1YXkm6o6HNrDn5BPWA --- .claude/agents/README.md | 77 +++++++- .claude/agents/lance-cache-cartographer.md | 14 ++ .../agents/lance-cache-contents-auditor.md | 12 ++ .claude/board/ISSUES.md | 4 +- .claude/board/STATUS_BOARD.md | 14 +- .../board/entries/2026-10-20-six-decisions.md | 184 ++++++++++++++++++ .claude/board/entries/README.md | 3 +- .../LEDGER-REVISION-2026-10-20d.md | 9 + 8 files changed, 305 insertions(+), 12 deletions(-) create mode 100644 .claude/board/entries/2026-10-20-six-decisions.md diff --git a/.claude/agents/README.md b/.claude/agents/README.md index c228be0ca..133a38663 100644 --- a/.claude/agents/README.md +++ b/.claude/agents/README.md @@ -8,8 +8,11 @@ > when starting a session; read this file when deciding which > specialist to wake for a specific task. -Ensemble size: **22 specialists + 5 meta-agents**, plus the six Haiku -cards (§ Haiku harvest tier). Every card is at +Ensemble size: **59 cards** with frontmatter (49 Opus, 4 Sonnet, 6 Haiku), +counted 2026-10-20. The sections below describe a curated subset in prose; +§ Complete card index at the end lists every card. Three files here are not +agents and carry no frontmatter on purpose: `5plus3-council.md`, +`coresearch-council.md` (harness specs) and `worker-template-v2.md`. Every card is at `.claude/agents/.md`. Each card declares its own `tools`, `model`, and `READ BY:` knowledge prerequisites. @@ -293,3 +296,73 @@ are actually being touched. - **`../knowledge/LATEST_STATE.md`** — current contract inventory (what every specialist's domain looks like right now). - **`../knowledge/PR_ARC_INVENTORY.md`** — decision history per PR. + +--- + +## Complete card index + +Generated 2026-10-20 from each card's frontmatter (`name`, `model`, first +sentence of `description`). Regenerate it when a card is added or removed; +the count line at the top must match the number of rows. + +| card | model | what it does | +|---|---|---| +| `adapter-shaper` | opus | Shapes a single C++ method/function into a thin, classid-keyed DO-in/out adapter that targets the OGAR Core — identity from classid, state mapped onto SoA va… | +| `adk-behavior-monitor` | opus | Watches for behavioral anti-patterns during R&D sessions. | +| `adk-coordinator` | opus | Agent Development Kit style ensemble coordinator. | +| `baton-handoff-auditor` | opus | Brutal reviewer at carrier/DTO/crate/sprint/planner boundaries. | +| `bbb-warden` | opus | Guards the T2/T3 membrane — the blood-brain barrier between the behavior tier (the ABI exports, `where`/`hop`/`plan_eval`, `Mask × FieldMask → Mask`) and the… | +| `brutally-honest-tester` | opus | Pre-merge gate for every Rust PR. | +| `bus-compiler` | opus | Compiles explicit thought into accountable bus packets for `p64` and CognitiveShader. | +| `cargo-substrate-architect` | sonnet | Dependency architecture only. | +| `cascade-impact-savant` | opus | Cost-budget gate in the epiphany-brainstorm-council. | +| `census-counter` | haiku | Cheap, read-only counter (Haiku). | +| `certification-officer` | opus | Runs numerical certification of a derived format (lab BF16, Base17, bgz-hhtl-d palette, compressed codebook) against a ground-truth source file, reporting Pe… | +| `codegen-flow-cartographer` | sonnet | Owns the map of the compile-time pipeline: source harvest (ruff frontends) → OGAR mint (Class/ActionDef/classid/facet) → codegen emit INTO a consumer repo →… | +| `container-architect` | opus | 256-word metadata container layout, word-by-word field mapping, bgz17 annex at W112-125, local palette CSR at W96-111, scent/palette neighbor indices at W176… | +| `contradiction-cartographer` | opus | Protects contradiction as first-class structure across family, branch, bus, and thought-object layers. | +| `convergence-architect` | opus | Pre-plan divergent-expansion savant for lance-graph. | +| `core-first-architect` | opus | Guards the Core-First Transcode Doctrine: a generated AST / codegen / adapter layer is only as clean as the Core it targets, so the Core (OGAR) must be the d… | +| `core-gap-auditor` | opus | The honest guard of the Core-First Transcode Doctrine. | +| `creative-explorer-savant` | opus | The "different views" lens in the epiphany-brainstorm-council. | +| `cypher-lowering-warden` | opus | Guards the Cypher → Quack seam. | +| `dto-soa-savant` | opus | Judges a proposed epiphany against the BindSpace four-column SoA discipline + the lab-vs-canonical-surface invariant. | +| `epiphany-brainstorm-council` | opus | Pre-merge council for newly-proposed entries to `EPIPHANIES.md`. | +| `family-codec-smith` | opus | Shapes HEEL/HIP/BRANCH/TWIG/LEAF representation choices, role-aware codebooks, palettes, residuals, and family purity benchmarks. | +| `fold-carrier-scientist` | opus | Owns the separation between what a population MEANS and how it is physically carried and scheduled: dense/sparse/run carriers, survivor gating, push/pull, la… | +| `guarded-executor` | haiku | Haiku executor for a pre-written, numbered command card (cargo -p ..., probes, test gates). | +| `harvest-scout` | haiku | Cheap, read-only candidate finder (Haiku). | +| `host-glove-designer` | opus | Designs the structured interface from explicit thought objects into the host model. | +| `integration-lead` | opus | Cross-session orchestration, dependency tracking, phase gating. | +| `iron-rule-savant` | opus | Substrate-level veto angle in the epiphany-brainstorm-council. | +| `isa-anti-lasagne-warden` | opus | Guards the V4 ISA boundary and the layer count. | +| `kernel-membrane-warden` | opus | Guards the T1/T2 membrane — the line between the primitive tier and the behavior tier that composes it. | +| `lance-cache-cartographer` | opus | Answers whether a consumer can size Lance's cache from outside without forking. | +| `lance-cache-contents-auditor` | opus | Classifies what Lance's `LanceCache` actually holds by enumerating its insert sites, each with the inserted type and its size class, cited as file:line, neve… | +| `layer-boundary-warden` | sonnet | Pre-flight gate against layer-confusion — the failure mode that filed a Klickwege issue at the wrong repo (lance-graph #691) and then gated a compile-time lo… | +| `lens-migration-engineer` | opus | Repairs what the zero-copy-warden finds: migrates a materializing read path to a lens, call site by call site, without changing behaviour. | +| `mirror-kernel-synthesist` | opus | Explores semantic-kernel mediation, mirror-style perspective modeling, hypothesis loops, and synthesis policies across user-agent-topic frames. | +| `palette-engineer` | opus | bgz17 crate: palette compression, Base17 encoding, distance matrices, compose tables, PaletteSemiring, PaletteMatrix, PaletteCsr, SIMD batch distance (AVX-51… | +| `perspective-weaver` | opus | Models user, agent, topic, and angle as intertwined perspective objects. | +| `preflight-drift-auditor` | opus | Pre-spawn drift hunter that automates the W-Meta-Opus manual audit method. | +| `premise-auditor` | opus | Audits the QUESTION before anyone answers it. | +| `prior-art-savant` | opus | Duplicate-catcher in the epiphany-brainstorm-council. | +| `query-stage-profiler` | opus | Guards measurement discipline for every query-latency claim (Cypher, SQL, Quack, mask-risc, prepared queries, parsers). | +| `quote-harvester` | haiku | Cheap, read-only quote extractor (Haiku). | +| `resonance-cartographer` | opus | Maps superpositional field state, candidate families, pressure, contradiction, drift, and style mix before collapse. | +| `ripple-architect` | opus | Ontology guardian for the ripple architecture. | +| `savant-research` | opus | ZeckBF17 compression, golden-step traversal, octave encoding, and distance metric design for the codec-research crate. | +| `scenario-world` | opus | Counterfactual / scenario-branching specialist. | +| `simd-savant` | sonnet | Holds the workspace-wide invariant that all SIMD must come from `ndarray::simd` via the polyfill (`simd.rs` + `simd_ops.rs` > `simd_{type}.rs` per-arch). | +| `soa-review` | opus | Multi-angle transcode review agent. | +| `spec-editor` | haiku | Haiku editor for ONE file and an exact edit spec: a list of (old text, new text) replacements or anchored insertions written out in full by the orchestrator. | +| `substrate-mapper` | haiku | Haiku mapper for ONE bounded unit of the substrate (a module file, a crate's src/ directory, a plan or knowledge folder). | +| `thought-struct-scribe` | opus | Shapes durable thought objects, blackboard semantics, revision rules, and host-model glove interfaces. | +| `trajectory-cartographer` | opus | Models episodic memory, causal arcs, graph revision chains, and spine trajectories over time. | +| `truth-architect` | opus | Guards measurement-before-synthesis discipline and architectural ground truth. | +| `v3-envelope-auditor` | opus | Audits every change to the SoA LE contract: SoaEnvelope trait / ColumnDescriptor / verify_layout / ENVELOPE_LAYOUT_VERSION, MailboxSoA column layout, canonic… | +| `v3-kanban-executor-engineer` | opus | Builds and reviews the V3 kanban execution machinery: the D-MBX-A6 Outcome→KanbanMove adapter in lance-graph-planner (arm #1), the symbiont SurrealDB-on-kv-l… | +| `v3-mailbox-warden` | opus | Guards the V3 ownership doctrine on every write path. | +| `v3-template-smith` | opus | Owns the compiled-thinking-template stack: elixir-template DSL, template-runtime dispatch, template-equivalence replay grading, cognitive-compiler trace→temp… | +| `workspace-primer` | opus | Onboarding agent for any new session that touches lance-graph, ndarray, or related AdaWorldAPI crates. | +| `zero-copy-warden` | opus | Detects violations of the zero-copy law: "zero copy is a law without escape hatches" and "the array itself is a ClassView projection." Fires o… | diff --git a/.claude/agents/lance-cache-cartographer.md b/.claude/agents/lance-cache-cartographer.md index 727402ef7..253cca9c4 100644 --- a/.claude/agents/lance-cache-cartographer.md +++ b/.claude/agents/lance-cache-cartographer.md @@ -1,3 +1,17 @@ +--- +name: lance-cache-cartographer +description: > + Answers whether a consumer can size Lance's cache from outside without + forking. Traces the exact public call chain from `lancedb::connect(...)` or + `lance::dataset::DatasetBuilder` (or a documented env var) down to the + `MokaCacheBackend` constructor, citing every hop as file:line, or returns + UNREACHABLE with the point where the chain breaks. Read-only. Use before + proposing a Lance cache knob, a fork for cache sizing, or a RAM budget that + assumes a cache capacity is configurable. +tools: Read, Glob, Grep, Bash +model: opus +--- + # lance-cache-cartographer — who can size the cache from outside? **Tier: Opus (filigran).** Plumbing traces are accumulation: the answer is a diff --git a/.claude/agents/lance-cache-contents-auditor.md b/.claude/agents/lance-cache-contents-auditor.md index 05483418d..6b5c65c3c 100644 --- a/.claude/agents/lance-cache-contents-auditor.md +++ b/.claude/agents/lance-cache-contents-auditor.md @@ -1,3 +1,15 @@ +--- +name: lance-cache-contents-auditor +description: > + Classifies what Lance's `LanceCache` actually holds by enumerating its + insert sites, each with the inserted type and its size class, cited as + file:line, never by the cache's name or docs. Read-only. Use before + claiming that capping a Lance cache bounds memory, or before attributing + RAM use to the cache rather than to the consumer's own collect/concat path. +tools: Read, Glob, Grep, Bash +model: opus +--- + # lance-cache-contents-auditor — what does `LanceCache` actually hold? **Tier: Opus (filigran).** This is accumulation: the verdict only makes sense diff --git a/.claude/board/ISSUES.md b/.claude/board/ISSUES.md index 2564f339f..6df1779c1 100644 --- a/.claude/board/ISSUES.md +++ b/.claude/board/ISSUES.md @@ -1,6 +1,6 @@ ## ISS-ADMISSION-PREP-BINDING — may preparation translate global identities into focus slots before a fold? (2026-10-20) -**Status:** OPEN (operator ruling). **Basis:** VERIFIED-IN-CODE (`crates/mork-pathmap-probe/src/{rmap,join,chain}.rs`) and MEASURED (D-RMAP-1A §8, Schnellverschluss §7b, D-RPR §11.10). +**Status:** RULED 2026-10-20 (ADMISSION option B, `entries/2026-10-20-six-decisions.md` §1): same-table, version-witnessed key-range seeks over an attested sorted key are admitted in preparation; a position derived from another column or table is not, whatever the phase. D-MPS-8 stays conditionally blocked (a value-to-relationship-table read position is option C); D-RPR-1 and D-RST-4/6 are admitted only where they classify under B. Was: OPEN (operator ruling). **Basis:** VERIFIED-IN-CODE (`crates/mork-pathmap-probe/src/{rmap,join,chain}.rs`) and MEASURED (D-RMAP-1A §8, Schnellverschluss §7b, D-RPR §11.10). - One question under five names. Each row keeps its own wording and points here: - D-RMAP-1 §6, the BIND membrane review; @@ -69,7 +69,7 @@ ## ISS-GATHER-HOP-1616 — the merged `OutgoingHop` reads positions taken from another lane's values (2026-10-19) -**Status:** BLOCKED (quarantined; waits on GATHER-DECISION). **Basis:** VERIFIED-IN-CODE (`crates/lance-graph-mask-risc/src/graph_hop.rs`: two `MaskOp::Gather` over `frontier[sources[i]]` and `visible[targets[i]]`, then `ScatterOrU32` by `targets[i]`). +**Status:** BLOCKED (quarantined). GATHER-DECISION recorded 2026-10-20 (`entries/2026-10-20-six-decisions.md` §1): `OutgoingHop` stays quarantined; it closes only by a rewrite as a co-addressed read. Was: BLOCKED (quarantined; waits on GATHER-DECISION). **Basis:** VERIFIED-IN-CODE (`crates/lance-graph-mask-risc/src/graph_hop.rs`: two `MaskOp::Gather` over `frontier[sources[i]]` and `visible[targets[i]]`, then `ScatterOrU32` by `targets[i]`). - #1616 merged a hop of exactly the shape the 2026-10-16 no-gather ruling bans (D-HOLO H14c/H14d: the join is the layout). The remediation PR does not delete it and does not rename it into a BIND; it compiles only under the off-by-default feature `quarantined-gather-hop`. - Default build: a `compile_fail` doctest proves `OutgoingHop` is unreachable (disable-verified). The six original tests run in CI with the feature on. diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index 3e7f4aa87..aa19ce69b 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -96,7 +96,7 @@ 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-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` | Shipped (#1591). The W, activation and 43..45 readings in this row are superseded: W = thought layer and 46..49 = activation i4 (D-HL-1, 2026-10-17), 43..45 = orientation (D-CGW-1, #1594) | 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 | Shipped (#1594, `8f50cd9e`): `causal_edge::Orientation` on 43..45, `pack`/`pack_v2` take it, the S/P/O triad removed (no production writer), Moore `lift_ce64` refuses an oriented edge; entry `2026-10-16-d-cgw-1-orientation-contract.md`. 46..49 (D-CGW-9) and 50..52 still open | 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 | @@ -105,7 +105,7 @@ Plan: `.claude/plans/ce64-grammar-wiring-v1.md`. Entry: `entries/2026-10-16-gram | **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 — approved 2026-10-16: activation becomes a row field | 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 | SUPERSEDED 2026-10-17 by D-HL-1 O1: 46..49 = activation i4; the opcode reading in `isa.rs` moves behind a declared legacy reading (ISA-LEGACY, ledger (d)) | 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) | — | @@ -227,7 +227,7 @@ Plan: `.claude/plans/relalg-v1.md`. Crate: `crates/lance-graph-relalg` (own work | **D-HOLO-H14c** | Thought-first positional reads `Thought(t)[Table(a)[i] : Table(b)[i]]`: point projection, presence/Hamming populations through mask-risc, explicit terminal rows; memory and fragmentation of positional tables; Lance 13 masked I/O; coordinate identity across rewrites (sub-ids -1 … -6) | Measured 2026-10-15 (v4, entry 2026-10-15-d-holo-h14c-thought-first): acceptance A–E met (tables consulted == k for every U; k = 2 read at U = 31 0.90–1.16x U = 2); C vs B on query-shaped reads mixed; uniform 1 % positional tables ≈ 93x payload resident (flagged); Lance prediction holds (uniform 1 % mask 1.00x bytes, clustered 0.24x); stale maps omit silently, refused by the version check; returned to the operator | tables consulted == requested lanes for every touched count; at k = 2, U = 31 read <= 1.25x U = 2; populations load no value; no row materialized outside the terminal; no wrong coordinate across rewrites; Lance prediction (1 % uniform mask does not halve bytes_read, 1 % clustered does) | | **D-HOLO-H14d** | C's own operation in four stages, C only: (1) relalg symbolic reduction of the thought's set expression, (2) materialize `R = P_a ∧ P_b ∧ A` (or `∨`) over presence planes, (3) Lance 13 read pruned by `R`, (4) COUNT/EXISTS from `R` or the operation on `T_a[i], T_b[i]` for survivors; sub-ids -1 … -5 | Measured 2026-10-16 (v4, entry 2026-10-16-d-holo-h14d-logic-mask-read): stage 1 decides 675/2,000 programs with 0 runs, 396 answered only after the rewrite, 2 widened (ISS-RELALG-ABSORPTION-AFTER-DE-MORGAN), passes 1,065 vs 5,898; R costs 2–10 ns per 64-address word; Lance scans exactly |R| everywhere, bytes 1.00x at uniform 1 % full tile, 0.19x clustered 1 %, 0.01–0.12x inside a 1,024/8,192 aperture; payload ~6 ns per lane load, reads == |R| × k, not flat at small |R| (fixed word scan; prediction 4 falsified); fused Σ ~1.3 ns per value; point query 8–45 ns hot; returned to the operator | `R` == per-address reference; rewritten == as written on 2,000 programs; payload reads == |R| × k; Lance rows == |R| with reference values; five disable runs red | | **D-RA-1** | `Rel` + `normalize` + `symbolic` + R2IL lowering | Shipped #1546 `c21bd165` (11 tests, 11 disable runs red; four comparisons on one lane 8 → 2 ops; 70/2,000 small descriptions refused as written, all run rewritten) | == row oracle over 400 generated descriptions × 5 measures | -| **D-RA-2** | Rules into the contract set IR (D-CMR-1/-6); relalg keeps only lowering or is deleted | Queued (maintainer decision) | relalg tests pass unchanged against the contract IR | +| **D-RA-2** | Rules into the contract set IR (D-CMR-1/-6); relalg keeps only lowering or is deleted | DECISION 2026-10-20: option A, the contract owns the single-table set-algebra rewrites; relalg keeps relational planning, joins and lowering (`entries/2026-10-20-six-decisions.md` §2). Next: D-CMR-1 | relalg tests pass unchanged against the contract IR | | **D-RA-3** | Datalog rules as algebra values; names are labels resolved through the label codebook, never strings in a rule — council v3 (2026-10-16) places the Datalog VALUES in `metta::datalog`; D-RA-2 still gates relalg | Queued (after D-RA-2) | codebook-built rules == hand-written `Rel`; unknown label refused at resolution | | **D-RA-4** | **⛔ VIOLATION — GATHER. DO NOT BUILD. CORRECT: D-HOLO-H14c / H14d.** Bound recursion via external frontier driver over D-CMR-5 preimage | Queued (after D-CMR-5) | == row-oracle closure; frontier past bound refused | @@ -238,8 +238,8 @@ Plan: `.claude/plans/d-cmr-concept-chain-normalization-v1.md`. Parent: D-CMR-RES | D-id | scope | status | gate / falsifier | |---|---|---|---| | **D-CMR-0** | Plan, identity matrix, inventory, board rows | Shipped #1532 (docs) | docs only; every inventory row cites code | -| **D-CMR-1** | Set-theory IR core in the contract: `Runs` (∩ ∪ ∖, complement), residual `Res`, measures; pure | Queued | algebra laws vs materialized bitsets as oracle | -| **D-CMR-2** | Lowering: runs → extents, residual → predicates per run; measurement levels geometry / optics / etch | Queued (after contract → mask-risc) | == row oracle; `Count` without residual reads zero rows | +| **D-CMR-1** | Set-theory IR core in the contract: `Runs` (∩ ∪ ∖, complement), residual `Res`, measures; pure | Queued — first architecture PR after the D-RA-2 decision (`entries/2026-10-20-six-decisions.md` §2) | algebra laws vs materialized bitsets as oracle | +| **D-CMR-2** | Lowering: runs → extents, residual → predicates per run; measurement levels geometry / optics / etch | Queued (after D-CMR-1; lowering reaches mask-risc through core via `lance_graph::fold`, #1537 — there is no contract → mask-risc edge) | == row oracle; `Count` without residual reads zero rows | | **D-CMR-3** | Quack frontend: `Filter` → set IR (extent hoisting falls out) | Queued | identical answers on the quack suite; other-basis range stays residual | | **D-CMR-4** | Two dimensions: `Rect` over composite coordinates, row-major or Morton runs | Queued | rectangle ∩ == bitset oracle | | **D-CMR-5** | **⛔ VIOLATION — GATHER. DO NOT BUILD. CORRECT: D-HOLO-H14c / H14d.** Preimage `f⁻¹(S)` under a proven mapping (the hop) | Queued | == row oracle; many-to-one image refused | @@ -342,7 +342,7 @@ Plan: `.claude/plans/ce64-hypothesis-layers-v1.md`. Plateau: `.claude/knowledge/ | D-id | scope | status | gate / falsifier | |---|---|---|---| | **D-HL-0** | Plateau, plan, research map, board entry | Shipped (#1496) | docs only; every claim cites a file or entry | -| **D-HL-1** | Decisions O1 (46..49), O2 (50..52), O3 (W), O5 (lane budget), O6 (what persists) | Partial: O5 decided 2026-10-14 (budget: at most 64 thoughts, none required; corrected 2026-10-20: rung is an implied level that can change within a thought, the 10 static rung lanes are deprecated); O1 (46..49 = activation i4) and O3 (W = thought layer) decided 2026-10-17; O2, O6 open | stored-meaning changes ship behind a version gate | +| **D-HL-1** | Decisions O1 (46..49), O2 (50..52), O3 (W), O5 (lane budget), O6 (what persists) | Partial: O5 decided 2026-10-14 (budget: at most 64 thoughts, none required; corrected 2026-10-20: rung is an implied level that can change within a thought, the 10 static rung lanes are deprecated); O1 (46..49 = activation i4) and O3 (W = thought layer) decided 2026-10-17; O2 (50..52) decided 2026-10-20: pyramid order, meaningful only under a presence condition held outside the field (`entries/2026-10-20-six-decisions.md` §3); O6 open | stored-meaning changes ship behind a version gate | | **D-HL-2** | Merge-on-read vs in-place revision | Queued | merge-on-read within 1 code of exact on every cell where in-place is not; ≥ 1 cell differs by ≥ 2 codes | | **D-HL-3** | Per-delta evidential base as the independence test (layer ≠ source) | Queued | sd ratio within 10 % of 1.0 on all four cases, incl. a cross-layer duplicate (counts once) and two independents in one layer (count twice); a layer-keyed rule must fail those two | | **D-HL-4** | Narsese parallel calibration (OpenNARS vs CE64 deltas, `jc::reliability`) | Queued (after D-HL-2 and D-HL-3) | an encoding that does not beat linear ICC by the pre-declared margin is dropped | @@ -394,7 +394,7 @@ Knowledge: `.claude/knowledge/maslov-pyramid-of-cognition.md`. Test-only (#1494) |---|---|---|---| | **D-RESIDUE-FP-0** | `planner/tests/residue_fixed_point.rs`: production `pearl::hydrate` to a fixed point | Shipped (#1494) | extra passes bit-identical; only bits 59..60 change; 2 disable runs red | | **D-MATURATION3-0** | `planner/tests/maturation_ladder.rs`: stages 7..0, feedback, ablation, no self-support | Shipped (#1494) | 12 disable runs red; the stage reading of 50..52 is test-local | -| **D-MATURATION3-1** | The pyramid as the plasticity ladder in bits 50..52, one global meaning | Queued (operator) | needs a global version gate for old codes; `learn`, `MooreNars16` and `CausalEdgeV3` byte 3 move in lockstep | +| **D-MATURATION3-1** | The pyramid as the plasticity ladder in bits 50..52, one global meaning | DECISION 2026-10-20: pyramid order (7 Astonishment … 0 Wisdom); typed as `Option`, presence held outside bits 50..52; raw 0 never reads as Wisdom (`entries/2026-10-20-six-decisions.md` §3). Queued for the migration PR | needs a global version gate for old codes; `learn`, `MooreNars16` and `CausalEdgeV3` byte 3 move in lockstep | ## D-NAL — NAL-1..9 × 34 recipes against OpenNARS and ONA (2026-10-11) diff --git a/.claude/board/entries/2026-10-20-six-decisions.md b/.claude/board/entries/2026-10-20-six-decisions.md new file mode 100644 index 000000000..a68f46397 --- /dev/null +++ b/.claude/board/entries/2026-10-20-six-decisions.md @@ -0,0 +1,184 @@ +# 2026-10-20 — ADR-2026-10-20-SIX: ADMISSION, D-RA-2, WIRE-50, ACTION-GATE, FLOAT-REFS, O30 + +**Status:** DECISION (2026-10-20). **Basis:** the operator's rulings in session +`session_013z2e1YXkm6o6HNrDn5BPWA`, given on the options in +`.claude/research/2026-10-recovery/LEDGER-REVISION-2026-10-20d.md` §6. The +qualifications below are part of each decision, not suggestions. + +**Principle (operator's words):** "Preparation may establish coordinates. +Execution operates on co-addressed sets. Neither phase gets to conceal an +unaccounted relational gather." Representation, permission and evidence stay +distinct: none of them acquires meaning because a bit pattern or a missing +field happens to permit it. The six rulings below share one constraint: "A +value cannot acquire authority merely by being representable." + +| decision | ruling | +|---|---| +| ADMISSION | B: same-table, version-witnessed seeks; no implicit move to C | +| D-RA-2 | A: the contract owns the single-table set-algebra rewrites | +| WIRE-50 | A: pyramid order; meaningful only under a presence condition | +| ACTION-GATE | A: `commit_via` is canonical; fail closed | +| FLOAT-REFS | B: `fold` off by default; this is isolation, not reproducibility | +| O30 | A: bounded source identities, at most 32 per derived cell at first | + +## 1. ADMISSION — option B + +**DECISION** (operator's words): "A query-preparation phase may perform +counted, version-witnessed, same-table key-range seeks over an attested sorted +key. It may construct a projection for subsequent co-addressed evaluation. A +position derived from another relational column or table is not admissible as +a read address merely because the lookup occurs during preparation. Frozen +codebook decoding is admissible as representation translation, provided its +mapping is immutable within the attested version, its cost is accounted for, +and it does not become a relational lookup mechanism. Execution remains +co-addressed." + +- **Accounting:** report `attest_cost`, `projection_build_cost` and + `query_read_cost` separately. Arm B's one-time attestation (a full scan of + both key columns, 7–10 ms for 100,002 keys) must not disappear behind its + per-query count (about 3,000 rows). +- **D-MPS-8 stays conditionally blocked.** #1621's "address translation only + in preparation" does not authorize cross-table addressing. If it turns an + external row's value into a read position in the relationship table, it is + option C whatever the phase. Rewritten as a sequential, witnessed + relationship projection it could come under B. +- **`graph_hop.rs`** (`OutgoingHop`, #1616) stays quarantined. +- `Filter::Semijoin`, `Pred::EqU32Via` and `MaskOp::Gather` need call-site + classification before any removal. `seek_from` and `gallop_partition_point` + are admissible only for attested same-table seeks. +- **SCOPE:** every preparation-time read in lance-graph, Quack, mask-risc, + relalg and the probes. Closes the ruling half of GATHER-DECISION; + ISS-ADMISSION-PREP-BINDING and ISS-GATHER-HOP-1616 carry the status. +- **REVISIT WHEN:** a measured cross-table preparation operation shows a + benefit that cannot be had by materializing a co-addressed projection. That + would justify evaluating C, never implementing it silently. + +## 2. D-RA-2 — option A + +**DECISION:** `lance-graph-contract` owns `Runs`, `Res`, the algebra laws and +`normalize`; relalg, Quack and crepe / R2IL consume and lower. "The contract +owns mathematical truth; consumers own execution strategy." Associative +flattening, idempotence, absorption and other valid single-table identities +have exactly one implementation. + +- relalg keeps relational planning, joins and lowering. Datalog values stay in + `metta::datalog` (council v3). +- The slot budget is defined on **normalized** structure, not parser nesting: + `Or(a, Or(b, c))` flattens before the admission check, and normalization must + not expand expressions exponentially to remove nesting. +- **Required tests:** differential tests against materialized bitsets; + relalg's expectations unchanged; complement and universe scope handled + explicitly before any negation identity is admitted. +- **Order:** D-CMR-1 (types and laws) → port the existing rules one at a time + → D-CMR-6 publishes the catalogue → repoint crepe. This is the first + implementation PR. +- **REVISIT WHEN:** not stated. + +## 3. WIRE-50 — option A, with presence outside the field + +**DECISION:** bits 50..52 use the pyramid order, 7 = Astonishment … 0 = +Wisdom. Three bits hold eight values; eight stages plus "not on the ladder" are +nine states, so the field cannot carry both. The bits encode a maturation +stage **only when a separate presence condition is true**. + +- At the typed boundary this is `Option`. +- The presence condition lives in a versioned envelope, a validity sidecar or + a separately ruled field. It must not borrow another reserved CE64 bit. +- A raw zero never establishes Wisdom for an uninitialized or legacy edge. +- **Migration PR:** the shared table for bits 40..63, field-isolation tests, + explicit old-layout decoding, `wire.rs` migrated, coordinated tests for + `learn`, `MooreNars16` and `CausalEdgeV3`. `isa.rs`'s old reading of 46..49 + goes behind ISA-LEGACY. D-CGW-9 is corrected in the same ledger pass (done in + this commit). +- No serialized meaning changes before the presence contract exists. +- **REVISIT WHEN:** the storage layout offers a better lossless location for + maturation presence. + +## 4. ACTION-GATE — option A, fail closed + +**DECISION:** `commit_via` is the only authoritative commit path. +`required_role = None` no longer means everyone is authorized; it means the +definition is incomplete unless it is declared public. + +- **Invariant on `ActionDef`:** + - `Public`: no role grant needed, but definition, state and impact checks + still apply. + - `Restricted(role)`: needs the role and registry authorization. + - Missing or contradictory authorization metadata: refused. + + An enum or a validated marker; absence is never permission. +- **Migration:** deprecating `commit` while its weaker check stays callable is + not enough. It either delegates through `commit_via` or becomes a + feature-gated legacy API that fails closed without a grant registry. +- MedCare: review the existing roleless definitions before migrating, but do + not keep open-by-default behaviour for compatibility. +- **Tests:** inventory every `ActionDef` and every `commit` caller; then show + that unauthorized execution cannot succeed through either entry point. +- **REVISIT WHEN:** a consumer needs a different authorization policy model, + not an easier bypass. + +## 5. FLOAT-REFS — option B, as isolation + +**DECISION:** `fold` becomes an optional feature, off by default, so the core +default build no longer follows OGAR `main` (`lance-graph-r2il/Cargo.toml:19-20`). + +- This is dependency **isolation**. A build with `fold` on can still follow + moving branches. +- Reproducible deployment is a separate contract: a committed, resolved + lockfile for the actual application build, tested with `--locked`. No fixed + git revisions go into internal manifests. +- Lab probes stay outside the default surface. +- Test core with both feature configurations and the `fold_path` fixture. +- **Note for the implementer:** lance-graph tracks no `Cargo.lock` by project + rule (`.gitignore`, ISS-STALE-AUTHORITY-LOCKS). So the committed lockfile + belongs to the deploying application's build, not to this library + workspace. Which build carries it is OPEN. +- **REVISIT WHEN:** the fold surface is ready to be a supported default, with + stable dependency compatibility tests. + +## 6. O30 — option A, 32 sources at first + +**DECISION:** at most 32 distinct direct evidence sources per derived cell in +the first implementation. This is a provisional engineering capacity, not a +property of CE64, and not tied to the 64 thought slots. + +- **Identity:** `SourceRef(table_id, version_witness, lane, row_position)`. A + bare `(lane, row_position)` is insufficient across table versions or layout + changes. +- **Storage:** a cold, sparse sidecar indexed by the derived cell, never CE64 + hot-path bits. +- **Handling:** + - canonicalize and deduplicate; + - on overflow, refuse explicitly and keep the previous committed state; + - no modulo folding, no silent truncation, no invented overlap. +- Direct support and transitive evidence are kept distinct; a later + derivation DAG may reach many underlying sources without flattening them + into every cell. +- A per-cell source list does not by itself give selective retraction. + D-RPR-2 needs a versioned reverse-dependency index or an equivalent + invalidation plan. +- **Tests first:** + - the modulo-64 stamp overlap (C37); + - AriGraph's revision with no source record; + - 32 and 33 distinct sources; + - identical row positions in different table versions. +- **REVISIT WHEN:** measured source cardinalities produce meaningful refusals, + or a provenance DAG shows a better bound. + +## Execution order + +1. **Ledger and documentation.** This commit records the six decisions and + updates the two admission issues. It corrects D-CGW-9, D-CMR-2 and D-CGW-0, + and records D-RA-2, D-CMR-1, D-HL-1 O2 and D-MATURATION3-1. It also adds the + two missing agent card headers and regenerates the agents README index. +2. **First architecture PR:** D-CMR-1 / D-RA-2. +3. **Independent:** the admission call-site classification and named legacy + gates; ACTION-GATE with no permissive alternate entry point. +4. **Independent:** FLOAT-REFS feature isolation; WIRE-50 with the presence + contract before any serialized meaning changes. +5. **Provenance:** O30 source identities, bounded cold storage and the + failing fixtures; then D-TGA-3 and D-RPR-2. + +OPEN: where the deploying application's lockfile lives (FLOAT-REFS); where +WIRE-50's presence condition lives (envelope, sidecar or a separately ruled +field); the classification of each gather call site. diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md index 8119392a2..091796db8 100644 --- a/.claude/board/entries/README.md +++ b/.claude/board/entries/README.md @@ -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. -393 entries, 2026-08-06 .. 2026-10-20. +394 entries, 2026-08-06 .. 2026-10-20. | date | entry id | finding | file | |---|---|---|---| | 2026-10-20 | `thought-git-replay-api-write-rubicon` | | [2026-10-20-thought-git-replay-api-write-rubicon.md](2026-10-20-thought-git-replay-api-write-rubicon.md) | +| 2026-10-20 | `ADR-2026-10-20-SIX` | | [2026-10-20-six-decisions.md](2026-10-20-six-decisions.md) | | 2026-10-20 | `relstore-quack-petgraph-plan` | | [2026-10-20-relstore-quack-petgraph-plan.md](2026-10-20-relstore-quack-petgraph-plan.md) | | 2026-10-20 | `D-RST` | | [2026-10-20-relstore-geometry-not-graph-api.md](2026-10-20-relstore-geometry-not-graph-api.md) | | 2026-10-20 | `recursive-perspective-rebinding` | | [2026-10-20-recursive-perspective-rebinding.md](2026-10-20-recursive-perspective-rebinding.md) | diff --git a/.claude/research/2026-10-recovery/LEDGER-REVISION-2026-10-20d.md b/.claude/research/2026-10-recovery/LEDGER-REVISION-2026-10-20d.md index c80a94bac..8043ff322 100644 --- a/.claude/research/2026-10-recovery/LEDGER-REVISION-2026-10-20d.md +++ b/.claude/research/2026-10-recovery/LEDGER-REVISION-2026-10-20d.md @@ -144,3 +144,12 @@ Closed from (c): **D-46** (C40), **DOC-WIRE (1)** for 43..45 (C39; 50..52 stays | card | runs | items checked | wrong | missed | |---|---|---|---|---| | substrate-mapper (one per batch, #1547–#1634, 86 PRs) | 10 (9 COMPLETE, 1 PARTIAL: #1573, a merge-heavy diff, read by grep in three ranges, self-reported) | new-file list of every PR against `new file mode` in the source: equal in 83; in #1571, #1607, #1608 the mapper also listed JSON files that the dump excludes from the diff but shows in the stat, and `git log --diff-filter=A` confirms they are new; claims in map 10 read at `relalg/tests/rewrites.rs:613` and `r2il/src/lib.rs:588` | 0 | 0 known | + +## 8. Decisions recorded (2026-10-20, later) + +The six questions in §6 were decided the same day: ADMISSION B, D-RA-2 A, +WIRE-50 A, ACTION-GATE A, FLOAT-REFS B, O30 A (32 sources at first), each with +binding qualifications. Record: `.claude/board/entries/2026-10-20-six-decisions.md`. +The §6 table above is kept as the question set; the record supersedes its +recommendation column where they differ (WIRE-50 adds a presence condition +outside bits 50..52; O30 sets 32 and a versioned `SourceRef`).