- This is a Rust 2024 workspace whose members are selected by
crates/*; the root README only describes two of them. crates/pithos_libowns the Pithos format:model/is the on-disk data model and marshalling,io/is the high-level reader/writer API, andhelpers/contains crypto, compression, directory, and RO-Crate integration.pithos_lib::helpers::ro_crateis the Pithos adapter over upstreamro-crate-rs; keep upstream graph and parser behavior distinct from Pithos conversion behavior.crates/pithosis a single-binary Clap wrapper. Keep CLI parsing and filesystem presentation here; format behavior belongs inpithos_lib.crates/pithos_pyo3is currently an empty Rust library stub with no PyO3 dependency or Python API. Do not infer functionality from its name or copied README.- Crates declare versions independently; none inherits
workspace.package.version. Release/version work must update the intended crate manifests, not just the root version. - There is no pinned toolchain or MSRV. CI installs stable; coverage alone installs nightly plus
llvm-tools-preview.
- Treat
spec/PITHOS_1.0.0_draft.md, model marshalling code, and integration tests as compatibility-sensitive. Changes to serialized fields, flags, encryption, compression, indexes, or directory layout can alter the on-disk format. - Prefer current structs and tests over README snippets.
InputFileusesinner_path. - File extensions are inconsistent in current prose and code (
.pto,.pith,.pithos). Do not normalize them as incidental cleanup. AGENTS.mdis listed in.gitignoreand is not tracked in the current checkout, so edits to it do not appear in normalgit statusoutput.
- CI parity is
cargo test --all-featuresfrom the workspace root. - Current-checkout caveat:
pithos_libdeclares and references featureasync, but there is nosrc/async.rsorsrc/async/mod.rs; therefore the CI command currently fails with E0583.cargo test --workspaceis the working default-feature baseline. - Run one library integration target with
cargo test -p pithos_lib --test reader,--test writer, or--test marshalling. - Run one integration case with
cargo test -p pithos_lib --test reader test_reader_file_ranges -- --nocapture. - Run focused RO-Crate reader coverage with
cargo test -p pithos_lib --test reader test_rocrate_read_directory_1_2 -- --nocapture. - Run focused RO-Crate writer coverage with
cargo test -p pithos_lib --test writer test_rocrate_directory_zip_parity -- --nocapture. - Exercise CLI parsing with
cargo run -p pithos -- --help; the CLI crate currently has no tests. - The formatter check is
cargo fmt --all --check, but it currently stops on the same missingasyncmodule. CI has no format or Clippy job, and the default build has existing unused-variable warnings, so do not describeclippy -D warningsas CI parity. - Coverage mirrors
.github/workflows/codecov.yaml: installcargo-llvm-cov, use nightly withllvm-tools-preview, then runcargo llvm-cov --lcov --output-path=./.coverage/lcov.info.
pithos_libintegration tests depend on committed fixtures and PEM keys undercrates/pithos_lib/tests/data/; reusetests/common/util.rs. They create outputs intempfiledirectories and require no external service.- Put format round-trip coverage in
tests/marshalling.rs, end-to-end extraction/range coverage intests/reader.rs, and creation/append/directory/RO-Crate coverage intests/writer.rs. - Tags matching
v*publish onlypithos_liband thenpithos;pithos_pyo3is not published by the workflow.