2026-07-27 17:52:27 +08:00
|
|
|
const assert = require("node:assert/strict");
|
|
|
|
|
const fs = require("node:fs");
|
|
|
|
|
const path = require("node:path");
|
|
|
|
|
|
|
|
|
|
const root = path.resolve(__dirname, "..");
|
|
|
|
|
const map = JSON.parse(
|
|
|
|
|
fs.readFileSync(path.join(__dirname, "hololake-language-persona-os-map.json"), "utf8"),
|
|
|
|
|
);
|
|
|
|
|
const repositories = JSON.parse(
|
|
|
|
|
fs.readFileSync(path.join(__dirname, "repository-route-map.json"), "utf8"),
|
|
|
|
|
);
|
|
|
|
|
const worldTree = JSON.parse(
|
|
|
|
|
fs.readFileSync(path.join(__dirname, "fifth-domain-world-tree.json"), "utf8"),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
assert.equal(map.map_id, "HLP-LPOS-MAP-001");
|
|
|
|
|
assert.equal(map.fifth_domain_entry.repository_id, repositories.default_repository);
|
|
|
|
|
assert.deepEqual(map.concept_ancestry, [
|
|
|
|
|
"GLS-0810",
|
|
|
|
|
"GLS-0233",
|
|
|
|
|
"GLS-0235",
|
|
|
|
|
"GLS-0236",
|
|
|
|
|
"GLS-0245",
|
|
|
|
|
]);
|
2026-08-03 10:10:43 +08:00
|
|
|
assert.equal(map.canonical_product_source.repository_id, "REPO-014");
|
|
|
|
|
assert.match(map.canonical_product_source.source_baseline, /^[0-9a-f]{40}$/);
|
2026-07-27 17:52:27 +08:00
|
|
|
assert.equal(
|
2026-08-03 10:10:43 +08:00
|
|
|
map.canonical_product_source.source_baseline,
|
|
|
|
|
"1cb3950e67c2f3feab65b8932c5cabcc2cafc33a",
|
2026-07-27 17:52:27 +08:00
|
|
|
);
|
|
|
|
|
assert.deepEqual(map.native_application_lifecycle, [
|
|
|
|
|
"resolve",
|
|
|
|
|
"authorize",
|
|
|
|
|
"fetch",
|
|
|
|
|
"verify",
|
|
|
|
|
"assemble",
|
|
|
|
|
"mount",
|
|
|
|
|
"run",
|
|
|
|
|
"checkpoint",
|
|
|
|
|
"receipt",
|
|
|
|
|
"unmount_or_pin",
|
|
|
|
|
]);
|
|
|
|
|
|
2026-08-03 10:50:33 +08:00
|
|
|
const repo8 = repositories.historical_repositories.find((item) => item.code === "REPO-008");
|
2026-07-27 17:52:27 +08:00
|
|
|
assert.ok(repo8, "REPO-008 must remain registered");
|
2026-08-03 10:50:33 +08:00
|
|
|
assert.equal(repo8.state, "HISTORICAL_READ_ONLY_NO_PUSH_ROUTE_CLOSED");
|
2026-08-03 10:10:43 +08:00
|
|
|
assert.equal(repo8.replaced_by, "REPO-014");
|
2026-07-27 17:52:27 +08:00
|
|
|
assert.equal(
|
|
|
|
|
repo8.product_architecture_map.path,
|
|
|
|
|
"routing/hololake-language-persona-os-map.json",
|
|
|
|
|
);
|
2026-08-03 10:10:43 +08:00
|
|
|
const repo14 = repositories.repositories.find((item) => item.code === "REPO-014");
|
|
|
|
|
assert.ok(repo14, "REPO-014 must remain registered");
|
|
|
|
|
assert.equal(repo14.state, "PUBLIC_SOURCE_AND_ARCHITECTURE_PRIMARY");
|
2026-07-27 17:52:27 +08:00
|
|
|
|
|
|
|
|
const productNode = worldTree.nodes.find(
|
|
|
|
|
(item) => item.object_id === "GH-AIOS-LIGHTHOUSE-020",
|
|
|
|
|
);
|
|
|
|
|
assert.ok(productNode, "HoloLake product node must exist in the Fifth Domain world tree");
|
2026-08-03 10:10:43 +08:00
|
|
|
assert.equal(productNode.repository_id, "REPO-014");
|
|
|
|
|
assert.equal(productNode.repository_path, "product-source/hololake-platform");
|
2026-07-27 17:52:27 +08:00
|
|
|
|
|
|
|
|
const fifthDomainRoute = worldTree.edges.find(
|
|
|
|
|
(edge) =>
|
|
|
|
|
edge.from === "FIFTH_DOMAIN" &&
|
|
|
|
|
edge.relation === "routes_to_product_architecture" &&
|
|
|
|
|
edge.to === "GH-AIOS-LIGHTHOUSE-020",
|
|
|
|
|
);
|
|
|
|
|
assert.ok(fifthDomainRoute, "Fifth Domain must route to the HoloLake product architecture");
|
|
|
|
|
|
|
|
|
|
assert.ok(
|
|
|
|
|
fs.existsSync(
|
|
|
|
|
path.join(root, "gls", "GLS-0245-HOLOLAKE-LANGUAGE-PERSONA-OPERATING-SYSTEM-PRODUCT-MAPPING.hdlp"),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
console.log("hololake-language-persona-os-map: ok");
|