@resolveio/server-lib 22.3.189 → 22.3.191
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/util/ai-run-evidence-adapters.js +48 -24
- package/util/ai-run-evidence-adapters.js.map +1 -1
- package/util/ai-run-evidence-eval.js +3 -0
- package/util/ai-run-evidence-eval.js.map +1 -1
- package/util/ai-run-evidence.js +32 -0
- package/util/ai-run-evidence.js.map +1 -1
- package/util/support-runner-v5.d.ts +24 -0
- package/util/support-runner-v5.js +137 -9
- package/util/support-runner-v5.js.map +1 -1
|
@@ -131,6 +131,9 @@ function classifyAIRunFailureClass(run) {
|
|
|
131
131
|
if (run.source === 'aicoder_app' && (run.gates || []).some(function (gate) { return gate.key === 'aicoder_journey_contract' && (gate.status === 'blocked' || gate.status === 'fail'); })) {
|
|
132
132
|
return 'journey_contract';
|
|
133
133
|
}
|
|
134
|
+
if (run.source === 'ai_assistant' && run.outcome === 'false_pass') {
|
|
135
|
+
return classifyAssistantFailureClass(run);
|
|
136
|
+
}
|
|
134
137
|
if (run.outcome === 'false_pass') {
|
|
135
138
|
return 'false_pass';
|
|
136
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/ai-run-evidence-eval.ts"],"names":[],"mappings":"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","file":"ai-run-evidence-eval.js","sourcesContent":["import {\n\tAIRun,\n\tAIRunOutcomeLabel,\n\tAIRunSource,\n\tAIRunTrainingExample,\n\tbuildAIRun,\n\tbuildAIQaRun,\n\tredactAIRunTrainingExample\n} from './ai-run-evidence';\n\nexport type AIRunFailureClass =\n\t| 'none'\n\t| 'infra'\n\t| 'compile'\n\t| 'route'\n\t| 'journey_contract'\n\t| 'business'\n\t| 'release'\n\t| 'false_pass'\n\t| 'assistant_missing_evidence'\n\t| 'assistant_query_error'\n\t| 'assistant_permission'\n\t| 'assistant_date_window'\n\t| 'assistant_query_shape'\n\t| 'assistant_correctness'\n\t| 'manual'\n\t| 'stopped'\n\t| 'unknown';\n\nexport type AIRunRetryAction =\n\t| 'none'\n\t| 'stop'\n\t| 'retry_infra_repair'\n\t| 'retry_build_repair'\n\t| 'retry_route_repair'\n\t| 'retry_journey_contract'\n\t| 'retry_business_repair'\n\t| 'retry_release_repair'\n\t| 'retry_assistant_answer_quality'\n\t| 'retry_assistant_query'\n\t| 'request_assistant_permission'\n\t| 'retry_assistant_date_window'\n\t| 'retry_assistant_query_shape'\n\t| 'manual_handoff';\n\nexport interface AIRunEvalExpectedGate {\n\tkey: string;\n\tstatus?: string;\n}\n\nexport interface AIRunEvalExpected {\n\toutcome: AIRunOutcomeLabel;\n\tfailureClass?: AIRunFailureClass;\n\tnextActionIncludes?: string;\n\tgates?: AIRunEvalExpectedGate[];\n}\n\nexport interface AIRunEvalFixture {\n\tid: string;\n\ttitle: string;\n\tsource: AIRunSource;\n\trun: AIRun;\n\texpected: AIRunEvalExpected;\n\ttags: string[];\n}\n\nexport interface AIRunEvalResult {\n\tid: string;\n\ttitle: string;\n\tsource: AIRunSource;\n\tpassed: boolean;\n\tactualOutcome: AIRunOutcomeLabel;\n\texpectedOutcome: AIRunOutcomeLabel;\n\tactualFailureClass: AIRunFailureClass;\n\texpectedFailureClass?: AIRunFailureClass;\n\tfailures: string[];\n\ttags: string[];\n}\n\nexport interface AIRunEvalSummary {\n\tpassed: boolean;\n\ttotal: number;\n\tpassedCount: number;\n\tfailedCount: number;\n\tresults: AIRunEvalResult[];\n\tfailuresByTag: Record<string, number>;\n\toutcomes: Record<string, number>;\n}\n\nexport interface AIRunDatasetExport {\n\tgeneratedAt: string;\n\ttotalRuns: number;\n\tsummary: {\n\t\tbySource: Record<string, number>;\n\t\tbyOutcome: Record<string, number>;\n\t\tbyFailureClass: Record<string, number>;\n\t\testimatedUsd: number;\n\t\ttotalTokens: number;\n\t};\n\truns: AIRun[];\n\ttrainingExamples: AIRunTrainingExample[];\n}\n\nexport interface AIRunDatasetExportOptions {\n\tredact?: boolean;\n\tincludeRuns?: boolean;\n\tmaxEvidenceItems?: number;\n\tnow?: Date | string;\n}\n\nexport interface AIRunRetryPolicyInput {\n\tcurrentRun: AIRun;\n\tpreviousRun?: AIRun;\n\tnewEvidenceCount?: number;\n\tunchangedFailureLimit?: number;\n\tsameFailureCount?: number;\n\thistoricalAcceptanceRate?: number;\n\testimatedNextRetryCostUsd?: number;\n\tminRetryExpectedValue?: number;\n}\n\nexport interface AIRunRetryDecision {\n\taction: AIRunRetryAction;\n\tfailureClass: AIRunFailureClass;\n\trepeatedFailure: boolean;\n\treason: string;\n\tnextAction: string;\n\tretryExpectedValue?: number;\n}\n\nfunction cleanText(value: any, max = 1000): string {\n\treturn String(value || '').replace(/\\s+/g, ' ').trim().slice(0, max);\n}\n\nfunction countBy<T extends string>(values: T[]): Record<string, number> {\n\tconst result: Record<string, number> = {};\n\tfor (const value of values) {\n\t\tresult[value] = (result[value] || 0) + 1;\n\t}\n\treturn result;\n}\n\nfunction isoNow(value?: Date | string): string {\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tconst parsed = value ? new Date(value) : new Date();\n\tif (Number.isFinite(parsed.getTime())) {\n\t\treturn parsed.toISOString();\n\t}\n\treturn new Date().toISOString();\n}\n\nfunction addUnique(values: string[], value: any, max = 1000): void {\n\tconst normalized = cleanText(value, max);\n\tif (normalized && !values.includes(normalized)) {\n\t\tvalues.push(normalized);\n\t}\n}\n\nfunction normalizedStatus(value: any): string {\n\treturn cleanText(value, 160).toLowerCase().replace(/[\\s-]+/g, '_');\n}\n\nfunction plainObject(value: any): Record<string, any> {\n\treturn value && typeof value === 'object' && !Array.isArray(value) ? value : {};\n}\n\nfunction assistantAnswerQualityMetadata(run: AIRun): Record<string, any> {\n\tconst gate = (run.gates || []).find((entry) => entry.key === 'assistant_answer_quality');\n\tconst gateMetadata = plainObject(gate?.metadata);\n\tconst runMetadata = plainObject(run.metadata);\n\tconst answerQuality = plainObject(runMetadata.answerQuality || runMetadata.answer_quality);\n\treturn {\n\t\t...gateMetadata,\n\t\t...answerQuality\n\t};\n}\n\nfunction classifyAssistantFailureClass(run: AIRun): AIRunFailureClass {\n\tconst metadata = assistantAnswerQualityMetadata(run);\n\tconst status = normalizedStatus(metadata.status || metadata.answerQualityStatus || metadata.answer_quality_status);\n\tconst queryStatus = normalizedStatus(metadata.queryStatus || metadata.query_status);\n\tconst missingEvidenceStatuses = new Set([\n\t\t'missing_data_source',\n\t\t'missing_query_status',\n\t\t'missing_query_proof',\n\t\t'missing_citations',\n\t\t'missing_citation',\n\t\t'low_confidence',\n\t\t'missing_next_action',\n\t\t'no_data_unverified',\n\t\t'blocked'\n\t]);\n\tif (queryStatus === 'permission_error' || status === 'permission_error') {\n\t\treturn 'assistant_permission';\n\t}\n\tif (queryStatus === 'query_error' || status === 'query_error') {\n\t\treturn 'assistant_query_error';\n\t}\n\tif (status === 'date_incorrect' || status === 'missing_date_window') {\n\t\treturn 'assistant_date_window';\n\t}\n\tif (status === 'illegal_query_shape') {\n\t\treturn 'assistant_query_shape';\n\t}\n\tif (missingEvidenceStatuses.has(status) || !status) {\n\t\treturn 'assistant_missing_evidence';\n\t}\n\treturn 'assistant_correctness';\n}\n\nexport function classifyAIRunFailureClass(run: AIRun): AIRunFailureClass {\n\tif (run.outcome === 'accepted') {\n\t\treturn 'none';\n\t}\n\tif (run.outcome === 'qa_infra_failed') {\n\t\treturn 'infra';\n\t}\n\tif (run.outcome === 'build_failed') {\n\t\treturn 'compile';\n\t}\n\tif (run.outcome === 'release_blocked') {\n\t\treturn 'release';\n\t}\n\tif (run.source === 'aicoder_app' && (run.gates || []).some((gate) => gate.key === 'aicoder_journey_contract' && (gate.status === 'blocked' || gate.status === 'fail'))) {\n\t\treturn 'journey_contract';\n\t}\n\tif (run.outcome === 'false_pass') {\n\t\treturn 'false_pass';\n\t}\n\tif (run.outcome === 'manual_handoff') {\n\t\treturn 'manual';\n\t}\n\tif (run.outcome === 'stopped') {\n\t\treturn 'stopped';\n\t}\n\tif (run.source === 'ai_assistant' && (run.outcome === 'rejected' || run.outcome === 'qa_incomplete')) {\n\t\treturn classifyAssistantFailureClass(run);\n\t}\n\tif (run.qa?.outcome === 'compile_failed') {\n\t\treturn 'compile';\n\t}\n\tif (run.qa?.outcome === 'route_failed') {\n\t\treturn 'route';\n\t}\n\tif (run.qa?.outcome === 'route_only_pass' || run.qa?.outcome === 'incomplete') {\n\t\treturn 'business';\n\t}\n\tif (run.qa?.outcome === 'business_assertion_failed') {\n\t\treturn 'business';\n\t}\n\tif (run.outcome === 'qa_incomplete') {\n\t\treturn 'business';\n\t}\n\tif (run.outcome === 'rejected') {\n\t\treturn 'business';\n\t}\n\treturn 'unknown';\n}\n\nexport function evaluateAIRunFixture(fixture: AIRunEvalFixture): AIRunEvalResult {\n\tconst failures: string[] = [];\n\tconst actualFailureClass = classifyAIRunFailureClass(fixture.run);\n\tif (fixture.run.outcome !== fixture.expected.outcome) {\n\t\tfailures.push(`Expected outcome ${fixture.expected.outcome}, got ${fixture.run.outcome}.`);\n\t}\n\tif (fixture.expected.failureClass && actualFailureClass !== fixture.expected.failureClass) {\n\t\tfailures.push(`Expected failure class ${fixture.expected.failureClass}, got ${actualFailureClass}.`);\n\t}\n\tif (fixture.expected.nextActionIncludes) {\n\t\tconst expectedText = fixture.expected.nextActionIncludes.toLowerCase();\n\t\tconst actualText = cleanText(fixture.run.nextAction, 2000).toLowerCase();\n\t\tif (!actualText.includes(expectedText)) {\n\t\t\tfailures.push(`Expected next action to include \"${fixture.expected.nextActionIncludes}\", got \"${fixture.run.nextAction || ''}\".`);\n\t\t}\n\t}\n\tconst gatesByKey: Record<string, string> = {};\n\tfor (const gate of fixture.run.gates || []) {\n\t\tgatesByKey[gate.key] = gate.status;\n\t}\n\tfor (const expectedGate of fixture.expected.gates || []) {\n\t\tif (!gatesByKey[expectedGate.key]) {\n\t\t\tfailures.push(`Expected gate ${expectedGate.key} to be present.`);\n\t\t}\n\t\telse if (expectedGate.status && gatesByKey[expectedGate.key] !== expectedGate.status) {\n\t\t\tfailures.push(`Expected gate ${expectedGate.key} status ${expectedGate.status}, got ${gatesByKey[expectedGate.key]}.`);\n\t\t}\n\t}\n\treturn {\n\t\tid: fixture.id,\n\t\ttitle: fixture.title,\n\t\tsource: fixture.source,\n\t\tpassed: failures.length === 0,\n\t\tactualOutcome: fixture.run.outcome,\n\t\texpectedOutcome: fixture.expected.outcome,\n\t\tactualFailureClass,\n\t\texpectedFailureClass: fixture.expected.failureClass,\n\t\tfailures,\n\t\ttags: fixture.tags\n\t};\n}\n\nexport function evaluateAIRunFixtures(fixtures: AIRunEvalFixture[] = AI_RUN_SEED_EVAL_FIXTURES): AIRunEvalSummary {\n\tconst results = fixtures.map((fixture) => evaluateAIRunFixture(fixture));\n\tconst failuresByTag: Record<string, number> = {};\n\tfor (const result of results) {\n\t\tif (result.passed) {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const tag of result.tags) {\n\t\t\tfailuresByTag[tag] = (failuresByTag[tag] || 0) + 1;\n\t\t}\n\t}\n\tconst outcomes = countBy(results.map((result) => result.actualOutcome));\n\tconst passedCount = results.filter((result) => result.passed).length;\n\treturn {\n\t\tpassed: passedCount === results.length,\n\t\ttotal: results.length,\n\t\tpassedCount,\n\t\tfailedCount: results.length - passedCount,\n\t\tresults,\n\t\tfailuresByTag,\n\t\toutcomes\n\t};\n}\n\nexport function buildAIRunTrainingExampleFromRun(run: AIRun, maxEvidenceItems = 30): AIRunTrainingExample {\n\tconst evidence: string[] = [];\n\tfor (const gate of run.gates || []) {\n\t\taddUnique(evidence, `${gate.key}:${gate.status}: ${gate.reason}`, 1600);\n\t}\n\tfor (const event of run.events || []) {\n\t\taddUnique(evidence, `${event.type}:${event.category || ''}: ${event.message || ''}`, 1400);\n\t\tif (evidence.length >= maxEvidenceItems) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (evidence.length < maxEvidenceItems) {\n\t\tfor (const assertion of run.qa?.businessAssertions || []) {\n\t\t\taddUnique(evidence, `assertion:${assertion.status}: ${assertion.assertion} observed=${assertion.observed || assertion.dataProof || assertion.message || ''}`, 1600);\n\t\t\tif (evidence.length >= maxEvidenceItems) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\trunId: run.id || run.sourceIds.jobId || run.sourceIds.ticketId || run.sourceIds.appId || run.sourceIds.conversationId || `${run.source}:unknown`,\n\t\tsource: run.source,\n\t\tinputSummary: [\n\t\t\t`source=${run.source}`,\n\t\t\t`title=${run.title || ''}`,\n\t\t\t`status=${run.status || ''}`,\n\t\t\t`phase=${run.phase || ''}`,\n\t\t\t`ids=${JSON.stringify(run.sourceIds || {})}`\n\t\t].join(' | '),\n\t\tactionSummary: [\n\t\t\t`outcome=${run.outcome}`,\n\t\t\t`failureClass=${classifyAIRunFailureClass(run)}`,\n\t\t\t`nextAction=${run.nextAction || ''}`\n\t\t].join(' | '),\n\t\toutcome: run.outcome,\n\t\tevidence: evidence.slice(0, maxEvidenceItems),\n\t\tcost: run.cost,\n\t\tmetadata: {\n\t\t\twarnings: run.warnings || [],\n\t\t\tgateCount: (run.gates || []).length,\n\t\t\teventCount: (run.events || []).length,\n\t\t\tqaOutcome: run.qa?.outcome\n\t\t}\n\t};\n}\n\nexport function buildAIRunDatasetExport(runs: AIRun[], options: AIRunDatasetExportOptions = {}): AIRunDatasetExport {\n\tconst generatedAt = isoNow(options.now);\n\tconst trainingExamples = runs.map((run) => {\n\t\tconst example = buildAIRunTrainingExampleFromRun(run, options.maxEvidenceItems || 30);\n\t\treturn options.redact === false ? example : redactAIRunTrainingExample(example);\n\t});\n\tconst estimatedUsd = runs.reduce((sum, run) => sum + (Number(run.cost?.estimatedUsd) || 0), 0);\n\tconst totalTokens = runs.reduce((sum, run) => sum + (Number(run.cost?.totalTokens) || 0), 0);\n\treturn {\n\t\tgeneratedAt,\n\t\ttotalRuns: runs.length,\n\t\tsummary: {\n\t\t\tbySource: countBy(runs.map((run) => run.source)),\n\t\t\tbyOutcome: countBy(runs.map((run) => run.outcome)),\n\t\t\tbyFailureClass: countBy(runs.map((run) => classifyAIRunFailureClass(run))),\n\t\t\testimatedUsd: Number(estimatedUsd.toFixed(6)),\n\t\t\ttotalTokens\n\t\t},\n\t\truns: options.includeRuns === false ? [] : runs,\n\t\ttrainingExamples\n\t};\n}\n\nexport function decideAIRunRetry(input: AIRunRetryPolicyInput): AIRunRetryDecision {\n\tconst failureClass = classifyAIRunFailureClass(input.currentRun);\n\tconst previousFailureClass = input.previousRun ? classifyAIRunFailureClass(input.previousRun) : undefined;\n\tconst sameFailureCount = Number(input.sameFailureCount || 0);\n\tconst unchangedFailureLimit = Number(input.unchangedFailureLimit || 2);\n\tconst repeatedFailure = previousFailureClass === failureClass && (Number(input.newEvidenceCount || 0) <= 0 || sameFailureCount >= unchangedFailureLimit);\n\tlet retryExpectedValue: number | undefined;\n\tif (input.historicalAcceptanceRate !== undefined && input.estimatedNextRetryCostUsd !== undefined) {\n\t\tretryExpectedValue = Number((Number(input.historicalAcceptanceRate) - Number(input.estimatedNextRetryCostUsd)).toFixed(6));\n\t}\n\tif (input.currentRun.outcome === 'accepted') {\n\t\treturn {\n\t\t\taction: 'none',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure: false,\n\t\t\treason: 'Run is already accepted.',\n\t\t\tnextAction: 'No retry required.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'manual') {\n\t\treturn {\n\t\t\taction: 'manual_handoff',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Run is marked for manual handoff.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Ask an operator to resolve the run.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'stopped') {\n\t\treturn {\n\t\t\taction: 'stop',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Run was stopped before accepted evidence was recorded.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Do not spend another model cycle unless the request is resumed.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (repeatedFailure) {\n\t\treturn {\n\t\t\taction: 'stop',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'The same failure class repeated with no new evidence. Stop model loops until the evidence changes.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Inspect the failing gate before retrying.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (retryExpectedValue !== undefined && retryExpectedValue < Number(input.minRetryExpectedValue || 0)) {\n\t\treturn {\n\t\t\taction: 'stop',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Historical retry expected value is below the configured threshold.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Do not retry without new evidence or a cheaper targeted repair.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'infra') {\n\t\treturn {\n\t\t\taction: 'retry_infra_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'QA infrastructure failed before business validation.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair browser, settings, Mongo, ports, or startup before model repair.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'compile') {\n\t\treturn {\n\t\t\taction: 'retry_build_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Compile/build evidence failed or was stale.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair build before browser QA.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'route') {\n\t\treturn {\n\t\t\taction: 'retry_route_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Route probe failed before business proof.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair route/auth/startup and rerun the exact probe.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'journey_contract') {\n\t\treturn {\n\t\t\taction: 'retry_journey_contract',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'AICoder Journey Contract is missing or invalid before workflow build/proof.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Generate or repair docs/APP_JOURNEY_CONTRACT.md, validate the north-star workflow, then regenerate workflow QA rows.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_missing_evidence') {\n\t\treturn {\n\t\t\taction: 'retry_assistant_answer_quality',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant answer is missing structured answerQuality, query proof, citations, confidence, or next-action evidence.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Rebuild the answerQuality record from the exact query/tool evidence before another broad assistant response.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_query_error') {\n\t\treturn {\n\t\t\taction: 'retry_assistant_query',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant data access failed with a query error.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair and rerun the failing query/tool call, then answer only from the new query evidence.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_permission') {\n\t\treturn {\n\t\t\taction: 'request_assistant_permission',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant data access was blocked by permission or authorization.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Ask for permission, escalate to an authorized user, or answer with the permission blocker instead of claiming no data.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_date_window') {\n\t\treturn {\n\t\t\taction: 'retry_assistant_date_window',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant date-sensitive answer used the wrong current date or omitted the concrete date window.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Rerun the query using the actual current date and record exact start/end date-window evidence.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_query_shape') {\n\t\treturn {\n\t\t\taction: 'retry_assistant_query_shape',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant query shape is illegal or unsafe for Mongo.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Rewrite the query with a legal projection or aggregation shape before retrying the data answer.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'release') {\n\t\treturn {\n\t\t\taction: 'retry_release_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Business proof exists but deploy, publish, or sample-data gates block release.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair release gates without another broad model planning loop.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'business' || failureClass === 'false_pass' || failureClass === 'assistant_correctness') {\n\t\treturn {\n\t\t\taction: 'retry_business_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Business or assistant correctness proof failed or is missing.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair the exact failing workflow/query and rerun the deterministic assertion.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\treturn {\n\t\taction: 'manual_handoff',\n\t\tfailureClass,\n\t\trepeatedFailure,\n\t\treason: 'Run lacks enough normalized evidence to choose a safe retry lane.',\n\t\tnextAction: input.currentRun.nextAction || 'Ingest more run evidence before retrying.',\n\t\tretryExpectedValue\n\t};\n}\n\nconst supportAccepted004131 = buildAIRun({\n\tid: 'support-004131',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004131', ticketId: 'ticket-004131' },\n\ttitle: '004131 accepted support fix',\n\tstatus: 'Resolved',\n\tphase: 'COMPLETE',\n\tevents: [{ type: 'git_commit', message: 'Fix support workflow and verified before/action/after proof.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass', artifactPath: '.build-output/build-server.log' },\n\t\trouteProbes: [{ route: '/support/004131', status: 'pass', screenshot: 'qa-artifacts/004131-after.jpg' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Before/action/after workflow proves the ticket fix.',\n\t\t\tstatus: 'pass',\n\t\t\taction: 'Run the ticket workflow against seeded data.',\n\t\t\texpected: 'The corrected state is visible.',\n\t\t\tobserved: 'The corrected state is visible after the action.',\n\t\t\tartifactPaths: ['qa-artifacts/004131-proof.json']\n\t\t}]\n\t}),\n\texplicitAccepted: true,\n\tterminal: true\n});\n\nconst supportBuildFailed004333 = buildAIRun({\n\tid: 'support-004333',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004333', ticketId: 'ticket-004333' },\n\ttitle: '004333 compile failure',\n\tstatus: 'Running',\n\tphase: 'QA',\n\tevents: [{ type: 'log', message: 'Angular build failed before browser QA.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'fail', artifactPath: '.build-output/build-client.log', message: 'TypeScript compile failed.' }\n\t})\n});\n\nconst supportInfraFailed004341 = buildAIRun({\n\tid: 'support-004341',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004341', ticketId: 'ticket-004341' },\n\ttitle: '004341 missing Puppeteer',\n\tstatus: 'Running',\n\tphase: 'QA',\n\tevents: [{ type: 'qa_infra', message: 'Puppeteer module could not be loaded.' }],\n\tqa: buildAIQaRun({\n\t\tinfraChecks: [{ name: 'puppeteer_require', status: 'blocked', message: 'Cannot find module puppeteer.' }]\n\t})\n});\n\nconst supportFalsePass004421 = buildAIRun({\n\tid: 'support-004421',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004421', ticketId: 'ticket-004421' },\n\ttitle: '004421 route-only support QA',\n\tstatus: 'Passed',\n\tphase: 'QA',\n\tevents: [{ type: 'scorecard', message: 'Scorecard passed after route loaded.' }],\n\tqa: buildAIQaRun({\n\t\tinfraChecks: [{ name: 'chrome_launch', status: 'pass' }],\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/support/004421', status: 'pass', screenshot: 'qa-artifacts/004421-route.jpg' }]\n\t}),\n\tscorecardPassed: true\n});\n\nconst supportBusinessFailed004423 = buildAIRun({\n\tid: 'support-004423',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004423', ticketId: 'ticket-004423' },\n\ttitle: '004423 business assertion failed',\n\tstatus: 'Running',\n\tphase: 'QA',\n\tevents: [{ type: 'qa_business_assertion', message: 'The expected workflow state did not change.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/support/004423', status: 'pass' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Ticket workflow changes the requested field.',\n\t\t\tstatus: 'fail',\n\t\t\texpected: 'Field updates after save.',\n\t\t\tobserved: 'Field stayed unchanged.'\n\t\t}]\n\t})\n});\n\nconst supportStaleBuild004430 = buildAIRun({\n\tid: 'support-004430',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004430', ticketId: 'ticket-004430' },\n\ttitle: '004430 stale build evidence',\n\tstatus: 'Running',\n\tphase: 'QA',\n\tevents: [{ type: 'qa_compile', message: 'Build log predates the final code diff.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'stale', staleEvidence: true, artifactPath: '.build-output/build-client.log' }\n\t})\n});\n\nconst cryptoPortfolioAccepted = buildAIRun({\n\tid: 'aicoder-crypto-v6-golden',\n\tsource: 'aicoder_app',\n\tsourceIds: { appId: 'crypto-v6-golden', jobId: 'crypto-job-golden' },\n\ttitle: 'Crypto Portfolio Tracker V6 Golden',\n\tstatus: 'Passed',\n\tphase: 'COMPLETE',\n\tevents: [{ type: 'scorecard', message: 'Quality scorecard passed with workflow proof.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/portfolio', status: 'pass', screenshot: 'qa-artifacts/crypto-dashboard.jpg' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Portfolio dashboard calculates seeded crypto holdings.',\n\t\t\tstatus: 'pass',\n\t\t\tdataProof: 'Seeded BTC and ETH holdings render totals, allocation, and change.'\n\t\t}]\n\t}),\n\tscorecardPassed: true,\n\tdeployStatus: 'pass',\n\tpublishStatus: 'published',\n\tsampleDataStatus: 'pass',\n\tterminal: true\n});\n\nconst layflatReleaseBlocked = buildAIRun({\n\tid: 'aicoder-layflat-pressure-optimizer',\n\tsource: 'aicoder_app',\n\tsourceIds: { appId: 'layflat-pressure-optimizer', jobId: 'layflat-job' },\n\ttitle: 'Layflat Pressure Optimizer',\n\tstatus: 'Passed',\n\tphase: 'COMPLETE',\n\tevents: [{ type: 'scorecard', message: 'Scorecard passed but sample data/publish gate failed.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/optimizer', status: 'pass', screenshot: 'qa-artifacts/layflat-route.jpg' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Pressure optimizer computes a layflat hose result.',\n\t\t\tstatus: 'pass',\n\t\t\tdataProof: 'A seeded hose diameter and flow rate produce PSI loss.'\n\t\t}]\n\t}),\n\tscorecardPassed: true,\n\tdeployStatus: 'pass',\n\tpublishStatus: 'publish failed',\n\tsampleDataStatus: 'empty seed collections',\n\tterminal: true\n});\n\nconst assistantWrongDateWindow = buildAIRun({\n\tid: 'assistant-wrong-month-window',\n\tsource: 'ai_assistant',\n\tsourceIds: { conversationId: 'assistant-date-window' },\n\ttitle: 'Assistant wrong month/date-window answer',\n\tstatus: 'Closed',\n\tphase: 'ANSWERED',\n\tevents: [{ type: 'assistant_message', message: 'Answered with the wrong month for today-sensitive invoice data.' }],\n\tqa: buildAIQaRun({\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Assistant date window uses the actual current date.',\n\t\t\tstatus: 'fail',\n\t\t\texpected: 'Use June 2026 for current-month windows.',\n\t\t\tobserved: 'Used a stale month.'\n\t\t}]\n\t}),\n\tgates: [{\n\t\tkey: 'assistant_answer_quality',\n\t\tlabel: 'Assistant answer quality',\n\t\tstatus: 'fail',\n\t\treason: 'Assistant answer did not prove it used the actual current date.',\n\t\tevidenceRefs: [],\n\t\trecordedAt: '2026-06-16T00:00:00.000Z',\n\t\tmetadata: {\n\t\t\tstatus: 'date_incorrect',\n\t\t\tqueryStatus: 'ok',\n\t\t\tdateBasis: '2026-05-01',\n\t\t\texpectedCurrentDate: '2026-06-16'\n\t\t}\n\t}],\n\tmetadata: {\n\t\tanswerQuality: {\n\t\t\tstatus: 'date_incorrect',\n\t\t\tqueryStatus: 'ok',\n\t\t\tdateBasis: '2026-05-01',\n\t\t\texpectedCurrentDate: '2026-06-16'\n\t\t}\n\t},\n\trejected: true,\n\tterminal: true\n});\n\nconst assistantIllegalProjection = buildAIRun({\n\tid: 'assistant-illegal-mongo-projection',\n\tsource: 'ai_assistant',\n\tsourceIds: { conversationId: 'assistant-positional-projection' },\n\ttitle: 'Assistant illegal Mongo positional projection',\n\tstatus: 'Closed',\n\tphase: 'ANSWERED',\n\tevents: [{ type: 'assistant_message', message: 'Mongo query used an illegal positional projection shape.' }],\n\tqa: buildAIQaRun({\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Assistant avoids illegal Mongo positional projection.',\n\t\t\tstatus: 'fail',\n\t\t\texpected: 'Use legal aggregation or field projection shape.',\n\t\t\tobserved: 'Used invalid positional projection.'\n\t\t}]\n\t}),\n\tgates: [{\n\t\tkey: 'assistant_answer_quality',\n\t\tlabel: 'Assistant answer quality',\n\t\tstatus: 'fail',\n\t\treason: 'Assistant must use legal Mongo query/projection shapes before answering.',\n\t\tevidenceRefs: [],\n\t\trecordedAt: '2026-06-16T00:00:00.000Z',\n\t\tmetadata: {\n\t\t\tstatus: 'illegal_query_shape',\n\t\t\tqueryStatus: 'ok',\n\t\t\tlegalQueryShape: false\n\t\t}\n\t}],\n\tmetadata: {\n\t\tanswerQuality: {\n\t\t\tstatus: 'illegal_query_shape',\n\t\t\tqueryStatus: 'ok',\n\t\t\tlegalQueryShape: false\n\t\t}\n\t},\n\trejected: true,\n\tterminal: true\n});\n\nconst qaMissingPuppeteer = buildAIRun({\n\tid: 'qa-missing-puppeteer',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-missing-puppeteer' },\n\ttitle: 'QA runner missing Puppeteer',\n\tstatus: 'Running',\n\tphase: 'PREFLIGHT',\n\tevents: [{ type: 'qa_infra', message: 'Puppeteer failed to require.' }],\n\tqa: buildAIQaRun({\n\t\tinfraChecks: [{ name: 'puppeteer_require', status: 'blocked', message: 'Cannot find module puppeteer.' }]\n\t})\n});\n\nconst qaBadChromePath = buildAIRun({\n\tid: 'qa-bad-chrome-path',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-bad-chrome-path' },\n\ttitle: 'QA runner bad Chrome path',\n\tstatus: 'Running',\n\tphase: 'PREFLIGHT',\n\tevents: [{ type: 'qa_infra', message: 'Chrome executable path was missing.' }],\n\tqa: buildAIQaRun({\n\t\tinfraChecks: [{ name: 'chrome_executable', status: 'fail', message: 'Chrome executable not found.', path: '/bad/chrome' }]\n\t})\n});\n\nconst qaCompileFailure = buildAIRun({\n\tid: 'qa-compile-failure',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-compile-failure' },\n\ttitle: 'QA runner compile failure',\n\tstatus: 'Running',\n\tphase: 'COMPILE',\n\tevents: [{ type: 'qa_compile', message: 'Compile failed before browser QA.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'fail', command: 'npm run build', artifactPath: '.build-output/build.log' }\n\t})\n});\n\nconst qaRouteOnlyPass = buildAIRun({\n\tid: 'qa-route-only-pass',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-route-only-pass' },\n\ttitle: 'QA runner route-only pass',\n\tstatus: 'Passed',\n\tphase: 'BROWSER_QA',\n\tevents: [{ type: 'qa_route_probe', message: 'Route loaded but no business proof exists.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/dashboard', status: 'pass', screenshot: 'qa-artifacts/dashboard.jpg' }]\n\t}),\n\tscorecardPassed: true\n});\n\nconst qaShellOnlyPage = buildAIRun({\n\tid: 'qa-shell-only-page',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-shell-only-page' },\n\ttitle: 'QA runner shell-only page',\n\tstatus: 'Running',\n\tphase: 'BROWSER_QA',\n\tevents: [{ type: 'qa_route_probe', message: 'Shell-only route loaded.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/dashboard', status: 'pass', shellOnly: true, screenshot: 'qa-artifacts/shell.jpg' }]\n\t})\n});\n\nconst qaEmptyData = buildAIRun({\n\tid: 'qa-empty-data',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-empty-data' },\n\ttitle: 'QA runner empty data',\n\tstatus: 'Failed',\n\tphase: 'BROWSER_QA',\n\tevents: [{ type: 'qa_business_assertion', message: 'Workflow rendered empty data.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/invoices', status: 'pass' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Invoice dashboard renders non-empty meaningful data.',\n\t\t\tstatus: 'fail',\n\t\t\texpected: 'At least one meaningful invoice row.',\n\t\t\tobserved: 'Empty table.'\n\t\t}]\n\t}),\n\tterminal: true\n});\n\nconst qaPublishFailureAfterScorecard = buildAIRun({\n\tid: 'qa-scorecard-pass-publish-failure',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-publish-failure' },\n\ttitle: 'QA scorecard pass followed by publish failure',\n\tstatus: 'Passed',\n\tphase: 'RELEASE',\n\tevents: [{ type: 'publish', message: 'Scorecard passed but publish failed.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/app', status: 'pass' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Primary app workflow runs.',\n\t\t\tstatus: 'pass',\n\t\t\tdataProof: 'Workflow action returned expected state.'\n\t\t}]\n\t}),\n\tscorecardPassed: true,\n\tpublishStatus: 'publish failed',\n\tsampleDataStatus: 'pass'\n});\n\nexport const AI_RUN_SEED_EVAL_FIXTURES: AIRunEvalFixture[] = [\n\t{\n\t\tid: 'support-004131',\n\t\ttitle: 'Support 004131 accepted proof',\n\t\tsource: 'support_ticket',\n\t\trun: supportAccepted004131,\n\t\texpected: { outcome: 'accepted', failureClass: 'none', gates: [{ key: 'qa_business_assertion', status: 'pass' }] },\n\t\ttags: ['support', 'accepted', 'business_assertion']\n\t},\n\t{\n\t\tid: 'support-004333',\n\t\ttitle: 'Support 004333 compile failure',\n\t\tsource: 'support_ticket',\n\t\trun: supportBuildFailed004333,\n\t\texpected: { outcome: 'build_failed', failureClass: 'compile', nextActionIncludes: 'compile' },\n\t\ttags: ['support', 'compile']\n\t},\n\t{\n\t\tid: 'support-004341',\n\t\ttitle: 'Support 004341 Puppeteer infra failure',\n\t\tsource: 'support_ticket',\n\t\trun: supportInfraFailed004341,\n\t\texpected: { outcome: 'qa_infra_failed', failureClass: 'infra', nextActionIncludes: 'browser' },\n\t\ttags: ['support', 'infra', 'puppeteer']\n\t},\n\t{\n\t\tid: 'support-004421',\n\t\ttitle: 'Support 004421 route-only false pass',\n\t\tsource: 'support_ticket',\n\t\trun: supportFalsePass004421,\n\t\texpected: { outcome: 'false_pass', failureClass: 'false_pass', gates: [{ key: 'qa_business_assertion', status: 'blocked' }] },\n\t\ttags: ['support', 'route_only', 'false_pass']\n\t},\n\t{\n\t\tid: 'support-004423',\n\t\ttitle: 'Support 004423 business assertion failed',\n\t\tsource: 'support_ticket',\n\t\trun: supportBusinessFailed004423,\n\t\texpected: { outcome: 'qa_incomplete', failureClass: 'business', nextActionIncludes: 'assertion' },\n\t\ttags: ['support', 'business_assertion']\n\t},\n\t{\n\t\tid: 'support-004430',\n\t\ttitle: 'Support 004430 stale build evidence',\n\t\tsource: 'support_ticket',\n\t\trun: supportStaleBuild004430,\n\t\texpected: { outcome: 'build_failed', failureClass: 'compile', nextActionIncludes: 'build' },\n\t\ttags: ['support', 'compile', 'stale_build']\n\t},\n\t{\n\t\tid: 'aicoder-crypto-v6-golden',\n\t\ttitle: 'AICoder Crypto Portfolio Tracker V6 Golden',\n\t\tsource: 'aicoder_app',\n\t\trun: cryptoPortfolioAccepted,\n\t\texpected: { outcome: 'accepted', failureClass: 'none', gates: [{ key: 'qa_business_assertion', status: 'pass' }] },\n\t\ttags: ['aicoder', 'crypto', 'accepted']\n\t},\n\t{\n\t\tid: 'aicoder-layflat-pressure-optimizer',\n\t\ttitle: 'AICoder Layflat Pressure Optimizer release blocked',\n\t\tsource: 'aicoder_app',\n\t\trun: layflatReleaseBlocked,\n\t\texpected: { outcome: 'release_blocked', failureClass: 'release', gates: [{ key: 'release', status: 'fail' }] },\n\t\ttags: ['aicoder', 'layflat', 'release_blocked', 'sample_data']\n\t},\n\t{\n\t\tid: 'assistant-wrong-month-window',\n\t\ttitle: 'Assistant wrong month/date-window answer',\n\t\tsource: 'ai_assistant',\n\t\trun: assistantWrongDateWindow,\n\t\texpected: { outcome: 'rejected', failureClass: 'assistant_date_window' },\n\t\ttags: ['assistant', 'date_window']\n\t},\n\t{\n\t\tid: 'assistant-illegal-mongo-projection',\n\t\ttitle: 'Assistant illegal Mongo positional projection',\n\t\tsource: 'ai_assistant',\n\t\trun: assistantIllegalProjection,\n\t\texpected: { outcome: 'rejected', failureClass: 'assistant_query_shape' },\n\t\ttags: ['assistant', 'mongo_query']\n\t},\n\t{\n\t\tid: 'qa-missing-puppeteer',\n\t\ttitle: 'QA missing Puppeteer',\n\t\tsource: 'qa_runner',\n\t\trun: qaMissingPuppeteer,\n\t\texpected: { outcome: 'qa_infra_failed', failureClass: 'infra' },\n\t\ttags: ['qa_runner', 'infra', 'puppeteer']\n\t},\n\t{\n\t\tid: 'qa-bad-chrome-path',\n\t\ttitle: 'QA bad Chrome path',\n\t\tsource: 'qa_runner',\n\t\trun: qaBadChromePath,\n\t\texpected: { outcome: 'qa_infra_failed', failureClass: 'infra' },\n\t\ttags: ['qa_runner', 'infra', 'chrome']\n\t},\n\t{\n\t\tid: 'qa-compile-failure',\n\t\ttitle: 'QA compile failure',\n\t\tsource: 'qa_runner',\n\t\trun: qaCompileFailure,\n\t\texpected: { outcome: 'build_failed', failureClass: 'compile' },\n\t\ttags: ['qa_runner', 'compile']\n\t},\n\t{\n\t\tid: 'qa-route-only-pass',\n\t\ttitle: 'QA route-only pass',\n\t\tsource: 'qa_runner',\n\t\trun: qaRouteOnlyPass,\n\t\texpected: { outcome: 'false_pass', failureClass: 'false_pass' },\n\t\ttags: ['qa_runner', 'route_only', 'false_pass']\n\t},\n\t{\n\t\tid: 'qa-shell-only-page',\n\t\ttitle: 'QA shell-only page',\n\t\tsource: 'qa_runner',\n\t\trun: qaShellOnlyPage,\n\t\texpected: { outcome: 'qa_incomplete', failureClass: 'route' },\n\t\ttags: ['qa_runner', 'route', 'shell_only']\n\t},\n\t{\n\t\tid: 'qa-empty-data',\n\t\ttitle: 'QA empty data',\n\t\tsource: 'qa_runner',\n\t\trun: qaEmptyData,\n\t\texpected: { outcome: 'rejected', failureClass: 'business' },\n\t\ttags: ['qa_runner', 'empty_data', 'business_assertion']\n\t},\n\t{\n\t\tid: 'qa-scorecard-pass-publish-failure',\n\t\ttitle: 'QA scorecard pass followed by publish failure',\n\t\tsource: 'qa_runner',\n\t\trun: qaPublishFailureAfterScorecard,\n\t\texpected: { outcome: 'release_blocked', failureClass: 'release' },\n\t\ttags: ['qa_runner', 'release_blocked', 'publish']\n\t}\n];\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/util/ai-run-evidence-eval.ts"],"names":[],"mappings":"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","file":"ai-run-evidence-eval.js","sourcesContent":["import {\n\tAIRun,\n\tAIRunOutcomeLabel,\n\tAIRunSource,\n\tAIRunTrainingExample,\n\tbuildAIRun,\n\tbuildAIQaRun,\n\tredactAIRunTrainingExample\n} from './ai-run-evidence';\n\nexport type AIRunFailureClass =\n\t| 'none'\n\t| 'infra'\n\t| 'compile'\n\t| 'route'\n\t| 'journey_contract'\n\t| 'business'\n\t| 'release'\n\t| 'false_pass'\n\t| 'assistant_missing_evidence'\n\t| 'assistant_query_error'\n\t| 'assistant_permission'\n\t| 'assistant_date_window'\n\t| 'assistant_query_shape'\n\t| 'assistant_correctness'\n\t| 'manual'\n\t| 'stopped'\n\t| 'unknown';\n\nexport type AIRunRetryAction =\n\t| 'none'\n\t| 'stop'\n\t| 'retry_infra_repair'\n\t| 'retry_build_repair'\n\t| 'retry_route_repair'\n\t| 'retry_journey_contract'\n\t| 'retry_business_repair'\n\t| 'retry_release_repair'\n\t| 'retry_assistant_answer_quality'\n\t| 'retry_assistant_query'\n\t| 'request_assistant_permission'\n\t| 'retry_assistant_date_window'\n\t| 'retry_assistant_query_shape'\n\t| 'manual_handoff';\n\nexport interface AIRunEvalExpectedGate {\n\tkey: string;\n\tstatus?: string;\n}\n\nexport interface AIRunEvalExpected {\n\toutcome: AIRunOutcomeLabel;\n\tfailureClass?: AIRunFailureClass;\n\tnextActionIncludes?: string;\n\tgates?: AIRunEvalExpectedGate[];\n}\n\nexport interface AIRunEvalFixture {\n\tid: string;\n\ttitle: string;\n\tsource: AIRunSource;\n\trun: AIRun;\n\texpected: AIRunEvalExpected;\n\ttags: string[];\n}\n\nexport interface AIRunEvalResult {\n\tid: string;\n\ttitle: string;\n\tsource: AIRunSource;\n\tpassed: boolean;\n\tactualOutcome: AIRunOutcomeLabel;\n\texpectedOutcome: AIRunOutcomeLabel;\n\tactualFailureClass: AIRunFailureClass;\n\texpectedFailureClass?: AIRunFailureClass;\n\tfailures: string[];\n\ttags: string[];\n}\n\nexport interface AIRunEvalSummary {\n\tpassed: boolean;\n\ttotal: number;\n\tpassedCount: number;\n\tfailedCount: number;\n\tresults: AIRunEvalResult[];\n\tfailuresByTag: Record<string, number>;\n\toutcomes: Record<string, number>;\n}\n\nexport interface AIRunDatasetExport {\n\tgeneratedAt: string;\n\ttotalRuns: number;\n\tsummary: {\n\t\tbySource: Record<string, number>;\n\t\tbyOutcome: Record<string, number>;\n\t\tbyFailureClass: Record<string, number>;\n\t\testimatedUsd: number;\n\t\ttotalTokens: number;\n\t};\n\truns: AIRun[];\n\ttrainingExamples: AIRunTrainingExample[];\n}\n\nexport interface AIRunDatasetExportOptions {\n\tredact?: boolean;\n\tincludeRuns?: boolean;\n\tmaxEvidenceItems?: number;\n\tnow?: Date | string;\n}\n\nexport interface AIRunRetryPolicyInput {\n\tcurrentRun: AIRun;\n\tpreviousRun?: AIRun;\n\tnewEvidenceCount?: number;\n\tunchangedFailureLimit?: number;\n\tsameFailureCount?: number;\n\thistoricalAcceptanceRate?: number;\n\testimatedNextRetryCostUsd?: number;\n\tminRetryExpectedValue?: number;\n}\n\nexport interface AIRunRetryDecision {\n\taction: AIRunRetryAction;\n\tfailureClass: AIRunFailureClass;\n\trepeatedFailure: boolean;\n\treason: string;\n\tnextAction: string;\n\tretryExpectedValue?: number;\n}\n\nfunction cleanText(value: any, max = 1000): string {\n\treturn String(value || '').replace(/\\s+/g, ' ').trim().slice(0, max);\n}\n\nfunction countBy<T extends string>(values: T[]): Record<string, number> {\n\tconst result: Record<string, number> = {};\n\tfor (const value of values) {\n\t\tresult[value] = (result[value] || 0) + 1;\n\t}\n\treturn result;\n}\n\nfunction isoNow(value?: Date | string): string {\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tconst parsed = value ? new Date(value) : new Date();\n\tif (Number.isFinite(parsed.getTime())) {\n\t\treturn parsed.toISOString();\n\t}\n\treturn new Date().toISOString();\n}\n\nfunction addUnique(values: string[], value: any, max = 1000): void {\n\tconst normalized = cleanText(value, max);\n\tif (normalized && !values.includes(normalized)) {\n\t\tvalues.push(normalized);\n\t}\n}\n\nfunction normalizedStatus(value: any): string {\n\treturn cleanText(value, 160).toLowerCase().replace(/[\\s-]+/g, '_');\n}\n\nfunction plainObject(value: any): Record<string, any> {\n\treturn value && typeof value === 'object' && !Array.isArray(value) ? value : {};\n}\n\nfunction assistantAnswerQualityMetadata(run: AIRun): Record<string, any> {\n\tconst gate = (run.gates || []).find((entry) => entry.key === 'assistant_answer_quality');\n\tconst gateMetadata = plainObject(gate?.metadata);\n\tconst runMetadata = plainObject(run.metadata);\n\tconst answerQuality = plainObject(runMetadata.answerQuality || runMetadata.answer_quality);\n\treturn {\n\t\t...gateMetadata,\n\t\t...answerQuality\n\t};\n}\n\nfunction classifyAssistantFailureClass(run: AIRun): AIRunFailureClass {\n\tconst metadata = assistantAnswerQualityMetadata(run);\n\tconst status = normalizedStatus(metadata.status || metadata.answerQualityStatus || metadata.answer_quality_status);\n\tconst queryStatus = normalizedStatus(metadata.queryStatus || metadata.query_status);\n\tconst missingEvidenceStatuses = new Set([\n\t\t'missing_data_source',\n\t\t'missing_query_status',\n\t\t'missing_query_proof',\n\t\t'missing_citations',\n\t\t'missing_citation',\n\t\t'low_confidence',\n\t\t'missing_next_action',\n\t\t'no_data_unverified',\n\t\t'blocked'\n\t]);\n\tif (queryStatus === 'permission_error' || status === 'permission_error') {\n\t\treturn 'assistant_permission';\n\t}\n\tif (queryStatus === 'query_error' || status === 'query_error') {\n\t\treturn 'assistant_query_error';\n\t}\n\tif (status === 'date_incorrect' || status === 'missing_date_window') {\n\t\treturn 'assistant_date_window';\n\t}\n\tif (status === 'illegal_query_shape') {\n\t\treturn 'assistant_query_shape';\n\t}\n\tif (missingEvidenceStatuses.has(status) || !status) {\n\t\treturn 'assistant_missing_evidence';\n\t}\n\treturn 'assistant_correctness';\n}\n\nexport function classifyAIRunFailureClass(run: AIRun): AIRunFailureClass {\n\tif (run.outcome === 'accepted') {\n\t\treturn 'none';\n\t}\n\tif (run.outcome === 'qa_infra_failed') {\n\t\treturn 'infra';\n\t}\n\tif (run.outcome === 'build_failed') {\n\t\treturn 'compile';\n\t}\n\tif (run.outcome === 'release_blocked') {\n\t\treturn 'release';\n\t}\n\tif (run.source === 'aicoder_app' && (run.gates || []).some((gate) => gate.key === 'aicoder_journey_contract' && (gate.status === 'blocked' || gate.status === 'fail'))) {\n\t\treturn 'journey_contract';\n\t}\n\tif (run.source === 'ai_assistant' && run.outcome === 'false_pass') {\n\t\treturn classifyAssistantFailureClass(run);\n\t}\n\tif (run.outcome === 'false_pass') {\n\t\treturn 'false_pass';\n\t}\n\tif (run.outcome === 'manual_handoff') {\n\t\treturn 'manual';\n\t}\n\tif (run.outcome === 'stopped') {\n\t\treturn 'stopped';\n\t}\n\tif (run.source === 'ai_assistant' && (run.outcome === 'rejected' || run.outcome === 'qa_incomplete')) {\n\t\treturn classifyAssistantFailureClass(run);\n\t}\n\tif (run.qa?.outcome === 'compile_failed') {\n\t\treturn 'compile';\n\t}\n\tif (run.qa?.outcome === 'route_failed') {\n\t\treturn 'route';\n\t}\n\tif (run.qa?.outcome === 'route_only_pass' || run.qa?.outcome === 'incomplete') {\n\t\treturn 'business';\n\t}\n\tif (run.qa?.outcome === 'business_assertion_failed') {\n\t\treturn 'business';\n\t}\n\tif (run.outcome === 'qa_incomplete') {\n\t\treturn 'business';\n\t}\n\tif (run.outcome === 'rejected') {\n\t\treturn 'business';\n\t}\n\treturn 'unknown';\n}\n\nexport function evaluateAIRunFixture(fixture: AIRunEvalFixture): AIRunEvalResult {\n\tconst failures: string[] = [];\n\tconst actualFailureClass = classifyAIRunFailureClass(fixture.run);\n\tif (fixture.run.outcome !== fixture.expected.outcome) {\n\t\tfailures.push(`Expected outcome ${fixture.expected.outcome}, got ${fixture.run.outcome}.`);\n\t}\n\tif (fixture.expected.failureClass && actualFailureClass !== fixture.expected.failureClass) {\n\t\tfailures.push(`Expected failure class ${fixture.expected.failureClass}, got ${actualFailureClass}.`);\n\t}\n\tif (fixture.expected.nextActionIncludes) {\n\t\tconst expectedText = fixture.expected.nextActionIncludes.toLowerCase();\n\t\tconst actualText = cleanText(fixture.run.nextAction, 2000).toLowerCase();\n\t\tif (!actualText.includes(expectedText)) {\n\t\t\tfailures.push(`Expected next action to include \"${fixture.expected.nextActionIncludes}\", got \"${fixture.run.nextAction || ''}\".`);\n\t\t}\n\t}\n\tconst gatesByKey: Record<string, string> = {};\n\tfor (const gate of fixture.run.gates || []) {\n\t\tgatesByKey[gate.key] = gate.status;\n\t}\n\tfor (const expectedGate of fixture.expected.gates || []) {\n\t\tif (!gatesByKey[expectedGate.key]) {\n\t\t\tfailures.push(`Expected gate ${expectedGate.key} to be present.`);\n\t\t}\n\t\telse if (expectedGate.status && gatesByKey[expectedGate.key] !== expectedGate.status) {\n\t\t\tfailures.push(`Expected gate ${expectedGate.key} status ${expectedGate.status}, got ${gatesByKey[expectedGate.key]}.`);\n\t\t}\n\t}\n\treturn {\n\t\tid: fixture.id,\n\t\ttitle: fixture.title,\n\t\tsource: fixture.source,\n\t\tpassed: failures.length === 0,\n\t\tactualOutcome: fixture.run.outcome,\n\t\texpectedOutcome: fixture.expected.outcome,\n\t\tactualFailureClass,\n\t\texpectedFailureClass: fixture.expected.failureClass,\n\t\tfailures,\n\t\ttags: fixture.tags\n\t};\n}\n\nexport function evaluateAIRunFixtures(fixtures: AIRunEvalFixture[] = AI_RUN_SEED_EVAL_FIXTURES): AIRunEvalSummary {\n\tconst results = fixtures.map((fixture) => evaluateAIRunFixture(fixture));\n\tconst failuresByTag: Record<string, number> = {};\n\tfor (const result of results) {\n\t\tif (result.passed) {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const tag of result.tags) {\n\t\t\tfailuresByTag[tag] = (failuresByTag[tag] || 0) + 1;\n\t\t}\n\t}\n\tconst outcomes = countBy(results.map((result) => result.actualOutcome));\n\tconst passedCount = results.filter((result) => result.passed).length;\n\treturn {\n\t\tpassed: passedCount === results.length,\n\t\ttotal: results.length,\n\t\tpassedCount,\n\t\tfailedCount: results.length - passedCount,\n\t\tresults,\n\t\tfailuresByTag,\n\t\toutcomes\n\t};\n}\n\nexport function buildAIRunTrainingExampleFromRun(run: AIRun, maxEvidenceItems = 30): AIRunTrainingExample {\n\tconst evidence: string[] = [];\n\tfor (const gate of run.gates || []) {\n\t\taddUnique(evidence, `${gate.key}:${gate.status}: ${gate.reason}`, 1600);\n\t}\n\tfor (const event of run.events || []) {\n\t\taddUnique(evidence, `${event.type}:${event.category || ''}: ${event.message || ''}`, 1400);\n\t\tif (evidence.length >= maxEvidenceItems) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (evidence.length < maxEvidenceItems) {\n\t\tfor (const assertion of run.qa?.businessAssertions || []) {\n\t\t\taddUnique(evidence, `assertion:${assertion.status}: ${assertion.assertion} observed=${assertion.observed || assertion.dataProof || assertion.message || ''}`, 1600);\n\t\t\tif (evidence.length >= maxEvidenceItems) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\trunId: run.id || run.sourceIds.jobId || run.sourceIds.ticketId || run.sourceIds.appId || run.sourceIds.conversationId || `${run.source}:unknown`,\n\t\tsource: run.source,\n\t\tinputSummary: [\n\t\t\t`source=${run.source}`,\n\t\t\t`title=${run.title || ''}`,\n\t\t\t`status=${run.status || ''}`,\n\t\t\t`phase=${run.phase || ''}`,\n\t\t\t`ids=${JSON.stringify(run.sourceIds || {})}`\n\t\t].join(' | '),\n\t\tactionSummary: [\n\t\t\t`outcome=${run.outcome}`,\n\t\t\t`failureClass=${classifyAIRunFailureClass(run)}`,\n\t\t\t`nextAction=${run.nextAction || ''}`\n\t\t].join(' | '),\n\t\toutcome: run.outcome,\n\t\tevidence: evidence.slice(0, maxEvidenceItems),\n\t\tcost: run.cost,\n\t\tmetadata: {\n\t\t\twarnings: run.warnings || [],\n\t\t\tgateCount: (run.gates || []).length,\n\t\t\teventCount: (run.events || []).length,\n\t\t\tqaOutcome: run.qa?.outcome\n\t\t}\n\t};\n}\n\nexport function buildAIRunDatasetExport(runs: AIRun[], options: AIRunDatasetExportOptions = {}): AIRunDatasetExport {\n\tconst generatedAt = isoNow(options.now);\n\tconst trainingExamples = runs.map((run) => {\n\t\tconst example = buildAIRunTrainingExampleFromRun(run, options.maxEvidenceItems || 30);\n\t\treturn options.redact === false ? example : redactAIRunTrainingExample(example);\n\t});\n\tconst estimatedUsd = runs.reduce((sum, run) => sum + (Number(run.cost?.estimatedUsd) || 0), 0);\n\tconst totalTokens = runs.reduce((sum, run) => sum + (Number(run.cost?.totalTokens) || 0), 0);\n\treturn {\n\t\tgeneratedAt,\n\t\ttotalRuns: runs.length,\n\t\tsummary: {\n\t\t\tbySource: countBy(runs.map((run) => run.source)),\n\t\t\tbyOutcome: countBy(runs.map((run) => run.outcome)),\n\t\t\tbyFailureClass: countBy(runs.map((run) => classifyAIRunFailureClass(run))),\n\t\t\testimatedUsd: Number(estimatedUsd.toFixed(6)),\n\t\t\ttotalTokens\n\t\t},\n\t\truns: options.includeRuns === false ? [] : runs,\n\t\ttrainingExamples\n\t};\n}\n\nexport function decideAIRunRetry(input: AIRunRetryPolicyInput): AIRunRetryDecision {\n\tconst failureClass = classifyAIRunFailureClass(input.currentRun);\n\tconst previousFailureClass = input.previousRun ? classifyAIRunFailureClass(input.previousRun) : undefined;\n\tconst sameFailureCount = Number(input.sameFailureCount || 0);\n\tconst unchangedFailureLimit = Number(input.unchangedFailureLimit || 2);\n\tconst repeatedFailure = previousFailureClass === failureClass && (Number(input.newEvidenceCount || 0) <= 0 || sameFailureCount >= unchangedFailureLimit);\n\tlet retryExpectedValue: number | undefined;\n\tif (input.historicalAcceptanceRate !== undefined && input.estimatedNextRetryCostUsd !== undefined) {\n\t\tretryExpectedValue = Number((Number(input.historicalAcceptanceRate) - Number(input.estimatedNextRetryCostUsd)).toFixed(6));\n\t}\n\tif (input.currentRun.outcome === 'accepted') {\n\t\treturn {\n\t\t\taction: 'none',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure: false,\n\t\t\treason: 'Run is already accepted.',\n\t\t\tnextAction: 'No retry required.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'manual') {\n\t\treturn {\n\t\t\taction: 'manual_handoff',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Run is marked for manual handoff.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Ask an operator to resolve the run.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'stopped') {\n\t\treturn {\n\t\t\taction: 'stop',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Run was stopped before accepted evidence was recorded.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Do not spend another model cycle unless the request is resumed.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (repeatedFailure) {\n\t\treturn {\n\t\t\taction: 'stop',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'The same failure class repeated with no new evidence. Stop model loops until the evidence changes.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Inspect the failing gate before retrying.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (retryExpectedValue !== undefined && retryExpectedValue < Number(input.minRetryExpectedValue || 0)) {\n\t\treturn {\n\t\t\taction: 'stop',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Historical retry expected value is below the configured threshold.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Do not retry without new evidence or a cheaper targeted repair.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'infra') {\n\t\treturn {\n\t\t\taction: 'retry_infra_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'QA infrastructure failed before business validation.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair browser, settings, Mongo, ports, or startup before model repair.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'compile') {\n\t\treturn {\n\t\t\taction: 'retry_build_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Compile/build evidence failed or was stale.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair build before browser QA.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'route') {\n\t\treturn {\n\t\t\taction: 'retry_route_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Route probe failed before business proof.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair route/auth/startup and rerun the exact probe.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'journey_contract') {\n\t\treturn {\n\t\t\taction: 'retry_journey_contract',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'AICoder Journey Contract is missing or invalid before workflow build/proof.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Generate or repair docs/APP_JOURNEY_CONTRACT.md, validate the north-star workflow, then regenerate workflow QA rows.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_missing_evidence') {\n\t\treturn {\n\t\t\taction: 'retry_assistant_answer_quality',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant answer is missing structured answerQuality, query proof, citations, confidence, or next-action evidence.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Rebuild the answerQuality record from the exact query/tool evidence before another broad assistant response.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_query_error') {\n\t\treturn {\n\t\t\taction: 'retry_assistant_query',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant data access failed with a query error.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair and rerun the failing query/tool call, then answer only from the new query evidence.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_permission') {\n\t\treturn {\n\t\t\taction: 'request_assistant_permission',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant data access was blocked by permission or authorization.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Ask for permission, escalate to an authorized user, or answer with the permission blocker instead of claiming no data.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_date_window') {\n\t\treturn {\n\t\t\taction: 'retry_assistant_date_window',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant date-sensitive answer used the wrong current date or omitted the concrete date window.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Rerun the query using the actual current date and record exact start/end date-window evidence.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'assistant_query_shape') {\n\t\treturn {\n\t\t\taction: 'retry_assistant_query_shape',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Assistant query shape is illegal or unsafe for Mongo.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Rewrite the query with a legal projection or aggregation shape before retrying the data answer.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'release') {\n\t\treturn {\n\t\t\taction: 'retry_release_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Business proof exists but deploy, publish, or sample-data gates block release.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair release gates without another broad model planning loop.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\tif (failureClass === 'business' || failureClass === 'false_pass' || failureClass === 'assistant_correctness') {\n\t\treturn {\n\t\t\taction: 'retry_business_repair',\n\t\t\tfailureClass,\n\t\t\trepeatedFailure,\n\t\t\treason: 'Business or assistant correctness proof failed or is missing.',\n\t\t\tnextAction: input.currentRun.nextAction || 'Repair the exact failing workflow/query and rerun the deterministic assertion.',\n\t\t\tretryExpectedValue\n\t\t};\n\t}\n\treturn {\n\t\taction: 'manual_handoff',\n\t\tfailureClass,\n\t\trepeatedFailure,\n\t\treason: 'Run lacks enough normalized evidence to choose a safe retry lane.',\n\t\tnextAction: input.currentRun.nextAction || 'Ingest more run evidence before retrying.',\n\t\tretryExpectedValue\n\t};\n}\n\nconst supportAccepted004131 = buildAIRun({\n\tid: 'support-004131',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004131', ticketId: 'ticket-004131' },\n\ttitle: '004131 accepted support fix',\n\tstatus: 'Resolved',\n\tphase: 'COMPLETE',\n\tevents: [{ type: 'git_commit', message: 'Fix support workflow and verified before/action/after proof.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass', artifactPath: '.build-output/build-server.log' },\n\t\trouteProbes: [{ route: '/support/004131', status: 'pass', screenshot: 'qa-artifacts/004131-after.jpg' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Before/action/after workflow proves the ticket fix.',\n\t\t\tstatus: 'pass',\n\t\t\taction: 'Run the ticket workflow against seeded data.',\n\t\t\texpected: 'The corrected state is visible.',\n\t\t\tobserved: 'The corrected state is visible after the action.',\n\t\t\tartifactPaths: ['qa-artifacts/004131-proof.json']\n\t\t}]\n\t}),\n\texplicitAccepted: true,\n\tterminal: true\n});\n\nconst supportBuildFailed004333 = buildAIRun({\n\tid: 'support-004333',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004333', ticketId: 'ticket-004333' },\n\ttitle: '004333 compile failure',\n\tstatus: 'Running',\n\tphase: 'QA',\n\tevents: [{ type: 'log', message: 'Angular build failed before browser QA.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'fail', artifactPath: '.build-output/build-client.log', message: 'TypeScript compile failed.' }\n\t})\n});\n\nconst supportInfraFailed004341 = buildAIRun({\n\tid: 'support-004341',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004341', ticketId: 'ticket-004341' },\n\ttitle: '004341 missing Puppeteer',\n\tstatus: 'Running',\n\tphase: 'QA',\n\tevents: [{ type: 'qa_infra', message: 'Puppeteer module could not be loaded.' }],\n\tqa: buildAIQaRun({\n\t\tinfraChecks: [{ name: 'puppeteer_require', status: 'blocked', message: 'Cannot find module puppeteer.' }]\n\t})\n});\n\nconst supportFalsePass004421 = buildAIRun({\n\tid: 'support-004421',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004421', ticketId: 'ticket-004421' },\n\ttitle: '004421 route-only support QA',\n\tstatus: 'Passed',\n\tphase: 'QA',\n\tevents: [{ type: 'scorecard', message: 'Scorecard passed after route loaded.' }],\n\tqa: buildAIQaRun({\n\t\tinfraChecks: [{ name: 'chrome_launch', status: 'pass' }],\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/support/004421', status: 'pass', screenshot: 'qa-artifacts/004421-route.jpg' }]\n\t}),\n\tscorecardPassed: true\n});\n\nconst supportBusinessFailed004423 = buildAIRun({\n\tid: 'support-004423',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004423', ticketId: 'ticket-004423' },\n\ttitle: '004423 business assertion failed',\n\tstatus: 'Running',\n\tphase: 'QA',\n\tevents: [{ type: 'qa_business_assertion', message: 'The expected workflow state did not change.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/support/004423', status: 'pass' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Ticket workflow changes the requested field.',\n\t\t\tstatus: 'fail',\n\t\t\texpected: 'Field updates after save.',\n\t\t\tobserved: 'Field stayed unchanged.'\n\t\t}]\n\t})\n});\n\nconst supportStaleBuild004430 = buildAIRun({\n\tid: 'support-004430',\n\tsource: 'support_ticket',\n\tsourceIds: { ticketNumber: '004430', ticketId: 'ticket-004430' },\n\ttitle: '004430 stale build evidence',\n\tstatus: 'Running',\n\tphase: 'QA',\n\tevents: [{ type: 'qa_compile', message: 'Build log predates the final code diff.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'stale', staleEvidence: true, artifactPath: '.build-output/build-client.log' }\n\t})\n});\n\nconst cryptoPortfolioAccepted = buildAIRun({\n\tid: 'aicoder-crypto-v6-golden',\n\tsource: 'aicoder_app',\n\tsourceIds: { appId: 'crypto-v6-golden', jobId: 'crypto-job-golden' },\n\ttitle: 'Crypto Portfolio Tracker V6 Golden',\n\tstatus: 'Passed',\n\tphase: 'COMPLETE',\n\tevents: [{ type: 'scorecard', message: 'Quality scorecard passed with workflow proof.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/portfolio', status: 'pass', screenshot: 'qa-artifacts/crypto-dashboard.jpg' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Portfolio dashboard calculates seeded crypto holdings.',\n\t\t\tstatus: 'pass',\n\t\t\tdataProof: 'Seeded BTC and ETH holdings render totals, allocation, and change.'\n\t\t}]\n\t}),\n\tscorecardPassed: true,\n\tdeployStatus: 'pass',\n\tpublishStatus: 'published',\n\tsampleDataStatus: 'pass',\n\tterminal: true\n});\n\nconst layflatReleaseBlocked = buildAIRun({\n\tid: 'aicoder-layflat-pressure-optimizer',\n\tsource: 'aicoder_app',\n\tsourceIds: { appId: 'layflat-pressure-optimizer', jobId: 'layflat-job' },\n\ttitle: 'Layflat Pressure Optimizer',\n\tstatus: 'Passed',\n\tphase: 'COMPLETE',\n\tevents: [{ type: 'scorecard', message: 'Scorecard passed but sample data/publish gate failed.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/optimizer', status: 'pass', screenshot: 'qa-artifacts/layflat-route.jpg' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Pressure optimizer computes a layflat hose result.',\n\t\t\tstatus: 'pass',\n\t\t\tdataProof: 'A seeded hose diameter and flow rate produce PSI loss.'\n\t\t}]\n\t}),\n\tscorecardPassed: true,\n\tdeployStatus: 'pass',\n\tpublishStatus: 'publish failed',\n\tsampleDataStatus: 'empty seed collections',\n\tterminal: true\n});\n\nconst assistantWrongDateWindow = buildAIRun({\n\tid: 'assistant-wrong-month-window',\n\tsource: 'ai_assistant',\n\tsourceIds: { conversationId: 'assistant-date-window' },\n\ttitle: 'Assistant wrong month/date-window answer',\n\tstatus: 'Closed',\n\tphase: 'ANSWERED',\n\tevents: [{ type: 'assistant_message', message: 'Answered with the wrong month for today-sensitive invoice data.' }],\n\tqa: buildAIQaRun({\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Assistant date window uses the actual current date.',\n\t\t\tstatus: 'fail',\n\t\t\texpected: 'Use June 2026 for current-month windows.',\n\t\t\tobserved: 'Used a stale month.'\n\t\t}]\n\t}),\n\tgates: [{\n\t\tkey: 'assistant_answer_quality',\n\t\tlabel: 'Assistant answer quality',\n\t\tstatus: 'fail',\n\t\treason: 'Assistant answer did not prove it used the actual current date.',\n\t\tevidenceRefs: [],\n\t\trecordedAt: '2026-06-16T00:00:00.000Z',\n\t\tmetadata: {\n\t\t\tstatus: 'date_incorrect',\n\t\t\tqueryStatus: 'ok',\n\t\t\tdateBasis: '2026-05-01',\n\t\t\texpectedCurrentDate: '2026-06-16'\n\t\t}\n\t}],\n\tmetadata: {\n\t\tanswerQuality: {\n\t\t\tstatus: 'date_incorrect',\n\t\t\tqueryStatus: 'ok',\n\t\t\tdateBasis: '2026-05-01',\n\t\t\texpectedCurrentDate: '2026-06-16'\n\t\t}\n\t},\n\trejected: true,\n\tterminal: true\n});\n\nconst assistantIllegalProjection = buildAIRun({\n\tid: 'assistant-illegal-mongo-projection',\n\tsource: 'ai_assistant',\n\tsourceIds: { conversationId: 'assistant-positional-projection' },\n\ttitle: 'Assistant illegal Mongo positional projection',\n\tstatus: 'Closed',\n\tphase: 'ANSWERED',\n\tevents: [{ type: 'assistant_message', message: 'Mongo query used an illegal positional projection shape.' }],\n\tqa: buildAIQaRun({\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Assistant avoids illegal Mongo positional projection.',\n\t\t\tstatus: 'fail',\n\t\t\texpected: 'Use legal aggregation or field projection shape.',\n\t\t\tobserved: 'Used invalid positional projection.'\n\t\t}]\n\t}),\n\tgates: [{\n\t\tkey: 'assistant_answer_quality',\n\t\tlabel: 'Assistant answer quality',\n\t\tstatus: 'fail',\n\t\treason: 'Assistant must use legal Mongo query/projection shapes before answering.',\n\t\tevidenceRefs: [],\n\t\trecordedAt: '2026-06-16T00:00:00.000Z',\n\t\tmetadata: {\n\t\t\tstatus: 'illegal_query_shape',\n\t\t\tqueryStatus: 'ok',\n\t\t\tlegalQueryShape: false\n\t\t}\n\t}],\n\tmetadata: {\n\t\tanswerQuality: {\n\t\t\tstatus: 'illegal_query_shape',\n\t\t\tqueryStatus: 'ok',\n\t\t\tlegalQueryShape: false\n\t\t}\n\t},\n\trejected: true,\n\tterminal: true\n});\n\nconst qaMissingPuppeteer = buildAIRun({\n\tid: 'qa-missing-puppeteer',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-missing-puppeteer' },\n\ttitle: 'QA runner missing Puppeteer',\n\tstatus: 'Running',\n\tphase: 'PREFLIGHT',\n\tevents: [{ type: 'qa_infra', message: 'Puppeteer failed to require.' }],\n\tqa: buildAIQaRun({\n\t\tinfraChecks: [{ name: 'puppeteer_require', status: 'blocked', message: 'Cannot find module puppeteer.' }]\n\t})\n});\n\nconst qaBadChromePath = buildAIRun({\n\tid: 'qa-bad-chrome-path',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-bad-chrome-path' },\n\ttitle: 'QA runner bad Chrome path',\n\tstatus: 'Running',\n\tphase: 'PREFLIGHT',\n\tevents: [{ type: 'qa_infra', message: 'Chrome executable path was missing.' }],\n\tqa: buildAIQaRun({\n\t\tinfraChecks: [{ name: 'chrome_executable', status: 'fail', message: 'Chrome executable not found.', path: '/bad/chrome' }]\n\t})\n});\n\nconst qaCompileFailure = buildAIRun({\n\tid: 'qa-compile-failure',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-compile-failure' },\n\ttitle: 'QA runner compile failure',\n\tstatus: 'Running',\n\tphase: 'COMPILE',\n\tevents: [{ type: 'qa_compile', message: 'Compile failed before browser QA.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'fail', command: 'npm run build', artifactPath: '.build-output/build.log' }\n\t})\n});\n\nconst qaRouteOnlyPass = buildAIRun({\n\tid: 'qa-route-only-pass',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-route-only-pass' },\n\ttitle: 'QA runner route-only pass',\n\tstatus: 'Passed',\n\tphase: 'BROWSER_QA',\n\tevents: [{ type: 'qa_route_probe', message: 'Route loaded but no business proof exists.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/dashboard', status: 'pass', screenshot: 'qa-artifacts/dashboard.jpg' }]\n\t}),\n\tscorecardPassed: true\n});\n\nconst qaShellOnlyPage = buildAIRun({\n\tid: 'qa-shell-only-page',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-shell-only-page' },\n\ttitle: 'QA runner shell-only page',\n\tstatus: 'Running',\n\tphase: 'BROWSER_QA',\n\tevents: [{ type: 'qa_route_probe', message: 'Shell-only route loaded.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/dashboard', status: 'pass', shellOnly: true, screenshot: 'qa-artifacts/shell.jpg' }]\n\t})\n});\n\nconst qaEmptyData = buildAIRun({\n\tid: 'qa-empty-data',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-empty-data' },\n\ttitle: 'QA runner empty data',\n\tstatus: 'Failed',\n\tphase: 'BROWSER_QA',\n\tevents: [{ type: 'qa_business_assertion', message: 'Workflow rendered empty data.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/invoices', status: 'pass' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Invoice dashboard renders non-empty meaningful data.',\n\t\t\tstatus: 'fail',\n\t\t\texpected: 'At least one meaningful invoice row.',\n\t\t\tobserved: 'Empty table.'\n\t\t}]\n\t}),\n\tterminal: true\n});\n\nconst qaPublishFailureAfterScorecard = buildAIRun({\n\tid: 'qa-scorecard-pass-publish-failure',\n\tsource: 'qa_runner',\n\tsourceIds: { jobId: 'qa-publish-failure' },\n\ttitle: 'QA scorecard pass followed by publish failure',\n\tstatus: 'Passed',\n\tphase: 'RELEASE',\n\tevents: [{ type: 'publish', message: 'Scorecard passed but publish failed.' }],\n\tqa: buildAIQaRun({\n\t\tcompile: { status: 'pass' },\n\t\trouteProbes: [{ route: '/app', status: 'pass' }],\n\t\tbusinessAssertions: [{\n\t\t\tassertion: 'Primary app workflow runs.',\n\t\t\tstatus: 'pass',\n\t\t\tdataProof: 'Workflow action returned expected state.'\n\t\t}]\n\t}),\n\tscorecardPassed: true,\n\tpublishStatus: 'publish failed',\n\tsampleDataStatus: 'pass'\n});\n\nexport const AI_RUN_SEED_EVAL_FIXTURES: AIRunEvalFixture[] = [\n\t{\n\t\tid: 'support-004131',\n\t\ttitle: 'Support 004131 accepted proof',\n\t\tsource: 'support_ticket',\n\t\trun: supportAccepted004131,\n\t\texpected: { outcome: 'accepted', failureClass: 'none', gates: [{ key: 'qa_business_assertion', status: 'pass' }] },\n\t\ttags: ['support', 'accepted', 'business_assertion']\n\t},\n\t{\n\t\tid: 'support-004333',\n\t\ttitle: 'Support 004333 compile failure',\n\t\tsource: 'support_ticket',\n\t\trun: supportBuildFailed004333,\n\t\texpected: { outcome: 'build_failed', failureClass: 'compile', nextActionIncludes: 'compile' },\n\t\ttags: ['support', 'compile']\n\t},\n\t{\n\t\tid: 'support-004341',\n\t\ttitle: 'Support 004341 Puppeteer infra failure',\n\t\tsource: 'support_ticket',\n\t\trun: supportInfraFailed004341,\n\t\texpected: { outcome: 'qa_infra_failed', failureClass: 'infra', nextActionIncludes: 'browser' },\n\t\ttags: ['support', 'infra', 'puppeteer']\n\t},\n\t{\n\t\tid: 'support-004421',\n\t\ttitle: 'Support 004421 route-only false pass',\n\t\tsource: 'support_ticket',\n\t\trun: supportFalsePass004421,\n\t\texpected: { outcome: 'false_pass', failureClass: 'false_pass', gates: [{ key: 'qa_business_assertion', status: 'blocked' }] },\n\t\ttags: ['support', 'route_only', 'false_pass']\n\t},\n\t{\n\t\tid: 'support-004423',\n\t\ttitle: 'Support 004423 business assertion failed',\n\t\tsource: 'support_ticket',\n\t\trun: supportBusinessFailed004423,\n\t\texpected: { outcome: 'qa_incomplete', failureClass: 'business', nextActionIncludes: 'assertion' },\n\t\ttags: ['support', 'business_assertion']\n\t},\n\t{\n\t\tid: 'support-004430',\n\t\ttitle: 'Support 004430 stale build evidence',\n\t\tsource: 'support_ticket',\n\t\trun: supportStaleBuild004430,\n\t\texpected: { outcome: 'build_failed', failureClass: 'compile', nextActionIncludes: 'build' },\n\t\ttags: ['support', 'compile', 'stale_build']\n\t},\n\t{\n\t\tid: 'aicoder-crypto-v6-golden',\n\t\ttitle: 'AICoder Crypto Portfolio Tracker V6 Golden',\n\t\tsource: 'aicoder_app',\n\t\trun: cryptoPortfolioAccepted,\n\t\texpected: { outcome: 'accepted', failureClass: 'none', gates: [{ key: 'qa_business_assertion', status: 'pass' }] },\n\t\ttags: ['aicoder', 'crypto', 'accepted']\n\t},\n\t{\n\t\tid: 'aicoder-layflat-pressure-optimizer',\n\t\ttitle: 'AICoder Layflat Pressure Optimizer release blocked',\n\t\tsource: 'aicoder_app',\n\t\trun: layflatReleaseBlocked,\n\t\texpected: { outcome: 'release_blocked', failureClass: 'release', gates: [{ key: 'release', status: 'fail' }] },\n\t\ttags: ['aicoder', 'layflat', 'release_blocked', 'sample_data']\n\t},\n\t{\n\t\tid: 'assistant-wrong-month-window',\n\t\ttitle: 'Assistant wrong month/date-window answer',\n\t\tsource: 'ai_assistant',\n\t\trun: assistantWrongDateWindow,\n\t\texpected: { outcome: 'rejected', failureClass: 'assistant_date_window' },\n\t\ttags: ['assistant', 'date_window']\n\t},\n\t{\n\t\tid: 'assistant-illegal-mongo-projection',\n\t\ttitle: 'Assistant illegal Mongo positional projection',\n\t\tsource: 'ai_assistant',\n\t\trun: assistantIllegalProjection,\n\t\texpected: { outcome: 'rejected', failureClass: 'assistant_query_shape' },\n\t\ttags: ['assistant', 'mongo_query']\n\t},\n\t{\n\t\tid: 'qa-missing-puppeteer',\n\t\ttitle: 'QA missing Puppeteer',\n\t\tsource: 'qa_runner',\n\t\trun: qaMissingPuppeteer,\n\t\texpected: { outcome: 'qa_infra_failed', failureClass: 'infra' },\n\t\ttags: ['qa_runner', 'infra', 'puppeteer']\n\t},\n\t{\n\t\tid: 'qa-bad-chrome-path',\n\t\ttitle: 'QA bad Chrome path',\n\t\tsource: 'qa_runner',\n\t\trun: qaBadChromePath,\n\t\texpected: { outcome: 'qa_infra_failed', failureClass: 'infra' },\n\t\ttags: ['qa_runner', 'infra', 'chrome']\n\t},\n\t{\n\t\tid: 'qa-compile-failure',\n\t\ttitle: 'QA compile failure',\n\t\tsource: 'qa_runner',\n\t\trun: qaCompileFailure,\n\t\texpected: { outcome: 'build_failed', failureClass: 'compile' },\n\t\ttags: ['qa_runner', 'compile']\n\t},\n\t{\n\t\tid: 'qa-route-only-pass',\n\t\ttitle: 'QA route-only pass',\n\t\tsource: 'qa_runner',\n\t\trun: qaRouteOnlyPass,\n\t\texpected: { outcome: 'false_pass', failureClass: 'false_pass' },\n\t\ttags: ['qa_runner', 'route_only', 'false_pass']\n\t},\n\t{\n\t\tid: 'qa-shell-only-page',\n\t\ttitle: 'QA shell-only page',\n\t\tsource: 'qa_runner',\n\t\trun: qaShellOnlyPage,\n\t\texpected: { outcome: 'qa_incomplete', failureClass: 'route' },\n\t\ttags: ['qa_runner', 'route', 'shell_only']\n\t},\n\t{\n\t\tid: 'qa-empty-data',\n\t\ttitle: 'QA empty data',\n\t\tsource: 'qa_runner',\n\t\trun: qaEmptyData,\n\t\texpected: { outcome: 'rejected', failureClass: 'business' },\n\t\ttags: ['qa_runner', 'empty_data', 'business_assertion']\n\t},\n\t{\n\t\tid: 'qa-scorecard-pass-publish-failure',\n\t\ttitle: 'QA scorecard pass followed by publish failure',\n\t\tsource: 'qa_runner',\n\t\trun: qaPublishFailureAfterScorecard,\n\t\texpected: { outcome: 'release_blocked', failureClass: 'release' },\n\t\ttags: ['qa_runner', 'release_blocked', 'publish']\n\t}\n];\n"]}
|
package/util/ai-run-evidence.js
CHANGED
|
@@ -511,6 +511,21 @@ function classifyAIRunOutcome(input) {
|
|
|
511
511
|
recordedAt: now
|
|
512
512
|
};
|
|
513
513
|
}
|
|
514
|
+
var blockedAssistantAnswerActionabilityGate = gates.find(function (gate) { return gate.key === 'assistant_answer_actionability' && (gate.status === 'blocked' || gate.status === 'fail'); });
|
|
515
|
+
if (input.source === 'ai_assistant' && blockedAssistantAnswerActionabilityGate) {
|
|
516
|
+
var claimedSuccess = input.explicitAccepted === true
|
|
517
|
+
|| statusLooksPassed("".concat(input.status || '', " ").concat(input.phase || ''));
|
|
518
|
+
return {
|
|
519
|
+
outcome: claimedSuccess ? 'false_pass' : 'qa_incomplete',
|
|
520
|
+
reason: claimedSuccess
|
|
521
|
+
? "Assistant answer was marked accepted without a valid actionability contract: ".concat(blockedAssistantAnswerActionabilityGate.reason)
|
|
522
|
+
: "Assistant answer is blocked until actionability evidence validates: ".concat(blockedAssistantAnswerActionabilityGate.reason),
|
|
523
|
+
nextAction: 'Record verified query/date/permission/citation/confidence evidence and one assistant actionability contract before answering or drafting customer-facing text.',
|
|
524
|
+
gates: gates,
|
|
525
|
+
warnings: warnings,
|
|
526
|
+
recordedAt: now
|
|
527
|
+
};
|
|
528
|
+
}
|
|
514
529
|
if ((qa === null || qa === void 0 ? void 0 : qa.outcome) === 'route_only_pass' || (qa === null || qa === void 0 ? void 0 : qa.outcome) === 'incomplete') {
|
|
515
530
|
return {
|
|
516
531
|
outcome: input.scorecardPassed === true ? 'false_pass' : 'qa_incomplete',
|
|
@@ -556,6 +571,23 @@ function classifyAIRunOutcome(input) {
|
|
|
556
571
|
recordedAt: now
|
|
557
572
|
};
|
|
558
573
|
}
|
|
574
|
+
var blockedAICoderNextActionContractGate = gates.find(function (gate) { return gate.key === 'aicoder_next_action_contract' && (gate.status === 'blocked' || gate.status === 'fail'); });
|
|
575
|
+
if (input.source === 'aicoder_app' && blockedAICoderNextActionContractGate) {
|
|
576
|
+
var claimedSuccess = input.explicitAccepted === true
|
|
577
|
+
|| input.scorecardPassed === true
|
|
578
|
+
|| statusLooksPassed(input.scorecardStatus)
|
|
579
|
+
|| statusLooksPassed("".concat(input.status || '', " ").concat(input.phase || ''));
|
|
580
|
+
return {
|
|
581
|
+
outcome: claimedSuccess ? 'false_pass' : 'manual_handoff',
|
|
582
|
+
reason: claimedSuccess
|
|
583
|
+
? "AICoder run claimed success without a manager-safe next-action contract: ".concat(blockedAICoderNextActionContractGate.reason)
|
|
584
|
+
: "AICoder manager cannot safely continue without a manager-safe next-action contract: ".concat(blockedAICoderNextActionContractGate.reason),
|
|
585
|
+
nextAction: 'Record one validated AICoder next-action contract with safeToAutoRun, canRunWithoutCodexMonitor, codexFallbackRequired, stop conditions, and success evidence before another autonomous loop.',
|
|
586
|
+
gates: gates,
|
|
587
|
+
warnings: warnings,
|
|
588
|
+
recordedAt: now
|
|
589
|
+
};
|
|
590
|
+
}
|
|
559
591
|
if (scorecardPassed && !hasBusinessPass) {
|
|
560
592
|
warnings.push('scorecard_pass_without_business_assertion');
|
|
561
593
|
addGateOnce(gates, makeGate('business_assertion_required', 'Business assertion', 'blocked', 'Scorecard passed, but no issue-specific business assertion proof was recorded.', [], now));
|