Files
brain/tools/domain-skill-discipline.mjs
T

31 lines
1.8 KiB
JavaScript

#!/usr/bin/env node
/**
* domain-skill-discipline — дисциплина РЕАЛЬНОГО вызова доменного навыка (дизайн
* 2026-06-05 §4 #3): лучший ловец доменных следствий — сам домен-эксперт
* (frontend-design про мобильный знает по природе). Поэтому в фазе артефакта
* доменный навык надо РЕАЛЬНО вызвать (журнал-проверяемо, принцип K2), а не
* пересказывать «что бы он сказал». Чистый ($0): сверяет рекомендованные
* доменные навыки с фактически вызванными (по журналу М1, инъекция).
*/
/**
* Какие доменные навыки рекомендованы, но РЕАЛЬНО не вызваны (по журналу).
* recommendedDomainSkills — из роутера; invokedSkills — факт журнала (K2).
*/
export function uncalledDomainSkills({ recommendedDomainSkills = [], invokedSkills = [] } = {}) {
const invoked = new Set(invokedSkills);
return recommendedDomainSkills.filter((s) => !invoked.has(s));
}
/** Решение дисциплины: все рекомендованные доменные навыки реально вызваны? */
export function domainCallDiscipline({ recommendedDomainSkills = [], invokedSkills = [] } = {}) {
const uncalled = uncalledDomainSkills({ recommendedDomainSkills, invokedSkills });
return {
ok: uncalled.length === 0,
uncalled,
reason: uncalled.length === 0
? 'все доменные навыки реально вызваны (журнал)'
: `доменный навык не вызван (пересказ вместо вызова, K2): [${uncalled.join(', ')}]`,
};
}