v1.5.8 — dictionary_hash binding attestation (Reg B moat)
Closes Reg B's highest-stakes control. Bank counsel signs the reason-code dictionary; before v1.5.8 a downstream could swap that file between signature and audit time. Now every attestation binds SHA-256(dictionary bytes) into the signing payload. Post-hoc edit → hash mismatch → signature fails. Wire back-compat: field appended to signing payload ONLY when present, so pre-v1.5.8 attestations verify unchanged. Python side updated to match. Tests 556 → 566 (+10).