Skip to content

RuView Observatory live sensing and training API controls#964

Open
adammanella wants to merge 9 commits into
ruvnet:mainfrom
adammanella:ruview-observatory-training-stack
Open

RuView Observatory live sensing and training API controls#964
adammanella wants to merge 9 commits into
ruvnet:mainfrom
adammanella:ruview-observatory-training-stack

Conversation

@adammanella
Copy link
Copy Markdown

Adds live Observatory fallback validation, training/model UI controls, desktop bridge API snapshot, and Playwright screenshot smoke validation.

Includes:

  • Observatory live HTTP-derived sensing checkpoint
  • WS -> HTTP -> Canvas fallback path
  • estimate-safe vitals labels
  • Training/Model UI controls
  • desktop bridge API snapshot
  • Playwright Chromium screenshot smoke test

Validation:

  • node syntax checks passed
  • Python desktop bridge compile passed
  • live API smoke created/stopped/listed/deleted CSI recording
  • Playwright screenshot smoke passed with nonblank 1280x800 capture

Adam Manella and others added 9 commits June 5, 2026 14:05
React Native 0.85 validation needed aligned package metadata, explicit test/runtime mocks, and no-simulation expectations so TypeScript, ESLint, and Jest agree on the same mobile surface.

Constraint: Mobile dependencies remain on the SD-card-backed node_modules path to avoid /home inode exhaustion.
Rejected: Reinstall mobile node_modules on /home | this would recreate the inode failure mode.
Confidence: high
Scope-risk: moderate
Directive: Keep mobile validation tied to live-data behavior and preserve the off-/home dependency location.
Tested: ./node_modules/.bin/tsc --noEmit; npm run lint; npm test -- --runInBand
Not-tested: Native device build and Expo runtime smoke.
Co-authored-by: OmX <omx@oh-my-codex.dev>
The mobile dependency tree lives off /home on this Steam Deck, so the repo needs a local reminder explaining why missing dependencies may be a mount/symlink issue instead of an npm issue.

Constraint: /home inode pressure makes a local mobile node_modules tree brittle on this machine.
Rejected: Document reinstalling dependencies onto /home | this would point future validation back at the failure mode.
Confidence: high
Scope-risk: narrow
Directive: Keep the SD-card-backed node_modules path documented and recreate it before mobile validation if the SD card remounts differently.
Tested: sed -n '1,120p' ui/mobile/NODE_MODULES_LOCAL.md; test -L ui/mobile/node_modules; readlink ui/mobile/node_modules; df -ih /home /run/media/deck/SDCARD
Not-tested: Reboot/remount recovery.
Co-authored-by: OmX <omx@oh-my-codex.dev>
- derive sensing_update frames from /api/v1/status when WebSocket is absent
- map Cardputer status packets into signal, focus, RSSI, motion, variance, vitals, and presence
- label displayed vitals as sensor-estimated WiFi inference, not medical measurements
- add local canvas fallback for Three.js/CDN/WebGL failures
- update Observatory cache to ruview-v11 and load main.js?v=11
- validate live backend, served labels, and nonblank browser rendering

Constraint: The desktop RuView server exposes live ESP32/Cardputer truth over HTTP even when the optional WebSocket stream is absent.
Rejected: Keep plain Heart Rate and Respiration labels | those values look medical-grade without an inference warning.
Confidence: high
Scope-risk: moderate
Directive: Do not reintroduce demo/simulated visual fallbacks or unlabeled medical-looking vitals on live-only Observatory surfaces.
Tested: node --check ui/observatory/js/main.js ui/sw.js ui/app.js ui/components/SensingTab.js ui/services/sensing.service.js ui/utils/connection-status.js ui/components/LiveDemoTab.js; curl served observatory labels/cache assets; curl /api/v1/cardputer/status; Spectacle screenshot plus Pillow pixel stats before label copy update
Not-tested: Automated Playwright canvas test; final post-label screenshot was blocked by desktop focus capture issues.
Co-authored-by: OmX <omx@oh-my-codex.dev>
… labels

Keep Observatory live telemetry truthful when WebSocket is unavailable while making displayed vital signs explicit as estimates.

Constraint: v10 is pinned at observatory-live-sensing-v10 and the worktree has unrelated dirty files
Rejected: git add . | would mix firmware, service, backup, and unrelated UI changes
Confidence: high
Scope-risk: narrow
Directive: Keep Observatory live-source commits scoped unless intentionally widening the surface
Tested: git show --stat --oneline observatory-live-sensing-v10; git diff --check; node --check ui/observatory/js/main.js; node --check ui/observatory/js/hud-controller.js
Not-tested: mobile TypeScript build; ui/mobile dependencies are not installed locally

Co-authored-by: OmX <omx@oh-my-codex.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant