Skip to content
Merged
12 changes: 12 additions & 0 deletions .claude/board/AGENT_LOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
## 2026-07-12 — chess-arc-spine-evidence-carve — E-THINKING-SPINE-CHESS-EVIDENCE-1 + temporal-markov plan addendum

- **Deliverable:** `.claude/plans/temporal-markov-and-style-classes-v1.md` addendum (6 graded mappings of the chess arc onto Track A/B) + `EPIPHANIES.md` `E-THINKING-SPINE-CHESS-EVIDENCE-1` pointer entry.
- **Board:** plan file appended; EPIPHANIES prepended.
- **Outcome:** evidence-layer carve, no ruling changed (1 conjecture flagged [S] un-run, 1 probe-gated [H]). Rides PR #687. No code changed (doc-only).

## 2026-07-12 — chess-arc-v3-transfer-carve — E-CHESS-ARC-TO-V3-TRANSFER-1 distilled (4 validations + D-EPIPHANY-SIG-1 probe-gated + 3 rejected rhymes)

- **Deliverable:** `EPIPHANIES.md` `E-CHESS-ARC-TO-V3-TRANSFER-1` — chess-signature arc (`E-CHESS-SIGNATURE-ARC-1`) distilled into V3 muscle memory: 4 validations of already-ruled directions + 1 novel probe-gated method (D-EPIPHANY-SIG-1, Hambly–Lyons epiphany-vs-rumination detector) + 3 rejected rhymes named explicitly.
- **Board:** EPIPHANIES prepended; FUTURE-DESIGN.md wiring-queue bullet added (D-EPIPHANY-SIG-1).
- **Outcome:** distillation carved, rides PR #687. No code changed (doc-only).

## 2026-07-12 — stockfish-wave3-fleet — chess-signature arc capstone: no-hindsight GREEN, needle 9.70×, personality 98% inter, Turk-Polson substrate in-tree

- **Fleet:** Sonnet workers for D-SF-HINDSIGHT-1, PERSONALITY-1..4, BLITZ-1, SIGNATURE-1, NEEDLE-1 (CHAODA) + temporal-test worker (lance-graph-planner) + this doc applier.
Expand Down
60 changes: 60 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,63 @@
## 2026-07-14 — E-RUNG-CONTENT-LADDER-1 — the rung-content ladder ruled; persona-36 demarcated as a separate storyline (corrects E-STYLE-FAMILY-VS-RUNBOOK-1's "runbook" label)

**Status:** RULED (operator, 2026-07-14). Canonical text: `.claude/v3/knowledge/persona-vs-rung-ladder.md` (linked from CLAUDE.md § V3 SUBSTRATE).
**The ladder (content reading of the 0–9 rungs, from the ladybug-rs → thinking-engine lineage):** rung 0–1 = observation; rung 2 = the 144 thinking atoms (12 verb families × 12 tenses — `sigma_rosetta.rs` + `grammar/verb_table.rs`); rung 3 = the **34 NARS reasoning tactics** = THE runbooks (`lance_graph_contract::recipes::RECIPES [Recipe; 34]`, primitives in `ndarray::hpc::styles`); rung 4 = `StyleFamily`-12 thinking macros, autopoiesis through the triangle frozen × learned × exploration. The shipped `RungLevel` carries only the Pearl causal-depth reading — the content wiring (O1) and the rung-4→rung-3 edge (O2, the TRUE default_runbook semantics) are OPEN.
**The demarcation:** the adjective-36 in `contract::thinking` (Empathetic/Warm/Blunt/Poetic…) is the **persona-modeling storyline** — off-ladder, unwired by design, NOT rung 3, NOT "literal NARS runbooks." `E-STYLE-FAMILY-VS-RUNBOOK-1`'s label is corrected through this entry (append-only; the original stands as written): `default_runbook()` bridges rung-4 macros to the persona vocabulary while wearing the rung-3 tactics' name.
**Probe results banked with the ruling (2026-07-14 session):** p64-bridge `STYLES[ord % 12]` = DORMANT (zero external callers; TD-STYLE-TABLE-RESIDUE item 3 flipped below); `UNIFIED_STYLES` = TETHERED-not-collapsed (parity test; answers the MODULE-TABLE census open question).
**Cross-ref:** persona-vs-rung-ladder.md (O1–O6 open items), E-FIVE-STYLE-TABLES-1, E-THINKING-STYLES-ARE-CLASSES-1 (FUTURE-DESIGN), MODULE-TABLE ADDENDUM 2026-07-10 (2).

## 2026-07-13 — E-V3-GRACE-WIDE-CARVINGS-1 — V1 migration gets a discouraged waiting room, not a crash (operator ruling)

**Status:** RULED (operator, 2026-07-13). Recorded in `.claude/v3/soa_layout/le-contract.md` §3a.
**Frame:** the V3 12-byte payload is a content-blind register the ClassView projects — there is **no tail**; "V3 tail" is a category error, and modeling V3 as a `TailVariant::V3` inside `mint_for(tail_variant, …)` imported the dead V1 suffix-discriminator model into the new substrate (the poison). L1–L8 are all **byte-axis** projections (8:8 / 8:8:8 / 8:8:8:8).
**The ruling:** rather than hard-crash un-migrated classes, add three **wide contiguous** grace carvings as a documented, strongly-discouraged waiting room — G1 `3×16 + 2×24`, G2 `4×24`, G3 `3×32` (all 96-bit). Tagged *"strongly discouraged if god-object-related or lacking proper bucket rollover; migrate to cosine-replacement palette256 (L4)"* — the conditions ARE the diagnosis (god object → decompose; no bucket rollover → saturates silently; exit → L4 `6×(8:8)` palette256²). The V1 `family:identity` u24 fragment is the degenerate G1/G2 case. **Not** a tail revival (one register read coarsely, no path/tail split); `CascadeShape` gains **no** variants (stays byte-axis-only — a wide carving is what it refuses to bless). New classes MUST NOT be born into G1–G3.
**Code home:** `lance_graph_contract::legacy_outliers` (`legacy_outliers.rs`) — bluntly named per operator; `LegacyOutlier::{WideMixed/WideTriple/WideQuad}`, a *separate* module from `facet::CascadeShape` (never a variant), LE read/write + 5 tests incl. the V1 `family:identity` degenerate-case proof.
**Cross-ref:** le-contract.md §3a; E-V3-FACET-4-PLUS-12; the CANON supersession note (the `mint_for(tail_variant, …)` / "V3 tail" wording is the poison this reframes away from).

## 2026-07-13 — E-COMPAT-ALIAS-MUST-BE-LIFTED-1 — a compat alias left in a leaf module but not re-exported at the consumer import path is a hard break, not a shim (D-TSC-1 regression, fixed)

**Status:** CORRECTION (fixes a real consumer-facing regression shipped in `1a11038` / D-TSC-1; grade [G] — reproduced by compile).
**The break:** D-TSC-1 renamed the planner 12-space `ThinkingStyle` → `StyleFamily` (moved to `lance_graph_contract::style_family`) and left `#[deprecated] pub type ThinkingStyle = StyleFamily;` in `planner thinking/style.rs` "for external compat." But the SAME commit changed `planner thinking/mod.rs` line 22 from `pub use style::{…, ThinkingStyle}` to `pub use style::{…, StyleFamily}` — dropping the re-export. Result: `lance_graph_planner::thinking::style::ThinkingStyle` still resolved, but `lance_graph_planner::thinking::ThinkingStyle` (the natural, pre-existing import path) **hard-broke**. The alias was left in the basement and not lifted back to the floor consumers import from. Same for the methods that were inherent on the old enum (`cluster()`/`tau_address()`/modulation) — they moved to the `PlannerStyleExt` ext trait, which was only privately `use`d in mod.rs, never `pub use`d, so `style.cluster()` broke even with the type alias present.
**The gate gap that let it through:** the D-TSC-1 gate was `G1 grep = 1 enum def + 3 deprecated aliases` — it counted alias **definitions**, never verified they were **reachable from the paths consumers actually import** (module-root re-exports). Counting a `pub type X = Y` in a leaf proves nothing about whether `crate::mod::X` still resolves.
**The rule:** when a rename leaves a compat alias, the alias MUST be re-exported at **every module level the old name was reachable from before** — not just defined in the leaf. A compat-alias gate must assert the old import PATH resolves (`use crate::path::OldName;` compiles), not that an alias token exists somewhere. Extension traits that absorb former inherent methods must be lifted to the same module root as the type, so the consumer fix is one `use …::PlannerStyleExt`, not a hunt into a submodule.
**Fix (this commit):** `planner thinking/mod.rs` re-exports `ThinkingStyle` (with `#[allow(deprecated)]` on the re-export) + lifts `PlannerStyleExt` via `pub use`. `-p lance-graph-planner` builds clean, no new warnings. thinking-engine's alias was already at its pre-existing path (`cognitive_stack::ThinkingStyle`) so it never broke; the driver had no public `ThinkingStyle` type. #674 (node-layout / 4+12 facet) was audited for the same disease and is CLEAN — it followed RESERVE-DON'T-RECLAIM (`NodeGuid::new` still callable, `CLASSID_*_LEGACY` aliases preserved, contract lib.rs change purely additive); its break is doctrinal (migrate mints to `mint_for`), not a stranded-alias compile break.
**Cross-ref:** `1a11038` (the regression), D-TSC-1 spec, I-LEGACY-API-FEATURE-GATED (sibling doctrine — same "backward-compat shims need systematic coverage" spirit, applied to module re-export paths rather than layout bits).

## 2026-07-12 — E-THINKING-SPINE-CHESS-EVIDENCE-1 — chess arc mapped onto the temporal-markov spine (Track A/B evidence layer)

**Status:** SYNTHESIS (session evidence addendum on `.claude/plans/temporal-markov-and-style-classes-v1.md`; grades explicit; no ruling changed).
**What:** the chess-signature arc is the evidence layer under the ratified cognition spine. Six graded mappings: (1) thinking-is-a-moving-wave = the temporal.rs Markov stream, sigker its featurizer [G/H]; (2) sender→receiver meta-awareness = the CausalEdge/PREDICATE, not the S/O nodes — 98% inter measured [H strong]; (3) basins GROUND / SPO-2³ facts ANCHOR / the WAVE IDENTIFIES (mean 1.1× vs tail 9.70×) [H]; (4) macro/wide-angle vs tele = WideFieldMask-breadth vs version-range-depth [S, D-SF-FILTER un-run — conjecture, not fact]; (5) needle discipline = don't Bundle the rare event, anomaly-detect it [G]; (6) epiphany = non-tree Lévy sweep (D-EPIPHANY-SIG-1) [H probe-gated].
**Cross-ref:** E-CHESS-SIGNATURE-ARC-1, E-CHESS-ARC-TO-V3-TRANSFER-1, E-MARKOV-TEMPORAL-STREAM-1, the temporal-markov-and-style-classes-v1 addendum (2026-07-12).

## 2026-07-12 — E-CHESS-ARC-TO-V3-TRANSFER-1 — the chess-signature arc distilled into V3 muscle memory (4 validations + 1 probe-gated method + 3 rejected rhymes)

**Status:** SYNTHESIS (distillation of E-CHESS-SIGNATURE-ARC-1; grades explicit; the novel method is CONJECTURE, probe-gated).
**Frame:** the chess arc was a probe of THINKING itself (identity, adaptation, hindsight, epiphany, the rare belief-update). What transfers to the V3 substrate, graded mechanism-vs-rhyme:

**Four validations of already-ruled V3 directions (chess arc supplied the evidence):**

1. **Identity is a response-function, not a stored trait [H, strong].** Personality measured 98% INTER (opponent-driven) / 2% INTRA (trait) — a constant-vector model mis-specifies it. This IS the mailbox-as-owner / no-singleton ruling (cognition = dispatch-response-to-casts, `E-MAILBOX-KANBAN-NO-COLLAPSEGATE`), measured: a stored-BindSpace-singleton would have been the 2% model; the response-to-casts substrate is the correctly-specified one. The aggregate chess negatives (~1.3×) are the empirical cost of the architecture V3 already rejected.

2. **The temporal rung IS the learning-strategy dial [G enforcement / H framing].** D-SF-HINDSIGHT-1 proved `TemporalPov::at(v, Strict)` enforces zero future-ply access (0/521,630 reads). So `temporal.rs`'s Strict/Aware/Retro rungs are not only a read-coherence selector (INTEGRATION-PLAN Addendum-8) — they are a LEARNING-REGIME selector: Strict = causal/online (no leak), Retro = hindsight/credit-assignment. The rung chooses whether a NARS revision pass may see the settled outcome. Muscle-memory addition to the WAL-read ruling; no new mechanism.

3. **Episodic basins and signature moments need DIFFERENT storage [H].** Basins (the recurring `part_of:is_a` rails, le-contract L1–L3) are averaged context — and the MEAN does not identify (comfort-basin probe 1.1×). Signature moments (rare tail) carry identity (delayed-gratification-sac rate 9.70×) and must be preserved INDIVIDUALLY, not bundled into the rail. Rule: bundle the basin, anomaly-detect-and-preserve the signature. Refines the memory model; does not replace it.

4. **When the signal is a rare event, bundling destroys it [G].** A mean's SNR is bounded by the event rate; a ~1% needle cannot survive averaging (measured: every averaged probe ~1.1–1.3×). I-VSA-IDENTITIES / CollapseGate discipline stated as a detection rule: `MergeMode::Bundle` is right for the Markov-context basin, WRONG for the discriminating rare event — route the needle to anomaly detection (ndarray CLAM/CHAODA), never into the bundle.

**The standout — one genuinely new, probe-gated method [H / CONJECTURE]:**

**D-EPIPHANY-SIG-1 — Hambly–Lyons as an epiphany-vs-rumination detector for NARS reasoning.** Hambly–Lyons (jc pillar #11): a path's signature is trivial IFF the path is tree-like (a detour-and-return collapsing to its start). Map onto a thinking trajectory (the `Think` struct's path over a cycle: `FreeEnergy` F descending, `awareness` divergence, contradiction-depth):
- RUMINATION = out-and-back — F oscillates, no belief net-moves — path is tree-like — signature ≈ identity, Lévy area ≈ 0.
- EPIPHANY = area swept — F net-descends, a Contradiction commits, awareness revises — path non-tree-like — signature ≠ identity, Lévy area ≠ 0.
So the LÉVY AREA of the belief-trajectory is a principled "did this reasoning actually update anything" test — the operator's `epiphany-detection ↔ NARS reasoning` link. A NARS revision that returns a belief to its prior conveys no net information (tree-like); one that displaces it sweeps area. Every piece is in-tree: `sigker::signature_truncated` (signature) + `jc/hambly_lyons` (certificate) + the `Think`/`FreeEnergy`/NARS model + `temporal.rs` (the stream the path rides). **Probe (probe-first, mechanism lands after its failing probe):** take recorded Think cycles labeled epiphany (ΔF<0.05, both-triples-commit) vs rumination (F oscillates, no commit), compute the depth-2 signature of the `(ΔF, awareness-divergence, contradiction-depth)` path, test whether the Lévy area / signature norm separates them ≥2× a shuffled-order control. Stays [H] until it runs. Caveat: use `sigker::signature_kernel`, never `signature_kernel_pde` (jc-flagged bug).

**Three rejected rhymes (anti-dilution — do NOT build):**
- ✗ "the perturbation shader IS the signature transform" — the shader is VSA bind+braid+bundle; the signature is iterated integrals; different algebras. Braiding-by-position rhymes with order-encoding but is [S], do-not-build until measured.
- ✗ "personality = the QualiaColumn" — a rhyme; do not force the 18×f32 to carry it.
- ✗ treating the ~1.3× aggregate results as "signal" — they are the honest null; never launder them into canon as a win.

**Cross-ref:** E-CHESS-SIGNATURE-ARC-1 (the arc); INTEGRATION-PLAN Addendum-8 (temporal rungs); `E-MAILBOX-KANBAN-NO-COLLAPSEGATE`; I-VSA-IDENTITIES; jc pillar #11 (`hambly_lyons.rs`); `.claude/v3/FUTURE-DESIGN.md` (D-EPIPHANY-SIG-1 queued to the thinking-engine gem wiring queue).

## 2026-07-12 — E-CHESS-SIGNATURE-ARC-1 — personality is the opponent-response function (inter 98% / intra 2%); Turk-Polson substrate already in-tree

**Status:** MEASURED (stockfish-rs `79ce78f`/`57ae59f`/`654a605`/`2c54e1a`/`64b8aa3`/`5d74b6c`/`2f73686`/`fa7beff`; lance-graph `505b989e`).
Expand Down
19 changes: 19 additions & 0 deletions .claude/board/TECH_DEBT.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Technical Debt Log — Open + Paid (double-entry, append-only)

## TD-STYLE-TABLE-RESIDUE item 3 — PROBED, downgraded (2026-07-14)

The "does any caller feed StyleFamily ordinals into p64-bridge
`STYLES[ord % 12]`" probe ran (this session): **DORMANT — no live bug.**
`STYLES` is reachable only via `style_by_ordinal`/`style_by_name`/
`all_styles`; repo-wide, the only `style_by_ordinal` caller is
p64-bridge's own 0..12 test loop; the three Cargo dependents
(driver/planner/osint) import only `cognitive_shader::CognitiveShader`,
never the styles surface; p64-bridge never imports `StyleFamily`.
Residual hazard is **latent-API only**: `style_by_ordinal(family as
usize)` by a future caller would scramble the predicate chain silently.
Free hardening queued (zero external callers = zero breakage):
`#[deprecated]` on `style_by_ordinal` steering to by-name conversion.
Companion answer for the MODULE-TABLE census: driver `UNIFIED_STYLES`
was TETHERED (names/ordinals/len parity test), not collapsed — a
legitimate close of that open question. Ruling context:
`E-RUNG-CONTENT-LADDER-1`; demarcation doc:
`.claude/v3/knowledge/persona-vs-rung-ladder.md`.

## TD-MESSAGE-RESIDUE (2026-07-10, operator-ruled LEAVE-AS-IS)

Per E-NOBODY-WAITS-1: no messages, no actors anywhere — ractor is only
Expand Down
Loading
Loading