pub fn require_attestation(attest: Option<&str>) -> Result<(), CliError>Expand description
PURE exact-compare attestation gate — NO I/O, NO TTY read [R0-I2]. The interactive prompt lives in
the caller (the export-snapshot main.rs arm / the btctax-tui export modal); this helper only
compares, keeping the library I/O-explicit and the KATs deterministic (no env-dependent branch).
attest.map(str::trim) == Some(ATTEST_PHRASE)→Ok(()).Some(_)non-matching →Err(AttestationFailed)(a wrong phrase FAILS regardless of env) [R0-I1].None→Err(AttestationRequired).
pub so btctax-tui shares the exact-compare [R0-r2-N2].