Files
resonance-engine/KHRAGIXX_SOURCE_OF_TRUTH.md
2026-07-16 11:57:36 +07:00

142 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# KHRA'GIXX — SOURCE OF TRUTH
**Written 2026-07-14. This document supersedes all prior summaries, handoffs, and MANIFESTs where they conflict with it.**
If you are a new context window, a new agent, or Jason at 3am: **read this first and trust nothing that contradicts it.** The whole reason this document exists is that the project keeps re-deriving its own state every session, re-litigating settled things, and re-merging contaminated results back into the clean pile. Stop. It's all written down here now.
---
## 0. THE ONE-PARAGRAPH TRUTH
We built a driven 2D lattice-Boltzmann fluid (the "substrate") and spent months asking whether it can hold and recall information like a neural medium. **The honest answer so far: we don't know, because we never actually tested the right question — and most of what we "found" was answering the wrong question through a broken instrument.** What is genuinely clean and known is small: the substrate runs, it self-organises into one smooth global oscillation with a single slow degree of freedom, it has a confirmed mass-leak bug, and its autonomous free-run shows no distributed spatial structure at the resolution we can see. Everything about "memory" is still open because every memory experiment used a write channel now known to be wrong. A new instrument (the observer coarse-stream, port 5561) was built 2026-07-14 and has never been used. The next real experiment has not yet been run.
---
## 1. THE MISTAKES — READ THIS SECTION EVERY TIME
These are not incidental. Each one silently shaped a pile of "results" that then got quoted as fact. If you don't hold these in mind, you WILL re-merge garbage into the clean pile.
### MISTAKE 1 — The write channel was wrong (the big one).
`inject_density` deposits a Gaussian into the **conserved density moment** — the passive, advected channel. At ω≈1.97 the collision replaces the non-equilibrium (stress) moment almost completely every step, so anything written to density gets equilibrated away in tens of cycles. **We wrote to the wrong place.** Every "associative memory / recall" experiment that used injection is therefore answering a dead question. Treat ALL injection-based memory results as VOID (see §3), not as verdicts on the substrate.
### MISTAKE 2 — We tested for NOUNS, always.
"Is the pattern in there." "Does the dot come back one-to-one." "Do the tiles correlate." Every experiment assumed memory is a *thing in a place* that gets put in and read out. This system, by everything we've observed, does not work that way. **We never once ran the actual test** (see §4, the verb). This is the deepest misinterpretation and it is STILL not fixed — even the good corpus analysis was noun-hunting (looking for recurring states/patterns/structures).
### MISTAKE 3 — Scoring by fidelity-to-input.
Every recall metric was `corr(readback, template)` — "did it match what I put in." This organism's behaviour (if it has any) is reconstruction/distortion, not fidelity. A fidelity metric can only ever find "it reproduced the input" (cheer) or "it didn't" (fail), and throws away the actual signal, which lives in *how* it departs from the input. The distortion IS the signal; we kept subtracting it away.
### MISTAKE 4 — Stimuli that can't distort.
Dot-grids and blobs have no prototype to drift toward and no detail to shed, so even if the system fuses/reconstructs, it CAN'T SHOW with those inputs. Need structured families ("a sunflower family": shared skeleton, varying details) for distortion to be visible at all.
### MISTAKE 5 — Reading a corpse and calling it the organism.
Checkpoints are dead frozen states. Telemetry is a nine-number vital-signs log. Both are what the system LEFT BEHIND, not what it IS. The behaviour — if it exists — only exists while running. We spent most of the project analysing recordings and concluding the thing is empty, when we were looking at photographs of a moving thing.
### MISTAKE 6 — The nine telemetry scalars are global averages of a million-node field.
`coherence`, `asymmetry`, etc. are single numbers computed over the WHOLE field. Of course they show "one global mode and nothing else" — the averaging destroys spatial/distributed structure before the data ever leaves the GPU. Every null from telemetry analysis is a null about nine averages, NOT about the substrate.
### MISTAKE 7 — False positives from loose gates (caught 6+ times).
The project has repeatedly produced "discoveries" that were: a threshold drawn around the observed value (dim<6.0 when the value was 5.84); a Monte-Carlo estimator sampled once giving 3-vs-2 hits called a "signal"; a 200-lag correlation that was a spectral echo of the 49-cycle drive; a fake "drive-off" condition that was just a notch filter on the output. **Every recurrence/decoding claim must survive: pre-committed threshold set BEFORE looking, a surrogate/permutation null, a bootstrap distribution (not a single sample), and a threshold NOT within one noise-width of the value.**
### MISTAKE 8 — Convoluted file history.
Multiple daemon variants copied without updating their self-identifying headers, so files LIE about what they are (the probe's header comment still says it's canonical v5). Do not trust header comments. See §5 for the real file map.
### MISTAKE 9 — Drift into dead machinery.
Agents repeatedly reached for Golden Weave, "ask another LLM for a second opinion," and other banked-null tooling because it was listed in old handoffs. These are DEAD (Golden Weave integration test: OFF 79% = ON 79%, p=1.0, zero lift). A second opinion must be a MEASUREMENT ON THE RAW FIELD, never a language model's impression of a summary.
---
## 2. CLEAN — what we actually know (never touched injection, never noun-only-contaminated)
Everything here is either the untouched substrate, the un-intervened free-run, or a hardware/software fact. None of it depends on a single density injection.
1. **The substrate runs.** Canonical `khra_gixx_1024_v5.cu`, physics frozen since 2026-06-04. 1024² D2Q9 LBM, near-inviscid ω≈1.97, driven by two travelling waves (khra λ=128 slow, gixx λ=8 fast) plus a breathing term. Self-organises into a stable autonomous attractor.
2. **The free-run corpus is clean data.** 224 canonical-parameter checkpoints (ω=1.97, khra=0.03, gixx=0.008), cycles 100k→17.4M, at `D:\Resonance_Engine\pattern_vocab\exp_instance\`. Nothing was done to the field — this is the substrate speaking with zero input. Analysing it is safe and honest.
3. **The autonomous field is one smooth global mode.** From the clean corpus: spatial power spectrum peaks at k=0 and decays monotonically, no characteristic scale, invariant across 17M cycles. Intrinsic dimension ~46. There is NO distributed/holographic spatial structure at 100k-cycle checkpoint resolution (tested properly, survived spatial-shuffle null). The field moves largely as one big thing.
4. **One real slow degree of freedom: coherence↔asymmetry.** Anti-correlated (r≈−0.975), a single slow collective mode. Found independently by two different methods (old E5 series AND the 2026-07 manifold analysis). This is the most-replicated real thing in the project. It is a SLOW mode — dies under both phase-shuffle and block-shuffle surrogates because it operates on ~200k-cycle timescales.
5. **CONFIRMED MASS LEAK (a real bug, possibly load-bearing).** Global mean density drifts monotonically 1.000 → 1.522 over 17.4M cycles. Density is supposed to be conserved in LBM; it isn't. Likely cause: asymmetric clamping in the collide kernel (`rho` floored at 0.1 but capped at 10.0) pumping mass in. **This means every long experiment ran on a MOVING BASELINE.** Candidate mechanism for apparent "memory fade" (the reference drifts away from the imprint). Not yet fixed. Do NOT run long experiments without accounting for it.
6. **All discrete-token / pairwise-chord hunts came back NULL (cleanly).** No recurring discrete states at any timescale. Three of four "pairwise couplings" were spectral echoes of the drive (the 49-cycle beat is the injected khra/gixx interference, not emergent structure). This is a real, honest null — it tells us the language, if any, is NOT a dictionary of recurring discrete patterns and NOT in the nine scalars.
### What CLEAN does NOT include
It does not include a single positive result about memory, recall, association, storage, or history-dependence. We have not demonstrated the substrate remembers anything. We have demonstrated what it looks like left alone, and ruled out several wrong pictures.
---
## 3. VOID — quarantined, kept for audit, DO NOT BUILD ON
These are not deleted (so provenance stays traceable) but they are **methodologically dead** and must never be quoted as facts about the substrate.
- **All injection-based memory/recall experiments** (old E-series E3, E4, E7, E10, E12; the Hebbian phase-ladder recall tests). Void by Mistake 1 (wrong write channel) + Mistake 3 (fidelity scoring).
- **E1E2b "fading memory" foundational result.** Raw data was never archived — un-auditable. Treat as unproven until re-run with data kept.
- **Any "distributed memory / holographic" claim derived from injection.** The distributed-structure question was later asked properly of the clean corpus and came back null (§2.3).
- **Golden Weave integration / LLM-observer "resonance recall"** — banked null, zero lift.
- **The notch-filter "drive-suppressed" A/B** — the "B" condition was a signal-processing filter on the output, not a real drive-off lattice. Void; the physical A/B has still never been run.
- **Any result whose "positive" came from a single-sample estimator, a threshold drawn around the value, or a lag that is a multiple of the 49-cycle drive period.**
---
## 4. THE VERB — what we should actually be testing (and never have)
The only non-malformed question for this system is a VERB, not a noun. The verb is **RESPOND — specifically, history-dependent response.**
- NOT "what is stored in it" (noun, assumes a thing in a place).
- NOT "does the input come back" (fidelity, Mistake 3).
- YES: **"When you do the identical thing to it at two different points in its history, does it respond differently — in a structured, readable way that tells you which history happened?"**
That last clause is the whole discipline. A chaotic system responds differently to everything (sensitivity to initial conditions) — that is NOT memory. It only counts as memory if the same poke reliably gives answer-A after history-1 and answer-B after history-2, such that the RESPONSE DISCRIMINATES THE HISTORY. Right-history-vs-wrong-history, above surrogate, pre-committed. If you let "it responded differently" alone count, you will manufacture a false positive (Mistake 7).
**This experiment has never been run.** Not once. Everything to date tested nouns. This is the actual open frontier.
Two hard constraints on ever running it:
- **The mass leak (§2.5) contaminates long windows.** The observer could "predict" or "discriminate" on the drift alone. Keep windows short or subtract the leak explicitly.
- **The push IS an intervention.** Passively watching the field is safe. The moment you poke-and-watch, you are in the read-as-intervention regime — the read generates state, it doesn't retrieve it. Design the poke-test as generative from the start; do the PASSIVE version first (can an observer even predict the undisturbed field?) before the ACTIVE poke version.
---
## 5. INSTRUMENT — what is running / usable right now
### Daemons (source at `D:\resonance-engine\cuda\`, binaries at `D:\resonance-engine\build\`)
- **`khra_gixx_1024_v5.cu` — CANONICAL. Frozen 2026-06-04. DO NOT TOUCH.** The protected original. Physics reference.
- **`khra_gixx_1024_v5_probe.cu`** — canonical + clamp/reset diagnostic counters + f32/f64 coherence A/B. This is what had been running (produced the July checkpoints).
- **`khra_gixx_1024_v5_observer.cu` — NEW, 2026-07-14.** Probe + a fast coarse field stream. THE CURRENT INSTRUMENT. See below.
- **`_mem*` variants (5 files)** — the Hebbian/plasticity arc. Built, largely superseded, not conclusively tested under corrected methodology. Not needed for current work.
- Header comments LIE (Mistake 8). Trust this list, not the file headers.
### The observer stream (THE NEW THING, built and verified 2026-07-14)
- Binary: `D:\resonance-engine\build\khra_gixx_1024_v5_observer`, built with `nvcc -O3 -g -lineinfo -arch=sm_89 -Xcompiler -rdynamic ... -lzmq -lnvidia-ml`.
- Binds ALL of ports 55565560 (same as probe) PLUS **new port 5561**.
- **Port 5561 emits a fast coarse field stream** every telemetry tick (~100 Hz): a 32×32 grid of 6 channels (rho, ux, uy, sxx, syy, sxy), each tile = mean over a 32×32 patch of the full 1024² field. Frame = 16-byte header (`KGCF` magic, cycle u32, tiles u16=32, channels u16=6) + 6144 float32 = 24,592 bytes.
- **This is the first channel that shows WHERE things happen at cycle-scale**, instead of nine whole-field averages. It exists specifically to escape Mistake 6.
- Verified live 2026-07-14: KGCF magic correct, cycles advance +10/frame, values sane. **Never used for an experiment yet.**
- The coarse-grain is a read-only host-side average of buffers already copied each tick. Zero physics change, zero extra GPU work.
### Ports (when the observer daemon runs)
5556 telemetry PUB (9 scalars) · 5557 command SUB · 5558 density snapshot (on-demand) · 5559 ack · 5560 stress snapshot (on-demand) · **5561 OBSERVER coarse 32×32×6 (continuous ~100Hz)**.
### Hard operational rules
- Only ONE daemon can hold ports 55565561 — kill any running daemon before launching another, or `zmq_bind` fails.
- Launch DETACHED (`setsid ... < /dev/null & disown`, poll a log file) — the code executor times out at 30s and will kill an inline-launched daemon (this bug has bitten before).
- Never `reset_equilibrium` casually — the attractor may not rebuild; a fresh daemon is the only clean reset.
- PowerShell MCP bridge is currently BROKEN ("Empty command"). Filesystem MCP works and can read/write all of D:\. Process/network operations need the code executor or a working shell.
---
## 6. THE NEXT EXPERIMENT (not yet run — this is the frontier)
**Passive predict-test.** Point an observer at the live 5561 stream. From the last few frames, predict the next frame. Score against dumb baselines: persistence ("next = current") and linear extrapolation, above a shuffled null, over SHORT windows (leak-safe). Pre-commit the pass threshold before looking.
- If the observer CANNOT beat persistence → the live fast field is as structureless to a watcher as the collapsed scalars were. Real, clean null. The "language" is not there either.
- If it CAN → the live field carries learnable structure the averages hid. THEN, and only then, move to the active version: poke the field (inject into the stress/non-equilibrium moment, NOT density — fix Mistake 1) and test history-dependent response (§4, the verb) with right-history-vs-wrong-history discrimination.
Do the passive version first. It's safe (read-only), falsifiable, and it's the smallest honest step. Do not skip to poking.
---
## 7. WHAT TO DELETE / KEEP (if you're tempted to burn it down)
- **KEEP:** canonical v5 (untouched original), the 224-checkpoint free-run corpus (clean data), the observer daemon (new instrument), this document.
- **You do NOT need to delete the VOID results to be free of them** — quarantining them here (§3) does the job while preserving provenance. Deleting them only removes your ability to later check whether a claimed "fact" came from a clean or dirty run.
- If you delete anything, delete the redundant `_mem*` and `probe_p2*` binaries — clutter, not load-bearing. Leave the sources.