WO-3 T9: real-time verification harness against a real /dev/shm bus
hunt
7dd5742
miranda-nodes/src/verify.rs is the harness, tests/rt_verification.rs the
acceptance test, and src/bin/verify-60fps.rs a CLI that exits non-zero on
failure so it can gate a build.
Deliberately observational: every check runs on frames read back OUT of
shared memory by a separate consumer thread, not on the dispatcher's own
copies. A frame composed correctly but written to the wrong offset, or torn
by a racing writer, passes T8's in-memory tests and fails here.
Uses a dedicated bus path, never miranda_ipc::BUS_PATH -- a verification run
that silently interferes with a live session is worse than no run.
30s run, release (cargo run --release -p miranda-nodes --bin verify-60fps):
frames published 1801
frames dropped 0 <- criterion: 0
late frames 0
publish failures 0
frame build mean 11.952 us (0.0717% of budget)
frame build max 1102.301 us (6.6138% of budget)
frames consumed 1801
observed rate 60.03 fps
inter…
WO-3 T8: 60 FPS face dispatcher with a proved zero-alloc hot loop
hunt
0b663a7
FaceDispatcher is the pure frame builder (dt + audio -> BlendshapeFrame),
owning every buffer so tick() allocates nothing. DispatcherThread wraps it in
a deadline-paced 60 FPS loop that drains audio from the bus and publishes
frames to it.
Zero allocation is PROVED, not asserted: a counting global allocator under
cfg(test) reports 0 allocations across 600 frames of drain + tick + push +
pop. The first run reported 600 -- one per iteration -- and the cause was the
test's own speech_chunk() collecting into a Vec, so the harness was measuring
itself. Chunk now built once outside the window.
DOCUMENTED DEVIATION from design.md's thread-per-oscillator: the whole
per-frame workload measures 8.9 us against a 16667 us budget, on a dual-core
Celeron where thread wakeup latency alone is tens of microseconds. Fanning
three sub-microsecond jobs onto three threads would cost more in
synchronisation than the work it parallelises, and would destroy the
per-seed reproducibility T9 needs. The valuabl…
WO-3 T7: SIMD blend shape solver from raw audio energy features
hunt
6b82c45
Eight bandpass resonators (RBJ constant-skirt biquads, transposed direct
form II) evaluated in f32x4 across BANDS, not samples: the filters are
recursive so the sample axis cannot be vectorised, while eight bands see the
identical input sample. f32x4 rather than f32x8 because this machine reports
sse4_2 with no AVX/AVX2/FMA, where wide emulates 256-bit as two halves.
Spectral shape (loudness removed) is mapped onto mouth channels by a fixed
basis with inhibitory terms: rounding is energy at 1.2 kHz IN THE ABSENCE OF
energy at 2 kHz, and without the negative weights every vowel would both
round and smile a little and converge on one mush shape.
Documented as a heuristic, not a trained regressor. TONGUE_OUT is never
driven -- tongue position behind closed lips has no acoustic signature.
23 tests. Measured on release:
solve: 2.686 us/frame for 267 samples (8 bands, f32x4) -- budget 200 us
jawOpen: /a/ = 0.6038, /i/ = 0.1996
/u/: funnel 0.1428 pucker 0.1048 smile 0.0000
/i/: fun…
WO-3 T6: compositor + acceleration/velocity-limited motion damper
hunt
29393b6
Additive layering of speech/blink/gaze/breath, absolute [0,1] clamp, then a
per-channel damper bounded in both velocity and acceleration.
The damper needs a braking-distance velocity cap, not just a velocity cap:
with acceleration also bounded, a channel at full speed cannot stop within
the remaining distance and overshoots the target (verified: 0.611 vs 0.6).
The discrete braking form is used because deceleration happens in whole
frames of a*dt; the continuous sqrt(2*a*d) form makes the bound exactly
marginal and still leaks ~1% past the target.
81 tests pass. Acceptance evidence:
tearing case: undamped jawOpen delta 1 in one frame, 6.0x the 0.1667 cap
damped: max per-frame delta 0.1667, converged in 9 frames (150.0 ms)
Rebuild Miranda-Engine from scratch — real repo, real content
hunt
fed1528
This repo was previously a stale fork of microsoft/agent-framework with no
connection to this project. Replaced entirely, at the owner's direction,
with:
- A real 6-crate Cargo workspace skeleton (miranda-core/ipc/audio/nodes/
supervisor/transport) — cargo build verified clean.
- The prior-attempt eve-ecc client (Vite+React+TS, @xyflow/react ACE Cortex
UI) carried forward as client-apps/web, plus its ace-controller backend
and dev scripts — genuinely reusable prior work, not rebuilt from zero.
- The eve-ecc design docs (ECC5 certification, IDE/backend contract, the
orchestration pivot writeup) preserved as-is.
- A new Instant Presence Standard doc expanding the prior IPS table with
the No Loop Video Protocol (instantly-alive, waist-up, waving,
choreographed micromovement) that was missing from the original spec.
- images/ with the EVE reference image plus two real prototype stills from
the first attempt.
Full architecture/science/build-order context lives in the Kiro sk…