# Research tools

Start with [current status](../docs/research/STATUS.md). The supported research
entrypoint is `python -m experiments.baseline --help`: the guarded retry control,
with separate motion checks and exact replay. It is not a completed puzzle.

Reusable modules:

| Module | Responsibility |
| --- | --- |
| `numerical_geometry`, `native_geometry` | Numerical polyhedra, reference/native kernels, benchmark helpers |
| `matching`, `search_geometry` | Rigid matches, subtraction, numerical audits |
| `search_state` | State, splitting, rollback/repair primitives, saved geometry |
| `numerical_proposals`, `boundary_proposals` | Numerical cut/pose proposal machinery |
| `search_components` | Shared guarded search and historical comparison modes |
| `assembly_guidance`, `paired_guidance` | Independent numerical removal and proposal screens |
| `exact_replay`, `certification/` | Exact reconstruction and independent acceptance checks |
| `state_io`, `artifact_paths`, `rollback` | Saved-state loading, archive aliases, rollback control |

Other diagnostics and proposal libraries remain active dependencies. Shared
historical modes are retained for comparisons; only the guarded retry is the
documented baseline. The original ten campaign runners live in [archive](archive/README.md).
The browser demos are independent of these Python entrypoints.

Run the reference suite with `uv run --with scipy python -m unittest discover -s
tests -p 'test_*.py'`, or the native suite with `uv run --extra native python -m
unittest discover -s tests -p 'test_*.py'`. Archived runner tests still run: moving
a campaign out of the active path does not discard its regression coverage.
