feat(ms-ai-architect): Sesjon 20 — B3 create_skill (dvelende, konstruktiv op) [skip-docs]
B3 + Spor B (krav 5+6) KOMPLETT. create_skill er speilbildet av de destruktive ops: merge/saner/retire beviser "ingen kuratert verdi TAPT"; create beviser "ingen sub-bar skill FØDT" (kvalitetsgulv). Ingen ny domene-skill shippet (svar 3) — mekanismen bevist, ikke brukt. - planCreateSkill (ren): genererer scaffold + selv-validerer mot eval.mjs sine EGNE checkers (K2/K3/K5/K6/refTall + K10) — rubrikken har én kilde. Guardrail ok iff alle deterministiske K passerer + K10<terskel + navn ledig. - TEST_DOMAIN_SPEC: kanonisk dvelende-scaffold (born compliant, K5 ratio 1.0). - runCreatePlan (uren): gated dry-run, 0 skriving til skills/. - applyApprovedAction create-gren: re-plan fersk → revalider (drift+kollisjon) → skriv scaffold + persister taksonomi-tillegg → flipp ledger. - applyCategoryAdditions (taxonomy.mjs): additiv, klobrer aldri eksisterende eier. - CLI create-verb i plan-skill-op + apply-skill-op. TDD: ny test-skill-ops-create.test.mjs (16). kb-eval 84→100. Suiter uendret: validate 239 · kb-update 139 · kb-integrity 192/192. Deterministisk eval K1–K10 for de 5 ekte: 0 regresjon. 0 ekte skills/-mutasjon. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
de3a9a483b
commit
e47fc9bd59
5 changed files with 758 additions and 11 deletions
|
|
@ -56,6 +56,26 @@ export function applyCategoryReassignments(tax, reassignments) {
|
|||
return { ...tax, category_skill: next };
|
||||
}
|
||||
|
||||
/**
|
||||
* Add category ownership for a NEW skill (create_skill, Sesjon 20). Pure —
|
||||
* returns a new taxonomy, mutates nothing. For each { category, skill }, the
|
||||
* category is assigned to `skill` ONLY when it is currently UNOWNED (absent):
|
||||
* an existing owner is never clobbered (a create must not steal a sibling's
|
||||
* category — that would be a merge, a different gated op). Additive counterpart
|
||||
* to applyCategoryReassignments: reassign repoints an owned category, add claims
|
||||
* an unowned one. The same gated apply-path is the only writer.
|
||||
* @param {object} tax
|
||||
* @param {Array<{category: string, skill: string}>} additions
|
||||
* @returns {object} new taxonomy
|
||||
*/
|
||||
export function applyCategoryAdditions(tax, additions) {
|
||||
const next = { ...tax.category_skill };
|
||||
for (const { category, skill } of additions) {
|
||||
if (next[category] === undefined) next[category] = skill;
|
||||
}
|
||||
return { ...tax, category_skill: next };
|
||||
}
|
||||
|
||||
/**
|
||||
* Target sitemap child-name prefixes to scan/poll.
|
||||
* @param {object} tax
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue