Skip to main content

Gap Analysis

A gap is a requirement that no test currently confirms. It’s the most actionable coverage state — every gap is a piece of work you can hand to an engineer with a clear definition of done.
Gap closure is the measurable progress signal. Coverage percentage at the org level moves up only as gaps close. Treat the gap list as a backlog with priority and ownership.

The gap dashboard

Traceability → Gaps. The default view lists every requirement currently in state gap, sorted by:
  1. Priority (critical first).
  2. ASIL / PL / SIL (ASIL-D / PLd / SIL-3 first).
  3. Standard (requirements derived from pinned standards first).
  4. Recency (newest gaps first — so a freshly-added safety requirement doesn’t get buried under legacy backlog).
Each row shows the requirement ID, title, type, ASIL, source, and external_id. Clicking opens the requirement detail with a Suggested tests panel. [Screenshot needed: gap dashboard with sorted list and one row expanded showing suggested tests]

Filters

The dashboard inherits filters from the matrix:
  • Standard — show only gaps tied to a specific standard (e.g. “every ISO 10218 §5.3 gap”).
  • Repository — for multi-repo projects, scope to one repo’s gaps.
  • Tag — your custom labels.
  • Source — gap requirements that came from a PDF extraction may need different handling than those manually authored.
Save a filter as a view and link the URL in your team’s standing meeting agenda.

AI-suggested test skeletons

For each gap, Roboticks can generate a pytest (or gtest) skeleton via Bedrock Claude that proposes:
  • A test_* function name and signature.
  • The fixtures it would need (robot, world, clock).
  • A docstring summarising what the test must demonstrate.
  • An assertion stub tied to the requirement’s measurable criteria (when the requirement text expresses them concretely).
  • A @confirms(...) decorator already wired up.
Trigger from the dashboard with Suggest test on the requirement row, or from the SDK:
Sample output:
The suggestion is a starting point, not a finished test. The engineer reviews, tightens the fixtures, fills in any missing world setup, and commits — same as code review on any other PR. The suggestion is never silently inserted into the repo.

How the suggestion is grounded

The LLM call is grounded on:
  • The full requirement text and any derives_from parent text.
  • The repo’s existing test files (so the style matches — pytest fixtures vs gtest, your project’s helper imports, your robot.* API).
  • The pinned standard’s clause text (so safety-derived requirements get safety-style assertions).
  • A representative slice of the SDK reference for @confirms, @deadline, fault-injection helpers.
The prompt is bounded — we don’t ship the entire repo or the entire standard. The suggestion includes a confidence field; low-confidence suggestions are flagged amber.

Closing a gap

Workflow:
1

Pick a gap from the list

Filter to your team’s scope. Sort by priority. Take the top one.
2

Generate or write the test

Either accept the AI-suggested skeleton or write from scratch.
3

Open a PR

Same as any other code change. The PR Check Run will show the requirement moving from gapunconfirmedconfirmed on first successful run.
4

Merge

On merge to the default branch, the requirement’s coverage state stays confirmed. The audit trail records the closure event with the merging PR.

Gap aging

Each gap shows an age — days since the requirement was created. The dashboard sorts by age within priority groups so old gaps surface ahead of new ones at the same priority. For projects subject to a regulation date — e.g. EU MR 2027 — set a target date on the project (Settings → Project → Compliance target). Gaps with age that pushes them past the target are flagged red in the dashboard.

Bulk operations

Gaps in inspection / analysis / demonstration requirements

Requirements with verification_method != test are excluded from the gap list. They will never be confirmed by Roboticks — they’re verified out of band — so listing them as gaps would be noise. To track inspection requirements separately, use a saved view in the matrix filtered by verification_method: inspection. Sign-off is via a manual link in the dashboard with a reference to the inspection report.

Common gap-closure pitfalls

Next

Matrix

Filter to gap mode there too.

Coverage

The state machine driving the gap list.

SDK @confirms

The decorator the closed-gap test will need.

Writing tests

Patterns for fault injection, deadlines, MCAP capture.