Skip to content
Closed
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
141 changes: 141 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,144 @@
## 2026-09-13 — E-DISMECH-IS-NOT-A-THINKING-ATOM-AND-THE-MATURITY-LADDER-WAS-FABRICATED-1 — PR #1224 withdrawn; two architectural errors and one invented governance model

**Status:** OPERATOR RULING, BINDING (2026-09-13). PR #1224 is **CLOSED, not merged** —
its branch is reverted to `main` content and carries only this record. This entry exists
because #1224 was built on premises an agent invented; it is a contamination record, not
a feature note.
**Confidence:** The leak map and consumer counts below are MEASURED (commands in each
row). The withdrawal of the classification is OPERATOR-RULED. Nothing here is inference
promoted to doctrine.

### 1. What was fabricated — withdrawn, not renamed

**⊘ The "defining / permissive / decorative" classification is WITHDRAWN.** It was
agent-generated conjecture that converted an operator criticism of *implementation
quality* into an unauthorized maturity/state model, complete with counters and a
progression ("moves from permissive-0 to permissive-1"). It was never authorized as
states, levels, counters, or an architectural ladder. The underlying per-site
measurements may still be cited individually and factually; **the classification and
every transition/counter derived from it have no authority.** Do not re-introduce it
under renamed states.

Corrected meanings, operator-ruled:

- **"permissive"**, when the operator uses it to criticize code, means approximately
*"the substrate would permit a correct implementation, but the actual implementation
is bad or incomplete."* It is a qualitative criticism of the CODE. It is **not** a
substrate state, not an acceptable intermediate architecture, and earns no progress.
- **"defining"** is an attribute of a contract that is **actually enforced**. A
canonical byte image, accessors, tests, docs, or one compliant consumer do **not**
make a contract defining. If consumers can bypass, flatten, reinterpret, omit, or
independently materialize the semantics, it is not globally defining.

**The generalizable failure:** bad code is evidence about an implementation. It is not
permission to invent architectural states, maturity ladders, transition systems, or
acceptance criteria that explain it. **Never turn a criticism into a specification.**

### 2. DisMech is not a thinking atom — OPERATOR-RULED

Thinking belongs in lance-graph. **DisMech transcode is a narrow, optional shortcut for
representing or emulating mechanisms for a handful of diseases.** It is not a reasoning
substrate, planner strategy, generic causal engine, counterfactual primitive, NARS
primitive, thinking vocabulary, or alternate implementation of lance-graph thinking.

The only legitimate use is on the **MedCare-rs / domain side**, behind an explicit
`ogar-loco` / `ogar-dismech` specialization (e.g. a `LabCausalityTrajectory` or an
equivalent explicitly medical, actionable predicate framing). That adapter may translate
narrow DisMech output into ordinary domain assertions/evidence. **After the adapter
boundary, lance-graph must not know or care that DisMech produced the evidence.
DisMech provenance confers ZERO thinking semantics.**

### 3. The leak map — MEASURED, not estimated

`rg -l dismech crates/` → 12 files. Sizes via `wc -l`; consumers via
`grep -rn "dismech_\(replay\|counterfactual\|candidates\)::" --include=*.rs crates/`.

| Location | Lines | Surface it occupies | Production consumers |
|---|---:|---|---|
| `lance-graph-contract/src/dismech_evidence.rs` | 817 | `pub mod` at `lib.rs:85` of the **ZERO-DEP SPINE CONTRACT** | the 3 planner modules below + `lance-graph-ogar` parity assert |
| `lance-graph-planner/src/dismech_replay.rs` | 873 | `pub mod` at planner `lib.rs:104` | **none** |
| `lance-graph-planner/src/dismech_counterfactual.rs` | 799 | `pub mod` at planner `lib.rs:103` | **none** (1 example) |
| `lance-graph-planner/src/dismech_candidates.rs` | 394 | `pub mod` at planner `lib.rs:102` | **none** |
| `.claude/plans/dismech-causal-replay-v1.md` | 856 | plan | — |
| `.claude/plans/dismech-causality-v3-v1.md` | 519 | plan | — |

**2,883 lines of Rust** (2,066 planner + 817 contract) **+ 1,375 lines of plans.**

**The only three references to the planner modules from outside themselves are:**
`cache/nars_engine.rs:490` (a `///` doc comment), `examples/house_differential.rs:164`
(an example), `dismech_evidence.rs:503` (a `///` doc comment). **Zero production
thinking/planner code calls any of it.** The cluster is self-referential: the contract
mirror feeds the planner modules, which feed examples and their own tests.

So the contamination is not deep entanglement in a hot path — it is that a
disease-mechanism vocabulary was installed **into the public surface of the thinking
crate and mirrored into the zero-dep spine contract**, at nearly 3k lines, with no
consumer justifying any of it. `lance-graph-ogar::assert_dismech_palette_parity()`
shows the authority already lives correctly in the armed tier (`ogar_dismech::RELATIONS`,
19 causal predicates); the contract carries a **mirror** of it that the spine should
never have held.

### 4. What #1224 actually added — and why it is deleted, not re-homed

#1224 added `EdgeRole::is_causally_licensed()` / `is_causally_load_bearing()` (+125 lines
with tests) **inside `dismech_counterfactual.rs`** — i.e. it added causal-reasoning
semantics to a module that should not host reasoning semantics at all, to advance a
counter in the fabricated classification. Measured: **zero consumers** of either method
anywhere in the workspace.

The PR body claimed it "prevented relation-level changes from being incorrectly reported
as causal." **That claim was false.** There is no reporting boundary that consumes the
predicate. **A helper existing is not enforcement.** The tests passed and proved only
that the boolean expression evaluates as written — passing tests are not a reason to keep
an abstraction whose architectural home is invalid.

### 5. CausalEdge64 LE — verdict DOWNGRADED, MEASURED

The merged `STATUS_BOARD.md` D-BBB-NARS-2 row asserts *"`CausalEdge64`'s canonical
little-endian image IS the defining truth representation."* Separating representation
from enforcement, as the operator requires:

1. **Canonical representation exists** — partially. `#[repr(transparent)] pub struct
CausalEdge64(pub u64)` with documented bit positions. But **`CausalEdge64` has no
`to_le_bytes`/`from_le_bytes` at all** — every LE conversion in `crates/causal-edge/`
is on `CausalEdgeV3` (a different, 12-byte type). Its byte image is host-native.
2. **Local encode/decode law** — correct and tested (bit accessors).
3. **Consumers preserve it** — **NO.** The field is `pub u64`. Any consumer can build
`CausalEdge64(raw)` from an arbitrary integer, bypassing every accessor. Measured
construction sites outside the owning crate include `cognitive-shader-driver/src/
backing.rs:123` and `mailbox_soa.rs:1324`.
4. **Storage/replay boundaries enforce it** — **NO.** `contract/src/soa_view.rs:83`
documents the storage read as *"per-row packed `CausalEdge64` as raw `u64`
(reconstruct via `CausalEdge64(raw)`)"* — the boundary hands out a raw integer and
asks the consumer to re-wrap it.
5. **Alternatives cannot silently discard/reinterpret the defining dimensions** —
**NO.** `edge.rs:158` names a twin type, `ndarray::hpc::causal_diff::CausalEdge64`,
and bits 59-63 are freely writable by anyone holding the raw `u64`.

**Verdict: the CE64 LE contract is NOT globally defining.** Only #5 would justify a
strong global claim, and #3/#4/#5 all fail. The operator ruling *"we should always
enforce CE64 as defining LE"* is a **directive about what must be built**; the board
converted it into a claim of accomplished fact. `CausalTopology` (59-60) and
`ReasoningBand` (61-63) being present in the register does **not** prove those
dimensions are universally respected — **a representation can carry the truth while
the code throws the truth away.** That is a severe defect, not a weaker-but-acceptable
state.

### 6. What survives

Measured facts survive; the theory around them does not. The 19-predicate DisMech
palette, the per-site consumer counts, the CE64 bit positions, and the NARS confidence
fixed point (170 under `NarsTables::build(1)`) are all real measurements and may be
cited individually. **Nothing in §1 may be cited as architecture.**

### 7. Where the fabricated text still lives (append-only, corrected here — not rewritten)

The classification reached `main` before it was caught, and merged governance text is not
silently rewritten: `EPIPHANIES.md` (2 lines, in the entry below this one) and
`STATUS_BOARD.md` (the D-BBB-NARS-2 row) still carry it. **This entry is the explicit
newest-first correction that supersedes both.** The historical operator words are NOT
mutated to make the agents look less wrong.

## 2026-09-10 — E-LE-IS-THE-UNIVERSAL-DTO-LAYER-TYPED-SYNTAX-MEANS-A-VERSIONED-LE-SCHEMA-1 — a bare `(f, c)` pair is a degree, not a typed truth

**Status:** OPERATOR RULING, BINDING (2026-09-10, verbatim: *"Little-endian is the universal
Expand Down
Loading