test(pi): assert protocol failure fidelity

This commit is contained in:
2026-08-25 12:04:30 +08:00
parent 8c7911191c
commit 27d5d8918f

View File

@@ -190,10 +190,14 @@ async function waitForResilienceProof(electronApplication, predicate, message) {
throw new Error(`${message}: ${JSON.stringify(latest?.resilience)}`);
}
function assertResilienceTerminal(status, expectedRunStatus = 'error') {
function assertResilienceTerminal(
status,
expectedRunStatus = 'error',
expectedErrorCode = 'CODING_RUNTIME_START_FAILED',
) {
if (status?.target?.workerStatus !== 'error'
|| status?.target?.runStatus !== expectedRunStatus
|| status?.target?.errorCode !== 'CODING_RUNTIME_START_FAILED'
|| status?.target?.errorCode !== expectedErrorCode
|| status?.target?.recoverable !== true
|| status?.target?.bindingPreserved !== true
|| status?.other?.bindingPreserved !== true) {
@@ -494,7 +498,11 @@ export async function runPackagedProductProof(options) {
);
const protocolFailure = await evaluateProof(electronApplication, 'resilience.inject-protocol');
assertPackagedMain(protocolFailure);
assertResilienceTerminal(protocolFailure.resilience.status);
assertResilienceTerminal(
protocolFailure.resilience.status,
'error',
'CODING_RUNTIME_PROTOCOL_ERROR',
);
if (protocolFailure.resilience.terminalizationMs > 2_000) {
throw new Error(`Packaged protocol convergence exceeded 2s: ${protocolFailure.resilience.terminalizationMs}`);
}