actionabi 1.1.1

Given only logged trajectories, what do this robot's action numbers mean?

ActionABI scores a finite declared grammar of candidate contracts on held-out episodes, retains a calibrated equivalence set instead of breaking ties, and emits a converter only when every required field is supported. Its defining discipline is calibrated abstention: it never certifies a unique answer the data does not support. C++20 evidence core, pybind11 Python fusion backend.

uvx --from cmake cmake -S . -B build   # C++20 · CMake 3.26+ · Python 3.11+
01

One half of a pair

ActionABI is the offline forensic half of the hidden action-interface attack. Its sibling, ActionShift, is the online adaptation half: a benchmark measuring whether a policy can recover the same contract live, from bounded probes. Both speak one contract grammar — and this project's C++ scorer runs as a live backend inside ActionShift's belief loop, with verified numerical parity.

02

Evidence

Honest abstention, real traceOn a ManiSkill bridge trace, 56 contracts stay observationally equivalent (true one retained) — ActionABI abstains, emits no converter
LeRobot hub audit35 datasets audited for action-convention contradictions: 0 found (audit dataset)
C++/Python parityHeld-out Huber residuals match to 5e-17 across the pybind11 fusion boundary
Per-channel resolutionTarget resolves to 100% while scale, lag stay ambiguous and gripper/frame stay structurally unobservable — reported field by field, never averaged away
Open artifactsDOI 10.5281/zenodo.21500715 · reports carry confidence intervals and disclosed anomalies
03

Media

04

Build & run

uvx --from cmake cmake -S . -B build -DACTIONABI_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release
uvx --from cmake cmake --build build -j 8
uvx --from cmake ctest --test-dir build --output-on-failure
./build/actionabi infer --input tests/fixtures/simple.jsonl \
  --contract tests/fixtures/absolute.json --contract tests/fixtures/delta.json \
  --output build/evidence.json   # scored contracts + evidence report
05

Limits

What this release does not claim (from Honest limits):

  • Scale is not identifiable under pd_ee_delta_pose (controller under-tracks large deltas ~0.6x).
  • Gripper is unobservable from tcp-pose response — labeled, excluded, reported unsupported.
  • No hardware validation: all dynamics evidence is simulated; no hardware-safety claim.
  • The grammar is finite (6-value scale grid, lag in {0,1,2}); synthetic gates don't imply arbitrary-contract recovery.
06

Family

SiblingActionShift — online adaptation over the same contract grammar (repo: Archerkattri/actionshift)
ConsumesLeRobot-format trajectories · ManiSkill bridge traces
MoreResearch portfolio · code
ExternalLeRobot · LeRobot docs