CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/risk-matrix

The risk-based testing (RBT) umbrella: risk matrix and risk register authoring, likelihood x impact scoring, risk storming, calibration, and risk-to-test coverage mapping. Produces the per-feature / per-release matrix artifact (structured intake: feature, category, impact 1-5 by likelihood 1-5, score; heatmap; mitigations with owners and due dates), supporting lightweight and heavyweight (FMEA / Cost of Exposure) methods per RBT canon, plus a risk coverage mapping workflow that proves which tests, cases, or monitors back each registered risk. references/ carries the product-risk and project-risk register variants, the risk-storming facilitation guide, matrix calibration against observed defect data, and a register review checklist. Use for any risk-based-testing artifact: building a matrix or register, running a risk-storming session, calibrating ratings against defects, or mapping risks onto test coverage.

69

Quality

87%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

risk-review-checklist.mdreferences/

Risk-register review checklist

Deep reference for the risk-matrix SKILL.md. A hygiene checklist for auditing a risk register (per-release matrix or product register) for assessment quality before release planning or a quarterly review. Blocks substandard risk assessments from driving release planning.

Inputs: the register under review, optionally the coverage matrix from the SKILL.md coverage mapping section, and the decisions folder for accepted risks. Output: per-risk findings + a single register-level verdict (pass / block / pass-with-caveats).

Check 1 - Field completeness

Every entry must have:

FieldRequired?BLOCK if missing?
ID
Risk title
Category
Impact (1-5)
Likelihood (1-5)
Score✓ (computed = I × L)
Strategy (Avoid / Mitigate / Transfer / Accept)
Mitigation OR decision link
Owner
Last review date

Check 2 - Independence of impact and likelihood

Impact + likelihood must be independently scored, not auto-equated:

def check_independence(risks):
    issues = []
    pairs = [(r["impact"], r["likelihood"]) for r in risks]
    diag_count = sum(1 for i, l in pairs if i == l)
    if len(pairs) > 5 and diag_count / len(pairs) > 0.7:
        issues.append(
            f"{diag_count}/{len(pairs)} risks have impact == likelihood. "
            "Likely auto-equated; force independent scoring."
        )
    return issues

If >70% of risks have impact == likelihood, the register is suspect (the same principle as scoring defect severity and priority independently).

Check 3 - Strategy discipline

For each "Accept" decision, verify a written acceptance-decision memo exists (who accepted, what evidence, expiry / revisit date). Any Accept without a linked decision document = BLOCK.

For each "Transfer" decision, verify the receiving party (insurance / vendor / SLA) is named. Without it, "Transfer" is hand-wave Accept.

Check 4 - Mitigation-to-coverage linkage

Build the coverage matrix per the SKILL.md coverage mapping section, then:

orphans_critical = [r for r in matrix if r["coverage_depth"] == 0 and r["score"] >= 15]
orphans_high = [r for r in matrix if r["coverage_depth"] == 0 and 10 <= r["score"] < 15]
  • Critical-score orphans (≥15) = BLOCK
  • High-score orphans (10-14) = warning
  • Medium-score orphans (5-9) = info

Check 5 - Escalation evidence

Risks scoring ≥15 must have escalation evidence:

ScoreRequired escalation
15-19Engineering director or equivalent named in owner / reviewer field
20-25VP / CTO / CISO sign-off recorded in review log

Without it, the register has under-escalated risks = caveat.

Check 6 - Review cadence

Per the register type:

RegisterCadenceStale after
Per-release matrix (SKILL.md)Weekly during sprint14 days
Product register (product-risk-register.md)Quarterly100 days
Project register (project-risk-register.md)Weekly14 days

If most entries' last_review is older than the threshold, the register is stale.

Check 7 - Verdict + report

# Risk-register audit - Q2 2026 release matrix - YYYY-MM-DD

**Risks audited:** 27 active + 4 retired
**Findings:** 6 critical, 9 warnings
**Verdict:** BLOCK - 3 critical findings require fix before release

## Critical (must fix before release planning)

| # | Risk ID | Finding |
|---|---|---|
| 1 | R-14 | Strategy "Accept" without linked decision document |
| 2 | R-22 | Score 20 (impact 5 × likelihood 4); coverage depth 0 (ORPHAN). No test, no monitor, no decision. |
| 3 | PR-009 | Score 16; last review 137 days ago (stale for product register; threshold 100 d) |

## Warnings

| Risk ID | Finding |
|---|---|
| R-08 | impact 3 = likelihood 3 = score 9; pattern repeats for 19/27 entries - likely auto-equated |
| PR-003 | Strategy "Transfer" but recipient not named |
| R-11 | Owner field empty |
| ... | ... |

## Coverage integration

- 4 of 27 risks are orphan (no coverage). Of these:
 - 2 critical (score ≥15) - BLOCK above
 - 2 low (score <10) - info

## Acceptance decisions integration

- 3 Accept decisions found. 2 have linked documents (R-08, R-12);
  1 missing (R-14 - BLOCK above)

## Review cadence

- Average `last_review`: 18 days
- Stale entries (>14 days for release matrix): 7 of 27
- Most-stale: PR-009 at 137 days

## Action items

1. **R-14**: Either author the acceptance decision memo or change
   strategy to Mitigate / Transfer.
2. **R-22**: Add at least one mitigation + one test before release.
3. **PR-009**: Re-review now; update `last_review` date.

After fixes, re-run this checklist.

Never-pass rules

A register review never returns "pass" when any of these hold:

  • Any critical-score risk is orphan in coverage.
  • Any "Accept" decision lacks a written decision document.
  • More than 50% of entries are stale per the applicable cadence.
  • Findings were suppressed without a per-risk waiver.

The review reports and recommends; it never auto-fixes register fields.

Anti-patterns

Anti-patternWhy it failsFix
Auditing only critical-score orphansMedium-score risks accumulate coverage debtRun all 7 checks
Treating "Accept" as default for inconvenient risksDecision discipline collapsesRequire documented decisions per acceptance
Skipping the independence checkAuto-equated scores produce misleading prioritiesAlways run Check 2
Auditing once per release onlyRisks drift between release cyclesAudit weekly for release matrices
Score thresholds different per teamCross-team metrics meaninglessStandardise the threshold table; audit against it
Reviewers in owner column for "accountability"Owner ≠ reviewer; concentrates blameDistinguish owner from reviewer fields

Limitations

  • Subjective scoring. The checklist checks discipline, not correctness of impact / likelihood values.
  • Cadence threshold is org-policy. Defaults from ISTQB CTAL-TM but teams may justify exceptions.
  • Coverage check depends on the coverage-mapping output. If tags / refs aren't disciplined, coverage is under-reported; the review shows orphans that may actually be covered.
  • Doesn't validate decisions. A documented Accept decision with bad rationale still passes the linkage check; pair with human review of decisions themselves.

References

SKILL.md

tile.json