ОРРКЕСТРАЦИЯ - Усилить domain-loop business-first каноном для analyst и orchestrator

This commit is contained in:
2026-04-14 17:33:57 +03:00
parent f6a2c8e0a3
commit cb0eb450d7
19 changed files with 813 additions and 66 deletions
+24 -2
View File
@@ -780,6 +780,12 @@
"required_paraphrase_families": ["canonical", "ui_selected_object"],
"required_carryover_invariants": ["selected_object", "date_scope", "answer_shape"]
},
"bindings": {
"target_date_historical": "2020-03-31",
"focus_item_historical": "Шкаф картотечный 1000*400*2100",
"observed_supplier_candidate": "Гамма-мебель, ООО",
"observed_customer_candidate": "Департамент капитального ремонта города Москвы"
},
"steps": [
{
"step_id": "step_01_account_41_historical",
@@ -790,7 +796,7 @@
"title": "Historical account 41 anchor",
"question": "Какие товары числятся на 41 счете на дату {{bindings.target_date_historical}}",
"analysis_context": {
"as_of_date": "2019-03-31",
"as_of_date": "2020-03-31",
"source": "binding_target_date_historical"
},
"expected_capability": "confirmed_inventory_on_hand_as_of_date",
@@ -823,13 +829,29 @@
"node_role": "supporting_child",
"paraphrase_family": "canonical",
"title": "Supplier to buyer overlap",
"question": "Какие товары были куплены у поставщика {{bindings.observed_supplier_candidate}} и позже проданы покупателю {{bindings.observed_customer_candidate}}",
"question": "Есть ли документально подтвержденная цепочка: поставщик {{bindings.observed_supplier_candidate}} -> товар {{bindings.focus_item_historical}} -> покупатель {{bindings.observed_customer_candidate}}",
"depends_on": ["step_01_account_41_historical", "step_02_selected_item_buyer"]
}
]
}
]
},
"agent_audit_expectations": {
"direct_answer_first": true,
"business_utility_required": true,
"state_continuity_required": true,
"selected_object_memory_required": true,
"field_truth_checks": [
"supplier_vs_organization",
"buyer_vs_organization"
],
"reusable_answer_object_expectations": [
"current_item",
"current_as_of_date",
"current_provenance_trace",
"current_sale_trace"
]
},
"acceptance_contract": {
"acceptance_unit": "scenario_tree",
"do_not_accept_if": [
@@ -5,13 +5,26 @@
"additionalProperties": false,
"required": [
"summary",
"user_intent_summary",
"expected_direct_answer",
"actual_direct_answer",
"quality_score",
"direct_answer_ok",
"business_usefulness_ok",
"business_utility_score",
"direct_answer_priority_score",
"state_continuity_score",
"answer_shape_score",
"evidence_clarity_score",
"loop_decision",
"requires_user_decision",
"user_decision_type",
"user_decision_prompt",
"unresolved_p0_count",
"regression_detected",
"root_cause_layers",
"broken_edge_ids",
"violated_invariants",
"priority_targets",
"acceptance_criteria",
"notes"
@@ -20,11 +33,51 @@
"summary": {
"type": "string"
},
"user_intent_summary": {
"type": "string"
},
"expected_direct_answer": {
"type": "string"
},
"actual_direct_answer": {
"type": ["string", "null"]
},
"quality_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"direct_answer_ok": {
"type": "boolean"
},
"business_usefulness_ok": {
"type": "boolean"
},
"business_utility_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"direct_answer_priority_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"state_continuity_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"answer_shape_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"evidence_clarity_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"loop_decision": {
"type": "string",
"enum": ["accepted", "continue", "partial", "blocked", "needs_exact_capability"]
@@ -35,7 +88,17 @@
},
"user_decision_type": {
"type": "string",
"enum": ["none", "architecture_fork", "important_business_question", "scope_tradeoff", "data_truth_gap", "missing_required_observation", "risky_workaround", "risky_complexity", "other"],
"enum": [
"none",
"architecture_fork",
"important_business_question",
"scope_tradeoff",
"data_truth_gap",
"missing_required_observation",
"risky_workaround",
"risky_complexity",
"other"
],
"description": "Explain why the loop needs user input. Use none when requires_user_decision is false."
},
"user_decision_prompt": {
@@ -49,6 +112,37 @@
"regression_detected": {
"type": "boolean"
},
"root_cause_layers": {
"type": "array",
"items": {
"type": "string",
"enum": [
"semantic_understanding_gap",
"runtime_capability_gap",
"edge_carryover_gap",
"object_memory_gap",
"field_mapping_gap",
"answer_shape_mismatch",
"ordering_semantics_mismatch",
"business_utility_gap",
"loop_coverage_gap",
"domain_anchor_gap",
"other"
]
}
},
"broken_edge_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"violated_invariants": {
"type": "array",
"items": {
"type": "string"
}
},
"priority_targets": {
"type": "array",
"items": {
@@ -68,7 +162,23 @@
},
"problem_type": {
"type": "string",
"enum": ["route_gap", "capability_gap", "evidence_gap", "presentation_gap", "regression", "other"]
"enum": [
"route_gap",
"capability_gap",
"evidence_gap",
"presentation_gap",
"semantic_understanding_gap",
"edge_carryover_gap",
"object_memory_gap",
"field_mapping_gap",
"answer_shape_mismatch",
"ordering_semantics_mismatch",
"business_utility_gap",
"loop_coverage_gap",
"domain_anchor_gap",
"regression",
"other"
]
},
"fix_goal": {
"type": "string"