ЮИ - Автопрогоны: доработать иконки и hover-состояния saved sessions

This commit is contained in:
2026-04-18 14:12:11 +03:00
parent 31cb4ccbbb
commit f58ef9ad55
32 changed files with 2214 additions and 132 deletions
@@ -138,6 +138,8 @@ Completed in the current working pass:
- counterparty document root wording is now recovered through unicode-safe exact signals instead of depending on mojibake-sensitive legacy phrases;
- declined Russian account wording like `по счёту 60` now restores account scope inside polarity/runtime guards instead of collapsing into `other_numeric`;
- exact address intents can now stay in the address lane even if the semantic guard overflags deep investigation without an actual investigative user request;
- selected-object inventory follow-ups can now override a stale stock root intent when the semantic contract already marks `selected_object_scope_detected`, including exact user wording like `по выбранному объекту ... где взяли это`;
- explicit capability-meta wording for `дельта по договорам` now keeps the asked capability in the user-facing answer instead of collapsing into the generic `что ты умеешь` catalog reply.
- live replay `address_truth_harness_phase7_meta_domain_mix_live_20260417_post_arch_fix_rerun2` is accepted end-to-end with `14/14` steps green, including the previously broken `step_01_counterparty_documents` and `step_04_open_items_account_60`.
Still open after this pass:
@@ -211,6 +213,26 @@ Still open after the accepted phase10 replay:
- the user-facing VAT explanation block is now correct and grounded, but some long exact answers still feel heavier than the target human product tone;
- the next architecture slice should keep moving from repaired bridge authority into answer-shaping cleanup and broader saved-session replay coverage, not back into isolated wording tweaks.
Latest phase11 manual follow-up/meta-quality evidence after the current hardening loop:
- live replay `address_truth_harness_phase11_manual_followup_meta_quality_live_20260418_rerun6` is accepted end-to-end with `10/10` steps green;
- the previously broken `ты умеешь считать дельту по договорам?` branch is now protected by an explicit authority rule:
- raw capability-meta intent outranks canonical predecompose rewrites that look like address retrieval;
- stale VAT follow-up continuity no longer wins over a fresh capability/meta question in the same session;
- the previously broken short counterparty retarget `а по свк` is now clean on the real assistant path:
- the display label uses the most specific confirmed counterparty name instead of a generic group fallback or a stale carryover anchor;
- short uppercase Cyrillic acronyms like `СВК` no longer get stripped by the user-facing sanitizer as false mojibake;
- the replay acceptance rule now targets the real regression (`Контрагент: Группа Найдено ...`) instead of incorrectly rejecting valid names like `Контрагент: Группа СВК.`;
- this phase matters architecturally because it closes two different seam classes at once:
- `meta authority vs stale follow-up authority`;
- `resolved business label vs boundary sanitization noise`.
Still open after the accepted phase11 replay:
- the current phase11 path is now semantically clean, but broader manual/user session packs still need to be replayed before expansion can be called low-risk across new domains;
- answer shaping on some long exact list answers is still heavier than the target human product feel, even though the truth path and routing are now correct;
- the next architecture slice should move to wider saved-session acceptance coverage and humanized exact-answer presentation, not back to isolated prompt-level repairs.
## Ready Signal
The project can leave the current breakpoint when:
@@ -0,0 +1,268 @@
{
"schema_version": "domain_truth_harness_spec_v1",
"scenario_id": "address_truth_harness_phase11_manual_followup_meta_quality",
"domain": "address_phase11_manual_followup_meta_quality",
"title": "Phase 11 manual follow-up and meta-quality replay for orchestration recovery",
"description": "Focused AGENT replay rebuilt in clean UTF-8 from the manual saved session assistant-stage1-C_LvgkpSFm. The scenario validates the real remaining seams: human capability-meta answers, historical inventory root continuity, selected-object provenance, VAT bridge from purchase date after a verification interrupt, colloquial VAT wording, capability-meta versus stale VAT follow-up, and short counterparty retarget display integrity.",
"bindings": {},
"steps": [
{
"step_id": "step_01_capability_meta_human",
"title": "Capability meta answer stays human and business-first",
"question": "расскажи что можешь интересного",
"allowed_reply_types": [
"factual",
"factual_with_explanation"
],
"required_direct_answer_patterns_any": [
"(?i)могу|умею",
"(?i)ндс|документ|контрагент|долг|склад|остатк"
],
"forbidden_direct_answer_patterns": [
"(?i)read_only",
"(?i)mcp",
"(?i)snapshot",
"(?i)capability",
"(?i)assistant_state",
"(?i)open item"
],
"criticality": "critical",
"semantic_tags": [
"meta_capability",
"human_answer_quality"
]
},
{
"step_id": "step_02_inventory_historical_root",
"title": "Historical inventory root on March 2016",
"question": "что там на складе по остаткам на март 2016?",
"allowed_reply_types": [
"factual"
],
"expected_intents": [
"inventory_on_hand_as_of_date"
],
"expected_recipe": "address_inventory_on_hand_as_of_date_v1",
"required_filters": {
"as_of_date": "2016-03-31",
"period_from": "2016-03-01",
"period_to": "2016-03-31"
},
"required_direct_answer_patterns_any": [
"31\\.03\\.2016",
"(?i)на складе|остат"
],
"criticality": "critical",
"semantic_tags": [
"inventory_root",
"historical_date_anchor"
]
},
{
"step_id": "step_03_selected_item_purchase_provenance",
"title": "Selected workstation purchase provenance",
"question": "по выбранному объекту \"Рабочая станция универсального специалиста (индивидуальное изготовление)\": где взяли это?",
"allowed_reply_types": [
"factual",
"partial_coverage"
],
"expected_intents": [
"inventory_purchase_provenance_for_item"
],
"expected_recipe": "address_inventory_purchase_provenance_for_item_v1",
"required_filters": {
"item": "Рабочая станция универсального специалиста (индивидуальное изготовление)"
},
"required_direct_answer_patterns_any": [
"(?i)закуп|поступлен|постав",
"(?i)рабочая станция"
],
"criticality": "critical",
"semantic_tags": [
"selected_object",
"inventory_provenance"
]
},
{
"step_id": "step_04_meta_verify_interrupt",
"title": "Verification interrupt remains honest and does not leak technical garbage",
"question": "у тебя написано кто контрагент: рабочая станция - это ошибка?",
"allowed_reply_types": [
"partial_coverage",
"factual_with_explanation"
],
"required_direct_answer_patterns_any": [
"(?i)не удается|не могу|не получается|не подтвержден",
"(?i)контрагент|рабочая станция"
],
"forbidden_direct_answer_patterns": [
"(?i)address lane",
"(?i)partial_coverage",
"(?i)capability",
"(?i)mcp"
],
"criticality": "important",
"semantic_tags": [
"meta_verify",
"continuity_interrupt"
]
},
{
"step_id": "step_05_vat_on_purchase_date_after_interrupt",
"title": "VAT bridge still works after the verification interrupt",
"question": "ндс можешь прикинуть на дату покупки рабочей станции?",
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"expected_intents": [
"vat_liability_confirmed_for_tax_period"
],
"required_direct_answer_patterns_any": [
"(?i)ндс",
"(?i)2015|феврал|налогов"
],
"forbidden_direct_answer_patterns": [
"(?i)такой сценарий пока не поддерживается",
"(?i)mcp",
"(?i)address_mode",
"(?i)tool_gate_reason"
],
"criticality": "critical",
"semantic_tags": [
"bridge_inventory_to_vat",
"selected_object",
"continuity_after_interrupt"
]
},
{
"step_id": "step_06_colloquial_vat_march_2020",
"title": "Colloquial VAT wording survives predecompose",
"question": "а какой ндс мы должны сгрузить на март 2020?",
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"expected_intents": [
"vat_liability_confirmed_for_tax_period",
"vat_payable_confirmed_as_of_date"
],
"required_filters": {
"period_from": "2020-03-01",
"period_to": "2020-03-31"
},
"required_direct_answer_patterns_any": [
"(?i)ндс",
"(?i)2020|март"
],
"forbidden_direct_answer_patterns": [
"(?i)недостаточно информации",
"(?i)уточните, пожалуйста",
"(?i)mcp",
"(?i)address_mode"
],
"criticality": "critical",
"semantic_tags": [
"vat_colloquial_wording",
"predecompose_guard"
]
},
{
"step_id": "step_07_vat_february_2017_live",
"title": "Confirmed VAT route stays alive on February 2017",
"question": "прикинь какой ндс нам надо заплатить на февраль 2017",
"allowed_reply_types": [
"factual",
"factual_with_explanation"
],
"expected_intents": [
"vat_liability_confirmed_for_tax_period"
],
"required_direct_answer_patterns_any": [
"(?i)ндс",
"(?i)2017|феврал"
],
"criticality": "important",
"semantic_tags": [
"vat_liability_live",
"route_stability"
]
},
{
"step_id": "step_08_contract_delta_capability_meta",
"title": "Contract-delta capability question must not fall back into stale VAT analytics",
"question": "ты умеешь считать дельту по договорам?",
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"required_direct_answer_patterns_any": [
"(?i)могу|умею|не умею|пока не",
"(?i)договор"
],
"forbidden_direct_answer_patterns": [
"(?i)ндс к уплате",
"(?i)налоговый период",
"(?i)топ-5 заказчиков",
"(?i)чепурнов",
"(?i)группа свк"
],
"criticality": "critical",
"semantic_tags": [
"meta_capability",
"capability_over_followup"
]
},
{
"step_id": "step_09_counterparty_docs_anchor",
"title": "Counterparty document root for Чепурнов",
"question": "по Чепурнову покажи все доки",
"allowed_reply_types": [
"factual"
],
"expected_intents": [
"list_documents_by_counterparty"
],
"expected_recipe": "address_documents_by_counterparty_v1",
"required_direct_answer_patterns_any": [
"(?i)чепурнов",
"(?i)документ|поступление"
],
"criticality": "important",
"semantic_tags": [
"counterparty_root",
"documents"
]
},
{
"step_id": "step_10_short_counterparty_retarget_name",
"title": "Short follow-up keeps the real counterparty name instead of a generic group label",
"question": "а по свк",
"allowed_reply_types": [
"factual",
"factual_with_explanation"
],
"expected_intents": [
"list_documents_by_counterparty"
],
"required_direct_answer_patterns_any": [
"(?i)свк|группа свк",
"(?i)документ|поступление"
],
"forbidden_direct_answer_patterns": [
"(?i)контрагент: группа\\s+найдено",
"(?im)^контрагент: группа\\.?$",
"(?i)глубина live-выборки",
"(?i)mcp"
],
"criticality": "critical",
"semantic_tags": [
"counterparty_followup",
"display_name_integrity"
]
}
]
}