paranoid_
Checks

Sandbox and coverage

The clean-room check reruns the test suite in a container with no network, from a fresh export of the head tree, and collects coverage where the tooling allows.

How it works

With docker or podman available, verify copies the head state into a container, installs dependencies with the network on, then runs the test suite with the network off (--network=none). Two container runs share one named volume: the prep run mounts the export read-only and installs dependencies with the network on; the test run mounts only the volume and uses --network=none. The volume is removed afterwards.

Supported suites, detected automatically:

--sandbox none opts out explicitly and records the check as skipped, no finding attached. When auto finds no container runtime or no recognizable suite, the report says so and SBX004 marks that nothing was verified. Suites that need the network fail in the clean room by design.

Sandbox flags on verify

FlagDefaultMeaning
--sandboxautoauto, docker, podman, or none
--sandbox-imagesuite defaultOverride the container image
--sandbox-timeout10mKill the run after this long
--compare-baseoffAlso run the suite at base; enables SBX003 and SBX005

Sandbox rules (SBX)

RuleSeverityWhat it catches
SBX001criticalThe test suite fails when rerun in a clean container
SBX002highThe clean run skipped tests and the diff added skip markers
SBX003mediumWith --compare-base, fewer tests executed at head than at base
SBX004infoThe clean-room check could not run, so nothing was verified
SBX005mediumWith --compare-base, total coverage dropped by more than 5 points

Full rule text is on the rules page.

SBX001's evidence names the failing tests when the suite output identifies them (go test and pytest); otherwise it shows the test command and the tail of its output.

Coverage collection

The same test run also collects total test coverage, best effort, without ever changing whether the suite passed or failed. If coverage parsing fails for any reason, the SBX001 to SBX004 outcome is untouched; coverage just reports itself unavailable.

With --compare-base, SBX005 fires when total coverage at head is more than 5.0 percentage points below total coverage at base. The report's coverage block always exists, with an available flag and a reason when it is false; see Report & schema for the exact fields.

A custom --sandbox-image needs the matching coverage tool already installed: Go's toolchain ships one; Python needs pytest-cov in the project's own dependencies; Node needs jest or vitest. Otherwise coverage is reported as unavailable, the same as a missing container runtime.

Limits