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
36 changes: 36 additions & 0 deletions .claude/board/entries/2026-10-06-dav-carrier-invariance-quack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# 2026-10-06 — DAV active-observation probe: carrier invariance under Quack (Round 1)

## MEASURED

`crates/jc/examples/dav_active_observation_probe.rs` (`carrier_differential`)
runs the #1344 world through two carriers:

- A: `[Option<bool>; N]` (the #1344 reference);
- B: value lane (`LaneRef::U32`) + validity plane, the plane being the
horizon's own `independent_roots` word, borrowed with `slice::from_ref`.

Candidate selection in B is one Quack filter, `is_null(VALID) AND
Cmp::Range(SITE)`, lowered by `lance_graph_quack::lower` and executed by
`lance_graph_mask_risc::execute_into` (`Terminal::Keep`). Routes, scoring and
revision are shared code (`trait Observed`).

Equal across 5 apertures × 4 NULL payloads (zero, hidden truth, its
negation, garbage) × 2 enumeration orders: candidate ids, disagreement, EWA
weight, score (bit-exact), order; and, for the DAV and ordinal cycles:
pre-observation disagreement, `RevisionDelta` (kind, effect, resulting),
post-replay disagreement, residual, final observed/value state.

Disable runs, each red: frontier bound to the nullable `VALUE` column (the
`sql_where` silence assert fires); reader passes NULL payload through (A≠B
under the truth payload); leaky twin made non-leaky (the can-fire assert);
ordinal tie-break dropped (the existing #1344 order check fires first);
frontier `hi` off by one.

## OPEN

- `Cmp::Range`'s provenance `Col` (`SITE`) names no resident lane: the
ordinal axis has no lane, and `Pred::Range` reads none. It is minted by
hand here, not through `Filter::prefix_facet` + `OrderedLaneWitness`.
- Copies on the B path: the `u32` value lane (N from `projected_claims`),
the kept mask (`words_for(N)`), `Scratch::for_program`, the set-bit
`Vec<usize>`, the `Vec<Candidate>`. Round 2 audits these.
53 changes: 53 additions & 0 deletions .claude/board/entries/2026-10-06-dav-resident-reading-round2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# 2026-10-06 — DAV probe: resident bit-plane carrier, population boundary (Round 2)

## MEASURED

Carrier C in `crates/jc/examples/dav_active_observation_probe.rs`
(`resident_differential`) reads the horizon's `independent_roots` (validity)
and `projected_claims` (value) as two borrowed `&[u64]` planes. It builds no
value lane. A == B == C over 5 apertures × 4 poisons × 2 orders, covering
candidate ids, disagreement, EWA weight, score and ranking. The DAV and
ordinal cycles also match: delta, resulting horizon, replay, residual and
final state. Poison for C sets `projected_claims` at unobserved sites.

C has no SQL NULL semantics (a plane is never nullable to Quack). B stays the
NULL test.

k = 1 is a streaming fold over the kept mask (`top1_fold`, state one
`Option<Candidate>`). It matches A's `ranked[0]` everywhere. The ordinal
pick is the lowest set bit.

Heap @ a=0.55, 2 candidates, plans lowered outside the window:
- C candidate selection + visitation: 0 B
- C streaming top-1: 8 B = 2 × 4 B, from `jc::quorum::pairwise_agreement_u8`'s
result `Vec`, which is route semantics and unchanged
- C full rank: 586 B; B full rank: 762 B

Derived population bytes on C: the kept mask, 8 B, a caller-owned stack
array. `stay-on-the-lane.md` §6 counts that as materialization. The candidate
program's lowering is `Tiled`; no fused lowering keeps membership without
writing it.

Disable runs, each red: leaky gate (projected bit at an unobserved site read
as observed-true); C selecting on the value plane; one value bit flipped; the
fold's tie-break dropped; the validity gate removed; a `Vec` row-id list in
the selection window; the tie-break can-fire made vacuous.

Inverting EVERY value bit leaves ranking unchanged. The route disagreement is
symmetric under a global flip, so only the final-state check catches it.

## FINDING

No shipped terminal returns a position. The list ends at Count/Any/All/
Masked{Sum,Min,Max}I32/Keep/Scatter*/CountKeyRuns/Group*.
`MaskedMaxI32` returns a value, not its row. The DAV score is not a lane
either: it is per-site route semantics in Rust. So top-1 in mask-risc would
need two things. One is a masked argmax with an ordinal tie-break, over a lane
whose order matches the score order exactly. The other is the score as a
lane, which would be a population-sized derived lane. Neither is built.

## OPEN

- The kept mask is the first population object. Visiting it needs
membership out of mask-risc. No fused lowering hands a word to a consumer
visitor without a `Keep` write.
4 changes: 3 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +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.

219 entries, 2026-08-06 .. 2026-10-05.
221 entries, 2026-08-06 .. 2026-10-06.

| date | entry id | finding | file |
|---|---|---|---|
| 2026-10-06 | `dav-resident-reading-round2` | | [2026-10-06-dav-resident-reading-round2.md](2026-10-06-dav-resident-reading-round2.md) |
| 2026-10-06 | `dav-carrier-invariance-quack` | | [2026-10-06-dav-carrier-invariance-quack.md](2026-10-06-dav-carrier-invariance-quack.md) |
| 2026-10-05 | `text-to-numeric-boundary-inventory` | | [2026-10-05-text-to-numeric-boundary-inventory.md](2026-10-05-text-to-numeric-boundary-inventory.md) |
| 2026-10-05 | `report-pair-key-and-stack-recon` | | [2026-10-05-report-pair-key-and-stack-recon.md](2026-10-05-report-pair-key-and-stack-recon.md) |
| 2026-10-05 | `quack-two-world-frontend` | | [2026-10-05-quack-two-world-frontend.md](2026-10-05-quack-two-world-frontend.md) |
Expand Down
5 changes: 5 additions & 0 deletions crates/jc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ lance-graph-contract = { path = "../lance-graph-contract" }
# neural-debug runtime registry. Dev-deps: examples only, not the library.
p64 = { path = "../../../ndarray/crates/p64" }
neural-debug = { path = "../neural-debug" }
# `dav_active_observation_probe` only — the Round-1 carrier differential runs
# the probe's candidate selection as a Quack filter over a value lane +
# validity plane, executed by the one mask-risc evaluator.
lance-graph-quack = { path = "../lance-graph-quack" }
lance-graph-mask-risc = { path = "../lance-graph-mask-risc" }

[[example]]
# A0/A1/A2 Goursat probe (TD-PILLAR11-SCIENTIFIC-LOOPS-BYPASS-NDARRAY-SIMD-1).
Expand Down
Loading
Loading