refactor(workflow): contract shared core (#33)

This commit is contained in:
2026-08-24 03:12:00 +02:00
parent f375515dc0
commit 36a7a0ab33
19 changed files with 173 additions and 29 deletions
@@ -0,0 +1,43 @@
const test = require("node:test");
const assert = require("node:assert");
const { readdirSync, readFileSync } = require("node:fs");
const { dirname, extname, join, relative, resolve, sep } = require("node:path");
const gateRoot = resolve(__dirname, "..");
const domainRoots = ["disambiguation", "memory"];
function productionFiles(root) {
return readdirSync(root, { withFileTypes: true }).flatMap((entry) => {
const path = join(root, entry.name);
if (entry.isDirectory()) {
return entry.name === "__tests__" ? [] : productionFiles(path);
}
return [".js", ".mjs"].includes(extname(entry.name)) ? [path] : [];
});
}
function relativeImports(path) {
const source = readFileSync(path, "utf8");
return [...source.matchAll(/(?:from\s+|import\s*(?:\(\s*)?|require\s*\(\s*)["'](\.[^"']+)["']/g)]
.map((match) => match[1]);
}
test("gate domain modules receive shared behavior as capabilities", () => {
for (const domain of domainRoots) {
const root = join(gateRoot, domain);
for (const path of productionFiles(root)) {
const imports = relativeImports(path).map((specifier) =>
relative(gateRoot, resolve(dirname(path), specifier)).split(sep).join("/"));
const violations = imports.filter((target) =>
target !== domain && !target.startsWith(`${domain}/`));
assert.deepEqual(
violations,
[],
`${relative(gateRoot, path)} imports gate implementation directly: ${violations.join(", ")}`,
);
}
}
});