Get Started
Reference

Concepts and glossary

Short definitions for campaigns, slices, findings, and the rest

Audit structure

TermMeaning
ProjectOne repo in one org. Both Security and Bugs live here, and so do the findings.
Audit profilesecurity or bugs. Owns methodology versions and campaigns.
MethodologyAn immutable config version: buckets, passes, scopes, prompt sections.
CampaignOne audit of a branch and commit, pinned to one profile and one methodology version.
SliceThe smallest job: one pass × one bucket × one model. Pending, running, completed, or failed. failed is retryable: invalid runner output does not count as coverage.
LeaseA time-boxed claim on a slice. If it expires, the slice goes back on the queue. First valid accepted result wins.
ReportOne observation parsed out of a model's stdout.

Finding identity

TermMeaning
FindingThe de-duplicated issue the team triages. Project-wide, not per campaign or branch.
FingerprintA stable hash of the scrubbed report. Used to recognize the same issue again.
AliasAnother fingerprint that was judged to be the same finding (wording drifted, files renamed).
Sighting"We saw this finding in this campaign, on this branch, at this commit." Comparisons use sightings.
KeeperThe finding that stays after a merge.
Soft mergeThe losing finding is pointed at the keeper, not deleted.

A finding can show up in both profiles and on several branches. It still has one triage status. bucket_id is first-discovery provenance, not a merge boundary. Equivalent reports from different models or buckets can merge. A compound report that covers two or more existing findings (same files, broader root-cause text) is attached to those findings instead of creating a combined one, and those parts are recorded as distinct so a later pass does not fold them back together. Related pairs that do not auto-merge appear on GET /v1/projects/:id/findings/merge-suggestions.

Identity is decided on arrival and re-checked afterwards. Two models can describe one root cause differently enough that neither report matches the other when it lands; once both findings hold their reports, the pair can become an obvious duplicate, and the later of the two is merged into the keeper then. Triage follows the keeper, and the merged-away fingerprint keeps resolving to it.

Campaign comparison

TermMeaning
BaselineThe "before" campaign. Named explicitly, or the previous one.
NewSighted now, not in the baseline.
ResolvedSighted in the baseline, not now. Do not trust this while slices are still running.
Carried forwardOpen in both.
GateA cheap pass / fail / pending read for CI. CI does not run models.

Fixes and retests

TermMeaning
Fix recordDescription, PR, ticket, and one or more commits.
False-positive recordReason, who decided, optional commit it applies through.
Retest campaignRuns the finding's bucket and the passes that match its files.
Fix verificationconfirmed (covered retest did not reproduce it) or regressed (it came back).

Who does what

TermMeaning
ServerPrompts, parsing, fingerprints, de-duplication, triage, storage.
AgentLocal process: git metadata, claim, run a command, upload stdout.
RunnerThe command bound to a model code. Reads a prompt file, writes marker-delimited JSON.
ArtifactStored prompt, output, or stderr, for provenance.

See campaigns, the runner contract, or the API.

Copyright © 2026