# Normalizer v1.1.1 Patch Notes

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

Сделан точечный `v1.1.1` patch поверх `v1.1` без пересборки архитектуры и без изменения schema:

- добавлен новый preset `normalizer_v1_1_1` в prompt manager;
- добавлен developer prompt:
  - `prompts/developer/normalizer_v1_1_1.txt`
- добавлен few-shot prompt:
  - `prompts/fewshot/normalizer_fewshot_v1_1_1.txt`
- domain prompt намеренно не переписывался (используется `normalizer_domain_v1_1.txt`);
- добавлены micro-eval артефакты:
  - `reports/normalizer_v1_1_1_micro_eval.json`
  - `reports/normalizer_v1_1_1_micro_eval.md`

## Какие 3 паттерна лечили

1. `period_close_risk` vs `heavy_analytical`
- закреплен приоритет `period_close_risk` для лексики предзакрытия/последнего дня/сдачи отчетности.

2. Точечный drilldown и лишний `needs_cross_entity_join`
- закреплено правило exact object trace:
  - `needs_exact_object_trace = true`
  - `needs_runtime_truth = true`
  - `needs_cross_entity_join = false` (если нет массового multi-entity анализа).

3. `anomaly_probe` и лишняя batch escalation
- закреплено правило: если есть риск/аномалия без рейтинга и company-wide aggregation, route остается `store_feature_risk`.

## Почему изменения безопасны

- изменения локализованы только в developer/few-shot слоях `v1.1.1`;
- сильные зоны `cross_entity`, causal chain и schema не переписывались;
- schema и transport-контракт не изменены;
- количество новых few-shot ограничено тремя целевыми примерами.

## Бюджет вызовов и ретраи

Текущий micro-run в этой среде выполнен в `use_mock=true`, так как `OPENAI_API_KEY` в shell не задан.

- внешние API-вызовы: `0`
- ретраи: `0`
- лимит этапа (`<=5`) не превышен.

## Что улучшилось

По micro-eval на целевых 5 кейсах:
- `schema_validation_pass_rate = 100`
- `intent_class_accuracy = 100`
- `route_hint_accuracy = 100`
- `causal_flag_accuracy = 100`
- `high_confidence_error_rate = 0`

Покрытые кейсы:
- `NQ-008`
- `V11-DD-005`
- `V11-OT-003`
- `V11-OT-004`
- `V11-OT-005`

## Что осталось как есть

- core логика `v1.1` по `cross_entity`/`heavy_analytical`/`rule_based_account_control` не расширялась;
- не добавлялся большой eval sweep;
- не трогались schema, parser и orchestration-контракты.

## Важно для финальной приемки

Micro-run зафиксирован корректно, но он mock-based (`use_mock=true`).
Для production-приемки `v1.1.1` нужно один реальный strict micro-run на тех же 5 кейсах с `use_mock=false` и OpenAI API key.
