{
  "tool_id": "art-662-odnsf-fee-recompute",
  "kernel_id": "art-662-odnsf-fee-recompute",
  "display_name": "Overdraft / NSF Fee Recomputation",
  "tool_version": "1.0.0",
  "mandate_type": "compliance_control",
  "purpose": "Independently recomputes overdraft (OD) and non-sufficient-funds (NSF) fee events from a caller-supplied posted-transaction ledger and opening balance, applying the caller's own declared posting-order policy (as_supplied, high_to_low_amount, low_to_high_amount, or chronological_by_effective_date) and fee schedule (fee amounts, an optional daily fee-count cap, an optional representment-dedup window, and an optional extended-overdrawn fee tier), then diffs the recomputed fee totals against caller-supplied core-charged fees, aggregated by post_date and fee type. Posting order and every fee-schedule term are caller-declared inputs, never chosen or inferred; the kernel makes no claim about their legality or permissibility. Each ledger item declares whether the bank pays it into a negative balance (an OD event) or returns it unpaid (an NSF event, the conservative default when undeclared). The verdict is MATCHES, DIVERGES, or INDETERMINATE; INDETERMINATE covers an empty ledger, an incomplete fee schedule, or no core-charged fees supplied to compare against, never guessed toward agreement. Money is fixed point in integer minor units throughout with two-decimal display. Cites Regulation DD (12 CFR Part 1030) for the fee-disclosure requirement and Regulation E (12 CFR Part 1005) for the authorization-hold concept behind the APSN pattern, both dated for re-verification against primary text. Stated boundary: this is an independent recompute and receipt, never a core alternative, a vendor audit, or an endorsement claim by any core vendor or platform, and a divergence is an arithmetic finding, never a determination that a fee was charged incorrectly or impermissibly, or is owed back.",
  "control_description": "Independently recomputes overdraft (OD) and non-sufficient-funds (NSF) fee events from a caller-supplied posted-transaction ledger and opening balance, applying the caller's own declared posting-order policy (as_supplied, high_to_low_amount, low_to_high_amount, or chronological_by_effective_date) and fee schedule (fee amounts, an optional daily fee-count cap, an optional representment-dedup window, and an optional extended-overdrawn fee tier), then diffs the recomputed fee totals against caller-supplied core-charged fees, aggregated by post_date and fee type. Posting order and every fee-schedule term are caller-declared inputs, never chosen or inferred; the kernel makes no claim about their legality or permissibility. Each ledger item declares whether the bank pays it into a negative balance (an OD event) or returns it unpaid (an NSF event, the conservative default when undeclared). The verdict is MATCHES, DIVERGES, or INDETERMINATE; INDETERMINATE covers an empty ledger, an incomplete fee schedule, or no core-charged fees supplied to compare against, never guessed toward agreement. Money is fixed point in integer minor units throughout with two-decimal display. Cites Regulation DD (12 CFR Part 1030) for the fee-disclosure requirement and Regulation E (12 CFR Part 1005) for the authorization-hold concept behind the APSN pattern, both dated for re-verification against primary text. Stated boundary: this is an independent recompute and receipt, never a core alternative, a vendor audit, or an endorsement claim by any core vendor or platform, and a divergence is an arithmetic finding, never a determination that a fee was charged incorrectly or impermissibly, or is owed back.",
  "declared_inputs": [],
  "declared_outputs": [],
  "kernel_digest": "sha256:f9f132100c62ce3bbf6700443de51212832336923775ef8fdd0ecc53bfeeb36c",
  "trust_label": "deferred: deterministic source published, zkVM proof not yet generated; New gpu:false node, art-662-odnsf-fee-recompute, scaffolded 2026-08-20 (KERNEL-SCAFFOLD-1). No GPU prove has been run and none is proposed by this scaffold — deferred per the section 18 steady-state rule (RIDER-KERNEL.md). Run GPU-CYCLE-PREFLIGHT-1's static pre-screen once compute() is real, then measure user_cycles with runq-cpu exec before booking.",
  "data_vintage": "2026-08-20",
  "last_validated": "2026-08-20",
  "conformance_fixtures_vendored": true,
  "compute_proof_ready": "deferred",
  "wave": 109,
  "source_url": "https://ainumbers.co/tools/662-odnsf-fee-recompute.html",
  "generated_at": "2026-08-20T20:26:37.859Z"
}
