АДРЕСНЫЙ РЕЖИМ -Step-4: Batch-2 lifecycle закрыт gate 36/36, nightly 102/102 + 25/25 PASS
This commit is contained in:
@@ -23,33 +23,30 @@
|
||||
- `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`
|
||||
- Batch-2 lifecycle официально переведен в `Phase A active`:
|
||||
- Batch-2 lifecycle закрыт до `Phase C` (domain + global gates PASS):
|
||||
- domain card: `domain_general_batch2_lifecycle_card_v1.md`
|
||||
- acceptance set: `docs/ADDRESS/question_sets/domain_general_batch2_lifecycle_acceptance_2026-04-08_phaseA.json`
|
||||
- probe report: `wave1_batch2_phaseA_probe_report_2026-04-08.md`
|
||||
- backlog: `step4_wave1_batch2_phaseA_backlog_v1.md`
|
||||
- Batch-2 Phase-B progress:
|
||||
- resolver hardening по `Q12/Q13/Q26/Q27/Q31/Q32` выполнен
|
||||
- targeted test gate: `addressQueryRuntimeM23.test.ts = 210/210`, `build=PASS`
|
||||
- live hotpass: `wave1_batch2_phaseB_resolver_hotpass_2026-04-08.md` (`route match 6/6`)
|
||||
- backlog closeout: `step4_wave1_batch2_phaseA_backlog_v1.md`
|
||||
- domain live-gate: `docs/ADDRESS/runs/2026-04-08_Address_Batch2_Lifecycle_FullGate_PhaseC_PostFix2/run_summary.json` (`strict 36/36`)
|
||||
- targeted code gate: `addressQueryRuntimeM23.test.ts + assistantAddressFollowupContext.test.ts = 223/223`, `build=PASS`
|
||||
- global non-regression: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/nightly_summary.json` (`stress 102/102`, `followup 25/25`, comparator PASS)
|
||||
- Финальный 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-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json`
|
||||
`docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/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.
|
||||
|
||||
## Что реально реализовано в коде (срез 2026-04-03)
|
||||
## Что реально реализовано в коде (срез 2026-04-08)
|
||||
|
||||
Поддерживаемые intents в runtime:
|
||||
|
||||
- `period_coverage_profile` (Wave-1 B1, gate-closed)
|
||||
- `document_type_and_account_section_profile` (Wave-1 B1, pre-gate)
|
||||
- `counterparty_population_and_roles` (Wave-1 B1, pre-gate)
|
||||
- `counterparty_activity_lifecycle` (Wave-1/B2, Phase-A active)
|
||||
- `counterparty_activity_lifecycle` (Wave-1 B2, gate-closed)
|
||||
- `contract_usage_overview` (Wave-1 B1, gate-closed)
|
||||
- `customer_revenue_and_payments` (Wave-1 B3 value, gate-closed)
|
||||
- `supplier_payouts_profile` (Wave-1 B3 value, gate-closed)
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
Дата: `2026-04-08`
|
||||
Домен: `general_batch2_lifecycle`
|
||||
Статус: `active` (Phase A стартован)
|
||||
Статус: `closed` (Phase A/B/C закрыты; domain + global gate PASS)
|
||||
Владелец: `Address Runtime Team`
|
||||
|
||||
## 1. Scope
|
||||
|
||||
Кратко: домен закрывает lifecycle-вопросы общего домена (`Q8..Q13 + Q26 + Q27 + Q31 + Q32`) и готовит единый рельсовый контракт перед Phase B.
|
||||
Кратко: домен закрывает lifecycle-вопросы общего домена (`Q8..Q13 + Q26 + Q27 + Q31 + Q32`) и зафиксирован как rail-ready после Phase C gate.
|
||||
|
||||
In-scope intents:
|
||||
|
||||
@@ -117,9 +117,9 @@ Global gate:
|
||||
|
||||
## 8. Rollout Plan
|
||||
|
||||
1. `phase_a` — contract freeze + acceptance set + probe baseline.
|
||||
2. `phase_b` — resolver/compose hardening по lifecycle gap-ам.
|
||||
3. `phase_c` — domain live gate + global comparator PASS.
|
||||
1. `phase_a` — contract freeze + acceptance set + probe baseline (`completed`, 2026-04-08).
|
||||
2. `phase_b` — resolver/compose hardening по lifecycle gap-ам (`completed`, 2026-04-08).
|
||||
3. `phase_c` — domain live gate + global comparator PASS (`completed`, 2026-04-08).
|
||||
|
||||
## 9. Artifacts
|
||||
|
||||
@@ -131,8 +131,14 @@ Global gate:
|
||||
4. `step4_wave1_batch2_phaseA_backlog_v1.md`
|
||||
5. `runs/<run_id>/run_summary.json`
|
||||
6. `runs/<run_id>/full_live_results.json`
|
||||
7. `wave1_batch2_phaseB_resolver_hotpass_2026-04-08.md`
|
||||
8. `runs/2026-04-08_Address_Batch2_Lifecycle_FullGate_PhaseC_PostFix2/run_summary.json`
|
||||
9. `runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/nightly_summary.json`
|
||||
|
||||
## 10. Change Log
|
||||
|
||||
- `2026-04-08` — создана карточка домена Batch-2 lifecycle и зафиксирован contract scope.
|
||||
- `2026-04-08` — добавлен Phase-A acceptance набор `Q8..Q13 + Q26 + Q27 + Q31 + Q32`.
|
||||
- `2026-04-08` — закрыт Phase-B hardening (resolver/decompose/follow-up контур по lifecycle noisy/follow-up формулировкам).
|
||||
- `2026-04-08` — закрыт Phase-C domain gate: `strict 36/36` (`2026-04-08_Address_Batch2_Lifecycle_FullGate_PhaseC_PostFix2`).
|
||||
- `2026-04-08` — подтвержден global non-regression PASS: `stress 102/102`, `followup 25/25`, comparator `PASS` (`2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24`).
|
||||
|
||||
@@ -13,14 +13,14 @@ flowchart LR
|
||||
D["Global Nightly Comparator (R6)<br/>102/102 + 25/25 PASS"]
|
||||
E["Auto-nightly Incident<br/>2026-04-08 09:52<br/>MCP fetch failed"]
|
||||
F["Targeted Fix<br/>S019 predecompose anchor drift"]
|
||||
G["Manual Control Nightly Recheck<br/>2026-04-08 10:51<br/>102/102 + 25/25 PASS"]
|
||||
H["CURRENT STATE<br/>BATCH2_PHASE_B_ACTIVE"]
|
||||
I["NEXT STEP<br/>Batch-2 Phase B closeout<br/>Follow-up carryover + compose hardening"]
|
||||
K["Batch-2 Gate<br/>Phase C -> Global Regression"]
|
||||
G["Manual Control Nightly Recheck<br/>2026-04-08 13:19<br/>102/102 + 25/25 PASS"]
|
||||
H["CURRENT STATE<br/>BATCH2_PHASE_C_CLOSED"]
|
||||
I["NEXT STEP<br/>Batch-4/5 domain scoping<br/>Debt/Aging/Risk"]
|
||||
K["Batch-2 Gate Closed<br/>36/36 + Global PASS"]
|
||||
J["Operational Rail<br/>Scheduler: Disabled<br/>Manual nightly only"]
|
||||
|
||||
A --> B --> C --> D --> H --> I --> K
|
||||
D --> E --> F --> G --> H
|
||||
A --> B --> C --> D --> K --> H --> I
|
||||
D --> E --> F --> G --> K
|
||||
E --> J
|
||||
H --> J
|
||||
```
|
||||
@@ -31,8 +31,10 @@ flowchart LR
|
||||
`docs/ADDRESS/runs/2026-04-03_Address_Nightly_Regression_Post_AnchorHardening_R6/nightly_summary.json`
|
||||
- Incident run (auto-nightly):
|
||||
`docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_09-52-39/nightly_summary.json`
|
||||
- Control recheck PASS (manual):
|
||||
`docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json`
|
||||
- Control recheck PASS (manual, latest):
|
||||
`docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/nightly_summary.json`
|
||||
- Batch-2 domain gate PASS:
|
||||
`docs/ADDRESS/runs/2026-04-08_Address_Batch2_Lifecycle_FullGate_PhaseC_PostFix2/run_summary.json`
|
||||
- Master checker (entry to Batch-2):
|
||||
`docs/ADDRESS/address_query/step4_wave1_batch1_master_checker_v1.md`
|
||||
- Batch-2 Phase-A artifacts:
|
||||
@@ -47,5 +49,5 @@ flowchart LR
|
||||
|
||||
- Функциональные гейты закрыты.
|
||||
- Точечный flake `S019` закрыт.
|
||||
- Batch-2 переведен в `Phase B active`; resolver drift по `Q12/Q13/Q26/Q27/Q31/Q32` закрыт (`hotpass 6/6`).
|
||||
- Следующий практический шаг: Phase-B closeout (follow-up carryover + compose), затем Batch-2 domain gate.
|
||||
- Batch-2 lifecycle закрыт до `Phase C`: domain gate `36/36`, global regression `102/102 + 25/25`, comparator PASS.
|
||||
- Следующий практический шаг: стартовать scoping Batch-4/Batch-5 (`debt/aging/risk`) как отдельную доменную волну.
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
| 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 | resolver drift hotfix закрыт, но Batch-2 domain gate еще не прогнан | закрыть Phase-B (follow-up/compose) и выполнить Batch-2 domain gate |
|
||||
| AQ-B2-13 | counterparty_activity_lifecycle | STRUCTURALLY_VISIBLE | LIVE_QUERYABLE_WITH_LIMITS | functional gates закрыты; остаточный риск в operational стабильности auto-nightly/MCP канала | держать comparator PASS и использовать Batch-2 как reference-domain для следующей волны |
|
||||
| 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 |
|
||||
@@ -38,7 +38,7 @@
|
||||
| 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 |
|
||||
|
||||
## Sync Notes (2026-04-03)
|
||||
## Sync Notes (2026-04-08)
|
||||
|
||||
- В runtime реализованы by-contract intents:
|
||||
- `list_documents_by_contract`
|
||||
@@ -56,7 +56,7 @@
|
||||
- Для value-слоя зафиксирован стандарт ранжирования: `top-20` по умолчанию (если пользователь не указал иной лимит).
|
||||
- Добавлена устойчивость к сленгу/опечаткам в intent routing (в т.ч. фразы вида `приходы самые высокие`, `кликентов самый высокий чек`).
|
||||
- Targeted code gate зеленый:
|
||||
- `npm --prefix llm_normalizer/backend test -- addressQueryRuntimeM23.test.ts` -> `200/200`.
|
||||
- `npm --prefix llm_normalizer/backend run test -- addressQueryRuntimeM23.test.ts assistantAddressFollowupContext.test.ts --testTimeout 30000` -> `223/223`.
|
||||
- `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`.
|
||||
@@ -74,7 +74,13 @@
|
||||
- Batch-2 lifecycle Phase-B resolver hotpass (2026-04-08):
|
||||
- report: `docs/ADDRESS/address_query/wave1_batch2_phaseB_resolver_hotpass_2026-04-08.md`
|
||||
- фактический результат: `route match 6/6` на `Q12/Q13/Q26/Q27/Q31/Q32`
|
||||
- кодовый gate: `addressQueryRuntimeM23.test.ts = 210/210`, `build=PASS`.
|
||||
- кодовый gate: `addressQueryRuntimeM23.test.ts = 220/220`, `assistantAddressFollowupContext.test.ts = 3/3`, `build=PASS`.
|
||||
- Batch-2 lifecycle Phase-C domain gate (2026-04-08):
|
||||
- run: `docs/ADDRESS/runs/2026-04-08_Address_Batch2_Lifecycle_FullGate_PhaseC_PostFix2/`
|
||||
- фактический результат: `strict 36/36`, `false_factual_rate=0`, `execution_error_rate=0`.
|
||||
- Global non-regression после Phase-C (2026-04-08):
|
||||
- run: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/nightly_summary.json`
|
||||
- фактический результат: `stress_102=102/102`, `followup_25=25/25`, comparator `PASS`.
|
||||
- `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`
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Step-4 Wave-1 Batch-2 — Phase A/B Backlog V1
|
||||
|
||||
Дата: 2026-04-08
|
||||
Статус: `active`
|
||||
Статус: `closed` (`Phase C done`, domain/global gates PASS)
|
||||
Scope: `Q8..Q13 + Q26 + Q27 + Q31 + Q32`
|
||||
|
||||
## 1. Phase A (Design/Contract) — статус
|
||||
@@ -29,7 +29,7 @@ Scope: `Q8..Q13 + Q26 + Q27 + Q31 + Q32`
|
||||
Добавить contract lifecycle routing:
|
||||
- stale contract phrasing -> `contract_usage_overview`
|
||||
- multi-contract/active contract phrasing -> `contract_usage_and_value`
|
||||
- [ ] `llm_normalizer/backend/src/services/address_runtime/decomposeStage.ts`
|
||||
- [x] `llm_normalizer/backend/src/services/address_runtime/decomposeStage.ts`
|
||||
Усилить follow-up carryover для Batch-2 chain:
|
||||
`а кто новые`, `а кто потом исчез`, `а теперь за 2021`, `и какие договоры активны`.
|
||||
|
||||
@@ -53,7 +53,7 @@ Scope: `Q8..Q13 + Q26 + Q27 + Q31 + Q32`
|
||||
|
||||
- [x] `llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts`
|
||||
Добавить regression-кейсы под `Q12/Q13/Q26/Q27/Q31/Q32`.
|
||||
- [ ] `llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts`
|
||||
- [x] `llm_normalizer/backend/tests/assistantAddressFollowupContext.test.ts`
|
||||
Добавить lifecycle follow-up chains для переключения года и сегментов.
|
||||
- [x] Кодовый gate:
|
||||
- `npm --prefix llm_normalizer/backend run test -- addressQueryRuntimeM23.test.ts --testTimeout 20000`
|
||||
@@ -64,20 +64,25 @@ Scope: `Q8..Q13 + Q26 + Q27 + Q31 + Q32`
|
||||
|
||||
## 3. Phase C (Gate) — критерии закрытия
|
||||
|
||||
- [ ] Domain run-pack по
|
||||
- [x] Domain run-pack по
|
||||
`docs/ADDRESS/question_sets/domain_general_batch2_lifecycle_acceptance_2026-04-08_phaseA.json`:
|
||||
- `strict_pass(route)=100%`
|
||||
- `false_factual_rate=0`
|
||||
- `execution_error_rate=0`
|
||||
- [ ] Global non-regression:
|
||||
- [x] Global non-regression:
|
||||
- `address_slang_stress_full_2026-04-02.json`
|
||||
- `address_followup_context_chains_2026-04-02.json`
|
||||
обе метрики не ниже baseline (`102/102`, `25/25`).
|
||||
- [ ] Comparator PASS against latest green nightly:
|
||||
`docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_10-51-20/nightly_summary.json`
|
||||
- [x] Comparator PASS against latest green nightly:
|
||||
`docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/nightly_summary.json`
|
||||
|
||||
## 4. Текущий приоритет (следующий кодовый шаг)
|
||||
|
||||
1. Закрыть follow-up carryover для lifecycle/contract lifecycle chain.
|
||||
2. Дожать compose-представления для `stale`/`one-time`/`longest-running`/`regular-vs-episodic`.
|
||||
3. Прогнать полный Batch-2 domain gate pack + global comparator.
|
||||
1. Перевести Batch-2 из wave backlog в master checker как `closed`.
|
||||
2. Подготовить Batch-4/Batch-5 scope (debt/aging/risk) отдельной доменной карточкой.
|
||||
3. Держать nightly regression в green-контуре как release guardrail.
|
||||
|
||||
## 5. Фактические артефакты закрытия
|
||||
|
||||
1. Domain gate PASS: `docs/ADDRESS/runs/2026-04-08_Address_Batch2_Lifecycle_FullGate_PhaseC_PostFix2/run_summary.json` (`strict 36/36`).
|
||||
2. Global non-regression PASS: `docs/ADDRESS/runs/2026-04-08_Address_Nightly_Regression_2026-04-08_13-19-24/nightly_summary.json` (`stress 102/102`, `followup 25/25`, comparator PASS).
|
||||
|
||||
Reference in New Issue
Block a user