Repository navigation
Audit canary: three seeds per code domain, dealt across the domains - #1102
Merged
Merged
Conversation
The first canary measurement drew six application-security seeds of six: the pool held twelve of them, one hosted seed, and no supply-chain seed, so recall for hosted and supply-chain went unmeasured. - Two hosted seeds: security-hosted.md "Origin boundary" #2 (reverses #904) and "Relay boundary" #4 (synthetic). - Three supply-chain seeds, each on a clause no script answers: "Bundled runtime" #2, "Disclosure" #2, and the "Disclosure" #4 judgement item. Clauses scripts/supply-chain-config.test.mjs judges are left unseeded, since the domain runs that test as its evidence. - shuffle deals the pool round-robin across the code domains, so a draw of six takes two from each; the pool test requires three per domain. - security-audit.md and its rationale record both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deploying mouseterm with
|
| Latest commit: |
f975f89
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://06179220.mouseterm.pages.dev |
| Branch Preview URL: | https://audit-canary-seeds.mouseterm.pages.dev |
dormouse-bot
approved these changes
Oct 11, 2026
nedtwigg
requested a deployment
to
hosted-preview
October 16, 2026 19:14 — with
GitHub Actions
Waiting
This branch is waiting to be deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The first canary measurement (run 37720586893) drew six application-security seeds out of six. The pool held twelve application-security seeds, one hosted seed and no supply-chain seed, so recall for the
hostedandsupply-chaindomains was never measured. With this change every code domain has at least three seeds, and each draw takes an equal share from each domain.Seeds added (inert
.patchdata under.github/audit/canaries/)Each seed applies cleanly to
main, alone and over the rest of the pool. Each removes or adjusts only the test case that would fail on it, so the seeded tree passes CI the way a regression onmainwould.FAIL IFit breakssecurity-hosted.md-> "Origin boundary" #2security-hosted.md-> "Relay boundary" #4security-supply-chain.md-> "Bundled runtime" #2security-supply-chain.md-> "Disclosure" #2security-supply-chain.md-> "Disclosure" #4 (judgement item)Hosted now has 3 seeds (with the existing "Rendezvous boundary" #1 seed), supply-chain 3, and application-security 12.
What is not seeded. I left the supply-chain clauses that
scripts/supply-chain-config.test.mjsjudges unseeded: the pnpm and Renovate cooldowns,devEngines, thenpxpin, the zizmor and actionlint pins, andrelease.yml'snode-version-file. The domain is told to run that test as its evidence before any model reads the file, so a seed there would measure the test rather than the audit's recall. The harness has no deterministic-gate seed type, and none of these seeds needs one. Each supply-chain seed breaks a clause that no script answers. I checked that the existing hosted seed, and both new hosted seeds, passscripts/e2e-lint.mjs.Harness
shufflenow deals the pool round-robin across the three code domains: both the domains and each domain's seeds are ordered by run-id hash. A draw ofCANARY_SEEDS=6therefore takes two seeds from each domain. A uniform draw from 12/3/3 would still have left supply-chain out of about one run in four.shuffle.security-audit.md-> "Canary recall" and its rationale record both changes. The caught/seeded figure now weights the domains equally.Verification
node --test scripts/security-audit-canary.test.mjs scripts/security-audit.test.mjs: 133 pass.pnpm lint:specsandpnpm lint:mdpass.actionlintandworkflow-lintpass.e2e-lint,outbound-lint,loopback-lint,workflow-lintandpublic-docs-lintpass; thegenerate-depssnapshots do not change; hostedtscandboundary.test.tspass.workers.test.ts, because Docker is unavailable here.🤖 Generated with Claude Code