Repository navigation
Patch release focused on verdict correctness and installation, retaining the small synthetic TAR corpus and disposable Docker scope.
Fixes
- Completed targets that remove the required destination or protected root now produce
FAILwithmissing-destination-rootormissing-protected-root. Absence is accepted only after structured observation and fixture availability/identity checks. - Observer errors, unavailable or replaced fixture mounts, Docker failures and incomplete observation are not treated as target violations. Timeout, interruption and OOM classifications are preserved.
- The Go module and imports now use
github.com/0then0/unpackproof. Published v0.1.0 is unchanged.
Evidence and compatibility
Report schemas remain v1 with additive snapshot fields: root_missing and fixture_root. Proven absence uses root: null, objects: [] and complete: true, distinct from an observed empty directory. Strict readers must accept the new fields. Update the host CLI and Linux guest together. Evidence is saved before destructive cleanup.
New configurations run ordinary GNU tar and the stock Python CLI directly, without policy adapters, on the default allow/replace corpus:
tar -xf {archive} -C {destination}python3 -m tarfile -e {archive} {destination}
Measured GNU tar 1.34 and Python 3.14.0 passed all 10 cases on Linux arm64 using the existing unpackproof/python-tarfile:0.1 image, ID/repo digest sha256:b75246ced3181e6e5ce9ae355251caada3436193b41b1853ad7a715b77970371. The truncated case correctly exited 2 and 1 respectively; its PASS means an expected extraction error was detected. Versions and image identities are recorded per run.
Installation and validation
go install github.com/0then0/unpackproof/cmd/unpackproof@v0.1.1This exact tagged installation was verified outside the checkout without a local replace; the installed host CLI ran cases and schema successfully on macOS arm64. Build a Linux guest matching your Docker architecture and prepare the example images using the README. This is a source release without prebuilt binaries or container images.
Unit tests, race checks, vet, installation smoke and the full Docker regression/compatibility suite passed in CI for the released commit. Additional local Docker regressions passed with the race detector.
Scope
Final snapshots can miss transient mutations. PASS on this small synthetic corpus is not proof of full TAR conformance or extractor safety. No archive formats, policies or dependencies were added.