Skip to content

test(format): tar/cpio/ar/ISO producer corpora and metadata round trips [RM-304]#67

Merged
P4suta merged 2 commits into
mainfrom
feature/dev-110-rm-304-tarcpioariso-producer-specific-corpora-and-metadata
Jul 23, 2026
Merged

test(format): tar/cpio/ar/ISO producer corpora and metadata round trips [RM-304]#67
P4suta merged 2 commits into
mainfrom
feature/dev-110-rm-304-tarcpioariso-producer-specific-corpora-and-metadata

Conversation

@P4suta

@P4suta P4suta commented Jul 23, 2026

Copy link
Copy Markdown
Owner

RM-304 / DEV-110 — tar/cpio/ar/ISO producer-specific corpora and metadata round trips

Lifts the RM-301 interoperability harness from content-only evidence to metadata fidelity for the sequential and disc formats. Test/corpus slice only — no src/ runtime change (tar/cpio/ar/ISO already encode/decode their metadata; this proves it end-to-end against independent producers/consumers).

Harness extension (tests/common/mod.rs, additive)

The content-only EntryShape path is untouched. Added: read_seq_with_arca (sequential ArchiveReader — the seek reader only indexes ZIP/ISO); MetaShape (preserves the real entry kind — Symlink/Hardlink no longer fold to File — plus typed mode/uid/gid/mtime/link-target); read_meta_seq_with_arca / read_meta_seek_with_arca; assert_producers_agree_seq. Producers/consumers stay bare fn pointers, so no-dyn and forbid(unsafe) hold.

Per-format coverage (honest scope)

  • tar — 3 producers (arca, tar@0.4, first-party raw ustar builder) × 2 consumers (arca seq, tar@0.4); mode/uid/gid/mtime + symlink fidelity.
  • cpio — 3 producers (arca newc, raw newc, raw odc — genuinely distinct on-disk framings) × 2 consumers (arca, first-party raw newc parser); mode/uid/gid/mtime + typed hardlink pair. No pure-Rust cpio producer crate exists, so the 3rd producer is a second first-party builder in a different dialect (documented in PROVENANCE).
  • ar — 3 producers (arca, ar@0.9, raw !<arch> builder) × 2 consumers (arca, ar@0.9); mode/uid/gid/mtime (ar is flat regular-files-only).
  • ISO — arca self round trip + external xorriso/genisoimage/mkisofs producer (graceful skip); Rock Ridge PX/TF/SL fidelity (mode/uid/gid/mtime + symlink) via the seek reader. No pure-Rust independent ISO reader exists on all targets.

Notes

  • New test-only dev-deps (no effect on the shipped crate's portable/C-free profile): tar = "0.4", ar = "0.9".
  • Per-format tests/fixtures/*/PROVENANCE.md register each producer and the ISO external-tool escape hatch.
  • The cpio/ar/ISO tests were authored via parallel subagents against a tar reference, then reviewed and verified. just ci passed locally.

🤖 Generated with Claude Code

P4suta and others added 2 commits July 23, 2026 09:36
…ps [RM-304]

Lift the RM-301 interoperability harness from content-only evidence to metadata
fidelity for the sequential and disc formats. Test/corpus slice only — no src
runtime change; tar/cpio/ar/ISO already encode/decode their metadata.

Harness extension (tests/common/mod.rs, additive — the content-only EntryShape
path is untouched): read_seq_with_arca reads tar/cpio/ar through the non-seek
ArchiveReader (the seek reader only indexes ZIP/ISO); MetaShape preserves the REAL
entry kind (Symlink/Hardlink no longer fold to File) plus typed mode/uid/gid/mtime/
link-target; read_meta_seq_with_arca / read_meta_seek_with_arca project an archive
into path-sorted MetaShapes; assert_producers_agree_seq mirrors the seek variant.
Producers/consumers stay bare fn pointers, so no-dyn and forbid(unsafe) hold.

- tar: 3 producers (arca, tar@0.4, first-party raw ustar builder) x 2 consumers
  (arca seq, tar@0.4); mode/uid/gid/mtime + symlink fidelity.
- cpio: 3 producers (arca newc, raw newc, raw odc — distinct on-disk framings) x 2
  consumers (arca, first-party raw newc parser); mode/uid/gid/mtime + typed
  hardlink pair. No pure-Rust cpio producer crate exists, so the 3rd producer is a
  second first-party builder in a different dialect (honest note in PROVENANCE).
- ar: 3 producers (arca, ar@0.9, raw !<arch> builder) x 2 consumers (arca, ar@0.9);
  mode/uid/gid/mtime (ar is flat regular-files-only).
- ISO: arca self round trip + external xorriso/genisoimage/mkisofs producer
  (graceful skip); Rock Ridge PX/TF/SL fidelity (mode/uid/gid/mtime + symlink) via
  the seek reader. No pure-Rust independent ISO reader exists on all targets.

New test-only dev-deps (no effect on the shipped crate's portable/C-free profile):
tar = "0.4", ar = "0.9". Per-format tests/fixtures/*/PROVENANCE.md register each
producer and the ISO external-tool escape hatch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@P4suta
P4suta enabled auto-merge (squash) July 23, 2026 03:10
@P4suta
P4suta merged commit 58dcafd into main Jul 23, 2026
22 checks passed
@P4suta
P4suta deleted the feature/dev-110-rm-304-tarcpioariso-producer-specific-corpora-and-metadata branch July 23, 2026 03:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant