Files
codex-game-studio/tests/ccgs-adaptation.test.ts
f3365d2613 feat: close CCGS parity gaps (#12)
* docs: remove implemented OpenSpec change

Remove the completed eval framework OpenSpec change documents and add a CCGS gap task reference based on the parity reports and upstream CCGS surfaces.

* feat: generate CCGS gap report

Add an OpenSpec-backed implementation for deterministic remaining-gap reporting from the CCGS parity matrix, including tests and regenerated references.

* feat: deepen accessibility role parity

Add OpenSpec-backed CCGS-depth coverage for the accessibility specialist role, including role contract tests, parity regression tests, and regenerated gap reports.

* feat: close direct role depth gaps

Add OpenSpec-backed CCGS-depth contracts for the remaining direct role package gaps, plus parity tests and regenerated remaining-gap reports. Stop before engine sub-specialist, workflow, template, and rule work.

* feat: add engine sub-specialist roles

Add OpenSpec-backed CCGS engine sub-specialist parity, selected-engine role sets, wrong-engine gating, focused engine references, generated custom-agent surfaces, tests, and regenerated parity reports.

* feat: close first workflow parity batch

* feat: close remaining workflow parity gaps

* feat: close final CCGS parity gaps

* chore: remove implemented OpenSpec changes

---------

Co-authored-by: MerlinH <merlinh221@gmail.com>
2026-07-07 14:09:47 +10:00

28 lines
1.5 KiB
TypeScript

import { describe, test } from "node:test";
import { expect } from "expect";
import { ccgsInventory, ccgsRoleAdaptations, ccgsSkillAdaptations, validateCcgsAdaptation } from "../src/ccgs-adaptation.js";
import { studioRoleIds } from "../src/roles.js";
describe("curated CCGS adaptation registry", () => {
test("documents a pinned reviewed source without claiming clone parity", () => {
expect(ccgsInventory.source).toContain("Claude-Code-Game-Studios");
expect(ccgsInventory.reviewedAt).toBe("2026-06-25");
expect(ccgsInventory.policy).toMatch(/Curated reference/i);
});
test("maps CCGS roles without reintroducing legacy underscore ids", () => {
expect(ccgsRoleAdaptations.length).toBeGreaterThanOrEqual(49);
for (const legacy of ["producer_agent", "qa_agent", "master_orchestrator"]) {
expect(studioRoleIds).not.toContain(legacy as never);
}
expect(ccgsRoleAdaptations.find((item) => item.sourceId === "lead-programmer")?.decision).toBe("built-in-add-candidate");
expect(ccgsRoleAdaptations.find((item) => item.sourceId === "godot-gdscript-specialist")?.decision).toBe("built-in-existing");
});
test("maps team skills to recipes and skill-maintenance surfaces out of scope", () => {
expect(ccgsSkillAdaptations.find((item) => item.sourceId === "team-ui")?.decision).toBe("recipe");
expect(ccgsSkillAdaptations.find((item) => item.sourceId === "skill-test")?.decision).toBe("out-of-scope");
expect(validateCcgsAdaptation()).toEqual([]);
});
});