# Proof Report — Cash Recovery Engine

**Strictness:** `PROOF_STANDARD = IRS_AUDITOR`
**Status:** `PROOF_INCOMPLETE`

`CERTIFIED` is not used. Under IRS_AUDITOR rules, `CERTIFIED` requires that all
disclosed seams do not contradict the customer outcome. The customer outcome is
a cash-recovery worklist for a real receivables ledger; no real ledger is present
in this workspace, so that outcome is a `DISCLOSED_SEAM`. Status is therefore
`PROOF_INCOMPLETE`. The authoritative machine record is
`proof/PROOF_DECISION.json` (assigned by the Proof Layer, not by hand).

## What is claimed, and the evidence for each

All numbers below have lineage in `proof/CLAIM_EVIDENCE.json` and
`verification-report.json`. Reproduce with `node verify.mjs` (see
`proof/REPRODUCE.md`).

| Claim | Evidence | Status |
| --- | --- | --- |
| Engine + optimizer pass all structural + benchmark checks | `verification-report.json` (13/13), `proof/evidence/verify.log` | SUPPORTED |
| Self-cure propensity AUC 0.817; calibration ECE 0.018 | `verification-report.json#/syntheticBenchmark` | SUPPORTED (synthetic input) |
| Engine recovers +127% cash vs. the strongest simple baseline; 2.94× FIFO | `verification-report.json#/syntheticBenchmark` | SUPPORTED (synthetic input) |
| Worklist is always within the collector-hours budget | `verification-report.json#/checks` (knapsack feasibility) | SUPPORTED |
| Recovery figure for a specific company | none | DISCLOSED_SEAM — NOT PRODUCED |
| Individual per-invoice uplift on real data | n/a (only one potential outcome observable) | DISCLOSED_SEAM — fundamentally unobservable |

## Downgraded statements (per IRS_AUDITOR rule)

- "Recovers $X for your company" → "On a synthetic benchmark, the worklist
  recovers +127% more cash than the strongest simple baseline at equal hours;
  a company-specific figure requires that company's ledger and a holdout test."
- "Production-validated" → "Not deployed and not validated in production; the
  engine runs and verifies locally on synthetic data only."
- "Knows which invoice will pay" → "Estimates calibrated probabilities and an
  uplift; outcomes are probabilistic, not certainties."

## Disclosed seams (`DISCLOSED_SEAM`)

1. **No real ledger** — all metrics are measured on `src/synth.mjs`, not on any
   company's receivables.
2. **Uplift identifiability** — individual treatment uplift is measurable here
   only because the synthetic world exposes both potential outcomes. On real
   data, uplift is an estimate validated by holdout/A-B test.
3. **Modelled effort & timing** — collector effort-hours and days-to-pay are
   modelled parameters, not timed field observations.
4. **Projections, not realized cash** — "cash accelerated" and
   "collection-days reduction" are model projections over the ledger.

See `proof/LIMITATIONS.md` and the verification report's "Disclosed seams"
section for the authoritative list.

## Required proof artifacts

Present under `proof/`: `EXECUTIVE_EVIDENCE.md`, `CLAIM_EVIDENCE.json`,
`EXECUTION_TRACE.json`, `ARTIFACT_MANIFEST.json`, `CHECKSUMS.json`,
`REPRODUCE.md`, `VERIFY.md`, `LIMITATIONS.md`, `AUDITOR_OBJECTIONS.md`,
`AUDITOR_CHALLENGE.md`, `EVIDENCE_GRADE.md`, `TRUST_SCORE.json`,
`PROOF_SCORECARD.json`, `PROOF_DECISION.json`, and raw runs under
`proof/evidence/`. Regenerate from the repo root with
`node tools/forge-proof.mjs --outcome delivery-package/cash-recovery-engine --verify "node verify.mjs"`.
Verify integrity with
`node tools/forge-proof-verify.mjs --outcome delivery-package/cash-recovery-engine`.

## Path to closing the disclosed seam

Provide `data/official/history.csv` + `data/official/open.csv`, run
`node verify.mjs` (real control-AUC) and the Proof Layer generator. To attribute
recovered cash, run a holdout or A/B test (work the engine's queue for one cohort
and business-as-usual for another) and compare realized cash. If checks pass on
real data with evidence preserved and the seam closed, the status may be
re-evaluated against the certification criteria.
