Migration identity#
- Canonical identifier:
S03.2(GitHub issue type: subtask). - Legacy identifier:
C03.2(retained asold_identifier). - Parent epic:
E03. - Milestone:
M1 — IntentGuard Weekend MVP.
Objective#
Save the fitted baseline and required provenance as a versioned local artifact and verify reload prediction parity.
Rationale#
Evaluation must compare a fixed baseline rather than refit or silently change it.
Parent identifier#
E03.
Source task#
T-003.
Traceability#
Primary ownership is task-local under U03; supports FR-002, NFR-008, and AC-002.
Prerequisites#
C03.1 fitted pipeline and stable artifact schema.
Likely files#
src/intentguard/artifacts.py, src/intentguard/baseline.py, tests/unit/test_artifacts.py, artifacts/README.md.
Implementation boundary#
Baseline serialization and immutable metadata only; transformer artifact behavior stays in U04.
MUST scope#
Pipeline, label map, configuration, dataset fingerprint, dependency versions, checksums, and reload parity.
Explicit non-goals#
Remote registry, mutable latest pointer as evidence, MLflow, or model serving.
Acceptance criteria#
The artifact has a unique ID, refuses incomplete metadata, reloads without fitting, and matches reference labels/probabilities within declared tolerance.
Validation commands#
uv run pytest tests/unit/test_artifacts.py tests/unit/test_baseline.py -q.
Expected evidence#
Artifact manifest/checksums and reference prediction parity output.
Fallback and status consequence#
In-memory-only baseline is Partial and cannot support strict comparison evidence.
Stop condition#
Stop for reload divergence, mutable completed artifact, missing provenance, or unsafe serialization assumptions.
Definition of ready#
C03.1 is stable and the local artifact schema is reviewed.
Definition of done#
A completed immutable baseline artifact passes reload parity.
Labels#
type:subtask, priority:MUST, area:baseline
Estimate#
0.75 hour.