Code Assurance

Six lenses on any code,including code you did not write.

Code Assurance examines a codebase or a pull request through six lenses and records every finding with its severity, its evidence and a way to fix it.

Six lenses

One review, six specialisms.

Each lens looks for something different, and each finding says which lens raised it.

  1. 01

    Security

    Vulnerabilities and unsafe data handling.

  2. 02

    Quality

    Maintainability and engineering hygiene.

  3. 03

    Code review

    What a senior reviewer would raise on the pull request.

  4. 04

    Completeness

    Requirements without the code to meet them.

  5. 05

    Bug hunting

    Defects waiting to happen.

  6. 06

    Pattern risk

    Risky patterns repeated across the codebase.

The report

A risk picture you can act on.

Every review ends in a report: raw and actionable risk, a severity breakdown, confirmed findings, and what the review could not cover. Filter by severity, lens or confidence, and turn findings into work in one step.

  • Severity, confidence and category on every finding
  • Coverage stated, including what was not reviewed
  • Findings become bugs or stories in one step
Assurance report for branch feature/payment-initiation linked to Story 3, status Finished. A summary panel reads Review complete, 8 findings, raw risk 43, actionable risk 40, rated Red, 5 actionable of 8 total, with 3 Critical, 2 High and 3 Low, and a review coverage note of 2 areas not covered. Filters for severity, lens, confidence and category sit above a list of Security findings: three Critical findings on authentication, tenant isolation and business logic, each suppressed until Nov 27, 2026, and High findings including full IBANs being logged.
A finished Code Assurance review of a payments branch, with raw and actionable risk scores, a severity breakdown and confirmed findings, some suppressed until a set date.
Expanded finding card tagged Security, HIGH, Confirmed and Data protection, titled Full IBANs, customer names and remittance text are logged, at PaymentService.java line 61. Sections for Description, Impact, Exploit Scenario, the Java log.info statement that writes debtor and creditor IBANs and names, How to Fix in two steps, and a green Fix Example that wraps the values in PiiMasker.maskName and PiiMasker.maskIban. Buttons to create a bug or hide the finding sit at the bottom.
An expanded High-severity security finding showing the description, impact, exploit scenario, the offending log statement and a masked fix example.

Findings with evidence

Not a warning. A case.

Each finding sets out what is wrong, why it matters, how it could be exploited, the exact line, and a worked fix. It is something an engineer can act on and an auditor can follow.

Dispositions

Every finding ends one of three ways.

Your merge policy can refuse a merge while any finding at or above a severity has no disposition.

  • Fixed

    The finding is gone from the head commit, and the next review confirms it.

  • Raised as work

    It becomes a tracked work item with an owner, linked back to the finding.

  • Suppressed

    Set aside under a stated reason and an expiry date, on the record. Hiding a finding from view is not a disposition.

Where it runs

On the change, and on everything else.

  • On every pull request

    Run on the head commit of a Brunelly pull request, so the evidence matches exactly what would merge.

  • On code you did not write

    Run on software your teams, your suppliers or another tool produced, to see what you have inherited.

  • Required at merge

    Your merge policy can require Code Assurance to be present and current at the exact commit.

Get started

Make software engineering repeatable.

Every engagement starts with a scoped pilot on one problem that matters, measured against how your team works today.