# Normalizer v1.1.2 Patch Notes

## Проблема v1.1.1

На `v1.1.1` был локальный перекос taxonomy на границе:
- `heavy_analytical` ↔ `period_close_risk`.

Симптом:
- вопросы обзорного/рейтингового типа в контексте закрытия периода местами уезжали в `period_close_risk`;
- часть пограничных кейсов получала излишне уверенную оценку.

Root cause:
- правило для `period_close_risk` в `v1.1.1` было слишком жестким;
- был сильный positive-trigger на close-context без симметричного противовеса для heavy-overview.

## Что изменено

### 1) Developer prompt (новый файл)
- Добавлен `prompts/developer/normalizer_v1_1_2.txt`.
- Переписан boundary-блок:
  - `period_close_risk` только если core вопроса про риск срыва/дестабилизации close-процесса.
  - `heavy_analytical` имеет приоритет, если цель вопроса: ranking/top/overview/summary/company-wide/prioritized analytical review, даже в close-контексте.

### 2) Few-shot (новый файл)
- Добавлен `prompts/fewshot/normalizer_fewshot_v1_1_2.txt`.
- Сохранен anchor-пример для `period_close_risk`.
- Добавлены 2 симметричных heavy-counterexamples:
  - "Сделай рейтинг самых рисковых хвостов..."
  - "Дай обзорный риск-срез перед сдачей отчетности..."

### 3) Confidence guard
- Добавлено явное правило в `developer v1.1.2`:
  - на boundary `heavy_analytical`/`period_close_risk` не ставить `confidence.overall=high` без однозначного close-failure core.

## Что не меняли (безопасность patch)

- schema не менялась;
- route rules не переписывались;
- cross-entity / drilldown / anomaly core-патчи не пересобирались;
- domain prompt не расширяли массово.

Это intentional surgical patch только на одном taxonomy-boundary.

## Изменения в коде

- добавлена версия `normalizer_v1_1_2` в prompt manager и типы версий;
- добавлен micro-eval авто-артефакт для кейсов:
  - `NQ-002, NQ-007, V11-HA-004, V11-OT-003, V11-OT-005`
  - файлы: `reports/normalizer_v1_1_2_micro_eval.json|md`;
- UI и preset save по умолчанию переведены на `normalizer_v1_1_2`.

## Бюджет API

В этой среде `OPENAI_API_KEY` не задан, поэтому micro-run выполнен в `use_mock=true`.

- внешние API-вызовы: `0`
- ретраи: `0`

Лимит этапа `<= 5` не превышен.

## Результаты micro-run

Отчет: `reports/normalizer_v1_1_2_micro_eval.json`

- `NQ-002` -> `heavy_analytical` (ok)
- `NQ-007` -> `heavy_analytical` (ok)
- `V11-HA-004` -> `heavy_analytical` (ok)
- `V11-OT-003` -> `period_close_risk` (ok)
- `V11-OT-005` -> `period_close_risk` (ok)

Итог метрик micro-run:
- schema_validation_pass_rate = 100
- intent_class_accuracy = 100
- route_hint_accuracy = 100
- causal_flag_accuracy = 100
- high_confidence_error_rate = 0

## Что осталось на будущее

- Сделать один production micro-run (`use_mock=false`) на тех же 5 кейсах для финальной приемки по фактическому API-поведению модели.
- После подтверждения можно закрывать `v1.1.2` и переходить к следующей пачке новых кейсов.
