guanghu-ice-heart/tcs-core/channel-system/team-persona-kernel-readiness-matrix.test.mjs

27 lines
1.5 KiB
JavaScript

import assert from "node:assert/strict";
import fs from "node:fs";
import path from "node:path";
import test from "node:test";
import { fileURLToPath } from "node:url";
const directory = path.dirname(fileURLToPath(import.meta.url));
const matrix = JSON.parse(fs.readFileSync(path.join(directory, "team-persona-kernel-readiness-matrix.json"), "utf8"));
test("team matrix covers the seven requested human lines without inventing initialization channels", () => {
assert.deepEqual(matrix.lines.map((line) => line.human), ["桔子", "Awen", "花尔", "肥猫", "页页", "时雨", "毛毛"]);
assert.equal(matrix.initialization_channel_rule.seven_independent_instances_verified, false);
});
test("evidence gates keep candidate and memory-only lines out of formal architecture promotion", () => {
const byHuman = Object.fromEntries(matrix.lines.map((line) => [line.human, line]));
assert.equal(byHuman["花尔"].line_classification, "CANDIDATE_SHELL_ONLY");
assert.equal(byHuman["时雨"].line_classification, "MEMORY_ROOT_ONLY");
assert.equal(byHuman["时雨"].architecture_persona.classification, "UNKNOWN");
assert.equal(byHuman["桔子"].architecture_persona.name, null);
});
test("known role and numbering conflicts are tombstoned", () => {
assert.ok(matrix.global_tombstones.includes("YAOSHI_IS_NOT_PER_MM_ARCH_001_IN_CURRENT_ROUTE"));
assert.ok(matrix.global_tombstones.includes("OLD_YEYE_TCS_GL_0005_LABEL_MUST_NOT_OVERRIDE_TCS_GL_0006"));
assert.ok(matrix.global_tombstones.includes("PER_SS001_IS_NOT_THE_CURRENT_CANONICAL_SHUSHU_ID"));
});