Skip to content
Phylax
Products

How Phylax scores artifacts

How Phylax scores artifacts and produces a risk score.

Every verification returns the same shape whatever you asked about: a verdict to act on, a measure of how much analysis stood behind it, and the findings that explain it. This page describes what those fields mean so you can gate on them correctly.

The verdict

VerdictMeaningWhat to do
ALLOWNothing was found that warrants blockingProceed
WARNSomething deserves a look, but it is not disqualifyingProceed, review when convenient
BLOCKThis should not shipStop

Anything unrecognised is treated as BLOCK, not as ALLOW. If a response is malformed, truncated or from a version that predates a verdict your client knows, the safe reading is refusal. Every Phylax client does this, and yours should too.

Coverage

Coverage tells you how much analysis is behind the verdict. It is not a confidence score, it is a statement about depth.

CoverageMeaning
networkAnalysed by the network, the deepest result available
cachedA previous network result for this exact artifact, still current
staticScreened, but not yet analysed in depth
noneNothing is known about this artifact

none is the one to watch. It is not a clean bill of health, it means the question has not been answered. Treat an unknown dependency as unreviewed rather than as safe.

Risk score and bands

risk_score is a number, risk_band groups it into low, medium, high and critical. Bands are what policies should key on. The number can move as analysis improves without the band changing, so a rule written against a band is stable where a rule written against a threshold is not.

Findings

finding_counts summarises what was found by severity, and findings carries the detail when your plan includes it.

{
"verdict": "WARN",
"coverage": "network",
"risk_band": "medium",
"finding_counts": { "critical": 0, "high": 1, "medium": 2, "low": 4 }
}

Counting findings is not the same as reading the verdict. A single critical finding outranks a dozen low ones, and the verdict already accounts for that. Gate on verdict, and use counts to decide how urgently to look.

Cache and freshness

Results are content addressed, so the same artifact bytes resolve to the same record rather than being re-analysed on every request. last_evaluated_at tells you when the underlying analysis ran. When analysis changes, affected results stop being served from cache rather than going stale quietly.

What a verdict does not claim

ALLOW means nothing warranting a block was found within the analysis that ran. It is not a manual audit, not a guarantee, and not a statement about code paths that were never reached. It is a strong signal, and it is the reason attestations exist: they record what was known, when, so a later surprise can be traced rather than argued about.

Did this page help you?