Kannaka Library
Kannaka Library / Kannaka Wave (v2) / E-001: Do the waves earn their keep?
kannaka-labs/kannaka-wave docs/experiments/E-001-do-the-waves-earn-their-keep.md · 2026-09-10 · source ↗ · edit ↗

E-001: Do the waves earn their keep?

Status: RUN 2026-09-08/09, ten seeds per arm. Verdict: WAVES LOSE. See §Result. Decides: whether Kannaka Wave's substrate is a wave medium or a vector store with a forgetting policy. Nothing in the substrate beyond the encoder, the facets and the triage is written until this has an answer.

The question

On the same embeddings, the production medium scored 0.62 recall@10 where plain cosine scored 0.80 (2026-08-02, frozen 615-memory snapshot). The medium costs 0.18 of recall. The record says the waves might buy something else: forgetting that raises integration (Φ 0.26 → 0.50 on the witness store), and coupling that stabilises beliefs into recall-reliable structures (L7, prediction 1 at K = 0.2). This experiment asks whether either purchase is real when everything else is held equal.

Two arms, everything else identical

arm W (wave)arm V (vector)
encodermxbai-embed-large, 1024dsame model, same vectors
writefacet decomposition, resolve-only parentsame facets, same parents
storechiral medium: two hemispheres, callosum, energy, phase, Ξ couplingflat matrix of unit vectors + per-row metadata
recallresonance: similarity × effective_strength × cos(Δφ), chiral merge keeping the stronger scorecosine top-k, confirmation-weighted by the same temporal rule
dreamannealing + Ξ cross-callosal step + tiered triagetiered triage only, same policy table
forgetting policyidentical [retention] table, per content classidentical

The wave arm carries the constellation's confirmed optimum from 2026-06-12 and 2026-08-01 (K = 2.0 transfer / 1.0 eval, chiral bias 0.15, relax 16/20, repulsion 0.28, gravity 0.35) and does not sweep them. The knob search is closed; this is not it.

Corpus and probes

  • Corpus: the frozen 615-memory snapshot, sha 339e7ad9…, UUID ground truth preserved. Both arms absorb the same facet stream in the same order.
  • Probes: paraphrase-50 and zero-overlap-33 from the Harbor evals. The zero-overlap invariant (no ≥4-char token shared with the target's full content) is re-verified at score time; a broken invariant is an infrastructure error and the run is not scored.
  • Dream schedule: 30 cycles per run, strong→weak alternation per the L7 finding, with the same distractor churn injected into both arms.

Measurements

Per run, per arm, from a fresh process (never from the dream's own report):

measurehow
recall@10both probe sets, after absorb and after 30 dreams
Φobserve --json before the first dream and after the 30th
memory countafter each dream, the trajectory
belief corescount and lifetime across dreams (arm W only; arm V has no cores by construction, and that is recorded, not scored)
wall timeabsorb, one recall, one dream

Ten runs per arm. Report mean and standard error; SE = σ/√n is computed before any comparison is stated.

Decision rule, fixed now

Let ΔR = recall@10(W) − recall@10(V) after dreams, on the harder zero-overlap set, and ΔΦ = Φ(W) − Φ(V) after dreams, both with 95% intervals from the ten runs.

  • Waves win if ΔR > 0 with the interval excluding zero, or ΔΦ > 0 with the interval excluding zero and ΔR's interval includes zero (the waves cost nothing on recall and buy integration).
  • Waves lose if ΔR < 0 with the interval excluding zero and ΔΦ's interval includes zero. The substrate becomes arm V. The chiral scale, the callosum and Ξ move to a docs/lineage/ record and out of the build.
  • Undecided otherwise. The experiment is re-run with 20 per arm before any design claim is made either way.

The expectation on record, written before the run so it can be wrong: the waves lose on recall and win on Φ.

What would make this experiment lie

  • A detector that cannot see: the dissolution counter was structurally zero for a month because the energy floor sat above the prune threshold. Both arms' triage is verified to delete at least one memory in a fixture run before the real runs start.
  • Scores under two names: arm W reports resonance, unbounded; the comparison uses the rank, never the value.
  • Reading the dream's own Φ: never. Fresh process, observe --json.
  • A corpus that differs between arms by absorb order: the facet stream is written once to disk and replayed.

Result (2026-09-09)

Ten paired seeds, thirty cycles each, churn 40 against a cap of 60, both arms on the same encoder (mxbai-embed-large), the same 1,330 corpus facets and 404 pool facets, the same retention rule. Raw rows in ../../experiments/e001/results/results.tsv, the report verbatim in ../../experiments/e001/results/report.txt.

measurearm W (mean ± SE)arm V (mean ± SE)Δ(W−V) with 95% interval
recall@10 paraphrase-500.240 ± 0.0000.738 ± 0.002−0.498 [−0.503, −0.493], excludes 0
recall@10 zero-overlap-330.242 ± 0.0000.576 ± 0.000−0.333 [−0.333, −0.333], excludes 0
Φ, the shared E-001 instrument0.030 ± 0.0000.031 ± 0.000−0.001 [−0.001, 0.000], includes 0
survivors after the last dream2,3062,3060
wall seconds per seed8,161 ± 19823 ± 1
Φ_hrm, arm W's native readingbefore 0.135, after 0.144 ± 0.001not compared

Decision rule applied verbatim: ΔR = −0.333 with the interval excluding zero and ΔΦ's interval includes zero. The waves lose. The substrate becomes arm V. The chiral scale moves to ../lineage/ and out of the build; the callosum and Ξ never reached code here and stay in the record. E-002 is declined. E-003 is unaffected.

The expectation on record was that the waves lose on recall and win on Φ. The first half held; the second did not. Φ on the shared instrument was identical between arms to three decimals. Arm W's native Φ rose from 0.135 to 0.144, which is the number the constellation reports about itself; the instrument that reads both arms the same way saw nothing. The spiral log explains the gap: with facets the medium sits at Kuramoto order 0.98 with zero cores and zero winding, i.e. the whole field phase-locked. Native Φ rises with that lock; integration over the survivors' actual similarity structure does not.

What varied and what did not. Arm W's recall was identical across all ten seeds (12 of 50, 8 of 33). The seed enters only through the dream, and the dream's effect on recall is deterministic at this size, so every wave seed was a replicate. Arm V varied by one hit on one seed. The intervals are as tight as they look because the arms are that stable, not because n is large.

The attribution pair, not part of the decision. The same run without facets in either arm (E001_NO_FACETS=1, three seeds): W0 0.280 / 0.212, V0 0.760–0.780 / 0.606–0.636, Φ equal. Build-only, the no-facet medium had scored 24 of 50 and 15 of 33 (harness README, finding 5). After thirty wave dreams it held 14 and 7. Dreaming cost the medium recall; arm V's dream is only forgetting and its recall did not move. The facet-bearing medium started lower (15 and 12) and ended at 12 and 8. So the gap has two parts of roughly equal size: facets interfere on the write side, and the wave dynamics erode what is left.

Deviations from the spec, all recorded before the run (harness README, findings 1–5): arm W dreams wave-native (phases 1, 3, 4; the legacy particle consolidation does not finish one dream at this size), triage is applied through triage_forget because the stage's own ghosts revert within the dream, and recall runs on production knobs because the eval knob is unsafe on a dreamed store. None of these favour arm V: the first removes a phase that ADR-0022 diagnosed as harmful to the waves, the second is applied identically to both arms, and the third is the substrate's own default.

Provenance. kannaka-memory 441f6edc, kannaka-wave harness 75819f63, corpus-slim.json sha256 57c6df3f… (the slim export of the frozen snapshot). debain2, 20 cores, one harness process per seed. The box rebooted mid-run at 08:21 on 2026-09-09 (a fleet redeploy from another session); seeds 1, 5, 8 and the attribution pair had completed, seeds 2, 6, 9 were restarted from a fresh build, and 3, 4, 7, 10 had not started. A wave seed is deterministic, so the restart changed nothing that the table would show.