Add passive tabletop lab protocol

This commit is contained in:
Shay 2026-06-06 12:09:10 -07:00
parent b5f892bd95
commit c5da00107e
3 changed files with 58 additions and 0 deletions

View file

@ -133,6 +133,7 @@ _TEST_SUITES: dict[str, tuple[str, ...]] = {
"tests/test_environment_falsification.py",
"tests/test_environment_falsification_eval_cli.py",
"tests/test_witness_log_importer.py",
"tests/test_tabletop_lab_protocol.py",
"tests/test_sensorium_eval_cli.py",
"tests/test_efferent_gate.py",
),

View file

@ -0,0 +1,43 @@
# Passive Tabletop Falsification Lab Protocol
## Purpose
The tabletop lab is an offline evidence source for ADR-0211 falsification. It is
not a live robotics stack and it does not authorize CORE-controlled actuation.
## Hardware Target
- Event camera for sparse brightness-change deltas.
- RGB/depth camera for reference visual frames.
- AprilTag calibration board and object tags for pose witness evidence.
- IMU/contact/proprioception logger for afferent sensorimotor evidence.
## First Lab Mode
Only passive, human-moved objects are allowed. The lab records logs, imports
them offline, compiles afferent units, builds `ObservationFrame`s, and runs
falsification scenarios.
```text
passive environment movement
-> offline witness logs
-> deterministic import
-> afferent compilers
-> ObservationFrame sequence
-> FalsificationScenario report
```
## Acceptance Gates
- The same captured log imports to the same frame-sequence hash.
- AprilTag/GTSAM-style pose outputs remain witness evidence only.
- Event-vision and sensorimotor deltas remain compiler-native.
- No raw camera frame, event stream, PCM, trajectory, or actuator trace enters
`ObservationFrame` or falsification traces.
- No CORE motor command path is mounted.
## Deferred
Repeated capture statistics, hardware-noise envelopes, live device readers,
robot actuation, and motor decoder work require later ADRs. Exact replay remains
the first gate.

View file

@ -0,0 +1,14 @@
from __future__ import annotations
from pathlib import Path
def test_tabletop_lab_protocol_is_passive_and_trace_safe():
root = Path(__file__).resolve().parents[1]
doc = root / "docs" / "lab" / "tabletop_falsification_lab.md"
assert doc.exists()
text = doc.read_text(encoding="utf-8")
assert "Only passive, human-moved objects are allowed" in text
assert "No CORE motor command path is mounted" in text
assert "No raw camera frame, event stream, PCM, trajectory, or actuator trace enters" in text
assert "Exact replay remains" in text