diff --git a/docs/registry/capability-vocabulary.json b/docs/registry/capability-vocabulary.json index 9507d3e..9f24200 100644 --- a/docs/registry/capability-vocabulary.json +++ b/docs/registry/capability-vocabulary.json @@ -769,6 +769,12 @@ "label": "discovery-brief", "description": "FEATURE-бриф или SYSTEM-снимок. Выход discovery-interview." }, + { + "token": "closed-open-questions-ledger", + "category": "produced", + "label": "closed-open-questions-ledger", + "description": "Закрытый реестр открытых вопросов со штампом источника. Выход surfacing-open-questions." + }, { "token": "knowledge-graph-answer", "category": "produced", diff --git a/docs/registry/contracts/surfacing-open-questions.contract.json b/docs/registry/contracts/surfacing-open-questions.contract.json new file mode 100644 index 0000000..54800f4 --- /dev/null +++ b/docs/registry/contracts/surfacing-open-questions.contract.json @@ -0,0 +1,24 @@ +{ + "skill": "surfacing-open-questions", + "kind": "own", + "needs": [ + "pre-design-task" + ], + "produces": [ + "closed-open-questions-ledger" + ], + "constraints": [ + "ручной вызов; заземление: владелец = воля, не истина; источник у каждого факта", + "блокер заземляется до закрытия; журнал append-only в карантине docs/observer/questions" + ], + "preview-form": "outline", + "defaults": [ + "передаёт закрытый реестр в brainstorming" + ], + "key-decisions": [ + "slug темы при старте" + ], + "acceptance-criteria": [ + "ноль открытых блокеров; каждое решение со штампом источника" + ] +} diff --git a/tools/vocab-rollout-full.test.mjs b/tools/vocab-rollout-full.test.mjs index 947d6e6..76c5f71 100644 --- a/tools/vocab-rollout-full.test.mjs +++ b/tools/vocab-rollout-full.test.mjs @@ -20,7 +20,7 @@ describe('Phase 2b ИТОГ — весь реестр проходит замо const { contracts, errors } = buildRegistry(entries, { vocabTokens: tokens }); expect(errors).toEqual([]); expect(contracts.length).toBe(FILES.length); - expect(FILES.length).toBe(153); + expect(FILES.length).toBe(154); }); it('граф непуст: рёбра рабочих цепочек существуют на полном наборе', () => {