Awesome Reviewers

Verification catalog

10 tactics, 70 techniques, 179 sub-techniques. Usage counts are from 256 scanned source repositories. Leaderboard: https://awesomereviewers.com/raw/leaderboard.json

VA01 Formatting and hygiene

Normalises layout, spelling and file hygiene so the diff only shows what changed.

When: On every change, before anything else. Almost always autofixable: run the fix, then commit.

V1001 Formatting

A formatter rewrites code to one layout so diffs show only real changes; in CI it runs in check mode and fails on drift. Run by 112 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Pick one formatter per language and commit its config at the repository root.
  2. Run it once over the whole tree in a single commit and add that commit to .git-blame-ignore-revs.
  3. Add a pre-commit hook that rewrites, and a CI step in check mode that fails.

Reverse engineer it (look for):

Open-source packages: Ruff, Black, isort, Prettier, Biome, rustfmt Tools seen in scans: prettier (98), rustfmt (46), ruff-format (43), black (14), isort (9), gofmt (7)

V1002 File hygiene

Cheap checks on files as files: valid syntax for config formats, no merge markers, no trailing whitespace, no oversized or binary blobs. Run by 33 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Add pre-commit-hooks with check-yaml, check-json, check-toml, check-merge-conflict and check-added-large-files.
  2. Validate CI and app config against published JSON schemas with check-jsonschema.
  3. Run pre-commit run –all-files in CI so the hooks are not optional.

Reverse engineer it (look for):

Open-source packages: pre-commit-hooks, check-jsonschema, yamllint Tools seen in scans: pre-commit-hooks (33)

V1003 Spelling

Finds misspellings in identifiers, comments and documentation, where a typo becomes a public API or a search miss. Run by 19 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Start with a low false-positive tool (typos or codespell) on the whole tree.
  2. Add an allow-list file for domain words instead of disabling the check.
  3. Run it in pre-commit and in CI with autofix locally.

Reverse engineer it (look for):

Open-source packages: typos, codespell, CSpell Tools seen in scans: codespell (22)

V1004 Commit and pull request hygiene

Rules on the change itself rather than the code: commit message format, PR description, size limits, required labels or linked tickets.

Sub-techniques:

Craft it:

  1. Write the rules you already enforce by hand in review as a Dangerfile or commitlint config.
  2. Start as warnings, then turn the rules people respect into failures.
  3. Keep size thresholds per directory, not global.

Reverse engineer it (look for):

Open-source packages: commitlint, Danger JS

VA02 Static analysis

Reads the code without running it: linters, type checkers, security and workflow scanners.

When: On every change. Cheapest signal, runs in seconds, and most findings point at an exact line.

V1005 Linting

Rule-based detection of bug-prone patterns, unused code and conventions the formatter does not cover. Run by 144 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Enable the linter’s recommended set and fix or baseline existing findings.
  2. Turn recurring review comments into custom rules (an ESLint plugin, a Semgrep rule, a Clippy lint config).
  3. Fail CI on new findings only, so the baseline shrinks without blocking work.

Reverse engineer it (look for):

Open-source packages: Ruff, ESLint, golangci-lint, Clippy, ShellCheck, Error Prone Tools seen in scans: eslint (107), ruff-check (64), clippy (45), golangci-lint (26), biome (24), flake8 (17), pylint (17), shellcheck (10), go-vet (9), staticcheck (1)

V1006 Type checking

Proves call sites and data shapes agree across modules: wrong types, unhandled null or None, signatures broken by a change. Run by 106 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Run the checker in non-strict mode on the whole repository to get a baseline.
  2. Turn on strict flags for new and frequently changed modules first.
  3. Run it in CI as its own job so type errors are not hidden in test failures.

Reverse engineer it (look for):

Open-source packages: mypy, Pyright, TypeScript (tsc) Tools seen in scans: tsc (117), mypy (35), cargo-check (21), pyright (16)

V1007 Static application security testing

Finds injection, unsafe APIs, weak crypto and tainted data reaching a sink without running the code. Run by 71 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Run a pattern scanner with a community rule pack and record the baseline.
  2. Write custom rules for your own wrappers (your query builder, your HTTP client), each with a positive and negative test file.
  3. Scan only changed files on PRs (diff-aware mode) and the whole repository on a schedule.

Reverse engineer it (look for):

Open-source packages: Opengrep, Semgrep CE, Bandit, gosec, Security Code Scan, Find Security Bugs, eslint-plugin-security Tools seen in scans: codeql (63), semgrep (15), bandit (6)

V1008 Secret scanning

Finds credentials and tokens in the working tree and in history before they are pushed or published. Run by 5 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Add a pre-commit hook and a CI job running the same scanner and config.
  2. Keep a baseline or allow-list for test fixtures, reviewed like code.
  3. Scan full history once and rotate anything found.

Reverse engineer it (look for):

Open-source packages: Gitleaks, TruffleHog, detect-secrets Tools seen in scans: gitleaks (7)

V1009 CI workflow linting

Checks CI definitions themselves: syntax, script injection through untrusted inputs, over-broad token permissions, unpinned actions. Run by 38 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Run actionlint on every change to .github/workflows.
  2. Add zizmor and fix its high findings first: injection and permissions.
  3. Pin third-party actions to commit SHAs.

Reverse engineer it (look for):

Open-source packages: actionlint, zizmor, ShellCheck Tools seen in scans: zizmor (33), actionlint (12)

V1010 Documentation build

Builds documentation as a check so broken cross-references, links and markup fail like code. Run by 13 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Build docs in CI with warnings as errors.
  2. Run a link checker on PRs for internal links and weekly for external ones.
  3. Execute examples so docs and code cannot drift.

Reverse engineer it (look for):

Open-source packages: Sphinx, MkDocs, lychee Tools seen in scans: mkdocs (11), sphinx (9)

V1011 Duplicate code detection

Finds copied blocks so a fix in one copy is not missed in the others, and flags new code that re-implements an existing helper.

Sub-techniques:

Craft it:

  1. Run a clone detector with a minimum token count that ignores tests and generated code.
  2. Report only clones introduced by the change.
  3. For reuse, index function signatures and docstrings and query with each new function.

Reverse engineer it (look for):

Open-source packages: jscpd, PMD (CPD), Sentence Transformers

V1012 Complexity limits

Measures cyclomatic complexity, function length and nesting and fails when a change pushes a function past a limit.

Sub-techniques:

Craft it:

  1. Measure the current distribution and set the limit at the existing worst case.
  2. Lower it over time; never block on files the change did not touch.
  3. Prefer a linter rule (ruff C901, ESLint complexity) over a separate tool.

Reverse engineer it (look for):

Open-source packages: Radon, Lizard, Ruff

V1013 API compatibility checking

Diffs a public interface between the base and the change and reports breaking changes: removed endpoints, changed types, narrowed inputs.

Sub-techniques:

Craft it:

  1. Generate the interface description (OpenAPI, .proto, public symbols) in CI on both base and head.
  2. Fail on breaking differences unless the version is bumped or a label allows it.
  3. Publish the diff as a PR comment so reviewers see the contract change.

Reverse engineer it (look for):

Open-source packages: oasdiff, Spectral, Buf (buf breaking), Griffe (griffe check), cargo-semver-checks, japicmp, API Extractor (Rush Stack)

V1014 Data and control flow analysis

Builds a code property graph or interprocedural model to answer reachability questions: can this null reach that dereference, which callers reach this function.

Sub-techniques:

Craft it:

  1. Run the analyzer on the default branch to establish a baseline.
  2. Run it on the change and report only new paths.
  3. Save the queries that found real bugs as regression rules.

Reverse engineer it (look for):

Open-source packages: Infer, Joern, SpotBugs, SCIP

VA03 Supply chain

Checks dependencies: known vulnerabilities, disallowed licenses, lockfiles that disagree with manifests.

When: When a manifest or lockfile changes, and on a schedule, since advisories arrive after the code ships.

V1015 Dependency audit

Matches dependencies against advisory databases and license policy, and fails on known-vulnerable or disallowed packages. Run by 37 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Run an audit on every manifest or lockfile change and on a daily schedule.
  2. Fail on high severity with a fix available; warn on the rest.
  3. Use a reachability-aware tool where the ecosystem has one.

Reverse engineer it (look for):

Open-source packages: OSV-Scanner, pip-audit, govulncheck, cargo-deny, Grype Tools seen in scans: cargo-deny (19), dependency-review (12), npm-audit (9), govulncheck (4), cargo-audit (2), pip-audit (2)

V1016 Lockfile consistency

Fails when the lockfile no longer matches the manifest, so CI installs exactly what was reviewed. Run by 16 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Commit lockfiles for applications.
  2. Use frozen installs in CI (npm ci, uv sync –locked, cargo build –locked).
  3. Add an explicit lock check step for clearer failures.

Reverse engineer it (look for):

Open-source packages: uv (uv lock –check) Tools seen in scans: uv-lock (16)

V1017 SBOM and provenance

Records what went into a build and signs it, so consumers can verify where an artifact came from and what it contains.

Sub-techniques:

Craft it:

  1. Generate an SBOM in the release workflow and publish it with the artifact.
  2. Sign with keyless signing from CI identity.
  3. Verify signatures in deployment.

Reverse engineer it (look for):

Open-source packages: Syft, Sigstore cosign, SLSA GitHub generator

V1018 Dependency risk assessment

Judges a new dependency beyond known CVEs: maintenance, project security practices and signs of a malicious package.

Sub-techniques:

Craft it:

  1. Run the scan only when a dependency is added or its source changes.
  2. Require a reviewer sign-off below a score threshold rather than failing outright.

Reverse engineer it (look for):

Open-source packages: OpenSSF Scorecard, GuardDog

VA04 Testing

Runs the code: unit and integration tests, browser tests, property-based tests, fuzzing, mutation testing.

When: On every change that alters behaviour. Add generated inputs (property tests, fuzzing) when the code parses, transforms or computes, and mutation testing when the tests themselves change.

V1019 Unit and integration tests

Example-based tests that run the code and assert on behaviour, from single functions up to services with real dependencies. Run by 166 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Write the failing test before the fix for every bug.
  2. Run integration tests against containers, not mocks, for storage and messaging code.
  3. Gate on coverage of changed lines, not overall coverage.

Reverse engineer it (look for):

Open-source packages: pytest, Jest, Vitest, Testcontainers (Python) Tools seen in scans: vitest (91), pytest (77), cargo-test (44), jest (38), node-test (35), go-test (29), unittest (20), mocha (10)

V1020 End-to-end browser tests

Drives a real browser through user flows to catch breakage across components, routing and the network. Run by 25 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Cover the few flows that would page someone if broken.
  2. Seed test data per run and use stable selectors (roles, test ids).
  3. Record traces and screenshots on failure as CI artifacts.

Reverse engineer it (look for):

Open-source packages: Playwright, Cypress, Browser Use Tools seen in scans: playwright (55)

V1021 Property-based tests

Generates inputs and checks invariants that must hold for all of them, then shrinks failures to a minimal case. Run by 23 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Start with round-trip and idempotence properties; they need no oracle.
  2. Persist the failure database so found cases are replayed.
  3. Promote shrunk failures to example tests.

Reverse engineer it (look for):

Open-source packages: Hypothesis, fast-check, proptest Tools seen in scans: proptest (11), hypothesis (10), fast-check (3)

V1022 Fuzzing

Feeds coverage-guided random input to parsers and decoders to find crashes, panics and hangs. Run by 2 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Write one harness per parser or decoder entry point.
  2. Seed the corpus with real inputs and commit it.
  3. Run short fuzz jobs on PRs and long ones on a schedule.

Reverse engineer it (look for):

Open-source packages: cargo-fuzz, Atheris, Jazzer, AFL++ Tools seen in scans: cargo-fuzz (6)

V1023 Mutation testing

Changes the code on purpose and checks that some test fails; surviving mutants show tests that do not constrain behaviour. Run by 2 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Run on one critical module first to see the runtime.
  2. Scope to changed lines on PRs.
  3. Treat each surviving mutant as a missing assertion, not a number to optimise.

Reverse engineer it (look for):

Open-source packages: mutmut, StrykerJS, cargo-mutants, PIT Tools seen in scans: stryker (3), mutmut (1)

V1024 Version and platform matrix

Runs the suite across runtime versions, operating systems and feature combinations you do not run locally. Run by 116 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Declare supported versions once and generate the matrix from that list.
  2. Test the oldest and newest on PRs, the full matrix on main.
  3. Add a minimum-versions job so lower bounds are true.

Reverse engineer it (look for):

Open-source packages: tox, nox, cargo-hack Tools seen in scans: ci-matrix (115), cargo-hack (4)

V1025 Visual regression testing

Compares screenshots of rendered pages or components with approved baselines and reports pixel differences.

Sub-techniques:

Craft it:

  1. Render in a pinned browser and font environment to avoid noise.
  2. Store baselines per branch and approve changes in the PR.
  3. Set per-component diff thresholds rather than one global value.

Reverse engineer it (look for):

Open-source packages: pixelmatch, BackstopJS, Lost Pixel, reg-suit, Playwright

V1026 Sandboxed execution

Builds and runs the change in an isolated environment to confirm it installs, starts and passes its checks before anyone relies on it.

Sub-techniques:

Craft it:

  1. Describe the environment as code (a Dagger pipeline or container image).
  2. Run the repository’s own install, lint and test commands inside it.
  3. Keep the logs as evidence attached to the change.

Reverse engineer it (look for):

Open-source packages: E2B, Dagger, Testcontainers (Python)

V1027 Dynamic security testing

Attacks a running instance: crawls endpoints and sends payloads to confirm injection, misconfiguration and exposure.

Sub-techniques:

Craft it:

  1. Run a baseline scan against preview deployments.
  2. Write templates for findings from static analysis so they can be confirmed at runtime.
  3. Run active scans only against disposable environments.

Reverse engineer it (look for):

Open-source packages: ZAP, Nuclei

VA05 Formal verification and model checking

Proves or exhaustively explores properties: model checking, proofs, undefined-behaviour interpreters.

When: When a bug would be a memory-safety violation or an interleaving that tests are unlikely to hit: unsafe code, lock-free structures, consensus and protocol logic.

V1028 Undefined-behaviour detection

Executes code under an interpreter or instrumentation that detects memory-safety and aliasing violations. Run by 4 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Run the unsafe-heavy test subset under the checker in CI.
  2. Add sanitizer builds as separate matrix entries.
  3. Treat every report as a bug; there are no false positives to baseline.

Reverse engineer it (look for):

Open-source packages: Miri, Sanitizers (ASan, TSan, UBSan) Tools seen in scans: miri (4)

V1029 Concurrency model checking

Explores thread interleavings systematically to find races and orderings that fail only rarely. Run by 1 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Isolate the concurrent primitive behind an interface the checker can swap.
  2. Write small tests with two or three threads.
  3. Run them in a dedicated CI job with the checker’s cfg flag.

Reverse engineer it (look for):

Open-source packages: loom, Shuttle, Sanitizers (ASan, TSan, UBSan) Tools seen in scans: loom (1)

V1030 Proofs and specifications

Specifies a protocol or algorithm and checks it exhaustively or proves it, catching design bugs before code exists. Run by 2 of 256 scanned repositories.

Sub-techniques:

Craft it:

  1. Specify the part where a bug is catastrophic and tests are weak: consensus, replication, locking.
  2. Check the spec in CI on every change to it.
  3. Link spec actions to code with comments or trace checking.

Reverse engineer it (look for):

Open-source packages: TLA+ tools, Dafny, Lean 4, Rocq (Coq), Kani Tools seen in scans: coq (2), lean (1), tla-plus (1)

V1031 Symbolic execution

Explores program paths with symbolic inputs and a solver to find inputs that violate an assertion.

Sub-techniques:

Craft it:

  1. Pick small pure functions with clear contracts.
  2. Write contracts as assertions or type annotations.
  3. Run with a time budget per function in CI.

Reverse engineer it (look for):

Open-source packages: CBMC, KLEE, CrossHair

VA06 Code review

Reads the change the way a reviewer does: what it is for, what it touches, and where its logic, conventions or security fall short.

When: On every pull request, after the automated checks pass, so reviewers spend attention on what the checks cannot see.

V1032 Change intent extraction

States what the change is meant to do, from title, description, commits and linked ticket, so every later check can ask whether a finding is in scope.

Sub-techniques:

Craft it:

  1. Feed title, body, commit messages and linked ticket to a model with a structured output schema.
  2. Use a structural diff so moved code is not reported as new.
  3. Store the intent with the review so findings can be checked against it.

Reverse engineer it (look for):

Open-source packages: PR-Agent, Instructor, Difftastic, GumTree

V1033 Review context retrieval

Collects what a reviewer needs beyond the diff: callers, definitions, related tests, docs and repository rules.

Sub-techniques:

Craft it:

  1. Index the repository with tree-sitter or SCIP on the default branch.
  2. For each changed symbol, retrieve definitions, callers and tests.
  3. Cap context by relevance, not file order.

Reverse engineer it (look for):

Open-source packages: tree-sitter, Aider, SCIP, LlamaIndex

V1034 Agentic exploration

An agent with read, search and run tools investigates a change: follows a suspicion across files, runs code, and returns findings with evidence.

Sub-techniques:

Craft it:

  1. Give the agent read-only tools first: read file, grep, list directory.
  2. Split into a survey step and per-concern investigation steps.
  3. Require each finding to cite file, line and the evidence that supports it.

Reverse engineer it (look for):

Open-source packages: OpenHands, SWE-agent, LangGraph, RouteLLM

V1035 Logic and correctness review

Reads the change for wrong behaviour: off-by-one, inverted conditions, missed error paths, broken invariants, race conditions.

Sub-techniques:

Craft it:

  1. Give the reviewer the intent, the diff and retrieved context.
  2. Ask for findings only with a concrete triggering input or state.
  3. Validate each finding before posting (see Finding validation).

Reverse engineer it (look for):

Open-source packages: PR-Agent, Claude Code Action, OpenHands

V1036 Convention and guideline review

Checks a change against the repository’s written rules: style guides, AGENTS.md, architecture decisions, naming conventions.

Sub-techniques:

Craft it:

  1. Keep rules in the repository in one file per scope.
  2. Promote any rule that a pattern can match into a lint rule.
  3. Leave the rest to a reviewer prompt that quotes the rule it applies.

Reverse engineer it (look for):

Open-source packages: PR-Agent, Semgrep CE, typos

V1037 Reviewers learned from past reviews

Mines a repository’s review discussions for recurring feedback and turns each cluster into a reusable review instruction.

Sub-techniques:

Craft it:

  1. Export review threads with their file paths and diffs.
  2. Embed and cluster comments; keep clusters with enough independent threads.
  3. Distill each cluster into an instruction and evaluate it on held-out PRs.

Reverse engineer it (look for):

Open-source packages: Awesome Reviewers, BERTopic, HDBSCAN, Sentence Transformers, Mem0

V1038 Security-focused review

A reviewer that reads for exploitable behaviour across files: authorization gaps, injection through helpers, unsafe trust between services.

Sub-techniques:

Craft it:

  1. Gate on diff signals: new routes, auth code, deserialization, subprocess, SQL.
  2. Investigate from the entry point to the sink, not file by file.
  3. Require a concrete input that reaches the sink.

Reverse engineer it (look for):

Open-source packages: Vulnhuntr, Semgrep CE, Joern, SetFit

V1039 LLM application security review

Reviews code that calls models for the OWASP Top 10 for LLM applications: prompt injection, output handling, excessive agency, unbounded consumption.

Sub-techniques:

Craft it:

  1. List every place untrusted text enters a prompt and every place model output is executed or rendered.
  2. Run a red-team suite against those paths in CI.
  3. Cap tokens, tool calls and spend per request.

Reverse engineer it (look for):

Open-source packages: garak, promptfoo, LLM Guard

V1040 Review question checklists

A fixed bank of questions a reviewer must answer for a kind of change, ranked so the most relevant ones are asked first.

Sub-techniques:

Craft it:

  1. Start from a published checklist and keep only questions your reviews actually raise.
  2. Tag each question with the kinds of change it applies to.
  3. Rank by relevance to the diff and ask the top few.

Reverse engineer it (look for):

Open-source packages: OWASP ASVS, Google engineering practices, rerankers

V1041 Reviewer routing

Chooses which specialist reviewers, human or automated, apply to a change based on its files, topics and history.

Sub-techniques:

Craft it:

  1. Start with CODEOWNERS for humans.
  2. Describe each automated reviewer in one paragraph and match changes to it.
  3. Log which reviewer produced accepted findings and prune the rest.

Reverse engineer it (look for):

Open-source packages: Sentence Transformers, rerankers, SetFit

VA07 Finding validation

Checks the findings themselves before anyone acts on them: is there proof, can it happen, is it new, how bad is it, is it in scope.

When: Whenever a reviewer, human or model, produces more findings than people will read, or findings that are often wrong.

V1042 Evidence-backed verification

Re-checks each finding against the code before it is shown: look for counterevidence, require proof, and refute or suppress what does not hold.

Sub-techniques:

Craft it:

  1. Run a second, independent pass per finding with the code and the claim only.
  2. Record a verdict per finding: confirmed, refuted, suppressed or incomplete, with the reason.
  3. Only post confirmed findings; measure refutation rate per reviewer.

Reverse engineer it (look for):

Open-source packages: DSPy, DeepEval, Ragas, E2B

V1043 Path reachability check

Decides whether the triggering state can reach the flagged line on this code path, given guards, early returns and types.

Sub-techniques:

Craft it:

  1. For each finding, list the callers of the flagged function.
  2. Check each caller for guards that exclude the trigger.
  3. Mark findings with no established producer as unestablished, not confirmed.

Reverse engineer it (look for):

Open-source packages: Infer, Joern, SCIP

V1044 External contract verification

Checks claims about third-party behaviour (an API can return null, a library throws) against authoritative documentation, and grades how strong that proof is.

Sub-techniques:

Craft it:

  1. Resolve the dependency version from the lockfile.
  2. Fetch that version’s docs or source, not the latest.
  3. Keep findings that rest on illustrative proof at lower severity.

Reverse engineer it (look for):

Open-source packages: Context7, SearXNG

V1045 Finding deduplication

Merges findings that describe the same problem from different reviewers, files or runs into one.

Sub-techniques:

Craft it:

  1. Emit findings as SARIF or a common schema with file, line and rule.
  2. Fingerprint by rule, file and normalised code, not line number.
  3. Cluster the remainder by embedding and merge.

Reverse engineer it (look for):

Open-source packages: Sentence Transformers, FAISS, sarif-tools

V1046 Severity scoring

Scores a finding from separate evidence axes (impact, persistence, detectability, reachability, scope, certainty) instead of a single guess.

Sub-techniques:

Craft it:

  1. Have the reviewer fill each axis separately with evidence.
  2. Derive severity from the axes with a fixed table, never from free text.
  3. Cap severity when certainty is inferred or assumed.

Reverse engineer it (look for):

Open-source packages: cvss (Python), CERT/CC SSVC

V1047 Scope and relevance filtering

Keeps only findings that belong to this change: on changed lines, within the PR’s intent, and fixable without reworking unchanged code.

Sub-techniques:

Craft it:

  1. Filter by diff hunks first; it is cheap and removes most noise.
  2. Check each remaining finding against the stated intent.
  3. File out-of-scope findings as issues instead of review comments.

Reverse engineer it (look for):

Open-source packages: reviewdog, Danger JS

V1048 Noise budget

A fixed cap on how many findings are posted per change, filled in severity order, so the important ones are read.

Sub-techniques:

Craft it:

  1. Set the cap from how many comments reviewers actually address.
  2. Sort by severity, then certainty.
  3. Store the overflow and resurface it when the budget allows.

Reverse engineer it (look for):

Open-source packages: reviewdog, sarif-tools

V1049 Confidence calibration

Maps a reviewer’s confidence to the observed rate of accepted findings and sets the posting threshold from that curve.

Sub-techniques:

Craft it:

  1. Log confidence and the human outcome for every posted finding.
  2. Fit a calibration model monthly.
  3. Pick the threshold that meets a target precision.

Reverse engineer it (look for):

Open-source packages: scikit-learn

V1050 Reflection pass

A self-critique step where the reviewer re-reads its own findings with fresh context and keeps, revises or withdraws each.

Sub-techniques:

Craft it:

  1. Run reflection with a different prompt and, ideally, a different model than the reviewer.
  2. Pass the code, not the reviewer’s reasoning.
  3. Record why each withdrawn finding was withdrawn.

Reverse engineer it (look for):

Open-source packages: LangGraph, DSPy

V1051 Past discussion check

Compares a finding with earlier review discussions: a repeat of something already decided is suppressed, a regression of a fixed issue is raised.

Sub-techniques:

Craft it:

  1. Store resolved and dismissed threads with their code location and outcome.
  2. Retrieve similar threads for each new finding.
  3. Suppress repeats; escalate regressions.

Reverse engineer it (look for):

Open-source packages: Mem0, Graphiti, Sentence Transformers

VA08 Intent and spec conformance

Compares the change to what was asked for: the ticket, the plan or spec, the design, the review comments it was meant to address.

When: When a change implements a ticket, a plan or a design, and before merging, to confirm the thing built is the thing requested.

V1052 Ticket intent alignment

Checks a finding or a change against the linked ticket: behaviour the ticket declares intentional is not a bug, and requirements it lists must be present.

Sub-techniques:

Craft it:

  1. Link tickets in PR titles or branch names so they can be fetched.
  2. Extract requirements as a structured list.
  3. Match only on explicit statements; treat silence as unknown.

Reverse engineer it (look for):

Open-source packages: jira (Python), Instructor

V1053 Plan and spec traceability

Checks each requirement in a plan or specification against the implementation: done in this change, done elsewhere, or not started, with gaps graded by severity.

Sub-techniques:

Craft it:

  1. Write specs with stable requirement ids.
  2. Reference the ids in code comments or tests.
  3. Report untraced requirements and code with no requirement.

Reverse engineer it (look for):

Open-source packages: Spec Kit, OpenFastTrace, Instructor

V1054 Functional spec verification

Runs the application and checks each functional requirement in a browser, returning met, partially met, not met or unverifiable with screenshot evidence.

Sub-techniques:

Craft it:

  1. Deploy a preview per PR.
  2. Turn each acceptance criterion into a step and an observable outcome.
  3. Attach screenshots to every verdict, including failures.

Reverse engineer it (look for):

Open-source packages: Browser Use, Playwright, DeepEval

V1055 Design conformance

Compares the rendered UI with the design it implements and reports layout, spacing, colour and copy differences.

Sub-techniques:

Craft it:

  1. Export frames at the same viewport the test renders.
  2. Compare with a tolerance and mask dynamic content.
  3. Annotate differing regions on the screenshot.

Reverse engineer it (look for):

Open-source packages: pixelmatch, OpenCV, Pillow, Playwright

V1056 Review comment resolution

Checks whether a new commit actually addresses each open review comment before the thread is resolved.

Sub-techniques:

Craft it:

  1. Fetch open threads and the commits after each.
  2. Ask whether the requested change is present, with the diff hunk as evidence.
  3. Resolve only threads with evidence; reply on the rest.

Reverse engineer it (look for):

Open-source packages: PyGithub, Instructor

V1057 Merge readiness

Combines checks, reviews, open threads and findings into one verdict on whether a change can merge.

Sub-techniques:

Craft it:

  1. Encode required checks and approvals in branch protection.
  2. Add a bot that lists what is still blocking.
  3. Merge automatically only when the verdict is clean.

Reverse engineer it (look for):

Open-source packages: Kodiak, Danger JS

V1058 Output guardrails

Validates what an automated reviewer or fixer produces before it is posted or committed: schema, policy and safety checks.

Sub-techniques:

Craft it:

  1. Define the output schema and validate every response.
  2. List protected paths and actions the bot may not take.
  3. Log every blocked output for review.

Reverse engineer it (look for):

Open-source packages: Guardrails AI, NeMo Guardrails, Instructor

VA09 Threat modeling

Maps where a system can be attacked, finds the weaknesses behind each entry point and checks which are mitigated and exposed.

When: On a whole repository periodically, and on changes that add an entry point, a trust boundary or a new dependency on external input.

V1059 Attack surface inventory

Lists every entry point and trust boundary: API endpoints, webhooks, queues, schedulers, parsers, CLIs, third-party scripts, model calls.

Sub-techniques:

Craft it:

  1. Enumerate entry points from route tables, consumers and schedulers in code.
  2. Describe the system as a model (pytm, Threagile) with data flows and trust boundaries.
  3. Regenerate the model when entry points change.

Reverse engineer it (look for):

Open-source packages: OWASP pytm, Threagile, OWASP Threat Dragon

V1060 Weakness discovery

For each entry point, searches for the weakness classes that apply to it: injection, broken access control, SSRF, deserialization, path traversal.

Sub-techniques:

Craft it:

  1. Map each surface category to the weakness classes that apply.
  2. Search with taint queries and an investigating agent.
  3. Record each weakness with the entry point it is reachable from.

Reverse engineer it (look for):

Open-source packages: Joern, Vulnhuntr, Semgrep CE

V1061 Mitigation mapping

Checks whether each weakness is already mitigated by a control (validation, authorization middleware, rate limits) before reporting it.

Sub-techniques:

Craft it:

  1. List controls as code locations (middleware, decorators, gateways).
  2. Check each entry point passes through them.
  3. Report only unmitigated weaknesses.

Reverse engineer it (look for):

Open-source packages: Threagile, OWASP pytm

V1062 Exposure verification

Confirms which weaknesses are reachable from outside: external asset discovery and targeted checks against deployed endpoints.

Sub-techniques:

Craft it:

  1. Discover assets on a schedule.
  2. Map findings to exposed assets.
  3. Confirm with targeted templates against non-production environments.

Reverse engineer it (look for):

Open-source packages: OWASP Amass, Nuclei, ZAP

V1063 Risk prioritization

Orders confirmed weaknesses by exposure, exploit likelihood and impact so fixes start where risk is highest.

Sub-techniques:

Craft it:

  1. Score exposure from the attack surface inventory.
  2. Combine with likelihood and impact through a fixed decision tree.
  3. Recompute when exposure changes.

Reverse engineer it (look for):

Open-source packages: CERT/CC SSVC, cvss (Python)

VA10 Feedback and evaluation

Closes the loop: production errors and missed bugs become new checks, and the reviewers themselves are measured and tuned.

When: Continuously, once checks and reviewers are in place. Every escaped bug is a missing technique somewhere to the left.

V1064 Production error investigation

Investigates production errors from observability data, finds the responsible code and proposes a fix with a regression test.

Sub-techniques:

Craft it:

  1. Connect the agent to logs, traces and the repository read-only.
  2. Require a reproduction before any fix.
  3. Route fixes through the same review as human changes.

Reverse engineer it (look for):

Open-source packages: HolmesGPT, K8sGPT, OpenHands

V1065 Alert deduplication and triage

Groups related production alerts and errors and ranks them so investigation starts with the most impactful.

Sub-techniques:

Craft it:

  1. Fingerprint errors by normalised stack trace.
  2. Correlate within a time window per service.
  3. Rank before routing to people or agents.

Reverse engineer it (look for):

Open-source packages: Keep, HDBSCAN

V1066 Missed bug analysis

For each bug that escaped review, finds which technique should have caught it and why it did not, then clusters the causes.

Sub-techniques:

Craft it:

  1. Link every bug fix to the PR that introduced the bug.
  2. Trace what each check and reviewer saw on that PR.
  3. Add the case to the eval set and re-run reviewers on it.

Reverse engineer it (look for):

Open-source packages: Langfuse, Arize Phoenix, BERTopic

V1067 Reviewer evaluation

Benchmarks reviewers on labelled changes: did they find the known bugs, and how many findings were wrong.

Sub-techniques:

Craft it:

  1. Build the set from real escaped bugs and from changes that needed no comments.
  2. Score recall on bugs and precision on findings.
  3. Gate reviewer changes on the benchmark.

Reverse engineer it (look for):

Open-source packages: Inspect, promptfoo, DeepEval

V1068 Reviewer optimization

Tunes reviewer prompts and instructions against the evaluation set instead of by hand.

Sub-techniques:

Craft it:

  1. Define the metric first (from reviewer evaluation).
  2. Optimize on a train split; report on a held-out split.
  3. Review every prompt change like code.

Reverse engineer it (look for):

Open-source packages: DSPy, TextGrad

V1069 Developer feedback capture

Records how developers respond to findings (fixed, dismissed, argued) and the sentiment of replies, as the ground truth for every other loop.

Sub-techniques:

Craft it:

  1. Store every finding with its later outcome.
  2. Sample disputed findings for human labelling.
  3. Feed labels to calibration and evaluation.

Reverse engineer it (look for):

Open-source packages: Argilla, Label Studio, VADER

V1070 CI failure analysis

Reads failing CI runs, separates real failures from flaky ones, and maps each to the job, step and change that caused it.

Sub-techniques:

Craft it:

  1. Record test outcomes per run, not just the job status.
  2. Quarantine tests that fail and pass on the same commit, and file an issue.
  3. Never skip a test to get a green run.

Reverse engineer it (look for):

Open-source packages: actionlint, pytest