Artifact 9711139658621beb10c17b8ff6d401da2a88615273fed9fa27d03a65bdc71970:
- File
src/git_import.zig
— part of check-in
[60d9edab68]
at
2026-08-03 13:22:24
on branch sub-manifest
— import-git: verify packed imports exhaustively
verifyFrozen checked headers and existence -- it opened the map without reading a byte. The ordered pipeline now proves the published generation is the raw one minus exactly the candidate-only drop set: both stores reconstructed and rehashed, name sets differenced, every commit resolved and its tree flattened, tree and provenance digests recomputed, parents and attribution compared, refs and tags resolved, and the repository view derived from scratch. Each mismatch returns its own error and blocks the rename.
Eleven corruption fixtures, one per invariant, and each clause is mutation-proven: disabling it reddens its own fixture and nothing else. A clause no fixture catches is a clause that does not exist.
The ledger's strings borrow the importer, which the freeze destroys before verification runs, so the pipeline captures what it needs before the freeze rather than reading dangling memory.
Real corpus unchanged by the added checks: 7,010,160 bytes published, 0 faults, fixpoint byte-identical.
test 3484/3484, gate, e2e 716/716, git-import-e2e 11/11, git-import-cli 247/247, dst 6x1000. (user: dmestas, size: 2887) [annotate] [blame] [check-ins using]
const implementation = @import("git_import_impl.zig"); pub const TreeStore = implementation.TreeStore; pub const TreeFormat = implementation.TreeFormat; pub const RootView = implementation.RootView; pub const TreeCommand = implementation.TreeCommand; pub const BuildResult = implementation.BuildResult; pub const TreeError = implementation.TreeError; pub const LoadedBytes = implementation.LoadedBytes; pub const TreeStoreError = implementation.TreeStoreError; pub const Attribution = implementation.Attribution; pub const UserOptions = implementation.UserOptions; pub const SubmanifestChoice = implementation.SubmanifestChoice; pub const WorkCounters = implementation.WorkCounters; pub const ResolvedOptions = implementation.ResolvedOptions; pub const resolveOptions = implementation.resolveOptions; pub const analyzeSubmanifestK = implementation.analyzeSubmanifestK; pub const modeFromGit = implementation.modeFromGit; pub const CommitMarkState = implementation.CommitMarkState; pub const FinalizeOptions = implementation.FinalizeOptions; pub const FinalizedRef = implementation.FinalizedRef; pub const FinalizedRefs = implementation.FinalizedRefs; pub const RefCollision = implementation.RefCollision; pub const BranchHead = implementation.BranchHead; pub const BranchLabel = implementation.BranchLabel; pub const labelBranches = implementation.labelBranches; pub const MirrorRetainReason = implementation.MirrorRetainReason; pub const MirrorCensus = implementation.MirrorCensus; pub const mirror_candidate_names = implementation.mirror_candidate_names; pub const mirror_sterilizer = implementation.mirror_sterilizer; pub const MirrorDecisionKind = implementation.MirrorDecisionKind; pub const Digest = implementation.Digest; pub const tree_digest_domain = implementation.tree_digest_domain; pub const provenance_digest_domain = implementation.provenance_digest_domain; pub const formatDigest = implementation.formatDigest; pub const LedgerCandidate = implementation.LedgerCandidate; pub const LedgerCommit = implementation.LedgerCommit; pub const LedgerArtifact = implementation.LedgerArtifact; pub const VerificationLedger = implementation.VerificationLedger; pub const WitnessIdentity = implementation.WitnessIdentity; pub const WitnessCandidate = implementation.WitnessCandidate; pub const WitnessCommit = implementation.WitnessCommit; pub const WitnessRef = implementation.WitnessRef; pub const ImportWitness = implementation.ImportWitness; pub const TreeDigestBuilder = implementation.TreeDigestBuilder; pub const ProvenanceCandidate = implementation.ProvenanceCandidate; pub const ProvenanceInputs = implementation.ProvenanceInputs; pub const provenanceDigestOf = implementation.provenanceDigestOf; /// Production imports always use the incremental tree writer. pub const Importer = implementation.Importer(implementation.IncrementalTreePolicy, implementation.NoopObserver);