If you build models
A Dreamer-class textual world model (Trika RSSM, EFE actor, Hopfield memory, sleep) coupled to a frozen 120B LLM through a single trained logit-bias channel (VimarsaBridgeV2). Substrate and surface are measured separately.
Pratyabhijna World Model
A Dreamer-class textual world model (Trika RSSM, EFE actor, Hopfield memory, sleep) coupled to a frozen 120B LLM through a single trained logit-bias channel (VimarsaBridgeV2). Substrate and surface are measured separately.
PWM gives a creative AI an inner state that learns, remembers, dreams, and is rewarded for its own surprise. Then it asks a large language model to put that state into words. The model's mind and the model's mouth are different things.
Numbers on this page are read directly from JSON in benchmarks/results/ at build time.
Generated Mon, 18 May 2026 19:25:54 GMT.
How to read this
Calling a research prototype done is the fastest way to oversell it. The site is honest about what is stable, what was revised this round, what is deprecated in spirit, and what is queued for the next pass.
| Area | State | What it means now |
|---|---|---|
| Core world-model training | stable | Phase 6 checkpoint at 1M steps; A6 has two partial seeds queued for re-run. |
| Vimarsa Bridge v2 | stable | Trained; in use in the API v1 path and the H5b runner. |
| API v1 (POST /v1/generate, WS /v1/ws/generate) | stable | Faithful surface over PancakrtyaLoopV2. |
| API legacy (POST /generate, /refine, /batch) | deprecated | Parallel orchestration that bypasses EFE/Citta/Bridge; documented only, not refactored this round. |
| Paper | revised | H5b reframed as a bridge-bias ablation; four fidelity bugs corrected. |
| GitHub Pages site | rebuilt | Compact hero, architecture, philosophy table, dual-audience copy. |
| H5c composition / null-bias / low-resource tests | queued | Reframed in the project review; not run this round. |
| Human evaluation cohort | queued | Pre-registered for the follow-up journal submission. |
Architecture
PWM is a composite: a trainable world model that learns latent creative state, and a frozen 120B language model that turns that state into text. Almost every misread of the project comes from collapsing these two roles. The third box, the Vimarsa Bridge, is the only place learning crosses between them.
The world model is the substrate. It learns latent state over text, holds memory, scores creative process, and never speaks.
Source files: pwm/world_model/trika.py , pwm/active_inference/efe_actor.py , pwm/rewards/camatk.py , pwm/memory/citta_store.py , pwm/sleep/consolidation.py .
The frozen 120B LLM is the surface generator. Its weights are never trained; the world model couples to it through a single learned bias channel.
Source files: pwm/llm/backend.py , pwm/vimarsa/bridge_v2.py , pwm/vimarsa/narrator.py , pwm/generation/llama_backend.py , pwm/pipeline/pancakrtya_loop_v2.py .
World model (trainable) Frozen LLM (sparse calls)
============================ ==========================
text observation
|
v
encoder + LoRA --> Trika RSSM (h, z) --> EFE actor
|
+--> Citta-store (Hopfield recall + episodic store)
| |
| +--> NREM / REM consolidation
|
+--> Camatkara reward (dF + dI_Hopfield + Empowerment)
| |
| +--> sphuratta event
|
+--> VimarsaBridgeV2.as_logits_processor(h_t)
|
v
add logit bias -> nemotron-3-super:120b stream
|
v
surface text (lyrics, lines)
The repository exposes two API surfaces in api/main.py. The v1 endpoints
(POST /v1/generate, WS /v1/ws/generate) delegate to
PancakrtyaLoopV2 and exercise the world model, EFE actor, Citta-store, and bridge.
The legacy endpoints (POST /generate, /refine, /batch)
are a parallel orchestration that uses only a world-model-derived prompt prefix; they are
deprecated in spirit and slated for unification. Consumers reproducing paper claims should use the v1 path.
Philosophy meets code
The Kashmir Saiva vocabulary is not decoration. Each term constrained a design decision: what state is shared, when the LLM is invoked, what counts as a recognised moment. The mapping below is concrete and lives in the codebase you can read.
| Concept | Source | Computational realisation | Module |
|---|---|---|---|
| Pratyabhijna | Utpaladeva, IPK 1.3-1.4 | Recognition density q_phi(z | h, o) | pwm/world_model/rssm.py |
| Spanda | Vasugupta, SpandaKarika 1.1 | Stochastic discrete latent z ~ Cat(32x32) | pwm/world_model/rssm.py |
| Vimarsa | Utpaladeva, IPK 1.5.11 | Reflexive bridge from h to LLM logit bias | pwm/vimarsa/bridge_v2.py |
| Sphuratta | Abhinavagupta, Tantraloka 1.56 | Recognised-moment event firing | pwm/rewards/camatk.py |
| Camatkara | Abhinavagupta on Dhvanyaloka 1.1 | Intrinsic creative reward (dF + dI_Hopfield + Emp) | pwm/rewards/camatk.py |
| Citta | Pratyabhijnahrdayam 9 | Posterior memory; Hopfield retrieval | pwm/memory/citta_store.py |
| Svatantrya | Utpaladeva, IPK 2.1 | Max-entropy policy prior | pwm/active_inference/efe_actor.py |
What we found
Nine hypotheses pass under their pre-registered protocols (Hedges' g, BCa 95 percent CI, 50,000-permutation paired tests). Each card cites the source JSON; click through to the repository for full artefacts.
29.72x mean reward ratio
Time-to-sphuratta diagnostic failed; mean reward is the primary gate.
phase_2_gate.json1.307x completion ratio
Sphuratta-rate diagnostic overshot its target band.
phase_3_gate_step0300000.jsonnear-zero forgetting
With-sleep and without-sleep values are identical at recorded precision.
phase_4_gate_step0300000.json100% meaningful proxy
Proxy metric, not a completed human evaluation.
phase_5_gate_step0500000.json2.142x over Phase 2 baseline
Internal reward/imagination protocol, not live text quality.
phase_5_gate_step0500000.json1.897 nats
Use phase_6_gate_step1000000.json as the current source of truth.
phase_6_gate_step1000000.json23.6x advantage
Two A6 seeds are partial timeout runs.
ablation_a6_1level_wm.jsonnorm 13.2
Within registered [1, 50] bounds.
phase_6_gate_step1000000.json0.582 nats
Automated diversity proxy.
phase_6_gate_step1000000.json H5b is not a head-to-head between the world model and the LLM.
It is an ablation of the single trained coupling channel between them. Both sides use the same
120B model, the same prompts and the same decoding hyperparameters. The only difference is whether
VimarsaBridgeV2.as_logits_processor(h_t) is applied to next-token logits, or whether
an identity processor is used. The scorer is the stripped text-only camatkara heuristic that omits
VFE so the unconditioned baseline is not penalised by construction.
With-bridge 0.7878, identity 0.8618, Hedges' g -0.4733, BCa 95 percent CI [-0.1214, -0.0225], paired permutation p 0.996, n = 30 across three domains.
The WM conditioning does not improve text-level quality when the LLM is sufficiently powerful. This is consistent with the theoretical frame: the WM's contribution is in the creative PROCESS (sphurattā events, vimarśa state, long-horizon planning) not in improving text-surface quality over an unconditioned 120B baseline. The LLM is already near-ceiling on the text-only scorer for English domains (0.93-1.0). The Kannada film domain shows near-parity, suggesting WM conditioning may be more valuable for lower-resource domains.
Read this as a boundary condition on the current coupling channel, not as a verdict on the world model as a substrate. The world model's contribution lives in latent process quantities (VFE, sphuratta firing, Hopfield retrieval coherence, empowerment) that the scorer explicitly removes and that the unconditioned baseline does not have. On the lower-resource Kannada domain, where the LLM is further from its training centre of mass, the gap collapses.
| Domain | With bridge | Identity | Wins |
|---|---|---|---|
| english pop | 0.883 | 0.937 | 2 / 8 |
| carnatic | 0.867 | 0.976 | 0 / 10 |
| kannada film | 0.655 | 0.672 | 4 / 6 |
Source: benchmarks/results/h5_live_ablation.json
Figures with story
Each figure here gets a paragraph of context, the figure itself, a one-line caption, and a pointer to what comes next. The aim is to make the project legible without reading the paper.
PWM is a composite system. A trainable world model (left) holds latent state, scores creative process, and consolidates during sleep. A frozen 120B LLM (right) generates surface text. The Vimarsa Bridge is the single learned channel between them.
Read this diagram first if you only want to understand the architecture in one minute. Everything else on this page elaborates one box.
NextNext: see how the runtime call sequence flows through these boxes per stanza.
Active inference is not a paperware concept here. The EFE actor's mean episode reward on the project's intrinsic creativity reward is about 30 times the REINFORCE baseline.
This is the strongest internal result and the cleanest evidence that the world model is learning something a weak policy cannot. It is measured under the project's own reward, not external human judgment; that gap is what H5c-style follow-ups should close.
NextNext: does the three-level hierarchy help over one level?
The three-level Trika hierarchy converges to substantially better final VFE than a one-level baseline. Across the seeds that completed, the advantage factor is roughly the order of magnitude reported here.
The honest caveat: two of three seeds hit GPU contention timeouts before finishing. The direction is consistent across what completed; a clean rerun is queued as forward work.
NextNext: the negative-result panel that bounds what the bridge channel does.
This is the figure people misread the most. Both sides use the same 120B language model with the same prompts. Side A adds the trained logit bias from the world model's h_t. Side B uses identity logits.
On English-script domains the baseline saturates the text-only proxy and the bias does not lift it. On the Kannada film domain the gap collapses to near-parity. The negative result is the boundary of this one coupling channel, not a verdict on the world model as a substrate.
NextNext: the latency contradiction Phase 7 resolved (and the warm vs cold confound).
Phase 7 introduced a 4B/120B cascade plus WMReasoningTrace prefill to collapse a long chain-of-thought into a few seconds. Under warm-model timing both ADRs pass.
The aggregate live run still records gate_pass = false because of a separately documented cold-start confound. The site reports both numbers separately rather than collapsing them into a single 'TTFT pass'.
NextNext: the H1 failure chain that motivated the diagnostic discipline behind every other result.
PWM had to identify failure modes that interactive RL environments do not exhibit. Static text has no causal action-to-observation transition, so the policy can learn nothing or learn the wrong thing in characteristic ways.
The IDL fix and surrogate actions in the Phase 2 gate are the engineering response. The H1 result above only makes sense once this cascade is acknowledged.
NextNext: how to reproduce all of this from the public repo.
Where this should go next
The TRIZ-style moves below are the project's own follow-up agenda. They follow from H5b's constructive reading: substrate gains and surface gains are different things and should not be averaged together.
| Principle | Move |
|---|---|
| 1. Segmentation | Report WM-substrate metrics and LLM-surface metrics separately. Stop collapsing a composite system into a single g. |
| 2. Take Out / Extract | Add a null-bias condition (random or norm-matched) so the learned-bias claim is isolated from raw LLM strength. |
| 15. Dynamicity | Make the conditioning channel selectable per phase (bridge only, bridge + Hopfield prefix, bridge + WMReasoningTrace prefill, bridge + LoRA). |
| 25. Self-Service | Fine-tune Vimarsa Bridge v2 against a richer dual proxy (substrate + surface), not only next-token CE on (h_t, next_token). |
| 40. Composite | Always present PWM as composite WM + frozen LLM. Stop framing H5b as 'WM vs LLM'. |
Reproduce
Clone the repository, activate the project Python environment, and the gate JSONs are the
single source of truth. The H5b live ablation additionally requires a local Ollama server
with nemotron-3-super:120b and nemotron-mini:4b pulled.
benchmarks/results/phase_2_gate.jsonbenchmarks/results/phase_3_gate_step0300000.jsonbenchmarks/results/phase_4_gate_step0300000.jsonbenchmarks/results/phase_5_gate_step0500000.jsonbenchmarks/results/phase_6_gate_step1000000.jsonbenchmarks/results/h5_live_ablation.jsonbenchmarks/results/ablation_a6_1level_wm.jsonbenchmarks/results/ttft_live_validation.jsonbenchmarks/results/phase7_gate.jsonbenchmarks/results/phase8_gate.json Full 120B inference requires local model weights and checkpoint paths that are not shipped in this repository. The most reproducible public layer is the source code, paper, figure scripts, and JSON result artefacts. Treat this site as a companion to the repo, not a product.