АДРЕСНЫЙ РЕЖИМ - fix(address): закрыт S019 predecompose-anchor drift; nightly 102/102+25/25 PASS; docs synced

This commit is contained in:
2026-04-08 11:15:33 +03:00
parent a5dee965c2
commit eec5ef4fc0
210 changed files with 325486 additions and 100 deletions
+21 -4
View File
@@ -3,18 +3,33 @@
Дата: 2026-04-03
Статус синхронизации: актуализировано по текущему коду в `llm_normalizer/backend/src/services/*`.
## Актуальный статус (2026-04-03)
## Актуальный статус (2026-04-08)
- Этап стабилизации закрыт под `strict_policy=route`.
- Step-0 pre-prod rails закрыт (reference-domain + nightly automation).
- Этап 3 (универсализация value-вопросов общего домена) закрыт на уровне кода и targeted-тестов.
- Batch-1 domain live-gate закрыт: `strict 28/28`
`docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B1_PhaseC_LiveGate_R3/run_summary.json`
- Batch-3 value live-gate закрыт: `strict 33/33`
`docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B3_Value_LiveGate_R2/run_summary.json`
- Global nightly comparator после фиксов закрыт (`overall_ok=true`, comparator PASS):
`docs/ADDRESS/runs/2026-04-03_Address_Nightly_Regression_Post_AnchorHardening_R6/nightly_summary.json`
- Ручной контрольный nightly (`2026-04-08 10:29`) зафиксировал точечный flake:
- `stress_102`: `101/102` (провал `S019`, `materialized_but_not_anchor_matched`)
- `followup_25`: `25/25`
- run: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-29-08/nightly_summary.json`
- Повторный контрольный nightly (`2026-04-08 10:51`) закрыт в `PASS`:
- `stress_102`: `102/102`
- `followup_25`: `25/25`
- comparator: `PASS`
- run: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json`
- Финальный stress-pack: `102/102`
`docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27/run_summary.json`
- Финальный follow-up pack: `25/25`
`docs/ADDRESS/runs/2026-04-02_Address_Followup_Context_Chains_2026-04-02_19-15-Run5/run_summary.json`
- Актуальный nightly regression (green):
`docs/ADDRESS/runs/2026-04-02_Address_Nightly_Regression_2026-04-02_17-35-00/nightly_summary.json`
- Task Scheduler: `NDC_ADDRESS_Nightly_Regression` (`daily 03:30`, owner `DCTOUCH`).
`docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json`
- Task Scheduler: `NDC_ADDRESS_Nightly_Regression` временно `Disabled` (ручной режим до стабилизации infra-канала).
- Текущий production-контур: `question_mode=address_query`, live-first через MCP.
- Следующий этап: `Step-4` domain expansion по рельсовой модели Step-0.
@@ -44,7 +59,8 @@
Ключевой scope-лимит:
- `COMPOUND_FACTUAL_QUERY` пока detection-only (без multi-intent execution).
- management/value intents реализованы в коде, но еще не закрыты через полный domain live-gate (Batch-1/Batch-3).
- management/value intents реализованы в коде и закрыты через domain live-gate (Batch-1/Batch-3).
- глобальный comparator на `102 + 25` закрыт в `PASS` (nightly R6).
- для value-ranking ответов действует дефолт: `top-20` (если пользователь явно не запросил другой лимит).
- `account_turnover_snapshot` и `list_documents_by_type` не реализованы в runtime V1.
@@ -67,6 +83,7 @@
- `step4_wave1_batch1_master_checker_v1.md` - master checker первой волны Step-4 (`Q1..Q7 + Q28`) с go/no-go фазами.
- `wave1_batch1_readiness_report_2026-04-02.md` - авто-отчет готовности к старту Batch-1.
- `stage3_value_universalization_closeout_2026-04-03.md` - закрытие этапа 3 по value-вопросам общего домена (профит, тестовый gate, остаточные риски).
- `wave1_batch1_batch3_live_gate_report_2026-04-03.md` - фактический отчет по live-gate Batch-1/Batch-3 и статусу глобального regression/comparator (PASS в R6).
- `domain_general_batch1_foundation_card_v1.md` - domain card первой волны (Phase A).
- `step4_wave1_batch1_phaseA_backlog_v1.md` - рабочий backlog по подготовке кода и gate-этапам Batch-1.
- `domain_card_template_v1.md` - шаблон описания домена для repeatable delivery.
@@ -392,7 +392,12 @@ Routes:
- в runtime добавлены и покрыты тестами management/value intents: `counterparty_population_and_roles`, `counterparty_activity_lifecycle`, `contract_usage_overview`, `customer_revenue_and_payments`, `supplier_payouts_profile`, `contract_usage_and_value`;
- для value-вопросов зафиксирован единый стандарт ответа `top-20` по умолчанию;
- усилен semantic routing для сленга и опечаток без словарей уникальных контрагентов;
- targeted code gate по ключевому набору `addressQueryRuntimeM23.test.ts` закрыт: `186/186`, `build=PASS`.
- targeted code gate по ключевому набору `addressQueryRuntimeM23.test.ts` закрыт: `200/200`, `build=PASS`;
- Batch-1 domain pack live gate: `strict 28/28` (`docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B1_PhaseC_LiveGate_R3/`);
- Batch-3 value pack live gate: `strict 33/33` (`docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B3_Value_LiveGate_R2/`);
- глобальный comparator (`102 + 25`) после фиксов закрыт в `PASS` (`docs/ADDRESS/runs/2026-04-03_Address_Nightly_Regression_Post_AnchorHardening_R6/nightly_summary.json`).
- operational note на `2026-04-08`: авто-nightly из scheduler упал по инфраструктурным `MCP fetch failed: fetch failed`; это не трактуется как функциональный откат маршрутов.
- повторный ручной nightly recheck (`2026-04-08 10:51`) закрыт в `PASS`: `stress_102=102/102`, `followup_25=25/25`, comparator `PASS`.
## 11. Полная матрица Q -> Route -> Complexity -> Batch
@@ -27,14 +27,14 @@
| AQ-P0-08 | list_documents_by_contract | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | document-filter может обнулять rows по узкому окну | contract docs fallback + resolver hardening |
| AQ-P0-08B | bank_operations_by_contract | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | устойчивость зависит от contract anchor качества | усилить contract normalization и follow-up carryover |
| AQ-P0-09 | documents_forming_balance | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | account-family чувствителен к row-shape/materialization | продолжить materialization diagnostics |
| AQ-B1-10 | period_coverage_profile | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | новый management intent, еще не закрыт domain-gate Batch-1 | закрыть Phase B/C gate на `Q1..Q7 + Q28` |
| AQ-B1-11 | document_type_and_account_section_profile | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | новый management intent, требуется gate-проверка ranking стабильности | закрыть Phase B/C gate на `Q1..Q7 + Q28` |
| AQ-B1-12 | counterparty_population_and_roles | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | нужен финальный live-gate по Batch-1 acceptance pack | закрыть Phase C для `Q1..Q7 + Q28` и прогнать global `102 + 25` |
| AQ-B1-10 | period_coverage_profile | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | functional gates закрыты; остаточный риск в operational стабильности auto-nightly/MCP канала | держать comparator PASS (R6) и переходить к Batch-2 lifecycle |
| AQ-B1-11 | document_type_and_account_section_profile | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | functional gates закрыты; остаточный риск в operational стабильности auto-nightly/MCP канала | держать comparator PASS (R6) и переходить к Batch-2 lifecycle |
| AQ-B1-12 | counterparty_population_and_roles | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | functional gates закрыты; остаточный риск в operational стабильности auto-nightly/MCP канала | держать comparator PASS (R6) и переходить к Batch-2 lifecycle |
| AQ-B2-13 | counterparty_activity_lifecycle | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | lifecycle-сценарии требуют отдельного доменного live-pack (Batch-2) | собрать Batch-2 acceptance и закрыть route gate |
| AQ-B1-14 | contract_usage_overview | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | требуется финальный live-gate на all-time/period вариациях | закрыть Phase C для `Q1..Q7 + Q28` |
| AQ-B3-15 | customer_revenue_and_payments | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | value-ranking path реализован, но не закрыт Batch-3 live gate | прогнать целевой Batch-3 pack + global regression `102 + 25` |
| AQ-B3-16 | supplier_payouts_profile | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | value-ranking path реализован, но не закрыт Batch-3 live gate | прогнать целевой Batch-3 pack + global regression `102 + 25` |
| AQ-B3-17 | contract_usage_and_value | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | ranking по договорам реализован, требуется live-подтверждение на edge cases | закрыть Batch-3 domain acceptance и comparator к baseline |
| AQ-B1-14 | contract_usage_overview | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | functional gates закрыты; остаточный риск в operational стабильности auto-nightly/MCP канала | держать comparator PASS (R6) и переходить к Batch-2 lifecycle |
| AQ-B3-15 | customer_revenue_and_payments | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | functional gates закрыты; остаточный риск в operational стабильности auto-nightly/MCP канала | держать comparator PASS (R6) и переходить к Batch-2 lifecycle |
| AQ-B3-16 | supplier_payouts_profile | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | functional gates закрыты; остаточный риск в operational стабильности auto-nightly/MCP канала | держать comparator PASS (R6) и переходить к Batch-2 lifecycle |
| AQ-B3-17 | contract_usage_and_value | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | functional gates закрыты; остаточный риск в operational стабильности auto-nightly/MCP канала | держать comparator PASS (R6) и переходить к Batch-2 lifecycle |
| AQ-P1-10 | account_turnover_snapshot | STRUCTURALLY_VISIBLE | UNKNOWN | intent/recipe отсутствуют в runtime | планировать как отдельный домен Step-4 |
| AQ-P1-11 | list_documents_by_type | STRUCTURALLY_VISIBLE | UNKNOWN | intent/recipe отсутствуют в runtime | планировать как отдельный домен Step-4 |
@@ -56,8 +56,17 @@
- Для value-слоя зафиксирован стандарт ранжирования: `top-20` по умолчанию (если пользователь не указал иной лимит).
- Добавлена устойчивость к сленгу/опечаткам в intent routing (в т.ч. фразы вида `приходы самые высокие`, `кликентов самый высокий чек`).
- Targeted code gate зеленый:
- `npm --prefix llm_normalizer/backend test -- addressQueryRuntimeM23.test.ts` -> `186/186`.
- `npm --prefix llm_normalizer/backend test -- addressQueryRuntimeM23.test.ts` -> `200/200`.
- `npm --prefix llm_normalizer/backend run build` -> `PASS`.
- Domain live gates (2026-04-03):
- Batch-1 pack: `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B1_PhaseC_LiveGate_R3/` -> `strict 28/28`.
- Batch-3 pack: `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B3_Value_LiveGate_R2/` -> `strict 33/33`.
- Global nightly regression после фиксов:
- `docs/ADDRESS/runs/2026-04-03_Address_Nightly_Regression_Post_AnchorHardening_R6/nightly_summary.json` -> `overall_ok=true` (`stress_102: 102/102`, `followup_25: 25/25`, comparator PASS).
- Operational note (2026-04-08):
- авто-запуск nightly из Task Scheduler дал `overall_ok=false` из-за инфраструктурного `MCP fetch failed: fetch failed` в части вызовов, не как функциональный откат доменных intent-ов.
- ручной контрольный nightly (`2026-04-08 10:29`) показал точечный flake в `AQ-P0-07` семействе (`S019`: `materialized_but_not_anchor_matched`), при этом `followup_25` остался `25/25`.
- повторный контрольный nightly (`2026-04-08 10:51`) закрыт в `PASS`: `stress_102=102/102`, `followup_25=25/25`, comparator `PASS` (`docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json`).
- `COMPOUND_FACTUAL_QUERY` остается detection-only (без multi-intent execution).
- Финальные gate-артефакты стабильности:
- stress `102/102`: `docs/ADDRESS/runs/2026-04-02_Address_Slang_Live_Stress_2026-04-02_12-57-27/run_summary.json`
@@ -2,7 +2,7 @@
Дата среза: 2026-04-03
Контур: `question_mode=address_query`
Статус: `CODE_READY_PRE_LIVE_GATE`
Статус: `READY_FOR_PROD_PROMOTION`
## 1. Полное название этапа
@@ -35,16 +35,25 @@
## 4. Подтверждение качества (code gate)
- `npm --prefix llm_normalizer/backend test -- addressQueryRuntimeM23.test.ts` -> `186/186 PASS`
- `npm --prefix llm_normalizer/backend test -- addressQueryRuntimeM23.test.ts` -> `200/200 PASS`
- `npm --prefix llm_normalizer/backend run build` -> `PASS`
## 5. Что еще не закрыто
1. Batch-3 live gate (domain acceptance на живых данных 1С) не закрыт.
2. Global comparator к baseline после Batch-3 live-pack еще не зафиксирован.
1. Batch-3 live gate закрыт:
- `temp_batch3_value_top20_2026-04-02.json` -> `strict 33/33`
- run: `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B3_Value_LiveGate_R2/`
2. Global comparator к baseline закрыт как PASS:
- nightly run: `docs/ADDRESS/runs/2026-04-03_Address_Nightly_Regression_Post_AnchorHardening_R6/`
- статус: `overall_ok=true` (`stress_102=102/102`, `followup_25=25/25`, comparator PASS).
3. Operational caveat:
- авто-run от `2026-04-08` показал инфраструктурные ошибки `MCP fetch failed: fetch failed` в части запросов; это относится к стабильности runtime-окружения (scheduler/channel), а не к функциональному качеству Stage-3 intent-ов.
- ручной контрольный nightly recheck от `2026-04-08 10:51` закрыт в `PASS` (`stress_102=102/102`, `followup_25=25/25`, comparator PASS).
## 6. Следующий шаг
1. Прогнать целевой Batch-3 live acceptance pack.
2. Закрыть global non-regression (`102 + 25`) и comparator PASS.
3. После этого зафиксировать `READY_FOR_PROD_PROMOTION` для Batch-3 scope.
1. Держать comparator PASS в контрольных ручных nightly.
2. Убрать несанкционированные авто-прогоны (scheduler discipline).
3. Переходить к Batch-2 lifecycle реализации по master checker.
@@ -51,12 +51,22 @@ Batch-1 можно переводить в runtime только после за
- [x] Phase B.1 (Batch-1 prep): реализованы `period_coverage_profile`, `document_type_and_account_section_profile`, `counterparty_population_and_roles`, `contract_usage_overview` (unit/build green).
- [x] Phase B.2 (Batch-3 value prep): реализованы `customer_revenue_and_payments`, `supplier_payouts_profile`, `contract_usage_and_value`; стандарт ранжирования `top-20`; routing усилен для сленга/опечаток.
- [x] Targeted live-check Batch-1 next pack (`Q6/Q7/Q28`) выполнен: `strict factual 9/9`.
- [x] Targeted code gate по расширенному management/value слою: `addressQueryRuntimeM23.test.ts = 186/186`, `build=PASS`.
- [ ] Phase B закрыт.
- [ ] Phase C закрыт.
- [x] Targeted code gate по расширенному management/value слою: `addressQueryRuntimeM23.test.ts = 200/200`, `assistantAddressLlmPredecompose.test.ts = PASS`, `build=PASS`.
- [x] Phase C (Batch-1 domain pack) прогнан: `domain_general_batch1_acceptance_2026-04-02_phaseA.json` -> `strict 28/28`
run: `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B1_PhaseC_LiveGate_R3/`
- [x] Batch-3 value live-gate прогнан: `temp_batch3_value_top20_2026-04-02.json` -> `strict 33/33`
run: `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B3_Value_LiveGate_R2/`
- [x] Global non-regression + comparator к baseline: `PASS`
run: `docs/ADDRESS/runs/2026-04-03_Address_Nightly_Regression_Post_AnchorHardening_R6/nightly_summary.json`
детали: `overall_ok=true`, `stress_102=102/102`, `followup_25=25/25`, comparator PASS.
- [x] Контрольный nightly recheck (`2026-04-08 10:51`) закрыт в `PASS`
run: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json`
детали: `stress_102=102/102`, `followup_25=25/25`, comparator PASS.
- [x] Phase B закрыт.
- [x] Phase C закрыт.
## 4. Решение на сейчас
1. Начинать можно, но строго по фазам выше.
2. Прямое включение Batch-1 intents в production-path без Phase B/C — запрещено.
3. Точка входа в работу: `Phase C` (full Batch-1 acceptance + global non-regression) и отдельный Batch-3 live gate.
3. Точка входа в работу: контрольный nightly уже зафиксирован в `PASS`, следующий шаг — старт Batch-2 lifecycle (`Q8..Q13 + Q26 + Q27 + Q31 + Q32`) по тем же gate-правилам.
@@ -0,0 +1,59 @@
# Wave-1 Batch-1 + Batch-3 Live Gate Report
Дата: 2026-04-03
Контур: `question_mode=address_query`
Strict policy: `route`
## 1. Batch-1 (Q1..Q7 + Q28)
Question set:
- `docs/ADDRESS/question_sets/domain_general_batch1_acceptance_2026-04-02_phaseA.json`
Run:
- `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B1_PhaseC_LiveGate_R3/`
Result:
- `questions_total=28`
- `semantic_pass=28/28`
- `route_pass=28/28`
- `strict_pass(route)=28/28`
## 2. Batch-3 (Q14..Q25 + Q29 + Q30)
Question set:
- `docs/ADDRESS/question_sets/temp_batch3_value_top20_2026-04-02.json`
Run:
- `docs/ADDRESS/runs/2026-04-03_Address_Domain_General_B3_Value_LiveGate_R2/`
Result:
- `questions_total=33`
- `semantic_pass=33/33`
- `route_pass=33/33`
- `strict_pass(route)=33/33`
## 3. Global Regression Check (102 + 25)
Nightly bundle:
- `docs/ADDRESS/runs/2026-04-03_Address_Nightly_Regression_Post_AnchorHardening_R6/`
Result:
- `overall_ok=true`
- `stress_102`: `102/102` (`strict_pass_rate=1.0`)
- `followup_25`: `25/25` (`strict_pass_rate=1.0`)
- comparator: `PASS` по обоим pack.
Comparator detail:
- baseline comparator закрыт без деградации (`strict_pass_rate`/`route_pass_rate` сохранены).
## 4. Вывод
1. Domain live-gates для Batch-1 и Batch-3 закрыты.
2. Глобальный comparator закрыт в PASS, блокер прод-промоушена снят.
3. Следующий шаг: Batch-2 lifecycle pack по рельсовой схеме (design -> prep -> live gate -> global regression).
## 5. Operational note (2026-04-08)
- Автозапуск nightly от `2026-04-08 09:52:38` (Task Scheduler) дал `overall_ok=false` из-за инфраструктурного класса ошибок (`MCP fetch failed: fetch failed`) в части вызовов.
- Это operational-инцидент окружения, а не функциональный откат закрытых Batch-1/Batch-3 intent-ов.
- Ручной контрольный nightly recheck от `2026-04-08 10:51` закрыт в `PASS` (`stress_102=102/102`, `followup_25=25/25`, comparator PASS): `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json`.