Repository navigation
test(configuration): pin save-time url and image refusal rules that survived mutation - #2377
Merged
Merged
Conversation
…urvived mutation A mutation sweep of the 10-13 save-time refusals (#2351, #2353, #2359, #2371, #2362, #2363, #2372) found 57 of 193 mutants that no test killed. New rows kill 49 of them; the other 8 are equivalent or change only refusals of values no client reads as a credential. - URL userinfo: Codex socksUrl, Discord voice, voice-call and Talk realtime provider proxies; scheme-less proxies with a backslash or double quote in the user; http, wss and ftp without slashes; a variable special scheme; a URL in a reference's fallback; escaped references and Windows paths in fallbacks. - git config: lowercase variable names, first-= split, quoted quotes, a reference key, a user-only proxy, and a URL subsection around a variable. - Work budget: shared across URL fields, Preset variables charged, scheme-less proxies charged for both readings, git -c proxies budgeted (12 s unbudgeted). - baseUrl slash rule with references: tabs, leading spaces, scheme case, backslashes, and each of the three renderings. - Image references: SHA-384, empty registry port, localhost and index.docker.io path lengths, and a double hyphen after a registry port.
Drop the lowercase git_config_* rows (git reads only the uppercase names, so they pinned an over-refusal), give the escaped-fallback accept its own subtest, move the 12 s note to the git config row, and reword the fixture's registry-port comment. The MCP Authorization-V2 accept row (first commit) was missing from its message.
Contributor
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
# Conflicts: # tests/integration/configuration-controller.test.mjs
freeqaz
had a problem deploying
to
integration-qa-pr
October 14, 2026 02:01 — with
GitHub Actions
Failure
freeqaz
had a problem deploying
to
integration-qa-pr
October 14, 2026 02:01 — with
GitHub Actions
Failure
Contributor
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: test(configuration): pin save-time url and image refusal rules that survived mutation This is item 1/1 in the current shard. Shard 0/1. This temporary status tracks the active review worker. The completed review will appear in the durable ClawSweeper review comment. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
This branch had an error being 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.
Problem
The save-time refusals that landed on 10-13 (#2351, #2353, #2359, #2371, #2362, #2363, #2372) were proven live, but nobody had checked that their tests would catch a regression. A mutation sweep of 193 mutants over those rules found 57 that no test killed. Examples:
socksUrl, Discord voice TTS, voice-call TTS or Talk realtime proxy checks;ftporws(s)as special schemes;GIT_CONFIG_PARAMETERSproxies (a 60 KB value then takes 12 s);'key=value'at the last=;sha384digest or thelocalhostregistry rule.Change
This change adds tests only, in two files. Each new row fails on its mutant and passes on main.
tests/integration/configuration-controller.test.mjshttp:,wss:andftp:with no slashes; a Preset variable scheme with no slashes; a URL that starts inside a reference's fallback. Two accepts: an escaped$${NAME}, and a Windows path in afile:fallback.=;'\''quoting; a reference as the key; a user-only proxy without a scheme; a Preset keyhttp.https://{{ vars.url }}/.proxy; an accepted escaped key.HTTPS_PROXYof 415 fallbacks, charged for both readings; aGIT_CONFIG_PARAMETERSproxy of fallbacks, which took 12 s unbudgeted (each refusal under 500 ms); an accepted URL of escaped fallbacks, which cost nothing.Authorization-V2: Bearer ${NAME}.tests/fixtures/image-reference-cases.mjs(used by preflight, Compute, the chart and both image tools)localhost; a 256-characterindex.docker.iopath withlibrary/; a double hyphen after a registry port. The chart's remote-name regex can read a plain dotted host as a path component, which hides its first-component rule.Verification
configuration-controller,kubernetes-configuration,presets,profile-preflight-chart-parity(withhelm template),bootstrap-volume,production-image-upgrade,kubernetes-compute,configuration-startup,logging-packagingandproduction-kubernetes-packaging.namesGitProxylength guard, which is dead code (a key that starts with a section and ends in.proxyis always long enough);>vs>=at the budget;@(1): the covered-candidate skip. A differential fuzz found 1 to 3 differences per 90k cases, in the obfuscation class that fix(presets): refuse url userinfo in every env map and any env value with a scheme #2353 left on purpose.NO_PROXYexemption, which only matters for an@inNO_PROXY;git_config_*names, which git ignores.taskset -c 20,21:configuration-controller(3 s; rerun 20/20 after merging main),profile-preflight-chart-parity(31 s, same as main),bootstrap-volumeandproduction-image-upgrade.=proxy rows are userinfo to a real client. Its nits are applied.//message from finding 1285), two new rows expect that message:HTTPS:${MODEL_HOST}/v1andhttps:${MODEL_SLASHES:-//}…. All 18 baseUrl mutants were rerun and are killed.--checkare clean on both files. Prettier was first shown to fail on a badly formatted file.Risks
This is test-only. The budget rows sit between the thresholds on main and on the mutant:
HTTPS_PROXY: main refuses from 385 fallbacks and the mutant from 445; the row uses 415.So retuning the budget constant would need these rows updated, as the existing budget rows would.