Documentation Index
Fetch the complete documentation index at: https://docs.roboticks.io/llms.txt
Use this file to discover all available pages before exploring further.
Change-Impact Analysis
Change-impact analysis is the layer that answers “which requirements does this PR touch?”. It runs on every PR, drives the affected-requirements table in the Check Run summary, and is the early-warning system for a regression before the failing test even runs.Change-impact runs before the test job dispatches. The Check Run starts populated with the affected-requirements table while the runner is still spinning up — reviewers don’t have to wait for the full run to start triaging risk.
How it works
Three deterministic steps:- File → Test — for each changed file, find every test that imports it (Python
importgraph, C++#includegraph, plus ROS2 package dependencies frompackage.xml). - Test → Requirement — for each affected test, look up its
RequirementLinkrows (the@confirmsand manual links). - Affected requirement set — the union of requirements reachable via the above.
- LLM-inferred extra links (opt-in) — for files that don’t have direct test coverage, ask Claude to suggest which requirements they could plausibly affect, based on the diff and the requirement texts. Every suggestion is flagged
confidence: <0..1>and is never silently added to coverage — it’s surfaced in the Check Run as a “possibly affected, please review” section.
In the Check Run
The affected-requirements table is the heart of the Check Run summary:@confirms or manual link backing it. The bottom table is inference — it exists to prompt a reviewer to either add a confirming test or add a manual link, not to count as coverage.
See Check Runs for the full Check Run anatomy.
What “affected” means
A requirement is affected by a PR if:- A test that
@confirmsit imports a file that the PR changes (direct). - Or any test in the transitive import closure of changed files confirms it (transitive).
- Or — opt-in — the LLM judges that the diff plausibly affects it (LLM-inferred, flagged).
When LLM-inference helps
LLM-inferred links are useful when:- Your repo has legacy code that pre-dates
@confirmsadoption. The graph traversal misses it; the LLM can point at plausible requirements based on file content. - The PR changes a file that is currently not covered by any test. The deterministic path returns nothing; the LLM points at requirements the file might be relevant to, so a reviewer knows to write a test before merge.
- The PR introduces a new safety-critical module with tests not yet linked. The LLM identifies the requirement family it likely belongs to.
source: llm recorded in the audit trail. The accepted link now counts toward coverage on subsequent runs.
When LLM-inference is wrong
Often enough that you should never let it auto-merge. Common failure modes:- Surface-similar wording. A diff that mentions “velocity” might be linked to a velocity-related requirement that has nothing to do with the change.
- Refactor-only diffs. Pure renames or formatter passes get flagged as touching everything; the heuristic doesn’t always strip these out.
- Over-broad parent requirements. “AMR operates safely” matches almost everything.
Opt-in and config
LLM-inference is on by default for paid tiers, off for Free tier. Toggle in Settings → Project → Change-impact. You can also set:| Setting | Default | Effect |
|---|---|---|
min_confidence | 0.5 | Suggestions below this threshold are dropped silently. |
max_suggestions | 10 | Cap on suggestions per PR — keep the Check Run readable. |
include_parents | false | Whether to include rollup parents of directly-affected requirements in the table. |
inference_scope | all | all, safety-only, or tagged:critical — restrict inference to a subset. |
inference_scope: safety-only and min_confidence: 0.7 — the suggestions are sparser but more trustworthy.
Impact on the test job
Change-impact does not prune the test run. We still run the full configured test suite on every PR — pruning is risky in a verification context and the time saved isn’t worth the chance of missing a regression in an unflagged-affected test. What change-impact does prune is the Check Run summary — only affected requirements show in the table, with the rest available behind a “show all” toggle. This keeps reviewer attention on the things that actually moved.Re-running change-impact
When you push a new commit to the PR, change-impact re-runs against the new diff. The summary updates in place. The full history is in the run log. To re-run change-impact alone (without re-running tests):Audit trail
Change-impact reports are appended to the PR’s audit record. The evidence pack for the release that includes the PR records:- The diff that triggered change-impact.
- The affected-requirement set (deterministic).
- The LLM-inferred set, if any, and whether any suggestions were accepted.
Next
Check Runs
Where the affected-requirements table lands.
Coverage
How states transition when an affected requirement fails.
Gaps
Closing the gaps that change-impact surfaces.
Multi-repo
Affected-requirement detection across repos.