{
  "tool_id": "art-662-odnsf-fee-recompute",
  "tool_version": "1.0.0",
  "display_name": "Overdraft / NSF Fee Recomputation",
  "mcp_name": "compute_odnsf_fee_recompute",
  "mandate_type": "compliance_control",
  "wave": 109,
  "gpu": false,
  "url": "https://ainumbers.co/tools/662-odnsf-fee-recompute.html",
  "pageless": "No chaingraph/art-662-odnsf-fee-recompute.html node composer page — this node is presented via tools/662-odnsf-fee-recompute.html instead (see url). A chaingraph node page would trip NAV-ISLAND-1 as a new unreachable island since a shard row cannot link it from any SO #35 single-writer nav surface; that linkage is CORE-VERIFY-ASSEMBLE-LAND-1's to add.",
  "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.",
  "input_schema_ref": "tools/662-odnsf-fee-recompute.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:f9f132100c62ce3bbf6700443de51212832336923775ef8fdd0ecc53bfeeb36c","valid_from":"2026-08-20"}],
  "export_capability": ["json"],
  "standards_basis": "not_applicable",
  "cited_clause_digest": [],
  "compute_proof_ready": "deferred",
  "deferred_reason": "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."
}
