From bc5a111dca1c83a188236726669c67b0decc5ef4 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: Mon, 8 Jun 2026 12:18:51 +0300 Subject: [PATCH] =?UTF-8?q?feat(m7-phase4b):=20rationalization=20+=20self-?= =?UTF-8?q?debrief=20=D0=B2=20FAIL=5FCLOSE=5FDISCIPLINE=5FHOOKS=20(=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=84=D0=B5=D1=81=D1=82=20=D0=A46)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Обе Stop-дисциплины Фазы 4b зарегистрированы в манифесте fail-CLOSE. self-debrief уже fail-CLOSE поведенчески; rationalization конвертируется отдельным коммитом (Task 2). Манифест-тест (for-of) сверяет наличие обоих. 89/89 тестов хелперов GREEN. --- tools/enforce-hook-helpers.mjs | 2 ++ tools/enforce-hook-helpers.test.mjs | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/tools/enforce-hook-helpers.mjs b/tools/enforce-hook-helpers.mjs index 4227d872..2384706c 100644 --- a/tools/enforce-hook-helpers.mjs +++ b/tools/enforce-hook-helpers.mjs @@ -412,6 +412,8 @@ export const FAIL_CLOSE_DISCIPLINE_HOOKS = Object.freeze([ 'enforce-skill-journaler', 'enforce-coverage-verify', 'enforce-todowrite-skill-verifier', + 'enforce-rationalization-audit', + 'enforce-self-debrief-detector', ]); export const FAIL_QUIET_OBSERVATION_HOOKS = Object.freeze([ diff --git a/tools/enforce-hook-helpers.test.mjs b/tools/enforce-hook-helpers.test.mjs index 10fdb82b..e36c3ba4 100644 --- a/tools/enforce-hook-helpers.test.mjs +++ b/tools/enforce-hook-helpers.test.mjs @@ -87,6 +87,16 @@ describe('FAIL_CLOSE_DISCIPLINE_HOOKS — Фаза 4a поглощённая д } }); +// Фаза 4b поглощённая Stop-дисциплина (§4.2): rationalization + self-debrief fail-CLOSE. +// Символ FAIL_CLOSE_DISCIPLINE_HOOKS — из ./enforce-hook-helpers.mjs (см. import выше). +describe('FAIL_CLOSE_DISCIPLINE_HOOKS — Фаза 4b Stop-дисциплина', () => { + for (const name of ['enforce-rationalization-audit', 'enforce-self-debrief-detector']) { + it(`includes ${name} (fail-CLOSE, манифест Фазы 6)`, () => { + expect(FAIL_CLOSE_DISCIPLINE_HOOKS).toContain(name); + }); + } +}); + describe('safe-baseline action log', () => { it('appends and reads action records', () => { const dir = mkdtempSync(join(tmpdir(), 'sb-'));