Decision scores
The exact score-to-decision mapping, and how a decision can move outside it.
The five bands
| Score range | Decision |
|---|---|
| 0 – 25 | ALLOW |
| 26 – 45 | ALLOW_WATCH |
| 46 – 62 | SOFT_CHALLENGE |
| 63 – 74 | REVIEW |
| 75 – 100 | BLOCK |
ALLOW_WATCH is functionally identical to ALLOW for your integration —
proceed normally — but signals internally that this traffic is worth keeping
an eye on in aggregate.
Why BLOCK is hard to reach on deterministic rules alone
By design. The seven-layer rule engine, run without any ML fusion
contribution, tops out well under the BLOCK line even with every layer's
strongest rule firing simultaneously — deliberately, so that no combination
of purely static, deterministic signals can hard-block a session on their
own. Reliably crossing into BLOCK requires either a specific hard
identity fact (a Tor exit node plus a known-bad TLS fingerprint, for
example, via the invisible edge layer) or genuine behavioral/ML confidence
contributing real weight. See
The scoring engine for the exact
math.
What can move a decision outside the score bands
Three mechanisms apply on top of the score-to-band mapping, all escalation-only — none of them can downgrade a decision the score already earned:
- Per-action thresholds — see Event types.
- Policy engine overrides — a
challengeordenyoverride on a fired rule. - The late GHOST override — high-confidence uncanny-valley timing
forces
BLOCKregardless of the numeric score. See Session modes.
shadow_routed
Independent of the decision itself, a response may have shadow_routed: true — meaning this session was additionally logged to an internal review
queue (MIRROR for borderline scores, GHOST for high-confidence blocks) for
analysis. This never changes what your integration receives; it's purely
for KaizoCore's own model improvement and your dashboard's Shadow Queue view.