No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro lyrical showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)
No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

metriplane repository

metriplane_ros

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/Miko997/metriplane.git
VCS Type git
VCS Version main
Last Updated 2026-08-13
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
metriplane_ros 0.2.0

README

Metriplane — understand a recorded workcell incident and turn it into a repeatable test

Metriplane

Understand what went wrong in a recorded workcell run—and turn it into a repeatable test.

Give Metriplane timestamped object positions and process rules. It creates an incident timeline, a human-readable report, a verified evidence bundle, and a regression check you can run again.

In the bundled example, a required torque driver is missing and an assembly step is delayed by 35.0 seconds. The generated check lets an engineer rerun that same case after the software or process rules change. Metriplane analyzes recordings; it does not control machinery or make safety or quality decisions.

License: MIT PyPI version Conda version ROS 2 Jazzy OpenSSF Best Practices OpenSSF Scorecard Research release: v0.2.0 DOI RRID: SCR_028813 Research Software Directory Website

Quickstart

python -m pip install "metriplane==0.3.0"
metriplane demo --open

The example is camera-free, GPU-free, Docker-free, ROS-free, and offline after installation. It writes an HTML report and requests that the browser open it. Headless users can omit --open.

This is a real replay of the package’s inspectable recorded JSONL state and process rules: Metriplane runs the normal incident engine, writes a fresh report and evidence bundle, verifies that bundle, and reruns the generated regression check. Copy the exact starter inputs with metriplane demo --export-inputs example-inputs.

Metriplane bundled demo

Scenario:
A required torque driver is missing during an assembly step.
The fastening step is delayed by 35.0 seconds.

Result:
PASS  Incident timeline: 6 events
PASS  Incident report: 1 incident
PASS  Evidence bundle: verified
PASS  Repeatable regression check: passed
Browser: open request sent
If no browser opens, use the Report path above.
Demo complete.

Input and output

Input
  Timestamped object positions + process rules

Metriplane
  Replays the recorded run and checks what happened

Output
  Incident timeline
  Incident report
  Verified evidence bundle
  Repeatable regression check

Use Metriplane to:

  • explain a recorded workcell delay, such as a required tool going missing;
  • preserve an incident as a checksummed bundle that another engineer can verify;
  • rerun that incident as a regression check after software or process-rule changes.

Terms in plain language

  • Recorded run: timestamped observations saved from a workcell session.
  • Event: one detected change or process condition in that run.
  • Incident: related events grouped into one problem worth reviewing.
  • Evidence bundle: the incident files plus checks that reveal missing or changed contents.
  • Regression check: a repeatable test generated from an incident and rerun after a change.

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to Metriplane

Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project’s current boundaries.

By participating, you agree to follow the Code of Conduct. The support guide routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow SECURITY.md instead.

Supported development environment

Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests.

From a clean clone on Linux or macOS:

git clone https://github.com/Miko997/metriplane.git
cd metriplane
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest playwright build twine
python -m playwright install chromium

Use python3.13 instead when testing that interpreter. On Ubuntu, Playwright’s system packages can be installed with python -m playwright install chromium --with-deps. That command may request operating-system privileges.

Check the installation before changing code:

metriplane --version
metriplane doctor
metriplane demo

Tests

Run the complete suite from the repository root:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q

Run the narrowest relevant test while iterating. Examples:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py

Changes to the browser UI must also pass:

PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e

Packaging changes must be checked as built artifacts, not only as an editable install:

python -m build
python -m twine check --strict dist/*

CI runs the full Linux and macOS combinations and the repository’s Release Gates. A pull request is not ready to merge until every required check is green.

Branch and pull-request workflow

  1. Update main and create a short-lived branch for one problem.
  2. Make the smallest coherent change and add or update tests.
  3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change.
  4. Run focused tests and the complete suite.
  5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact.
  6. Address review findings without silently broadening the pull request.

Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes.

Add a bounded fixture

File truncated at 100 lines see the full file

# Contributing to Metriplane Thank you for helping make Metriplane easier to understand, test, and use. Keep each contribution focused on one clear problem. Before starting a large change or a new integration, open an integration-request issue so the intended scope can be checked against the project's current boundaries. By participating, you agree to follow the [Code of Conduct](CODE_OF_CONDUCT.md). The [support guide](SUPPORT.md) routes usage questions, reproducible defects, and documentation problems to the right project channel. Do not report a vulnerability or disclose sensitive recordings in a public issue; follow [SECURITY.md](SECURITY.md) instead. ## Supported development environment Use Python 3.12 or 3.13. The complete suite is tested on Ubuntu with both Python versions. The camera-free suite and installed-wheel demo are tested on macOS. WSL2 Ubuntu 24.04 has a bounded manual installed-wheel camera-free/headless validation, but it is not the complete-suite development path. One reported native-Windows demo run does not make Windows a supported development environment. A camera and GPU are optional for the bundled demo and most tests. From a clean clone on Linux or macOS: ```bash git clone https://github.com/Miko997/metriplane.git cd metriplane python3.12 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e . python -m pip install pytest playwright build twine python -m playwright install chromium ``` Use `python3.13` instead when testing that interpreter. On Ubuntu, Playwright's system packages can be installed with `python -m playwright install chromium --with-deps`. That command may request operating-system privileges. Check the installation before changing code: ```bash metriplane --version metriplane doctor metriplane demo ``` ## Tests Run the complete suite from the repository root: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q ``` Run the narrowest relevant test while iterating. Examples: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_demo.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_rule_engine.py PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/test_community_health.py ``` Changes to the browser UI must also pass: ```bash PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests/e2e ``` Packaging changes must be checked as built artifacts, not only as an editable install: ```bash python -m build python -m twine check --strict dist/* ``` CI runs the full Linux and macOS combinations and the repository's Release Gates. A pull request is not ready to merge until every required check is green. ## Branch and pull-request workflow 1. Update `main` and create a short-lived branch for one problem. 2. Make the smallest coherent change and add or update tests. 3. Update user-facing documentation when behavior, commands, artifacts, or support boundaries change. 4. Run focused tests and the complete suite. 5. Open a pull request using the repository template. Explain the user-visible result, compatibility impact, and evidence/research impact. 6. Address review findings without silently broadening the pull request. Do not include generated run directories, virtual environments, caches, credentials, private data, or unrelated formatting changes. ## Add a bounded fixture File truncated at 100 lines [see the full file](https://github.com/Miko997/metriplane/tree/main/CONTRIBUTING.md)