mirror of https://github.com/garrytan/gstack.git
28 lines
1.1 KiB
TypeScript
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: [] });
|
|
});
|
|
}
|
|
});
|