SPARK Assurance Levels¶
SPARK defines five assurance levels – Stone, Bronze, Silver, Gold, and Platinum – each building on the previous. Higher levels provide stronger guarantees about absence of run-time errors and compliance with functional specifications.
Level Objectives¶
Stone¶
Criterion |
Requirement |
|---|---|
Valid SPARK subset |
All source code uses SPARK-compatible constructs |
No restricted constructs |
No goto, no anonymous access types, no uncontrolled pointers |
Enforcement |
|
Bronze¶
Criterion |
Requirement |
|---|---|
Data-flow analysis |
Every variable is assigned before use, no uninitialized reads |
Information-flow analysis |
Depends/Global contracts match actual data dependencies |
Initialization checks |
All objects initialized before first use |
Enforcement |
|
Silver¶
Criterion |
Requirement |
|---|---|
Absence of run-time errors (AoRTE) |
All run-time checks proved: index bounds, overflow, division-by-zero, etc. |
Assertions proved |
All user-specified |
Enforcement |
|
Justification |
Unproved checks may be justified with |
Gold¶
Criterion |
Requirement |
|---|---|
Functional correctness |
Key subprogram contracts proved: Pre/Post, Type_Invariant |
Core invariants |
Critical type/system properties specified and verified |
Enforcement |
|
Coverage |
At minimum: all public subprograms in core packages have postconditions |
Platinum¶
Criterion |
Requirement |
|---|---|
Full functional requirements |
Complete formal specification of all subprogram behaviour |
Total correctness |
All subprograms have complete Pre/Post contracts covering full behaviour |
Domain properties |
Algebraic properties (commutativity, idempotence, convergence) proved |
Enforcement |
|
Platinum is a best-effort ideal, not a DAL compliance gate. Justified VCs
(pragma Annotate for decidedly unprovable checks) count neither as proved
nor as unproved and never downgrade the level; only unproved VCs do. The
minimum DAL gates are Gold (DAL-A), Silver (DAL-B), and Bronze (DAL-C/D).
Level attainment in practice¶
Each level subsumes all lower levels (Platinum implies Gold through Stone).
The --dal analysis checks for a minimum SPARK level. For DAL-C, the
minimum requirement is Bronze (flow analysis passes).
# Check SPARK level of target project
adacovex --target=../Ada_CRDT --dal=C
See also¶
Standards – the minimum proof bar per rigor tier across DO-178C / ISO 26262 / IEC 62304
DAL Levels – the per-level SPARK gates (Gold / Silver / Bronze / Stone)
Proof ledger – adacovex’s own Platinum proof results (725 VCs, 0 unproved under gnatprove 16.1.0)