397777089e
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
1.8 KiB
JavaScript
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(', ')}]`,
|
|
};
|
|
}
|