OMEGA·Ω
Evolution · the collective

A collective that copies, communicates, and evolves.

Each sphere is an instance of OMEGA. One at the start : it copies itself (P1, byte-exact), the instances communicate (P2), their genomes mutate and are selected generation after generation (P3) — the lineage grows, the versions evolve (greener = better out-of-lexicon, when the word is heard). Above, the Hangman is played for real. Real data (omegaStep).

The 3D rendering (Three.js/WebGL) couldn't start here (network/sandbox). It shows on the deployed site or a browser with WebGL.
the Hangman, played by the current version
generation 1 · population 1
out-of-lexicon win rate · heard word
—
arbConf gene —
engine : —
P1 copiesP2 communicateP3 generationsO1 group

Initializing…

the 3D engine is starting

the lineage evolves continuously — each cycle = one generation · the Hangman plays for real, live, on the deployed site
Ω and copies (base) evolved versions (better when the word is heard) communication lineage between generations

What's happening — faithful to the measurements

—P1 · copies — decision functions reconstructed byte-exact (bPC) ; the copy replays identically.
—P2 · communicate — A whispers the rare letter, B wins where it was losing. A code emerges from the reward.
—P3 · generations — the arbConf gene evolves: it learns to lean on the sound of the word when its letters are unsure. +14 pts out-of-lexicon when the engine hears the word (5 seeds, out-of-sample); without the sound, this gene makes it lose.
—O1 · group — explored up to the real versions : doesn't hold (all ~97 %, redundant ; the useful routing is already internal to the engine). Closed, shown honestly.

The genesis follows the roadmap in order : it starts from a SINGLE OMEGA that plays → it copies itself (P1) → the two communicate (P2, whisper) → then the generations grow and evolve (P3), the collective playing the Hangman at the same time as it grows (up to 14). No bluff, and here is exactly what is real : in « Real engine » (deployed site) mode, each game above is a real omegaStep game (words removed from the spelling lexicon — but the engine hears them : see the correction below). P1 reconstructs live a real byte-exact decision function (order-2→5 prediction + residual, verified byte-exact) before the twin is born. P2 : A LEARNS live which rank to whisper (reward = won-with − won-without, converges to the rarest letter) → the whisperer 🅢 wins more. Closed loop — the Hangman JUDGES live : at the birth of each version, OMEGA makes it play 72 real isolated out-of-lexicon games (heard word) (clean reset) → its real win rate, which drives selection AND colour (nothing pre-computed). At every birth, the Hangman therefore plays these ~72 games (« ⏳ the Hangman judges », a few seconds, played in small batches so the animation doesn't freeze) : the isolated measurement requires a clean reset (`initOmegaGlobals`, rebuilding the VSA substrate) — the price of the real thing. Selection (P3) replaces the worst arbConf with a mutated child of the best ; arbConf evolves toward the optimum (~0.15-0.25) and the win rate rises (measured live, +14 pts, consistent with the rigorous +14 from the 5-seed out-of-sample harness). ⚠ Correction of 27/09/2026 : these games are a « heard Hangman ». The harness removed the word from the spelling list, not from the sound table, and the arbConf gene hands the decision to the route that reads the word's sound : the engine hears the word it must spell, as in a dictation. The +14 is real in this regime, and a real ear keeps most of it : synthetic voices heard through route B (wav2vec2, local) give 69 to 72 %, against 56 % with letters alone. With no sound at all, the same gene makes it lose : 37.5 % against 56.1 % (10 seeds ; evo/oov_son_probe.js, dictee/JOURNAL.md). In demo (preview without the engine) : replay of the real captured measurements (labelled « demo »). In-lexicon OMEGA is at the ceiling (~97 %) — which is why evolution is measured out-of-lexicon. O1 (group) is shown but inconclusive — and the follow-up with real versions (evo/evo_o1_real.js) confirms it : too strong & alike (96-97 %, disagreement ≤ 10 %), and the useful coordination is already the engine's internal OS arbitration. O1 closed. O2 (multi-use measurement) is done : the substrate generalizes beyond French — it reconstructs and compresses code as well as French (and nothing on scrambled input), a domain-agnostic structure compressor, not comprehension (evo/evo_o2_crossdomain.js, evo_o2_compression.js). Data : evo/p1_capture.json, p2_capture.json, oov_capture.json ; +14 harness : evo/evo_oov_evolve.js ; plan : evo/EVO_ROADMAP.md.

🧬 Enjoyed this Darwinian loop ? In Vivarium — another project by the same author — it's the whole game : a tactical squad shooter where the AI is the subject, not a gadget. The enemy squad learns as it plays, the creatures evolve generation after generation against you — the difficulty rises through adaptation, never through stat inflation. Handmade, zero generative AI.

Vivarium on itch.io ↗

← Back to research