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
13 changes: 13 additions & 0 deletions .claude/board/ISSUES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
## ISS-MAILBOX-ROUTES-WITNESS-WITHOUT-GRAPH — `MailboxSoA` accepts same-slot edges from any graph (2026-10-06)

**Status:** OPEN. **Basis:** TEST-PINNED in `cognitive-shader-driver/examples/spog_witness_probe.rs`
(`across_graphs_routing_diverges_from_the_spog_reading`). `MailboxSoA::apply_edges`
compares only `edge.w_slot()` with the mailbox's slot and reads no classid.

- Under the SPOG reading (G = `graph_of(classid)`, Witness = sub-context inside G) a
mailbox accepts an edge from another graph that carries the same slot value.
Within one graph the routing and the reading agree on all 64 × 64 slot pairs.
- **What closes it:** either a documented rule that a mailbox serves exactly one graph,
enforced where edges are delivered, or a graph check in `apply_edges`. Production
change; not made by the probe.

## ISS-LXA-ALPHA-FIT — known/unknown for the COCA bake vs the alpha channel's own definition (2026-09-30)

**Status:** RESOLVED 2026-10-03 — known is NOT alpha: it is the reference set's baked coverage plane (`ReferenceCoverage`, no conversion to/from `AlphaMask`); the attention-recorder half of option (d) is a separate §5 open question. Plan §3.1 DECISION; `.claude/knowledge/reference-frame-vs-motion.md`. The bullets below record the escalation as it stood on 2026-09-30 and are SUPERSEDED: their "uses the alpha split tunnel" premise and the option-(d) recommendation were rejected (known is not alpha; the attention recorder is plan §5 open), and their "What closes it" condition is SATISFIED. D-LXA-3's only remaining blocker is D-LXC-4 (the shared `academic_20k.csv` loader, STATUS_BOARD). **Basis:** VERIFIED-IN-CODE (5+3 council on
Expand Down
3 changes: 2 additions & 1 deletion .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ Plan: `.claude/plans/2026-10-06-global-sudoku-replayable-orchestration-v1.md`. O
| **D-GSO-6** | P6: deterministic, versioned recipe selector | Shipped (#1358, #1362, #1365); `observations_pending` + `frontier_bounded` wired, `new_encounter` → `revision_pending`: In PR | `cognitive-shader-driver/examples/recipe_selector_probe.rs`: `SelectorPolicy::select(state)` is a pure `const fn` over a declared 4-fact `EpistemicState`; V1 = §11 order (fold, bound, local, revise), rests only on the settled state; V2 swaps two steps (differs on 2 of 16 states); a recorded `Selection` (policy + state) replays under its own policy; every cycle rests in one step per open condition and replays identically; the version covers selection only, not recipe implementations (§13 digest open); 5 tests, 5 disable runs red. Follow-up: `new_encounter` is derived from the world (revising would still change a horizon mask; equals `revise` changing it on a 2-bit universe; rootless revisions included) and the `Revision` recipe writes `GadamerRevision`'s `delta.resulting`; dropping that write never rests; `unresolved_tension` cannot drive `local_disagreement` (never cleared); the other three facts are still stand-ins; 14 tests, 10 disable runs red. Follow-up 2: `local_disagreement` = `unresolved_tension \ interrogated`, where `interrogated` is the coverage `MooreInterrogation` writes (tension itself never cleared); a revision adding a new contradiction reopens it; dropping the interrogation write never rests; `observations_pending` and `frontier_bounded` remain stand-ins; 17 tests, 15 disable runs red. Follow-up 3: `new_encounter` renamed `revision_pending` (revising would change the horizon); `observations_pending` = arrived verdicts > verdicts the `Quorum` counted (silence included; `speaking()` would never rest on a silent source); dropping the fold write never rests; coverage stays per tension bit (new evidence on a covered bit does not reopen); `frontier_bounded` = a recorded `Quad8::fold_product` frontier exists for the current candidate space (a changed space reopens it; an empty frontier is bounded); no stand-in fact remains in the wired cycle; 25 tests, 25 disable runs red |
| **D-GSO-7** | P7: reasoning-band earning and downgrade | Shipped (#1360) | `cognitive-shader-driver/examples/reasoning_band_probe.rs`: `ReasoningBand` (bits 61..63) read only via `band_reading::project_band`; earned one rung per executed passing proof under the shipped Pearl `CausalMask` (SO majority → Association, PO intervention trial passed → Causal, SPO removal attack passed → Counterfactual), outcomes executed from trial data and never supplied, no skipping, `NotRun` never raises; failed test, contradicting `Quorum` (minority caps at Association, majority drops to Surface) and `simpsons_paradox_risk` lower it; replay gives the same edge bits; unreadable provenance / undeclared / band-absent refuse; ladder and thresholds are policy pins; 7 tests, 10 disable runs red |
| **D-GSO-7a** | P7a: the reasoning band as a relational certification (supersedes the meaning of D-GSO-7's rungs; #1360 unchanged) | Shipped (#1369) | `cognitive-shader-driver/examples/relational_certification_probe.rs`: a reading declared per class over bits 61..63 (`0 Open, 1 Associated, 2 Related, 3 Contributes, 4 CausalCandidate, 5 Causes`, 6..7 refuse; a class declared under the historical reading refuses the same bits); contracts are integer folds over unit masks + `causal_audit::SupportLedger` (2 distinct sources; the robustness mask only refutes; `Causes` = 2 distinct `InterventionBacked` sources + executed randomized arms); `entails` is an explicit table equal to `code >=` on 0..=5 only; repetition, observational effect size, the inference mantissa and confounded observational data never raise or demote past their contract; exhaustive 2,500-model family: 0 chain violations with scoped association, 10 with marginal (Simpson); sibling specificity and removal (overdetermination) are shown not to be rungs; only receipts recorded at or before the model's seal count, so a later receipt cannot change an earlier seal's replay; 13 tests, 12 disable runs red |
| **D-GSO-AFF-0** | Affordance measurement: `CausalEdge64 × RecipeLaw[0..63] → EligibleRecipes: u64` | In PR | `cognitive-shader-driver/examples/affordance_measurement_probe.rs`: bits 59..63 read as one EpistemicState5 code (`spare() << 2 \| truth_raw()`, 10 declared codes, non-monotone, 22 refuse) + Pearl3; 7 recipes as `requires`/`forbids` facts + Pearl planes, compiled at build time to `[u64; 32]` × `[u64; 8]`; measure = 2 lookups + AND, 0 allocations; F1 determinism and law-generation dependence, F2 relevant factor flips its bit, F3 S/P/O/F/C/43..45/mantissa/plasticity/witness swept with no change, F4/F5 tables agree bit-for-bit with an independent rule re-derivation that names every refusal, F6/F7 preference only clears, half-field writes to 59..60 yield refusing codes; v1 / unknown provenance refuses (a v1 row with temporal 128 would read as `Causes`); no scheduler/task/capability object; 9 tests, 8 disable runs red |
| **D-GSO-AFF-0** | Affordance measurement: `CausalEdge64 × RecipeLaw[0..63] → EligibleRecipes: u64` | Shipped (#1370) | `cognitive-shader-driver/examples/affordance_measurement_probe.rs`: bits 59..63 read as one EpistemicState5 code (`spare() << 2 \| truth_raw()`, 10 declared codes, non-monotone, 22 refuse) + Pearl3; 7 recipes as `requires`/`forbids` facts + Pearl planes, compiled at build time to `[u64; 32]` × `[u64; 8]`; measure = 2 lookups + AND, 0 allocations; F1 determinism and law-generation dependence, F2 relevant factor flips its bit, F3 S/P/O/F/C/43..45/mantissa/plasticity/witness swept with no change, F4/F5 tables agree bit-for-bit with an independent rule re-derivation that names every refusal, F6/F7 preference only clears, half-field writes to 59..60 yield refusing codes; v1 / unknown provenance refuses (a v1 row with temporal 128 would read as `Causes`); no scheduler/task/capability object; 9 tests, 8 disable runs red |
| **D-SPOG-W-0** | Witness slot as a SPOG sub-context under classid-G | In PR | `cognitive-shader-driver/examples/spog_witness_probe.rs`: SPOG view = (S/P/O blind bytes, G = `graph_of(classid)`, sub = `w_slot()` under a per-class declared reading, slot 0 = no anchor); undeclared class, another slot reading and v1 / unknown provenance refuse; G never moves with the slot; real `MailboxSoA::apply_edges` routing agrees with the reading on all 64 × 64 slot pairs within one graph and diverges across graphs (routing reads no classid; `ISS-MAILBOX-ROUTES-WITNESS-WITHOUT-GRAPH`); 0 allocations; 7 tests, 6 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 |

## D-PLX — Population-law cross-check (2026-10-03)
Expand Down
26 changes: 26 additions & 0 deletions .claude/board/entries/2026-10-06-spog-witness-sub-context.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 2026-10-06 — D-SPOG-W-0: the Witness slot as a SPOG sub-context under classid-G

## MEASURED

`crates/cognitive-shader-driver/examples/spog_witness_probe.rs`: 7 tests,
6 disable runs red.

- A SPOG coordinate is read from `(classid, CausalEdge64)` with no stored
column and no allocation: S/P/O are the resident bytes, G is
`graph_of(classid)` (the existing "g via classid" rule in `spog_tenants.rs`),
and the Witness slot is a sub-context inside G.
- The sub-context reading is declared per class. An undeclared class, a class
declaring another reading of the slot, and v1 / unknown provenance refuse.
Slot 0 reads as no anchor, as the shipped `w_slot` accessor documents.
- G never moves with the slot; the slot never moves with the classid.
- Against the real `MailboxSoA::apply_edges`: within one graph, accept ⟺ same
SPOG context on all 64 × 64 slot pairs (64 accepted, 4032 dropped). Across
graphs they diverge: routing accepts a foreign graph's edge with the same
slot. Recorded as `ISS-MAILBOX-ROUTES-WITNESS-WITHOUT-GRAPH`.

## OPEN

- Whether the per-class declaration becomes a contract declaration beside
`band_reading`.
- The cross-graph routing divergence (production change; see ISSUES).
- Sub-context meaning (corpus, frame, schema) stays the consumer's binding.
3 changes: 2 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

231 entries, 2026-08-06 .. 2026-10-06.
232 entries, 2026-08-06 .. 2026-10-06.

| date | entry id | finding | file |
|---|---|---|---|
| 2026-10-06 | `v3-v4-dual-reading-round3` | | [2026-10-06-v3-v4-dual-reading-round3.md](2026-10-06-v3-v4-dual-reading-round3.md) |
| 2026-10-06 | `D-SPOG-W-0` | | [2026-10-06-spog-witness-sub-context.md](2026-10-06-spog-witness-sub-context.md) |
| 2026-10-06 | `spofc-do-learn-as-compile-round6` | | [2026-10-06-spofc-do-learn-as-compile-round6.md](2026-10-06-spofc-do-learn-as-compile-round6.md) |
| 2026-10-06 | `D-GSO-6` | | [2026-10-06-selector-revision-wired.md](2026-10-06-selector-revision-wired.md) |
| 2026-10-06 | `selector-observations-wired` | | [2026-10-06-selector-observations-wired.md](2026-10-06-selector-observations-wired.md) |
Expand Down
5 changes: 5 additions & 0 deletions crates/cognitive-shader-driver/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ test = true
name = "affordance_measurement_probe"
test = true

# D-SPOG-W-0 Witness-as-SPOG-sub-context probe; tests run under `cargo test`.
[[example]]
name = "spog_witness_probe"
test = true

[dependencies]
lance-graph-contract = { path = "../lance-graph-contract" }
# Read-only ontology registry (Phase 7, v4 plan). default-features = false so the
Expand Down
14 changes: 14 additions & 0 deletions crates/cognitive-shader-driver/examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,20 @@ bits. Two law generations show the generation is part of the reading.
cargo run -p cognitive-shader-driver --example affordance_measurement_probe
```

## spog_witness_probe.rs

D-SPOG-W-0. A SPOG coordinate as a view over resident coordinates: G from
`graph_of(classid)` (the canonical source), the Witness slot as a sub-context
inside G only for classes that declare that reading (slot 0 = no anchor), and
S/P/O passed through as blind bytes. Undeclared classes, another reading of the
slot, and v1 / unknown provenance refuse. Compared with the real
`MailboxSoA::apply_edges` routing: they agree on all 64 × 64 slot pairs within
one graph and diverge across graphs, because routing reads no classid.

```bash
cargo run -p cognitive-shader-driver --example spog_witness_probe
```

## ewa_anisotropic_probe.rs

D-CTX-3. Anisotropic EWA: the footprint is each virtual surfel's normalised
Expand Down
Loading
Loading