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
3 changes: 2 additions & 1 deletion .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ Plan: `.claude/plans/2026-10-06-global-sudoku-replayable-orchestration-v1.md`. O
| **D-GSO-5** | P5: first recipe quartet over existing primitives | Shipped (#1355) | `cognitive-shader-driver/examples/recipe_quartet_probe.rs`: four `match`-arm recipes over `Quorum::observe`, `Quad8::fold_product`, `Morton8x8` + `PalettePerturbation::hop`, `GadamerRevision::revise` (verdict left `NotRun`: removing the new roots is tautological, so the counterfactual moves to P7); a thread-local counting allocator shows zero allocations per recipe (no instruction vector); `ProbeRecipe` is its own type, not a shipped `recipes` ID; ordinal meanings not canonized; no Pearl projection (P7) and no selector (P6); 7 tests, 6 disable runs red |
| **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) | In PR | `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-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-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
60 changes: 60 additions & 0 deletions .claude/board/entries/2026-10-06-affordance-measurement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# 2026-10-06 — D-GSO-AFF-0: recipe eligibility is a measurement over the edge

## MEASURED

`crates/cognitive-shader-driver/examples/affordance_measurement_probe.rs`:
9 tests, 8 disable runs red.

- `CausalEdge64 × RecipeLaw → EligibleRecipes: u64` is two const-table
lookups and one AND, with 0 allocations and no scheduler, task, capability
object or recipe list. The tables are compiled at build time from per-recipe
`requires` / `forbids` facts and Pearl planes.
- Bits 59..63 read as one EpistemicState5 code through the shipped accessors
(`spare() << 2 | truth_raw()`). Ten codes are declared, ordered without regard
to strength; 22 refuse. Code 17 = Indirect × IntermediateKnown × Causes.
- F3: S/P/O bytes, F/C, bits 43..45, the mantissa, plasticity and the witness
slot were swept over their full ranges with no bit change. Pearl moves only
the one recipe that reads it.
- F4/F5: the compiled tables match an independent re-derivation from the rules
on every code × projection × recipe, and every refusal names its obligation.
- Bits 59..63 are read only under asserted v2/V3 provenance (codex review):
a v1 row whose old `temporal` is 128 has bit 59 set and would read as code
1 (`Causes`); v1 and unknown provenance refuse.
- Rewriting only bits 59..60 with the shipped `with_topology` turns code 17
into 18, which refuses.

## Inventory (before the probe)

- Bits 43..45 (`direction`): no reader outside `causal-edge`. Inside it,
`*_pathological`, `concern_level`, `CausalNetwork::detect_simpsons_paradox`,
`compose` (inherits the weight's triad) and the V3 lift read it as the
per-plane pathology triad.
- Witness (bits 53..58): `MailboxSoA::apply_edges` (production) drops every
edge whose `w_slot` differs from the mailbox's. It is compared by equality
only; a reading that varies it per evidence class would drop edges there.
Width 6 is assumed by `MailboxSoA::new` (`< 64`), `WitnessTable<64>`, the V3
byte 8 packing and `with_routing`.
- Bits 59..63: shipped readers split them. `truth`/`topology` read 59..60;
`ReasoningBand`/`spare` read 61..63; `band_reading` declares and projects the
two separately; V3 stores them in different bytes (raw copies, so the joint
code survives the lift). External readers: `dismech_counterfactual::EdgeRole`
copies both; `entropy_topology_probe` reads 59..60.
- S/P/O: typed by name only (`s_idx`, "palette index"); `compose` indexes
caller-supplied 256×256 tables as `left * 256 + right`, the same orientation
as `PairAddress`.
- #1336/#1337: `Quad8([u8; 4])` holds blind bytes; `palette_pairs` wraps them
in `PaletteState` for `PairAddress::new`, which is `(left << 8) | right`. No
code connects Quad8 to CE64's S/P/O bytes. Both modules call the 8×8×8×8
product "Cartesian".
- `StepMask(u64)` exists for template step positions, a different index space
from recipe ordinals, so the probe uses a plain `u64`. `recipe_dispatch::ladder`
returns `Vec<RecipeStep>`.

## OPEN

- A joint 5-bit reading needs its own `band_reading` declaration, and the
half-field writers (`with_topology`, `with_truth`, `with_reasoning_band`)
can produce undeclared codes.
- Witness cannot be read as an evidence class while `MailboxSoA` routes on it.
- The codebook, facts and recipes are probe pins; dynamic gates, preference
and execution are not built.
3 changes: 2 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ 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.

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

| date | entry id | finding | file |
|---|---|---|---|
Expand All @@ -40,6 +40,7 @@ exactly one of them, never both.
| 2026-10-06 | `diff-plateau-as-expression-round5` | | [2026-10-06-diff-plateau-as-expression-round5.md](2026-10-06-diff-plateau-as-expression-round5.md) |
| 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-06 | `D-GSO-AFF-0` | | [2026-10-06-affordance-measurement.md](2026-10-06-affordance-measurement.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/cognitive-shader-driver/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,11 @@ test = true
name = "relational_certification_probe"
test = true

# D-GSO-AFF-0 affordance-measurement probe; tests run under `cargo test`.
[[example]]
name = "affordance_measurement_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
16 changes: 16 additions & 0 deletions crates/cognitive-shader-driver/examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,22 @@ thresholds are policy pins.
cargo run -p cognitive-shader-driver --example relational_certification_probe
```

## affordance_measurement_probe.rs

D-GSO-AFF-0. Recipe eligibility as a measurement: `CausalEdge64 × RecipeLaw →
EligibleRecipes: u64`. Bits 59..63 are read as one EpistemicState5 code (ten
declared codes, deliberately not ordered by strength; the rest refuse), and
bits 40..42 under their Pearl reading. Seven recipes declare `requires` /
`forbids` facts and Pearl planes; the rules compile at build time into
`[u64; 32]` and `[u64; 8]`, so a measurement is two lookups and an AND with no
allocation. Fields no recipe reads (S/P/O, F/C, bits 43..45, mantissa,
plasticity, witness) are swept and change nothing; preference can only clear
bits. Two law generations show the generation is part of the reading.

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

## ewa_anisotropic_probe.rs

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