LydianAI Open-source tooling

← All docs

Assurance-as-Code

Suspect propagation and impact analysis

How Assurance-as-Code flags downstream artefacts when a released item changes, and how to clear a suspect state.


Suspect propagation and impact analysis

When a released artefact changes, every downstream artefact that depended on it must be independently re-checked. Suspect propagation is the mechanism that flags those downstream items automatically — a signal that human review is required, not a validation error.

An artefact with an unresolved suspect state cannot appear in a released baseline.


When suspects are created

Suspect propagation is triggered when any of the following happen to an artefact that is released or part of an approved or released baseline:

TriggerDescription
artefact.revisedContent of a released artefact changes
artefact.status_changedA released artefact is obsoleted
relationship.deletedA relationship that provided traceability is removed

Changes to draft or reviewed artefacts do not create suspects — they may create validation issues, but not suspect states. The point of suspect propagation is to protect artefacts that have already been formally released.


Which relationships propagate suspects

Not every relationship type propagates. Only relationships that imply a downstream dependency — “if the upstream changes, I might need to change too” — are eligible.

Propagation-eligible types:

TypeMeaning
allocates_toIf the requirement changes, the component allocation may be invalid
satisfiesIf the source requirement changes, the satisfying artefact may need revision
derives_fromIf the parent requirement changes, the derived requirement may be invalid
implementsIf the requirement or design changes, the implementation may be invalid
verifiesIf the verified artefact changes, the verification result may be invalid
produces_result_forIf the test case changes, the test result is suspect
depends_onIf the depended-on component changes, the dependent component may be affected
constrainsIf the constraint changes, the constrained component is suspect
protectsIf the fault scope changes, the safeguard may be insufficient
assumesIf the assumption context changes, the downstream is suspect

Informational types that do not propagate: references, interacts_via, guarantees, mitigates, traces_to. These are reviewed case-by-case rather than automatically.


The propagation algorithm

Suspect propagation runs as a breadth-first traversal of the propagation graph starting from the trigger artefact. For each downstream artefact reached, the tool creates a SuspectState record with the trigger, the propagation depth, and the path from the trigger to the suspect.


Clearing a suspect state

A suspect must be cleared by a human decision — implicitly or explicitly. There are three clearing methods:

MethodMeaningWho can apply it
reviewed_and_acceptedHuman review confirmed the suspect artefact remains valid despite the upstream changeAny authorized project member
re_verifiedA new verification run produced a passing result after the upstream changeQuality Engineer or User
not_applicableThe upstream change does not affect this artefact’s scope; rationale providedProject Lead

Clearing a suspect state requires:


Automatic clearing

The tool clears a suspect automatically when:

  1. A new revision of the suspect artefact is created after the trigger revision — the author has implicitly reviewed the upstream change by producing new content.
  2. The trigger artefact is rolled back by an admin to its pre-change revision.
  3. The suspect artefact is soft-deleted (obsolete). A deleted artefact cannot remain suspect.

Automatic clearing is recorded with clearing_method = "system_auto" and cleared_by = "system".


Cascade clearing (or lack of it)

Clearing a suspect does not cascade to downstream suspects that were propagated from the same trigger through the now-cleared artefact. Each artefact’s suspect state must be independently reviewed and cleared.

The reason is deliberate: the downstream artefact may have additional reasons to be suspect, or the reviewer of that artefact may reach a different determination than the upstream reviewer.


Impact analysis

Impact analysis is a user-initiated, on-demand analysis of the potential scope of impact — before a change is made. It uses the same propagation graph as suspect propagation, but does not create any suspect states.

curl -X POST http://localhost/api/v1/projects/<project-id>/impact \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-token>" \
  -d '{"artefact_id": "<artefact-id>"}'

The result categorizes affected artefacts by:

Impact analysis also lists artefacts that are affected through non-propagating relationships, marked as affected_informational, so reviewers see the full picture even though those relationships wouldn’t auto-flag suspects.


Interaction with the release gate