NODEDC_1C/docs/orchestration/active_domain_contract.json

346 lines
15 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_phase108_settlement_pivot_debt_boundary_20260615",
"domain": "address_phase108_settlement_pivot_debt_boundary",
"runtime_domain": "settlement_document_payment_contract_pivots",
"title": "Settlement pivot and debt boundary replay",
"description": "Active slice for dogfooding the autonomous agent loop on a settlement-heavy path: counterparty document root, repeated payments/contracts/documents pivots, year switch carryover, debt due-date boundary, and off-domain recovery.",
"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": "phase108_after_phase107_mixed_planner_brain_dogfood",
"known_previous_anchors": [
"phase75_contracts_to_payments_year_switch",
"phase79_payments_to_contracts_to_documents_year_switch",
"phase81_payments_contracts_documents_back_to_payments_year_switch",
"phase94_debt_due_date_aging_reviewed_route",
"phase107_mixed_planner_brain_dogfood_20260615_p11_loop"
],
"why_now": "Phase107 hardened counterparty money-flow memory. Phase108 moves to settlement pivots: documents, payments, contracts, repeated pronoun reuse, year-switch carryover, and honest debt due-date boundaries."
},
"target_score": 88,
"bindings": {
"main_organization": "ООО Альтернатива Плюс",
"pivot_counterparty": "Жуковка 51",
"control_year": "2021",
"debt_boundary_year_end": "2020-12-31"
},
"issue_codes_under_test": [
"technical_garbage_in_answer",
"business_direct_answer_missing",
"business_next_step_missing",
"business_utility_gap"
],
"detectors_under_test": [
"runtime_tokens_in_user_answer",
"capability_ids_in_user_answer",
"first_line_not_direct_answer",
"top_level_scaffold_before_answer",
"limited_answer_without_next_action",
"business_answer_too_verbose_output"
],
"agent_audit_expectations": {
"semantic_answer_review_first": true,
"direct_answer_first": true,
"business_utility_required": true,
"selected_counterparty_memory_required": true,
"pivot_action_memory_required": true,
"year_switch_keeps_last_action_required": true,
"debt_due_date_boundary_must_be_honest": true,
"off_domain_living_chat_must_not_replay_business_context": true,
"technical_garbage_forbidden": true,
"do_not_accept_if": [
"a pronoun follow-up over 'по нему' loses Жуковка 51",
"the year switch asks again for a counterparty instead of reusing the active settlement object",
"a payment/contracts/documents pivot answers with a different object family without saying so",
"the debt due-date answer claims proven overdue debt without payment-term evidence",
"the final answer leaks route ids, capability ids, runtime enums, or debug payload",
"off-domain living chat is hijacked by stale 1C business context"
]
},
"scenarios": [
{
"scenario_id": "settlement_pivot_year_switch_and_debt_boundary",
"title": "Documents, payments, contracts, year switch, and debt boundary",
"description": "Validate repeated settlement pivots over the same counterparty and a debt due-date boundary canary in one session.",
"steps": [
{
"step_id": "step_01_documents_by_counterparty",
"title": "Open documents for the counterparty",
"node_role": "root",
"question": "Покажи документы по Жуковке 51.",
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"documents_by_counterparty",
"counterparty_root",
"pivot_seed",
"integrity_guard"
],
"required_answer_shape": "direct_answer_first",
"required_answer_patterns_all": [
"(?i)жуковк",
"(?i)документ|сч[её]т|акт|накладн|строк"
],
"forbidden_answer_patterns": [
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery",
"(?i)уточните.*контрагент|какого контрагента"
],
"criticality": "critical"
},
{
"step_id": "step_02_payments_by_pronoun_followup",
"title": "Pivot from documents to payments",
"question": "А по нему платежи?",
"depends_on": [
"step_01_documents_by_counterparty"
],
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"payments_followup",
"counterparty_pronoun_resolution",
"document_to_payments_pivot",
"integrity_guard"
],
"required_answer_shape": "direct_answer_first",
"required_answer_patterns_all": [
"(?i)жуковк|контрагент",
"(?i)плат[её]ж|операц|банк|поступлен|списан"
],
"forbidden_answer_patterns": [
"(?i)уточните.*контрагент|какого контрагента",
"(?i)документы по всем контрагентам",
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
],
"criticality": "critical"
},
{
"step_id": "step_03_contracts_after_payments_pivot",
"title": "Pivot from payments to contracts",
"question": "А по нему договоры?",
"depends_on": [
"step_02_payments_by_pronoun_followup"
],
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"contracts_followup",
"second_pivot",
"counterparty_pronoun_resolution",
"integrity_guard"
],
"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|capability_id|mcp_discovery"
],
"criticality": "critical"
},
{
"step_id": "step_04_documents_after_contracts_pivot",
"title": "Pivot back from contracts to documents",
"question": "А по нему документы?",
"depends_on": [
"step_03_contracts_after_payments_pivot"
],
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"documents_followup",
"third_pivot",
"counterparty_pronoun_resolution",
"integrity_guard"
],
"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|capability_id|mcp_discovery"
],
"criticality": "critical"
},
{
"step_id": "step_05_payments_after_documents_pivot",
"title": "Pivot back again to payments",
"question": "А по нему платежи?",
"depends_on": [
"step_04_documents_after_contracts_pivot"
],
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"payments_followup",
"fourth_pivot",
"counterparty_pronoun_resolution",
"integrity_guard"
],
"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|capability_id|mcp_discovery"
],
"criticality": "critical"
},
{
"step_id": "step_06_year_switch_after_payments",
"title": "Year switch keeps counterparty and payment action",
"question": "А за 2021?",
"depends_on": [
"step_05_payments_after_documents_pivot"
],
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"year_switch_after_fourth_pivot",
"payments_followup",
"period_followup_reuse",
"integrity_guard"
],
"required_answer_shape": "direct_answer_first",
"required_answer_patterns_all": [
"(?i)2021",
"(?i)жуковк|контрагент",
"(?i)плат[её]ж|операц|банк|поступлен|списан"
],
"forbidden_answer_patterns": [
"(?i)уточните.*контрагент|какого контрагента|за какой год",
"(?i)метадан|схем|объект[а-я]* 1с",
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
],
"criticality": "critical"
},
{
"step_id": "step_07_debt_due_date_boundary",
"title": "Debt due-date ask stays honest about overdue evidence",
"question": "По ООО Альтернатива Плюс на конец 2020 можно точно понять, какая дебиторка просрочена?",
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"business_overview",
"debt_due_date_boundary",
"checked_negative",
"honest_boundary"
],
"required_answer_shape": "direct_answer_first",
"required_answer_patterns_all": [
"(?i)дебитор|долг|открыт.*расчет|остат",
"(?i)2020|2020-12-31|конец 2020",
"(?i)срок.*оплат|due[- ]?date|просроч",
"(?i)не установлен|не подтвержд|не доказ|нет подтвержденной просроч",
"(?i)1С|проверенн|найденн|подтвержд"
],
"forbidden_answer_patterns": [
"(?i)точно подтверждаю.*просроч",
"(?i)просроч.*подтвержден.*без.*срок",
"(?i)route_candidate|query_movements|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
],
"criticality": "critical"
},
{
"step_id": "step_08_debt_boundary_short_followup",
"title": "Short follow-up keeps the debt due-date boundary",
"question": "То есть просрочку доказать нельзя, коротко почему?",
"depends_on": [
"step_07_debt_due_date_boundary"
],
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"context_carryover",
"debt_due_date_boundary",
"checked_negative",
"short_followup"
],
"required_answer_shape": "direct_answer_first",
"required_answer_patterns_all": [
"(?i)срок.*оплат|due[- ]?date|договор",
"(?i)не установлен|не хватает|не подтвержд|не доказ",
"(?i)просроч",
"(?i)2020|2020-12-31|конец 2020"
],
"forbidden_answer_patterns": [
"(?i)уточните организац|какую компанию",
"(?i)точно подтверждаю.*просроч",
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
],
"criticality": "critical"
},
{
"step_id": "step_09_off_domain_living_chat_not_hijacked",
"title": "Off-domain chat recovers after settlement and debt context",
"question": "Ок, а пингвины умеют летать?",
"allowed_reply_types": [
"factual",
"factual_with_explanation",
"partial_coverage"
],
"semantic_tags": [
"off_domain_living_chat",
"context_boundary",
"human_answer"
],
"required_answer_shape": "direct_answer_first",
"required_answer_patterns_any": [
"(?i)пингвин",
"(?i)не умеют летать|не летают|большинство.*не летает"
],
"forbidden_answer_patterns": [
"(?i)1С|контрагент|дебитор|договор|плат[её]ж|документ|Жуковк|Альтернатива",
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object|capability_id|mcp_discovery"
],
"criticality": "info"
}
]
}
]
}