Migration identity#
- Canonical identifier:
S02.3(GitHub issue type: subtask). - Legacy identifier:
C02.3(retained asold_identifier). - Parent epic:
E02. - Milestone:
M1 — IntentGuard Weekend MVP.
Objective#
Wire the data script to the Make contract and add acceptance tests that fail on provenance, split, schema, or label drift.
Rationale#
The data boundary needs an executable, regression-resistant acceptance gate.
Parent identifier#
E02.
Source task#
T-002.
Traceability#
Primary: AC-001. Secondary: FR-001, FR-010.
Prerequisites#
C02.1 and C02.2 complete with stable outputs.
Likely files#
Makefile, scripts/prepare_data.py, tests/contract/test_data_contract.py, data/README.md.
Implementation boundary#
Command orchestration and contract tests; do not train a tokenizer or model.
MUST scope#
Idempotent command, actionable errors, output validation, and exact acceptance assertions.
Explicit non-goals#
Network retries platform, data version server, synthetic success path, or benchmarks.
Acceptance criteria#
make data exits zero only for a validated pinned dataset and the contract test catches wrong counts, labels, overlap, revision, or fingerprints.
Validation commands#
make data && uv run pytest tests/contract/test_data_contract.py -q.
Expected evidence#
Command output, provenance file, passing positive tests, and controlled negative-test failures.
Fallback and status consequence#
Cached execution is valid only with verified provenance; a dummy success makes AC-001 fail.
Stop condition#
Stop if the command can pass without validated outputs or if tests depend on uncontrolled network state.
Definition of ready#
Data output schema and paths are frozen.
Definition of done#
The command and contract suite establish AC-001 with reproducible evidence.
Labels#
type:subtask, priority:MUST, area:data
Estimate#
0.75 hour.