Ava HISTORY
Ten days · one rule · measured all the way

From a looping clip
to a live that never repeats

The whole project was driven by one non-negotiable rule: her base motion must never repeat. This page is the honest build log — including the wrong turns — with the numbers that decided each step.

The build log

How it happened

AUG 07–11

Beta 1 — the looping clip problem found

A single generated video on repeat. Seamless — and dead. The moment you notice the cycle, the illusion collapses. This failure defined the whole project.

AUG 13–14

The warp engine & the emotion vector

A WebGL facial warp gives her breath, blinks and glances — procedurally unique every frame. A drifting emotion vector (valence · arousal · dominance) starts choosing how she feels and how she reacts. Pixel compaction fixes the open-mouth smear.

AUG 16

She texts back · Beta 4 goes cloud

A chat brain with mood-driven tone, contextual photos of her world, and deployment to Cloudflare Pages — she now runs with the PC off, installable on a phone.

AUG 16 · LATE

The hard rule becomes architecture no loops, ever

Decision: stop patching the loop — eliminate it. Design a streaming worker where every second of motion is generated fresh on a free cloud GPU, chained frame to frame.

AUG 17 · 03:00

Run 1 — she lives, and dreams first stream

The first never-repeating stream. She glances, tucks her hair, stands up and walks. But unanchored, the chain drifts: her hair restyles itself, furniture invents itself, the room repaints itself amber. Beautiful — and off-identity. The dream footage is archived on the front page.

AUG 17

The bench convicts the dream r = +0.87

Frame analysis across both runs: artifact energy tracks chain depth at r = +0.87 — and tracks motion at r = −0.15. The blur was never her moving; it was the unanchored chaining. Anchors reset degradation to baseline, twice, in two independent cycles.

AUG 17

Turbo — 3.5× faster on the same free GPU

A step-distilled build of the same model (4 steps, no negative pass) takes generation from 55 to 15.7 seconds per second of video. Same identity, same quality envelope, free T4.

AUG 17

Bounded dreams — the Beta 5 architecture current

Idle motion is born from her true photo every chunk — zero drift, forever. Walks and reactions chain only within their own short arc, then snap home. The dream is kept; the drift is not. She never repeats, and she never stops being herself.

Measured, not remembered

The graphs

Both charts are from the development bench — real frames, real timers, free-tier hardware.

Compute cost of one second of her life
seconds of T4 GPU work per 1 second of generated video — lower is better
60s 40s 20s 0s 55.2s 15.7s first working build Turbo (4-step distill) 3.5× faster
view as table
buildengines of compute / 1s of video
Run 1Wan 2.2 5B · 20 steps55.2
Run 3Wan 2.2 5B Turbo · 4 steps15.7
Why the anchor exists — degradation vs chain depth
artifact energy of each streamed chunk vs how many hops it is from the anchor photo · two independent anchor cycles
360 240 120 0 352 · meltdown ≈ baseline anchor 1 2 3 4 5 hops
anchor cycle 1 (segs 0–5) anchor cycle 2 (segs 6–10)
view as table
depth (hops from anchor)cycle 1cycle 2
0 (anchored)6787
1116142
2205188
3225230
4254149
5352

Correlation with chain depth: r = +0.87 · with amount of motion: r = −0.15. The degradation was the unanchored chaining — not her moving. This chart is the reason Beta 5 anchors every idle chunk.