Files
elizaos--eliza/plugins/plugin-facewear/docs/smartglasses-completion-audit.md
wehub-resource-sync 426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00

12 KiB

Smartglasses Completion Audit

This audit tracks the requested Even Realities smartglasses objective against current repository evidence. It is intentionally stricter than the software test suite: the goal is not complete until real hardware evidence proves the physical microphone and tap path.

Requirements

Requirement Evidence Status
Pull the 12 requested upstream repositories into a gitignored research folder. .gitignore ignores research/even-realities/; docs/smartglasses-upstream-audit.md lists all 12 local checkouts and reviewed files. Complete
Review upstream command, display, BLE, bridge, and simulator behavior. docs/smartglasses-upstream-audit.md maps each upstream source to implemented files and tests. Complete
Implement plugins/plugin-facewear. src/index.ts, src/protocol/smartglasses.ts, src/services/smartglasses-service.ts, src/actions/*.ts, src/providers/smartglasses-status.ts, and src/transport/*.ts. Complete
Stream and format display text properly. src/protocol/smartglasses.ts implements G1 glyph-width wrapping, page/chunk encoding, Even AI and Text Show modes, and RSVP display; covered by src/__tests__/protocol-smartglasses.test.ts and example smokes. Complete
Receive microphone data. Direct G1 LC3 packets and bridge PCM/LC3/transcript events are handled in SmartglassesService and transports; covered by service, bridge, package, runtime, and parser tests. Software-complete
Side tap enables/disables microphone input. SmartglassesService maps single tap/long press to right-lens mic enable and double tap/stop recording to mic disable; covered by service and example tests. Software-complete
Connect the whole headset, not a single lens. Web Bluetooth, Noble, Bleak, bridge, and View Manager flows require left and right lens records; validators reject missing lens evidence. Web Bluetooth rejects visible side mismatches and duplicate device IDs during picker flow so a wrong or repeated lens selection cannot satisfy whole-headset pairing. Public Web Bluetooth and Noble whole-headset connect() calls clean up partial connections on failure. Native bridge status exposes both virtual lens records when the bridge is connected. Software-complete
Provide an Eliza settings view for connect/test/setup. src/register.ts registers the Settings -> Wearables section; src/ui/SmartglassesView.tsx implements connect, diagnostics, Wi-Fi bridge, and guided validation; exported diagnostics include pairing scanDiagnosis, physicalBlocker, setup hint, next action, observed serial number, packet writes, and audio chunk metadata; plugins/plugin-facewear/registry-entry.json advertises whole-headset pairing, side-tap mic control, and Wi-Fi provisioning; bun run --cwd plugins/plugin-facewear verify:app covers app registry and registration tests. Complete
Support iOS, Android, desktop setup paths where possible. View Manager setup copy and transports cover native bridge, Web Bluetooth, Noble/Bleak, and EvenHub/Mentra bridge APIs. Bridge-backed Wi-Fi now supports scan/status/configure plus Mentra-style native requestWifiSetup(reason) setup prompts for hosts that expose a setup flow instead of direct credentials. The Even Realities Android companion now scans for _L_ and _R_ lenses, connects the whole headset, uses current G1 command framing, and forwards g1_raw/mic_lc3 events to the agent. Direct G1 BLE Wi-Fi provisioning remains unverified upstream and is bridge-only. Complete with documented Wi-Fi limit
Add an example in packages/examples. packages/examples/smartglasses contains package/runtime/simulator/browser/Noble/Bleak smokes, validation helpers, and docs. Complete
Test with Eliza end to end. bun run audit:smartglasses-software passed on 2026-05-20. The root verifier runs Facewear plugin lint/typecheck/test/app-registration gates, then the full smartglasses example software gate, repairs any Bun lock churn back to @elizaos/plugin-facewear, and reruns the consolidation, Even research self-test, Even research audit, and completion self-test guards before the completion gate is evaluated. bun run --cwd packages/examples/smartglasses verify:software passed end to end: example lint, Bun tests, protocol tests, Bleak parser test, hardware doctor syntax check, dependency-aware Turbo typecheck, public package smoke, AgentRuntime smoke with setup-friendly aliases, and simulator display/tap automation. bun run --cwd packages/examples/smartglasses smoke:package covers 92 mock whole-headset writes, including start AI, clear display, exit dashboard/function, side-specific page-up/page-down, silent mode, brightness, head-up angle, wear detection, app allowlist, notification, BMP transfer, Wi-Fi setup, navigation, translation, notes, display, mic, audio, transcript, and status provider assertions. The same software gate includes hardware:test-doctor, a non-hardware syntax check for the macOS Bluetooth/headset diagnostic, and its typecheck script builds Facewear dependencies through Turbo before invoking tsc so missing workspace declaration artifacts cannot hide dependency-resolution failures. verify:app passed with the Facewear app registration tests. The focused action tests prove display/microphone actions fail cleanly without transport, the control action returns structured operation results for invalid parameters and generated commands, package smoke verifies public action failure behavior plus G1 setup/navigation packet counts, and AgentRuntime smoke verifies display/mic return values, invalid control failure payloads, setup-friendly alias canonicalization, alias Wi-Fi requests, alias app allowlist packets, alias QuickNote packets, and previous/next-page alias packet routing. The standalone consolidation guard passed after lock repair and scanned 34,567 files across packages, plugins, apps, and scripts; the stale plugin-smartglasses spot check was empty after the repair, and the completion gate now also checks critical lockfile/manifest paths plus the stable Facewear build scripts. Earlier focused passes also covered Web Bluetooth side-mismatch/duplicate-device hardening, whole-headset partial-connect cleanup, bridge lens status reporting, settings diagnostics, Wi-Fi setup prompts, voice-note list/fetch/delete/delete-all, battery status, dashboard positioning, native Android bridge routing, package/runtime/simulator smokes, hardware doctor paired-but-not-advertising diagnosis coverage, ordered tap-to-mic hardware validator requirements, settings ordered tap-to-mic report requirements, and settings display packet sequencing. Software-complete
Prove physical hardware tap and microphone path. Earlier /tmp/smartglasses-hardware-report-latest.json from 2026-05-20 06:38:56Z connected both lenses and observed serial S110LABC040019, 17 writes, 14 parsed events, init/display/settings responses, heartbeat packets, and a right-lens mic-disable response, but no physical-state packet, taps, right-lens mic-enable write, or audio. A Noble attempt from 2026-05-20 07:26:42Z wrote a fresh report but failed before scanning because the native Noble binding is unavailable for the current macOS ARM64 Node/Bun ABI, reported as physicalBlocker: "transport_unavailable". The freshest Bleak attempt from 2026-05-20 10:39:00Z found 30 BLE devices but zero Even/G1 name matches and zero Nordic UART-service candidates, so it reports physicalBlocker: "headset_not_found" with status.connected: false, no serial, no writes, no taps, and no audio. The hardware doctor confirms macOS Bluetooth is on and both lenses are paired (Even G1_51_L_138507 and Even G1_51_R_8C0CDF) but listed under "Not Connected", so the remaining blocker is physical advertising/availability rather than software wiring. Blocked on physical headset advertising/availability

Hardware Completion Gate

Completion requires a hardware report that passes:

bun run --cwd packages/examples/smartglasses hardware:validate-latest

For the final physical attempt, the latest-report proof helpers run the smoke, print the status summary even on failure, then invoke the validator:

bun run --cwd packages/examples/smartglasses hardware:prove:bleak
bun run --cwd packages/examples/smartglasses hardware:prove:noble

The report must include:

  • left and right lens connection records
  • final service status with both lenses connected
  • connection-ready/init writes
  • display writes
  • serial request and observed serial response
  • settings writes
  • wearing physical state
  • single-tap or long-press mic-enable event followed by a right-lens 0x0E 0x01 mic-enable write
  • non-empty right-lens microphone audio
  • double-tap or stop-recording mic-disable event followed by a right-lens 0x0E 0x00 mic-disable write
  • final service status audio counters

For upstream research evidence, use the standalone Node guard:

npm run audit:even-research
npm run audit:even-research:self-test

For a single completion gate that also inspects the latest physical report, use:

npm run audit:smartglasses-completion
npm run audit:smartglasses-completion:self-test

The current latest report from 2026-05-20 10:39:00Z refreshed the physical proof attempt, but it now fails the completion gate with reportStale. CoreBluetooth was scanning and discovered 30 BLE devices, but zero matched Even/G1 names and zero advertised the G1 UART service UUID. It therefore did not discover either lens, and bun run --cwd packages/examples/smartglasses hardware:status-latest summarizes it with wholeHeadsetConnected: false, wearingReady: false, and physicalBlocker: "headset_not_found". The completion gate hardware summary now also includes pairedG1Devices, pairedG1DeviceCount, pairedWholeHeadset, and bluetoothAdapter; for older latest reports that predate those fields, it augments the summary from the live macOS Bluetooth inventory. The latest-report status and validator summaries also echo those fields once the Bleak proof report contains them, and include bluetoothPreflightSource to distinguish report data from local fallback data. macOS Bluetooth system state still lists both G1 lenses as paired (Even G1_51_L_138507 and Even G1_51_R_8C0CDF), but they are under "Not Connected"; bun run --cwd packages/examples/smartglasses hardware:doctor reports this paired-but-not- advertising state directly. A Noble report from 2026-05-20 07:26:42Z failed before scanning because the Noble native binding is unavailable for the current runtime and reported physicalBlocker: "transport_unavailable". An earlier 2026-05-20 06:38:56Z Bleak run proved direct BLE connectivity and command/response coverage for both lenses (Even G1_51_L_138507 and Even G1_51_R_8C0CDF) and serial S110LABC040019, but it is stale and did not observe wearing, tap events, a right-lens mic-enable write, or right-lens audio. Remove both lenses from the charging base, keep them near this device, wear the glasses until the report shows physical: "wearing", then perform single tap, speech, and double tap. Use the watch helper for a longer discovery and worn-state window:

bun run --cwd packages/examples/smartglasses hardware:prove:bleak
bun run --cwd packages/examples/smartglasses hardware:validate-latest
bun run --cwd packages/examples/smartglasses hardware:prove:bleak:watch

or the full watch proof wrapper:

bun run --cwd packages/examples/smartglasses hardware:prove:bleak:watch
bun run --cwd packages/examples/smartglasses hardware:prove:noble:watch