HARA / ALM
- Stores a document of failure modes
- Pass the worksheet opens
Topic · Hazard analysis
Proof walks each requirement against an obligation catalog. Every class the reviewer considered gets ACCEPT, SUPPRESS, DEFER, or DRAFT. The next audit fails if one of those exits silently.
proof audit --check obligation_baseline
Jama, Polarion, and codeBeamer store the worksheet. Ansys medini authors a HARA. Neither re-reads the Go you ship.
01 · The distinction
Hazard analysis in Proof is not a spreadsheet of failure modes. It is a pass over requirements after the spec lints are clean, before coverage spends evidence on classes nobody consulted the catalog about.
The catalog ships classes such as csrf_protection, recursion_depth_bounded, redos_resistant. The toolchain does not propose them. The reviewer reads proof catalog list and proof catalog show, then records one of four equal decisions.
ACCEPT adds the class to obligation_checklist. Coverage later has to evidence it. SUPPRESS needs a rationale of 32 characters or more that names why the class does not apply. DEFER opens a KnownIssue. DRAFT authors a project-local class when the shipped catalog has no row for the hazard.
proof audit --check obligation_baseline proof audit --check code_signal_obligations_reviewed
Those two checks are the tie to the code. obligation_baseline fails if a catalog candidate left the pass with no decision. code_signal_obligations_reviewed fails if the analyzer inferred a class from the implementation and nobody ACCEPT/SUPPRESS/DEFER'd it.
02 · The exhibit
Drawn from the hazard-analysis help page. A system requirement: the user shall share one WebSocket across browser tabs.
HARA / ALM
The code
The worksheet does not re-read Go.
Not tiedWorksheet
Still a document. Silence is allowed.
OpensProof
Same hazard pass. Two artefacts. Click the tabs.
| Catalog class | Why it came up | Decision |
|---|---|---|
concurrent_invariant_preserved |
Tabs read and write the same socket. | ACCEPT |
compound_operation_atomic |
Connect-and-subscribe is one logical act. | ACCEPT |
redos_resistant |
The shall does not parse untrusted text. | SUPPRESS |
cache_version_coherent |
The socket is the source of truth, not a cache. | SUPPRESS |
shared_connection_back_pressure_bounded |
Per-tab back-pressure. No shipped class. | DRAFT |
SUPPRESS on redos_resistant is not a skip. The rationale has to name the concrete reason: framed binary payloads with a fixed schema, no untrusted strings. Shorter than 32 characters fails the audit. Silence fails it too.
DRAFT is the fourth equal decision, not a fallback. The project class is authored, then attached:
proof catalog new shared_connection_back_pressure_bounded --category domain --domain concurrency proof req edit SYS-REQ-001 --add-obligation shared_connection_back_pressure_bounded
Each decision lands on the requirement as obligation_checklist, obligation_suppressions, or a hazard_review block pinned to reviewed_against_catalog_version. The next reviewer can re-derive why each class is where it is. A catalog bump without a fresh review fails hazard_review_current.
| Job | HARA / ALM worksheet | Proof |
|---|---|---|
| Author the hazard worksheet | Yes. Jama, Polarion, medini. | No. Not a HARA editor. |
| Record a class on the requirement | A link a human asserted. | ACCEPT, SUPPRESS, DEFER, or DRAFT. |
| Fail CI if a considered class exits silent | No. The document still opens. | obligation_baseline |
| Tie the class to the code that ships | A matrix row, until someone edits it. | Coverage, or a code-signal review. |
03 · The honest loss
Jama still wins at programme authoring. Ansys medini still authors the ISO 26262 worksheet. ReliaSoft still owns the FMEA form. Proof will not draw a GSN tree.
The catalog is a list of recurring software hazards, not a complete hazard identification method. STPA unsafe-control-action tables and IEC 61508 HARA remain the method documents. We do not replace them.
The toolchain does not invent classes. If the reviewer never opens the catalog, the pass is empty and the checks stay red. A green obligation_baseline means every considered class got a decision. It does not mean every hazard that exists was considered.
IBM DOORS sits on the Jama compare, not a twin. Traceability of shalls to code is the matrix page. The shalls themselves are FRETish.