Generated

Every change, in the order it merged

This is the main branch of the engine, read back as a list. Each entry is a commit that reached main: the pull request it came from, the part of the product it touched most, and the scan modules it changed. It is written by a script from the repository history, so it cannot describe a change that did not ship or omit one that did.

Engine version
v1.61.0
Changes listed
150
Via pull request
48
Modules touched
88

Regenerated 2026-09-06 at c51f923 · history shown from 2026-08-05 · the narrative behind each release is in docs/HISTORY.md

6 September 2026

5 September 2026

4 September 2026

2 September 2026

1 September 2026

  • engine

    fix(python): two false positives on the first Python repo we ever scanned

    direct to main2aced502 filesalso tests

    claudeCompliance

  • engine

    fix(deadCode): a `.js` specifier that means `.ts` broke every re-export chain

    direct to mainea3d6672 filesalso tests

  • tests

    fix(codeQuality): console.log outside library code is info, not a warning

    direct to main7230bbf4 filesalso engine

    codeQuality

  • engine

    fix(security): an argv array is not a shell command

    direct to main49032ed2 filesalso tests

    security

  • tests

    test(confidence): the 0.20-vs-full question answered — the scorer was right

    direct to main438787f1 file

  • engine

    fix(innerHTML): our own false positives, found by auditing our side of the diff

    direct to mainfd5db3d2 filesalso tests

  • engine

    fix(scope): .mjs and .cjs were never scanned for dangerous patterns

    direct to main2230dcf12 filesalso tests

    aiReviewcodeQualitycompatibilitydataIntegritydocumentationintegrationTestsmutationperformancesecurity

  • engine

    fix(flakyTests): 54% of the warning noise on a clean repo was hermetic tests

    direct to main7a292b12 filesalso tests

    flakyTests

  • tests

    test(secrets): pin the invariant that stops a neighbouring field hiding a key

    direct to mainf94ebd21 file

  • engine

    feat(secrets): a real key in a README blocks; a documented example does not

    direct to mainf2c431b2 filesalso tests

    secrets

  • engine

    fix(readiness): the derived score disagreed with the gate it derives from

    direct to main278925a3 filesalso tests

    deployReadiness

  • engine

    fix(secrets): a live key in a README was invisible to us

    direct to main6b360f03 filesalso tests, docs

    secrets

  • engine

    fix(score,scope): the public badge graded customers backwards

    direct to main473cfe28 filesalso website, tests

    accessibilityseovisual

  • engine

    fix(scope): we blocked axios, lodash, chalk and fastify — 5 of 6 clean repos

    direct to main595c32011 filesalso tests, docs

    accessibilityauthBypasshardcodedUrlseosyntaxvisual

  • docs

    docs(benchmarks): precision/recall on third-party code, measured today

    direct to main2ba612c1 file

  • engine

    fix(mcp,security): every MCP scan was crashing, and a second innerHTML rule

    direct to main4f6246b7 filesalso tests

    codeQualitysecurity

  • engine

    fix(security): correctly-escaped innerHTML was a blocking XSS finding

    direct to mainc37dc832 filesalso tests

    security

  • website

    fix(platform): our public map advertised a Vapron endpoint that never existed

    direct to mainc2ae9326 filesalso tests

31 August 2026

  • engine

    fix(mcp): the agent surface handed dev agents a silently short list

    direct to mainaaf95ea2 filesalso tests

  • our CI

    fix(bashSafety): a deploy that could exit 0 having restarted nothing

    direct to main3a54e9a6 filesalso engine, tests, tooling

    bashSafety

  • engine

    fix(a11y,visual,perf,data): one real defect, four rules reporting what they never observed

    direct to main695f7709 filesalso tests, website

    accessibilitydataIntegrityperformancevisual

  • website

    fix(authBypass): all 16 blocking findings were false positives

    direct to maine69f9a714 filesalso engine, tests

    authBypass

  • tests

    fix(security): rm -rf on webhook-supplied input, and an injection we shipped to customers

    direct to mainfd964908 filesalso engine, repo

    security

  • tests

    test(suppression): a mute with no positive control now fails CI

    direct to main29b5ca93 filesalso engine

    datetimeBug

  • engine

    fix(mcp,playground): two places we told the customer something untrue

    direct to main872605c2 filesalso website

  • website

    fix(status): ready:true while the credential was known filler

    direct to main8f403222 filesalso tests

  • engine

    fix(secrets): the second blanket skip, and the one I rebuilt while fixing the first

    direct to maina09e4232 filesalso tests

    secrets

  • engine

    fix(lint): one unnecessary escape has held main red for 24 commits

    direct to main8d134471 file

  • engine

    fix(secrets): a blanket process.env skip made fallback credentials unreachable

    direct to main744e8f42 filesalso tests

    secrets

29 August 2026

  • tooling

    fix(smoke): the */5 cron is not a 5-minute check — real cadence moves to the box

    direct to main09d1efc6 filesalso our CI, docs

  • website

    fix(status): the preferred git host could go dark with nothing reporting it

    direct to main56b04f81 file

  • tests

    fix(scanner): our missing browser was reported as a defect in the customer's site

    direct to maine5302325 filesalso engine

    chaosexplorer

  • CI integration

    docs(smoke): correct the vapron latency claim — path, not server

    direct to main755f86f3 filesalso tests, docs

  • CI integration

    feat(smoke): empire-smoke targets corrected and actually scheduled (KI #102)

    direct to main9be1b4c5 filesalso our CI, tests, docs

  • docs

    fix(config): our own .gatetest.json described protection that did not exist

    direct to main37d3ba22 filesalso repo

  • engine

    feat(cli): the gate stopped ignoring your flags in silence

    direct to main26d503c3 filesalso tests

  • tests

    fix(tests): MCP scan_local test used a 30s timeout its siblings had already outgrown

    direct to main0bb30ad1 file

  • tests

    fix(tests): stale model id broke the legacy-model guard

    direct to main2b205ba1 file

  • docs

    docs(roadmap): record the fourth instance of the duplicated-helper class

    direct to main1716d631 file

  • website

    fix(preview): the file path was deciding finding severity, in both directions

    direct to main511cbc12 filesalso tests

  • website

    fix(preview): free scan returned file:null for every finding — one parser now, not two

    direct to mainaa76db73 filesalso tests

26 August 2026

  • engine

    feat(systemd): flag EnvironmentFile=- on scheduled jobs — a green that cannot turn red

    direct to main647af8f2 filesalso tests

    systemd

  • engine

    fix(config): warn on .gatetest.json keys nothing reads

    direct to main21ea14b2 filesalso tests

25 August 2026

  • docs

    docs: the launch playbook — Craig's ordered path from built to paying users

    direct to mainc69f9581 file

  • website

    feat(launch): feedback affordances + launch metrics + one-command first-push drill

    direct to main55dadcb8 filesalso docs, tests, tooling

24 August 2026

21 August 2026

  • website

    fix(deps): next 16.2.10 -> 16.3.1 + npm audit clean in both workspaces (closes KI #59)

    direct to mainb306cec5 filesalso docs, repo

  • website

    honesty: architecture diagram fix-stage label matches the shipped pipeline

    direct to maina88b6db1 file

  • website

    docs+honesty: production-ready checklist; site copy now describes only what ships

    direct to main48bb13d19 filesalso engine, docs

20 August 2026

  • docs

    Merge remote-tracking branches 'origin/flywheel/site-stats' and 'origin/flywheel/trainer-report'

    direct to maine39b4b034 filesalso website, tests

  • website

    chore(stats): refresh website testing statistics 2026-08-20

    direct to mainb21c6561 file

18 August 2026

  • docs

    docs(audit): report reflects the sore-point ships (registry, PR budget, reachability, attribution)

    direct to maine745ecb1 file

  • website

    feat(gate): "in this change" attribution — every PR finding says whether it sits in code the change touched

    direct to mainfdc99079 filesalso tests

  • website

    docs+site(sync): 'How we keep it quiet' on how-it-works; ROADMAP records the sore-point ships

    direct to main5cea8612 filesalso docs

  • engine

    feat(deps): reachability-gated dependency alerts — only imported production dependencies block

    direct to mainaf22bc73 filesalso tests

    security

  • engine

    feat(noise): one defect is one finding — cross-module dedupe, risk-first ranking, a 5-item PR budget

    direct to main99c593712 filesalso website, tests

  • engine

    fix(ops): readiness probe reads the real /api/scan/preview shape — a healthy funnel no longer reads as 'scanned nothing'

    direct to main49f54d52 filesalso tests

  • docs

    docs(audit): the 2026-08-18 deep-audit report — shipped, live status, complaints, FP measurement, top-20 advancements, Craig's list

    direct to main2ff7bbb1 file

  • docs

    fix(security): the hosted engine never executes customer-controlled code on the box

    direct to main68ef2ea6 filesalso tests, website

  • website

    fix(lint): our own quick gate on our own repo — two useless escapes, three raw anchors, one deliberate-fallback marker

    direct to main5df15095 filesalso engine

    undefinedRef

  • website

    fix(website): sync the site with the product — funnel, honesty and SEO fixes from the audit

    direct to maind34379344 filesalso tests, our CI, tooling, docs

  • website

    fix(security): close the unauthenticated SSRF / fail-open / free-AI-spend holes the audit found

    direct to main0936de113 filesalso engine, tests

  • engine

    fix(fake-fix): scope the git diff to the scanned project (-- .) — a subdirectory scan reported the enclosing repo's commit

    direct to main430e1951 file

    fakeFixDetector

  • engine

    fix(engine): cut blocking false positives ~90% on real repos — measured, with positive controls

    direct to main770aabb32 filesalso tests

    accessibilityauthBypassclaudeCompliancecodeQualitydataIntegritydeployReadinessdeployScriptValidatore2eenvVarslinksmutationperformancesecretssecurityseoundefinedRefunitTestsvisual

  • website

    fix(scan): every hosted scan runs the real engine on the whole repo — not 23 modules on 50 files

    direct to main070de6515 filesalso tests

  • website

    fix(scan): read public repos without any git-host credential — the funnel no longer dies with the PAT

    direct to mainb0b45c26 filesalso tests

  • docs

    Merge remote-tracking branch 'origin/flywheel/trainer-report'

    direct to main36f7350242 filesalso website, tests

  • website

    chore(stats): refresh website testing statistics 2026-08-18

    direct to main60160d11 file

16 August 2026

  • docs

    docs(ki-101): deploy half resolved — production is on HEAD for the first time

    direct to maind0d788f1 file

  • website

    fix(legal,deploy): stop publishing notes meant for counsel; deploy to the live checkout

    direct to main9244d8e3 filesalso our CI

  • engine

    fix(ops): the readiness probe ran red 100 times and still missed the outage

    direct to main8a732005 filesalso our CI, tests, tooling, docs

  • website

    fix(scan): an unreadable repo tree is not an empty repo — stop blaming the customer

    direct to main3a9437b2 filesalso tests

12 August 2026

  • our CI

    fix(deploy): fail when the deploy is inert — the warning was tried and lost

    direct to maina2b308d1 file

  • tests

    fix(preflight): name the fatal blocker, stop crying wolf about the optional cron

    direct to mainf8c9e1d2 filesalso tooling

  • engine

    fix(secrets): reading a secret is not hardcoding one — unblocks our own CI

    direct to main13db5222 filesalso tests

    secrets

  • precision corpus

    fix(corpus): re-baseline empty-js-module — and TIGHTEN its error ceiling to 0

    direct to mainbe0643b3 files

  • engine

    fix(accuracy): console.log is a library-code rule — stop firing it everywhere

    direct to main67ab0b02 filesalso tests

    codeQuality

  • engine

    fix(accuracy): stop blocking healthy repos on noise — 5 of 5 wrongful blocks

    direct to maind8480c54 filesalso tests

    lintsecretsunitTests

  • website

    feat(ui): wire up shadcn/ui + Radix, and defuse the token collision first

    direct to main227562f6 filesalso docs

6 August 2026

  • website

    feat(home): three doors in, and the website was quietly advertising 120 modules

    direct to mainff0fe9b5 filesalso tests

  • website

    feat(status): detect env vars that are SET but fake

    direct to maind68977a4 filesalso engine, tests

  • docs

    docs: first end-to-end production test — pipeline proven to the GitHub API, blocked there by dead credentials

    direct to main110c4e02 files

5 August 2026

  • website

    fix(security): lock down /api/heal/ssh — admin-only, env-only SSH target

    direct to maine12cf642 filesalso tests

  • tooling

    fix(deploy): every deploy would have stripped +x from tick.sh and killed the timers

    direct to mainb379a4e3 files

  • docs

    docs: record what probing the running system actually found

    direct to main3a3555c2 files

  • tooling

    feat(deploy): actually drain the scan queue — nothing ever scheduled the ticks

    direct to main39f4e3e6 files

  • website

    fix(worker): the scan queue never drained — 'column q.host does not exist'

    direct to maind3fe3731 file

  • tooling

    fix(deploy): the clean-tree guard made the deploy script single-use

    direct to main96df6c51 file

  • tooling

    fix(deploy): pipefail + grep -q made the restart check false whenever it was true

    direct to main54552a51 file

  • tooling

    fix(deploy): the deploy script built, said done, and never restarted

    direct to main3bd67ec1 file

Older history lives in docs/HISTORY.md, which also records the measurement behind each release. Want to see the engine on code it does not control? The precision benchmark is regenerated nightly.