pub enum CoreError {
Show 14 variants
InvalidDelegation(String),
InvalidIntent(String),
UnknownDelegation(String),
DuplicateDelegation(String),
LedgerOverflow(String),
CommitRejected(String),
WalIo(String),
WalLocked {
path: String,
message: String,
},
WalBadLine {
line: u64,
message: String,
},
WalChainBroken {
line: u64,
message: String,
},
WalMismatch {
line: u64,
message: String,
},
AnchorInvalid(String),
AnchorMismatch(String),
Pending(PendingError),
}Variants§
InvalidDelegation(String)
委托注册被拒:字段非法(空 id / 预算为 0 / 有效期倒挂等)。fail-closed:宁可注册失败。
InvalidIntent(String)
意图非法:金额或 nonce 为 0、必填字段为空。
UnknownDelegation(String)
引用了不存在的委托(撤销/查询)。
DuplicateDelegation(String)
委托 id 重复注册。
LedgerOverflow(String)
账本累计溢出(u64)。状态异常,fail-closed:宁可报错也不回绕把巨额记成小额。
CommitRejected(String)
在闸未放行的情况下调用了 commit(API 误用,程序员错误)。
正常流程是 evaluate → (写审计) → commit;直接 commit 会被这里拦下。
WalIo(String)
WAL 打开/读写失败。
WalLocked
单写者锁被占:同一份 WAL 已有另一个活着的写进程。fail-closed 拒启—— 两个闸共写一份审计 = 预算硬上限失效、同一 nonce 跨进程放行两次。
WalBadLine
WAL 里有一行读不懂(半行 JSON / 空行 / 未知结构)。绝不静默跳过。
WalChainBroken
WAL 完整性链断裂(seq 与物理行号不符 / prev 与按前文重算的链值不符)。
这是日志被改(改字段/删行/重排/复制)的痕迹,fail-closed 拒读拒续写。
WalMismatch
回放时重算结果与记录不一致(日志被改 / 实时与回放口径漂移)。fail-closed 停机。
AnchorInvalid(String)
审计锚点文件非法:格式/字段读不懂,或 MAC 与所有者密钥对不上(锚点不是 所有者签的,或锚点本身被改)。fail-closed:不可信的锚点比没有锚点更危险。
AnchorMismatch(String)
当前 WAL 与合法锚点不符:整体截尾(行数不足)或被锚定的前缀内容被改。 这是 W-21 完整性链已知边界(尾行篡改/截尾本地验不住)的抓法。
Pending(PendingError)
人在环待支付被拒(W-53a:三钉 / 单号不存在 / 凭证缺失 / 单号重复)。 fail-closed:被拒的确认一行都不落账。
Trait Implementations§
impl Eq for CoreError
Source§impl Error for CoreError
impl Error for CoreError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()