gstack/test/carve-section-ordering.test.ts

28 lines
1.1 KiB
TypeScript

/**
* E2 — carve static ordering guard (GATE tier, free, deterministic).
*
* The per-PR mechanical backstop for EVERY carved skill: it fails CI the moment a
* regen drops/weakens a skeleton's STOP-Read directive, strands a section, leaks
* heavy body back into the skeleton, or moves a post-STOP gate above the STOP.
*
* Data-driven from the canonical CARVE_GUARDS registry (EQ1) with per-skill
* invariants (codex outside-voice #3 — NOT a copy of the ceo-specific test, which
* this generalizes and retires). One test() per skill so a failure names the skill.
*/
import { describe, test, expect } from 'bun:test';
import * as path from 'path';
import { CARVE_GUARDS } from './helpers/carve-guards';
import { checkOrdering } from './helpers/carve-guard-checks';
const ROOT = path.resolve(import.meta.dir, '..');
describe('carve static ordering (gate, free)', () => {
for (const guard of Object.values(CARVE_GUARDS)) {
test(`${guard.skill}: skeleton routes to sections correctly`, () => {
const failures = checkOrdering(ROOT, guard);
expect({ skill: guard.skill, failures }).toEqual({ skill: guard.skill, failures: [] });
});
}
});