Skip to main content
CID222 Docs

Model policy impact and control coverage

Use the Decision Simulator to compare exposure before and after CID222, test policy changes without saving them, grade NIST CSF controls and export the evidence.

  • Version: 0.4
  • Feature: compliance
  • Role: admin_user, auditor
  • Type: task

The Decision Simulator is the modelling view inside Compliance. It compares the same historical detection window three ways: what would have reached a provider without CID222, what remained risky under the current policy, and what would remain after a proposed change. It also connects detections to NIST CSF 2.0 controls and shows whether each control is holding over time.

Warning

The monetary result is a deterministic exposure model, not a probability forecast, legal opinion or Monte Carlo loss estimate. Use it to compare policy choices under one documented formula. Do not present it as the fine an authority will impose.

What do I need?

Licence
Any package with compliance
Role
admin_userauditor

Prerequisites

  • The appliance has recorded detections in the selected period; an empty window cannot grade a control.
  • The compliance reference data and NIST CSF 2.0 control seeds loaded successfully at boot.
  • The report-renderer service is healthy if you need the PDF export.

Read the three projections

For each regulation, the simulator returns these states over the same tenant, group, channel and date window:

ProjectionMeaning
BaselineEvery historical detection is treated as if it had reached the provider
CurrentMasked and rejected detections are neutralised; flagged detections still contribute
SimulationThe current state after your proposed reduction is applied to the remaining risky detections

The model saturates rather than growing forever:

exposure = statutory_cap × (1 − 0.5^(detections / 50))

The result carries formula_notes, regulation caps and the static exchange rates used for EUR conversion. Exported reports use the same server-side run, so the PDF cannot silently differ from the numbers on screen.

Test a policy change

Choose one scope

Select the whole scope available to your account, one tenant or one group. Tenant and group are mutually exclusive. Then choose the date window and, where offered, the traffic channel.

Confirm that current data is mature enough

Check the detection count and the period. A control with no matching detections is Untested, not healthy. Widen the period only when it represents the decision you are making.

Move the regulation or control targets

Regulation mode applies a reduction percentage directly. Control mode computes the improvement from each control's seeded baseline, keeps the best linked control per entity type, then weights the result by the detection mix for each regulation.

Compare the deltas

The result separates exposure already avoided by CID222 from the additional what-if share. The what-if endpoints do not change a filter, a threshold or a database row.

Export the evidence

Select the PDF action after confirming the subject and window. The report carries that scope. File it with the evidence period it describes, not as a timeless certificate.

Understand control status

Control coverage is the share of linked detections that CID222 masked or blocked. Volume alone does not decide the grade.

StateMeaning
HoldingCoverage is at or above the control's floor
PartialCoverage is below the floor but inside the configured partial band
FailingCoverage is below that band
UntestedNo matching detection exists in the period; this is not a pass

The default floor is 95%. The default partial band is 90–95%, and its width follows a floor an administrator moves. A row's reason names a disabled covering rule when one can be identified; otherwise it states the measured percentage and shortfall. Daily observations support an audit window: missing days remain missing and are never filled in as healthy.

Note

Changing a control threshold changes the grade only. It sends no SIEM event, webhook or email and changes no traffic policy. Configure the filter itself under Input filters.

Role boundaries

An auditor can read policy impact, baselines, controls, coverage, history and thresholds. The auditor can also run a non-persistent what-if and render its PDF. Only an admin_user can run the stored simulation workflow, record today's observation, run control targets and change grading thresholds.

API reference

Method and pathPurpose
GET /admin/grc/simulator/policy-impactMeasured impact of the policy currently in force
POST /admin/grc/simulator/policy-impact/what-ifCompute a hypothetical conversion of flag/warn rules; stores nothing
GET /admin/grc/simulator/baselineBaseline projection with no reductions
POST /admin/grc/simulator/runRegulation-reduction simulation
GET /admin/grc/simulator/controlsSeeded NIST CSF 2.0 control catalogue
POST /admin/grc/simulator/run-controlsSimulation from per-control target percentages
GET /admin/grc/simulator/control-coverageCurrent control grades and reasons
GET /admin/grc/simulator/control-historyObservation-window summary
GET /admin/grc/simulator/control-history/{controlId}Daily series for one control
POST /admin/grc/simulator/control-history/recordRecord today's readings now; idempotent for the day
GET /admin/grc/simulator/control-thresholdsCurrent floors and partial band
PUT /admin/grc/simulator/control-thresholdsChange grading floors
POST /admin/grc/simulator/report/pdfRe-run and render the scoped PDF

Verify

  1. Run the baseline and confirm its subject and date window match the page filters.
  2. Set one what-if reduction and confirm Current stays fixed while Simulation changes.
  3. Open control coverage and confirm every row has a state, evidence count and status reason.
  4. Open control history and confirm days_observed matches the dates actually recorded.
  5. Export a PDF and compare its subject, period and totals with the screen.

If it fails

  • A 403 FEATURE_NOT_LICENSED means the installed licence does not carry compliance.
  • An empty result usually means the selected scope or period has no detections. Confirm the same filters in Compliance and All detections.
  • Untested means no matching evidence, not a healthy control. Do not lower a threshold to hide the absence of evidence.
  • A PDF 503 means the report renderer is unavailable. Follow the report-rendering runbook:
    Runbookperformance

    A PDF or report will not render

    You might see: Failed to render compliance scorecard PDF · Failed to render detections PDF · Failed to render executive summary PDF · Failed to render regulations PDF

    Before you start

    Checks

    1. 1

      Read whether the report renderer answered

      diagnostics · services[report-renderer].reachable = true

    2. 2

      Read whether the renderer reports itself healthy

      diagnostics · services[report-renderer].healthy = true

    3. 3

      Check whether only the large exports fail

      expected · The small export succeeds.

    4. 4

      For a compliance dossier, read whether the render was reconciled against the record

      expected · The renderer reported its rendered ids.

Last updated on

On this page