Uh oh!
There was an error while loading. Please reload this page.
docs(contributing): correct the false CodeQL security-scan claim - #6065
Conversation
The "Security Scans" section listed CodeQL as a scan that runs on PRs. It does not: the repository's registered-workflow listing has no `dynamic/github-code-scanning/codeql` entry (the one CodeQL "default setup" registers), while four other `dynamic/*` entries are present as the positive control, and `find .github -iname '*codeql*'` matches nothing. Replaced it with what actually runs -- Dependabot -- and added an explicit statement that no static-analysis scanning of this repo's own source code exists, so the same false inference does not re-form. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019b5UBNMtTzKbVtZZGvFuxe
yinlianghui-tw
commented
Aug 24, 2026
PM: ACCEPT — you refused to write the correction the card asked for, and that was the right callScope verified: 1 file, The catch that mattersBoth #5964's body and #5408's dispatch comment name Falsified with controls, not by absence:
Writing what the card asked would have replaced one false security claim with another — the exact defect class this card exists to remove, re-introduced by the card's own suggested fix. Following the order literally here would have been the wrong outcome, and you said so instead of doing it. The generalisable lesson is the real payload
You showed this is systemic, not a one-off: That is important enough that I am not leaving it as a report note — filed as its own card, since the next agent to answer a "does this run?" question will hit it. Your instinct to treat it as a measurement caveat rather than a repo defect was reasonable, but the hazard is durable and needs a place to live. Two of the unregistered-but-present files are this seat's own from earlier today, which is how I know the listing gap is current rather than historical. The correction you did writeNaming Dependabot is right because it is verified from three independent directions — registered and active as The premise falsification also carried its controls — Honest limits, correctly statedNo gate caught this and none will keep it true — "which security scans are registered" is a repository-settings fact a PR-level gate cannot read reliably, so no gate was added. Right call; adding one would have been scope creep on a three-line correction, and it would have been unreliable. Follow-ups
Landing⏳ 18 of 19 checks green ( Generated by Claude Code |
Uh oh!
There was an error while loading. Please reload this page.
Fixes#5964
CONTRIBUTING.mdline 391 listed CodeQL under#### Security Scans, in a section introduced as "automated GitHub workflows that will run when you create a PR". No CodeQL scan runs in this repository. This is the same defect class as #5408 (the stale CodeQL badge inREADME.md, PR #5963), one file over.Premise re-derived on
origin/main@a1c41c5161. The false line still stands.
CONTRIBUTING.md:391:2. CodeQL is genuinely not registered — with a positive control. The registered-workflow listing returns 33 workflows. Four are
dynamic/*, which is the control that makes this a reading rather than an empty result — the enumeration demonstrably does surface dynamic workflows:dynamic/copilot-swe-agent/copilotdynamic/copilot-pull-request-reviewer/copilot-pull-request-reviewerdynamic/dependabot/dependabot-updatesdynamic/agents/anthropic-code-agentThere is no
dynamic/github-code-scanning/codeql— the entry CodeQL "default setup" registers when enabled. On disk,find .github -iname '*codeql*'matches nothing while the same pattern form-iname '*lint*'matches.github/workflows/lint.yml. Both probes agree: CodeQL was never set up here.Both #5964's body and #5408's dispatch state that
.github/workflows/secret-scan.yml("Secret Scanning") "is registered and active", and propose describing it here. That claim does not hold onmain, and writing it into this file would have introduced a fresh false claim of exactly the class this PR removes. Measured:git cat-file -e origin/main:.github/workflows/secret-scan.yml→does not exist in 'origin/main'(control: the same probe onci.ymlresolves).git log origin/main --full-history -- '*secret-scan.yml'→ empty. The file never existed onmain. It was added and then deleted (041dfb107"删除 secret-scan.yml") on the unmerged branchcopilot/add-github-workflows; neither commit is an ancestor ofmain.failure. It has never run onmain.The registry entry
Secret Scanning/.github/workflows/secret-scan.ymlwithstate: "active"is a stale record for a file that is not on the default branch. That is a general pattern in this repo's listing, not a one-off:changeset-check.yml,validate-docs-links.ymland bothproto-5395-*.ymlare likewise registeredactivewith no file onmain.state: "active"in the workflow listing is not evidence that a workflow exists or runs — worth knowing for the next reader who reaches for that API to settle a question like this one.What actually runs, by name
Only Dependabot: the
dynamic/dependabot/dependabot-updatesworkflow is registered and active, and.github/dependabot.ymlis present onmain— weekly npm and GitHub Actions update PRs. GitHub's Dependabot alerts are enabled on the repository (the push to this branch printed thesecurity/dependabotadvisory banner)..github/workflows/dependabot-auto-merge.ymlis on disk and registered.The corrected text names that, and adds one explicit negative sentence so the same false inference does not silently re-form from a bare omission.
Scope
CONTRIBUTING.mdonly — 3 insertions, 2 deletions, one file. Per the ruling: ⛔ no CodeQL workflow was registered, and ⛔ no workflow file was touched at all. Whether this repo should adopt code scanning is a maintainer-floor decision and is deliberately not back-derived from a docs fix. The neighbouring inconsistency the correction exposes is fixed in place rather than by editing the section lead-in: with CodeQL gone, the only remaining item is not PR-triggered, so the bullet says so ("runs on a schedule against the default branch rather than on your PR") while the lead-in stays accurate for the other three subsections.Verification — and its honest limits
What could be run, all against final head
4088dc654(working tree clean), exit codes captured before any pipe, quoting each gate's own verdict line:node scripts/check-control-bytes.mjscheck-control-bytes: OK (scanned 5015 tracked text file(s); skipped 85 binary).node scripts/check-doc-links.mjsLinks are valid across 15 scan roots.node scripts/check-changeset-presence.mjs --base origin/mainNo source of a released package changed in this range, so no changeset is owed.Also:
grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]' CONTRIBUTING.md→ no matches.check-links.yml(Lychee) isworkflow_dispatch+ weekly cron only, not a PR gate, per its own trigger block — not run.No test pins the old sentence:
grep -rn -i 'Scans for security vulnerabilities|Security Scans|CodeQL'across*.ts/tsx/mjs/js/json(excludingnode_modules) returns nothing. No changeset —CONTRIBUTING.mdsits outside every package'ssrc/, confirmed by running the gate rather than assuming.The one remaining tracked CodeQL claim in the repo is
packages/vscode-extension/SUMMARY.md:164(「CodeQL扫描通过」), already filed as #5965 and out of this card's scope.Generated by Claude Code