NODEDC_1C/docs/orchestration/active_domain_contract.json

205 lines
9.3 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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"
}
]
}
]
}