Skip to main content

Open-source physical observability for workcell evidence, replay, and regression testing.

Project description

Metriplane — replayable physical evidence for workcells

Metriplane

Open-source workcell black box for replayable physical evidence.

License: MIT PyPI version Research release: v0.2.0 DOI Website

Official Links

Summary

Metriplane's frozen v0.2.0 research artifact is an open-source physical-observability system for bounded workcells. It converts replayed or calibrated workcell state into physical event logs, Cell Truth Reports, portable evidence bundles, local bundle verification, and generated regression checks. The v0.2.1 packaging release makes the core Python package and command-line interfaces installable from PyPI without changing the frozen v0.2.0 paper evidence.

Install from PyPI

Metriplane requires Python 3.12 or newer.

python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install "metriplane==0.2.1"

metriplane doctor
metriplane atlas protocol export --out metriplane-protocol

The PyPI distribution contains the core Python packages and command-line entry points. Repository assets are intentionally not embedded in the wheel:

  • checked-in demo datasets and domain-pack configurations
  • the local web dashboard
  • maintainer helper scripts
  • frozen paper evidence and reproduction records

Use the exact source checkout in the reproduction section below when a command refers to datasets/, configs/, web/, tools/, or evidence/. When run from the wheel, doctor warnings about those source-checkout paths are expected and do not mean the package installation failed.

Why this exists

Robotics teams often need more than raw logs after an incident. Metriplane explores a structured evidence layer where replayed workcell state becomes an inspectable incident bundle, a verification target, and a generated regression check.

Evidence Workflow

replayed workcell state
→ physical event
→ incident
→ Cell Truth Report
→ evidence bundle
→ bundle verification
→ generated regression check

Current v0.2.0 Evidence Result

The author-run evidence package included in the archived release records:

  • 580 tests passed
  • deterministic replay pass=true
  • 6 physical events
  • 1 incident
  • 35.0 second missing-tool delay
  • bundle verify: pass=true
  • generated regression check: PASS

Quick Reproduction Path

The core SoftwareX reproduction is camera-free, uses the exact v0.2.0 tag, and writes rerun outputs to temporary directories rather than the archived evidence package.

git clone --branch v0.2.0 --depth 1 https://github.com/Miko997/metriplane.git
cd metriplane

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .

python -m metriplane.cli doctor

RUNS=/tmp/metriplane-softwarex-runs \
  ./tools/mp.sh deterministic-replay datasets/demo/session_001.jsonl

metriplane atlas validate-pack configs/domain_packs/assembly_cell
metriplane atlas run \
  --session-jsonl datasets/demo/atlas/assembly_cell_missing_tool.jsonl \
  --pack configs/domain_packs/assembly_cell \
  --out /tmp/metriplane-softwarex-atlas \
  --overwrite

metriplane atlas bundle verify \
  /tmp/metriplane-softwarex-atlas/evidence_bundles/INC-0001.zip

metriplane atlas test \
  /tmp/metriplane-softwarex-atlas/regression_tests/INC-0001.yaml \
  --json

The full maintainer gate is separate from the core artifact path and adds test and browser dependencies:

python -m pip install -e .
python -m pip install pytest playwright
python -m playwright install chromium --with-deps
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

What Metriplane Is

  • observe-only
  • local-first
  • replay-first, camera-compatible
  • bounded workcell scoped
  • research-software oriented
  • focused on evidence, not robot control

What Metriplane Does Not Claim

  • no robot or machine control
  • no safety certification
  • no quality-release approval
  • no people recognition
  • no marker-free tracking claim
  • no full 3D reconstruction claim
  • no production-factory deployment validation
  • no factory-wide deployment readiness

Relationship to ROS Bags and Logs

Robotics teams often debug incidents using recorded sensor data, ROS bags, logs, traces, and simulation replays. Those artifacts are valuable raw evidence. Metriplane is not a replacement for ROS bags or logs. It explores the next structured layer: incident context, evidence bundle, verification result, and generated regression check.

External Feedback

External technical feedback and public discussion links are collected on the official site:

https://www.metriplane.com/feedback/

Citation / DOI

If you use or evaluate Metriplane v0.2.0, cite the archived release:

https://doi.org/10.5281/zenodo.20736619

Reproducibility and Archived Release

The SoftwareX manuscript evaluates the archived Metriplane v0.2.0 release. Reproduction commands, expected outputs, and evidence provenance are documented in docs/softwarex_reproducibility.md.

Repository Orientation

The public Python package and command-line entry points remain named metriplane.

Area Path Purpose
Package metriplane/ Python package and CLI implementation
Domain packs configs/domain_packs/ Workcell-specific Atlas configuration
Demo datasets datasets/demo/ Checked-in replay inputs for reproduction
Evidence evidence/ Release evidence, manifests, and experiment artifacts
Tools tools/ Supported local helper scripts
Docs docs/ Technical documentation and runbooks
Web UI web/ Local operator and review interfaces

Canonical SoftwareX Commands

Use the Quick Reproduction Path above for the camera-free core artifact. The same commands, expected outputs, evidence provenance, and the separate maintainer-gate sequence are maintained in docs/softwarex_reproducibility.md and the review kit.

Documentation

License

MIT License. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metriplane-0.2.1.tar.gz (249.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

metriplane-0.2.1-py3-none-any.whl (266.6 kB view details)

Uploaded Python 3

File details

Details for the file metriplane-0.2.1.tar.gz.

File metadata

  • Download URL: metriplane-0.2.1.tar.gz
  • Upload date:
  • Size: 249.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for metriplane-0.2.1.tar.gz
Algorithm Hash digest
SHA256 70a7038debe2226e95dcb25ee649195b8f1e223c180d0c2ef6fbfb7286d69ed4
MD5 ba1c4f6e006896eb99ca0530b11c6b5e
BLAKE2b-256 760772e295f2d98dfeceee17ab526db6ec66bb1093569a737f39a0422a20e5bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for metriplane-0.2.1.tar.gz:

Publisher: publish-pypi.yml on Miko997/metriplane

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file metriplane-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: metriplane-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 266.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for metriplane-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f52af60360a149efbd28b1a36ec0908e245ebbf6625be56a8ab2b8aee036b13a
MD5 9562e0edfe711363bb05e767a61d0589
BLAKE2b-256 1f39d65b44ede8123dac17c69b00916ba7dcca89d4eb2af7948dd7c08a07b64a

See more details on using hashes here.

Provenance

The following attestation bundles were made for metriplane-0.2.1-py3-none-any.whl:

Publisher: publish-pypi.yml on Miko997/metriplane

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page