feat(go): fixture capture + characterization framework (M3) #12
Reference in New Issue
Block a user
Delete Branch "feat/m3-fixture-capture"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
scripts/capture_fixtures.py(function dispatcher) +scripts/scrub_fixtures.py(deterministic SHA-256 PII scrubber) +scripts/_fixture_seeds.py(seed registry with synthetic names only).//go:build parity:go/tests/parity/parityio.goshared loader + 11 test packages (10 pure + 1 reconcile), all green.make go-parity,make go-test-all,make capture-fixturesMakefile targets.go/tests/fixtures/README.md: refresh workflow and PII audit guide.Test plan
make go-build— cleanmake go-test— all M2 unit tests green, no parity tests runmake go-parity— all 11 parity packages green (98 fixtures)make go-lint— clean (both with and without-tags=parity)Closes M3.1–M3.6. Parity safety net proving Go output matches Python for every ported pure-domain function (M2.1–M2.9) and reconcile (M2.10). Capture pipeline: - scripts/capture_fixtures.py: calls each Python function with seeded inputs, emits JSON fixtures to stdout (never writes files directly). - scripts/scrub_fixtures.py: deterministic PII scrubber — SHA-256 pseudonyms for member names, digit-preserving hashes for VS/account/ bank_id, name-sweep in message text. Idempotent; no salt. - scripts/_fixture_seeds.py: handcrafted seeds for all 11 functions; synthetic names throughout (no real roster members). - scripts/capture_all_fixtures.sh: convenience wrapper for full corpus regeneration outside of make. Fixture corpus (98 files, all PII-free): - go/tests/fixtures/pure/<func>/<case>.json — 10 function directories. - go/tests/fixtures/reconcile/<NN>_<case>.json — 10 branch-coverage cases: greedy, overpayment credit, proportional remainder, even-split, out-of-window, exception override, other: purpose, junior ?, multi- person+month fan-out, unmatched. Go parity tests (//go:build parity): - go/tests/parity/parityio.go: generic LoadDir/RunAll helpers + typed In/Out struct pairs for all 10 pure functions; Envelope decoder for int/float/none disambiguation. - 10 pure-function test packages + bespoke reconcile test with per-cell float tolerance (math.Abs <= 0.01 for `paid` values). Makefile: go-parity, go-test-all, capture-fixtures targets. go/tests/fixtures/README.md: refresh workflow + PII audit guide. Gate: make go-test green, make go-parity green (11/11 packages), make go-lint clean (parity tag), make go-build clean. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>