Skip to content
100 changes: 100 additions & 0 deletions .claude/board/entries/2026-10-11-maturation3-ladder-probe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# 2026-10-11 — Novelty → Wisdom: eight-stage 3-bit maturation ladder (D-MATURATION3-0)

**Status:** EXPERIMENTAL probe, test-local. No production change.
`crates/lance-graph-planner/tests/maturation_ladder.rs`

```text
cargo test -p lance-graph-planner --test maturation_ladder
cargo test --release -p lance-graph-planner --test maturation_ladder measure_ -- --nocapture
```

## Codebook (bits 50..52 under an explicitly declared experimental reading)

| code | stage | earned by (executed result) |
|---|---|---|
| 7 | Staunen | violation behind one observation root |
Comment thread
AdaWorldAPI marked this conversation as resolved.
| 6 | Anomaly | violation behind ≥ 2 independent roots |
| 5 | DogEar | `hydrate` → ProposedOnly (gap localized) |
| 4 | Candidates | `hydrate` → Partial |
| 3 | Mechanism | `hydrate` → Hydrated |
| 2 | Falsification | discriminating test: survivor passed AND rival ruled out |
| 1 | Integration | applied as a premise; ≥ 1 new inference resolved through it |
| 0 | Wisdom | from Integration, an ablation in an isolated copy has impact > 0 |

Forward results never move a more mature state backward; only a violation
reopens it. Repeating a completed result never advances it. Unsupported
results abstain.

## Findings

- **VERIFIED-IN-CODE — production hydration has no feedback seam.**
`pearl::hydrate` reads only the sealed chain; a resolved relation is never a
premise. Measured on the A → B → C chain: baseline residue 2, test-local
feedback (production `hydrate` unchanged, over a premise chain) residue 0.
- **MEASURED (release, this container):** `mature` median 1.99–2.83 ns,
p95 3.0–4.6 ns, 0 allocations over 1e6 transitions. Fixed point, 3 relations
/ 4 observations: baseline ~165 ns, 10 allocs, residue 2; feedback ~157 ns,
8 allocs, residue 0. The probe loop allocates (premise pool `Vec`); that is
test scaffolding, not a production cost claim.
- **EXPERIMENTAL — anchor ablation:** cutting derived A in an isolated copy
raises residue by 2 (B and C lose their bridge); the original population is
untouched.
- **EXPERIMENTAL — lineage:** a derived premise carries the union of its
parents' observation roots and never adds one (C: 4 roots from 4
observations). Two paths from the same roots count 2 supports, not 4.
- **EXPERIMENTAL — self-support:** only resolved relations are premises; a
two-relation cycle stays open. Disabled, it grounds itself.
- **EXPERIMENTAL — deeper Staunen:** "1 → 4 does not hold" contradicts
nothing without the anchor chain and is a violation with it.

Disable runs, all red: forward result moving backward; derived dropping a
parent's roots; write leaking into W; write not clearing the old code;
integration without new inferences; Wisdom without ablation impact; existing
provenance accepted; discrimination without ruling out; feedback off; open
relations as premises. (The first T1 fixture hid the leak/clear disables; it
was fixed before recording.)

## CONTRACT DECISION — migration (not taken)

Bits 50..52 are plasticity: `CausalEdge64::learn` gates on them,
`MooreNars16` packs them at bit 50, `CausalEdgeV3` byte 3 carries them, and
D-CE64-STAUNEN-0 measured that another meaning there changes `learn`. The
probe therefore refuses `V2Stamped`, `V3Register`, `V1Legacy` and `Unknown`.
Smallest viable path: a new declared reading (a provenance/generation such
that historic rows keep plasticity), a decision where plasticity lives under
that reading, and a `learn` that does not gate on maturation bits. Not done.

## OPEN

- Feedback in production requires D2 provenance ids (roots here are a
test-local u64 bitset).
- `Executed` results are constructed by the test from real `hydrate`
outcomes; mapping recipe outputs onto them is undesigned.
- T5 uses hydration outcomes as the discriminating test, a weak stand-in for
a Pearl trial; certification is untouched by design.

## Addendum, same day — Maslov Pyramid of Cognition

Named by the operator; the model is documented in
`.claude/knowledge/maslov-pyramid-of-cognition.md`. Stage 7 renamed
Astonishment.

- **Corrected:** the first T9 applied the new violation to the anchor itself.
It now lands on the contradicted relation (B), which starts at 7, and the
anchor (A) stays at 0. Direct counterevidence against A's own relation
still reopens A.
- **Added:** an indirect 3-cycle (A → B → C → A) stays open; disabled, it
grounds itself. A grounded 3-cycle resolves once and 64 further passes add
no root.
- **Disable runs, red:** a derived relation manufacturing its own root;
violation routed by subject only (hits the anchor).
- The root union matches the existing `lance_graph_contract::revision` mask
algebra (`independent_roots`, difference against ancestry).

## Addendum — lineage guard restored (review on #1494)

I had removed the "descendants are not premises" guard as unreachable. That
holds only while relations never reopen; T9 reopens an anchor. Reproduced:
ground the 3-cycle, remove the ground, reopen R0, and R2 (derived through R0)
re-grounds it. The guard is restored. A test pins that R0 stays open, and a
disable arm shows that without the guard R0 is re-grounded.
25 changes: 25 additions & 0 deletions .claude/board/entries/2026-10-11-residue-fixed-point.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# 2026-10-11 — Residue fixed point: only new evidence lowers it (D-RESIDUE-FP-0)

**Status:** MEASURED. Test only, no production change.
`crates/lance-graph-planner/tests/residue_fixed_point.rs`.

```text
cargo test -p lance-graph-planner --test residue_fixed_point
```

Claim: the reasoning loop is cheap (`pearl::hydrate` over the sealed chain),
so it runs to a fixed point; what remains open is residue. Residue here is
hydration debt in bits 59..63 (`IndirectUnknown` edges).

Pinned:
- extra passes over the same evidence move no bit;
- re-sealing evidence already present does not lower the residue;
- unrelated evidence changes nothing; the missing binding lowers the residue
exactly where it lands;
- the loop moves only bits 59..60, never certification.

Disable runs, both red: promoting on partial evidence (3 of 4 tests fail);
moving certification inside `hydrate` (the bit-isolation test fails).

OPEN: the surprise level proposed for bits 50..52 is not in the layout (still
plasticity); its residue is untested until O14/O4 decide the v3 layout.
4 changes: 3 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,16 @@ 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.

306 entries, 2026-08-06 .. 2026-10-11.
308 entries, 2026-08-06 .. 2026-10-11.

| date | entry id | finding | file |
|---|---|---|---|
| 2026-10-11 | `D-TELEPORT-0` | | [2026-10-11-teleport-probe-source-restriction.md](2026-10-11-teleport-probe-source-restriction.md) |
| 2026-10-11 | `synergy-ledger-classid-hotplug` | | [2026-10-11-synergy-ledger-classid-hotplug.md](2026-10-11-synergy-ledger-classid-hotplug.md) |
| 2026-10-11 | `D-RESIDUE-FP-0` | | [2026-10-11-residue-fixed-point.md](2026-10-11-residue-fixed-point.md) |
| 2026-10-11 | `research-recovery-reports` | | [2026-10-11-research-recovery-reports.md](2026-10-11-research-recovery-reports.md) |
| 2026-10-11 | `D-PHOTO-0` | | [2026-10-11-photo-probe-64-populations.md](2026-10-11-photo-probe-64-populations.md) |
| 2026-10-11 | `D-MATURATION3-0` | | [2026-10-11-maturation3-ladder-probe.md](2026-10-11-maturation3-ladder-probe.md) |
| 2026-10-11 | `D-TELEPORT-2` | | [2026-10-11-lance-source-probe.md](2026-10-11-lance-source-probe.md) |
| 2026-10-11 | `coresearch-labels-address-lifetime` | | [2026-10-11-coresearch-labels-address-lifetime.md](2026-10-11-coresearch-labels-address-lifetime.md) |
| 2026-10-11 | `coresearch-instance-authz` | | [2026-10-11-coresearch-instance-authz.md](2026-10-11-coresearch-instance-authz.md) |
Expand Down
94 changes: 94 additions & 0 deletions .claude/knowledge/maslov-pyramid-of-cognition.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Maslov Pyramid of Cognition — from Astonishment to generative Wisdom, and back

> READ BY: truth-architect, contradiction-cartographer, trajectory-cartographer,
> v3-envelope-auditor, and any session touching CausalEdge64 bits 50..52,
> novelty / Staunen / wisdom scheduling, `pearl::hydrate` feedback, or anchor
> ablation.
> STATUS: WORKING-MODEL. The probe is EXPERIMENTAL and test-local
> (`crates/lance-graph-planner/tests/maturation_ladder.rs`, D-MATURATION3-0).
> Nothing below is wired in production.

## Name and scope

The operator named this model after Maslow's hierarchy. It is a proposed
computational model, not a claim that Maslow defined these stages.

It is **not** Wang's NAL-1..9. NAL levels describe what a reasoner is able to
do. The pyramid describes how far **one discovery** has matured.

## The eight stages (bits 50..52, 3 bits, direction 7 → 0)

| code | stage | earned by an executed result |
|---|---|---|
| 7 | Astonishment | an observation contradicts an expectation (one root) |
| 6 | Anomaly | the contradiction has ≥ 2 independent roots |
| 5 | DogEar | hydration localizes the gap (ProposedOnly) |
| 4 | Candidates | hydration finds one binding (Partial) |
| 3 | Mechanism | hydration finds both bindings (Hydrated) |
| 2 | Falsification | a discriminating test passed the survivor AND ruled out a rival |
| 1 | Integration | used as a premise, it resolved ≥ 1 other relation |
| 0 | Wisdom | from Integration, ablating it in an isolated copy reopens ≥ 1 relation |

Rules:

- Stages may be skipped when an executed result justifies it.
- A forward result never moves a more mature state backward.
- Repeating a completed result (another hydration pass) never advances it.
- Only a contradiction reopens a stage.
- Wisdom is not "zero uncertainty". It is measured reuse: an ablation must
show that other relations depend on the anchor.

## The recursion

An anchor at 0 generates expectations through the relations derived from it.
An observation that contradicted nothing before can now contradict one of
those expectations. That contradiction lands on **the contradicted
relation**, which starts its own pyramid at 7. **The anchor stays at 0.**

Only counterevidence against the anchor's **own** relation reopens the anchor.

So wisdom does not end surprise. It makes new surprises recognizable. This is
recursive scaffolding, not circular confirmation.

## Separation of contracts

| bits | contract | role here |
|---|---|---|
| 50..52 | maturation (this model) | where the discovery stands |
| 53..58 | witness / breadcrumb | handle to the transition record |
| 59..63 | `EpistemicState5` | what is licensed; the input to ablation |
| 24..39 | F/C | statistical evidence under its declared reading |
| — | thought / recipe | which operation ran |

Maturation never writes F/C, W or 59..63. Certification never rises because a
rival was ruled out.

## Generative reuse is not independent evidence

A resolved relation may become a premise for further inference. It carries
the **union of its parents' observation roots** and never adds one of its
own. This is the same mask algebra as the existing
`lance_graph_contract::revision` (`independent_roots`, `difference` against
the ancestry). Two guards keep reuse from becoming self-support:

1. Only resolved relations may serve as premises, so neither a direct cycle
nor an indirect one (A → B → C → A) can ground itself.
2. A relation's own descendants are never its premises. Without this, a
relation reopened by counterevidence would be re-grounded by what was
derived from it, and circular support would survive the loss of its
external ground.

Going round a grounded cycle adds nothing.

## Status

| claim | status |
|---|---|
| `pearl::hydrate` reads only the sealed chain; resolved relations never feed back | VERIFIED-IN-CODE |
| test-local feedback makes A → B → C resolvable without a new observation | EXPERIMENTAL (probe) |
| anchor ablation measures dependence (impact 2 on the chain) | EXPERIMENTAL (probe) |
| an anchor turns a neutral observation into new Astonishment; the anchor stays at 0 | EXPERIMENTAL (probe) |
| `mature`: ~2–3 ns median, 0 allocations (release, one container) | MEASURED |
| bits 50..52 carry the code in production | BLOCKED — they are plasticity (`learn`, `MooreNars16`, `CausalEdgeV3`) |
| production feedback | BLOCKED — needs D2 provenance ids |
| bit migration and where plasticity lives | CONTRACT DECISION (operator) |
Loading
Loading