# M12-04G Status status: done task: reject archive compression bombs, overlapping ranges, duplicate paths, and prefix conflicts updated: 2026-08-18 America/New_York enablingTask: false parityStateChange: false ## Scope Archive range validation now checks each compressed range against the declared source length and the global archive bound, sorts ranges by offset, and rejects overlap before any payload read. It also rejects duplicate canonical paths, file/directory prefix conflicts, zero-byte compression bombs, and expansion ratios above 100:1. Valid ranges return deterministic totals and explicit non-overlap/path invariants. ## Evidence - `npm --prefix web run test:library-archive-conflicts` passed 4/4 unit tests. - Non-overlapping ranges produce stable compressed/uncompressed totals. - Compression-ratio, overlap, duplicate, prefix, source-bound, and undeclared-field negatives all return `IO_ARCHIVE_UNSAFE` before payload scheduling. ## Artifact Hashes - parent manifest: `cda905b1e27b62d9ea3a05170f975015480ce6739c15bdf1f5a1f0b79f93ce06` - protocol: `3bec372e4f67ec309f28534cebcbaf8b492144adfa82ff6c8603f88c3ba16254` - unit: `3f2d44dce33b1c17b3a48f58b04fdd821abc88d98ce3d3b5bb724859e0f0ab3c` - package commands: `cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c` ## Next Task `M12-04H`: cancellation removes staging and never modifies the committed project. ## Rollback Remove the archive conflict protocol, unit suite, manifest, package command, and this status entry. Restore M12-04F to pending and move the machine queue back to `M12-04G`. No parity ledger rollback is required.