diff --git a/tests/runner-e2e/CHAT-FEATURES.md b/tests/runner-e2e/CHAT-FEATURES.md index 68b57175504..8d34f8d7bac 100644 --- a/tests/runner-e2e/CHAT-FEATURES.md +++ b/tests/runner-e2e/CHAT-FEATURES.md @@ -505,3 +505,32 @@ This is an acknowledgment of an actual prior current-person secure save, not permission to execute a binding. The separate saved-value, payload, actor, continuation and governed-approval proofs remain mandatory. Original failures remain unchanged; v15 has not run natively. Counts, queries and clocks are unchanged. + + +The next coherent fixture calibration retains every original outcome from launch +3277 (all four selected cases reported FAILED). Multipart question v6 removes the +shared send helper's automatic human dismissal when the ordinary composer is +already usable below the saved form. Later human comments still classify the form +as historical, but it remains answerable and the latest human direction governs; +this setup correction does not guarantee that a native turn will reuse it. +The original query, same-form fidelity check and one answer-bound continuation +remain required. + +Company secret v16 and Personal secret v15, plus the four shared external secret +consumers at v8, admit a bounded instruction to enter the value at the independently +supported secure destination and save there. They retain the actual current-human +secure-save prerequisite, separate governed binding approval where required, +consumer delivery, owner isolation and no-leak proofs. Personal menu discovery +separates its single imprecise setup hint from independently validated, visible, +current-company task citation anchors; neither hint nor citation grants private +entry authority. + +Team install v9 accepts a truthful current report that the exact required skill +remains unattached when independently saved state proves it is still missing. +False attached/full-recovery claims and contradictions with an actually recovered +state remain rejected. This assertion calibration provides no runtime-migration +or new native pass credit. All 244 YAML definitions, original queries, model, +permissions, human/native bounds and clocks remain unchanged. Cap 2 and zero +retries remain the controller policy. Existing candidate core overlays stay +unmerged, and the held full-catalog gate remains 196 of 244. The next native +measurement is still required; none of these local controls regrades an original. diff --git a/tests/runner-e2e/chat-catalog-descriptors.json b/tests/runner-e2e/chat-catalog-descriptors.json index 1c9ea392098..daac102f7ef 100644 --- a/tests/runner-e2e/chat-catalog-descriptors.json +++ b/tests/runner-e2e/chat-catalog-descriptors.json @@ -2600,7 +2600,7 @@ "chat-catalog-domains/identity-support.ts", "chat-scenarios/connection-setup.yaml" ], - "oracleVersion": "paperclip.chat-catalog.external.v7", + "oracleVersion": "paperclip.chat-catalog.external.v8", "expectedRunCount": 1, "turnTimeoutMs": 120000, "attemptTimeoutMs": 420000, @@ -4231,7 +4231,7 @@ "cleanup-verification.ts", "runner.spec.ts" ], - "oracleVersion": "paperclip.chat-catalog.required-question.v5", + "oracleVersion": "paperclip.chat-catalog.required-question.v6", "expectedRunCount": 2, "turnTimeoutMs": 120000, "attemptTimeoutMs": 300000, @@ -4923,7 +4923,7 @@ "chat-flow.ts", "chat-scenarios/secrets.yaml" ], - "oracleVersion": "paperclip.chat-catalog.company-secret-controller-baseline.v15", + "oracleVersion": "paperclip.chat-catalog.company-secret-controller-baseline.v16", "expectedRunCount": 3, "minimumRunCount": 2, "expectedHumanMessageCount": 2, @@ -4964,7 +4964,7 @@ "../../packages/plugins/sdk/dist/index.js", "chat-scenarios/secrets.yaml" ], - "oracleVersion": "paperclip.chat-catalog.external.v7", + "oracleVersion": "paperclip.chat-catalog.external.v8", "expectedRunCount": 3, "expectedHumanMessageCount": 1, "minimumRunCount": 3, @@ -5009,7 +5009,7 @@ "../../ui/src/pages/secrets/SetMyUserSecretDialog.tsx", "chat-scenarios/secrets.yaml" ], - "oracleVersion": "paperclip.chat-catalog.personal-secret.v14", + "oracleVersion": "paperclip.chat-catalog.personal-secret.v15", "expectedRunCount": 3, "expectedHumanMessageCount": 2, "minimumRunCount": 3, @@ -5041,7 +5041,7 @@ "../../server/src/services/secret-proposal-notifications.ts", "chat-scenarios/secrets.yaml" ], - "oracleVersion": "paperclip.chat-catalog.external.v7", + "oracleVersion": "paperclip.chat-catalog.external.v8", "expectedRunCount": 4, "expectedHumanMessageCount": 4, "minimumRunCount": 4, @@ -5089,7 +5089,7 @@ "../../ui/src/pages/secrets/ImportFromVaultDialog.tsx", "chat-scenarios/secrets.yaml" ], - "oracleVersion": "paperclip.chat-catalog.external.v7", + "oracleVersion": "paperclip.chat-catalog.external.v8", "expectedRunCount": 3, "expectedHumanMessageCount": 2, "minimumRunCount": 2, @@ -6046,7 +6046,7 @@ "chat-flow.ts", "chat-scenarios/teams.yaml" ], - "oracleVersion": "paperclip.chat-catalog.team-install.v8", + "oracleVersion": "paperclip.chat-catalog.team-install.v9", "expectedRunCount": 2, "expectedHumanMessageCount": 2, "turnTimeoutMs": 120000, diff --git a/tests/runner-e2e/chat-catalog-domains/external-company-secret.ts b/tests/runner-e2e/chat-catalog-domains/external-company-secret.ts index 0ca993cfdfb..e506c3cd873 100644 --- a/tests/runner-e2e/chat-catalog-domains/external-company-secret.ts +++ b/tests/runner-e2e/chat-catalog-domains/external-company-secret.ts @@ -215,7 +215,7 @@ export const companySecretExternalCases=[definition("secrets.configure-company-s }, optionalCompanySecretBindingApproval:true, expectedCompanySecretBindingApproval(value){if(!gradeCompanySecret(value).passed)return;return companySecretApprovalProof(value);}, - oracleVersion:"paperclip.chat-catalog.company-secret-controller-baseline.v15",expectedRunCount:3,minimumRunCount:2,expectedHumanMessageCount:2,attemptTimeoutMs:480000, + oracleVersion:"paperclip.chat-catalog.company-secret-controller-baseline.v16",expectedRunCount:3,minimumRunCount:2,expectedHumanMessageCount:2,attemptTimeoutMs:480000, sourceFiles:["../../server/src/routes/secrets.ts","../../packages/paperclip-runner/src/cli/opencode-app-server-proxy.ts","../../packages/paperclip-runner/src/cli/opencode-proxy-finish-diagnostics.ts","../../packages/paperclip-runner/src/protocol-actions/request-human-input.ts","chat-catalog-domains/external-company-secret.ts","chat-catalog-domains/external-company-secret-confirmation.ts","chat-catalog-domains/external-secret-proposal.ts","chat-catalog-domains/external-secret-question.ts","chat-catalog-domains/external-secret-route.ts","chat-catalog-domains/external-company-secret-menu.ts","chat-catalog-contract.ts","chat-catalog-flow.ts","chat-catalog-domains/external-private-browser.ts","chat-catalog-domains/external-private-browser-worker.ts","chat-catalog-domains/external-credential-language.ts","chat-catalog-domains/external-secret-scan.ts","chat-catalog-domains/external-support.ts","chat-catalog-domains/internal-support.ts","chat-catalog-domains/identity-support.ts","live-fixtures.ts","../../server/src/services/secrets.ts","../../server/src/services/native-runtime/runner-api-catalog.ts","../../server/src/routes/issues.ts","run-observations.ts","chat-flow.ts","chat-scenarios/secrets.yaml"], async act(ctx,state){ const deadline=chatCatalogOriginalPhaseDeadline(ctx),remaining=()=>remainingIdentityObservationBudget(ctx); diff --git a/tests/runner-e2e/chat-catalog-domains/external-personal-secret.ts b/tests/runner-e2e/chat-catalog-domains/external-personal-secret.ts index 94f26dc3b0a..d74b70f8ea3 100644 --- a/tests/runner-e2e/chat-catalog-domains/external-personal-secret.ts +++ b/tests/runner-e2e/chat-catalog-domains/external-personal-secret.ts @@ -462,7 +462,7 @@ export const personalSecretExternalCases = [ if (!o.state.initialQuestionId) return; return { interactionId: String(o.state.initialQuestionId), sourceRunId: String(o.state.initialRunId), userId: String(o.state.currentPersonId) }; }, - oracleVersion: "paperclip.chat-catalog.personal-secret.v14", + oracleVersion: "paperclip.chat-catalog.personal-secret.v15", setupPolicy: { readiness: "preserve-scenario", invariantCheckIds: ["current-owner-missing-required-personal-value"] }, expectedRunCount: 3, minimumRunCount: 3, diff --git a/tests/runner-e2e/chat-catalog-domains/external-secret-delivery.ts b/tests/runner-e2e/chat-catalog-domains/external-secret-delivery.ts index 6f8f1dfa933..17ef4164e0e 100644 --- a/tests/runner-e2e/chat-catalog-domains/external-secret-delivery.ts +++ b/tests/runner-e2e/chat-catalog-domains/external-secret-delivery.ts @@ -298,7 +298,7 @@ export const secretDeliveryExternalCases = [ }, gradeSecretDelivery, { - oracleVersion: "paperclip.chat-catalog.external.v7", authentication: "human-session", + oracleVersion: "paperclip.chat-catalog.external.v8", authentication: "human-session", expectedRunCount: 3, minimumRunCount: 3, expectedHumanMessageCount: 1, diff --git a/tests/runner-e2e/chat-catalog-domains/external-secret-proposal.ts b/tests/runner-e2e/chat-catalog-domains/external-secret-proposal.ts index 3c07ebe5a8d..40761d9b20d 100644 --- a/tests/runner-e2e/chat-catalog-domains/external-secret-proposal.ts +++ b/tests/runner-e2e/chat-catalog-domains/external-secret-proposal.ts @@ -94,7 +94,7 @@ export const secretProposalExternalCases=[definition("secrets.secret-proposal",a const worker=await identityWorker(ctx,"Morgan"),secret=await ctx.input.api.postSensitive(`${root(ctx)}/secrets`,{name:"Deployment publishing key",key:"deployment-publishing",provider:"local_encrypted",value}); try{const source=await openStandingChat(ctx),session=await ctx.input.api.get<{user:{id:string}}>("/api/auth/get-session");if(!session.user.id||session.user.id==="local-board")throw new Error("Actual authorized human review identity is required");await ctx.input.api.patch(`/api/issues/${source.id}`,{description:`The publishing credential already exists as company secret ${secret.id}, Deployment publishing key. Morgan (${worker.id}) needs the environment reference PUBLISHING_API_KEY to publish the site. No value is supplied in chat and no binding exists yet.`});return {companyId:ctx.input.fixtures.company.id,leadId:ctx.input.fixtures.agent.id,morganId:worker.id,secretId:secret.id,secretBefore:secret,sourceId:source.id,personId:session.user.id,originalQuery:ctx.scenario.query};}catch(error){await ctx.input.api.delete(`/api/secrets/${secret.id}`,{allowNotFound:true});privateValues.delete(ctx);throw error;} },gradeSecretProposal,{ - oracleVersion: "paperclip.chat-catalog.external.v7", authentication:"human-session",expectedRunCount:4,minimumRunCount:4,expectedHumanMessageCount:4,attemptTimeoutMs:840000, + oracleVersion: "paperclip.chat-catalog.external.v8", authentication:"human-session",expectedRunCount:4,minimumRunCount:4,expectedHumanMessageCount:4,attemptTimeoutMs:840000, sourceFiles:["chat-catalog-domains/external-secret-proposal.ts","chat-catalog-domains/external-secret-scan.ts","chat-catalog-domains/external-credential-language.ts","chat-catalog-domains/identity-support.ts","chat-catalog-domains/external-support.ts","chat-catalog-domains/internal-support.ts","chat-flow.ts","run-observations.ts","../../server/src/routes/secrets.ts","../../server/src/services/secret-proposals.ts","../../server/src/services/secret-proposal-notifications.ts","chat-scenarios/secrets.yaml"], async act(ctx,state){ const initial=await settled(ctx,1),pending=(await proposals(ctx)).filter(row=>row.status==="pending");if(pending.length!==1||!requested(pending[0]!,state,ctx.issue()!.id)||pending[0]!.originRunId!==initial[0]!.id)throw new Error("Actual model must request exactly the intended reference binding before human review"); diff --git a/tests/runner-e2e/chat-catalog-domains/external-secure-key.ts b/tests/runner-e2e/chat-catalog-domains/external-secure-key.ts index 698ffcc35c5..150994051fe 100644 --- a/tests/runner-e2e/chat-catalog-domains/external-secure-key.ts +++ b/tests/runner-e2e/chat-catalog-domains/external-secure-key.ts @@ -47,7 +47,7 @@ export const secureKeyExternalCases = [definition("connection-setup.secure-api-k return { serverUrl: provider.url, personId: factualContextAttachment.createdByUserId, factualContextAttachment, setupPath: `/${ctx.input.fixtures.company.issuePrefix}/apps/byo` }; } catch (error) { fixtures.delete(ctx); await provider.close(); throw error; } }, gradeSecureKey, { - oracleVersion: "paperclip.chat-catalog.external.v7", authentication: "human-session", + oracleVersion: "paperclip.chat-catalog.external.v8", authentication: "human-session", queryAttachments: [{ stateKey: "factualContextAttachment", filename: "provider-account.md" }], attemptTimeoutMs: 420_000, sourceFiles: ["chat-catalog-domains/external-secure-key.ts", "chat-query-attachments.ts", "../../ui/src/App.tsx", "../../ui/src/pages/apps/app-connect-policy.ts", "../../ui/src/features/connections/ConnectionSetupFlow.tsx", "chat-catalog-domains/external-private-browser.ts", "chat-catalog-domains/external-private-browser-worker.ts", "chat-catalog-domains/external-credential-language.ts", "chat-catalog-domains/external-provider.ts", "chat-catalog-domains/external-secret-scan.ts", "run-observations.ts", "chat-catalog-domains/external-support.ts", "chat-catalog-domains/internal-support.ts", "chat-catalog-domains/identity-support.ts", "chat-scenarios/connection-setup.yaml"], diff --git a/tests/runner-e2e/chat-catalog-domains/external-team-install.ts b/tests/runner-e2e/chat-catalog-domains/external-team-install.ts index 17e399a9f51..0a0283e8dcd 100644 --- a/tests/runner-e2e/chat-catalog-domains/external-team-install.ts +++ b/tests/runner-e2e/chat-catalog-domains/external-team-install.ts @@ -346,7 +346,7 @@ export const teamInstallExternalCases = [ gradeTeamInstall, { authentication: "human-session", - oracleVersion: "paperclip.chat-catalog.team-install.v8", + oracleVersion: "paperclip.chat-catalog.team-install.v9", expectedRunCount: 2, expectedHumanMessageCount: 2, attemptTimeoutMs: 480_000, diff --git a/tests/runner-e2e/chat-catalog-domains/external-vault-reference.ts b/tests/runner-e2e/chat-catalog-domains/external-vault-reference.ts index 3e1d6ee77c5..e9da6454eeb 100644 --- a/tests/runner-e2e/chat-catalog-domains/external-vault-reference.ts +++ b/tests/runner-e2e/chat-catalog-domains/external-vault-reference.ts @@ -426,7 +426,7 @@ export const vaultReferenceExternalCases = [ }, gradeVaultReference, { - oracleVersion: "paperclip.chat-catalog.external.v7", authentication: "human-session", + oracleVersion: "paperclip.chat-catalog.external.v8", authentication: "human-session", expectedRunCount: 3, minimumRunCount: 2, expectedHumanMessageCount: 2, diff --git a/tests/runner-e2e/chat-catalog-domains/identity-questions-and-approvals.ts b/tests/runner-e2e/chat-catalog-domains/identity-questions-and-approvals.ts index fad5e192297..7f7c6a6102c 100644 --- a/tests/runner-e2e/chat-catalog-domains/identity-questions-and-approvals.ts +++ b/tests/runner-e2e/chat-catalog-domains/identity-questions-and-approvals.ts @@ -258,7 +258,7 @@ export const questionIdentityCases = [ }, }), identityDefinition("questions-and-approvals.multi-part-question", ctx => questionFixture(ctx, true), gradeQuestions, { - expectedRunCount: 2, observe: observeQuestion, oracleVersion: "paperclip.chat-catalog.required-question.v5", + expectedRunCount: 2, observe: observeQuestion, oracleVersion: "paperclip.chat-catalog.required-question.v6", sourceFiles: ["chat-catalog-domains/identity-support.ts", "chat-catalog-domains/internal-support.ts", "chat-catalog-domains/identity-questions-and-approvals.ts", "chat-scenarios/questions-and-approvals.yaml", "../../packages/paperclip-runner/src/protocol-actions/request-human-input.ts", "chat-catalog-flow.ts", "chat-flow.ts", "cleanup-verification.ts", "runner.spec.ts"], async verifyResult(ctx, _state, value) { if (await ctx.input.page.getByTestId("task-chat-composer-input").isVisible()) return;