diff --git a/supervisor/Dada.Supervisor.Tests/Program.cs b/supervisor/Dada.Supervisor.Tests/Program.cs index a369061..e94521c 100644 --- a/supervisor/Dada.Supervisor.Tests/Program.cs +++ b/supervisor/Dada.Supervisor.Tests/Program.cs @@ -142,6 +142,14 @@ internal static class Program "--execute-controlled-real", }; EqualSequence(externalArguments, ControlledExternalValidationLauncher.ValidateArguments(externalArguments), "controlled external argument allowlist"); + var stableGeminiArguments = externalArguments.ToArray(); + stableGeminiArguments[3] = "gemini-3.1-flash-image"; + EqualSequence(stableGeminiArguments, ControlledExternalValidationLauncher.ValidateArguments(stableGeminiArguments), "stable Gemini external argument allowlist"); + var previewGeminiArguments = externalArguments.ToArray(); + previewGeminiArguments[3] = "gemini-3.1-flash-image-preview"; + Throws( + () => ControlledExternalValidationLauncher.ValidateArguments(previewGeminiArguments), + "preview Gemini external argument rejected"); Throws( () => ControlledExternalValidationLauncher.ValidateArguments(externalArguments.Where(value => value != "--confirm-controlled-real").ToArray()), "controlled external confirmation required"); diff --git a/tests/package/wp7-02-external-contract.test.mjs b/tests/package/wp7-02-external-contract.test.mjs index 7066779..8ab5e47 100644 --- a/tests/package/wp7-02-external-contract.test.mjs +++ b/tests/package/wp7-02-external-contract.test.mjs @@ -8,6 +8,7 @@ import { buildBlockedModelEvidence, buildModelContractPlan, inspectAiGatewayReadiness, + productModelIdForControlledState, validateCandidateDependency, validateIndependentEvidenceSet, } from "../../scripts/lib/wp7-02-external-contract.mjs"; @@ -31,6 +32,9 @@ test("TDD-WP7-EXT-001 fixes the user-approved replacement model set", () => { "gemini-3.1-flash-image", "gpt-image-2", ]); + assert.equal(productModelIdForControlledState("gemini-3.1-flash-image"), "gemini-3.1-flash-image-preview"); + assert.equal(productModelIdForControlledState("gpt-image-2"), "gpt-image-2"); + assert.throws(() => productModelIdForControlledState("gemini-3-pro-image-preview"), /WP7_02_MODEL_NOT_ALLOWED/); for (const modelId of WP7_02_MODEL_IDS) { const plan = buildModelContractPlan(modelId); assert.equal(plan.model_id, modelId);