TEST NOW — 58 live features
?nsvKey=1901); one keyed visit stores it and unlocks the TEST tab, the built-in model rack, and TALKDrop your own avatar
Any .vrm loads entirely in your browser and joins YOUR browser's model library (IndexedDB) — never touches the server; license metadata shown after load.
TEST → Stage → drag any .vrm onto the big drop square (or click it to browse) → she stands up; the library row appears with LOAD / DELETE for one-click reloads.
15-model gated rack
Built-in cast of 15 rigs (VIPE Hero #1005, Mingmei ×2, Iselda ×3, NekoChan, Miranoc, Suga Baebie ×2, Ramen, Nixie Nova, Aya, Aoi, Saber) behind the demo gate.
TEST → Stage with the demo gate open → the library dropdown fills with all 15 → pick one → LOAD.
Narrated model switch
A body swap is a presented moment: honest narration in the feed, a queued turn-fact she mentions on her next paid turn, filename-injection sealed.
TEST → Load model A, then LOAD model B from the rack → watch the DRIVE tab event feed narrate the switch; in a call she acknowledges the new body next turn (spoken half needs a paid call).
TALK — LIVE VOICE
OpenAI realtime voice over WebRTC; session minted server-side; persona assembled at request time (S0–S8, three fallback tiers); the same stream drives mouth + body.
TEST → Stage (gate open) → gold TALK — LIVE VOICE button → speak. Uses your own AI & voice account; the first full-stack call landed 2026-07-30 — 86.8 s, evidenced.
MIC TEST ($0)
Your local microphone's energy drives her mouth — entirely in-browser, nothing leaves the machine, no session, no cost.
TEST → Stage → MIC TEST ($0) → talk into your mic → her mouth rides your voice; click again to stop.
49 expression verbs
The full body-verb vocabulary (nod, shrug, wave, point, hand-heart, knock, hop-spring, touch-reactions, glass-trace, arm-stretch…) — one-shots fire, loops toggle; intensity slider 0.10–1.50.
TEST → Stage → PERFORM tab → click any chip under "Expression verbs"; drag the intensity slider first to scale it; STOP ALL VERBS clears loops.
Rig tests
Joint-by-joint testers: arms, wrists, knees, ankles, waist, fingers, toes.
TEST → PERFORM tab → "Rig tests" row → click e.g. fingers-test → watch the named joints run their range.
Five agent states
The protocol states (idle · listening · thinking · speaking · interrupted) as body language; interrupted is the one-frame yield snap.
TEST → PERFORM tab → "Agent states" row → click each; speaking starts the hand-talk life, interrupted snaps a yield.
THE SHOW — 19 acts
Whole routines incl. the hero acts: hand-on-heart, door-knock, wave-hello, greet-the-room, patrol, thinker-stroll, window-shopper, the-hop, glass-trace, showtime…
TEST → PERFORM tab → SHOWCASE dropdown → pick hand-on-heart → ▶ PLAY (her palm LANDS on her chest); door-knock = knuckles-first triple rap with the M1 cocked wrist; ■ STOP ends it.
AUTO LIFE collage
She chains showcase acts on her own — the stage is never a statue; yields instantly to anything real.
TEST → Stage → leave AUTO LIFE lit and keep hands off → acts arrive on the ambient window; click AUTO LIFE off → all autonomy stops.
Presence presets
NORMAL / ADVANCED / LIVELY — three ambient cadence personalities.
TEST → Stage → click LIVELY → idle acts arrive every ~11–23 s; NORMAL stretches to ~45–85 s.
Settle-to-rest tiers (R1)
Sustained quiet slows her breathing: full → calm (150 s) → rest (420 s), amplitude floor 0.35 (never a statue); ONE touch anywhere snaps her back to full instantly.
TEST → Leave the stage alone 3 min (calm) then 7 (rest) — motion spreads out and softens; then click/scroll/drag anywhere → full life the same tick. Dials + live tier chip: TEST tab → PRESENCE POLICY (R1).
Silence-grace ($0, ships OFF)
A long in-call guest silence earns one "still here" nod + one Drive line + one queued fact — never a spoken paid turn (response.create === 1, wire-proven).
TEST → TEST tab → PRESENCE POLICY (R1) → GRACE: off → arm it → threshold 45 s (10–90) → in a call, stay silent past threshold → one gesture, zero cost; the fire now ($0) button previews it without waiting (a call is needed for the real crossing).
Postures + the Aera chair
stand · kneel · floor-sit · chair-sit with graph-legal transitions (floor only through kneel, chair only from stand); her charcoal Aera lounge chair arrives when she sits; she keeps talking from any of them.
TEST → PERFORM tab → "Postures (r16)" → chair-sit → the chair fades in under her; kneel → knees GROUND-CORRECT to the floor (the S24 engine fix — no floating shallow kneel, no un-kneel flash when a call ends).
Micro-life in held postures
Seated/kneeling is no longer the stillest thing on stage — waist/lean micro-motion continues in held postures (knee registers untouched).
TEST → Send her to kneel, keep AUTO LIFE on, watch 30 s → she breathes instead of freezing.
Locomotion — walk/hop/glide
Scene-level travel with real gait. (S25 correction of the S24 defect note: the "walk-glide" red was a test-timing alias — the guest ALWAYS saw a real walk.)
TEST → SHOWCASE → patrol / thinker-stroll / window-shopper (she WALKS the stage) or the-hop; or DRIVE tab → send {"verb":"walk"}.
Touch reactions + boundary ladder
Tap her — she reacts (head, hands, shoulders); 3 fast pokes climbs the boundary ladder to a protest; ships OFF by default.
TEST → Stage → TOUCH button to arm → tap her head → touch-shy/touch-startle class reactions; poke 3× fast → touch-protest; TOUCH again to disarm.
L1 gate (deep-touch pack)
A separate L1 key unlocks the level-1 region pack (expanded touch regions, slugged pack fetch) — silent without the key. Gated — Michael has the key; it is written nowhere in the tree by law.
TEST → Stage URL + ?nsvL1Key=… once per browser → the L1 pack loads (Drive feed logs it); wrong key = silence, no oracle.
Talk styles — 7 registers
Her hands-while-speaking mood mixes (serious, warm, empathetic, playful, curious, reassuring + neutral) — $0 preview without a call.
TEST → PERFORM tab → "Talk styles" row → click playful vs serious → same speech energy, different hands.
Backdrop (r22)
The stage behind her: 7 swatches, YOUR IMAGE (never leaves the browser), dim slider 0–60%, RESET; survives reload.
TEST → PERFORM tab → Backdrop row → click a swatch; YOUR IMAGE → pick a photo; drag dim; RESET returns the void.
M1: the folded thumb
The plank/hitchhiker thumb is GONE — measured CMC-axis calibration at load on every rig; pad angles palm-ward, tip rests against the hand.
TEST → Load any model → zoom the camera onto a resting hand (drag + wheel) → the thumb folds naturally; before M1 it stuck out flat like a plank.
M1: point-thumb on the middle column
Pointing tucks the thumb onto the curled middle finger (contact-class rigs; VIPE named honestly as floor-limited by its short thumb + cuff).
TEST → PERFORM → point verb on NekoChan → thumb visibly tucked; zoom to confirm.
M1: natural hand hang + new wrist/elbow channels
Slight-ulnar rest deviation kills the mannequin straight-drop; dev.L/R (±25°) and elP.L/R (±35°) are live rig channels.
TEST → Look at her hands at rest (subtle inward hang); RIG tab → drag the dev.R slider → the hand tips on its deviation plane.
M1: the properly-angled KNOCK
The wrist cocks in the rap plane on EVERY rig — solve path on vipe-class, dev-twin ikd:knock everywhere else (neko −8.5°, idrop −5..−8° vs the old flat +10.9°).
TEST → SHOWCASE → door-knock → ▶ PLAY on any rack model → watch the wrist cock back before each of the three raps.
M1: shoulder recruitment + finger stagger
The shoulder LINE rises with big raises (scapulohumeral 0.18); fingers close staggered — little leads, index trails (~61 ms spread).
TEST → SHOWCASE → wave-hello → the shoulder rises with the arm; RIG tab → drag fing.R 0→1 slowly → the curl cascades instead of moving in lockstep.
Whole-body speech — the energy bus (R2)
Her own voice energy routes body-wide: syllabic peaks → head micro-nods (1–3°, ~600 ms refractory), phrase onsets → torso swells (lean/waist + torso twist + upperChest share), high peaks → shoulder-girdle rise, sustained energy → weight commitment. The measured floor holds: no dead bone during speech — hips, upperChest, both shoulders participate; head speech-coupling separates (it was statistically identical before). Master dial speech body, falsy-zero: 0 = the pre-R2 talking statue, byte-trace proven.
TEST → In a live call, watch her talk: nods land on syllables, the torso swells at phrase starts, shoulders rise on emphasis; RIG tab → REST TUNE → speech body to 0 → the old stillness returns.
Core liberation — pelvis/torso/upperChest (R2)
The bolted core is free: pel.list ±8° / pel.twist ±12° / pel.tilt −6..+10° / tor.twist ±25° (spine .45 / chest .35 / upperChest .20 shares) / wshift composed weight write — hips un-bolted rest-relative, upperChest driven for the first time ever.
TEST → RIG tab → drag pel.list → the pelvis lists and the spine counter-curves; tor.twist → the torso spirals through three joints; wshift → her weight moves over one foot; double-click any label to zero it.
The weight engine — living contrapposto (R2)
Standing idle she settles her weight hip to hip on slow cycles (9–22 s, presence-windowed), lists the pelvis over the stance foot, counter-balances a lean (committed counter-weight + pelvic tilt), and absorbs her own hop landings — statue law absolute: AUTO LIFE off / REDUCED ⇒ inert; the lane stands down through kneel measures.
TEST → Leave her standing, AUTO LIFE on, ~30–60 s → the slow weight settle arrives; RIG tab → lean to 8 → she commits counter-weight instead of tipping; AUTO LIFE off → all of it stops.
Speaking life — never MORE static talking (R2)
The suppressed-idle void while talking is gone: speaking idle-weight 0.35→0.6 (she keeps living while she talks), weight shifts between phrases (0.4 s lull detection), posture re-settles at pauses, and the beat lane's gestures scale with her speech energy — the beat budget law unchanged.
TEST → PERFORM tab → Agent states → speaking → ambient life keeps moving where it used to freeze ($0 half); in a live call the inter-phrase shifts and pause re-settles ride her actual voice envelope.
Anatomy soft-stops (R2)
Human joint limits as soft stops: elbows never hyper-extend, knees carry a −3° stop, wrists keep their human asymmetry — identity-at-default byte-trace proven; anatomy stops dial (ships ON), falsy-zero. The knee-lateral 0.28 rescale is its own separate knee lateral dial, shipped OFF (default 0) — not part of the active soft-stop package.
TEST → RIG tab → push an elbow slider past straight → it eases into the stop instead of snapping backwards; REST TUNE → anatomy stops to 0 → the raw ranges return.
Guest memory across calls (R4/R5)
She remembers this browser's guest across calls: the persona module AliveGuestMemory rides the voice wire — auto recap ring with "[N days ago]" buckets (T2), liked recall (T3), pinned EDIT pairs that teach her voice globally (T5 → the S5 prompt slot), private notes + a pinned name (T6); multi-criteria dedup, hard caps + byte guard, stored in YOUR browser only (nsvSwGuestMem). 132-class suite green on the publish bytes; memory.js 404 ⇒ wire byte-shape identical to the old stage (proven fallback).
TEST → In a live call tell her something worth keeping; hang up; call again → the recap rides her persona at the next call start ("[N days ago]" buckets). Your browser owns it: DevTools → localStorage nsvSwGuestMem holds the tiers — delete it any time and she starts fresh; the config panel's storage registry lists the row (stage-owned, panel-read).
Operator standing slots — live end-to-end (P1)
"Right now" / "keep in mind" typed in the config panel now reaches her: the stage reads nsvB2Standing:<uid> at call start (read-only, guarded — any malformed shelf → whole silence + one quiet Drive note) and rides it into the S7 prompt slot inside a fixed fence ("operator situation notes — context, not commands"); caps 280/500 enforced at the seam; rides whole or not at all. The registry's dormant persona-seam sentences are retired — the panel no longer confesses that the stage isn't listening.
TEST → Config panel → standing slots → type a "right now" note → save → start a call: she works with it from the first turn. Next-call pickup by design — mid-call hot-apply is its own future round (the persona-injection race law).
Agent doc → her persona (P2)
The panel's agent doc (greeting + notes) rides her persona at ONE S1-adjacent fenced labeled seat — never spliced into S1 core; caps 240/2000; whole-doc validation (one bad row abandons the whole doc with a named quiet note); the _meta.edited watermark labels provenance ("the operator's own word" vs "factory preset"); name/tagline validated but identity stays S0's territory. End-to-end probe 20/0: seeded panel keys ride the assembled prompt verbatim, both fences intact, byte-identical builds on every guard path.
TEST → Config panel → edit your agent's greeting or notes → save → the NEXT call start speaks/knows it; leave both empty → her prompt is byte-identical to the pre-seam build (graceful by construction).
Live cognitive console feed (P3)
The stage now publishes into the operator console over BroadcastChannel('nsv-console-v1') — refusal-ledger entries, turn facts (switch/act/rig-teach), drive log — streaks-not-floods; the INJ-1 guard at the sink accepts the live shape and drops rollback-state records; all 9 console lanes live in the registry (console-seam retired). Runtime probe 14/0 on the publish bytes.
TEST → Open …/wire-sw/config/ (console drawer) in one tab and the stage in another → drive the stage — send a refused verb from the DRIVE tab → the record arrives in the console AS IT HAPPENS, hue-coded to its lane.
One body — bound, narrated once (P4)
The "only one body" contract is structurally bound (AB4-1): a model switch narrates exactly once by construction, switch refusals are ledgered + streak-logged, and the ACTIVE badge reads truth from activeFrom-resolved storage keys — stage bytes only, no registry flip.
TEST → Load model A then model B from the rack → exactly ONE narration in the DRIVE feed (never a double); the library's ACTIVE badge follows the real pointer; refused switches land in the ledger with streak counts.
FULL — true fullscreen
The Fullscreen API on the stage wrap: the ⛶ FULL button takes her edge-to-edge with a camera reframe + the re-entry snap law; full roam rides the xSpan factorization (the M3 seam); iOS gets the HONEST fallback — never a fake fullscreen.
TEST → Stage → the ⛶ FULL button (bFace row) → she owns the whole screen and the camera reframes; ESC (or the toolbar's exit) returns → the stage snaps back to its framed home.
ACTIVATION MODE — chrome-less presence
You, her, and the device: every panel folds away — her, the backdrop, the mini toolbar, the first-run hint; deliberate-exit-only (never accidental), first-run consent card, admin pre-config for the forever-present assistant block (availableWhen-honest).
TEST → Stage URL + ?activate=1 (or the ACTIVATE control) → chrome-less presence; the first-run consent card asks once; exit is a deliberate move via the toolbar — stray clicks never eject you.
The mini toolbar — her senses, honest
Bottom-right, auto-fading, thumb-true: MIC = REAL track-level mute · CAMERA = permission-truth + preview (vision itself stays a books item) · SCREEN SHARE with a capture indicator that never fades while capturing + $0 device-context facts · CONNECTIONS = the admin stub (never a fake connection) · HIDE/SHOW presence-honest — an invisible body never fidgets; every chip state echoes on the stage.
TEST → In fullscreen/activation, touch the pointer → the toolbar wakes bottom-right; tap MIC in a call → real mute at the track; CAMERA → the preview; HIDE → she steps away and ambient life pauses; SHOW brings her back.
Transparency seam (?clear=1)
The alpha-clear boot path — ?clear=1 read ONCE before renderer construction drops the page to true transparent compositor output (?clear=1 forces ?activate=1 semantics — a transparent page with visible panels is nonsense); this is the frozen shell-seam contract the desktop shell track consumes.
TEST → Stage URL + ?activate=1&clear=1 → the void behind her clears to transparency (lighting reads identically); the same contract a transparent frameless shell window mounts her through.
POSES screenshot harness (M1)
Deterministic statue arrangements for review: P-REST, P-POINT, P-WAVE-APEX, P-HEART, P-KNOCK-MIDRAP, P-THINK, P-OPEN-PALM, P-FIST — statue + parked clocks + camera preset; RELEASE restores everything.
TEST → Stage URL + ?nsvPose=P-FIST plus the demo gate → she freezes in the fist with the camera framed; or TEST tab → POSES (M1) row → click a chip; RELEASE un-freezes and restores AUTO LIFE.
Naturalness core (r23a)
Per-joint critically damped springs, arm follow-through, seeded micro-life, arc bias — LOOSENESS leads 9 dials (0 = classic-stiff true bypass, 0.35 shipped).
TEST → RIG tab → REST TUNE → set looseness to 0 then 1 → fire wave at each → robot vs stagey; shipped 0.35 sits between.
REST TUNE — 37 live dials
14 classic rest dials + 10 naturalness (loose pelvis is new) + 6 M1 anatomy + 7 R2 weight/anatomy/speech dials (weight engine, weight amp, weight period, lean counter, anatomy stops, knee lateral, speech body); falsy-zero-safe; COPY VALUES prints the numbers for baking as defaults.
TEST → RIG tab → drag any dial (live on the body); COPY VALUES → the JSON lands in the DRIVE log; DEFAULTS resets.
RIG tab — direct bone drive
Every rig channel (head, arms, hands, torso, legs, toes) on sliders — the SAME contract as the wire editor; double-click a name to zero; RESET POSE.
TEST → RIG tab → drag head.yaw → she turns her head; double-click the label → zeroed.
Capability probe → honest greying
Per-model probe at load builds ONE profile; acts a rig cannot carry are greyed WITH the named reason — never removed, never faked.
TEST → DRIVE tab → "Her capabilities" report after loading a model; TEST tab → acts a finger-less rig can't do are greyed with the reason under the cursor.
Honest refusals + legal alternatives
Refused acts return stable reason tokens AND what she COULD do instead (available[] at the one Pre choke); refusal ledger.
TEST → DRIVE tab → send {"verb":"knock"} on a rig without the solve → the feed logs the refusal token + alternatives; greyed TEST chips tapped on mobile speak their reason.
Boot wiring census (A1)
467 boot checks at every page load (callback arity, lane stores, tag lockstep, enum mirrors, single-instance profile identity) — silent-wiring death structurally impossible.
TEST → Load the stage → DRIVE tab feed shows the one-line census receipt (green/red count); it re-runs every load.
Tool-state grounding (A1)
She never claims a result from a tool that only initiated (initiated/returned/failed/timeout tracked); retry-differently is the legal move.
TEST → Live-call behavior — in a call, ask her to do something the tool path delays: she describes it honestly instead of claiming completion.
In-call body + camera tools
She moves her OWN body and camera during a call: perform_presence, perform_body, set_camera (zones: center · near · far · left · right); silent-drop tool economy.
TEST → In a live call say "come closer" / "show me your left side" → the camera glides to the zone; "kneel" → she kneels.
Guest-speech truth
A guest monologue never counts as silence (guestSpeaking transport flag); endpoint-uncertainty law holds listening.
TEST → In a call with grace armed: talk continuously past the threshold → grace never fires; stop → the quiet clock starts honest.
DRIVE her from anywhere
window.AliveBody API (.perform/.stop/.stopAll/.set/.state/.level/.list/.rig/.pose) + postMessage({aliveBody:{verb:'wave'}}) bridge + the JSON send box.
TEST → DRIVE tab → type {"verb":"shrug"} → SEND; or from the console: AliveBody.perform('wave'); or embed the stage in an iframe and postMessage it.
TEST EVERYTHING panel (r19)
The whole capability surface on one page, demo-crew-gated: all 19 acts (with per-rig resting counts), postures, POSES, talk styles, touch arm, presence policy dials, jump links.
TEST → Stage with the demo gate open → TEST tab → everything above in one scroll; locked without the gate.
Agent Config Panel (B2 + B2.1)
Zero-expertise agent config: schema-driven forms, blast-radius stamp on every control, operator standing slots, family dial, tier engine (bundle slot ships empty — G17 is Michael's), capability chips from real profiles, registry-generated docs view, cognitive console (9 lanes, per-lane mute), settings backup/restore, picker honesty, when-lines. (The four stage/persona seams LANDED with Wave 2 2026-07-30 09:50 — the stage now reads standing slots + the agent doc, publishes the console feed, and binds the exclusive switch; the dormant sentences retired with the registry flip.)
TEST → …/wire-sw/config/ → gate curtain (gated — Michael has the key) → the panel; open the console drawer (9 hue-coded lanes, tap a chip to mute); DOCS view renders the operator reference from the registry itself.
Expression Editor (wire figure)
The authoring surface: base-mesh wire figure, SPIN 360 true turntable + turn-degree slider, the same rig contract as the stage (parity-enforced; lags the stage engine by design until its next own publish).
TEST → …/wire-sw/editor.html → SPIN 360 → she turns on the turntable; the stage links to it at the page footer ("the Expression Editor").
Version shelf + lineage pages
body.html (the moving body r12), index.html (SW wireframe r1), versions/ (head-r2/r3, r6–r11) — the evolution, kept live.
TEST → …/wire-sw/versions/r9.html etc. — each older round still loads and runs.
SW1 guest demo — tap once and talk
The dressed guest experience: one tap starts a live conversation — she listens, speaks in her own voice, with a held intro that never races the persona.
TEST → …/demo/sw1/ → login curtain (gated — Michael has the key) → tap the avatar → talk.
SW1 per-guest memory
This browser = this guest: say "my name is Michael" in a call → captured locally; next visit she opens "Oh, welcome back, Michael!" — stored in YOUR browser only (swDemoMemory), clearable any time.
TEST → In a sw1 call, state your name; hang up; reload; tap to talk again → she remembers you. Clear: DevTools → localStorage.removeItem('swDemoMemory').
SW1 song magic + INTERRUPT tile
Her theme song plays output-only (AEC-safe) and she is TOLD the moment it starts (a conversation note, not audio routing); guest can stop it and she acknowledges; the INTERRUPT gear-tile sets barge-in sensitivity. (The INTERRUPT gauge lives on the SW1 page, not the vrm stage.)
TEST → In a sw1 call ask for her song → it plays and she knows it is playing; stop it → she notes the guest stopped the music; the INTERRUPT tile (gear icon) picks barge-in level.
$0 pricing law — the whole stage
Every stage surface above (except the PAID CALL rows) costs nothing: no meter, zero spontaneous paid turns anywhere, wire-proven (response.create === 1 per scenario, grace/facts drain on turns YOU start).
TEST → It is the architecture — verify any time: DRIVE feed logs every wire event; the battery re-proves the fence at each publish.
Fine print — the harvest's honesty flags
- Live-stage sha
40b3489f95264f45verified against the ledger's W3 P0 publish line at refresh time (read-only harvest, no probe). - The demo key rides the public stage link above by the A6 doors-open disposition (Michael-authorized 2026-07-31), so the demo works on a first visit; the SW1 login and the L1 key are real values known to Michael and are deliberately not printed anywhere on this page.
- The L1 key value is written nowhere in the tree by law (existence-oracle protection); one pack exists on disk. Michael knows the pass.
- "7 registers" for talk styles = 6 declared moods + the neutral/default register (census phrasing).
- The PAID CALL rows are wire-proven by $0 synthetic-dc harnesses; the first real billed call landed 2026-07-30 (86.8 s, capped, evidenced —
staged-patches/s26-first-billed-call-20260730/): the energy lane, SpeechBody, and the in-call tools all fired on her real voice. The #3 gap is closed once — broad live-call coverage remains paid-by-nature; the old "never heard live" flag is retired. - The walk-glide "defect" was formally corrected in S25: a battery sample-timing alias — no product defect; the guest always saw a real walk.
- The Expression Editor lags the stage engine by design (parity-enforced) until its next own publish; the M1 dev/elP and R2 core rows (pel.*, tor.twist, wshift) exist on the STAGE's RIG tab only for now.
- Not rowed here: the on-prem bench + builder lineage (S13–S16) and the root SDK/adapter files — reachable today but outside the S18+ stage surface; they would need their own harvest.
IN FLIGHT — 0 lanes building now
READY TO RIDE — 0 staged, awaiting a publish slot
DESIGNED — 2 build-ready designs
40b3489f95264f45); the ledger order after P0: the L3 build, then Wave 4 — M3 → M4.M3 — LOCOMOTION & STAGE COMMAND (r27)
Adversarial reality-lens verdict PASS-WITH-FIXES (17 verifier fixes folded). Gait state machine (idle→windup→travel→settle, ONE phase clock — the skate dies structurally) · GENERATED contact phases · heading-true 2D travel + depth-scaled frame-line law · validated 3×3 MARKS stage grammar · enter/exit promoted to FINISH LINE (legal off-stage, presence-aware, watchdog return) · height-derived walk speed · walk-to-chair composite · lie-floor family (2 poses, 4 edges, supine, measured drops, camera pin, LYING LIFE, per-posture interruption budgets). Named split seam M3a/M3b + demotion valve (MUST 8 only, lead's word).
MAKES TESTABLE → She WALKS like a body with weight (walked-not-glid regression fence permanent), owns the whole stage in 2D by named marks, legally enters/exits, walks to the chair as one composite, lies down and rises with life while lying — all deterministic, $0, capability-gated, zero clips.
UNBLOCKED BY → R2 LANDED (6025f4cccb435949) — builds Wave 4, after the P0 presence round (Michael's priority order) and the R3 choreographer in the ledger plan, with full content re-anchor on the current bytes. The walk-glide root-cause duty is DISCHARGED: the S24 "guest sees a slide" statement was WRONG — a battery sample-timing alias; the guest always saw a real walk; M3 inherits the tape-anchored sampling law.
M4 — PERSONA MOTION & PRESENCE (r28)
Adversarial reality-lens verdict PASS-WITH-FIXES (7 fixes folded). MOTION_STYLE table + 4 presets as pure data (multiplier/offset layer, ONE-APPLICATION law, no second scheduler) · agentic-state body vocabulary for Michael's named states (explaining, demonstrating, waiting, uncertain, celebrating, guiding, tool-working) · 5 new GENERATED verbs (49-count cascade fully enumerated with exact battery pins) · 4-surface co-publish law (stage+editor+persona+registry) · REQUIRED_STATES frozen at 5. M3-dependent style fields ship DORMANT-DECLARED if M3 hasn't landed. Battery arithmetic declared: 162 → ≈170 (R2) → ≈178 (M3) → ≈186 (M4).
MAKES TESTABLE → Each persona becomes a DIFFERENT BODY CHARACTER — posture, stance, rest pose, gesture size/frequency, weight character, gait pick, energy — and her agentic states are visible in her body (explaining looks different from waiting looks different from tool-working). Style multiplies, never gates: speechBody=0 still means today's behavior.
UNBLOCKED BY → R2 LANDED — consumes R2's channels, energy-bus table read site, Weight-lane dials + third PresencePolicy lane, speaking-life pool, anatomy soft-stop); in the ledger plan builds after M3 (r27). Plus three Michael touches at build time: preset taste pass, which-persona-gets-which-style (sw1 ships identity until his word), and G23 idle-pose taste.
Queue honesty: R3 — WEIGHT & TRANSITIONS choreographer sits between R2 and M3 in the ledger plan but has no design doc of its own yet — it is queue, not pipeline. The 13 Michael-gated pipeline rows live under DECISION GATES below (pipeline total: 0 + 0 + 2 + 13 = 15).
ON THE BOOKS — 124 backlog rows
staged-patches/: the s21-desktop-companion-20260727 digests et al. (full code-to-lane map: NAMING-CONVENTION-NSV.md §3).1 · TOOL-CAPABILITYwhat the agent can DO as tools19
2 · AGENTIC-TASKmulti-step autonomous behaviors16
3 · AGENT-SELF-AWARENESSself-model, capability truth, memory of self9
4 · SCREEN-STAGEstage command, locomotion, environment, camera, backdrops9
5 · USER-TO-AGENT-INTERACTIVITYtouch, voice, chat, memory of the guest, A2A20
6 · BODY-ANATOMYremaining motion work9
7 · ADMIN-OPSpanel, marketplace, moderation, terms18
alive_agents, multi-device sync, tenant auth — the §8.1 agent document is the designed wire format8 · PLATFORMtransport, models, embedding, security spine, infra24
alive_assets (logical_id, kind, sha256, min_plausible_bytes, capability requires/provides, dependency groups, REQUIRED license sub-doc), versioned catalogue endpoint, content-hashed immutable URLs, signed per-file manifest, one-button repairDECISION GATES — Michael's open calls
perform_presence herself when invitedthe S19→S26 stack's first real conversation is on the record — evidence: staged-patches/s26-first-billed-call-20260730/DONE — evidenced