Skip to content

Implement Ito MVP vertical slice#1

Draft
arteeh wants to merge 4 commits into
mainfrom
codex/implement-mvp.md-in-pr-branch
Draft

Implement Ito MVP vertical slice#1
arteeh wants to merge 4 commits into
mainfrom
codex/implement-mvp.md-in-pr-branch

Conversation

@arteeh

@arteeh arteeh commented Jun 12, 2026

Copy link
Copy Markdown
Member

Motivation

  • Deliver the smallest working vertical slice described in mvp.md: a WebXR client, a recorded (mock) robot driver, and a mock visual processor that connect via direct WebRTC.
  • The original client and drivers/mock-robot submodules could not be fetched in this environment, so a vendored, in-tree implementation is required to produce a reviewable, runnable MVP.
  • Keep the first-version protocol minimal: GET / descriptor, POST /webrtc SDP signaling, video on media tracks, and JSON messages on control/status/scene DataChannels.

Description

  • Add a vanilla WebXR client in client/ using Three.js and PLYLoader that discovers descriptors, offers raw and processed modes, creates control/status/scene DataChannels, streams pose updates at ~30 Hz, and reassembles/renders PLY scenes received from the processor.
  • Implement the recorded robot driver in drivers/mock-robot/ using FastAPI and aiortc, looping a mounted video via MediaPlayer and MediaRelay, exposing a descriptor on GET /, accepting offers on POST /webrtc, accepting control/status channels, validating control sequence/enabled, and running a 500 ms watchdog that triggers safe_stop with a stop acknowledgement over status.
  • Implement the mock mono processor in processors/mock-mono/ using FastAPI and aiortc, exposing a descriptor, accepting the client POST /webrtc, accepting driver video-source info over status, establishing a direct recv-only connection to the driver, counting frames to report ready/stale, validating and splitting the mounted PLY into safe-sized chunks, and sending a JSON header + sequential binary chunks over a reliable scene channel with support for a resend-scene request.
  • Add root orchestration and developer conveniences: compose.yaml (host networking to surface WSL host ICE candidates), client HTTPS dev hosting via checked-in startup cert, .env.example, tests/compose-smoke.sh, component requirements.txt and Dockerfiles, and a PR log at pr-logs/2026-06-12-mvp-vertical-slice.md documenting implementation decisions.

Testing

  • python -m py_compile drivers/mock-robot/app/*.py processors/mock-mono/app/*.py — succeeded.
  • (cd drivers/mock-robot && pytest -q tests/test_control.py) — 2 passed.
  • (cd processors/mock-mono && pytest -q tests/test_scene.py) — 2 passed.
  • node --test client/tests/protocol.test.js — 1 passed.
  • node --check client/src/main.js && node --check client/src/protocol.js — syntax checks succeeded.
  • Environment-limited actions that could not be executed here: git submodule update --init --recursive failed due to blocked GitHub access (HTTP 403), npm install failed due to registry access restrictions (HTTP 403), and Docker/docker compose up could not be run in this environment; these limitations and the related implementation decisions are recorded in pr-logs/2026-06-12-mvp-vertical-slice.md.

Codex Task

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant