Map live dual-eye Move tracking state
This commit is contained in:
parent
c1939b72f5
commit
2196503d54
4 changed files with 71 additions and 27 deletions
|
|
@ -196,9 +196,19 @@ Y8 frame run through `muninn-move-tracker` serializes a non-empty marker
|
|||
candidate into the Mimir-compatible evidence frame. The daemon now has a
|
||||
source-local Y8 extraction/publish seam plus a first `serve` camera producer:
|
||||
`--move-marker-camera <camera-id>=<device-path>` polls a Unix V4L2 YUYV frame,
|
||||
converts it to compact Y8, and feeds that same seam. Windows unit tests prove
|
||||
the configured camera tick publishes marker evidence through the shared frame
|
||||
contract; Nightwing hardware/live V4L2 proof is still pending.
|
||||
converts it to compact Y8, and feeds that same seam. Nightwing hardware now
|
||||
runs as one Muninn provider with two private per-eye PSMoveAPI subprocesses.
|
||||
The parent alone owns lights, identity, commands, provider advertisement,
|
||||
persistence, and the aggregate evidence stream; children exchange hue state
|
||||
and camera-tagged observations over bounded MessagePack pipes.
|
||||
`muninn.move_tracker_health.v1` exposes each worker's camera backend,
|
||||
calibration, update/observation counters, RGB range, and expected-hue pixel
|
||||
evidence. Live exposure is 0.3 for `nightwing-eye-0` and 0.1 for
|
||||
`nightwing-eye-1`. Both eyes calibrate all four Moves and produce observations.
|
||||
The latest Mimir window saw all four IDs on Eye 0, two on Eye 1, and two
|
||||
same-ID cross-camera correspondences. Do not claim full stereo calibration yet:
|
||||
four-ID overlap is incomplete and the RUDP subscriber currently receives only
|
||||
two aggregate frames per 20-60 second window despite continuous worker updates.
|
||||
`MimirMoveProofSurface` is the first Fensalir-visible proof surface for this
|
||||
chain. It consumes the Mimir admission receipt and the Mimir-owned pose stream
|
||||
frame, emits `mimir.move_proof_surface.v1`, and lowers an observer-only
|
||||
|
|
|
|||
|
|
@ -34,10 +34,10 @@ Get-Content .\state\evidence.jsonl -Tail 8
|
|||
`cultnet.transport.rudp.v0`; TCP/HTTP/WebSocket are client lowerings,
|
||||
compatibility probes, or migration debt unless a specific runtime has not
|
||||
earned RUDP yet.
|
||||
- Mimir has daemon-health publication edges into the Odin/Idunn swarm:
|
||||
`src/Mimir.EveDashboard` and `src/Mimir.EveBrowserReference` publish
|
||||
`idunn.daemon_health` records over `cultnet.transport.rudp.v0` when
|
||||
configured. These are self-health witnesses, not lifecycle owners.
|
||||
- Mimir's old Eve dashboard broker is archived and no longer publishes Idunn
|
||||
health, `/eve/deck`, `/eve/dashboard`, or WebSocket commands. The browser
|
||||
reference is a client lowering, not service truth. Dashboard state must return
|
||||
as typed CultMesh/Eve documents through Odin before deployment resumes.
|
||||
- The live stream app is C# plus Fensalir: `Mimir.slnx` contains
|
||||
`src/Mimir.App` and `src/Mimir.Runtime`.
|
||||
- `src/Mimir.App` hosts Fensalir as the windowing/rendering/D3D12 bridge.
|
||||
|
|
@ -79,6 +79,14 @@ Get-Content .\state\evidence.jsonl -Tail 8
|
|||
|
||||
## Current Pressure
|
||||
|
||||
- Nightwing Move tracking is one Muninn provider with two private per-eye
|
||||
PSMoveAPI worker subprocesses. Eye 0 uses exposure 0.3; Eye 1 uses 0.1.
|
||||
Both workers calibrate four Moves and advance continuously. Mimir has proved
|
||||
all four stable IDs on Eye 0, two on Eye 1, and two cross-camera
|
||||
correspondences. Next fix the aggregate evidence RUDP cadence (only two
|
||||
frames reached a persistent subscriber in 20-60 seconds), then earn four-ID
|
||||
stereo overlap before feeding camera calibration.
|
||||
|
||||
- Implement the first concrete Leap direct capture driver and measure cadence.
|
||||
- Add remaining camera drivers through `IMimirVideoCaptureDriver`.
|
||||
- Add native audio capture workers for mic, loopback, and network audio feeds.
|
||||
|
|
@ -89,23 +97,22 @@ Get-Content .\state\evidence.jsonl -Tail 8
|
|||
output management.
|
||||
- Keep PowerShell/FFmpeg/SRT as bridge utilities until native Mimir program
|
||||
output, Eve operation, and Yggdrasil site publication replace them.
|
||||
- Yggdrasil currently runs the CultMesh media relay on UDP `3075` from
|
||||
`/opt/gamecult/mimir-cultmesh-media/Mimir.CultMeshMedia`; Starfire currently
|
||||
runs the receiver PID from
|
||||
`artifacts/mimir-cultmesh-media-win-x64-selfcontained/Mimir.CultMeshMedia.exe`
|
||||
and writes `raven-primary-av` to `udp://127.0.0.1:5200`. OBS source
|
||||
`Raven Monitor + Realtek` has been repointed from old SRT to that local UDP
|
||||
endpoint. Raven SSH timed out, so launch
|
||||
`scripts/start-raven-cultmesh-av-sender.ps1` on Raven directly.
|
||||
- Keep Eve dashboard/browser-reference RUDP health aligned with Odin/Idunn:
|
||||
Odin accepts the Verse/service map, Idunn owns daemon continuity, and Mimir
|
||||
processes publish typed health/freshness only for themselves. The next
|
||||
dashboard boundary cut is provider advertisement, retained state,
|
||||
command_boundary, and transport_profile over RUDP so HTTP/WebSocket catalog
|
||||
ingestion can be demoted to client/debug lowering.
|
||||
- Cut the remaining Eve dashboard, recorder, and witness service truth paths to
|
||||
explicit CultNet RUDP records next; no new TCP, HTTP, or WebSocket surface
|
||||
should be allowed to become daemon or transport truth.
|
||||
- Yggdrasil currently runs the CultMesh media relay from
|
||||
`/opt/gamecult/mimir-cultmesh-media/Mimir.CultMeshMedia`; senders and
|
||||
receivers target `cultmesh://asgard.yggdrasil.mimir/media/raven-primary-av`
|
||||
and let the CultMesh resolver choose the concrete RUDP route. Starfire writes
|
||||
`raven-primary-av` to `udp://127.0.0.1:5200`. That is the
|
||||
`Mimir.CultMeshMedia` body bridge, not the OBS plugin feed owner.
|
||||
- The actual Raven OBS/SRT feed owner is Odin's Muninn on Raven. Use
|
||||
`scripts/start-raven-muninn-obs-feed.ps1` in this repo as the thin wrapper
|
||||
over `E:\Projects\Odin\scripts\activate-muninn-raven-av-srt.ps1`, which
|
||||
drives Raven's real `GameCult-Muninn-Activate` hidden task and
|
||||
`muninn.exe activate` path. `scripts/start-raven-cultmesh-av-sender.ps1`
|
||||
remains the separate CultMesh bridge/bootstrap lane.
|
||||
- Rebuild Eve dashboard only as a CultMesh/Odin surface publisher plus renderer
|
||||
lowering. Provider advertisement, retained state, command boundary, transport
|
||||
profile, and command documents must be typed CultMesh records; no TCP, HTTP,
|
||||
or WebSocket surface should become daemon or transport truth.
|
||||
- Kiyo Pro has two UVC extension units. Moving it to a motherboard USB3 port
|
||||
changed the descriptor path to `root_hub30` / `bcdUSB=0x0320` and exposed
|
||||
720p/1080p YUY2/MJPG/H264/NV12 at 60 fps, but Windows still reports
|
||||
|
|
|
|||
|
|
@ -181,3 +181,4 @@
|
|||
{"ts": "2026-07-13T00:29:23+01:00", "type": "scar", "status": "partial", "note": "Unified Nightwing Muninn proves one provider can own both /dev/video2 and /dev/video3 and publish all four controller IDs. Stable 30s visibility window saw 2 controller frames and 0 labelled markers. Hue state is animated/descending/1000ms and light HID paths are dynamically resolved; the next missing evidence is typed per-camera PSMoveAPI readiness/calibrated-controller/update health. Do not infer tracker health from camera fd ownership, payload size, or visible lights."}
|
||||
{"ts": "2026-07-13T00:47:59+01:00", "type": "verification", "status": "ok", "note": "Typed muninn.move_tracker_health.v1 field evidence isolated the dual-eye failure. Both Nightwing PS3 Eyes identify as V4L2/PS3 Eye 640x480 at exposure 0.1 and can calibrate all 4 Moves, but same-process PSMoveAPI trackers freeze around initialization/update: one process snapshot reached running with update_count=1 for each eye and zero observations; after restart both remained opening with zero updates. Keep one Muninn provider, but run each native PSMoveAPI tracker in an internal subprocess and aggregate camera-tagged observations in the parent."}
|
||||
{"ts": "2026-07-13T01:15:00+01:00", "type": "verification", "status": "partial", "note": "Nightwing now runs one Muninn provider with private per-eye tracker subprocesses and parent-owned MessagePack hue/observation pipes. Current live proof: both eye workers advance thousands of updates; eye1 calibrated 4 Moves and produced 11,908+ observations, and Mimir received all four stable Move IDs from nightwing-eye-1 in one 15s window. Eye0 calibrated all 4 and advances updates but has zero optical observations, so dual-camera correspondence remains unproven and the remaining fault is eye0 optical scene/backend behavior. Idunn restart now explicitly kills worker children with the parent generation."}
|
||||
{"ts": "2026-07-13T01:29:15+01:00", "type": "verification", "status": "partial", "note": "Per-camera optical evidence and exposure ownership restored Eye 0. At exposure 0.3 Eye 0 peak RGB rose from [72,25,43] to [178,119,112], calibrated 4 Moves, and produced 3,312 observations/latest 4; Eye 1 remains at exposure 0.1. Mimir's persistent window then saw all 4 IDs on Eye 0, 2 on Eye 1, and 2 same-ID cross-camera correspondences. Do not claim full stereo: Eye 1 overlap is incomplete and only 2 aggregate RUDP frames arrived in 20s and 60s windows."}
|
||||
|
|
|
|||
|
|
@ -194,6 +194,22 @@ accepted_design:
|
|||
both the `mimir.move_proof_evidence_frame_snapshot.v1` tuple and embedded
|
||||
Muninn payload. This supports Nightwing field capture/replay through Mimir's
|
||||
snapshot provider while the final live ring/page transport remains pending.
|
||||
- Nightwing field capture/replay has proven the one-copy snapshot mechanics,
|
||||
but the first `FullPose` replay was physically false-positive evidence.
|
||||
Muninn `d4f229a` bundles latest controller state with aggregated marker
|
||||
candidates from both Nightwing PS3 Eyes into one evidence frame, with the
|
||||
snapshot payload encoded as MessagePack bytes. The preserved artifact
|
||||
`artifacts/runtime/nightwing-move-proof-20260712-1041-aggregate.mpack`
|
||||
replays through `Mimir.BufferSmoke --move-proof-runtime-snapshot-file-smoke`
|
||||
as `muninn:nightwing:move-evidence:1 -> mimir:starfire:move-evidence:1 ->
|
||||
mimir:starfire:move-pose:1 -> fensalir:starfire:presented-frame:1`, but
|
||||
the operator confirmed the Move markers were dark during that capture. Treat
|
||||
its 99 marker candidates as bright image blobs/noise and use the artifact
|
||||
only as evidence that Muninn/Mimir/Fensalir replay plumbing works and needs
|
||||
marker-lit validation. A valid field pose proof still requires lighting the
|
||||
PS Move orb, capturing real optical marker candidates from calibrated camera
|
||||
witnesses, and preserving the explicit same-sequence proof spine. The final
|
||||
live cross-process CultMesh ring/page proof remains pending.
|
||||
- `MimirMoveProofDevSurface` is a dev-only bootstrap gated by
|
||||
`MIMIR_MOVE_PROOF_DEV_SURFACE`. It publishes a synthetic calibrated proof
|
||||
surface through the same MimirRuntime attachment so headless Mimir.App can
|
||||
|
|
@ -232,9 +248,19 @@ accepted_design:
|
|||
evidence. The daemon now has a source-local Y8 extraction/publish seam and
|
||||
a first `serve` camera producer: `--move-marker-camera <camera-id>=<device-path>`
|
||||
polls a Unix V4L2 YUYV frame, converts it to compact Y8, and feeds that
|
||||
same seam. Unit tests prove the configured camera tick publishes marker
|
||||
evidence through the shared frame contract; Nightwing hardware/live V4L2
|
||||
proof is still pending.
|
||||
same seam. Nightwing now runs one public Muninn provider whose two private
|
||||
per-eye PSMoveAPI subprocesses exchange hue state, observations, and health
|
||||
with the parent through bounded MessagePack pipes. Children own no store,
|
||||
provider advertisement, command route, or light output. Typed
|
||||
`muninn.move_tracker_health.v1` records expose camera backend, calibration,
|
||||
update/observation counts, RGB range, and expected-hue pixel evidence.
|
||||
Live field proof on 2026-07-13 established Eye 0 at exposure 0.3 and Eye 1
|
||||
at 0.1; both calibrated four Moves and produced observations. A Mimir
|
||||
visibility window saw all four IDs on Eye 0, two IDs on Eye 1, and two
|
||||
cross-camera correspondences. Full four-ID stereo coverage and stream
|
||||
cadence remain pending: the remote subscriber received only two aggregate
|
||||
frames during both 20-second and 60-second windows despite continuously
|
||||
advancing tracker workers.
|
||||
- `MimirMuninnMoveEvidenceAdapter.TryAdmitLatestCultMeshFrame` now exposes a
|
||||
typed admission receipt with decoded frame id, producer, publish/read
|
||||
timestamps, sample counts by kind, source/arrival ranges, native reservoir
|
||||
|
|
|
|||
Loading…
Reference in a new issue