feat(reporting): preserve raw adjustment evidence for receipts - #1220
Conversation
There was a problem hiding this comment.
Ladon verdict: Approve
Approve
Additive feat: PR introducing the standalone adcp.reporting.adjustment_evidence primitive (487-line module) plus 79 tests and a strict adopter import fixture. No Critical/High/Medium findings from the reviewer.
What I checked against the decision table:
- No critical/high/medium findings (rows 1, 4, 5, 6, 8 do not fire).
gated_paths: false(row 2 N/A).high_risk: false, all changes additive (+1176/-0) with no deletions/modifications of sensitive files (rows 3, 5 N/A).- No no-auto-approve team match (row 7 N/A).
- Repo-specific gates confirmed clean: imports stay within public surfaces (no generated-code/layering violation),
feat:is the correct semver signal for an additive public export, and the module is fail-closed with closed diagnostic codes and no external I/O requiring timeouts.
Falls through to row 9 → approve.
There was a problem hiding this comment.
Ladon verdict: Approve
Approve.
Subsequent pass over PR #1220. The delta touches only src/adcp/reporting/adjustment_evidence.py, replacing bare pass in seven except handlers with explicit guard resets. Six are behavior-neutral normalization; the seventh (ReportingAdjustmentEvidence.__post_init__, L262) closes a real latent window where an rfc8785.dumps exception after valid = True would have accepted evidence with an empty canonical — a net improvement. Tests and type-checks are included.
No Critical/High/Medium findings. No author team gate, gated_paths is false, high_risk is false, and prior decision was already approve. With zero findings, none of decision rows 1–8 fire, so this falls through to row 9 = approve.
Blocking findings: none.
Medium findings: none.
Buyers need raw adjustment evidence to verify the digest before model normalization changes timestamps or optional fields. This PR captures bounded JSON evidence, checks it against the typed adjustment and selected official revision, and builds deterministic acceptance or rejection receipts. Receipt validation errors stay within closed domain codes without exposing parser or model exception context.
The latest change replaces seven empty exception handlers with explicit fallback values. This preserves the existing error paths and resolves the CodeQL review threads.
Validation:
make lint,make typecheck-all, and all 79 focused adjustment-evidence tests pass. The localmake testrun was interrupted after 281 passes when the shared filesystem reached capacity; the full PR CI run is in progress.