#!/usr/bin/env node // tools/scripts/lint-protocol-sync.mjs // Source: 04-CONTEXT.md D-19/D-25 — drift guard for the build-time copy of // tools/protocol-doc/output/protocol.ts → packages/protocol/src/legacy-opcodes.ts. // // Usage: node tools/scripts/lint-protocol-sync.mjs // Exit: 0 in-sync, 1 drift detected, 2 usage error. import { readFileSync } from 'node:fs'; function fail(msg) { process.stderr.write(`lint-protocol-sync: ${msg}\n`); process.exit(1); } let src, copy; try { src = readFileSync('tools/protocol-doc/output/protocol.ts', 'utf-8'); } catch (e) { fail(`source not found: ${e.message}`); } try { copy = readFileSync('packages/protocol/src/legacy-opcodes.ts', 'utf-8'); } catch (e) { fail(`copy not found: ${e.message}. Run \`pnpm --filter @rebno/protocol prebuild\`.`); } // The copy is HEADER + src. Check copy ENDS WITH src exactly. if (!copy.endsWith(src)) { fail( 'legacy-opcodes.ts is out of sync with tools/protocol-doc/output/protocol.ts. ' + 'Run `pnpm --filter @rebno/protocol prebuild`.', ); } console.log('lint-protocol-sync: OK'); process.exit(0);