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 Workflow
Change-impact analysis is the per-PR triage that asks: which pinned requirements does this code change touch, and are the affected tests still passing? It is the daily-cadence analog of the re-conformity workflow — same machinery, run on every PR rather than on every amendment. It is also the workflow that catches the most common pre-MVP failure mode in safety-critical robotics: a routine refactor that quietly invalidates an assumption a tested-against-once safety requirement relied on.What change-impact analysis does
On every PR, the GitHub App:- Computes the file diff.
- Maps changed files to the modules they implement.
- For each module, looks up the requirements whose
acceptancetests exercise that module. - Posts a Check Run summarising the impact.
Setup
The change-impact analysis runs automatically once the GitHub App is installed and@confirms annotations are in place. No additional configuration required.
Optional configuration in roboticks/config.yaml:
block_merge_on_unexpected_impact is the strict mode: any PR that touches a requirement-related module without an explicit triage acknowledgment fails the Check Run. Recommended once the team is comfortable with the workflow; not recommended on day one (initial false-positive volume can be frustrating).
How modules map to requirements
The mapping comes from two sources:- Test execution coverage — when a test runs, Roboticks records which source files it loaded and executed. The requirements that test confirms are now known to depend on those files.
-
Explicit annotation — requirements can declare a
realised_bylist of module paths:
Per-PR triage flow
Three outcomes need human handling:| Outcome | Action |
|---|---|
| Regression — a previously-passing test now fails | Fix the code. If the requirement’s intended behaviour has legitimately changed, update the requirement and the test together (substantial modification — record the reason). |
| Unexpected impact — the PR touched a requirement-related module but did not change the requirement-confirming test outcomes | Triage: was the impact intentional? Acknowledge with a comment on the PR; the platform records the acknowledgment. |
| Gap opened — a code change made a previously-covered requirement uncovered (e.g., deleted a test) | Either restore coverage or document an acknowledged gap. Acknowledged gaps require documented rationale and surface in the posture dashboard. |
Safety-impact escalation
For requirements typedsafety (and any other types you configure), the workflow can escalate beyond the Check Run:
- Slack message to a configured channel.
- Required reviewer added to the PR (e.g., the safety engineer).
- Block-on-regression for safety requirements specifically, even if other requirement types are non-blocking.
notify_on_safety_impact and triage_required_for_severity in roboticks/config.yaml.
Integration into code review
The change-impact output is the third leg of the code-review stool, alongside the diff itself and any test results:| Element | What the reviewer learns |
|---|---|
| Diff | What changed |
| Test results | Whether the change broke anything we already test |
| Change-impact | Which previously-defined requirements this change touches — even if all tests still pass |
Triage hygiene
A few habits make change-impact reviews sustainable:- Keep requirement-to-module mappings up to date. When you move a file, update the
realised_by. The execution-coverage backstop catches misses, but explicit annotation is faster. - Acknowledge unexpected impacts promptly. A growing backlog of un-acknowledged impacts degrades the signal-to-noise.
- Don’t paper over regressions. Acknowledging a failing safety test as “acknowledged gap” should be a deliberate decision with sign-off, not a routine action.
- Use the LLM-suggested derivations and triages cautiously. Useful as a draft; the human is the authority.
Worked example
A PR refactors the encoder-reading function. The diff touchessrc/drivers/encoder.cpp and src/drivers/encoder.hpp.
- Roboticks identifies 4 requirements whose
realised_byor execution-coverage includes these files: REQ-014 (protective stop), REQ-021 (encoder sanity), REQ-032 (safe-state on power loss), REQ-041 (PFL upper-arm). - Roboticks runs the 11 tests across the 4 requirements.
- REQ-021’s
test_encoder_overflow_handlingfails — the refactor moved overflow detection one stack frame deeper and lost a microsecond on the response time. - Check Run reports the regression.
- PR author identifies the cause, restores the overflow handler in the original location, pushes again.
- Re-run: 11/11 pass. Check Run goes green. PR merges.
main and surfaced (or not) on the next nightly run, by which time the original author may have moved on to another task.
Next steps
Traceability audit prep
Pre-audit checklist that catches what change-impact missed.
GitHub Check Runs
The mechanics of the Check Run integration.
Re-conformity workflow
The standards-amendment analog of this PR-time workflow.