Gap Analysis
Agap 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 stategap, sorted by:
- Priority (
criticalfirst). - ASIL / PL / SIL (
ASIL-D/PLd/SIL-3first). - Standard (requirements derived from pinned standards first).
- Recency (newest gaps first — so a freshly-added safety requirement doesn’t get buried under legacy backlog).
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.
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.
How the suggestion is grounded
The LLM call is grounded on:- The full requirement text and any
derives_fromparent 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.
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
gap → unconfirmed → confirmed 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 withverification_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.