Requirement Hierarchy
Real systems have requirements that decompose. “The AMR shall operate safely in shared spaces” is the system-level statement; underneath it sit a dozen subsystem requirements, and underneath each of those, the testable component statements. Roboticks models this as a tree via theparent_id field, and rolls coverage up the tree automatically.
The tree
Each requirement points at its parent withparent_id. The root nodes have parent_id unset. A requirement can have any number of children; it has at most one parent.
Declaring hierarchy in inline YAML
Declaring hierarchy in ReqIF
ReqIF imports use the<SPEC-HIERARCHY> element. Polarion, Jama, codeBeamer, and DOORS all emit it; Roboticks reads it directly without any extra mapping. See ReqIF for the field tables.
Constraints
| Rule | Why |
|---|---|
| A parent must exist in the same project | We won’t link across projects; copy or factor first. |
| No cycles | The hierarchy is a tree, not a graph. A cycle is a modelling error and is rejected on import. |
| At most one parent per requirement | Multi-parent makes rollup ambiguous. If a requirement satisfies two parents, the second relationship is an inter-requirement link, not a parent (see ReqIF link semantics). |
Children inherit type from the parent only if unset | The default is conservative — children stay functional unless explicitly marked safety. |
Coverage rollup
The coverage state of a parent is computed from its descendants:| All descendants are… | Parent is… |
|---|---|
confirmed (or have only verification methods other than test) | confirmed |
At least one gap | gap |
At least one regression | regression |
Mixed confirmed + unconfirmed, no failures | partial |
| Any failing | partial |
SUB-010 rolls up to partial because REQ-015 has no confirming test. Once a confirming test is added, SUB-010 becomes confirmed.
Verification methods other than test
Real audits accept four verification methods —test, inspection, analysis, demonstration. Roboticks confirms test; the others are recorded for the audit trail and excluded from the rollup denominator. So if a leaf requirement has verification_method: inspection, its parent’s rollup ignores it. This is the auditor-friendly behaviour: don’t penalise the test-coverage signal for requirements that were never going to be test-verified.
The matrix view
The traceability matrix (see Matrix) supports two display modes:- Flat — one row per requirement, indented by depth. Best for filtering and sorting.
- Tree — collapsible groups. Best for exploring decomposition.
partial is a hint to expand and find the weak descendant.
Walking the tree from the SDK
descendants() is a generator that walks the tree breadth-first. Use it in custom dashboards or release scripts that need to assert “every descendant of SYS-001 is confirmed before we ship”.
Aggregated coverage across projects
A single Roboticks project can host multiple top-level (root) requirements — e.g. one root per subsystem owned by a different team. The rollup is computed per root. The dashboard summary shows the count of confirmed / partial / gap per root, plus an aggregated percentage across all roots. For multi-project rollups (across organisational scope), use the org-level Compliance dashboard — see Compliance overview.Editing the tree
Three kinds of edit:- Add a child — appears under the parent immediately. Rollup recomputes on the next coverage update.
- Change a
parent_id— the requirement moves in the tree. Both the old and new parents get a rollup recomputation. The audit trail records both ends of the move. - Delete a node with children — rejected. Re-parent the children first, then delete. This prevents accidental orphan-trees.
Next
Snapshotting
What the tree looks like at release time.
Coverage
The state machine in detail.
Matrix
Flat vs tree display modes.
Multi-repo projects
Rollup across many repos in one project.