Invoice agents fail when the workflow state is wrong, even if the document looks clean
Replay the event path before an AP agent clears payment
PO, goods receipt, invoice, hold, release, approval, payment
Duplicate invoices, wrong vendor, missing receipt, missing approval, active block
Seed a defect, run the oracle, compare expected violation codes
- 2-wayinvoice to payment without goods receipt requirement
- 3-wayPO, receipt, invoice, approval, payment
- invoice-before-GRblock, receipt, release, approval, payment
- consignmentgoods movement without PO-level invoice
- DUPLICATE_INVOICE
- VENDOR_MISMATCH
- PAYMENT_BEFORE_GR
- PAYMENT_BEFORE_APPROVAL
- PAYMENT_WHILE_BLOCKED
Fixture v0 scorecard
Seeded critical rows where every expected violation code was emitted
Duplicate invoice scenarios caught by the duplicate rule
Clean traces where the oracle emitted an unnecessary hold finding
Runs containing the events needed to inspect the policy decision
Proposed actions are replayed before execution
The replay path now exposes retry, ordering, schema, and parallel consistency checks
SQLite-backed replay adds bounded ingest, partition checkpoints, and interruption recovery
CSV, XES, and BPIC2019 traces can enter the same audit surface
Three examples that text extraction alone would not settle
The invoice exists, but goods receipt is still missing
The payment event arrives before invoice release
A PO-level invoice appears in a flow that should not receive one
Synthetic fixture plus 1,000-case BPIC2019 smoke summary; raw benchmark data is not committed; production storage, queue semantics, monitoring, rollback, and ERP-specific mapping review are outside this artifact