T2: KinematicTransformFrame (88 bytes, repr(C)+Pod) in miranda-core closes
the WO-3 breath.rs gap where head_pitch_deg/clavicle_rise were computed but
could not be routed — ARKit-52 is face-only. from_breath() maps to joint
quaternions: head 100% X-rotation, neck 40%, shoulders +/-Z 4deg max.
Quaternion: 16 bytes, Pod, normalised/degenerate handling. RingId::Kinematic
added. miranda-ipc gains a 4th ring (KINEMATIC_SLOTS=128) with push/pop.
T3: DataChannelHub broadcasts 312-byte binary packets (MRD1 magic + two LE
u16 size fields + 216B BlendshapeFrame + 88B KinematicTransformFrame) to
all connected subscribers via bounded mpsc. Full channel drops frame and
increments counter, never stalls. Closed receivers pruned on next broadcast.
encode/decode in frame.rs is allocation-free in the hot path via scratch
BytesMut. webrtc 0.8.0 declared optional behind --features webrtc-native;
wire format is identical whether transport layer is axum WS or DTLS channel.
T4: TelemetryHub broadcasts came…
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)
Implements the POSIX shared-memory IPC bus at /dev/shm/miranda_bus that every
downstream Work Order depends on: three independent lock-free SPSC ring
buffers (AudioChunk 656B/64 slots, BlendshapeFrame 216B/128 slots,
SphericalHarmonics 48B/128 slots) over one memory-mapped region, coordinated
with AtomicUsize head/tail using Acquire/Release ordering only (no mutex, no
SeqCst), with #[repr(align(64))]-equivalent cache-line separation between
head and tail to avoid false sharing.
Real deviations from design.md, all forced by correctness and documented
inline in code:
- SphericalHarmonics is 48 bytes, not the stated 44 -- #[repr(C)] alignment
(u64 field forces 8-byte struct alignment; size must be a multiple of
alignment) requires 4 bytes of padding, made explicit as a _padding
field so bytemuck::Pod's implicit-padding check has nothing to reject.
- Producer's read of `head` in the capacity check uses Acquire, not the
Relaxed the design doc specified -- Relaxed would …
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…