Check reference
Remove cycles from requirement dependency links
A requirement should not depend on itself through a chain of parent relationships. circular_deps_clean reports cycles so the intended direction of responsibility can be restored.
What the check observes
The workflow runs the requirement gap analyzer's cycle analysis over the satisfies subgraph and reports the detected chains. The check concerns relationships in the specification graph. It does not diagnose ordinary runtime loops, recursive functions, or service call cycles. Read the reported path to see which requirement references close the loop before deciding which relationship is wrong.
Example: two split requirements became each other's parent
Illustrative case. A broad rule was split into A and B. During the edit each was marked as satisfying the other, obscuring the actual higher-level promise. The repair is to recover the intended hierarchy, not to remove whichever edge is easiest.
Incorrect relationship:
SYS-REQ-042 → SYS-REQ-073 → SYS-REQ-042
Possible reviewed hierarchy:
SYS-REQ-042 satisfies STK-REQ-007
SYS-REQ-073 satisfies STK-REQ-007
The right shape depends on what each requirement actually promises.Resolve the finding
- Read every requirement in the reported cycle and identify the intended parent or prerequisite for each.
- Distinguish a decomposition relationship from a cross-reference or a shared interface concern. Use the appropriate relationship rather than reciprocal parent links.
- Correct the mistaken edge, then review affected children and evidence. Preserve legitimate dependencies instead of flattening the graph merely to eliminate the cycle.
Run and interpret
proof audit --check circular_deps_clean --verboseThis is a specification-stage error check. The detailed gap report can help inspect the chain; a focused result covers the analyzed requirement graph under the current project configuration.
An acyclic graph can still have the wrong parents, missing links, inconsistent requirements, or invalid assumptions. Cycle detection provides one structural invariant, not proof that the hierarchy correctly models the system. Do not infer runtime correctness or complete trace coverage from an empty cycle list.
Continue from here
Inspect the dependency shape. Review conflicting promises.
Bring a cyclic requirement chain and the change that introduced it. Bring a change to Proof.