ARCH: стабилизировать continuity и защитить exact-ответы от discovery

This commit is contained in:
2026-04-21 18:43:05 +03:00
parent b542b65b81
commit 429bd3d8ec
8 changed files with 603 additions and 18 deletions
@@ -0,0 +1,138 @@
{
"schema_version": "domain_truth_harness_spec_v1",
"scenario_id": "address_truth_harness_phase20_continuity_stabilization",
"domain": "address_phase20_continuity_stabilization",
"title": "Phase 20 continuity stabilization replay",
"description": "Targeted AGENT replay for the continuity stabilization slice after assistant-stage1--I0x_DLqDb. The scenario validates that temporal tail words no longer turn into pseudo-counterparties, exact debt snapshots are not overwritten by discovery, and VAT/date follow-ups keep the previous period instead of drifting into unrelated carryover.",
"bindings": {},
"steps": [
{
"step_id": "step_01_top_client_all_time",
"title": "All-time top client question stays in ranking semantics and does not invent counterparty time",
"question": "кто у нас самый доходный клиент за все время?",
"required_answer_patterns_any": [
"(?i)клиент|контрагент",
"(?i)доходн|выручк|заработ"
],
"forbidden_answer_patterns": [
"(?i)не найден контрагент.*время",
"(?i)контрагент с названием\\s+\"?время\"?"
],
"criticality": "critical",
"semantic_tags": [
"value_flow_ranking",
"temporal_tail_not_entity"
]
},
{
"step_id": "step_02_top_year_all_time",
"title": "Top year question stays in yearly ranking semantics and does not invent pseudo-entity year",
"question": "какой у нас самый доходный год?",
"required_answer_patterns_any": [
"(?i)20\\d{2}|19\\d{2}",
"(?i)доходн|выручк|заработ"
],
"forbidden_answer_patterns": [
"(?i)не найден контрагент.*год",
"(?i)контрагент с названием\\s+\"?год\"?"
],
"criticality": "critical",
"semantic_tags": [
"value_flow_ranking",
"year_tail_not_entity"
]
},
{
"step_id": "step_03_receivables_as_of_may_2017",
"title": "Receivables snapshot for May 2017 answers directly instead of being overwritten by discovery",
"question": "кто нам должен денег на май 2017?",
"allowed_reply_types": [
"factual",
"factual_with_explanation"
],
"required_direct_answer_patterns_any": [
"(?i)долж",
"(?i)дебитор",
"(?i)задолж"
],
"forbidden_direct_answer_patterns": [
"(?i)partial_coverage",
"(?i)не удалось ответить",
"(?i)не найден контрагент"
],
"criticality": "critical",
"semantic_tags": [
"receivables_snapshot",
"exact_not_overwritten"
]
},
{
"step_id": "step_04_vat_for_same_period",
"title": "VAT payable follow-up keeps the carried May 2017 period",
"question": "а какой ндс мы должны примерно заплатить за этот период?",
"required_answer_patterns_all": [
"(?i)ндс",
"(?i)май|2017",
"(?i)заплат|к уплате|уплат"
],
"forbidden_answer_patterns": [
"(?i)текущ(ий|его) период",
"(?i)не найден контрагент"
],
"criticality": "critical",
"semantic_tags": [
"vat_followup",
"period_carryover"
]
},
{
"step_id": "step_05_payables_today",
"title": "Today payables snapshot answers directly and keeps debt semantics",
"question": "мы должны комуто денег на сегодня?",
"allowed_reply_types": [
"factual",
"factual_with_explanation"
],
"required_direct_answer_patterns_any": [
"(?i)должны",
"(?i)кредитор",
"(?i)задолж",
"(?i)долг к оплате|к оплате"
],
"forbidden_direct_answer_patterns": [
"(?i)partial_coverage",
"(?i)не удалось ответить",
"(?i)не найден контрагент"
],
"criticality": "critical",
"semantic_tags": [
"payables_snapshot",
"exact_not_overwritten"
]
},
{
"step_id": "step_06_receivables_pronoun_followup",
"title": "Short follow-up a nam resolves to mirrored receivables instead of fake counterparty time",
"question": "а нам?",
"allowed_reply_types": [
"factual",
"factual_with_explanation"
],
"required_direct_answer_patterns_any": [
"(?i)нам должны",
"(?i)дебитор",
"(?i)задолж"
],
"forbidden_direct_answer_patterns": [
"(?i)не найден контрагент.*время",
"(?i)контрагент с названием\\s+\"?время\"?",
"(?i)partial_coverage"
],
"criticality": "critical",
"semantic_tags": [
"pronoun_followup",
"garbage_anchor_forbidden"
]
}
]
}