Feature Risk Analysis
Purpose
A risk section is worth writing only if something changes because of it. Most do not: they list
"performance", "data integrity" and "scope", rate everything medium, and are read once.
Detection explains how anyone discovers the event; fallback states what can be done
afterward. Missing detection or recovery is itself important risk evidence. Keep the row and
its unresolved controls visible instead of discarding it as a worry.
Workflow
- Derive candidates from the artefacts, not from a list of adjectives. Every boundary
crossing in the impact map, every standing assumption in the ledger, every decision taken
without an answer, and every resource touching data or an integration is a candidate.
references/risk-register.md gives the derivation table, the precise definition of each
field, and the revisit procedure for the completion review.
- State each as an event: something that happens, at a time, with a consequence. "The
migration is slow" is not one; "the migration holds a lock on
orders long enough to time out
requests" is.
- Rate impact and likelihood against a stated deployment/operation window and exposure.
Use HIGH, MEDIUM or LOW with evidence, or UNKNOWN when evidence is insufficient; distinguish
inherent risk from residual risk after controls actually verified.
- Write the detection. What signal, seen by whom, how long after. If the honest answer is
"a customer tells us", write that — it is the finding.
- Write mitigation and fallback. Mitigation reduces probability or cost before the fact;
fallback is what is done after. They are different fields and a register that merges them
usually has only mitigation.
- Convert what is actionable into work. A mitigation that requires code is a resource in
the plan, not a paragraph in a document.
- Revisit controls and residual exposure at completion. Link relevant input revisions,
IMP-*/ED-*, mitigating RES-* and observed EV-*; acceptance is reconsidered when
premises, implementation, workload or controls change.
What to sweep
Correctness, data (loss, corruption, migration, retention), concurrency, performance,
scalability, reliability and failure handling, security and access, compatibility with existing
callers and stored data, deployment and ordering, migration and rollback, operations and
diagnosis, maintainability.
Use relevant concerns as a coverage check. Record "none identified in the inspected scope"
or "not assessed" honestly; no need to create empty rows for every category. When no dossier
exists, derive a bounded register from the request and repository evidence.
Rating
| Level |
Impact means |
Probability means |
| HIGH |
Severe loss/exposure or outage over the affected population |
Expected or repeatedly observed under the stated exposure and controls |
| MEDIUM |
Material degradation or bounded manual recovery |
Credible failure path under the stated operating conditions |
| LOW |
Limited, bounded harm with demonstrated recovery |
Evidence supports infrequency in the stated window; not merely missing incidents |
Rate impact by consequence, not by embarrassment. Rate probability against this system's
history and controls, not against the general frequency of the failure class. One incident
or absent prevention alone does not establish high likelihood; no incidents does not establish
low likelihood. Record confidence, detection gaps and correlated/common-cause failures rather
than multiplying ordinal labels into a probability.
Decision rules
IF a risk has no detection
THEN record it as undetected unless customer discovery is supported; identify a detection
task or state why detection is infeasible. Do not invent a signal or drop the risk.
IF a risk is HIGH impact
THEN identify the control/acceptance decision needed before the action that creates exposure.
Implement mitigations and investigate safely within existing authorization; block only
dependent exposure when required controls or authority remain unresolved.
IF the mitigation is work
THEN it is a RES-* with an identifier, and it appears in the execution order.
IF a risk exists only because an assumption is unconfirmed
THEN seek repository/runtime evidence or a discriminating experiment first; ask only for
material information that remains unavailable. Confirmation does not remove other failure paths.
IF a risk is accepted
THEN link existing acceptance evidence, residual consequence, scope, owner and reopening
trigger; use GAP-* when the feature workflow calls for a bounded accepted gap.
IF the register is long and everything is MEDIUM
THEN check specificity, duplication and rating evidence. Preserve material undetectable risks;
register length and rating distribution alone do not prove poor analysis.
IF a risk cannot be reduced, detected or recovered from
THEN it is a constraint on the design, and it belongs back in the solution phase.
Constraints
- Record risks even when ownership is unresolved. Separate the control implementer from
the authority accepting residual exposure. Reuse existing user authorization/delegation and
applicable policy; risk labels alone do not create a new approval gate. Material exposure
outside that authority remains pending, even if its likelihood is LOW.
- Do not restate the general failure modes of a technology. The register is about this
feature's use of it, in this system.
- Do not use the register to relitigate the design. If the risk kills the option, that is a
solution-phase finding, not a row.
Output
RISK-02 The dispatch consumer reprocesses an event after a redeploy
Impact HIGH duplicate outbound charges
Probability UNKNOWN rate per redeploy not measured; replay/lost-ack path exists
Detection reconcile provider operation IDs and charge totals with intended effects;
a local unique row can hide duplicate remote charges
Mitigation PLANNED RES-07: local deduplication plus stable downstream operation key
and recovery for charge-success/local-commit-failure; CT-02/EV-07 required
Fallback reconcile unknown outcomes before retry/refund; assigned operator/runbook
Status OPEN — planned mitigation is not verified protection
Acceptance residual exposure/authority pending; preserve prior authorized work
RISK-05 The V42 migration locks orders for longer than the deploy window
Impact MEDIUM failed requests during deploy
Probability UNKNOWN until target engine/version, lock contention and long transactions
are checked; a no-rewrite operation can still wait for an exclusive lock
Detection observe lock waits and application errors during the actual DDL;
deploy timeout alone does not prove server-side cancellation
Mitigation PLANNED: bounded lock acquisition, representative concurrent-load test,
confirmed cancellation/transaction cleanup and compatible rollout
Fallback abort before acquisition where possible; verify DB state after failure.
Retain an additive column during app rollback; dropping it can lose new data
Acceptance pending required evidence and applicable deployment authority
Close with the material open risks, control evidence and exact actions blocked by missing
controls/authority. Counts may help navigation but are not a readiness score; continue
independent authorized work and mitigation development.
1---2name: feature-risk-analysis3description: Naming what could go wrong with a specific feature in a form that can be acted on: the failure stated as an event rather than a worry, how anyone would find out it happened, what reduces its probability or its cost, and what is done if it happens anyway. Use before implementation on anything touching data, integrations, concurrency or a released contract, when a plan has a risk section containing only adjectives, when a HIGH risk has no detection signal, when a migration or a breaking change is about to ship, or when a review asks what happens if this fails and there is no answer. Does not catalogue distributed failure modes in general (distributed-failure-catalogue, failure-models), does not decide whether a deliberate shortcut is acceptable (technical-debt-decisions), and does not design the resilience mechanism (timeouts-and-deadlines, retries-and-backoff, circuit-breakers, concurrency-limiting-and-bulkheads).4---56# Feature Risk Analysis78## Purpose910A risk section is worth writing only if something changes because of it. Most do not: they list11"performance", "data integrity" and "scope", rate everything medium, and are read once.1213**Detection** explains how anyone discovers the event; **fallback** states what can be done14afterward. Missing detection or recovery is itself important risk evidence. Keep the row and15its unresolved controls visible instead of discarding it as a worry.1617## Workflow18191. **Derive candidates from the artefacts, not from a list of adjectives.** Every boundary20 crossing in the impact map, every standing assumption in the ledger, every decision taken21 without an answer, and every resource touching data or an integration is a candidate.22 `references/risk-register.md` gives the derivation table, the precise definition of each23 field, and the revisit procedure for the completion review.242. **State each as an event**: something that happens, at a time, with a consequence. "The25 migration is slow" is not one; "the migration holds a lock on `orders` long enough to time out26 requests" is.273. **Rate impact and likelihood** against a stated deployment/operation window and exposure.28 Use HIGH, MEDIUM or LOW with evidence, or UNKNOWN when evidence is insufficient; distinguish29 inherent risk from residual risk after controls actually verified.304. **Write the detection.** What signal, seen by whom, how long after. If the honest answer is31 "a customer tells us", write that — it is the finding.325. **Write mitigation and fallback.** Mitigation reduces probability or cost before the fact;33 fallback is what is done after. They are different fields and a register that merges them34 usually has only mitigation.356. **Convert what is actionable into work.** A mitigation that requires code is a resource in36 the plan, not a paragraph in a document.377. **Revisit controls and residual exposure at completion.** Link relevant input revisions,38 `IMP-*`/`ED-*`, mitigating `RES-*` and observed `EV-*`; acceptance is reconsidered when39 premises, implementation, workload or controls change.4041## What to sweep4243Correctness, data (loss, corruption, migration, retention), concurrency, performance,44scalability, reliability and failure handling, security and access, compatibility with existing45callers and stored data, deployment and ordering, migration and rollback, operations and46diagnosis, maintainability.4748Use relevant concerns as a coverage check. Record "none identified in the inspected scope"49or "not assessed" honestly; no need to create empty rows for every category. When no dossier50exists, derive a bounded register from the request and repository evidence.5152## Rating5354| Level | Impact means | Probability means |55| ---------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------- |56| **HIGH** | Severe loss/exposure or outage over the affected population | Expected or repeatedly observed under the stated exposure and controls |57| **MEDIUM** | Material degradation or bounded manual recovery | Credible failure path under the stated operating conditions |58| **LOW** | Limited, bounded harm with demonstrated recovery | Evidence supports infrequency in the stated window; not merely missing incidents |5960Rate impact by consequence, not by embarrassment. Rate probability against **this** system's61history and controls, not against the general frequency of the failure class. One incident62or absent prevention alone does not establish high likelihood; no incidents does not establish63low likelihood. Record confidence, detection gaps and correlated/common-cause failures rather64than multiplying ordinal labels into a probability.6566## Decision rules6768```text69IF a risk has no detection70THEN record it as undetected unless customer discovery is supported; identify a detection71 task or state why detection is infeasible. Do not invent a signal or drop the risk.7273IF a risk is HIGH impact74THEN identify the control/acceptance decision needed before the action that creates exposure.75 Implement mitigations and investigate safely within existing authorization; block only76 dependent exposure when required controls or authority remain unresolved.7778IF the mitigation is work79THEN it is a RES-* with an identifier, and it appears in the execution order.8081IF a risk exists only because an assumption is unconfirmed82THEN seek repository/runtime evidence or a discriminating experiment first; ask only for83 material information that remains unavailable. Confirmation does not remove other failure paths.8485IF a risk is accepted86THEN link existing acceptance evidence, residual consequence, scope, owner and reopening87 trigger; use GAP-* when the feature workflow calls for a bounded accepted gap.8889IF the register is long and everything is MEDIUM90THEN check specificity, duplication and rating evidence. Preserve material undetectable risks;91 register length and rating distribution alone do not prove poor analysis.9293IF a risk cannot be reduced, detected or recovered from94THEN it is a constraint on the design, and it belongs back in the solution phase.95```9697## Constraints9899- **Record risks even when ownership is unresolved.** Separate the control implementer from100 the authority accepting residual exposure. Reuse existing user authorization/delegation and101 applicable policy; risk labels alone do not create a new approval gate. Material exposure102 outside that authority remains pending, even if its likelihood is LOW.103- **Do not restate the general failure modes of a technology.** The register is about this104 feature's use of it, in this system.105- **Do not use the register to relitigate the design.** If the risk kills the option, that is a106 solution-phase finding, not a row.107108## Output109110```text111RISK-02 The dispatch consumer reprocesses an event after a redeploy112 Impact HIGH duplicate outbound charges113 Probability UNKNOWN rate per redeploy not measured; replay/lost-ack path exists114 Detection reconcile provider operation IDs and charge totals with intended effects;115 a local unique row can hide duplicate remote charges116 Mitigation PLANNED RES-07: local deduplication plus stable downstream operation key117 and recovery for charge-success/local-commit-failure; CT-02/EV-07 required118 Fallback reconcile unknown outcomes before retry/refund; assigned operator/runbook119 Status OPEN — planned mitigation is not verified protection120 Acceptance residual exposure/authority pending; preserve prior authorized work121122RISK-05 The V42 migration locks orders for longer than the deploy window123 Impact MEDIUM failed requests during deploy124 Probability UNKNOWN until target engine/version, lock contention and long transactions125 are checked; a no-rewrite operation can still wait for an exclusive lock126 Detection observe lock waits and application errors during the actual DDL;127 deploy timeout alone does not prove server-side cancellation128 Mitigation PLANNED: bounded lock acquisition, representative concurrent-load test,129 confirmed cancellation/transaction cleanup and compatible rollout130 Fallback abort before acquisition where possible; verify DB state after failure.131 Retain an additive column during app rollback; dropping it can lose new data132 Acceptance pending required evidence and applicable deployment authority133```134135Close with the material open risks, control evidence and exact actions blocked by missing136controls/authority. Counts may help navigation but are not a readiness score; continue137independent authorized work and mitigation development.