Files
memind/scripts/check-goosed-v149-memory-failopen.mjs
T

51 lines
1.5 KiB
JavaScript
Raw Normal View History

#!/usr/bin/env node
/**
* Phase 2: Memory fail-open drill for v1.49 canary profile (legacy owner).
* Verifies resolve failures degrade without throwing when MEMORY_FAIL_OPEN=1.
*/
import { createMemoryV2 } from '../memory-v2.mjs';
const silentLogger = () => ({
warn() {},
info() {},
log() {},
});
async function main() {
const memory = createMemoryV2({
logger: silentLogger(),
legacyMemoryService: {
listMemories: async () => {
throw new Error('simulated legacy resolve timeout');
},
},
env: {
MEMORY_ENABLED: '1',
MEMORY_FAIL_OPEN: '1',
MEMORY_BACKEND: 'legacy',
MEMORY_VECTOR_ENABLED: '0',
MEMORY_AGENT_INJECTION_MODE: 'off',
},
});
const status = memory.getStatus();
if (status.backend !== 'legacy') {
throw new Error(`expected legacy backend for v1.49 profile, got ${status.backend}`);
}
const resolved = await memory.resolve({ userId: 'u-failopen', query: 'marker' });
if (!resolved.degraded) {
throw new Error(`expected degraded resolve, got ${JSON.stringify(resolved)}`);
}
if (!Array.isArray(resolved.memories) || resolved.memories.length !== 0) {
throw new Error(`fail-open should return empty memories, got ${JSON.stringify(resolved.memories)}`);
}
console.log('GOOSE_V149_MEMORY_FAILOPEN_OK: legacy resolve failure degraded without throwing');
}
main().catch((error) => {
console.error(`GOOSE_V149_MEMORY_FAILOPEN_FAIL: ${error.message}`);
process.exit(1);
});