Measured
Precision, on code we do not control
A scanner tuned against its own repository looks perfect on its own repository. The only honest test is code its authors did not write and cannot quietly adjust. Each repository below is cloned fresh at a pinned commit and scanned with --suite full — exactly what a paying Full Scan runs. The number is blocking findings; the ceiling is what CI holds the engine to, and it only ever moves down.
Precision — clean code must pass
| Repository | Commit | Blocking | Ceiling | Why it is in the corpus |
|---|---|---|---|---|
| express | 023767fe | 0 | 0 | the most-depended-on Node package there is; the canonical clean control |
| flask | d318b683 | 2 | 2 | Python — proves the non-JS rules are held to the same bar |
| fastify | 15ebc8e2 | 3 | 3 | large plugin-oriented server; exercises the auth and route grammars |
| got | 687eb7dc | 0 | 0 | TypeScript HTTP client with a benchmark/ tree — a known scope trap |
| hono | eebdf7be | 14 | 14 | every crossFileTaint finding here was false: c.req.query() read as SQL, RegExp.exec() as command exec; 2026-09-05 importCycle type-only elision: the four import cycles it blocked on read every binding inside function bodies — deferred, now a warning — ceiling ratchets down |
| zod | 7a002366 | 2 | 2 | monorepo with a docs site and benchmarks; was the worst case at 50, of which 33 were errorSwallow — 23 in benchmark harnesses, 7 the parsing library's coerce-then-check idiom (2026-09-04) |
| django | b3f4d83a | 46 | 46 | Python at scale — the ORM builds SQL by string in django/db, which is the one place that is the job; 74 of 76 "secrets" were test fixtures before the identifier-keyed rules learned about test paths |
| rails | 1ec64ce8 | 33 | 33 | Ruby at scale — instance_eval in the routes loader, backtick-quoted words in error messages that a naive shell-interp rule read as commands |
| spring-petclinic | 818c4136 | 8 | 8 | Java + Thymeleaf templates + a k8s manifest; the reference Spring app |
| gin | dcaa4296 | 0 | 0 | Go — the ignored-error idiom the go module could not see until 2026-09-04 |
| axum | 8b30afbf | 5 | 5 | Rust — first contact 28 blocking: todo!()/unimplemented!() inside #[cfg(test)] modules, dtolnay/rust-toolchain@stable read as a branch pin; what remains is third-party actions on @master and one real unimplemented!() |
| laravel | cdbd17f7 | 4 | 4 | PHP — first contact 28 blocking, 23 of them `$redis->eval($lua)` read as PHP eval(); what remains is real eval(var_export()) in the config cache and an unguarded rm -rf in a release script |
| cleanarchitecture | 3a06afb9 | 4 | 4 | C# + Angular + React — first contact 39 blocking, 26 of them SEO/a11y rules on the two SPA index.html shells; what remains is real: strict:false, a committed .env, unlabeled inputs, log-and-eat catches in a React component |
| ktor | f92fad04 | 7 | 7 | Kotlin — first contact 21 blocking, 14 of them a test.html under test-resources/ scored as a public page, plus a Gradle compile failure in our environment reported as failing tests; what remains is six real TODO() stubs and one third-party workflow on @main |
| vapor | 630763c5 | 0 | 0 | Swift — first contact 6 blocking: its own reusable workflows on @main and README section gaps; what remains is a *.key file the .gitignore does not cover |
| nest | 39fbddae | 7 | 7 | TypeScript monorepo (npm workspaces) with an integration/ e2e tree and sample apps — first contact 39 blocking: a logger class told it uses console, tsconfig flags as build verdicts, mongodb://localhost fixtures as secrets, `.catch(() => {})` on a stored promise the caller awaits; what remains is six `reduce(async …)` in the e2e app, two npm-audit advisories and one committed PKCS#8 key |
| trpc | 66d05445 | 7 | 7 | pnpm monorepo with members under examples/* and www — first contact 33 blocking: build configs and a CLI told they log to console, an OG-image generator scored as a web page, an Algolia search key as a secret, ternary env fallbacks as hardcoded URLs; what remains is four <img> without alt, a real import cycle, a silent connect in a constructor and `${{ github.event.release.tag_name }}` in a shell; 2026-09-05 importCycle type-only elision: its one import cycle ran through two `import { type X }` edges — elided, never a cycle in emitted JS — ceiling ratchets down |
| apollo-server | 53ac3c13 | 0 | 0 | npm-workspaces monorepo with a docs site — first contact 4 blocking: a CA bundle read as a private key, a README link the resolver could not follow, a destructured parameter the scope harvester missed; nothing remains |
| prisma | dd846dcc | 12 | 12 | pnpm monorepo, packages/** nesting, a SQL toolkit that builds SQL by design — first contact 90 blocking: `${STORAGE_TABLE}` constants as injection, seeding loops in test/ as N+1, teardown catches as swallows, tsconfig/ and turbo.json as invalid JSON, `base.sha` as shell injection, an un-runnable test:integration as failing tests; what remains is DDL with a computed database name, three import cycles, telemetry catches and a dev-tool page without a description; 2026-09-05 importCycle type-only elision: the three import cycles it blocked on read their bindings in parameter defaults and method bodies — deferred, now a warning — ceiling ratchets down |
Recall — a vulnerable app must keep failing
Precision alone is satisfied by a scanner that reports nothing. So a deliberately vulnerable application is held to a floor: if it ever stops failing, the gate goes red.
| Repository | Commit | Blocking | Floor |
|---|---|---|---|
| NodeGoat | c5cb68a7 | 41 | 40 |
By rule — what a senior developer actually checks
A per-repository table proves the corpus was run; it does not show which rule is trustworthy. This table groups every error-severity finding of the same run by rule: how many fired across the twenty repositories, how many of those landed on a repository held to a zero ceiling — our cleanest controls, so a finding there is the shape of a false positive even when a confidence signal kept it from blocking — and how many tests under tests/ are tagged as that rule’s control pair (Doctrine #3: no rule ships without one). Sort any column by clicking its header.
| Rule | Module | |||
|---|---|---|---|---|
| a11y:input-label | accessibility | 53 | 0 | 0 |
| a11y:img-alt | accessibility | 18 | 0 | 0 |
| quality:eval() usage detected | codeQuality | 17 | 1 | 0 |
| quality:innerHTML assignment detected — use textContent or sanitize | codeQuality | 14 | 0 | 0 |
| security:innerHTML assignment | security | 13 | 0 | 0 |
| perf:event-cleanup | performance | 12 | 0 | 0 |
| python:sql-concat | python | 11 | 0 | 0 |
| quality:commented-code | codeQuality | 11 | 0 | 0 |
| security:eval() | security | 11 | 1 | 0 |
| a11y:html-lang | accessibility | 10 | 0 | 0 |
| a11y:landmark-main | accessibility | 10 | 0 | 0 |
| security:sql-injection | security | 10 | 0 | 0 |
| error-swallow:empty-catch | errorSwallow | 8 | 0 | 0 |
| money-float:arithmetic | moneyFloat | 7 | 0 | 0 |
| quality:console.log/debug/info found | codeQuality | 7 | 0 | 0 |
| async-iteration:async-reduce | asyncIteration | 6 | 0 | 0 |
| ci-security:branch-pin | ciSecurity | 6 | 0 | 0 |
| error-swallow:catch-noop | errorSwallow | 6 | 0 | 0 |
| kotlin:todo-call | kotlin | 6 | 0 | 0 |
| perf:render-blocking | performance | 6 | 0 | 0 |
| secrets | secrets | 6 | 0 | 1 |
| visual:viewport | visual | 6 | 0 | 0 |
| ruby:eval | ruby | 5 | 0 | 0 |
| security:open redirect risk | security | 5 | 4 | 0 |
| security:secret | security | 5 | 1 | 0 |
| python:exec | python | 4 | 0 | 0 |
| retry-hygiene:unbounded-loop | retryHygiene | 4 | 0 | 0 |
| security:secrets-scan | security | 4 | 1 | 0 |
| a11y:contrast-static | accessibility | 3 | 0 | 0 |
| a11y:invalid-role | accessibility | 3 | 0 | 0 |
| cookie-sec:js-weak-secret | cookieSecurity | 3 | 3 | 0 |
| links:dead-links | links | 3 | 0 | 0 |
| perf:lazy-loading | performance | 3 | 0 | 0 |
| python:eval | python | 3 | 0 | 0 |
| race-condition:fs-toctou | raceCondition | 3 | 0 | 0 |
| sql:set-notnull | sqlMigrations | 3 | 0 | 0 |
| taint:sink:eval | crossFileTaint | 3 | 0 | 0 |
| bash-safety:pipe-true | bashSafety | 2 | 0 | 0 |
| data:migration-drop | dataIntegrity | 2 | 0 | 0 |
| links:javascript-href | links | 2 | 0 | 0 |
| n-plus-one:query-in-loop | nPlusOne | 2 | 0 | 0 |
| php:eval | php | 2 | 0 | 0 |
| ruby:system-interp | ruby | 2 | 0 | 0 |
| security:npm-audit | security | 2 | 0 | 1 |
| sql:drop-table | sqlMigrations | 2 | 0 | 0 |
| auth-bypass | authBypass | 1 | 0 | 0 |
| auth-bypass:idor-shadow | authBypass | 1 | 0 | 0 |
| bash-safety:devnull-swallow | bashSafety | 1 | 0 | 0 |
| ci-security:shell-injection | ciSecurity | 1 | 0 | 0 |
| dockerfile:curl-pipe-sh | dockerfile | 1 | 0 | 0 |
| env-vars:missing-from-example:APP_ENV | envVars | 1 | 0 | 0 |
| env-vars:missing-from-example:AUTH_GITHUB_ID | envVars | 1 | 0 | 0 |
| env-vars:missing-from-example:AUTH_GITHUB_SECRET | envVars | 1 | 0 | 0 |
| hardcoded-url:localhost | hardcodedUrl | 1 | 0 | 0 |
| html:unclosed:body | syntax | 1 | 1 | 0 |
| html:unclosed:html | syntax | 1 | 1 | 0 |
| k8s:image-tag | kubernetes | 1 | 0 | 0 |
| log-pii:sensitive-arg | logPii | 1 | 1 | 0 |
| openapi-drift:undocumented-route:GET:/ | openapiDrift | 1 | 0 | 0 |
| redos:nested-quantifier | redos | 1 | 0 | 0 |
| redos:user-controlled-regex | redos | 1 | 0 | 0 |
| rust:unimplemented | rust | 1 | 0 | 0 |
| secret-rotation:stale:private-key | secretRotation | 1 | 0 | 0 |
| secrets:gitignore-.env | secrets | 1 | 0 | 0 |
| security:CSRF protection disabled | security | 1 | 1 | 0 |
| security:NoSQL injection ($where with interpolated input) | security | 1 | 0 | 0 |
| security:npm-audit:body-parser | security | 1 | 0 | 0 |
| security:npm-audit:bson | security | 1 | 0 | 0 |
| security:npm-audit:express | security | 1 | 0 | 0 |
| security:npm-audit:marked | security | 1 | 0 | 0 |
| security:npm-audit:mongodb | security | 1 | 0 | 0 |
| security:npm-audit:mongodb-core | security | 1 | 0 | 0 |
| security:npm-audit:path-to-regexp | security | 1 | 0 | 0 |
| security:npm-audit:qs | security | 1 | 0 | 0 |
| security:npm-audit:swig | security | 1 | 0 | 0 |
| security:npm-audit:uglify-js | security | 1 | 0 | 0 |
| security:npm-audit:underscore | security | 1 | 0 | 0 |
| security:npm-audit:ws | security | 1 | 0 | 0 |
| security:path-traversal | security | 1 | 1 | 0 |
| security:sql-injection-scan | security | 1 | 0 | 0 |
| security:template auto-escaping disabled (XSS) | security | 1 | 0 | 0 |
| seo:description | seo | 1 | 0 | 0 |
| seo:h1-missing | seo | 1 | 0 | 0 |
| shell:unsafe-rm | shell | 1 | 0 | 0 |
| sql:add-notnull-no-default | sqlMigrations | 1 | 0 | 0 |
| sql:drop-column | sqlMigrations | 1 | 0 | 0 |
| ssrf:tainted-url | ssrf | 1 | 0 | 0 |
| syntax | syntax | 1 | 0 | 0 |
| taint:sink:sql-query | crossFileTaint | 1 | 0 | 0 |
Engine v1.62.0 @ 8f2240d8, generated 2026-10-05. This table is regenerated by the nightly corpus run (.github/workflows/dogfood-nightly.yml) whenever the numbers change — not on every merge — and rides the same rolling PR as the repository table above.
Head to head — the same commits, other scanners
The same pinned clones, handed to Semgrep (its default auto ruleset) and, where the repository is JavaScript or TypeScript, to ESLint with eslint-plugin-security’s recommended rules. The counts are not comparable one-to-one: GateTest’s blocking is a gate verdict — error-severity findings at or above the confidence threshold, across code quality, security, infrastructure and documentation — while Semgrep’s error is the label a rule author chose, eslint-plugin-security reports fourteen security rules, and CodeQL’s count comes from its own CLI running the official *-security-extended query suite for the repository’s language (e.g. javascript-security-extended.qls), with a result counted as blocking-equivalent at SARIF level error or a security-severity of 7.0 or above. Read each column as what that tool says about that commit and how long it took to say it. Each tool is time-boxed at 10 minutes per repository. SonarQube has not been run yet; CodeQL runs where its CLI is installed and the repository’s language has a security-extended suite. Either column says so, and why, instead of a number when it was not measured. 18 of 20 corpus repositories measured on 2026-10-05 with GateTest --suite full.
Last measured 17 days ago; the weekly run is scheduled every Monday and this page updates automatically once it lands.
| Repository | Language | GateTestv1.62.0 | Semgrepv1.179.0 | ESLint + eslint-plugin-securityv9.39.5 | SonarQube | CodeQLv2.27.0 |
|---|---|---|---|---|---|---|
| express 023767fe | JavaScript | 0 blocking / 132 findings20.9 s | 0 error / 42 warning / 1 info / 2 other (MEDIUM)5.5 s | 0 error / 75 warning2.3 s | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | 1 blocking-equivalent / 5 results85.3 s |
| django b3f4d83a | Python | 46 blocking / 996 findings27.3 s | 77 error / 522 warning / 94 info96.0 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database analyze timed out after 650.7 s |
| rails 1ec64ce8 | Ruby | 33 blocking / 446 findings15.9 s | 45 error / 197 warning / 0 info72.6 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database analyze timed out after 1213.4 s |
| flask d318b683 | Python | 2 blocking / 53 findings2.6 s | 0 error / 15 warning / 0 info / 1 other (MEDIUM)9.3 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | 8 blocking-equivalent / 8 results41.3 s |
| fastify 15ebc8e2 | JavaScript | 3 blocking / 318 findings28.7 s | 4 error / 2 warning / 0 info9.2 s | 0 error / 886 warning6.3 s | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | 0 blocking-equivalent / 0 results193.7 s |
| zod 7a002366 | TypeScript | 2 blocking / 1403 findings14.1 s | 1 error / 70 warning / 4 info / 4 other (MEDIUM)26.1 s | 8 error / 526 warning8.2 s | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database analyze failed (exit 99): [98/105] Loaded /home/runner/work/_temp/codeql-home/codeql/qlpacks/codeql/javascript-queries/2.4.5/Security/CWE-912/HttpToFileAccess.qlx. [99/105] Loaded /home/runner/work/_temp/codeql-home/codeql/qlpacks/codeql/javascript-queries/2.4.5/Security/CWE-020/MissingRegExpAnchor.qlx. [100/105] Loaded /home/runner/work/_temp/codeql-home/codeql/qlpacks/codeql/javascript-queries/2.4.5/Security/CWE-020/MissingOriginCheck.qlx. [101/105] Loaded /home/runner/work/_temp/codeql-home/codeql/qlpacks/codeql/javascript-queries/2.4.5/Security/CWE-506/HardcodedDataInterpretedAsCode.qlx. [102/105] Loaded /home/runner/work/_temp/codeql-home/codeql/qlpacks/codeql/javascript-queries/2.4.5/Diagnostics/ExtractedFiles.qlx. [103/105] Loaded /home/runner/work/_temp/codeql-home/codeql/qlpacks/codeql/javascript-queries/2.4.5/Diagnostics/ExtractionErrors.qlx. [104/105] Loaded /home/runner/work/_temp/codeql-home/codeql/qlpacks/codeql/javascript-queries/2.4.5/Summary/LinesOfUserCode.qlx. [105/105] Loaded /home/runner/work/_temp/codeql-home/codeql/qlpacks/codeql/javascript-queries/2.4.5/Summary/LinesOfCode.qlx. Starting evaluation of codeql/javascript-queries/AngularJS/DisablingSce.ql. [1/105 eval 23.3s] Query failed: codeql/javascript-queries/AngularJS/DisablingSce.ql (Query evaluation ran out of Java heap (Java heap (and arrays) maximum: 772 MiB). (eventual cause: OutOfMemoryError "Java heap space")). CodeQL is out of memory. Try running CodeQL on a larger runner (hosted or self-hosted). If you continue to encounter this issue, contact GitHub Support. |
| gin dcaa4296 | Go | 0 blocking / 82 findings71.7 s | 1 error / 37 warning / 0 info / 2 other (MEDIUM)5.4 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database create failed (exit 2): Initializing database at /tmp/gt-h2h-2ce061/gin.codeql-db. A fatal error occurred: Go does not support the none build mode. Please try using one of the following build modes instead: autobuild, manual. |
| laravel cdbd17f7 | PHP | 4 blocking / 73 findings6.8 s | 5 error / 97 warning / 0 info / 1 other (MEDIUM)25.6 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — CodeQL has no security-extended query suite for PHP |
| got 687eb7dc | TypeScript | 0 blocking / 348 findings35.7 s | 0 error / 5 warning / 1 info / 1 other (MEDIUM)10.0 s | 125 error / 100 warning4.0 s | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | 18 blocking-equivalent / 18 results130.2 s |
| hono eebdf7be | TypeScript | 14 blocking / 1684 findings11.1 s | 64 error / 11 warning / 1 info41.4 s | 186 error / 488 warning7.5 s | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | 19 blocking-equivalent / 25 results214.2 s |
| spring-petclinic 818c4136 | Java | 8 blocking / 64 findings141.0 s | 1 error / 13 warning / 2 info4.7 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database analyze failed (exit 99): Starting evaluation of codeql/java-queries/Diagnostics/ExtractionErrors.ql. [1/124 eval 286ms] Evaluation done; writing results to codeql/java-queries/Diagnostics/ExtractionErrors.bqrs. Starting evaluation of codeql/java-queries/Diagnostics/ExtractionWarnings.ql. Starting evaluation of codeql/java-queries/Diagnostics/SuccessfullyExtractedFiles.ql. [2/124 eval 11ms] Evaluation done; writing results to codeql/java-queries/Diagnostics/ExtractionWarnings.bqrs. Starting evaluation of codeql/java-queries/Likely Bugs/Arithmetic/InformationLoss.ql. [3/124 eval 4s] Evaluation done; writing results to codeql/java-queries/Diagnostics/SuccessfullyExtractedFiles.bqrs. Starting evaluation of codeql/java-queries/Likely Bugs/Concurrency/UnreleasedLock.ql. [4/124 eval 8ms] Evaluation done; writing results to codeql/java-queries/Likely Bugs/Arithmetic/InformationLoss.bqrs. [5/124 eval 18.1s] Query failed: codeql/java-queries/Likely Bugs/Concurrency/UnreleasedLock.ql (Query evaluation ran out of Java heap (Java heap (and arrays) maximum: 772 MiB). (eventual cause: OutOfMemoryError "Java heap space")). CodeQL is out of memory. Try running CodeQL on a larger runner (hosted or self-hosted). If you continue to encounter this issue, contact GitHub Support. |
| axum 8b30afbf | Rust | 5 blocking / 431 findings157.8 s | 9 error / 37 warning / 0 info / 1 other (MEDIUM)5.1 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — CodeQL has no security-extended query suite for Rust |
| cleanarchitecture 3a06afb9 | C# | 4 blocking / 87 findings5.1 s | 0 error / 16 warning / 0 info / 3 other (MEDIUM)5.5 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database create timed out after 697.9 s |
| ktor f92fad04 | Kotlin | failed — no JSON report; blocking read from the summary line89.7 s | failed (exit 2) — no JSON output2.1 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — CodeQL has no security-extended query suite for Kotlin |
| vapor 630763c5 | Swift | 0 blocking / 47 findings2.1 s | 5 error / 8 warning / 0 info / 2 other (MEDIUM)5.0 s | not run — not a JavaScript/TypeScript repository | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database create failed (exit 2): Initializing database at /tmp/gt-h2h-2ce061/vapor.codeql-db. Running build command: [/home/runner/work/_temp/codeql-home/codeql/swift/tools/autobuild.sh] Running command in /tmp/gt-h2h-2ce061/vapor: [/home/runner/work/_temp/codeql-home/codeql/swift/tools/autobuild.sh] A fatal error occurred: Exit status 1 from command: [/home/runner/work/_temp/codeql-home/codeql/swift/tools/autobuild.sh] |
| nest 39fbddae | TypeScript | 9 blocking / 944 findings30.6 s | 5 error / 43 warning / 0 info / 1 other (MEDIUM)25.5 s | 17 error / 382 warning11.1 s | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database create failed (exit 2): Initializing database at /tmp/gt-h2h-2ce061/nest.codeql-db. Running build command: [] Running command in /tmp/gt-h2h-2ce061/nest: [/home/runner/work/_temp/codeql-home/codeql/javascript/tools/autobuild.sh] Finalizing database at /tmp/gt-h2h-2ce061/nest.codeql-db. Running TRAP import for CodeQL database at /tmp/gt-h2h-2ce061/nest.codeql-db... Importing TRAP files A fatal error occurred: Could not write relation to /tmp/gt-h2h-2ce061/nest.codeql-db/db-javascript/default/cache/working/hasLocation11350304425550759253.relfrag (eventual cause: IOException "No space left on device") Failed to write diagnostic information. |
| trpc 66d05445 | TypeScript | failed — no JSON report; blocking read from the summary line28.8 s | 3 error / 68 warning / 8 info / 10 other (MEDIUM)19.6 s | 102 error / 511 warning8.0 s | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database create failed (exit 2): Initializing database at /tmp/gt-h2h-2ce061/trpc.codeql-db. Running build command: [] Running command in /tmp/gt-h2h-2ce061/trpc: [/home/runner/work/_temp/codeql-home/codeql/javascript/tools/autobuild.sh] A fatal error occurred: Exit status 1 from command: [/home/runner/work/_temp/codeql-home/codeql/javascript/tools/autobuild.sh] |
| apollo-server 53ac3c13 | TypeScript | failed — no JSON report; blocking read from the summary line17.4 s | failed (exit 2) — no JSON output2.1 s | failed (exit 2) — no JSON output5.0 s | not measured — needs a running SonarQube server and a scanner token; no server is provisioned for the corpus yet, and no number is written until one measures it | not measured — codeql database create failed (exit 2): OpenJDK 64-Bit Server VM warning: Insufficient space for shared memory file: 23644 Try using the -Djava.io.tmpdir= option to select an alternate temp location. A fatal error occurred: Cannot create logs directory at '/tmp/gt-h2h-2ce061/apollo-server.codeql-db/log'. (eventual cause: FileSystemException "/tmp/gt-h2h-2ce061/apollo-server.codeql-db: No space left on device") |
Generated 2026-10-05 by scripts/head-to-head.js on engine v1.62.0. Every tool saw the same bytes; a run that hit the time box is written as timed out with the seconds it used, and a tool the runner could not install is written as unavailable. The script and the manifest are in the repository, so anyone can re-run the table.
Confidence — the block threshold, measured on the same run
Every error finding carries a confidence score: 1.0 unless a signal fires (a test file, a fixture, a comment, a string literal), and only findings at or above the block threshold fail the gate. The threshold used to be a number someone liked. Now each corpus run sweeps the alternatives: how much would block on the clean repositories, and how much the vulnerable one would still catch.
| Block at confidence ≥ | Blocking on clean repos | Still caught on NodeGoat |
|---|---|---|
| 0.50 | 219 | 53 |
| 0.60 | 219 | 53 |
| 0.65 | 156 | 53 |
| 0.70shipped | 156 | 53 |
| 0.75 | 156 | 53 |
| 0.80 | 156 | 53 |
| 0.85 | 156 | 53 |
| 0.90 | 156 | 53 |
| 0.95 | 156 | 53 |
| 1.00 | 156 | 53 |
Confidence is not a continuum: this run produced only 6 distinct values (1.00, 0.60, 0.40, 0.24, 0.20, 0.12). The shipped threshold of 0.7 sits between 0.6 and 1, so any value in that gap gives the same gate. The signals kept 159 of 315 error findings off the clean repositories and cost 0 of 53 on the vulnerable one.
What remains on a repository is reported, not hidden. Django’s ORM builds SQL by string inside django/db, which is the one place that is the job; rails runner evaluates its input by contract. A scanner should say so, and the project is right to accept it.
Generated 2026-10-05 by scripts/real-world-precision.js on engine v1.62.0 @ 8f2240d8. The corpus manifest and the runner are in the repository, so anyone can re-run the table. What the 122 modules check → Which rules teams silence →