Problem
Replacing a model in production requires answering: who moves, by how much, and why? Today you would score a population through both artifacts and diff by hand.
Because both artifacts are deterministic and hashed, this comparison can be exact and fully reproducible — a real advantage over comparing two float scorers.
Proposed approach
compileml.compare.diff_artifacts(artifact_a, artifact_b, X) returning:
- band migration matrix (how many accounts move from each band to each other band)
- share of decisions unchanged, upgraded, downgraded
- PD delta distribution
- for the movers: which features' contributions changed most (both artifacts produce exact attributions, so this decomposes cleanly)
- both artifact hashes recorded in the report
A compileml diff a.json b.json --csv population.csv CLI subcommand.
Acceptance criteria
Files
New src/compileml/compare/, src/compileml/cli.py
Scope
Medium. Self-contained, no spec change, and immediately useful to anyone running a model replacement.
Problem
Replacing a model in production requires answering: who moves, by how much, and why? Today you would score a population through both artifacts and diff by hand.
Because both artifacts are deterministic and hashed, this comparison can be exact and fully reproducible — a real advantage over comparing two float scorers.
Proposed approach
compileml.compare.diff_artifacts(artifact_a, artifact_b, X)returning:A
compileml diff a.json b.json --csv population.csvCLI subcommand.Acceptance criteria
Files
New
src/compileml/compare/,src/compileml/cli.pyScope
Medium. Self-contained, no spec change, and immediately useful to anyone running a model replacement.