205 lines
9.3 KiB
JSON
205 lines
9.3 KiB
JSON
{
|
||
"schema_version": "domain_scenario_pack_v1",
|
||
"pack_id": "active_phase106_profit_cashflow_margin_next_step_20260615",
|
||
"domain": "address_phase106_profit_cashflow_margin_next_step",
|
||
"runtime_domain": "business_overview_profit_cashflow_margin_boundary",
|
||
"title": "Profit, cashflow, margin and next-check boundary",
|
||
"description": "Active slice for the autonomous agent loop: colloquial earnings wording must be answered as checked cashflow/accounting evidence with honest profit boundaries, then pivot safely into товарная маржа and concrete next checks.",
|
||
"status": "active",
|
||
"source_of_truth_policy": {
|
||
"purpose": "single mutable domain source for the current orchestration target",
|
||
"switching_rule": "when the project switches to another domain, replace this file instead of rewriting the stable agent canon",
|
||
"stable_layers": [
|
||
"AGENTS.md",
|
||
".codex/skills/domain-case-loop",
|
||
".codex/agents/domain_analyst.toml",
|
||
".codex/agents/orchestrator.toml"
|
||
],
|
||
"mutable_layer": [
|
||
"docs/orchestration/active_domain_contract.json"
|
||
]
|
||
},
|
||
"analysis_context": {
|
||
"as_of_date": "2026-06-15",
|
||
"source": "phase106_after_phase104_role_tail_autorun_persistence",
|
||
"known_previous_anchors": [
|
||
"hm_business_overview_cashflow_limits_20260602_p4",
|
||
"hm_business_profile_evaluation_limits_p3",
|
||
"agent_margin_profitability_reliability_20260615_p12_detector_scope",
|
||
"phase104_generic_role_tail_anchor_hygiene_20260615_p04_loop"
|
||
]
|
||
},
|
||
"target_score": 88,
|
||
"bindings": {
|
||
"main_organization": "ООО Альтернатива Плюс",
|
||
"control_year": "2020"
|
||
},
|
||
"issue_codes_under_test": [
|
||
"cashflow_misreported_as_clean_profit",
|
||
"margin_domain_leak_accounting_route",
|
||
"business_next_step_missing",
|
||
"technical_garbage_in_answer"
|
||
],
|
||
"detectors_under_test": [
|
||
"runtime_tokens_in_user_answer",
|
||
"capability_ids_in_user_answer",
|
||
"limited_answer_without_next_action",
|
||
"margin_domain_leak_accounting_route",
|
||
"margin_required_fields_missing",
|
||
"margin_next_action_missing"
|
||
],
|
||
"agent_audit_expectations": {
|
||
"semantic_answer_review_first": true,
|
||
"direct_answer_first": true,
|
||
"business_utility_required": true,
|
||
"cashflow_not_clean_profit": true,
|
||
"margin_domain_purity_required": true,
|
||
"next_action_required_when_limited": true,
|
||
"technical_garbage_forbidden": true,
|
||
"do_not_accept_if": [
|
||
"colloquial earnings wording is answered as confirmed clean profit without evidence",
|
||
"cashflow/net operating flow is silently presented as accounting profit or margin",
|
||
"margin follow-up leaks into bank payments, fixed assets, amortization, or generic accounting route",
|
||
"next-check answer is generic advice without concrete 1C evidence contours",
|
||
"final answer leaks route ids, capability ids, runtime enums, or debug payload"
|
||
]
|
||
},
|
||
"scenarios": [
|
||
{
|
||
"scenario_id": "profit_cashflow_margin_next_step_boundary",
|
||
"title": "Colloquial earnings, clean-profit boundary, margin pivot, and next checks",
|
||
"description": "Validate that the assistant handles colloquial earnings wording, refuses to overclaim clean profit, pivots into товарная маржа without wrong-domain leakage, and proposes concrete next 1C checks.",
|
||
"steps": [
|
||
{
|
||
"step_id": "step_01_choose_company_scope",
|
||
"title": "Bare organization choice binds active company scope",
|
||
"node_role": "root",
|
||
"question": "{{bindings.main_organization}}",
|
||
"allowed_reply_types": [
|
||
"factual_with_explanation",
|
||
"partial_coverage"
|
||
],
|
||
"semantic_tags": [
|
||
"bare_org_scope",
|
||
"company_scope"
|
||
],
|
||
"required_answer_shape": "direct_answer_first",
|
||
"required_answer_patterns_all": [
|
||
"(?i)фиксир|рабоч.*организац|контур",
|
||
"(?i)альтернатива"
|
||
],
|
||
"forbidden_answer_patterns": [
|
||
"(?i)не могу определить",
|
||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||
]
|
||
},
|
||
{
|
||
"step_id": "step_02_colloquial_earned_money_2020",
|
||
"title": "Colloquial earned-money wording stays bounded",
|
||
"question": "скока денег альтернатива заработала за 20 год?",
|
||
"depends_on": [
|
||
"step_01_choose_company_scope"
|
||
],
|
||
"semantic_tags": [
|
||
"business_overview",
|
||
"colloquial_cashflow",
|
||
"cashflow_not_profit"
|
||
],
|
||
"required_answer_shape": "direct_answer_first",
|
||
"required_answer_patterns_all": [
|
||
"(?i)2020|20\\s*год",
|
||
"(?i)поступ|входящ|денег|заработ",
|
||
"(?i)не.*чист.*прибыл|не.*прибыл|прибыл.*не подтвержд|это.*не.*прибыл"
|
||
],
|
||
"forbidden_answer_patterns": [
|
||
"(?i)^\\s*Коротко:",
|
||
"(?i)это\\s+чистая\\s+прибыль",
|
||
"(?i)точно.*прибыл",
|
||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
|
||
],
|
||
"criticality": "critical"
|
||
},
|
||
{
|
||
"step_id": "step_03_clean_profit_followup_boundary",
|
||
"title": "Clean-profit follow-up must not convert cashflow into profit",
|
||
"question": "а это чистая прибыль?",
|
||
"depends_on": [
|
||
"step_02_colloquial_earned_money_2020"
|
||
],
|
||
"semantic_tags": [
|
||
"profitability_boundary",
|
||
"cashflow_not_profit",
|
||
"followup_boundary"
|
||
],
|
||
"required_answer_shape": "direct_answer_first",
|
||
"required_answer_patterns_all": [
|
||
"(?i)не.*чист.*прибыл|не.*является.*прибыл|не подтвержд.*прибыл|это.*не.*прибыл",
|
||
"(?i)денежн|поступ|нетто|оборот|cash|себестоим|расход|закрыва"
|
||
],
|
||
"forbidden_answer_patterns": [
|
||
"(?i)^\\s*Коротко:",
|
||
"(?i)^\\s*да[,\\s]+это.*прибыл",
|
||
"(?i)точно.*чист.*прибыл",
|
||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
|
||
],
|
||
"criticality": "critical"
|
||
},
|
||
{
|
||
"step_id": "step_04_margin_pivot_keeps_inventory_domain",
|
||
"title": "Margin pivot uses inventory margin contour, not payments or fixed assets",
|
||
"question": "тогда какую прибыль или маржу можно проверить по товарам за 2020?",
|
||
"depends_on": [
|
||
"step_03_clean_profit_followup_boundary"
|
||
],
|
||
"expected_intents": [
|
||
"inventory_margin_ranking_for_nomenclature"
|
||
],
|
||
"expected_capability": "inventory_inventory_margin_ranking_for_nomenclature",
|
||
"expected_recipe": "address_inventory_margin_ranking_for_nomenclature_v1",
|
||
"semantic_tags": [
|
||
"margin_profitability",
|
||
"inventory",
|
||
"wrong_domain_trap",
|
||
"cashflow_to_margin_pivot"
|
||
],
|
||
"required_answer_shape": "direct_answer_first",
|
||
"required_answer_patterns_any": [
|
||
"(?i)марж|валов|выруч|себестоим|номенклатур|товар|не могу подтвердить|не хватает"
|
||
],
|
||
"forbidden_answer_patterns": [
|
||
"(?i)амортизац|основн(ые|ых)? средств|объект ОС|банк|оплат[аы]|payment_document|settlement",
|
||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
|
||
],
|
||
"criticality": "critical"
|
||
},
|
||
{
|
||
"step_id": "step_05_next_checks_are_concrete_1c_contours",
|
||
"title": "Next checks must be concrete 1C evidence contours",
|
||
"question": "что дальше проверить, чтобы понять здоровье бизнеса, без гаданий?",
|
||
"depends_on": [
|
||
"step_04_margin_pivot_keeps_inventory_domain"
|
||
],
|
||
"semantic_tags": [
|
||
"business_next_step",
|
||
"evidence_plan",
|
||
"no_generic_advice"
|
||
],
|
||
"required_answer_shape": "direct_answer_first",
|
||
"required_answer_patterns_all": [
|
||
"(?i)прибыл|марж|себестоим|финрезульт",
|
||
"(?i)ндс|налог",
|
||
"(?i)дебитор|кредитор|долг|расчет",
|
||
"(?i)склад|остат|оборач|товар"
|
||
],
|
||
"forbidden_answer_patterns": [
|
||
"(?i)^\\s*Коротко:",
|
||
"(?i)просто.*посмотр|общ.*рекоменд|улучшить маркетинг|нанять|стратег",
|
||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
|
||
],
|
||
"criticality": "important"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|