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
33 changes: 27 additions & 6 deletions .claude/board/BREADCRUMBS.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,17 @@ Coordination happens in Linear (`CC: Thread` label `Breadcrumb`, milestone

## Crumbs

### BC-2026-10-23-14 — where a state sits inside its cell decides where it goes next
**Observation:** In EXO-129, about half of the members of a palette cell go to
a different next cell than the cell's modal result (purity ≈ 0.47). A table
learned from reached states does worse on population starts than on the
states it saw. In the XOR-group world (purity 1.0) the exact law composes
even under noisy snapping.
**Receipt:** lance-graph #1731,
`entries/2026-10-23-exo129-learned-lut-preregistration.md`.
**Rhymes-with:** BC-2026-10-23-1, BC-2026-10-23-4
**Cluster:** NAMED → IDEAS 2026-10-23 "Lumpability as the closure check"

### BC-2026-10-23-13 — a replay receipt is sealed before landing, and its witness is issued only by the write path
**Observation:** D-TGB-4's receipt is built and sealed at stage time; a
landing is accepted only with a `CommitWitness` that `VersionStore::commit_cycle`
Expand Down Expand Up @@ -130,7 +141,7 @@ if sort typing is accepted as closure. Same probe, near-miss counterexample:
6 414–15 310 row-ORs, so closure decides correctness, not cost.
**Receipt:** lance-graph #1707, `entries/2026-10-22-drmc-5-assoc-probe.md`.
**Rhymes-with:** BC-2026-10-23-4, BC-2026-10-23-5
**Cluster:** RHYME (trail T-CLOSURE, Linear EXO-132)
**Cluster:** NAMED → IDEAS 2026-10-23 "Lumpability as the closure check" (trail T-CLOSURE, Linear EXO-132)

### BC-2026-10-23-5 — two-valued rewrites break on a carrier that holds NULL
**Observation:** `set_algebra::normalize` (De Morgan, lane covers) is sound on
Expand All @@ -143,7 +154,7 @@ two-valued `normalize` wrong on 474 of 2000 expressions against PostgreSQL
16.14, `normalize_kleene` equal on 2000/2000. Same shape in #1686 / #1687
(`bool_or`/`bool_and` read NULL as FALSE).
**Rhymes-with:** BC-2026-10-23-1, BC-2026-10-23-4
**Cluster:** RHYME (trail T-CLOSURE, Linear EXO-132)
**Cluster:** NAMED → IDEAS 2026-10-23 "Lumpability as the closure check" (trail T-CLOSURE, Linear EXO-132)

### BC-2026-10-23-4 — the same join is right under Distinct and wrong under Bag
**Observation:** D-RFT-1's composition gives the right answer under Distinct
Expand All @@ -152,15 +163,15 @@ a bit product on the support. The carrier's closure under the multiplicity
operation decides correctness.
**Receipt:** lance-graph #1685.
**Rhymes-with:** BC-2026-10-23-1, BC-2026-10-23-2, BC-2026-10-23-3
**Cluster:** RHYME (trail T-CLOSURE, Linear EXO-132)
**Cluster:** NAMED → IDEAS 2026-10-23 "Lumpability as the closure check" (trail T-CLOSURE)

### BC-2026-10-23-3 — Warshall closure is well defined because the register is closed under ∨ and ∧
**Observation:** DR256's transitive closure over the 256×256 bit register
needs no snapping. Every intermediate stays a 256×256 bit matrix.
**Receipt:** `dir-rmap-probe` Qr register (D-QR plans, INTEGRATION_PLANS
catch-up 2026-10-23).
**Rhymes-with:** BC-2026-10-23-1, BC-2026-10-23-2, BC-2026-10-23-4
**Cluster:** RHYME (trail T-CLOSURE, Linear EXO-132)
**Cluster:** NAMED → IDEAS 2026-10-23 "Lumpability as the closure check" (trail T-CLOSURE)

### BC-2026-10-23-2 — spectral radius is degenerate on Boolean and byte-map carriers
**Observation:** On the Boolean DAG nest ρ = 0 (nilpotent), and on the finite
Expand All @@ -170,7 +181,7 @@ it acts in.
**Receipt:** evaluated in session 01G22yT6htkcdyXsihxxXdrg on 2026-10-23
(review of an external relay); no PR.
**Rhymes-with:** BC-2026-10-23-1, BC-2026-10-23-3, BC-2026-10-23-4
**Cluster:** RHYME (trail T-CLOSURE, Linear EXO-132)
**Cluster:** NAMED → IDEAS 2026-10-23 "Lumpability as the closure check" (trail T-CLOSURE)

### BC-2026-10-23-1 — a compose table collapses because its codebook is not closed under bind
**Observation:** `ComposeTable` agreement with exact composition drops to
Expand All @@ -179,7 +190,7 @@ codebook's support, so every hop snaps.
**Receipt:** lance-graph #1726,
`entries/2026-10-23-ps2-compose-chain-preregistration.md`.
**Rhymes-with:** BC-2026-10-23-2, BC-2026-10-23-3, BC-2026-10-23-4
**Cluster:** RHYME (trail T-CLOSURE, Linear EXO-132)
**Cluster:** NAMED → IDEAS 2026-10-23 "Lumpability as the closure check" (trail T-CLOSURE)

### Trail T-CLOSURE — is the carrier closed under the operation the plan composes with?
Four crumbs from four independent sources: a probe, a review, a register
Expand All @@ -191,6 +202,16 @@ must refit the carrier.
**Kill:** a closed carrier on which the composition still fails.
**First probe:** TORQUE row T-2026-10-23-1 (EXO-129).
**Verdict:** RHYME, 2026-10-23.
**Naming attempt, 2026-10-23 (after crumb BC-2026-10-23-14):** *lumpability* (Kemeny–Snell).
A partition of the state space composes under an operation exactly when it is
lumpable for that operation, i.e. when every member of a cell goes to the
same cell. Purity is its data-only observable. Named, not adopted. See
IDEAS 2026-10-23. Whether crumbs 2 and 3 (spectral radius, Warshall over
∨/∧) are instances of it, or only rhyme with it, is still open.
Scope limit from session 013z (crumbs BC-2026-10-23-5 and -6 on this trail,
#1730, NULL/K3 carrier and sort-closed composition): closure decides
CORRECTNESS, not cost. Those crumbs' `Cluster:` lines are regraded to NAMED (#1730 is on main).

**Evidence appended 2026-10-23 (session_013z2e1YXkm6o6HNrDn5BPWA):** crumbs
BC-2026-10-23-5 (K3 NULL, independent of the palette and DR256 lines) and
BC-2026-10-23-6 (sort-closed composition, weaker). Naming attempt, HYPOTHESIS,
Expand Down
13 changes: 9 additions & 4 deletions .claude/board/FRUITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,17 @@ Generated by `.claude/tools/fruits_index.py --write`. Do not hand-edit:
add or change a `**Fruit:**` line on the ledger row and regenerate.
CI fails when this file is stale.

Open: 24. Closed: 0.
Open: 24. Closed: 1.

## discovery torque

| tier | row | status | ledger |
|---|---|---|---|
| High-signal | T-2026-10-23-1 — does a PaletteLut learned from data compose where ComposeTable does not? | TORQUE | `TORQUE.md` |
_none open_

## innovation debt

| tier | row | status | ledger |
|---|---|---|---|
| High-signal | 2026-10-23 — Lumpability as the closure check: a palette composes under an operation only if its cells are lumpable for it, and purity measures that | Open | `IDEAS.md` |
| High-signal | 2026-10-23 — One replay that checks proof, receipt and commit witness together | Open. | `IDEAS.md` |
| High-signal | 2026-10-23 — OGAR #357's first kill test (TLAC-P01) is now buildable from real guards | Open. | `IDEAS.md` |
| High-signal | 2026-10-23 — The five unrun D-DRMC probes: X6, X7, X8, X16, X18 | Open | `IDEAS.md` |
Expand Down Expand Up @@ -50,3 +49,9 @@ Open: 24. Closed: 0.
| Heavy | ISS-RETRACTION-PROVENANCE — per-derived-cell provenance for selective retraction is undecided (2026-10-20) | OPEN. **Basis:** VERIFIED-IN-CODE (no source bitset or read-provenance plane in `crates/`). | `ISSUES.md` |
| Heavy | ISS-GATHER-HOP-1616 — the merged `OutgoingHop` reads positions taken from another lane's values (2026-10-19) | 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]`). | `ISSUES.md` |

## closed (kept for traceability)

| tier | row | status | ledger |
|---|---|---|---|
| High-signal | T-2026-10-23-1 — does a PaletteLut learned from data compose where ComposeTable does not? | KILLED (#1731: the learned table falls below 0.90 at k=2 in both W1 and W2) | `TORQUE.md` |

21 changes: 21 additions & 0 deletions .claude/board/IDEAS.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,27 @@ Agents filter by `@`-mention or domain to see what's theirs.

(Prepend new ideas here with today's date. Format:)

## 2026-10-23 — Lumpability as the closure check: a palette composes under an operation only if its cells are lumpable for it, and purity measures that

`[P2 @palette-engineer @truth-architect domain:codec/palette]`

**Status:** Open
**Priority:** P2
**Scope:** @palette-engineer domain:codec
**Fruit:** High-signal

Named from crumb trail T-CLOSURE (`BREADCRUMBS.md`, Linear EXO-132; crumbs BC-1..4 and BC-2026-10-23-14 here, BC-5/-6 from #1730) after EXO-129 (#1731). A one-byte palette state can be composed by a 256×256 table, learned or derived, only if the cell determines the next cell under the operation. That is lumpability of the partition in the Markov-chain sense. **Purity**, the share of observed transitions that equal their cell's modal result, is a data-only observable for it. Measured so far: purity 1.0 → the exact law composes at every k (XOR-group world); purity ≈ 0.47 → no table reaches 0.03 at k = 2 (P-S2 worlds). The rank evidence is thin (three distinct points). Scope (from #1730's NULL/K3 crumb): closure decides correctness, not cost. The candidate use is a plan-time `closed(carrier, op)` check that decides lookup vs snap vs refit before a composition is compiled into a LUT.

**Next probe (not run):** on real Moore/DR pair data with labels, measure purity per operation and test whether a bar (for example P ≥ 0.99) separates compositions that hold at k = 2..64 from those that do not. Distribution-dependent, so it needs real data (GOLDSTAUB G-2026-10-23-1).
**Kill:** a cell partition with purity ≥ 0.99 whose k = 2 composition still falls below 0.90, or one with purity < 0.9 that composes at ≥ 0.90.

Cross-ref: TORQUE T-2026-10-23-1 (KILLED), #1726, #1731, EXO-129, EXO-132.

**Scope sharpened 2026-10-23 (EXO-50, from three sessions; all HYPOTHESIS):**
- Purity tests *deterministic* lumpability (the next cell is independent of the representative). Purity below 1 refutes a single-valued table, not *strong* lumpability of a stochastic map (equal block mass from every representative); a sample cannot certify either (GPT:gpt-ada-01). A real-data gate has to say which of the two it tests.
- The condition is that the map into the carrier commutes with the operation and with the final measure, not only that the carrier is closed. BC-4 (Distinct closed under join, Bag wrong) and BC-5 ({T,F} closed, NULL has no image) are closed carriers that fail (session_019fbZ92, #1732).
- Crumb 2 is an instance through the support map N → B, lumpable for ∨/∧ and not for counting, so it should fail exactly where BC-4 fails. Crumb 3 is the identity quotient and cannot discriminate (session_01VncKoy).

## 2026-10-23 — One replay that checks proof, receipt and commit witness together

`[P1 @thought-struct-scribe @truth-architect domain:thought-git D-TGB-7 D-RFT-5 D-DRMC]`
Expand Down
8 changes: 7 additions & 1 deletion .claude/board/TORQUE.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ landed in (`epiphany_provenance.py`).
- 2026-10-23: P-S2 (#1726). `ComposeTable` is UNSTABLE in both worlds
(agreement 0.025 / 0.043 at k=2), because the codebook is not closed
under bind.
- 2026-10-23: EXO-129 probe (#1731, pre-registered in
`entries/2026-10-23-exo129-learned-lut-preregistration.md`). The learned
table reads 0.017 / 0.009 at k=2 in W1 / W2, worse than ComposeTable.
Purity (≈ 0.47 there) ranks k=2 agreement across six settings
(ρ = 0.935, but only three distinct points), and P^k magnitude fails. The
next step moved to IDEAS 2026-10-23 "Lumpability as the closure check".
**Next probe:** pre-register, then build a synthetic world with a known true
transition map. Compare a `PaletteLut` filled from observed transitions
against `ComposeTable` and the exact chain at k = 1..6, in two unlike worlds.
Expand All @@ -58,4 +64,4 @@ worlds.
**Promote:** it holds ≥ 0.90 at k=2 in both worlds, and a disable run
(shuffled transitions) collapses it.
**Last moved:** 2026-10-23
**Status:** TORQUE
**Status:** KILLED (#1731: the learned table falls below 0.90 at k=2 in both W1 and W2)
Loading