Repository navigation
test(configuration): pin 10-14 save, endpoint and response-cap rules that survived mutation - #2421
Merged
Merged
Conversation
…utation Rows for the model selection, fallback, Preset variable, credential slot, sensitive key, URL authority, size-first, IPv4 endpoint and response cap rules whose conditions no test exercised.
Contributor
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review blockedAutomated review did not run, so no review verdict was produced. Reason: The input-safety check rejected material in this revision. No detected value, path, or scanner output is reproduced here. Automatic review is on hold, including after source changes. Request a fresh re-review after resolving the failure; maintainers can also release the hold through an intentional scanner-policy update. Next step: If this is a genuine credential, remove and rotate it. If it is an intentional test fixture, a maintainer must review and qualify it. |
freeqaz
had a problem deploying
to
integration-qa-pr
October 14, 2026 12:28 — with
GitHub Actions
Failure
freeqaz
had a problem deploying
to
integration-qa-pr
October 14, 2026 12:28 — with
GitHub Actions
Failure
…hecked via the controller
freeqaz
marked this pull request as ready for review
October 14, 2026 12:46
freeqaz
had a problem deploying
to
integration-qa-pr
October 14, 2026 12:47 — with
GitHub Actions
Failure
freeqaz
had a problem deploying
to
integration-qa-pr
October 14, 2026 12:47 — with
GitHub Actions
Failure
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 10-14 landings added save-time and endpoint rules, each with tests. A mutation sweep checked whether those tests would catch a regression in each rule's conditions. The rules covered:
The sweep generated 252 mutants: flipped comparisons, dropped regex alternatives, removed early returns and off-by-one caps. Main's tests killed 171 of them. These 81 survived:
openai/with no model, roottts.summaryModel,fallbacksthat is not a list, and an entry that holds only amodelspolicy (Codex projection).canSpell: overlapping literals, and the 64-character literal limit on a Preset Agent ID.openrouter:auto/:free: only the exact selectors read as openrouter.${NAME}followed by more text,${9X}, and an object with noid.secret,api_key,encryptKey,privateKey,serviceAccountRef, the file/path/dir/env exemptions, the synology manifest fields, and the first refused key being the one named.tools.media.video, and the count words (min,num,total,context,input,completion, singulartoken).Change
Test rows only, in six files, next to the existing rows, with no new helpers:
configuration-controller.test.mjs: rows in the model selection, Preset model provider, OpenRouter, roster, key slot and sensitive slot tables. One Preset-only option-name subtest. Agent provisioning added to the size-first test, through the controller, because the provision route's body limit refuses a 1 MiB document first. Sensitive-slot subtests are numbered so names stay unique.url-authority.test.mjs: seven refused spellings, one accepted spelling and one Preset variable spelling.kubernetes-compute.test.mjs: the IPv4 endpoint message is now pinned,HTTPS://192.0.2.1/v1is accepted, and an entry whose only model setting ismodelsis checked in the Codex projection.profile-renderer.test.mjs: a spelling refusal for an IPv4 host.docker-compute.test.mjs: a/versionreply of exactly 4 MiB is read whole.service-account-driver.test.mjs: a ChatGPT reply of exactly 4 MiB, declared or streamed, is read, and one byte more is refused.Verification
strictDecimalIpv4check inopenAiBaseUrlRewritesIpv4never decides: the URL parser always writes canonical octets, sowritten !== hostnamedecides alone.refuseLiteralGatewayPasswordcall in the Configuration Driver repeatsvalidateConfigurationSettings, which every save path has run since fix(configuration): read openrouter selectors as openrouter and run one rule set on every save #2400.pluginRuntimeSnapshot. Only anopenaisourcebase_urlstored before fix(credential-sources): refuse rewritten endpoint spellings and non-dns openai hosts #2378 reaches it, and no pure-node test drives such a source.fastgets a different save message under the mutant. Main lets a bare primary or fallback through at save, and every deployment refuses it. Board finding 1335 asks whether save should refuse it.taskset -c 20,21) (configuration-controller, url-authority, docker-compute, service-account-driver, kubernetes-compute, profile-renderer).eslintandprettier --checkare clean on the touched files. Prettier was shown to fail on them before formatting.Risks
Test-only. The 4 MiB bodies add about a second to
docker-computeandservice-account-driver. None of the touched files is touched by #2415, #2417 or #2418.