{ "schema_version": "domain_truth_harness_spec_v1", "scenario_id": "agent_cashflow_profit_directness_20260523", "domain": "autonomy_business_answer_contract", "title": "AGENT | Cashflow vs profit directness pack", "description": "Targeted AGENT replay for cashflow-vs-profit directness: colloquial earnings questions must produce a compact money answer, while broad overview remains available only when explicitly requested.", "bindings": { }, "steps": [ { "step_id": "step_01_direct_money_earned_explicit_shape", "title": "Direct money earned question asks for compact cashflow shape", "question": "Сколько денег Альтернатива заработала за 2020 год? Ответь коротко: получили, заплатили, денежное нетто, это прибыль или нет.", "allowed_reply_types": [ "partial_coverage", "factual_with_explanation", "factual" ], "required_answer_patterns_all": [ "47[\\s.]*628[\\s.]*853", "43[\\s.]*763[\\s.]*351", "3[\\s.]*865[\\s.]*501" ], "forbidden_answer_patterns": [ "Учтено строк", "Первая найденная дата", "runtime_", "planner_", "query_movements", "primitive", "7\\s*136\\s*815|7136815", "Комитет государственных услуг" ], "criticality": "critical", "semantic_tags": [ "cashflow_vs_profit", "direct_answer", "colloquial_earnings" ] }, { "step_id": "step_02_colloquial_money_earned", "title": "Colloquial earned wording stays cashflow, not broad overview", "question": "скока денег альтернатива заработала за 20 год?", "allowed_reply_types": [ "partial_coverage", "factual_with_explanation", "factual" ], "required_answer_patterns_all": [ "47[\\s.]*628[\\s.]*853", "43[\\s.]*763[\\s.]*351", "3[\\s.]*865[\\s.]*501" ], "forbidden_answer_patterns": [ "Учтено строк", "Первая найденная дата", "runtime_", "planner_", "query_movements", "primitive", "7\\s*136\\s*815|7136815", "Комитет государственных услуг", "Что проверить дальше" ], "criticality": "critical", "semantic_tags": [ "cashflow_vs_profit", "slang_wording", "no_overview_substitution" ] }, { "step_id": "step_03_profit_followup_after_cashflow", "title": "Clean profit follow-up keeps distinction", "question": "а это чистая прибыль?", "allowed_reply_types": [ "partial_coverage", "factual_with_explanation", "factual" ], "required_answer_patterns_all": [ "7\\s*136\\s*815|7136815", "90|91|99" ], "forbidden_answer_patterns": [ "Учтено строк", "Первая найденная дата", "runtime_", "planner_", "query_movements", "primitive" ], "criticality": "critical", "semantic_tags": [ "profit_vs_cashflow", "followup_context" ] }, { "step_id": "step_04_money_plus_or_minus_followup", "title": "Money plus/minus follow-up returns cashflow net", "question": "а по деньгам тогда плюс или минус?", "allowed_reply_types": [ "partial_coverage", "factual_with_explanation", "factual" ], "required_answer_patterns_all": [ "\\+", "47[\\s.]*628[\\s.]*853", "43[\\s.]*763[\\s.]*351", "3[\\s.]*865[\\s.]*501" ], "forbidden_answer_patterns": [ "Учтено строк", "Первая найденная дата", "runtime_", "planner_", "query_movements", "primitive", "7\\s*136\\s*815|7136815" ], "criticality": "critical", "semantic_tags": [ "cashflow_polarity", "followup_context", "no_profit_substitution" ] }, { "step_id": "step_05_explicit_business_overview_allowed", "title": "Explicit adult overview may include business structure and next steps", "question": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток.", "allowed_reply_types": [ "partial_coverage", "factual_with_explanation", "factual" ], "required_answer_patterns_all": [ "47[\\s.]*628[\\s.]*853", "43[\\s.]*763[\\s.]*351", "3[\\s.]*865[\\s.]*501", "12[\\s.]*792[\\s.]*194", "12[\\s.]*093[\\s.]*465", "9[\\s.]*612[\\s.]*904" ], "forbidden_answer_patterns": [ "Учтено строк", "Первая найденная дата", "runtime_", "planner_", "query_movements", "primitive" ], "criticality": "high", "semantic_tags": [ "business_overview", "bank_flow_boundary", "next_steps" ] }, { "step_id": "step_06_return_to_short_money_after_overview", "title": "Short money follow-up after overview keeps 2020 context", "question": "а если коротко, сколько заработали деньгами без топов?", "allowed_reply_types": [ "partial_coverage", "factual_with_explanation", "factual" ], "required_answer_patterns_all": [ "2020", "47[\\s.]*628[\\s.]*853", "43[\\s.]*763[\\s.]*351", "3[\\s.]*865[\\s.]*501" ], "forbidden_answer_patterns": [ "Учтено строк", "Первая найденная дата", "runtime_", "planner_", "query_movements", "primitive", "285[\\s.]*819[\\s.]*547", "147[\\s.]*855[\\s.]*827", "Комитет государственных услуг", "Что проверить дальше" ], "criticality": "critical", "semantic_tags": [ "compact_after_overview", "temporal_carryover", "no_all_time_leak" ] }, { "step_id": "step_07_plain_money_in_out_net", "title": "Plain money request suppresses broad overview", "question": "не обзор, просто деньги: пришло, ушло, нетто за 2020", "allowed_reply_types": [ "partial_coverage", "factual_with_explanation", "factual" ], "required_answer_patterns_all": [ "47[\\s.]*628[\\s.]*853", "43[\\s.]*763[\\s.]*351", "3[\\s.]*865[\\s.]*501" ], "forbidden_answer_patterns": [ "Учтено строк", "Первая найденная дата", "runtime_", "planner_", "query_movements", "primitive", "Комитет государственных услуг", "12[\\s.]*093[\\s.]*465", "12[\\s.]*792[\\s.]*194", "Что проверить дальше" ], "criticality": "critical", "semantic_tags": [ "direct_money_only", "ranking_suppression" ] }, { "step_id": "step_08_direct_clean_profit_2020", "title": "Explicit clean profit goes to accounting result, not cashflow", "question": "какая чистая прибыль по Альтернативе за 2020?", "allowed_reply_types": [ "partial_coverage", "factual_with_explanation", "factual" ], "required_answer_patterns_all": [ "7\\s*136\\s*815|7136815", "90|91|99" ], "forbidden_answer_patterns": [ "Учтено строк", "Первая найденная дата", "runtime_", "planner_", "query_movements", "primitive", "получили\\s+47[\\s.]*628[\\s.]*853", "денежное\\s+нетто\\s+3[\\s.]*865[\\s.]*501" ], "criticality": "critical", "semantic_tags": [ "clean_profit", "profit_route", "no_cashflow_substitution" ] } ], "acceptance": { "min_score": 80, "max_unresolved_p0": 0, "require_all_critical_steps_pass": true } }