Calculate an SPRS score
calculate_sprs_scoreCompute an exact SPRS score per the DoD Assessment Methodology: start at 110 and subtract each unimplemented requirement's Annex A weight (floor −203). Pass the control numbers that are NOT implemented; optionally pass 3.5.3 and/or 3.13.11 as partially implemented for their sliding-scale values (MFA for privileged/remote only = −3; encryption present but not FIPS-validated = −3). Also reports whether the score clears the 88-point conditional CMMC Level 2 certification threshold and flags a missing SSP (3.12.4), which blocks SPRS submission entirely.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| not_implemented | Yes | Rev 2 control numbers not implemented, e.g. ["3.5.3", "3.11.2"]. An empty array means all 110 implemented (score 110). Rev 3 identifiers are rejected - there is no DoD scoring methodology for Rev 3. | |
| partially_implemented | No | Sliding-scale controls at their partial value: 3.5.3 (MFA for privileged and remote users only) and/or 3.13.11 (encryption employed but not FIPS-validated). Deducts 3 instead of 5. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| scale | Yes | ||
| deductions | Yes | ||
| sprs_score | Yes | The computed score, from 110 down to the -203 floor. | |
| missing_ssp | No | Present when 3.12.4 is unimplemented, in which case no score can be submitted to SPRS at all. | |
| conditional_note | No | ||
| unknown_controls | No | Inputs that matched no requirement - treat as caller error, not as implemented. | |
| total_points_deducted | Yes | ||
| meets_conditional_level_2_threshold | Yes | Whether the score reaches 88. Clearing it is necessary but not sufficient - every open item must also be POA&M-eligible. |