98 PII-free JSON fixtures captured from the live Python implementation, covering all 10 pure-domain functions (M2.1–M2.9) and 10 reconcile branch-coverage cases (M2.10).
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>
kacerr
merged commit 57518a8a68 into main2026-05-06 23:29:49 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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>