pub enum BlockerKind {
Show 20 variants
FmvMissing,
UncoveredDisposal,
ImportConflict,
DecisionConflict,
UnknownBasisInbound,
Unclassified,
SafeHarborUnconservable,
SafeHarborTimebar,
UnmatchedOutflows,
Pre2025MethodNote,
MethodElectionBackdated,
LotSelectionInvalid,
Pre2025MethodConflictsAllocation,
TaxYearNotComputable,
TaxProfileMissing,
TaxTableMissing,
QualifiedAppraisalNote,
SelfTransferInboundZeroBasis,
SelfTransferInboundDefaultedAcquired,
PseudoReconcileActive,
}Variants§
FmvMissing
UncoveredDisposal
ImportConflict
DecisionConflict
UnknownBasisInbound
Unclassified
SafeHarborUnconservable
SafeHarborTimebar
UnmatchedOutflows
Pre2025MethodNote
MethodElectionBackdated
§A.5(a): a MethodElection whose effective_from precedes its made-date or TRANSITION_DATE —
a standing order cannot be back-dated (§1.1012-1(j) no post-hoc identification). Hard.
LotSelectionInvalid
§A.4: a LotSelection that fails validation (unknown/cross-wallet/over-drawn lot, or principal
mismatch). Hard — the named identification is unusable so the disposal’s tax is gated.
Pre2025MethodConflictsAllocation
§A.7 / §7.4: the live pre2025_method config differs from the GOVERNING (effective) allocation’s
recorded pre2025_method. The allocation conserves under ITS recorded method, so this is a method
drift — NOT bad data (never SafeHarborUnconservable). Hard: a post-attestation method change would
silently break conservation between the pre-2025 residue and the irrevocable allocation. Clearable by
reverting the live config to the recorded method; the irrevocable allocation is never rewritten.
TaxYearNotComputable
§B.4 / B-I1: the projection carries an unresolved Hard blocker (severity()==Hard) anywhere, so B
refuses to present a number for the year (projection-wide gate). Returns a TaxOutcome::NotComputable
with this kind. Clearable by resolving the underlying Hard blocker. Hard.
TaxProfileMissing
§B.1: no tax_profile is set for the year being computed. B does not guess the surrounding tax
context — the user must supply it via tax-profile set. Hard.
TaxTableMissing
§B.2: no bundled tax table is available for the year being computed. Hard.
QualifiedAppraisalNote
§170(f)(11)(C): the term-aware claimed-deduction proxy for a charitable donation exceeds
$5,000 — a qualified appraisal is likely required (CCA 202302012 confirms the
exchange-price/readily-valued exception does NOT apply to crypto).
Advisory — never gates compute_tax_year; emitted per qualifying Donate event.
SelfTransferInboundZeroBasis
Cycle A: an inbound self-transfer (InboundClass::SelfTransferMine) whose basis was DEFAULTED
to $0 (basis == None). $0 is a computable, conservative value (never gates a later disposal —
contrast the Hard UnknownBasisInbound, which creates NO lot); this is a pure honesty prompt to
supply the real cost. Fires on None only, never on an attested Some(0).
Advisory — never gates compute_tax_year.
SelfTransferInboundDefaultedAcquired
[reconcile-defaults] An inbound self-transfer (InboundClass::SelfTransferMine) whose acquisition
date was DEFAULTED (acquired_at == None) to 1 year + 1 day before receipt → the holding period is
assumed LONG-TERM. A pure honesty prompt to supply the real --acquired date if the coins were held
≤ 1 year. Fires INDEPENDENTLY of the basis default (so a supplied --basis with no --acquired
still discloses the backdating). Advisory — never gates compute_tax_year.
PseudoReconcileActive
Pseudo-reconcile mode (sub-project 2) is ON and at least one synthetic (non-persisted) default
is CONTRIBUTING to this projection. A loud “this picture is a placeholder — correct it toward
truth, and do NOT file it” banner (renders automatically via {:?} in verify). Drives the
interim export-refusal guard (sub-2) until the sub-3 typed-attest gate ships.
Advisory — never gates compute_tax_year (the mode’s whole point is to PRESENT a number).
Implementations§
Trait Implementations§
Source§impl Clone for BlockerKind
impl Clone for BlockerKind
Source§fn clone(&self) -> BlockerKind
fn clone(&self) -> BlockerKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BlockerKind
Source§impl Debug for BlockerKind
impl Debug for BlockerKind
impl Eq for BlockerKind
Source§impl Ord for BlockerKind
impl Ord for BlockerKind
Source§fn cmp(&self, other: &BlockerKind) -> Ordering
fn cmp(&self, other: &BlockerKind) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for BlockerKind
impl PartialEq for BlockerKind
Source§impl PartialOrd for BlockerKind
impl PartialOrd for BlockerKind
impl StructuralPartialEq for BlockerKind
Auto Trait Implementations§
impl Freeze for BlockerKind
impl RefUnwindSafe for BlockerKind
impl Send for BlockerKind
impl Sync for BlockerKind
impl Unpin for BlockerKind
impl UnsafeUnpin for BlockerKind
impl UnwindSafe for BlockerKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.