{
  "tool_id": "art-701-three-way-invoice-match",
  "kernel_id": "art-701-three-way-invoice-match",
  "display_name": "Three Way Invoice Match",
  "tool_version": "1.0.0",
  "mandate_type": "compliance_control",
  "purpose": "Matches one invoice against its purchase order and its goods receipt and decides whether the invoice can be paid: every invoice line is paired to an unused PO line by the declared po_line, then by exact sku, then by a free same-number PO line (no fuzzy text matching anywhere), and each paired line takes the first verdict that applies in a fixed order: quantity over received, receipt missing (a two-way match, reported as a flag rather than a failure), quantity over ordered, or unit price outside the declared basis-point tolerance, where a variance exactly at the tolerance passes. Totals are recomputed in integer minor units: the line sum against the declared subtotal, tax from one declared rate under half-up integer rounding, and the total from those two. Prior invoices from the same vendor are screened for duplicates on same total inside the declared day window, the same normalized invoice number (lowercased, non-alphanumerics stripped, leading letters and zeros stripped), or the same PO, with the likely-duplicate rule fixed in advance. Any of fractional quantities, sub-minor-unit prices, negative or non-integer money, duplicate line numbers, an unknown tax rounding, or a missing currency is refused with a named reason, never rounded or coerced. Scope limits: one currency per invoice, one declared tax rate with no tax-jurisdiction logic, and day differences from integer days-from-civil arithmetic with no clock; no goods receipt at all downgrades the run to a two-way match and is reported, not failed.",
  "control_description": "Matches one invoice against its purchase order and its goods receipt and decides whether the invoice can be paid: every invoice line is paired to an unused PO line by the declared po_line, then by exact sku, then by a free same-number PO line (no fuzzy text matching anywhere), and each paired line takes the first verdict that applies in a fixed order: quantity over received, receipt missing (a two-way match, reported as a flag rather than a failure), quantity over ordered, or unit price outside the declared basis-point tolerance, where a variance exactly at the tolerance passes. Totals are recomputed in integer minor units: the line sum against the declared subtotal, tax from one declared rate under half-up integer rounding, and the total from those two. Prior invoices from the same vendor are screened for duplicates on same total inside the declared day window, the same normalized invoice number (lowercased, non-alphanumerics stripped, leading letters and zeros stripped), or the same PO, with the likely-duplicate rule fixed in advance. Any of fractional quantities, sub-minor-unit prices, negative or non-integer money, duplicate line numbers, an unknown tax rounding, or a missing currency is refused with a named reason, never rounded or coerced. Scope limits: one currency per invoice, one declared tax rate with no tax-jurisdiction logic, and day differences from integer days-from-civil arithmetic with no clock; no goods receipt at all downgrades the run to a two-way match and is reported, not failed.",
  "declared_inputs": [],
  "declared_outputs": [],
  "kernel_digest": "sha256:b57f647a37e62cd55bd20c9fb5aec358e2ccf0127aa4f2261772e718808a1625",
  "trust_label": "deferred: deterministic source published, zkVM proof not yet generated; New gpu:false node, art-701-three-way-invoice-match, built 2026-10-01 (ART701-THREE-WAY-MATCH-1). Integer-only decision arithmetic over small arrays with no digest inside compute(); expected FAST on GPU-CYCLE-PREFLIGHT-1's static pre-screen, and the row defers the prove: ship deferred now and raise the section 18 deferred ceiling by one in the same PR (the #2133 precedent). No GPU prove has been run; proving is async queue work under RIDER-KERNEL.md, not a per-wave gate.",
  "data_vintage": "2026-10-01",
  "last_validated": "2026-10-01",
  "conformance_fixtures_vendored": true,
  "compute_proof_ready": "deferred",
  "wave": 120,
  "source_url": "https://ainumbers.co/chaingraph/art-701-three-way-invoice-match.html",
  "generated_at": "2026-10-02T04:38:02.450Z"
}
