# V0.1 Contract Drift Audit This audit compares the implemented MVP against: - the durable contributor guidance now tracked in `../../CONTRIBUTING.md` - `../specs/SPEC.md` - `../specs/CONTRACTS_AND_DEFAULTS.md` - `../specs/API_STABILITY.md` - `../planning/PLAN.md` - `../planning/V0_1_SCOPE.md` ## Resolved During Hardening - `../specs/SPEC.md` now matches the current stable slice by stating uniform rectilinear grids, not generic structured rectilinear grids. - `../specs/CONTRACTS_AND_DEFAULTS.md` now documents the exported base validation error `PDELieValidationError`. - `../specs/API_STABILITY.md` now lists `ResidualBatch` and `VerificationReport` explicitly in the stable API surface. - `../specs/CONTRACTS_AND_DEFAULTS.md` now defines the concrete V0.1 meaning of verification terms `stable curve` and `bounded`, matching the implemented classifier. - `../planning/V0_1_SCOPE.md` now quantifies held-out evaluation as at least 3 unseen initial conditions. - Generic `ValueError` uses in the MVP path were replaced with typed validation errors where the frozen contracts require typed validation failures. ## Current Slice Alignment The implemented V0.1 slice is internally consistent for: - `FieldBatch` - `DerivativeBatch` - `ResidualBatch` - `ResidualEvaluator` - `GeneratorFamily` - `VerificationReport` - `DerivativeBatch.backend="spectral_fd"` The current vertical slice remains: `FieldBatch -> DerivativeBatch -> ResidualBatch -> GeneratorFamily -> VerificationReport` for the synthetic 1D heat equation on a uniform periodic grid. ## Accepted Non-Issues - `../specs/SPEC.md` still mentions later-pipeline objects such as `InvariantMap`, `InvariantLibrary`, and `DiscoveryResult` as broader v0.x concepts. They are not implemented in the MVP and remain explicitly deferred in `../planning/V0_1_SCOPE.md`. - The implementation is intentionally target-specific to spatial translation on the heat equation. That is consistent with the V0.1 release gate and is not treated as contract drift. ## Audit Result No remaining contract drift was found in the implemented V0.1 MVP path that blocks a release candidate.