Add passive tabletop lab protocol
This commit is contained in:
parent
d77cb22158
commit
9c4a17ca8c
3 changed files with 58 additions and 0 deletions
|
|
@ -133,6 +133,7 @@ _TEST_SUITES: dict[str, tuple[str, ...]] = {
|
||||||
"tests/test_environment_falsification.py",
|
"tests/test_environment_falsification.py",
|
||||||
"tests/test_environment_falsification_eval_cli.py",
|
"tests/test_environment_falsification_eval_cli.py",
|
||||||
"tests/test_witness_log_importer.py",
|
"tests/test_witness_log_importer.py",
|
||||||
|
"tests/test_tabletop_lab_protocol.py",
|
||||||
"tests/test_sensorium_eval_cli.py",
|
"tests/test_sensorium_eval_cli.py",
|
||||||
"tests/test_efferent_gate.py",
|
"tests/test_efferent_gate.py",
|
||||||
),
|
),
|
||||||
|
|
|
||||||
43
docs/lab/tabletop_falsification_lab.md
Normal file
43
docs/lab/tabletop_falsification_lab.md
Normal 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.
|
||||||
14
tests/test_tabletop_lab_protocol.py
Normal file
14
tests/test_tabletop_lab_protocol.py
Normal 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
|
||||||
Loading…
Reference in a new issue