- Cache get_input_addresses() and get_output_addresses() results in TxGraph
to avoid redundant parsing across 12 detector functions
- TxGraph.fetch_tx() already cached raw RPC calls; now parsed results are
cached too, eliminating repeated iteration over vin/vout arrays
- JSON output structure remains identical (no breaking changes)
- Add a `correction` field to every `finding()` call in detect.py with
actionable remediation advice for all 12 vulnerability types
- Add `CorrectionPanel` component to FindingCard.jsx that renders the
correction text under the technical details when a card is expanded
- Add `.correction` CSS styles with accent-tinted background and a
"HOW TO FIX" label to visually distinguish remediation from details
Replace flat string findings with typed objects following a unified
{ type, severity, description, details } envelope across all 12
detectors. Full TXIDs and addresses, no truncation.
When a descriptor is passed directly, strip its checksum, derive the
missing external/internal counterpart, and normalize both through
getdescriptorinfo before importing — matching the full address set
that --wallet produces.