27 lines
1.5 KiB
JavaScript
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"));
|
|
});
|