diff --git a/backend/scripts/p11-acceptance.mjs b/backend/scripts/p11-acceptance.mjs index 61cd022b..0a2c4864 100644 --- a/backend/scripts/p11-acceptance.mjs +++ b/backend/scripts/p11-acceptance.mjs @@ -773,13 +773,15 @@ async function productionChecks(ctx) { const cases = [ ["invalid-uri", (workspace) => { workspace.evidence.source.uri = "/etc/passwd"; }, "evidence.source.uri"], ["invalid-secret-field", (workspace) => { workspace.evidence.source.password = ctx.secretValues.rejected; }, "evidence.source.password"], - ["missing-evidence-tree", (workspace) => { workspace.workspace.id = "p11-missing"; workspace.workspace.name = "P1.1 p11-missing"; workspace.workspace.description = "Missing evidence tree"; workspace.semantic_index.vector_store.collection = "p11-missing"; workspace.evidence.source.uri = "p11-missing/evidence"; }, "evidence.source.uri"], + ["missing-evidence-tree", (workspace) => { workspace.workspace.id = "p11-pending"; workspace.workspace.name = "P1.1 pending"; workspace.workspace.description = "Catalog-only slot awaiting bootstrap"; workspace.semantic_index.vector_store.collection = "p11-pending"; workspace.evidence.source.uri = "p11-pending/evidence"; }, "evidence.source.uri"], ]; const outcomes = []; for (const [id, mutate, field] of cases) { const workspace = structuredClone(base); mutate(workspace); - const response = await request(ctx, `negative-schema-${id}`, "POST", "/workspaces/validate", { workspace }, false, { case: id, expectedInputField: field }); + const endpoint = id === "missing-evidence-tree" ? "/workspaces/publish" : "/workspaces/validate"; + const payload = id === "missing-evidence-tree" ? { action: "create", workspace, baseCommit: ctx.publishHead } : { workspace }; + const response = await request(ctx, `negative-schema-${id}`, "POST", endpoint, payload, false, { case: id, expectedInputField: field }); safeErrorEnvelope(response, "workspace_invalid", 400); outcomes.push({ case: id, status: response.status, field }); }