Workbench
Verify before you say done.
An evidence-first foundation for mobile domestic robots: bounded actions, replayable events, and a verifier that can say confirmed, refuted, or insufficient evidence.
Product name: VORA Home Robot
Repository/runtime: workbench-mobile-home-robot (Workbench)
VORA is the product brand; Workbench remains the engineering repository and evidence-first runtime name. The VORA mark uses an open angle and off-axis orbit to stay distinctive without binding the identity to one robot use case.
Why Workbench?
Robot demos often treat “command accepted” as “task complete”. Workbench keeps the proof in the loop:
goal -> bounded planner -> semantic action -> trusted executor
\-> event store -> verifier -> replay/dashboard
| Layer | Responsibility |
|---|---|
| Intent | Select from a small, typed action vocabulary |
| Execution | Dispatch through trusted runtime code |
| Verification | Check post-action evidence; never guess success |
| Replay | Rebuild the state from an append-only event stream |
Quickstart
Requirements: Python 3.12. No GPU is required for the offline runtime.
git clone https://github.com/Quchaosheng/workbench-mobile-home-robot.git cd workbench-mobile-home-robot python -m pip install -e ".[dev]" python tools/scripts/sim_cli.py doctor python tools/scripts/sim_cli.py run normal-001 --runner scripted --output-dir runs/demo
Run the full portable checks:
python -m pytest -q
python -m ruff check .The scripted runner writes a replayable artifact (manifest, scene, events,
logs, metadata, and SHA-256 checksums) labelled SCRIPTED_FIXTURE.
What is included
- Evidence-first verification with
confirmed,refuted, andinsufficient_evidence. - Strict JSON schemas and matching Pydantic contracts.
- Append-only SQLite event storage with integrity-checked replay.
- Fail-closed policy validation for bounded semantic tools.
- Read-only dashboard and deterministic simulation fixtures.
- Software-only foundations for MCU, CAN, Motion, and BSP boundaries.
Optional: OmniLink knowledge layer
OmniLink AI is an independent service for searching maintenance notes, ADRs, issues, and Workbench run summaries. It is not a planner, executor, verifier, or robot-control dependency.
git clone https://github.com/vivekmaru/omnilink-ai.git cd omnilink-ai npm install npm run dev # normally http://127.0.0.1:3000
Workbench uses the standard-library adapter in integrations/omnilink/:
from integrations.omnilink import OmniLinkClient client = OmniLinkClient("http://127.0.0.1:3000") results = client.search("gripper calibration") answer = client.ask("Which calibration notes mention the gripper?")
Only bounded run summaries are exportable. Raw JSONL, TaskGraph,
SemanticAction, action results, camera data, and safety state stay in
Workbench. Catch OmniLinkError so an unavailable knowledge service cannot
block offline operation. See the integration guide
for deployment and security requirements.
Honest status
The offline runtime and software boundaries are tested. End-to-end Gazebo worlds,
real perception, semantic motion execution, and physical hardware evidence are
not yet release claims. See docs/architecture/ and
sim/README.md for the current evidence boundary.
Documentation
- User guide
- Product evidence layer
- System architecture
- Simulation boundary
- Motion foundation
- Safety MCU
- Robot BSP
- Deployment
- Security policy
Scenario readiness
Generated from docs/evaluation/readiness-report-v1.json by tools/scripts/readiness_report.py. It states what the committed software is ready for; it grants no release approval and is not physical or Gazebo evidence. See multi-scenario readiness.
| Scenario | Evidence class | Release eligible | Execution status |
|---|---|---|---|
clear-workspace@0.2 |
software, scripted_fixture | no | SCRIPTED_FIXTURE |
inspect-workpieces@0.2 |
software, scripted_fixture | no | SCRIPTED_FIXTURE |
kit-three-parts@0.2 |
software, scripted_fixture | no | SCRIPTED_FIXTURE |
pick-place-red-block@1.0 |
software, scripted_fixture | no | SCRIPTED_FIXTURE |
sort-parcels@0.2 |
software, scripted_fixture | no | SCRIPTED_FIXTURE |
License
Apache-2.0. See LICENSE.
Phase gate status
Generated from docs/releases/phase-status-v1.json by tools/scripts/phase_gates.py. It states which multi-scenario delivery phase proves itself; it grants no release approval and is not physical or Gazebo evidence. See phase gates.
| Phase | Gate status | Completed | Evidence class | Release eligible |
|---|---|---|---|---|
| Phase 1 | COMPLETE | yes | scripted_fixture | no |
| Phase 2 | COMPLETE | yes | scripted_fixture | no |
| Phase 3 | BLOCKED | no | none | no |
| Phase 4 | COMPLETE | yes | scripted_fixture | no |
