Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
c7aeddd
D-EPI-MIG-INVENTORY: inventory every reader and writer of CE64 bits 5…
claude Oct 7, 2026
440bcea
D-EPI-CANON-0: canonical joint EpistemicState5 reading of CE64 bits 5…
claude Oct 7, 2026
24bdd49
D-EPI-MIG-0: migrate the 59..63 probes to the canonical EpistemicStat…
claude Oct 7, 2026
9675825
D-EPI-MIG-0: migrate dismech EdgeRole, mark legacy probes, board + docs
claude Oct 7, 2026
1a21a71
Board: anchor the TECH_DEBT layout.rs citation by symbol, not line range
claude Oct 7, 2026
6c395c2
D-EPI-CANON-0 rev: EpistemicState5 = Topology2 x Certification3 (Cart…
claude Oct 7, 2026
18f3618
Board: Cartesian V1 re-inventory, MIG-0 entry, issues, README
claude Oct 7, 2026
350e364
Pin the streamdto S4 reread to code 4, not code 7
claude Oct 7, 2026
2bd4c6e
Probes: write and mask bits 59..63 through the declared field
claude Oct 7, 2026
6412707
Census: three-axis sweep of bits 59..63 after the Codex finding
claude Oct 7, 2026
6feb725
D-EPI-POP-0: facts -> 32-state population as one u32
claude Oct 7, 2026
47bd36b
D-EPI-POP-0: pin exact population sets; board rows and inventory
claude Oct 7, 2026
eb5e949
D-EPI-POP-0: facts_population, factor-hold falsifiers, code-by-code spec
claude Oct 7, 2026
6026b64
D-EPI-LEGACY-DEPROJECT-0: route the old 59..63 readers by what they a…
claude Oct 7, 2026
68008a1
causal-edge: clear the two clippy lints this PR introduced
claude Oct 7, 2026
2d9bf0e
D-EPI-LEGACY-DEPROJECT-0: record disable runs and gates
claude Oct 7, 2026
0ba5d24
Board: mark the pre-Cartesian codebook and census as historical
claude Oct 7, 2026
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
23 changes: 21 additions & 2 deletions .claude/board/ISSUES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
## ISS-EPI5-CODEBOOK-LACKS-P7A-CONJUNCTIONS — P7a certifications with no canonical EpistemicState5 code (2026-10-07)

**Status:** RESOLVED 2026-10-07 (same day, before merge) by the operator's Cartesian V1: `EpistemicState5 = Topology2 × Certification3` has a code for every P7a contract under every topology (`CausalCandidate` = 16..19, `Direct × Supports` = 12); validity is only `certification < 6`. The hand-assigned #1370 codebook that lacked these cells is gone. **Was:** OPEN — operator decision. **Basis:** TEST-PINNED in `contract::epistemic_state5` (`the_layout_is_the_two_by_three_product`, `causes_is_meaningful_under_every_topology`), `relational_certification_probe` (every contract stamps under every topology) and `epistemic_reading_conflict_probe` (census 24 agree / 0 disagree / 8 reserved). The bullets below are HISTORICAL: they describe the superseded ten-code draft, not the current contract.

- Codebook V1 (the ten #1370 codes) has no conjunction for: `CausalCandidate` under any grounding (no fact for "ordered" / "explains"); `Contributes` (= `SUPPORTS`) under `Direct`; `Associated` under an indirect grounding; `Causes` / `Related` under `Unknown` grounding; `Causes` under an unknown intermediate (the last is arguably correct to refuse).
- Consequence, measured: P7a's two observational fixtures certify `CausalCandidate`, so the certification is computed but cannot be stamped; it refuses instead of writing 61..63 (no code invented).
- **What closes it:** a V2 codebook generation that declares the missing conjunctions (which codes, and whether a new fact is minted for `CausalCandidate`) — a codebook design decision, not a migration step. Adding codes is a new generation, never an edit of V1.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

## ISS-LEGACY-59-63-READINGS-REMAIN — historical half-field readings still live in probes (2026-10-07)

**Status:** OPEN (tracking), narrowed 2026-10-07 by D-EPI-LEGACY-DEPROJECT-0 (`entries/2026-10-07-epi-legacy-deprojection.md`): the kanban hinge migrated (its band was a non-interference witness, now a canonical coordinate), `EdgeRole::band` removed, the V3 lift reads 59..63 jointly. No production path reads or writes 59..63 through a legacy lens. Remaining: the four-plane and `reasoning_band_probe` records, and the compatibility surfaces. **Basis:** VERIFIED-IN-CODE; inventory `entries/2026-10-07-epi-mig-inventory.md`.

- PROBE-ONLY legacy writers of the historical `ReasoningBand` on the certification bits, kept with `#![allow(deprecated)]` because no mapping onto `Certification3` exists (mapping `Causal` → `Supports`/`Causes` would be invention): `cognitive-shader-driver/examples/{reasoning_band_probe, probe_revision_kanban_hinge}.rs`, `lance-graph-planner/examples/probe_four_plane_causal_medium.rs`. (2026-10-07 Cartesian revision: `entropy_topology_probe` migrated — it writes only topology; `with_topology` is the canonical topology-factor writer and no longer deprecated.)
- Compatibility surfaces kept: `contract::band_reading` (regraded legacy), the deprecated `TrustTexture` / historical-band / untyped writers in `causal-edge`, the legacy lens readers (`truth`, `reasoning_band`), `dismech_counterfactual::EdgeRole::band` (beside the canonical `epistemic_raw5`).
- `CausalEdge64::temporal()` (deprecated) still composes bits 52..63 incl. 59..63 and `Network::evidence_trail` sorts by it — documented meaningless ordering, untouched.
- **What closes it:** removing each once no caller needs it; the probes are records, so they may stay as legacy indefinitely.

## ISS-EPISTEMIC-READINGS-DISAGREE-ON-BITS-61-63 — the affordance law reads 59..63 without the D-ACR-7 contract and contradicts P7a (2026-10-07)

**Status:** OPEN. **Basis:** TEST-PINNED in `cognitive-shader-driver/examples/epistemic_reading_conflict_probe.rs` (D-EPI-CONFLICT-0).
**Status:** RESOLVED 2026-10-07 by operator decision + D-EPI-CANON-0 / D-EPI-MIG-0: bits 59..63 are ONE field, `EpistemicState5`, declared in `contract::epistemic_state5` as the Cartesian `Topology2 × Certification3` (`raw5 = topology | certification << 2`, 24 meaningful / 8 reserved; declared per `(classid, rail, generation)`, projection refuses). The affordance law measures only a projected state; P7a stamps by identity packing and reads through the projection. The probe's pins were replaced by agreement tests (census 24 agree / 0 disagree / 8 reserved), not re-pinned. (An earlier same-day draft used the ten #1370 codes and measured 11 / 0 / 13; it was replaced before merge.) No residue: `ISS-EPI5-CODEBOOK-LACKS-P7A-CONJUNCTIONS` is resolved.

**Was:** OPEN. **Basis:** TEST-PINNED in `cognitive-shader-driver/examples/epistemic_reading_conflict_probe.rs` (D-EPI-CONFLICT-0).

- `contract::band_reading` (D-ACR-7) is the unified 59..63 reading contract: per `(classid, rail)` it declares the truth lens (59..60) and band presence (61..63), and projection refuses an undeclared class, an absent band and untrusted provenance. It declares the two fields separately; it has no joint 5-bit lens.
- P7a (D-GSO-7a) goes through it: class `0x0902` declared `BandPresence::Present`, bits 61..63 read through `project_band` as `0 Open … 5 Causes`, 6..7 refuse.
Expand All @@ -23,7 +42,7 @@

## ISS-NO-EVIDENCE-WRITER-FOR-EPISTEMIC-STATE — accumulated evidence never reaches what the next cycle may do (2026-10-06)

**Status:** OPEN. **Basis:** TEST-PINNED in `cognitive-shader-driver/examples/ce64_cycle_survival_probe.rs` (D-CE64-TIME-0).
**Status:** OPEN (2026-10-07 note: since D-EPI-MIG-0 a candidate writer must write a DECLARED canonical state jointly — #1379's revision writer and P7a both do; P7a can now feed the law for `Open`/`Associated`/`Related`/`Causes` under `Direct` without the #1378 disagreement. The production decision stays open.) **Basis:** TEST-PINNED in `cognitive-shader-driver/examples/ce64_cycle_survival_probe.rs` (D-CE64-TIME-0).

- `CausalEdge64::learn` (the shipped fold) revises F/C and plasticity only; it never writes bits 59..63. The #1370 eligibility law reads only bits 59..63 and Pearl. So F/C accumulation, however long it survives, cannot change `EligibleRecipes`. The probe declares the missing step locally (code 3 ↔ 7); no production writer of bits 59..63 from evidence exists (the band writers live in probes only), and `CausalEdge64::learn` itself has no production caller.
- Cross-cycle source identity is not carried: the `SupportLedger` lives one cycle, and the register holds no source set, so two different sources seen in two different cycles never count as two (`sources_split_across_cycles_do_not_combine`). Carrying it would need state the register does not have.
Expand Down
28 changes: 28 additions & 0 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
## 2026-10-07 — D-EPI-CANON-0 / D-EPI-MIG-0: CE64 bits 59..63 = `EpistemicState5` (branch `claude/epistemicstate5-ce64-bits-3oe0dq`, unmerged)

### Current Contract Inventory — net delta (`epistemic_state5.rs`, `class_view.rs`, `causal-edge`)
- New zero-dep module `lance_graph_contract::epistemic_state5`: the
Cartesian `EpistemicState5 = Topology2 × Certification3`
(`raw5 = topology | certification << 2`; 24 meaningful, 8 reserved):
`Topology2`, `Certification3` (P7a codes), `fact::*` (no `OBSERVED`;
`TOPOLOGY_UNKNOWN`, `CAUSAL_CANDIDATE` added), `TOPOLOGY_FACTS`,
`CERTIFICATION_FACTS`, `facts_v1`, derived `COMPILED_FACTS_V1`, `Epi5Gen`,
`EpistemicState5` (`new`, `decode`, `raw`, `topology`, `certification`,
`facts`, `asserts`, `with_topology`, `with_certification`), `Epi5Reading`
(`project`), `Epi5ReadError`, `Epi5Declarations::{declare, get,
project_state5}`.
- D-EPI-POP-0: `Population = u32` (bit `r` = the state whose raw5 is `r`),
`facts_population(required) -> Population` (`const fn`; the codes whose
facts include every required fact; reserved codes never appear; conjunction
is intersection), `EpistemicState5::bit()`. Transient — never stored.
- D-EPI-LEGACY-DEPROJECT-0: `lance_graph_planner::dismech_counterfactual::EdgeRole::band` (historical `ReasoningBand`) REMOVED — the canonical field is `epistemic_raw5`; `CausalEdgeV3` lifts bits 59..63 through `epistemic_raw5()` (byte layout unchanged).
- `ClassView::epistemic_reading(class, rail) -> Option<Epi5Reading>` (provided,
default `None` = refuse).
- `band_reading` regraded: legacy compatibility surface, no longer owns 59..63.
- `causal-edge`: `layout::{EPISTEMIC_SHIFT, EPISTEMIC_MASK, BITS5_MASK}`,
`CausalEdge64::{epistemic_raw5, with_epistemic_raw5}` (v1: zero / no-op),
`CausalEdgeV3::epistemic_raw5`; `with_topology` is the canonical topology-
factor writer; `with_truth`/`set_truth`/`with_routing` (TrustTexture),
`with_reasoning_band` (historical band) and `with_spare`/`set_spare`
(untyped) are `#[deprecated]`.

## 2026-10-07 — Cypher autopsy + experimental Cypher→Quack seam (branch `ccr-a86d1f2f-015t11`, PR #1376, unmerged)

### Current Contract Inventory — UNCHANGED (no contract type added; one crate added)
Expand Down
8 changes: 7 additions & 1 deletion .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,13 @@ Plan: `.claude/plans/2026-10-06-global-sudoku-replayable-orchestration-v1.md`. O
| **D-CE64-NEXTSTATE-0** | EpistemicState5 as a sparse next-state mutation of the CE64 register | In PR | `cognitive-shader-driver/examples/ce64_nextstate_probe.rs`: N1 only bits 59..63 move, all 32 codes on an edge with every field set; N2 written in cycle k through `MailboxSoA::write_row`, read in k+1 through `MailboxSoaView`; N3 the mailbox does not double-buffer (a same-cycle read sees the write), and next-cycle authority is a read discipline: start-of-cycle copy plus `last_write_cycle == cycle` treated as pending; N4 canonical LE round trip (bits 59..63 in byte 7, bits 3..7); N5 a fresh mailbox from the persisted word continues identically; N6 the shipped `with_spare` + `with_truth` compile to `bzhi; shl; or`, identical to the masked insert (LLVM folded the two), so no 5-bit writer is added. Production change: `CausalEdge64::to_le_bytes` / `from_le_bytes` (mirroring `EpisodicEdges64`) and the register contract on the type. 6 tests, 7 disable runs red |
| **D-ANCESTRY-K1-0** | StreamDto / PerturbationDto / BusDto / p64 / shader-driver ancestry vs code | Shipped (this PR) | `entries/2026-10-06-streamdto-circuit-ancestry.md`: v3 docs first, then code (git history is shallow at #1327). The k → k+1 loop was intended (`EmitMode::Persist`, `persist_cycle`, `mailbox-thoughtspace` read shim, W4a cast pairing) and left open: the driver owned its mailbox read-only. Path B |
| **D-STREAMDTO-0** | A real `StreamDto` through the shipped path to next-cycle #1370 eligibility | In PR | `cognitive-shader-driver/examples/streamdto_circuit_probe.rs`: `StreamDto` → the new `ingest_codebook_indices_soa` (straight into the SoA, cycle-gated `write_row`, encoding shared with the superseded BindSpace arm) → `dispatch` k → `persisted_row` gets `emitted_edges[0]` via the new `ShaderDriver::mailbox_mut` → `tick` → `dispatch` k+1 reads it and changes → `measure`. The edge steers k+1 only through `s_idx / 4`; the shader writes code 0, so eligibility is unchanged by the circuit (`0x20`, same as an unwritten word; code 7 gives `0x24`). Timestamp ≠ cycle; restart from LE bytes reproduces k+1. CI step added (feature-gated targets incl. `w2_differential` were never run). 6 tests + 1 lib test, 9 disable runs red |
| **D-EPI-CONFLICT-0** | Pin the disagreement between the D-ACR-7-declared P7a band and the affordance law on CE64 bits 59..63 | In PR | `cognitive-shader-driver/examples/epistemic_reading_conflict_probe.rs`: contract-projected `Causes` reads as affordance code 20 `Related` (topology 0) or refuses (1..3), `COUNTERFACTUAL_PROBE` never eligible; `CAUSES` codes 1 and 17 sit on P7a `Open` / `CausalCandidate`; codes 25, 30 on P7a reserved bands; census over 24 cells = 3 agree, 5 disagree, 16 refuse; the affordance law measures where the contract refuses (undeclared / band `Absent`). Both readings run from shared code (`shared/affordance_law.rs`, and P7a's reading moved unchanged into `shared/certification_reading.rs`, used by `relational_certification_probe` too), never copied. Pins of current state, to become agreement tests when the issue closes (`ISS-EPISTEMIC-READINGS-DISAGREE-ON-BITS-61-63`); 5 tests, 6 disable runs red (3 on the affordance codebook, 3 on P7a's: `Contributes` entailment, a reserved code admitted, `Causes` recoded) |
| **D-EPI-MIG-INVENTORY** | Every reader/writer of CE64 bits 59..63 classified before migration | Shipped (this PR) | `entries/2026-10-07-epi-mig-inventory.md` |
| **D-EPI-CANON-0** | Canonical joint `EpistemicState5` reading of bits 59..63 in the contract | In PR | `contract::epistemic_state5`: Cartesian `Topology2 × Certification3`, `raw5 = t \| c << 2`, 24 meaningful / 8 reserved; per-factor facts; declarations + `project_state5`; `CausalEdge64::{epistemic_raw5, with_epistemic_raw5}`; non-declared-reading writers deprecated |
| **D-EPI-POP-0** | Facts → 32-state population: the missing operator between one edge's coordinate (u5) and a semantic condition over all coordinates (u32) | In PR | `contract::epistemic_state5::{Population, facts_population, EpistemicState5::bit}`: `const fn`, no DSL / query object / planner. Tests pin exact sets (`CAUSES` = {20..23}, `IND_UNKNOWN \| RELATED` = {10,14,18,22}, `IND_KNOWN \| SUPPORTS` = {13,17,21}, `RELATED` = 8..23), operator == state enumeration over all 2048 requirements with no reserved code, conjunction == intersection; 2 disable runs red (any-of semantics; reserved read as fact-less) |
| **D-EPI-LEGACY-DEPROJECT-0** | Deproject the remaining `ReasoningBand` / CE64-`TrustTexture` consumers: each goes to an exact coordinate, a `facts_population(..)`, MUL, or another subsystem (e.g. counterfactual context) — never a 1:1 replacement enum | In PR | `entries/2026-10-07-epi-legacy-deprojection.md`: 6 ReasoningBand caller sites (1 certification question, 1 non-interference witness → both exact coordinates; 2 context/obsolete → compat; 2 refusal witnesses), 0 production CE64 `TrustTexture` consumers, 4 `TrustTexture` types with no bridge; `EdgeRole::band` removed; hinge + V3 lift migrated; 4 code loops → `facts_population` |
| **D-PUZZLE-0** | Sudoku / crossword / chess on the same population algebra under domain laws | Queued | after D-EPI-LEGACY-DEPROJECT-0 |
| **D-EPI-MIG-0** | Migrate readers/writers to the canonical reading; #1378 → conformance | In PR | `entries/2026-10-07-epi-mig-0.md`: affordance law (per-factor compile) + P7a (identity packing) + 6 probes + dismech + V3 lift; conformance census 24/0/8 (was 3/5/16); 3 historical-band probes cannot migrate without invention |
| **D-EPI-CONFLICT-0** | (superseded by D-EPI-MIG-0: probe converted to conformance) Pin the disagreement between the D-ACR-7-declared P7a band and the affordance law on CE64 bits 59..63 | Superseded | **Current:** the same probe is the conformance test, census 24 agree / 0 disagree / 8 reserved under the Cartesian V1 (D-EPI-MIG-0). **HISTORICAL — the pre-Cartesian pins below no longer describe the code:** `cognitive-shader-driver/examples/epistemic_reading_conflict_probe.rs`: contract-projected `Causes` reads as affordance code 20 `Related` (topology 0) or refuses (1..3), `COUNTERFACTUAL_PROBE` never eligible; `CAUSES` codes 1 and 17 sit on P7a `Open` / `CausalCandidate`; codes 25, 30 on P7a reserved bands; census over 24 cells = 3 agree, 5 disagree, 16 refuse; the affordance law measures where the contract refuses (undeclared / band `Absent`). Both readings run from shared code (`shared/affordance_law.rs`, and P7a's reading moved unchanged into `shared/certification_reading.rs`, used by `relational_certification_probe` too), never copied. Pins of current state, to become agreement tests when the issue closes (`ISS-EPISTEMIC-READINGS-DISAGREE-ON-BITS-61-63`); 5 tests, 6 disable runs red (3 on the affordance codebook, 3 on P7a's: `Contributes` entailment, a reserved code admitted, `Causes` recoded) |
| **D-MBX-CUTOVER-0** | ShaderDriver on MailboxSoA without BindSpace | In PR | `entries/2026-10-06-shaderdriver-bindspace-cutover.md`: every ShaderDriver → BindSpace edge classified (production state / shared resource / fallback / test oracle / fossil / dead). In `run()` the only mailbox-mode BindSpace read was the ontology; outside it, metrics and the builder read the singleton and `backing()` silently fell back for any mailbox not under id 0. Cutover: optional BindSpace, explicit mailbox selection with no fallback, ontology on the driver, metrics from the selected substrate; no temporal change. `tests/mailbox_cutover.rs` 8 tests, 8 disable runs red |
| **D-GSO-8** | P8: seal boundary | Shipped (#1363) | `lance-graph-planner/examples/seal_boundary_probe.rs`: internal events change only working rows; a declared `Boundary` event freezes the changed rows with the shipped `DetachedCycleBatch::freeze` into a local ledger (no `WalSink`); an unchanged boundary writes nothing; replaying the persisted events from each prior seal reproduces the next seal exactly (frame, landings, image, hash); wrong base, dropped event and swapped order each change the seal; tie limit handled by plan option 1: the key is the event's own durable unique `seq`, a tied batch is refused, and a test shows on the real `freeze` that tied keys make the seal arrival-dependent; 6 tests, 5 disable runs red. Follow-up: `apply` refuses a `seq` not greater than the last (a reuse on one row or across seals escaped `first_tie`), `resume_after` restores the top persisted key; 7 tests, 2 more disable runs red |

Expand Down
2 changes: 1 addition & 1 deletion .claude/board/TECH_DEBT.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ this arc's code, and a lint sweep in a doctrine + one-module PR would bury the d

## TD-SPARE-SHIFT-NAME-IS-STALE-1 (2026-09-10) — OPEN, doc-only

**`crates/causal-edge/src/layout.rs:67-77` still names bits 61-63 `SPARE_SHIFT` and
**`crates/causal-edge/src/layout.rs` (the `SPARE_SHIFT` const) still names bits 61-63 `SPARE_SHIFT` and
doc-comments them *"Spare: 3-bit reserved for sprint-12+ … Candidates: Rubicon-commit
marker, Markov-decay quantum, I-NOISE-FLOOR-JIRAK threshold"* — while the same file's
`ReasoningBand` (`:353-373`) has occupied those bits since `bbab3541` (introduced as
Expand Down
Loading
Loading