# Kayla · Model 001

**Version 0.4.0 · Fictional adult model · Consistent-video production pack**

## Current design

Use `assets/kayla-anchor-v004.png` as the active neutral barefoot face and body reference. This user-authorized refinement preserves the established identity. It is not a new explicit owner approval or a measured body scan.

Preserve facial proportions, almond-shaped brown eyes, brows, nose, lips, warm tan skin, natural asymmetry, hairline, chestnut hair, caramel highlights and center part. Preserve shoulder width, torso length, bust, waist-to-hip relationships, limb lengths and overall silhouette. Clothing changes must not reshape the body.

Reference outfit: opaque matte rose-pink sleeveless scoop-neck unitard fitted to the ankles; bare feet, no footwear; original wrist jewelry. Use a relaxed neutral stance, flat heels and toes on one ground plane, arms slightly away from the torso, and hair behind the shoulders when it helps show the silhouette.

**Height: provisional 170 cm fictional design target.** This is a design choice, never a measurement from an image. Normalized reference height is 1.0. Scale the entire figure uniformly and preserve visible proportional relationships. Do not fabricate exact anatomical measurements.

## Reference files

The manifest lists actual file hashes, sizes, provenance and dimensions after verification.

- Neutral body turn: `assets/kayla-body-{000,045,090,135,180,225,270,315}-v004.png`.
- Close-up face angles: `assets/kayla-face-{000,045,090,270,315}-v004.png`.
- Expressions: `assets/kayla-expression-{smile,eyesclosed,speaking}-v004.png`.
- Scene drafts: `assets/kayla-motion-floor-v004.png` for walk/turn and `assets/kayla-motion-chair-v004.png` for sit. The talk first frame uses the front face portrait.

000° is front. 090° faces image left; 270° faces image right. Left/right describe image direction rather than measured anatomical sides. Labels are nominal. Hidden geometry remains interpreted. The front body image is an exact copy of the neutral anchor.

A speaking still supports identity; it is not a complete viseme library or a lip-sync guarantee. Scene drafts are not accepted first frames until their actual image bytes receive a recorded review.

## Two different prompts

`prompts.txt` contains a **still identity prompt** and a **motion-only image-to-video prompt**. Use the first to establish the scene with the anchor. Review that still, then attach its exact bytes to the motion request. Describe one simple action and camera behavior; do not repeatedly redesign her appearance inside the motion prompt.

Pin the actual provider, model ID, model version, resolution, settings, frame count, frame rate and audio options. A fixed seed can help repeat a request but does not guarantee identity.

## Staged workflow

1. **Brief:** specify scene, wardrobe, one action, camera, lighting, aspect ratio and duration.
2. **Scene first frame:** reuse or generate one still. Review face, body, hands, feet, ground contact and scene. Record reviewer and SHA-256.
3. **Short motion test:** start with the verified selected provider at its native output resolution and its actual minimum billable duration. Initially submit once per shot. Never automatically repeat an uncertain paid submission; reconcile its receipt first.
4. **QA:** inspect turn, walk, sit and talk results. Check face, body, feet, hands, hair, flicker, movement and audio when present. A generated file is not an accepted test.
5. **Optional final:** only an accepted matching test can justify a 1080p final, and only when that delivery resolution is needed. Keep an adequate accepted native-resolution clip.
6. **Finish once:** at most one justified upscale or edit pass on an accepted output. No mass 4K rerolls. Upscaling does not repair identity or guarantee a fixed percentage saving.

Cap each motion test at two attempts, then stop for review. Keep the same shot ID across retries. Do not evade the cap by renaming a failed shot.

## Cost rules

Applied policy: [AI Media Cost Framework · v3](https://projects.jbnx.io/framework/ai-media-cost-framework). The four five-second KIE clips have a $0.84 quote (42 credits each). Native dimensions are measured per clip; actual cash remains unconfirmed without billing evidence. Setup/compute costs remain unmetered. 30- and 60-second finished video costs are not measured; quote from an approved shot list.

The four motion tests share a **$5 total external API cap with no top-ups**. A quoted rate is not a billed receipt. Record actual provider job IDs, outputs, QA and costs; never mark a blocked or pending test complete.

Verify provider/model access, current price, price unit, resolution, minimum duration, audio features, official source URL and verification time. Compare direct providers with existing aggregators using actual rate, quality and access evidence; neither route is automatically cheaper or better.

Cost per accepted deliverable includes retries, discarded jobs, audio, LLM work, finishing, storage and compute. Self-hosting still has operating costs. Unknown cost remains null rather than silently becoming zero. The ledger separates known totals, unknown components and committed external API costs.

## Planning helper

Download `production-helper.py`, `production.json` and `production-ledger.json`. The helper makes no provider calls. Copy the config's shot-request template into a local request file, fill actual inputs and verify the quote.

```sh
python production-helper.py cache-key request.json
python production-helper.py plan request.json --config production.json --ledger production-ledger.json
python production-helper.py reserve request.json --config production.json --ledger production-ledger.json
python production-helper.py summarize --ledger production-ledger.json
```

Reservation uses a file lock and is not a completed render. After a real job, record its job ID, output hash, status, QA and actual cost components. The helper rejects unverified access/rates, unreviewed first frames, underquoted basic rates, excess budget, excess attempts, untested finals and repeated finishing.

Cache keys include exact reference hashes, full shot brief, prompt, provider/model/version, resolution, settings, duration and audio options. Reuse accepted cached output; review an existing submitted or rendered result before retrying. A final must retain the tested shot signature and first-frame hash.

## Voice

Current voice (v0.5.0, 2026-10-30): ElevenLabs library voice Brittney (kPzsL2i3teMYv0FxEYQ6), model eleven_multilingual_v2, key read by name from Supabase Edge secrets (ELEVENLABS_KEY). Sample: assets/kayla-voice-brittney-v005.mp3. Lip sync for this voice is not yet validated.

Previous voice, kept as history: pinned local Kokoro bf_emma British-female stock synthesis was verified: 24 kHz mono, a 7.275-second master sample, exact model revision and voice hash. A network Kokoro API is optional; it is not a requirement or an unavailable KIE/Fal credential. Existing KIE access already produced the stored clips.

The exact stored 7.466667-second audio-driven proof passes calibrated SyncNet and independent ASR. SyncNet covered all 177 valid five-frame windows spanning 7.24 seconds, detected the face in all 187 resampled frames, and estimated a -40 ms offset with confidence 7.5897. Known audio shifts and a reversed-audio control validated the test. ASR decoded identical master and returned text; all 19 expected words match after explicit contraction normalization. This is short-clip machine verification, not human listening or a guarantee for future scenes. Full evidence, source hashes and limits are in qa.json.

## Versions and limits

Earlier assets remain unchanged and directly downloadable. v0.3.0 barefoot images remain historical pose variants, including the raised-heel stance that prompted the neutral refinement. Earlier gown and shod references are also archived; they do not render as current references.

`model.json` (also `tokens.json`) owns the design and asset manifest. `framework.md` (also `style.md`) owns these rules. `production.json` holds real setup and motion-test status; `production-ledger.json` holds actual evidence and costs. Missing receipts, provider access or tests remain explicit blockers.

References and staged review reduce face and body drift. No image, seed or workflow guarantees perfect video consistency.

## Completed short proofs

The current reference pack is complete: four stored motion references and one exact machine-verified speech proof. Voice generation is cached; do not repeat the same approved input. The speech quote remains $0.291 with a conservative $0.60 reservation. Actual cash and local compute remain unknown without billing evidence.

The active turn is an 85-frame, 3.541667-second front-to-profile reference cut ending on a full side profile with eyes open. Its real brief has no two-second hold requirement. One local same-resolution CRF18 finishing pass reuses the reviewed segment, adds no freeze frame and incurs no new API generation. The original under-rotated first attempt and the longer second attempt remain unchanged and downloadable. Neither original five-second request receives a false final-hold approval; no third turn render occurred.

All six provider jobs still total 266 observed credits, or $1.33 at published list value, with $1.65 conservatively reserved under the shared $5 cap. The local speech review and curated cut add no API spend; their compute cost remains unmetered. Unknown costs keep full cost per accepted output unknown. Future scenes and longer videos require their own quote and QA.
