From 332ea25eb7cab1d9acdeb5d9d7aba0a0c5b1fdb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Sun, 21 Jun 2026 09:54:55 +0300 Subject: [PATCH] =?UTF-8?q?feat(registry):=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D0=BA=D1=82-=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=20surfacing-open-questions=20+=20=D1=80=D0=B5=D0=B3?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B2=20?= =?UTF-8?q?=D1=81=D0=BB=D0=BE=D0=B2=D0=B0=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Узел 6 скила охотника (спека v6, раздел contract): карточка-контракт own-навыка, токен closed-open-questions-ledger в capability-vocabulary, счётчик контрактов 153→154. Реестр остаётся зелёным (vocab-rollout-full). Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/registry/capability-vocabulary.json | 6 +++++ .../surfacing-open-questions.contract.json | 24 +++++++++++++++++++ tools/vocab-rollout-full.test.mjs | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 docs/registry/contracts/surfacing-open-questions.contract.json 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('граф непуст: рёбра рабочих цепочек существуют на полном наборе', () => {