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
4 changes: 4 additions & 0 deletions .claude/board/AGENT_LOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 2026-06-11 — tombstone commit: emission artifacts removed per PR #477 follow-up

**Main thread (Fable, session splat3d-cpu-simd-renderer).** Executed the PR #477 documented follow-up (the "what does NOT exist" table → source reality): removed `CollapseGateEmission` from `lance-graph-contract::collapse_gate` (+ lib.rs re-export; `MailboxId`/`MergeMode`/`GateDecision` survive), removed `MailboxSoA::emit()`, renamed `last_emission_cycle` → `last_active_cycle`, added in-place `consume_firing(row)` successor (same threshold + same-cycle-idempotency semantics, no carrier object), reworded 4 stale doc references (kanban/episodic_edges/witness_tombstone/mailbox_soa header), superseded the CLAUDE.md Baton-scoping block, fixed cycle-coherent-soa-snapshot-v1 D-SOA-SNAP-1/2 to generic `SnapshotProvider::Column` (closes #477 CodeRabbit Critical — contract stays zero-dep), closed TD-COLLAPSE-GATE-SMALLVEC-1 as moot. Verified #477 codex P2 (`verify_layout` ColumnOutOfBounds) already fixed on main with regression test. Tests: contract 594 (−8 emission, +2 gate/merge), driver 85 (emit tests → consume tests, +1 OOB), clippy clean, workspace check clean. Commit: in PR.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Record the exact commit SHA in this AGENT_LOG entry.

Commit: in PR. is not immutable/auditable for run traceability. Please stamp the concrete commit hash in this prepended record.

As per coding guidelines, .claude/board/AGENT_LOG.md entries for completed runs must include D-ids, commit, tests, and outcome in the same commit.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/board/AGENT_LOG.md at line 3, Update the AGENT_LOG entry by
replacing the placeholder "Commit: in PR." with the concrete git commit SHA for
the recorded run; locate the entry in .claude/board/AGENT_LOG.md (the line
containing "Commit: in PR.") and stamp the full commit hash, and ensure the same
entry also explicitly lists D-ids, the tests run, and the outcome so the record
is immutable and auditable.

Source: Coding guidelines


## 2026-06-09 — plan addendum: left-prefix parsing confirmed + D-PG-7 deterministic foveated tree-builder

**Main thread (Fable).** User direction validated against identity.rs octets: GUID left half (class+tree) is order-preserving plain bytes ⇒ Cypher label/subtree patterns = byte-prefix predicates on FixedSizeBinary(16) via Lance zone-maps; similarity leg (RaBitQ/CAM-PQ/Binary16K) rides the same row. Two caveats recorded (namespace-first ordering; ≤4-nibble GUID prefix). New M6 + D-PG-7: NiblePath assignment computable by deterministic hierarchical partition ("deterministic Louvain" → concretely ndarray CLAM pole-split, 16-way, capacity-bounded ⇒ foveation), with the iron requirement APPEND-STABLE (bootstrap once; minted paths never move; layout_version gates changes). Query-time twin noted (cascade / bgz-tensor HHTL cache). Plan §8 + STATUS_BOARD row. Commit: this.
Expand Down
56 changes: 56 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,59 @@
## 2026-06-12 — E-OUTER-BOUNDARY-IS-ORM-1 — there is only one boundary, and it is ontology-mediated

**Status:** FINDING (PR #487 tombstone commit makes this source-true; OGAR class + `SoaEnvelope` + Lance columnar I/O is the realized triangle).
**Confidence:** High — every prior candidate inner boundary has now been removed or recast as ownership transfer; no surviving call-site asserts otherwise.

**The reframing.** `CollapseGateEmission` looked like a wire format for an
inter-mailbox seam. It was, in fact, the workspace's last hand-written DTO
asserting an **inner** boundary that does not exist. Between mailboxes there is
only ownership transfer (Rust move semantics — `E-CE64-MB-4` makes UB a compile
error); within a mailbox there are only in-place bytes (`SoaEnvelope` geometry).
The only real boundary is the **outer** one — where the SoA meets persistence
and meaning — and that boundary is **ontology-mediated, not DTO-mediated**.

**This is exactly the ORM pattern.**

| ORM | This substrate |
|---|---|
| Table schema | OGAR class (label, fields, tools, templates) |
| Column mapping | `SoaEnvelope` + `ColumnDescriptor` (byte geometry) |
| Active record | register-bank slice wrapped by the class view |
| SQL writer | Lance columnar I/O (writes LE bytes from the in-place store) |
| Hand-rolled row DTO | `CollapseGateEmission` — **the anti-pattern** |

In an ORM you don't write a bespoke struct per table-crossing; the mapping
derives the persisted shape from the schema. Here likewise: the OGAR class
supplies the semantics, the envelope supplies the geometry, Lance does the
writing — and any independent carrier struct at that seam is **schema drift by
definition** (per #477's "every DTO is a derived view of an OGAR class"). The
emission type was not just unused; it was a second, ontology-bypassing
description of data the class layer already described.

**Why `MailboxId` / `MergeMode` / `GateDecision` survive.** They are vocabulary
*of* the ontology side — addressing (which register bank), merge policy (how
overlapping writes compose), gate decision (apply / block / hold). They are
not parallel descriptions of row data; they are the operational verbs the
ontology binds.

**Consequences (the test for any future PR):**

- **Inner seams are ownership transfers**, never carrier types. If a proposed
type looks like "DTO crossing from mailbox A to mailbox B", it is wrong by
construction — the SoA is the DTO; the move is the crossing.
- **The outer seam has exactly one description.** OGAR class on one side,
`SoaEnvelope` on the other, Lance in between. A new "wire format" at this
seam is the same anti-pattern by a different name — propose a new column or
a class-template specialization instead.
- **Hand-rolled active-record structs are ORM-bypass.** If you find yourself
serializing-then-deserializing fields the class already names, the class
template + `ClassView` + `FieldMask` is the right reach.

**Cross-ref:** PR #477 (three-tier model + "what does NOT exist" table); PR
#487 (tombstone commit — emission artifacts removed; `consume_firing` is the
in-place ownership successor); `docs/architecture/soa-three-tier-model.md`
Comment on lines +51 to +53

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Keep #487 off its own line.

#487 at the start of Line 52 is parsed as an ATX heading (MD018), which breaks the cross-reference and trips markdownlint. Keep it on the same line as PR or escape the hash.

Fix
- **Cross-ref:** PR `#477` (three-tier model + "what does NOT exist" table); PR
- `#487` (tombstone commit — emission artifacts removed; `consume_firing` is the
+ **Cross-ref:** PR `#477` (three-tier model + "what does NOT exist" table); PR `#487` (tombstone commit — emission artifacts removed; `consume_firing` is the
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Cross-ref:** PR #477 (three-tier model + "what does NOT exist" table); PR
#487 (tombstone commit — emission artifacts removed; `consume_firing` is the
in-place ownership successor); `docs/architecture/soa-three-tier-model.md`
**Cross-ref:** PR `#477` (three-tier model + "what does NOT exist" table); PR `#487` (tombstone commit — emission artifacts removed; `consume_firing` is the
in-place ownership successor); `docs/architecture/soa-three-tier-model.md`
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 52-52: No space after hash on atx style heading

(MD018, no-missing-space-atx)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/board/EPIPHANIES.md around lines 51 - 53, The cross-reference line
contains an unescaped leading hash (`#487`) that is being parsed as an ATX
heading; edit the cross-ref so `#487` is not at the start of its line — either
move it to the same line as the preceding "PR" token (e.g., "PR `#487`") or escape
the hash (`\`#487``) so the markdown linter (MD018) no longer treats it as a
heading.

Source: Linters/SAST tools

(register-file analogy + ORM mapping); `E-OGAR-NORTHSTAR-1` (the class spine
this boundary binds to); `I-LEGACY-API-FEATURE-GATED` (legacy carrier paths
must route to the canonical mapping or be removed — the tombstone is removal).
## 2026-06-10 — E-PROBE-MANTISSA-1 — golden-mantissa centroid placement measured: beats uniform-random on coverage AND pile-up; PHASE-1 bit-exactness green

**Status:** FINDING (probes run first-hand: `crates/helix/tests/probe_mantissa_fill.rs`, 4/4 green)
Expand Down
4 changes: 2 additions & 2 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Types live in `crates/cognitive-shader-driver/src/wire.rs` behind `--features se

**Sprint-11/12 D-CSV substrate types (2026-05-16, PRs #383-#389)**:
- `lance-graph-contract::qualia`: `QualiaI4_16D` (16-dim signed-i4, 9× compression vs `[f32; 18]`), `QualiaI4Column` (sibling SoA column in cognitive-shader-driver).
- `lance-graph-contract::collapse_gate`: `CollapseGateEmission` (Vec-of-`(u16 target, CausalEdge64)` wire format; zero-dep — SmallVec optimization deferred as TD-COLLAPSE-GATE-SMALLVEC-1).
- `lance-graph-contract::collapse_gate`: ~~`CollapseGateEmission`~~ **REMOVED 2026-06-11** (PR #477 three-tier model tombstone commit — zero-copy SoA, no inter-mailbox handoff type; TD-COLLAPSE-GATE-SMALLVEC-1 closed as moot). `MailboxId` / `MergeMode` / `GateDecision` remain.
- `lance-graph-contract::mailbox` / `attention_mask`: `MailboxId` (canonical id type), `MailboxSoA<N>` (SoA mailbox with W-slot + plasticity accumulator + `apply_edges`), `AttentionMaskSoA`, `AttentionMaskActor`, `AttentionMaskBackend` trait.
- `lance-graph-contract::sigma_tier`: `SigmaTierBands`, `SigmaTierRouter` (Rubicon-resonance ΔF + threshold dispatch), `DispatchOutcome`, `RestReason` (Σ-tier crate surface).
- `lance-graph-contract::witness`: `WitnessCorpus` (CAM-PQ-indexed; D-CSV-6a partial in PR #386, full 6b sprint-12), `WitnessEntry`, `WitnessId`, `WitnessIndexHashMap` (anchor + chain invariant).
Expand Down Expand Up @@ -212,7 +212,7 @@ Types live in `crates/cognitive-shader-driver/src/wire.rs` behind `--features se

**Sprint-12/13 explicit deferrals (2026-05-16):**

- **TD-COLLAPSE-GATE-SMALLVEC-1** — SmallVec optimization for `CollapseGateEmission` (currently Vec to preserve contract zero-dep invariant). Revisit only if profiling shows the heap allocation is hot.
- **TD-COLLAPSE-GATE-SMALLVEC-1** — CLOSED 2026-06-11 as moot: `CollapseGateEmission` removed entirely (PR #477 tombstone commit), nothing left to optimize.
- **TD-SIGMA-TIER-THRESHOLDS-1** — Σ10 VAMPE-coupled Jirak-derived threshold refinement (D-CSV-15). Hand-tuned acceptable through sprint-12 per `I-NOISE-FLOOR-JIRAK`; principled Jirak 2016 derivation forwarded to sprint-13+ VAMPE coupled-revival track.
- **ndarray `parallel`-feature `par_*` rayon variants** — productized substrate ships sequentially in PR #147; rayon work-stealing wraps deferred to sprint-14+ behind an opt-in feature gate.

Expand Down
2 changes: 2 additions & 0 deletions .claude/board/TECH_DEBT.md
Original file line number Diff line number Diff line change
Expand Up @@ -936,6 +936,8 @@ Cross-ref: `docs/TYPE_DUPLICATION_MAP.md`; `crates/lance-graph-contract/src/mul.

## 2026-05-16 — TD-COLLAPSE-GATE-SMALLVEC-1: `CollapseGateEmission` uses `Vec` instead of `SmallVec`; zero-dep constraint was the tradeoff

**Status: CLOSED 2026-06-11 (moot)** — `CollapseGateEmission` was removed entirely per the PR #477 three-tier model (zero-copy SoA, no inter-mailbox handoff type; tombstone commit). No carrier, no Vec, nothing to optimize.

**Status:** Open
Comment on lines +939 to 941

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Resolve conflicting status lines for this debt row.

Line 939 marks this row as closed, but Line 941 still says **Status:** Open. Keep a single authoritative status line to avoid conflicting board state.

🛠️ Proposed fix
-**Status: CLOSED 2026-06-11 (moot)** — `CollapseGateEmission` was removed entirely per the PR `#477` three-tier model (zero-copy SoA, no inter-mailbox handoff type; tombstone commit). No carrier, no Vec, nothing to optimize.
-
-**Status:** Open
+**Status:** CLOSED 2026-06-11 (moot) — `CollapseGateEmission` was removed entirely per the PR `#477` three-tier model (zero-copy SoA, no inter-mailbox handoff type; tombstone commit). No carrier, no Vec, nothing to optimize.

As per coding guidelines, governance files should keep status updates authoritative on the status line.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Status: CLOSED 2026-06-11 (moot)**`CollapseGateEmission` was removed entirely per the PR #477 three-tier model (zero-copy SoA, no inter-mailbox handoff type; tombstone commit). No carrier, no Vec, nothing to optimize.
**Status:** Open
**Status:** CLOSED 2026-06-11 (moot) — `CollapseGateEmission` was removed entirely per the PR `#477` three-tier model (zero-copy SoA, no inter-mailbox handoff type; tombstone commit). No carrier, no Vec, nothing to optimize.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/board/TECH_DEBT.md around lines 939 - 941, The file contains
conflicting status lines for the CollapseGateEmission debt row: one line says
"Status: CLOSED 2026-06-11 (moot)" and later it still has "**Status:** Open";
remove or update the redundant/incorrect line so only a single authoritative
status remains for the CollapseGateEmission entry (keep the CLOSED line per the
PR `#477` note and delete the "**Status:** Open" line or replace it with matching
closed status).

Source: Coding guidelines

**Priority:** P3
**Scope:** crate:lance-graph-contract domain:perf
Expand Down
37 changes: 31 additions & 6 deletions .claude/plans/cycle-coherent-soa-snapshot-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,21 +86,46 @@ row-scale and byte-scale deinterlace use the same clock.

## Deliverables

### D-SOA-SNAP-1 — `MailboxSoaSnapshot` type in lance-graph-contract
### D-SOA-SNAP-1 — `MailboxSoaSnapshot<C>` type in lance-graph-contract

A `MailboxSoaSnapshot` struct: `cycle: u32`, `cols: Vec<Arc<MultiLaneColumn>>`.
Snapshot is `Send + Sync`. No reference to the originating `MailboxSoa`.
This is a point-in-time read — immutable after creation.
> **REVISED 2026-06-11 (PR #477 CodeRabbit Critical):** the original sketch
> (`cols: Vec<Arc<MultiLaneColumn>>` directly in contract) would create a
> `lance-graph-contract → ndarray` dependency — `MultiLaneColumn` is an
> ndarray type, and the contract crate is zero-dep by iron invariant. The
> snapshot type is therefore **generic over the column type**; the concrete
> binding happens in lance-graph, never in contract.

A `MailboxSoaSnapshot<C>` struct: `cycle: u32`, `cols: Vec<Arc<C>>`.
Snapshot is `Send + Sync` (when `C: Send + Sync`). No reference to the
originating `MailboxSoa`. This is a point-in-time read — immutable after
creation. Contract never names `MultiLaneColumn`; it only carries the
generic parameter.

### D-SOA-SNAP-2 — `SnapshotProvider` trait in lance-graph-contract

```rust
// In lance-graph-contract (zero-dep — no ndarray import):
pub struct MailboxSoaSnapshot<C> {
pub cycle: u32,
pub cols: Vec<Arc<C>>,
}

pub trait SnapshotProvider {
fn snapshot(&self) -> MailboxSoaSnapshot;
type Column;
fn snapshot(&self) -> MailboxSoaSnapshot<Self::Column>;
}

// In lance-graph (the binding side):
// impl SnapshotProvider for MailboxSoa {
// type Column = ndarray::simd::MultiLaneColumn;
// fn snapshot(&self) -> MailboxSoaSnapshot<MultiLaneColumn> { … }
// }
```

Zero deps in contract. `MailboxSoa` in lance-graph implements it.
Zero deps in contract — the associated type defers the column choice to the
implementor. `MailboxSoa` in lance-graph binds `Column = MultiLaneColumn`;
ndarray never learns the snapshot exists, contract never learns ndarray
exists, lance-graph binds them (same triangulation as `SoaEnvelope`).

### D-SOA-SNAP-3 — Arc-swap write path in `MailboxSoa::advance_phase`

Expand Down
14 changes: 14 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,20 @@ VSA carrier).
> emissions + AriGraph SPO-G quads + BindSpace SoA columns. The bundle MATH
> here (§I-SUBSTRATE-MARKOV Chapman-Kolmogorov, §I-VSA-IDENTITIES) is
> **untouched** — only the cross-boundary carrier is scoped out.
>
> **2026-06-11 supersession (PR #477 three-tier model + tombstone commit):**
> the Baton/emission framing above is itself now SUPERSEDED. There is **no
> inter-mailbox handoff type at all** — `CollapseGateEmission`,
> `MailboxSoA::emit()`, and `wire_cost_bytes() = 13 + 10·baton_count` were
> removed from source (the tombstone commit). The ratified invariant: every
> SoA envelope is **zero-copy from creation to Lance tombstone**; Lance's own
> columnar I/O writes LE bytes from the in-place backing store described by
> `SoaEnvelope`; nothing is serialized or transmitted between mailboxes.
> `last_emission_cycle` was renamed `last_active_cycle` (in-place consumption
> stamp). Canonical reference: `docs/architecture/soa-three-tier-model.md`.
> What survives from this block: Vsa16kF32-never-crosses-boundaries, the
> mailbox-as-owner compile-time safety argument (E-CE64-MB-4), and the bundle
> math — all untouched.

```
Sentence → FSM → RoleKey_fp × content_fp → vsa_bundle (Σ) with ρ^d braiding
Expand Down
Loading
Loading