|
1 | | -# Epistemic quadrant materialization — grey/white, and what may be written |
| 1 | +# Plasticity materialization — grey/white as MECHANISM, over the B6 stance panel |
2 | 2 |
|
3 | 3 | > **Status: PROPOSED.** Operator direction 2026-07-29: *"We can slowly switch to |
4 | 4 | > the idea of materializing thoughts as a grey matter / white matter explicit |
5 | 5 | > materialization for testing of known unknowns, unknown unknowns, unknown knowns |
6 | | -> and known knowns."* **"Slowly" is load-bearing** — this doc exists so the |
7 | | -> criterion is settled before any lane is minted. Nothing here is built. |
| 6 | +> and known knowns."* → clarified: ***"I'm talking about brain plasticity."*** |
8 | 7 | > |
9 | | -> Companion: `.claude/knowledge/zero-copy-lens-law.md` § "The one apparent |
10 | | -> exception" (the rung test) and § "Grey and white" (the anatomy). |
| 8 | +> **⊘ CORRECTED, same session, by the operator.** The first draft of this doc |
| 9 | +> read "the four quadrants" as an *epistemic taxonomy* and built a storage- |
| 10 | +> eligibility rulebook around it. Wrong axis. Grey/white matter is a |
| 11 | +> **mechanism** — two distinct plasticity processes — and the quadrants are what |
| 12 | +> you *test* by running it, not a filing system. The correction matters because |
| 13 | +> the taxonomy reading produced a design about **what may be stored**, while the |
| 14 | +> mechanism reading produces a design about **what changes when you think**. |
| 15 | +> Those are different systems. Second operator correction, same session: *"only |
| 16 | +> 10 h ago you wired Wittgenstein, Kant, Hegel and Nietzsche and you already |
| 17 | +> forgot about it"* — the arena this runs over already exists (§3); the first |
| 18 | +> draft invented an abstract one. |
| 19 | +
|
| 20 | +## 1. The two mechanisms (this is the whole idea) |
| 21 | + |
| 22 | +Neuroscience distinguishes two plasticity processes, and they are not variants of |
| 23 | +each other: |
| 24 | + |
| 25 | +| | **grey matter** — synaptic | **white matter** — myelination | |
| 26 | +|---|---|---| |
| 27 | +| what changes | synapse strength, dendritic spines | myelin thickness on the axon | |
| 28 | +| what that does | changes **what** is associated | changes **conduction velocity** — *how fast a path carries* | |
| 29 | +| timescale | fast, local, reversible | slower, structural, activity-dependent | |
| 30 | +| in this substrate | belief/content revision (NARS truth on the SPO arena) | **edge conductance** — which traversal is cheap | |
11 | 31 |
|
12 | | -## 1. The matrix already exists — under its affective name |
| 32 | +The load-bearing fact: **myelin stores no content.** It does not copy the signal; |
| 33 | +it changes how fast the existing path carries it. A path used repeatedly gets |
| 34 | +myelinated → becomes faster → is more likely used again. That is the entire |
| 35 | +reinforcement loop, and it is *structural*, not representational. |
13 | 36 |
|
14 | | -`ndarray::hpc::entropy_ladder::Quadrant::classify(entropy, energy)` → four |
15 | | -variants. It is the Rumsfeld matrix, reached from qualia rather than epistemics: |
| 37 | +## 2. Why this dissolves the tension the first draft agonized over |
16 | 38 |
|
17 | | -| entropy × energy | affective | epistemic | what it means here | |
18 | | -|---|---|---|---| |
19 | | -| low H, high c | `Wisdom` | **known known** | collapsed and evidenced — the committed lanes | |
20 | | -| high H, low c | `Staunen` | **known unknown** | surprise registered, entropy work not yet paid | |
21 | | -| high H, high c | `Confusion` | **unknown known** | material present, no ClassView elects it | |
22 | | -| low H, low c | `Boredom` | **unknown unknown** | no surprise *because there is no receptor* | |
| 39 | +The first draft spent its length deciding *which derived values may be stored*. |
| 40 | +Under the mechanism reading that question mostly evaporates: |
23 | 41 |
|
24 | | -**Do NOT mint a second enum.** Reuse `Quadrant`; if the epistemic reading needs |
25 | | -to be nameable, it is a `#[doc]` mapping or an accessor, never a parallel type — |
26 | | -that is the prior-art failure mode (one insight, two ids, a divided search |
27 | | -surface for every future session). |
| 42 | +> **A plasticity update is not a materialization.** It writes a **weight onto an |
| 43 | +> edge that already exists** — conductance, not content. There is no second |
| 44 | +> projection, because nothing is re-represented. |
28 | 45 |
|
29 | | -**The asymmetry that drives the whole design:** `Boredom` and `Wisdom` differ |
30 | | -only by evidence (both are low-entropy). So the unknown-unknown quadrant is |
31 | | -*indistinguishable from settledness from the inside*. It cannot be detected by |
32 | | -any read; it can only be detected by a probe that **fails**. This is why the |
33 | | -operator's framing is "for testing" and not "for storing." |
| 46 | +This is what the operator's earlier ruling meant by *"the entropy work is stored |
| 47 | +and can be reused for further reasoning"*: the reuse is not a cached answer, it |
| 48 | +is a **cheaper path to re-deriving it**. Consistent with the whole zero-copy arc — |
| 49 | +the lens stays the only read, and what changes is the cost gradient over lanes. |
34 | 50 |
|
35 | | -## 2. The trap — and the rule that defuses it |
| 51 | +Two constraints inherited, non-negotiable: |
36 | 52 |
|
37 | | -"Materializing thoughts" reads as licence to store everything. Under the law it |
38 | | -is not, and the rung test disqualifies the obvious first move: |
| 53 | +- **Write-back is gated** (`.claude/rules/borrow-strategy.md`): single writer → |
| 54 | + gated XOR; multiple writers → BUNDLE. **Never raw `=`** onto shared state. |
| 55 | +- **Plasticity is a MAGNITUDE, so it bundles.** Per `I-SUBSTRATE-MARKOV`, the |
| 56 | + magnitude side uses `vsa_bundle`, never `MergeMode::Xor` — XOR on magnitudes |
| 57 | + breaks the Chapman-Kolmogorov semigroup. (Sign side may XOR; magnitude may not. |
| 58 | + Two operators, two algebras — the OGAR two-algebra rule.) |
39 | 59 |
|
40 | | -> `Quadrant::classify(entropy, energy)` is a **pure function of two scalars that |
41 | | -> are already readable from lanes.** It is therefore recomputable from the lens, |
42 | | -> which by the law's own falsifier makes storing it a **cache with a correctness |
43 | | -> liability, not a memory.** |
| 60 | +## 3. The arena already exists — B6's four stances |
44 | 61 |
|
45 | | -So the discipline, and it is the whole of this design: |
| 62 | +`probe_babel_stances.rs:233`: *"the SAME register switches philosopher stance |
| 63 | +(B6's Kant / Hegel / Nietzsche / Wittgenstein panel = **four ClassView |
| 64 | +projections of one crystal**)."* Four readers, one arena. That is precisely what |
| 65 | +plasticity acts on, and it makes each quadrant concrete rather than abstract: |
46 | 66 |
|
47 | | -| | recomputable from the lens? | verdict | |
| 67 | +| quadrant | over the stance panel | detectable how | |
48 | 68 | |---|---|---| |
49 | | -| a quadrant **assignment** | yes — `classify(H, c)` | **projection. Never stored.** | |
50 | | -| a quadrant **trajectory** | yes — episodic = Lance versions (`QueryReference::at`) | **projection. Never stored.** | |
51 | | -| a probe **outcome** (held-out test failed here) | **no — the world answered** | **observation. Stored.** | |
52 | | -| "no reader elected this structure until sweep S" | **no — it is a fact about the projection surface, which is in no lane** | **elevation. Stored.** | |
53 | | - |
54 | | -**Assignment is a projection; the test outcome is an observation.** That single |
55 | | -line is what keeps this from undoing the zero-copy arc. Anything eligible to be |
56 | | -written here earns it by being *evidence the substrate did not already contain* — |
57 | | -never by being expensive to recompute. |
58 | | - |
59 | | -## 3. Placement: grey vs white |
60 | | - |
61 | | -Per `zero-copy-lens-law.md` § "Grey and white": |
62 | | - |
63 | | -- **Grey (content)** — known knowns already live here. The corpus rows. This |
64 | | - quadrant mints **nothing new**; proposing a "known-knowns tenant" is the |
65 | | - second-projection anti-pattern with a philosophy hat on. |
66 | | -- **White (connectivity)** — the other three are all statements about the |
67 | | - *projection surface*, not about content: |
68 | | - - known unknown → a **marked missing** connection (where a read should have |
69 | | - landed and did not); |
70 | | - - unknown known → an **unelected** connection (present, no ClassView reads it); |
71 | | - - unknown unknown → the **boundary** of the connection space (where the |
72 | | - codebook has no centroid, residuals spike, the quorum has no witnesses). |
73 | | - |
74 | | -That all three land in white matter is a result, not a convenience: it is the |
75 | | -same fence as *"cross-tenant pointers are legitimate; cross-tenant values are |
76 | | -not."* |
77 | | - |
78 | | -## 4. Prior art to consume, never re-derive |
79 | | - |
80 | | -| surface | where | covers | |
| 69 | +| **known known** | all four stances converge; path myelinated | agreement + high conductance | |
| 70 | +| **known unknown** | stances **disagree**, and the divergence is registered | B6 already measures cross-stance divergence | |
| 71 | +| **unknown known** | a stance that *would* resolve it exists in the panel but is **never elected** | sweep: projections with no route | |
| 72 | +| **unknown unknown** | **no** stance in the panel has a receptor | the panel fails *collectively* — needs a fifth stance | |
| 73 | + |
| 74 | +The third row is the payoff, and it is why the abstract first draft was worse |
| 75 | +than useless: "unelected connection" sounded like a metaphor. Here it is a |
| 76 | +countable thing — *four ClassViews exist over one register; if only one is ever |
| 77 | +elected, the other three are unknown knowns by construction.* |
| 78 | + |
| 79 | +## 4. Measured state of the mechanism (2026-07-29) |
| 80 | + |
| 81 | +| surface | where | state | |
81 | 82 | |---|---|---| |
82 | | -| `Quadrant::classify` | `ndarray::hpc::entropy_ladder` | the 2×2 itself | |
83 | | -| `DkPosition` (MountStupid → PlateauOfMastery) | `planner/cache/triple_model.rs` | the meta-confidence axis over self/user/impact | |
84 | | -| `curiosity_mul` (D-SCI-4) | planner MUL | the exploration gateway — where to spend entropy work | |
85 | | -| D-SRS-3 basin self-codes + held-out gate | — | "where am I uncertain", already with a held-out falsifier | |
86 | | -| D-SRS-3b evidence-composite basin uncertainty | — | operator-corrected uncertainty compositing | |
87 | | -| D-SRS-4 derivation provenance + confidence delta | — | the self-reference falsifier | |
88 | | -| `Locus::Quorum` / `Locus::Contradiction` | `causal_witness.rs` | the shipped precedent for *stored* entropy work | |
89 | | -| `world_model.rs` / `world_map.rs` | contract | `WorldModelDto` quadrant-snapshot (self / other / …) | |
90 | | - |
91 | | -The known-unknown quadrant is **substantially already built** (D-SRS-3/3b + |
92 | | -curiosity_mul). The genuinely new work is the other two. |
93 | | - |
94 | | -## 5. Falsifiers — required before any lane is minted |
95 | | - |
96 | | -Per the P0 falsifiability rule, each must have both halves: |
97 | | - |
98 | | -- **F1 — the unknown-known sweep can FIRE and can STAY SILENT.** On a corpus with |
99 | | - deliberately unelected structure it must find it; on a corpus where every lane |
100 | | - has a reader it must return empty. A sweep that reports "latent structure" on |
101 | | - every input carries exactly as much information as one that never fires. |
102 | | -- **F2 — the unknown-unknown boundary is only credible from a FAILED probe.** |
103 | | - Assert the held-out set is non-trivial (`kept * 3 < total`-style anti-vacuity), |
104 | | - and that a probe which succeeds does *not* mark a boundary. A boundary detector |
105 | | - that fires without a failure is measuring its own prior. |
106 | | -- **F3 — the recompute falsifier, on every stored value.** Recompute it from the |
107 | | - lens; if it comes back equal, it was a projection and must be deleted. This is |
108 | | - the mechanical guard against § 2's trap and applies to every field, forever. |
109 | | -- **F4 — quadrant migration must be observable.** Paying entropy work on a |
110 | | - `Staunen` item must move it (`Staunen → Confusion → Wisdom`), and *not* moving |
111 | | - under investment is itself the finding. Without this the quadrant is decoration |
112 | | - (the `heel_threshold` inertness lesson). |
113 | | - |
114 | | -## 6. Sequencing (explicitly NOT now) |
115 | | - |
116 | | -Ordered behind the declared priorities — W6 antecedent binder, the ZC-2 |
117 | | -remainder, W8 hygiene: |
118 | | - |
119 | | -1. **Q0 — census, no code.** Map every existing lane to grey/white and to a |
120 | | - quadrant. The `zero-copy-lens-law.md` grey/white table is flagged *"the |
121 | | - governing frame, not a census"*; this closes that gap and is the honest |
122 | | - prerequisite for everything below. |
123 | | -2. **Q1 — the unknown-known sweep** (F1). Highest value, lowest risk: it reads |
124 | | - the existing surface and mints nothing. It answers "what does the substrate |
125 | | - already hold that nothing reads?" |
126 | | -3. **Q2 — probe-outcome storage** (F2 + F3). The first genuinely new stored |
127 | | - evidence. Needs a named source before a lane — the `revisions:` lesson: |
128 | | - *if you cannot name what the borrow borrows from, you are not ready.* |
129 | | -4. **Q3 — migration accounting** (F4). Only meaningful once Q1/Q2 exist. |
130 | | - |
131 | | -**Gate:** no lane is minted before its falsifier is green. If Q1's sweep cannot |
132 | | -demonstrate both halves of F1 on a real corpus, the next deliverable is the |
133 | | -probe, not more design. |
| 83 | +| `PlasticityState` (3-bit S/P/O per-plane hot/frozen) | `causal-edge/src/plasticity.rs` | wired on `CausalEdge64`; **23 `ALL_FROZEN`, 11 `ALL_HOT`, 3 selective** call sites | |
| 84 | +| `PlasticityEngine` (STDP + Hebbian + homeostatic) | `holograph/src/rl_ops.rs:1128` | **ZERO users outside holograph** | |
| 85 | +| STDP timing markers | `holograph/src/width_16k/schema.rs:439` | present | |
| 86 | +| NARS self-reinforcement LoRA | ndarray `hpc/causal_diff.rs` | present | |
| 87 | + |
| 88 | +**The finding: the field and the engine are in different crates and are not |
| 89 | +connected.** `PlasticityState` records *whether* a plane may change; |
| 90 | +`PlasticityEngine` knows *how* something changes. Nothing routes one to the |
| 91 | +other, so no traversal currently updates any conductance. The state is not |
| 92 | +"frozen" (11 sites do go hot) — it is **inert**: hot and frozen currently lead to |
| 93 | +the same behaviour, because nothing consumes the bit to modulate a path. |
| 94 | + |
| 95 | +That inertness is the first thing to falsify, per the P0 rule: *a knob that |
| 96 | +changes nothing is decoration.* |
| 97 | + |
| 98 | +## 5. Falsifiers — required before any wiring lands |
| 99 | + |
| 100 | +- **P1 — the hot/frozen bit must be INERTNESS-TESTABLE.** Flipping |
| 101 | + `ALL_HOT`→`ALL_FROZEN` on a path under repeated traversal must change an |
| 102 | + observable; if both produce identical behaviour the bit is decoration. This is |
| 103 | + the `heel_threshold` lesson applied to the substrate's own plasticity flag. |
| 104 | +- **P2 — reinforcement must be OBSERVABLE and BOUNDED.** Repeated traversal must |
| 105 | + measurably increase conductance (fire), and a path *not* traversed must not |
| 106 | + drift (stay silent). Both halves. Plus saturation: unbounded reinforcement is |
| 107 | + the runaway that homeostatic plasticity exists to prevent — assert a ceiling. |
| 108 | +- **P3 — content must NOT change.** The zero-copy guard for this whole design: |
| 109 | + after a plasticity update, re-read the arena through the lens and assert the |
| 110 | + **bytes are identical**. Conductance changed; content did not. If content |
| 111 | + moved, this stopped being myelination and became a write. |
| 112 | +- **P4 — stance election must actually shift.** Over B6's panel, reinforcing one |
| 113 | + stance must change which ClassView is elected on a later pass — and the other |
| 114 | + three must remain *reachable* (a myelinated favourite that makes the others |
| 115 | + unreachable is pathology, not learning). This is the unknown-known detector's |
| 116 | + own falsifier. |
| 117 | + |
| 118 | +## 6. Sequencing (explicitly NOT now — behind W6 / ZC-2 / W8) |
| 119 | + |
| 120 | +1. **P0-census** — map `PlasticityState` consumers: who reads the bit, and does |
| 121 | + anything modulate on it? Expected answer from §4: nothing. Confirm before |
| 122 | + building. No code. |
| 123 | +2. **P1** — make the bit inert-testable (the smallest honest first step). |
| 124 | +3. **P2** — connect one traversal to one conductance update, gated + bundled. |
| 125 | +4. **P3/P4** — the stance-panel loop over B6's arena. |
| 126 | + |
| 127 | +**Gate:** if P1 shows hot and frozen are indistinguishable, the next deliverable |
| 128 | +is the probe that makes them distinguishable — not more design. The first draft |
| 129 | +of this doc is the standing example of what happens when design runs ahead of the |
| 130 | +mechanism. |
| 131 | + |
| 132 | +## 7. What survives from the first draft |
| 133 | + |
| 134 | +Only the prior-art table, which stands: `Quadrant::classify` in |
| 135 | +`ndarray::hpc::entropy_ladder` (Staunen / Confusion / Boredom / Wisdom) is a real |
| 136 | +2×2 and does correspond to the four quadrants — but it is a **read** of the |
| 137 | +current state, not the mechanism that moves between them. Under the corrected |
| 138 | +framing it is the *instrument* (how you observe which quadrant a thought is in), |
| 139 | +while plasticity is the *process* (what moves it). Do not mint a second enum; |
| 140 | +reuse it as the measurement surface for P2/P4. |
| 141 | + |
| 142 | +Also still valid: `DkPosition`, `curiosity_mul` (D-SCI-4), D-SRS-3/3b basin |
| 143 | +uncertainty + held-out gate, D-SRS-4 derivation provenance, |
| 144 | +`Locus::Quorum`/`Contradiction`, `WorldModelDto`. |
0 commit comments