test(pist): add receipt-density injector regression harness

This commit is contained in:
Allaun Silverfox 2026-05-26 15:16:40 -05:00
parent 0686b39428
commit 14aac49e96

View file

@ -0,0 +1,178 @@
#!/usr/bin/env python3
"""Regression tests for pist_receipt_density_injector.py.
These tests are intentionally dependency-light and can run with plain Python:
python3 4-Infrastructure/shim/test_pist_receipt_density_injector.py
They protect the Phase 2.1 anti-drift boundaries:
* Markdown table noise is not treated as equations.
* Receipt density and confidence are bounded.
* Every generated record is explicitly not promoted.
* Unsafe RDS table identifiers are rejected before SQL construction.
* RDS writes remain opt-in; default runs produce JSON only.
"""
from __future__ import annotations
import json
import tempfile
from pathlib import Path
import pist_receipt_density_injector as inj
SAMPLE_RRC = """# RRC Equation Projection
## Sample Projections
| Equation | RRC shape | Status | Top axes |
|---|---|---|---|
| `bandwidth_adjusted_threshold` | `CognitiveLoadField` | `CANDIDATE` | `projection_declared, negative_control_strength, witness_declared, scale_band_declared` |
| `source_domain` | `SignalShapedRouteCompiler` | `CANDIDATE` | `projection_declared, shape_closure, witness_declared, scale_band_declared` |
"""
SAMPLE_PIST = {
"predictions": [
{
"equation": "Equation",
"ground_truth": "RRC shape",
"proxy_pred": "LogogramProjection",
"exact_pred": "LogogramProjection",
},
{
"equation": "---",
"ground_truth": "---",
"proxy_pred": "LogogramProjection",
"exact_pred": "LogogramProjection",
},
{
"equation": "bandwidth_adjusted_threshold",
"ground_truth": "CognitiveLoadField",
"proxy_pred": "CognitiveLoadField",
"exact_pred": "CognitiveLoadField",
"matrix_hash": "mhash001",
"canonical_hash": "chash001",
"spectral_gap": 0.5,
"rank_estimate": 8,
"laplacian_zero_count": 1,
"crossing_density": 0.25,
"strand_entropy": 3.0,
},
{
"equation": "source_domain",
"ground_truth": "SignalShapedRouteCompiler",
"proxy_pred": "LogogramProjection",
"exact_pred": "LogogramProjection",
"matrix_hash": "mhash002",
"canonical_hash": "chash002",
"spectral_gap": 0.25,
"rank_estimate": 7,
"laplacian_zero_count": 1,
"crossing_density": 0.125,
"strand_entropy": 2.5,
},
]
}
def assert_true(condition: bool, message: str) -> None:
if not condition:
raise AssertionError(message)
def test_table_noise_filtering() -> None:
with tempfile.TemporaryDirectory() as td:
path = Path(td) / "rrc.md"
path.write_text(SAMPLE_RRC, encoding="utf-8")
rows = inj.parse_rrc_table(path)
assert_true(len(rows) == 2, f"expected 2 real rows, got {len(rows)}")
assert_true(all(r.equation_id not in {"Equation", "---"} for r in rows), "table noise leaked into rows")
def test_pist_noise_filtering() -> None:
with tempfile.TemporaryDirectory() as td:
path = Path(td) / "pist.json"
path.write_text(json.dumps(SAMPLE_PIST), encoding="utf-8")
preds = inj.load_pist_predictions(path)
assert_true(set(preds) == {"bandwidth_adjusted_threshold", "source_domain"}, f"unexpected predictions: {set(preds)}")
def test_record_bounds_and_no_promotion() -> None:
with tempfile.TemporaryDirectory() as td:
rrc = Path(td) / "rrc.md"
pist = Path(td) / "pist.json"
rrc.write_text(SAMPLE_RRC, encoding="utf-8")
pist.write_text(json.dumps(SAMPLE_PIST), encoding="utf-8")
rows = inj.parse_rrc_table(rrc)
preds = inj.load_pist_predictions(pist)
records = [inj.build_record(row, preds.get(row.equation_id)) for row in rows]
assert_true(len(records) == 2, "expected 2 records")
for record in records:
assert_true(0.0 <= record.receipt_density <= 1.0, f"density out of range: {record}")
assert_true(0.0 <= record.confidence <= 1.0, f"confidence out of range: {record}")
assert_true(record.promotion == "not_promoted", "promotion boundary violated")
assert_true(record.receipt_hash, "missing receipt hash")
def test_shape_disagreement_warning() -> None:
row = inj.RRCEquationRow(
equation_id="source_domain",
rrc_shape="SignalShapedRouteCompiler",
status="CANDIDATE",
top_axes=["projection_declared", "shape_closure"],
)
pred = SAMPLE_PIST["predictions"][-1]
record = inj.build_record(row, pred)
assert_true("pist_shape_disagreement" in record.warnings, "expected disagreement warning")
def test_table_identifier_validation() -> None:
assert_true(inj.split_qualified_table("ene.rrc_receipt_density") == ("ene", "rrc_receipt_density"), "valid table rejected")
bad_tables = [
"ene.bad;drop table x",
"ene.rrc receipt density",
"ene..rrc_receipt_density",
"ene.rrc_receipt_density where 1=1",
]
for table in bad_tables:
try:
inj.split_qualified_table(table)
except ValueError:
pass
else:
raise AssertionError(f"unsafe table accepted: {table}")
def test_default_main_does_not_write_rds() -> None:
with tempfile.TemporaryDirectory() as td:
rrc = Path(td) / "rrc.md"
pist = Path(td) / "pist.json"
out = Path(td) / "out.json"
rrc.write_text(SAMPLE_RRC, encoding="utf-8")
pist.write_text(json.dumps(SAMPLE_PIST), encoding="utf-8")
code = inj.main(["--rrc-file", str(rrc), "--pist-report", str(pist), "--out", str(out)])
assert_true(code == 0, f"main returned {code}")
payload = json.loads(out.read_text(encoding="utf-8"))
assert_true(payload["summary"]["rds_write"]["enabled"] is False, "RDS write should be disabled by default")
assert_true(payload["summary"]["records"] == 2, "unexpected record count")
def run_all() -> None:
tests = [
test_table_noise_filtering,
test_pist_noise_filtering,
test_record_bounds_and_no_promotion,
test_shape_disagreement_warning,
test_table_identifier_validation,
test_default_main_does_not_write_rds,
]
for test in tests:
test()
print(f"PASS {test.__name__}")
if __name__ == "__main__":
run_all()