Foreshock
EN 订阅
文档

概念

裁决、等级带与资金池

三个裁决、不是分数的序数等级带,以及为什么资金要分池而不是全部扫进一个归集地址。

更新于
2026-08-24

三个裁决

POST /v1/decide/deposit 的 verdict 只会是三者之一。

裁决含义
CREDIT这笔入金可以贷记。
HOLD这笔入金暂时不得贷记。
REJECT这笔入金不得贷记。

没有第四个取值。任何输入处于降级、陈旧、不可用或超预算时,没有任何路径返回 CREDIT。所有降级路径都落在 HOLD。

裁决只会出现在 200 响应里。4xx 里没有裁决,5xx 里也没有。

等级带不是分数

API 里出现两种序数等级带。

  • 暴露面匹配上的 severity:R0(最低)到 R2。
  • 裁决上的 risk_level:R0(最低)到 R4。

它们是带,不是分数。Foreshock 不在任何接口、任何模式下发布数值化风险分数,也不存在能显示分数的 debug 或 verbose 模式——内部评分从不进入任何对外响应体。

第三方供应商的分数是另一回事。供应商给出分数时,它按供应商自己的量纲原样放在 VendorResult.score 里,与 vendor、verdict、categories、list_version 以及指向快照的 raw_ref 一起返回。不同供应商的分数量纲不同、不可比。Foreshock 不做换算:换算会制造出并不存在的精度,并切断回溯到供应商原始判断的审计链。

供应商之间不一致时,vendor_disagreement 为 true,两边的结果都还在。不一致被如实报告,绝不被调和成一个答案。

reason 做分类,不做推导

reasons 是一个 DecisionReason 数组,每条带 code,以及可选的 severity 带、vendor 与 raw_ref。一条 reason 陈述的是「适用了哪一类判定」。它不陈述这个判定是怎么得出的,也从不包含执法目标地址或分数。

reason code 分两族:风险分类,与降级。每一个降级码都在 HTTP 200 下产生 HOLD。完整枚举在生成的参考里。

新的码可能在 minor 版本里引入。把不认识的码当作至少与随附的 risk_level 同等严重。

资金池

pool 告诉你资金该去哪里:clean、tagged 或 quarantine。

分池的意义在于防止分类不同的资金被扫进同一个归集地址。一个落进和其他资金同一个热钱包的 quarantine,什么都没做到——分类只在隔离还在时才存在。这件事要紧时,required_actions 里会出现 QUARANTINE_ROUTE。

待办动作与截止时间

required_actions 列出这笔入金离开 HOLD 之前,你的工作流必须完成的操作步骤——取证资金来源、一线或升级复核、路由到隔离池、通知合规负责人、开案,或在降级恢复后重新裁决。

sla_deadline 是这些动作在你所配置的服务水平下的到期时间,不适用时为 null。这是你的截止时间,不是我们的。