Skip to main content

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.
Roboticks is audit-readiness tooling, not a certified toolchain. We assemble the evidence your notified body, certification body, or QA process ingests. We do not replace tool qualification (DO-178C, ISO 26262-8 TCL) and we do not issue conformity assessments. Verify the regulatory interpretations on this page against the standard text and your accredited assessor.

What change-impact analysis does

On every PR, the GitHub App:
  1. Computes the file diff.
  2. Maps changed files to the modules they implement.
  3. For each module, looks up the requirements whose acceptance tests exercise that module.
  4. Posts a Check Run summarising the impact.
The Check Run output:
Or, when a regression has been introduced:
The Check Run is non-blocking by default; configure it to be required for merge in GitHub Branch Protection if you want hard enforcement.

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:
  1. 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.
  2. Explicit annotation — requirements can declare a realised_by list of module paths:
The platform combines both — the explicit annotation acts as a forced inclusion even for code paths not yet exercised by tests; the execution-coverage tracking catches modules the annotation missed.

Per-PR triage flow

Three outcomes need human handling:

Safety-impact escalation

For requirements typed safety (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.
Configure via 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: The third leg is the one that catches “I changed the encoder driver and somehow PFL force limits regressed” before it reaches production. Without it, the reviewer is checking what the author thought to test; with it, the platform is checking what the requirement set says matters.

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 touches src/drivers/encoder.cpp and src/drivers/encoder.hpp.
  • Roboticks identifies 4 requirements whose realised_by or 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_handling fails — 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.
Without change-impact, the regression would have landed on 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.