Architecture
Testing and evidence
Tests support a specific contract at a specific commit. Counts and broad adjectives are not substitutes for compatibility, recovery, or workflow evidence.
Alpha coverage
The current suite exercises many local paths, but Dits does not claim exhaustive media-format, platform, failure, or production-workflow coverage. Network conformance tests cannot exist until the protocol is implemented.
Run the relevant suite
# Rust unit and integration tests
cargo test --locked --workspace
# CLI documentation parity
bash scripts/check-cli-docs.sh
# Public capability-claim guard
bash scripts/check-product-truth.sh
# Website types and production build
npm --workspace apps/web run test:ci
npm --workspace apps/web run buildCorrectness hierarchy
- Unit tests for pure object, chunk, parser, and command behavior.
- Golden fixtures for deterministic encodings and exact media round trips.
- Integration tests for repository histories and working-tree transitions.
- Failure injection for interruption, short writes, corruption, races, and recovery.
- Compatibility matrices across versions, platforms, filesystems, and disclosed media layouts.
- Protocol conformance for negotiation, verification, refs, authorization, and version skew.
Fixture rules
- Prefer generated or redistributable inputs with documented provenance.
- Keep the smallest fixture that reproduces the contract or failure.
- Record exact expected hashes for outputs that claim byte fidelity.
- For derived media, state the fidelity criterion and tool versions.
- Include malformed, truncated, reordered, and boundary-value inputs.
- Never generalize one MP4 fixture into “all video formats supported.”
Persistent-format changes
A change to object bytes, manifests, refs, packs, encryption envelopes, or semantic records needs a version marker, deterministic test vectors, legacy-read behavior, migration or rejection rules, and an architecture decision record. Identifier-changing changes require explicit review.
Performance tests
Benchmark correctness before speed. Publish the corpus, command, commit, hardware, operating system, cache state, repetitions, raw output, and exclusions. A hashing or chunking microbenchmark is not a repository throughput claim.
What blocks a stable release
- Crash-safe writes and demonstrated recovery from interrupted operations.
- A public real-media compatibility corpus and support matrix.
- Deterministic, versioned persistent formats with conformance fixtures.
- Bounded-memory ingest and object-count scaling evidence.
- Cross-version checkout and migration behavior.
- Truthful documentation enforced alongside command and product checks.