Skip to content

Checks and acceptance criteria ​

Besides the AI review, CodeLotse can run two kinds of checks on a pull request: deterministic scanners that find known patterns, and a check of the acceptance criteria of the issue the pull request links. Both appear in the review and on the Checks tab of the repository, together with CI failure analyses.

The Checks tab of acme/api with scanner runs, acceptance criteria checks and CI failure analyses

Deterministic checks ​

Deterministic checks run proven scanners in the sandbox once per review, next to the AI review:

ScannerFinds
ast-grepPatterns from the CodeLotse rule pack
gitleaksSecrets such as keys and tokens in the change
banditSecurity problems in Python
gosecSecurity problems in Go
ruffProblems in Python
eslint-securitySecurity problems in JavaScript and TypeScript (ESLint with eslint-plugin-security)

Findings on changed lines join the review with the badge "deterministic" and the tool name, and the summary gets its own section. They are not checked by a model, so they are reported the same way every time. On GitHub the results can also be uploaded to code scanning as SARIF.

Turn them on ​

An administrator or maintainer sets Deterministic checks in the repository policy:

SettingDefaultMeaning
Deterministic checks modeOffShadow stores the findings on the Checks tab only. On adds them to the review.
ScannersAll sixWhich scanners run.
Own scannersNoneScanners the instance administrator added to the sandbox.
Minimum scanner severityLowFindings below it are dropped.
Context lines around a finding3Lines of code kept around each finding.
Maximum findings per run50Further findings are cut off.
Upload results to GitHub code scanningOffNeeds the Code scanning alerts: write permission of the GitHub App; the policy names it when it is missing.

A repository can skip scanners or paths in .quavon/config.yml under tools.sast (Repository configuration). Deterministic checks need a sandbox runner; without one, runs are skipped.

See the results ​

Checks › Deterministic checks lists every scanner run with the pull request, its Status (Completed, Partial, Skipped or Failed), the Scanners, the number of Findings and how many are in the diff, and whether it was Uploaded to code scanning. Select a run to see each finding with its scanner, rule, path, severity, message and whether it is In the diff.

A scanner run of a pull request in acme/api with its findings, their rule, path, severity and whether they are in the diff

Acceptance criteria ​

The acceptance criteria check compares a pull request with the acceptance criteria of the issues it links and reports each criterion as Met, Unmet or Unclear, with evidence from the diff. It never blocks a merge.

Up to three issues of the same repository are linked from:

  • closing references the code host knows, and keywords in the description such as Closes #12, Fixes #12 or Resolves #12;
  • a branch name that starts with the issue number and a dash, such as 12-billing-endpoint, or ends with a dash and the number.

With a tracker connected, tracker issues are linked as well: a key such as ABC-123 in the pull request title or branch name (Jira, Linear), or AB#123 in the title or description (Azure Boards).

Where criteria come from ​

  1. A section of the issue titled "Acceptance criteria", "Definition of done", "AC" or "Akzeptanzkriterien", a checklist, or Given/When/Then scenarios.
  2. A field of the tracker issue, when the tracker connection names one.
  3. When the issue has none and Infer criteria when the issue has none is on, CodeLotse derives criteria from the issue text and marks them as inferred.

Turn it on ​

Set Acceptance criteria in the repository policy:

SettingDefaultMeaning
Acceptance criteria modeShadowShadow shows results on the Checks tab only. On adds them to the review summary and the status on the head commit.
Infer criteria when the issue has noneOnSee above.
Maximum criteria per issue15Further criteria are ignored.
Report a check runOnShows the result in the status on the head commit.

The check runs with every review of a pull request that links an issue with criteria. It works on GitHub and GitLab, and through tracker links on other code hosts (feature parity).

See the results ​

Checks › Acceptance criteria lists each check as "Pull request #… for issue #…" (or the tracker key) with the counts "Met, unmet, unclear". Open criteria make the review state "Worth a look: acceptance criteria to check" even when there are no findings.

CI failure analyses ​

When a check of a pull request fails, CodeLotse can explain why. The results are under Checks › CI failure analyses. See CI failure analysis.

The open core is released under the Apache License 2.0.