diff --git a/tools/floor-manifest-check.mjs b/tools/floor-manifest-check.mjs index fca04bd1..79ca8597 100644 --- a/tools/floor-manifest-check.mjs +++ b/tools/floor-manifest-check.mjs @@ -39,6 +39,7 @@ const DEFAULT_REQUIRED_HOOKS = [ 'enforce-snapshot.mjs', // М6 снимок: точка отката перед разрушительным 'enforce-floor-escape-consume.mjs', // М6 escape владельца: единственная законная дверь 'enforce-skill-journaler.mjs', // М1 журналер навыков: неподделываемый канал K2 + 'enforce-verify-gate.mjs', // G1 М5-family: подписанный verify-receipt перед commit/push ]; /** Собрать все command-строки хуков из settings (битые/пустые секции игнорируются, не бросает). */ diff --git a/tools/floor-manifest-check.test.mjs b/tools/floor-manifest-check.test.mjs index 4c9459c5..b5953d98 100644 --- a/tools/floor-manifest-check.test.mjs +++ b/tools/floor-manifest-check.test.mjs @@ -80,6 +80,7 @@ describe('floor-manifest-check — F-3: DEFAULT защитный набор ши { type: 'command', command: 'node tools/enforce-snapshot.mjs' }, { type: 'command', command: 'node tools/enforce-floor-escape-consume.mjs' }, { type: 'command', command: 'node tools/enforce-skill-journaler.mjs' }, + { type: 'command', command: 'node tools/enforce-verify-gate.mjs' }, ] }] } }; const r = checkManifest({ settings: full }); // без requiredHooks → DEFAULT expect(r.ok).toBe(true); @@ -107,3 +108,9 @@ describe('SE-B (М7 Фаза 6): DEFAULT включает М4 (judge-gate) + М6 expect(r.missing).toContain('enforce-judge-gate.mjs'); }); }); + +describe('G1: DEFAULT_REQUIRED_HOOKS включает enforce-verify-gate (М5-family verify)', () => { + it('DEFAULT_REQUIRED_HOOKS содержит enforce-verify-gate.mjs', () => { + expect(manifestInternals.DEFAULT_REQUIRED_HOOKS).toContain('enforce-verify-gate.mjs'); + }); +});