Planner Autonomy: собрать mixed AGENT-прогон для catalog-alignment
This commit is contained in:
@@ -167,7 +167,180 @@ RECIPE_LIBRARY: dict[str, dict[str, Any]] = {
|
||||
"required_tags": ["meta_scope"],
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
"turnaround_11_planner_brain_alignment_mix": {
|
||||
"scenario_id": "address_truth_harness_phase83_planner_brain_alignment_mix",
|
||||
"domain": "planner_autonomy_consolidation",
|
||||
"title": "Phase 83 mixed planner-brain replay for catalog alignment, pivots, and legacy continuity",
|
||||
"description": (
|
||||
"Mixed AGENT replay for Planner Autonomy Consolidation. The pack interleaves selected-counterparty "
|
||||
"catalog-alignment probes, open-organization money flow, ranking, broad-evaluation continuity, "
|
||||
"metadata drilldown, and off-domain living-chat safety."
|
||||
),
|
||||
"bindings": {},
|
||||
"step_plan": [
|
||||
{
|
||||
"slot_id": "slot_01_smalltalk_sanity",
|
||||
"criticality": "info",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase19_mcp_discovery_response_gate:step_01_human_smalltalk_sanity",
|
||||
],
|
||||
"required_tags": ["meta_smalltalk"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_02_counterparty_grounding",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase32_planner_selected_chain_end_to_end:step_01_resolve_counterparty_alias",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment", "entity_resolution"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_03_counterparty_incoming",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase32_planner_selected_chain_end_to_end:step_02_incoming_by_resolved_entity",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_04_counterparty_payout",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase32_planner_selected_chain_end_to_end:step_03_payout_switch_by_resolved_entity",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_05_counterparty_net",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase32_planner_selected_chain_end_to_end:step_04_net_after_payout",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_06_counterparty_documents",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase32_planner_selected_chain_end_to_end:step_05_documents_after_net",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment", "document_evidence"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_07_counterparty_movements",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase32_planner_selected_chain_end_to_end:step_06_movements_after_documents",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment", "movement_evidence"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_08_open_org_total",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase66_human_org_open_scope_dialog:step_01_open_scope_incoming_total",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_09_open_org_selection",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase66_human_org_open_scope_dialog:step_02_all_time_same_open_scope",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_10_open_org_all_time",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase66_human_org_open_scope_dialog:step_03_all_time_same_open_scope",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_11_open_org_comparison",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase66_human_org_open_scope_dialog:step_04_bidirectional_comparison",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment", "value_flow_comparison"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_12_open_org_comparison_year_switch",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase66_human_org_open_scope_dialog:step_05_comparison_year_switch",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment", "value_flow_comparison"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_13_open_org_ranking",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase66_human_org_open_scope_dialog:step_06_ranking_top_counterparty",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment", "value_flow_ranking"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_14_open_org_ranking_year_switch",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase66_human_org_open_scope_dialog:step_07_ranking_year_switch",
|
||||
],
|
||||
"required_tags": ["planner_catalog_alignment", "value_flow_ranking"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_15_broad_eval_context",
|
||||
"criticality": "warning",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase22_broad_business_evaluation_bridge:step_01_company_activity_lifecycle",
|
||||
],
|
||||
"required_tags": ["company_activity_lifecycle"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_16_broad_eval_bridge",
|
||||
"criticality": "warning",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase22_broad_business_evaluation_bridge:step_02_broad_business_evaluation",
|
||||
],
|
||||
"required_tags": ["broad_business_evaluation"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_17_broad_eval_return_to_net",
|
||||
"criticality": "critical",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase22_broad_business_evaluation_bridge:step_03_net_flow_after_broad_eval",
|
||||
],
|
||||
"required_tags": ["broad_eval_bridge_preserved"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_18_metadata_surface",
|
||||
"criticality": "warning",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase42_catalog_metadata_drilldown:step_01_catalog_metadata_surface",
|
||||
],
|
||||
"required_tags": ["catalog_metadata_surface"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_19_metadata_drilldown",
|
||||
"criticality": "warning",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase42_catalog_metadata_drilldown:step_02_neutral_followup_catalog_drilldown",
|
||||
],
|
||||
"required_tags": ["catalog_drilldown"],
|
||||
},
|
||||
{
|
||||
"slot_id": "slot_20_off_domain_guard",
|
||||
"criticality": "warning",
|
||||
"preferred_candidate_ids": [
|
||||
"address_truth_harness_phase19_mcp_discovery_response_gate:step_08_off_domain_living_chat_not_hijacked",
|
||||
],
|
||||
"required_tags": ["off_domain_living_chat"],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -49,6 +49,25 @@ class AgentSemanticPackBuilderTests(unittest.TestCase):
|
||||
self.assertIn("same_date_restore", all_tags)
|
||||
self.assertIn("settlements_receivables", all_tags)
|
||||
|
||||
def test_build_recipe_spec_creates_planner_brain_alignment_pack(self) -> None:
|
||||
catalog = builder.build_source_catalog()
|
||||
spec = builder.build_recipe_spec(catalog, "turnaround_11_planner_brain_alignment_mix")
|
||||
|
||||
self.assertEqual(spec["scenario_id"], "address_truth_harness_phase83_planner_brain_alignment_mix")
|
||||
self.assertEqual(len(spec["steps"]), 20)
|
||||
all_tags = {tag for step in spec["steps"] for tag in step.get("semantic_tags", [])}
|
||||
self.assertIn("planner_catalog_alignment", all_tags)
|
||||
self.assertIn("value_flow_comparison", all_tags)
|
||||
self.assertIn("value_flow_ranking", all_tags)
|
||||
self.assertIn("broad_business_evaluation", all_tags)
|
||||
self.assertIn("catalog_drilldown", all_tags)
|
||||
self.assertIn("off_domain_living_chat", all_tags)
|
||||
|
||||
catalog_checked_steps = [
|
||||
step for step in spec["steps"] if step.get("expected_catalog_chain_top_match")
|
||||
]
|
||||
self.assertEqual(len(catalog_checked_steps), 13)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user