You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(frost): close outer native fallbacks + classify the refusal terminal
Fold of two Codex #4101 P2 findings:
- P2-1 (suppress outer fallbacks): the interactive-only guard lived only inside the
FFI adapter, so when the native FFI path was unavailable (ErrNativeCryptographyUnavailable
before the adapter's guard) the OUTER buildTaggedNativeExecutionBridge/Adapter still
delegated to the legacy backend, because nativeExecutionFallbackAllowed() stayed true.
Gate that single function on the flag: interactive-only now returns false there,
closing every outer legacy/coarse fallback (the bridge + adapter consult it before
delegating). New backend test asserts the suppression.
- P2-2 (terminal classification): the adapter's refusal returned a plain error, so the
tBTC signingRetryLoop (which only aborts on ErrTerminalSigningFailure) treated this
deterministic configuration failure as retryable and spun to timeout. Wrap the
refusal with %w ErrTerminalSigningFailure; the adapter test now asserts errors.Is.
Also folds my own review's scope notes into the gate doc: interactive-only is
format-agnostic (refuses coarse for every signer format the native executor handles),
closes both the inner FFI primitive and the outer fallbacks, and fails all native
signing closed in a build without the interactive engine - so enable it only on a
frost_native node with the audit gate on.
Builds across all tag combos; full default + frost_native/frost_roast_retry suites
pass; gofmt clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments