Skip to content

S6 — Input-integrity end-to-end test suite (C-25/C-26/C-30/C-34/C-15) #57

Description

@Polichinel

Epic: #51 · cross-cutting end-to-end validation for the input-integrity guards

Problem

The guards added in S2-S5 (and S1's outcome) need an integration-level test exercising the full enrich→validate→metadata path on synthetic data, proving each failure mode is caught — beyond each story's own unit tests.

Work — one tests/test_input_integrity*.py module covering:

  • Coverage (S2/C-34): correct region count passes; under/over-coverage raises.
  • Forecast identity (S3/C-25): a decoy category="forecast" file with a different ensemble name is rejected; the correct one is selected.
  • Global completeness (S4/C-30): a land_gaul-shaped fixture asserts 64,736 + 82; an injected unassigned cell crashes loud.
  • Fabricated zeros (S1/C-26): whatever guard S1 decides — skip/xfail with a clear reason if the guard is upstream-only.
  • Provenance (S5/C-15): the upload metadata dict carries the structured fields with correct values.

Acceptance criteria

  • The module covers all of the above; green where implemented, explicit skip/xfail (with reason) where a guard is upstream/deferred.
  • ruff + full suite green.

Dependencies

Follows S2-S5 and reflects S1's decision. Each implementation story carries its own unit tests; this is the integration layer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    storyA single reviewable unit of an epictestingTest/parity/validation work

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions