import assert from 'node:assert/strict'; import test from 'node:test'; import { classifyCheckResult } from './goose-v149-check-result.mjs'; test('migration gates reject successful exits with missing or nested failed evidence', () => { for (const stdout of [ 'GOOSE_V149_PAGE_E2E_OK: skipped', 'GOOSE_V149_PHASE2_OK_WITH_SKIPS: cost', 'GOOSE_V149_PORTAL_SMOKE_SKIP: stale\nGOOSE_V149_PORTAL_SMOKE_OK: skipped (stale Portal process)', 'GOOSE_V149_PHASE3_INCOMPLETE: memory', ]) assert.equal(classifyCheckResult({ status: 0, stdout }), 'SKIP'); assert.equal(classifyCheckResult({ status: 0, stderr: 'GOOSE_V149_PROVIDER_FAIL: bad request' }), 'FAIL'); assert.equal(classifyCheckResult({ status: null, signal: 'SIGTERM' }), 'FAIL'); assert.equal(classifyCheckResult({ status: 1, stdout: '' }), 'FAIL'); assert.equal(classifyCheckResult({ status: 0, stdout: 'GOOSE_V149_MEMORY_FAILOPEN_OK: degraded' }), 'PASS'); assert.equal(classifyCheckResult({ status: 0, stdout: 'GOOSE_V149_MULTITURN_OK: turns=2' }), 'PASS'); });