Reproduce

Run it again.
Inspect the result.

This core workflow checks Metriplane v0.2.0 through replay, domain-pack validation, an observe-only Atlas run, bundle verification, and a repeatable regression check. It uses temporary output paths and does not overwrite the archived author-run evidence in evidence/paper_v2_0/.

python -m pip install "metriplane==0.4.1" is the normal package-install path. This page intentionally uses the exact v0.2.0 source checkout because the reproduction depends on checked-in datasets, configurations, tools, and evidence that are not embedded in the wheel.

Choose the correct path

Package use and artifact reproduction are separate.

Ordinary installation: v0.4.1

Use PyPI for the packaged Python modules and CLI entry points. This is the current delivery release and requires Python 3.12 or 3.13.

python -m pip install "metriplane==0.4.1"

Open installation details

SoftwareX evidence: v0.2.0

Use the exact source tag below when reviewing the DOI-archived evidence or running commands that reference repository assets.

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

Open archived DOI

Preflight

Confirm the shell and start clean.

uname -a
cat /etc/os-release

Stop if the environment is wrong

Continue only if the output identifies a supported Linux environment. Bash syntax does not establish WSL2 support.

Use a clean run

Start in a clean parent directory. Remove or confirm the absence of /tmp/metriplane-softwarex-runs and /tmp/metriplane-softwarex-atlas.

Stop on failure

Stop after any failed command. Do not verify files left by an earlier run.

Detached HEAD is expected

Cloning the exact release tag produces a detached HEAD; that is expected for this review workflow.

Core workflow

Run the exact v0.2.0 reproduction path.

The core path is camera-free, replay-based, and observe-only. It does not require Playwright, Chromium, Docker, ROS 2, or a camera.

  1. Prepare the exact release

    Clone the frozen tag, install its environment, then run the diagnostic.

                git clone --branch v0.2.0 --depth 1 \
      https://github.com/Miko997/metriplane.git
    cd metriplane
    
    python3 -m venv .venv
    source .venv/bin/activate
    python -m pip install --upgrade pip
    python -m pip install -e .
    
    python -m metriplane.cli doctor
              
  2. Replay and validate

    Check the recorded state and validate the assembly-cell process rules.

                RUNS=/tmp/metriplane-softwarex-runs \
      ./tools/mp.sh deterministic-replay datasets/demo/session_001.jsonl
    
    metriplane atlas validate-pack configs/domain_packs/assembly_cell
              
  3. Build the incident

    Run the missing-tool recording into the fresh temporary Atlas directory.

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

    Check the saved bundle, then run the generated incident expectation.

                metriplane atlas bundle verify \
      /tmp/metriplane-softwarex-atlas/evidence_bundles/INC-0001.zip
    
    metriplane atlas test \
      /tmp/metriplane-softwarex-atlas/regression_tests/INC-0001.yaml \
      --json
              
Show all commands together

Run in the same Bash session after the preflight check. Stop after any failed command.

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

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

python -m metriplane.cli doctor

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

metriplane atlas validate-pack configs/domain_packs/assembly_cell

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

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

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

The final command runs the repeatable regression check. Its technical command remains metriplane atlas test.

Expected core results

Compare the fresh run with these values.

These are the core reproduction results. The archived author-run 580 passed maintainer-gate result is intentionally separate.

View every expected core result
  • doctor: passes with at most non-blocking warnings
  • deterministic replay: pass=true
  • frames: 24
  • object pairs: 72
  • mean position difference: 0.0 cm
  • maximum position difference: 0.0 cm
  • event mismatches: 0
  • domain-pack validation: PASS
  • physical events: 6
  • process deviations: 1
  • incidents: 1
  • incident: INC-0001
  • bundle verification: pass=true
  • repeatable regression check: pass=true
  • generated check identifier: missing_tool_caused_delay_INC-0001

Evidence locations

Archived evidence is inspected; fresh output stays temporary.

Archived author-run evidence

evidence/paper_v2_0/ is a captured package for inspection. Do not write a fresh rerun into it.

Fresh replay output

/tmp/metriplane-softwarex-runs

Fresh Atlas output

/tmp/metriplane-softwarex-atlas

Optional

Optional full maintainer gate

This gate is not part of the core reproduction path. It requires additional browser and system dependencies.

580 passed is archived author-run release evidence. The public independent macOS run recorded 575 passed, 3 skipped, 2 failed. The independent core workflow still passed, but the public full suite must not be described as a complete pass.

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

Issue #6

What to paste after a run.

A useful reproduction comment includes the environment, each core command result, and any divergence from the expected values.

OS:
Python:
Release tag:
doctor:
deterministic replay:
domain-pack validation:
Atlas run:
bundle verification:
repeatable regression check:
Notes or errors:

Next step

Run the exact tag, then leave a trace.

Share the environment and exact outputs, whether the workflow passed or stopped at a failed command.