From eedc700bb776b4a63f59ca926bc0a990fc5b8cb8 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: Thu, 28 May 2026 12:13:54 +0300 Subject: [PATCH] test(classifier): regression guards for 8-pattern PAMYATKA (Phase 3 close) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three regression tests: 1. Header count reflects 8 patterns 2. All 8 patterns present in strict ascending order (1-8) 3. Original 4 patterns (brainstorming/discovery/plans/debugging) preserved verbatim — protects existing accuracy baseline from drift on future pamyatka edits. Closes Phase 3 brain-retro #9 candidates 7/1/8/10. --- docs/observer/STATUS.md | 2 +- tools/router-classifier.test.mjs | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/docs/observer/STATUS.md b/docs/observer/STATUS.md index 7e43c309..0ae470d9 100644 --- a/docs/observer/STATUS.md +++ b/docs/observer/STATUS.md @@ -1,6 +1,6 @@ # Brain Status (auto-generated) -Last updated: 2026-05-28T09:10:54.147Z +Last updated: 2026-05-28T09:12:46.162Z | Контролёр | Состояние | Детали | |---|---|---| diff --git a/tools/router-classifier.test.mjs b/tools/router-classifier.test.mjs index a86e97d3..49a945c6 100644 --- a/tools/router-classifier.test.mjs +++ b/tools/router-classifier.test.mjs @@ -557,4 +557,26 @@ describe('PAMYATKA extensions (Phase 3 brain-retro #9)', () => { expect(system).toMatch(/coder-agent|#19|Task tool|субагент/); expect(system).toMatch(/однотипн|механич|N одинаковых|перенеси все/); }); + + it('PAMYATKA header reflects 8 patterns total', () => { + const { system } = buildClassifierPromptStructured('тест', registry, { enrichment: true }); + expect(system).toMatch(/=== ПАМЯТКА \(8 паттернов\) ===/); + }); + + it('all 8 patterns present in correct order', () => { + const { system } = buildClassifierPromptStructured('тест', registry, { enrichment: true }); + const indices = [1, 2, 3, 4, 5, 6, 7, 8].map(n => system.indexOf(`ПАТТЕРН ${n}`)); + indices.forEach((idx, i) => expect(idx, `ПАТТЕРН ${i + 1} missing`).toBeGreaterThan(-1)); + for (let i = 1; i < indices.length; i++) { + expect(indices[i]).toBeGreaterThan(indices[i - 1]); + } + }); + + it('original 4 patterns (brainstorming, discovery, plans, debugging) preserved verbatim', () => { + const { system } = buildClassifierPromptStructured('тест', registry, { enrichment: true }); + expect(system).toContain('минимум 3 alternative_considered'); + expect(system).toContain('discovery-interview'); + expect(system).toMatch(/single-step.*multi-step|multi-step.*single-step/); + expect(system).toContain('system/expected/actual'); + }); });