{ "schema_version": "active_domain_contract_v1", "status": "active", "domain_id": "inventory_stock_supplier_provenance", "runtime_domain": "inventory_stock", "title": "Складские остатки, происхождение товара и связь с поставщиком", "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" ] }, "domain_goal": "Показать остатки товаров на складе на дату, затем по выбранной позиции или по связанному срезу пройти в происхождение товара, поставщика, закупочные документы, возраст закупки и дальнейшую продажу без потери контекста.", "default_analysis_context": { "as_of_date": "2021-09-30", "source": "active_domain_contract_default" }, "business_value": [ "Пользователь должен сначала получить подтвержденный срез остатков на дату.", "Пользователь должен затем выбрать реальную позицию из ответа и углубиться без ручного переписывания сущности.", "Система должна понимать не только канонический вопрос, но и разговорные follow-up формулировки.", "Для сценария склада acceptance определяется не одиночным ответом, а проходимостью дерева от root snapshot к критическим drilldown-веткам." ], "observed_anchors": { "warehouse": "Основной склад", "organization": "ООО \\Альтернатива Плюс\\", "historical_as_of_date": "2019-03-31", "current_as_of_date_example": "2021-09-30", "focus_item_current": "Диван трехместный", "focus_item_historical": "Столешница 600*3050*26 дуб ниагара", "focus_item_small_residue": "Четки Пост (84*117)", "supplier_candidate": "Торговый дом \\Союз", "supplier_candidate_alt": "Гамма-мебель, ООО", "buyer_candidate": "Департамент капитального ремонта города Москвы" }, "question_pool": { "total_questions": 31, "core_questions_total": 22, "followup_checkpoints_total": 9, "questions": [ { "question_id": "Q01", "text": "Какие товары сейчас лежат на складе", "layer": "root_snapshot", "node_id": "N01_stock_snapshot", "role": "root", "wording_family": "canonical", "semantic_goal": "получить актуальный item-level срез остатков на складе" }, { "question_id": "Q02", "text": "Какие товары лежат на складе на дату ...", "layer": "root_snapshot", "node_id": "N01_stock_snapshot", "role": "root", "wording_family": "canonical", "semantic_goal": "получить item-level срез остатков на конкретную дату" }, { "question_id": "Q03", "text": "Из каких товаров состоит остаток по 41 счету", "layer": "root_snapshot", "node_id": "N02_account_41_snapshot", "role": "root_variant", "wording_family": "canonical", "semantic_goal": "получить item-level состав остатка по 41.01" }, { "question_id": "Q04", "text": "Какие товары числятся на 41 счете на дату ...", "layer": "root_snapshot", "node_id": "N02_account_41_snapshot", "role": "root_variant", "wording_family": "colloquial", "semantic_goal": "получить датированный item-level состав остатка по 41.01" }, { "question_id": "Q05", "text": "Какие конкретно номенклатуры формируют остаток по складу на дату ...", "layer": "root_snapshot", "node_id": "N01_stock_snapshot", "role": "root_variant", "wording_family": "canonical", "semantic_goal": "получить номенклатурный состав складского остатка на дату" }, { "question_id": "Q28", "text": "что лежит у нас на складе в марте 2019", "layer": "root_snapshot", "node_id": "N01_stock_snapshot", "role": "root_variant", "wording_family": "colloquial", "semantic_goal": "проверить разговорный root snapshot с предлогом `в` и месячной словоформой без развала в годовой диапазон" }, { "question_id": "Q06", "text": "От какого поставщика куплен товар ...", "layer": "selected_item_provenance", "node_id": "N03_selected_item_supplier", "role": "critical_child", "wording_family": "canonical", "semantic_goal": "получить прямой ответ о поставщике выбранного товара" }, { "question_id": "Q07", "text": "У какого поставщика были куплены товары, которые сейчас лежат на складе", "layer": "supplier_overlap", "node_id": "N06_supplier_overlap_now", "role": "critical_child", "wording_family": "canonical", "semantic_goal": "понять supplier coverage по текущему складскому срезу" }, { "question_id": "Q08", "text": "По какому поставщику проходит текущий товарный остаток", "layer": "supplier_overlap", "node_id": "N06_supplier_overlap_now", "role": "supporting_child", "wording_family": "canonical", "semantic_goal": "атрибутировать текущий остаток по поставщику без потери item/slice контекста" }, { "question_id": "Q09", "text": "Когда был куплен товар ...", "layer": "selected_item_provenance", "node_id": "N04_selected_item_purchase_date", "role": "critical_child", "wording_family": "canonical", "semantic_goal": "получить дату первой/наблюдаемой закупки выбранного товара" }, { "question_id": "Q26", "text": "когда примерно мы купили?", "layer": "selected_item_provenance", "node_id": "N04_selected_item_purchase_date", "role": "followup_checkpoint", "wording_family": "short_action_followup", "semantic_goal": "получить компактный direct answer о дате закупки через reuse already resolved answer object, а не повторять полный provenance packet" }, { "question_id": "Q10", "text": "По каким документам был куплен товар ...", "layer": "selected_item_provenance", "node_id": "N05_selected_item_purchase_documents", "role": "critical_child", "wording_family": "canonical", "semantic_goal": "получить закупочные документы для выбранного товара" }, { "question_id": "Q11", "text": "Какие товары от поставщика ... сейчас еще лежат на складе", "layer": "supplier_overlap", "node_id": "N07_supplier_items_on_stock", "role": "supporting_child", "wording_family": "canonical", "semantic_goal": "получить item-level пересечение supplier -> current stock" }, { "question_id": "Q12", "text": "Какие товары по состоянию на дату ... были куплены у поставщика ...", "layer": "supplier_overlap", "node_id": "N08_supplier_items_on_date", "role": "supporting_child", "wording_family": "canonical", "semantic_goal": "получить датированное item-level пересечение supplier -> stock slice" }, { "question_id": "Q13", "text": "Какие остатки по товарам на эту дату относятся к старым закупкам", "layer": "aging", "node_id": "N09_old_purchase_aging", "role": "critical_child", "wording_family": "followup_date_carryover", "semantic_goal": "показать item-level старые закупки в рамках уже выбранной даты, а не на текущий момент" }, { "question_id": "Q14", "text": "Какие товары сейчас висят в остатке без понятной привязки к поставщику", "layer": "aging", "node_id": "N10_unresolved_supplier_link", "role": "supporting_child", "wording_family": "canonical", "semantic_goal": "найти остатки без надежной supplier attribution" }, { "question_id": "Q15", "text": "Есть ли остатки товара, которые закупались очень давно", "layer": "aging", "node_id": "N09_old_purchase_aging", "role": "supporting_child", "wording_family": "canonical", "semantic_goal": "показать very-old stock в item-level виде" }, { "question_id": "Q16", "text": "Кому был продан товар ...", "layer": "sale_trace", "node_id": "N11_selected_item_buyer", "role": "critical_child", "wording_family": "canonical", "semantic_goal": "получить покупателя выбранного товара" }, { "question_id": "Q17", "text": "Через какие документы прошел путь товара: закупка -> склад -> продажа", "layer": "sale_trace", "node_id": "N12_purchase_to_sale_chain", "role": "critical_child", "wording_family": "canonical", "semantic_goal": "получить полную документальную цепочку purchase -> stock -> sale" }, { "question_id": "Q18", "text": "Какие товары были куплены у поставщика ... и позже проданы покупателю ...", "layer": "sale_trace", "node_id": "N13_supplier_to_buyer_overlap", "role": "supporting_child", "wording_family": "canonical", "semantic_goal": "проверить supplier -> item -> buyer overlap" }, { "question_id": "Q19", "text": "По выбранному объекту \"...\": кто это поставил нам", "layer": "selected_item_provenance", "node_id": "N03_selected_item_supplier", "role": "critical_child", "wording_family": "ui_selected_object_colloquial", "semantic_goal": "проверить, что selected-object follow-up и разговорная supplier-фраза идут в exact provenance contour" }, { "question_id": "Q20", "text": "По выбранному объекту \"...\": по каким документам это купили", "layer": "selected_item_provenance", "node_id": "N05_selected_item_purchase_documents", "role": "critical_child", "wording_family": "ui_selected_object_colloquial", "semantic_goal": "проверить selected-object follow-up в закупочные документы без ручного переписывания item" }, { "question_id": "Q21", "text": "покажи документы по этой позиции", "layer": "selected_item_provenance", "node_id": "N05_selected_item_purchase_documents", "role": "critical_child", "wording_family": "pronoun_followup", "semantic_goal": "проверить короткий местоименный follow-up по активному товару без съезда в counterparty drilldown" }, { "question_id": "Q22", "text": "По выбранному объекту \"...\": от какого поставщика куплен товар", "layer": "selected_item_provenance", "node_id": "N03_selected_item_supplier", "role": "critical_child", "wording_family": "ui_selected_object", "semantic_goal": "проверить selected-object follow-up в exact provenance contour без разговорной supplier-лексики" }, { "question_id": "Q23", "text": "кто это поставил нам", "layer": "selected_item_provenance", "node_id": "N03_selected_item_supplier", "role": "critical_child", "wording_family": "pronoun_followup", "semantic_goal": "проверить короткий supplier follow-up по уже активному selected object без повторного item anchor" }, { "question_id": "Q27", "text": "По выбранному объекту \"...\": у кого купили", "layer": "selected_item_provenance", "node_id": "N03_selected_item_supplier", "role": "critical_child", "wording_family": "ui_selected_object_colloquial", "semantic_goal": "проверить разговорный selected-object follow-up про поставщика без слова `поставщик`" }, { "question_id": "Q31", "text": "По выбранному объекту \"...\": у кого куплено", "layer": "selected_item_provenance", "node_id": "N03_selected_item_supplier", "role": "critical_child", "wording_family": "ui_selected_object_colloquial", "semantic_goal": "проверить selected-object follow-up с краткой страдательной формой `у кого куплено`, который должен оставаться в supplier provenance и наследовать историческую дату root-среза" }, { "question_id": "Q29", "text": "По выбранному объекту \"...\": где мы купили это", "layer": "selected_item_provenance", "node_id": "N03_selected_item_supplier", "role": "critical_child", "wording_family": "ui_selected_object_colloquial", "semantic_goal": "проверить разговорный selected-object follow-up с локационной формулировкой, который по смыслу должен вернуться к supplier provenance, а не в документы" }, { "question_id": "Q30", "text": "По выбранному объекту \"...\": где куплено!!", "layer": "selected_item_provenance", "node_id": "N03_selected_item_supplier", "role": "critical_child", "wording_family": "ui_selected_object_colloquial", "semantic_goal": "проверить короткий selected-object follow-up с emphatic punctuation и усеченной формулировкой `где куплено`" }, { "question_id": "Q24", "text": "По выбранному объекту \"...\": кому был продан товар", "layer": "sale_trace", "node_id": "N11_selected_item_buyer", "role": "critical_child", "wording_family": "ui_selected_object", "semantic_goal": "проверить selected-object follow-up в exact buyer trace contour" }, { "question_id": "Q25", "text": "По выбранному объекту \"...\": через какие документы прошел путь товара: закупка -> склад -> продажа", "layer": "sale_trace", "node_id": "N12_purchase_to_sale_chain", "role": "critical_child", "wording_family": "ui_selected_object", "semantic_goal": "проверить selected-object follow-up в exact purchase-to-sale chain contour" } ] }, "wording_families": [ { "family_id": "canonical", "description": "нормальная каноническая формулировка доменного вопроса" }, { "family_id": "colloquial", "description": "разговорная или короткая пользовательская формулировка" }, { "family_id": "ui_selected_object", "description": "follow-up, собранный через выбор объекта из ответа" }, { "family_id": "ui_selected_object_colloquial", "description": "выбранный объект + разговорная формулировка drilldown-вопроса" }, { "family_id": "followup_date_carryover", "description": "follow-up с фразой `на эту дату` или `на ту дату`, где дата обязана тянуться из предыдущего шага" }, { "family_id": "pronoun_followup", "description": "короткий follow-up по активному объекту через местоимение или указатель типа `по ней`, `по этой позиции`, `ее`" } ], "scenario_tree": { "root_nodes": [ { "node_id": "N01_stock_snapshot", "title": "Складской snapshot на дату", "covers_question_ids": [ "Q01", "Q02", "Q05", "Q28" ], "expected_intents": [ "inventory_on_hand_as_of_date" ], "expected_answer_shape": "item_list_with_quantity_cost_warehouse_organization", "required_wording_families": [ "canonical", "colloquial" ], "children": [ "N03_selected_item_supplier", "N06_supplier_overlap_now", "N09_old_purchase_aging" ] }, { "node_id": "N02_account_41_snapshot", "title": "Состав остатка по 41.01 на дату", "covers_question_ids": [ "Q03", "Q04" ], "expected_intents": [ "inventory_on_hand_as_of_date" ], "expected_answer_shape": "item_list_with_account_41_scope", "required_wording_families": [ "canonical", "colloquial" ], "children": [ "N03_selected_item_supplier", "N11_selected_item_buyer" ] } ], "critical_nodes": [ { "node_id": "N03_selected_item_supplier", "title": "Поставщик выбранного товара", "covers_question_ids": [ "Q06", "Q19", "Q22", "Q23", "Q27", "Q29", "Q30" ], "expected_intents": [ "inventory_purchase_provenance_for_item" ], "expected_answer_shape": "direct_supplier_answer_first_then_evidence", "required_wording_families": [ "canonical", "colloquial", "ui_selected_object", "ui_selected_object_colloquial", "pronoun_followup" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "organization_scope", "reusable_bundle" ], "children": [ "N04_selected_item_purchase_date", "N05_selected_item_purchase_documents", "N09_old_purchase_aging" ] }, { "node_id": "N04_selected_item_purchase_date", "title": "Дата закупки выбранного товара", "covers_question_ids": [ "Q09", "Q26" ], "expected_intents": [ "inventory_purchase_provenance_for_item" ], "expected_answer_shape": "direct_date_answer_first_then_evidence", "required_wording_families": [ "canonical", "ui_selected_object", "short_action_followup" ], "required_carryover_invariants": [ "selected_object", "date_scope", "reusable_bundle", "followup_action_resolution" ] }, { "node_id": "N05_selected_item_purchase_documents", "title": "Закупочные документы выбранного товара", "covers_question_ids": [ "Q10", "Q20", "Q21" ], "expected_intents": [ "inventory_purchase_documents_for_item" ], "expected_answer_shape": "document_list_for_selected_item", "required_wording_families": [ "canonical", "ui_selected_object", "ui_selected_object_colloquial", "pronoun_followup" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "reusable_bundle", "followup_action_resolution" ] }, { "node_id": "N09_old_purchase_aging", "title": "Старые закупки по остаткам на выбранную дату", "covers_question_ids": [ "Q13", "Q15" ], "expected_intents": [ "inventory_aging_by_purchase_date" ], "expected_answer_shape": "item_level_oldest_first_stock_aging_list", "required_wording_families": [ "canonical", "followup_date_carryover" ], "required_carryover_invariants": [ "date_scope", "warehouse_scope", "organization_scope" ], "ordering_rule": "oldest_first" }, { "node_id": "N11_selected_item_buyer", "title": "Покупатель выбранного товара", "covers_question_ids": [ "Q16", "Q24" ], "expected_intents": [ "inventory_sale_trace_for_item" ], "expected_answer_shape": "direct_buyer_answer_first_then_evidence", "required_wording_families": [ "canonical", "ui_selected_object" ], "required_carryover_invariants": [ "selected_object", "date_scope" ] }, { "node_id": "N12_purchase_to_sale_chain", "title": "Документальная цепочка purchase -> stock -> sale", "covers_question_ids": [ "Q17", "Q25" ], "expected_intents": [ "inventory_purchase_to_sale_chain" ], "expected_answer_shape": "ordered_chain_with_purchase_stock_sale_documents", "required_wording_families": [ "canonical", "ui_selected_object" ], "required_carryover_invariants": [ "selected_object", "date_scope" ] } ], "supporting_nodes": [ { "node_id": "N06_supplier_overlap_now", "title": "Supplier overlap по текущему stock slice", "covers_question_ids": [ "Q07", "Q08" ], "expected_intents": [ "inventory_supplier_stock_overlap_as_of_date" ], "expected_answer_shape": "supplier_to_stock_slice_summary" }, { "node_id": "N07_supplier_items_on_stock", "title": "Какие товары поставщика лежат на складе сейчас", "covers_question_ids": [ "Q11" ], "expected_intents": [ "inventory_supplier_stock_overlap_as_of_date" ], "expected_answer_shape": "item_list_filtered_by_supplier" }, { "node_id": "N08_supplier_items_on_date", "title": "Какие товары поставщика были в остатке на дату", "covers_question_ids": [ "Q12" ], "expected_intents": [ "inventory_supplier_stock_overlap_as_of_date" ], "expected_answer_shape": "dated_item_list_filtered_by_supplier" }, { "node_id": "N10_unresolved_supplier_link", "title": "Остатки без понятной supplier attribution", "covers_question_ids": [ "Q14" ], "expected_intents": [ "inventory_supplier_stock_overlap_as_of_date" ], "expected_answer_shape": "item_list_with_unresolved_supplier_linkage" }, { "node_id": "N13_supplier_to_buyer_overlap", "title": "Supplier -> item -> buyer overlap", "covers_question_ids": [ "Q18" ], "expected_intents": [ "inventory_purchase_to_sale_chain" ], "expected_answer_shape": "confirmed_or_honestly_limited_supplier_item_buyer_overlap" } ], "critical_edges": [ { "edge_id": "E01_snapshot_to_selected_item_supplier", "from_node": "N01_stock_snapshot", "to_node": "N03_selected_item_supplier", "transition_type": "selected_object_drilldown", "primary_user_path": true, "required_carryover_invariants": [ "selected_object", "date_scope", "warehouse_scope", "organization_scope" ], "failure_means": "домен не принят, даже если root snapshot уже exact" }, { "edge_id": "E02_selected_item_supplier_to_purchase_documents", "from_node": "N03_selected_item_supplier", "to_node": "N05_selected_item_purchase_documents", "transition_type": "selected_object_deeper_trace", "primary_user_path": true, "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "reusable_bundle", "followup_action_resolution" ], "failure_means": "сломано углубление из поставщика в документы закупки" }, { "edge_id": "E03_snapshot_or_provenance_to_aging", "from_node": "N01_stock_snapshot", "to_node": "N09_old_purchase_aging", "transition_type": "date_sensitive_followup", "primary_user_path": true, "required_carryover_invariants": [ "date_scope", "warehouse_scope", "organization_scope" ], "ordering_rule": "oldest_first", "failure_means": "сломано понимание `на эту дату` или неверная answer shape по старым закупкам" }, { "edge_id": "E04_snapshot_to_sale_trace", "from_node": "N02_account_41_snapshot", "to_node": "N11_selected_item_buyer", "transition_type": "historical_selected_object_drilldown", "primary_user_path": true, "required_carryover_invariants": [ "selected_object", "date_scope" ], "failure_means": "sale-trace ветка незакрыта" } ], "primary_user_paths": [ { "path_id": "P01_snapshot_to_supplier", "nodes": [ "N01_stock_snapshot", "N03_selected_item_supplier" ], "description": "Самый типичный живой путь: получить список остатков, выбрать позицию, спросить кто поставил." }, { "path_id": "P02_snapshot_to_supplier_to_documents", "nodes": [ "N01_stock_snapshot", "N03_selected_item_supplier", "N05_selected_item_purchase_documents" ], "description": "После поставщика пользователь углубляется в закупочные документы." }, { "path_id": "P03_snapshot_to_aging_on_same_date", "nodes": [ "N01_stock_snapshot", "N09_old_purchase_aging" ], "description": "Пользователь спрашивает про старые закупки на ту же дату, что и исходный snapshot." }, { "path_id": "P04_account_41_to_sale_trace", "nodes": [ "N02_account_41_snapshot", "N11_selected_item_buyer", "N12_purchase_to_sale_chain" ], "description": "Пользователь берет исторический остаток по 41 счету, выбирает позицию и углубляется в buyer/sale trace." } ] }, "orchestration_pack": { "pack_id": "inventory_stock_active_contract_pool", "title": "Warehouse stock active domain pack", "description": "Scenario pack generated from the single active warehouse domain contract.", "analysis_context": { "as_of_date": "2021-09-30", "source": "active_domain_contract_pack" }, "bindings": { "target_date_historical": "2019-03-31", "target_date_current": "2021-09-30", "observed_warehouse": "Основной склад", "observed_organization": "ООО \\Альтернатива Плюс\\", "focus_item_current": "Диван трехместный", "focus_item_historical": "Столешница 600*3050*26 дуб ниагара", "focus_item_small_residue": "Четки Пост (84*117)", "observed_supplier_candidate": "Торговый дом \\Союз", "observed_supplier_candidate_alt": "Гамма-мебель, ООО", "observed_customer_candidate": "Департамент капитального ремонта города Москвы" }, "scenarios": [ { "scenario_id": "inventory_snapshot_roots", "title": "Root stock snapshots", "question_ids": [ "Q01", "Q02", "Q28", "Q03", "Q04", "Q05" ], "node_ids": [ "N01_stock_snapshot", "N02_account_41_snapshot" ], "acceptance_canon": { "root_step_id": "step_01_stock_now", "primary_user_path": [ "step_01_stock_now", "step_02_stock_on_historical_date", "step_05_nomenclature_on_historical_date" ], "required_paraphrase_families": [ "canonical", "colloquial" ], "required_carryover_invariants": [ "date_scope", "warehouse_scope", "organization_scope", "answer_shape" ] }, "steps": [ { "step_id": "step_01_stock_now", "question_id": "Q01", "node_id": "N01_stock_snapshot", "node_role": "root", "paraphrase_family": "canonical", "title": "Current stock root", "question": "Какие товары сейчас лежат на складе", "expected_capability": "confirmed_inventory_on_hand_as_of_date", "analysis_context": { "as_of_date": "2021-09-30", "source": "binding_target_date_current" }, "expected_result_mode": "confirmed_balance", "required_filters": { "as_of_date": "2021-09-30" }, "invariant_severity": { "wrong_as_of_date": "P0", "wrong_period_from": "P0", "wrong_period_to": "P0" } }, { "step_id": "step_02_stock_on_historical_date", "question_id": "Q02", "node_id": "N01_stock_snapshot", "node_role": "root", "paraphrase_family": "colloquial", "title": "Historical stock slice", "question": "покажи остатки на складе на март 2019", "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance", "required_filters": { "as_of_date": "2019-03-31", "period_from": "2019-03-01", "period_to": "2019-03-31" }, "invariant_severity": { "wrong_as_of_date": "P0", "wrong_period_from": "P0", "wrong_period_to": "P0" } }, { "step_id": "step_02b_stock_on_named_month_prepositional", "question_id": "Q28", "node_id": "N01_stock_snapshot", "node_role": "root_variant", "paraphrase_family": "colloquial", "title": "Historical stock slice with prepositional month wording", "question": "что лежит у нас на складе в марте 2019", "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance", "required_filters": { "as_of_date": "2019-03-31", "period_from": "2019-03-01", "period_to": "2019-03-31" }, "invariant_severity": { "wrong_as_of_date": "P0", "wrong_period_from": "P0", "wrong_period_to": "P0" } }, { "step_id": "step_03_account_41_now", "question_id": "Q03", "analysis_context": { "as_of_date": "2021-09-30", "source": "binding_target_date_current" }, "required_filters": { "as_of_date": "2021-09-30", "account": "41" }, "invariant_severity": { "wrong_as_of_date": "P0", "wrong_period_from": "P0", "wrong_period_to": "P0" }, "node_id": "N02_account_41_snapshot", "node_role": "root_variant", "paraphrase_family": "canonical", "title": "Account 41 current composition", "question": "Из каких товаров состоит остаток по 41 счету", "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance" }, { "step_id": "step_04_account_41_on_historical_date", "question_id": "Q04", "node_id": "N02_account_41_snapshot", "node_role": "root_variant", "paraphrase_family": "colloquial", "title": "Account 41 on historical date", "question": "Какие товары числятся на 41 счете на дату {{bindings.target_date_historical}}", "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance" }, { "step_id": "step_05_nomenclature_on_historical_date", "question_id": "Q05", "node_id": "N01_stock_snapshot", "node_role": "root_variant", "paraphrase_family": "canonical", "title": "Nomenclature on historical date", "question": "Какие конкретно номенклатуры формируют остаток по складу {{bindings.observed_warehouse}} на дату {{bindings.target_date_historical}}", "depends_on": [ "step_02_stock_on_historical_date" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance" } ] }, { "scenario_id": "inventory_selected_item_provenance", "title": "Selected-item supplier provenance", "question_ids": [ "Q02", "Q06", "Q09", "Q26", "Q10", "Q19", "Q27", "Q29", "Q30", "Q20", "Q21", "Q22", "Q23" ], "node_ids": [ "N01_stock_snapshot", "N03_selected_item_supplier", "N04_selected_item_purchase_date", "N05_selected_item_purchase_documents" ], "acceptance_canon": { "root_step_id": "step_01_snapshot_historical", "primary_user_path": [ "step_01_snapshot_historical", "step_02_selected_item_supplier_ui", "step_08_selected_item_documents_pronoun" ], "required_paraphrase_families": [ "canonical", "colloquial", "ui_selected_object", "ui_selected_object_colloquial", "pronoun_followup" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "organization_scope", "answer_shape", "reusable_bundle", "followup_action_resolution" ] }, "steps": [ { "step_id": "step_01_snapshot_historical", "question_id": "Q02", "node_id": "N01_stock_snapshot", "node_role": "root", "paraphrase_family": "colloquial", "title": "Historical stock anchor", "question": "покажи остатки на складе на март 2019", "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance" }, { "step_id": "step_02_selected_item_supplier_ui", "question_id": "Q22", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "ui_selected_object", "title": "Selected item supplier UI", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": от какого поставщика куплен товар", "depends_on": [ "step_01_snapshot_historical" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "organization_scope" ] }, { "step_id": "step_03_selected_item_supplier_colloquial", "question_id": "Q19", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "ui_selected_object_colloquial", "title": "Selected item supplier colloquial", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": кто это поставил нам", "depends_on": [ "step_01_snapshot_historical" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "organization_scope" ] }, { "step_id": "step_03b_selected_item_supplier_u_kogo_kupili", "question_id": "Q27", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "ui_selected_object_colloquial", "title": "Selected item supplier colloquial without supplier noun", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": у кого купили", "depends_on": [ "step_01_snapshot_historical" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1" ], "required_state_objects": [ "focus_object" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "organization_scope" ] }, { "step_id": "step_03bb_selected_item_supplier_u_kogo_kupleno", "question_id": "Q31", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "ui_selected_object_colloquial", "title": "Selected item supplier passive colloquial wording", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": у кого куплено", "depends_on": [ "step_01_snapshot_historical" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1" ], "required_state_objects": [ "focus_object" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "organization_scope" ], "required_filters": { "as_of_date": "2019-03-31" }, "invariant_severity": { "wrong_as_of_date": "P0", "wrong_period_from": "P0", "wrong_period_to": "P0", "forbidden_route_selected": "P0", "focus_object_missing": "P0" } }, { "step_id": "step_03c_selected_item_supplier_gde_my_kupili", "question_id": "Q29", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "ui_selected_object_colloquial", "title": "Selected item supplier colloquial with where-bought wording", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": где мы купили это", "depends_on": [ "step_01_snapshot_historical" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1" ], "required_state_objects": [ "focus_object" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "organization_scope" ] }, { "step_id": "step_03d_selected_item_supplier_gde_kupleno", "question_id": "Q30", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "ui_selected_object_colloquial", "title": "Selected item supplier terse where-bought wording", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": где куплено!!", "depends_on": [ "step_01_snapshot_historical" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1" ], "required_state_objects": [ "focus_object" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "warehouse_scope", "organization_scope" ] }, { "step_id": "step_04_selected_item_supplier_pronoun", "question_id": "Q23", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "pronoun_followup", "title": "Selected item supplier pronoun follow-up", "question": "кто это поставил нам", "depends_on": [ "step_02_selected_item_supplier_ui" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1" ], "required_state_objects": [ "focus_object" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "reusable_bundle" ] }, { "step_id": "step_05_selected_item_supplier_canonical", "question_id": "Q06", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "canonical", "title": "Selected item supplier canonical", "question": "От какого поставщика куплен товар {{bindings.focus_item_historical}}", "depends_on": [ "step_01_snapshot_historical" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1" ], "required_state_objects": [ "focus_object" ] }, { "step_id": "step_06_selected_item_purchase_date", "question_id": "Q09", "node_id": "N04_selected_item_purchase_date", "node_role": "critical_child", "paraphrase_family": "canonical", "title": "Selected item purchase date", "question": "Когда был куплен товар {{bindings.focus_item_historical}}", "depends_on": [ "step_01_snapshot_historical", "step_02_selected_item_supplier_ui" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "required_state_objects": [ "focus_object" ], "required_filters": { "as_of_date": "2019-03-31" }, "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "reusable_bundle", "followup_action_resolution" ], "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1" ] }, { "step_id": "step_06b_selected_item_purchase_date_short", "question_id": "Q26", "node_id": "N04_selected_item_purchase_date", "node_role": "critical_child", "paraphrase_family": "short_action_followup", "title": "Selected item purchase date short follow-up", "question": "когда", "depends_on": [ "step_02_selected_item_supplier_ui" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_provenance_for_item", "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1" ], "required_state_objects": [ "focus_object" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "reusable_bundle", "followup_action_resolution" ] }, { "step_id": "step_07_selected_item_documents_ui", "question_id": "Q20", "node_id": "N05_selected_item_purchase_documents", "node_role": "critical_child", "paraphrase_family": "ui_selected_object_colloquial", "title": "Selected item purchase documents UI", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": по каким документам это купили", "depends_on": [ "step_01_snapshot_historical", "step_02_selected_item_supplier_ui" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_documents_for_item", "required_state_objects": [ "focus_object" ], "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date", "inventory_purchase_provenance_for_item" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1", "address_inventory_purchase_provenance_for_item_v1" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "reusable_bundle", "followup_action_resolution" ] }, { "step_id": "step_08_selected_item_documents_pronoun", "question_id": "Q21", "node_id": "N05_selected_item_purchase_documents", "node_role": "critical_child", "paraphrase_family": "pronoun_followup", "title": "Selected item purchase documents pronoun follow-up", "question": "покажи документы по этой позиции", "depends_on": [ "step_01_snapshot_historical", "step_02_selected_item_supplier_ui" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_documents_for_item", "required_state_objects": [ "focus_object" ], "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date", "inventory_purchase_provenance_for_item" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1", "address_inventory_purchase_provenance_for_item_v1" ], "required_carryover_invariants": [ "selected_object", "focus_object", "date_scope", "reusable_bundle", "followup_action_resolution" ] }, { "step_id": "step_09_selected_item_documents_canonical", "question_id": "Q10", "node_id": "N05_selected_item_purchase_documents", "node_role": "critical_child", "paraphrase_family": "canonical", "title": "Selected item purchase documents canonical", "question": "По каким документам был куплен товар {{bindings.focus_item_historical}}", "depends_on": [ "step_01_snapshot_historical", "step_02_selected_item_supplier_ui" ], "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" }, "expected_capability": "inventory_purchase_documents_for_item", "required_state_objects": [ "focus_object" ], "forbidden_capabilities": [ "confirmed_inventory_on_hand_as_of_date", "inventory_purchase_provenance_for_item" ], "forbidden_recipes": [ "address_inventory_on_hand_as_of_date_v1", "address_inventory_purchase_provenance_for_item_v1" ] } ] }, { "scenario_id": "inventory_supplier_overlap", "title": "Supplier overlap and supplier-scoped stock", "question_ids": [ "Q01", "Q07", "Q08", "Q11", "Q12" ], "node_ids": [ "N01_stock_snapshot", "N06_supplier_overlap_now", "N07_supplier_items_on_stock", "N08_supplier_items_on_date" ], "acceptance_canon": { "root_step_id": "step_01_snapshot_current", "primary_user_path": [ "step_01_snapshot_current", "step_02_supplier_overlap_now", "step_04_supplier_items_on_stock" ], "required_paraphrase_families": [ "canonical", "colloquial" ], "required_carryover_invariants": [ "date_scope", "warehouse_scope", "organization_scope", "answer_shape" ] }, "steps": [ { "step_id": "step_01_snapshot_current", "question_id": "Q01", "node_id": "N01_stock_snapshot", "node_role": "root", "paraphrase_family": "colloquial", "title": "Current stock anchor", "question": "какие остатки на складе на сентябрь 2021", "analysis_context": { "as_of_date": "2021-09-30", "source": "binding_target_date_current" }, "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance" }, { "step_id": "step_02_supplier_overlap_now", "question_id": "Q07", "node_id": "N06_supplier_overlap_now", "node_role": "critical_child", "paraphrase_family": "canonical", "title": "Suppliers behind current stock", "question": "У какого поставщика были куплены товары, которые сейчас лежат на складе {{bindings.observed_warehouse}}", "depends_on": [ "step_01_snapshot_current" ] }, { "step_id": "step_03_supplier_residue_now", "question_id": "Q08", "node_id": "N06_supplier_overlap_now", "node_role": "supporting_child", "paraphrase_family": "canonical", "title": "Supplier attribution of current residue", "question": "По какому поставщику проходит текущий товарный остаток на складе {{bindings.observed_warehouse}}", "depends_on": [ "step_01_snapshot_current" ] }, { "step_id": "step_04_supplier_items_on_stock", "question_id": "Q11", "node_id": "N07_supplier_items_on_stock", "node_role": "supporting_child", "paraphrase_family": "canonical", "title": "Current items for observed supplier", "question": "Какие товары от поставщика {{bindings.observed_supplier_candidate}} сейчас еще лежат на складе {{bindings.observed_warehouse}}", "depends_on": [ "step_01_snapshot_current" ] }, { "step_id": "step_05_supplier_items_on_date", "question_id": "Q12", "required_filters": { "as_of_date": "2019-03-31", "period_from": "2019-03-01", "period_to": "2019-03-31" }, "required_carryover_invariants": [ "date_scope" ], "invariant_severity": { "wrong_as_of_date": "P0", "wrong_period_from": "P0", "wrong_period_to": "P0" }, "node_id": "N08_supplier_items_on_date", "node_role": "supporting_child", "paraphrase_family": "canonical", "title": "Supplier items on historical date", "question": "Какие товары по состоянию на дату {{bindings.target_date_historical}} были куплены у поставщика {{bindings.observed_supplier_candidate}}", "analysis_context": { "as_of_date": "2019-03-31", "source": "binding_target_date_historical" } } ] }, { "scenario_id": "inventory_aging_and_unresolved", "title": "Stock aging and unresolved supplier linkage", "question_ids": [ "Q13", "Q14", "Q15", "Q19" ], "node_ids": [ "N01_stock_snapshot", "N03_selected_item_supplier", "N09_old_purchase_aging", "N10_unresolved_supplier_link" ], "acceptance_canon": { "root_step_id": "step_01_snapshot_current", "primary_user_path": [ "step_01_snapshot_current", "step_02_selected_item_supplier_small", "step_03_old_purchase_aging_followup" ], "required_paraphrase_families": [ "canonical", "followup_date_carryover", "ui_selected_object_colloquial" ], "required_carryover_invariants": [ "selected_object", "date_scope", "warehouse_scope", "organization_scope", "answer_shape", "ordering_semantics" ] }, "steps": [ { "step_id": "step_01_snapshot_current", "question_id": "Q01", "node_id": "N01_stock_snapshot", "node_role": "root", "paraphrase_family": "colloquial", "title": "Current stock anchor", "question": "какие остатки на складе на сентябрь 2021", "analysis_context": { "as_of_date": "2021-09-30", "source": "binding_target_date_current" }, "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance" }, { "step_id": "step_02_selected_item_supplier_small", "question_id": "Q19", "node_id": "N03_selected_item_supplier", "node_role": "critical_child", "paraphrase_family": "ui_selected_object_colloquial", "title": "Supplier for small residual item", "question": "По выбранному объекту \"{{bindings.focus_item_small_residue}}\": кто это поставил нам", "depends_on": [ "step_01_snapshot_current" ] }, { "step_id": "step_03_old_purchase_aging_followup", "question_id": "Q13", "node_id": "N09_old_purchase_aging", "node_role": "critical_child", "paraphrase_family": "followup_date_carryover", "title": "Old purchase aging on the same date", "question": "Какие остатки по товарам на эту дату относятся к старым закупкам", "depends_on": [ "step_01_snapshot_current", "step_02_selected_item_supplier_small" ], "required_carryover_invariants": [ "date_scope", "warehouse_scope", "organization_scope" ], "ordering_rule": "oldest_first" }, { "step_id": "step_04_very_old_stock", "question_id": "Q15", "node_id": "N09_old_purchase_aging", "node_role": "supporting_child", "paraphrase_family": "canonical", "title": "Very old stock", "question": "Есть ли остатки товара, которые закупались очень давно", "depends_on": [ "step_01_snapshot_current", "step_03_old_purchase_aging_followup" ], "ordering_rule": "oldest_first" }, { "step_id": "step_05_unresolved_supplier_link", "question_id": "Q14", "analysis_context": { "as_of_date": "2021-09-30", "source": "binding_target_date_current" }, "required_filters": { "as_of_date": "2021-09-30", "period_from": "2021-09-01", "period_to": "2021-09-30" }, "required_carryover_invariants": [ "date_scope" ], "invariant_severity": { "wrong_as_of_date": "P0", "wrong_period_from": "P0", "wrong_period_to": "P0" }, "node_id": "N10_unresolved_supplier_link", "node_role": "supporting_child", "paraphrase_family": "canonical", "title": "Unresolved supplier linkage", "question": "Какие товары сейчас висят в остатке без понятной привязки к поставщику", "depends_on": [ "step_01_snapshot_current" ] } ] }, { "scenario_id": "inventory_sale_trace", "title": "Sale trace and purchase-to-sale chain", "question_ids": [ "Q04", "Q16", "Q17", "Q18", "Q24", "Q25" ], "node_ids": [ "N02_account_41_snapshot", "N11_selected_item_buyer", "N12_purchase_to_sale_chain", "N13_supplier_to_buyer_overlap" ], "acceptance_canon": { "root_step_id": "step_01_account_41_historical", "primary_user_path": [ "step_01_account_41_historical", "step_02_selected_item_buyer_ui", "step_04_purchase_to_sale_chain_ui" ], "required_paraphrase_families": [ "canonical", "colloquial", "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", "question_id": "Q04", "node_id": "N02_account_41_snapshot", "node_role": "root_variant", "paraphrase_family": "colloquial", "title": "Historical account 41 anchor", "question": "Какие товары числятся на 41 счете на дату {{bindings.target_date_historical}}", "analysis_context": { "as_of_date": "2020-03-31", "source": "binding_target_date_historical" }, "expected_capability": "confirmed_inventory_on_hand_as_of_date", "expected_result_mode": "confirmed_balance" }, { "step_id": "step_02_selected_item_buyer_ui", "question_id": "Q24", "node_id": "N11_selected_item_buyer", "node_role": "critical_child", "paraphrase_family": "ui_selected_object", "title": "Buyer for historical selected item UI", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": кому был продан товар", "depends_on": [ "step_01_account_41_historical" ] }, { "step_id": "step_03_selected_item_buyer_canonical", "question_id": "Q16", "node_id": "N11_selected_item_buyer", "node_role": "critical_child", "paraphrase_family": "canonical", "title": "Buyer for historical selected item canonical", "question": "Кому был продан товар {{bindings.focus_item_historical}}", "depends_on": [ "step_01_account_41_historical" ] }, { "step_id": "step_04_purchase_to_sale_chain_ui", "question_id": "Q25", "node_id": "N12_purchase_to_sale_chain", "node_role": "critical_child", "paraphrase_family": "ui_selected_object", "title": "Purchase to sale document chain UI", "question": "По выбранному объекту \"{{bindings.focus_item_historical}}\": через какие документы прошел путь товара: закупка -> склад -> продажа", "depends_on": [ "step_01_account_41_historical", "step_02_selected_item_buyer_ui" ] }, { "step_id": "step_05_purchase_to_sale_chain_canonical", "question_id": "Q17", "node_id": "N12_purchase_to_sale_chain", "node_role": "critical_child", "paraphrase_family": "canonical", "title": "Purchase to sale document chain", "question": "Через какие документы прошел путь товара {{bindings.focus_item_historical}}: закупка -> склад -> продажа", "depends_on": [ "step_01_account_41_historical", "step_02_selected_item_buyer_ui" ] }, { "step_id": "step_06_supplier_to_buyer_overlap", "question_id": "Q18", "node_id": "N13_supplier_to_buyer_overlap", "node_role": "supporting_child", "paraphrase_family": "canonical", "title": "Supplier to buyer overlap", "question": "Есть ли документально подтвержденная цепочка: поставщик {{bindings.observed_supplier_candidate}} -> товар {{bindings.focus_item_historical}} -> покупатель {{bindings.observed_customer_candidate}}", "depends_on": [ "step_01_account_41_historical", "step_05_purchase_to_sale_chain_canonical" ] } ] } ] }, "agent_audit_expectations": { "direct_answer_first": true, "action_first_followup_required": true, "answer_layering_required": true, "compact_micro_action_answers_required": true, "business_utility_required": true, "state_continuity_required": true, "selected_object_memory_required": true, "focus_object_required": true, "answer_object_required": true, "pronoun_followup_resolution_required": true, "followup_action_resolution_required": true, "bundle_reuse_required": true, "temporal_honesty_required": true, "field_truth_required": true, "field_truth_checks": [ "supplier_vs_organization", "buyer_vs_organization" ], "forbidden_top_level_noise": [ "status headings", "what was considered headings", "row counts before the business answer", "trace-first narration", "numbered block headings", "exact contour jargon", "supplier is not materialized as a separate field" ], "required_answer_layers": [ "direct_answer", "evidence", "service_notes" ], "required_followup_micro_actions": [ "who", "when", "document_list", "source_document", "amount", "all_receipts", "buyer", "sale_documents", "sale_chain" ], "required_state_objects": [ "focus_object", "answer_object", "provenance_bundle" ], "reusable_answer_object_expectations": [ "current_item", "current_as_of_date", "answer_object", "current_provenance_trace", "current_sale_trace" ], "answer_object_fields": [ "supplier_if_known", "purchase_date_if_known", "purchase_doc_if_known", "purchase_amount_if_known", "provenance_docs", "buyer_if_known", "sale_date_if_known", "sale_doc_if_known", "sale_docs" ], "temporal_honesty_rule": [ "distinguish requested window from nearest available evidence", "do not merge out-of-window evidence into the direct answer silently" ] }, "acceptance_contract": { "acceptance_unit": "scenario_tree", "do_not_accept_if": [ "работает только root snapshot, но ломается critical selected-object edge", "работает только canonical wording, но ломается colloquial или ui_selected_object wording", "работает только quoted selected-object wording, но ломается короткий местоименный follow-up по активной позиции", "теряется date_scope на follow-up с `на эту дату` или `на ту дату`", "ответ меняет business object, например вместо item-level ответа отдаёт dump документов", "нарушается ordering semantics, например `старые закупки` идут не oldest-first", "the answer is trace-first instead of action-first on a selected-object follow-up", "the top block contains system scaffolding instead of the direct business answer", "the answer silently uses nearest out-of-window evidence without saying so", "supplier or buyer is surfaced through a mislabeled organization field" ], "required_green_for_acceptance": [ "root nodes", "critical edges on primary_user_paths", "canonical coverage on critical nodes", "colloquial coverage on critical nodes", "ui_selected_object coverage where UI supports object selection", "pronoun_followup coverage where the UX already established an active selected object" ], "required_defect_classes": [ "semantic_understanding_gap", "edge_carryover_gap", "followup_action_resolution_gap", "bundle_reuse_gap", "field_mapping_gap", "temporal_honesty_gap", "answer_shape_mismatch", "ordering_semantics_mismatch", "runtime_capability_gap", "business_utility_gap", "loop_coverage_gap" ], "minimum_score_rule": "accepted only if analyst score >= 80 and no unresolved P0 remains" }, "known_failure_patterns_to_watch": [ { "pattern_id": "F01_selected_object_colloquial_supplier", "symptom": "selected-object follow-up `кто это поставил нам` падает в clarification instead of provenance exact route", "defect_class": "semantic_understanding_gap" }, { "pattern_id": "F02_numeric_tail_account_poisoning", "symptom": "numeric fragments inside item names such as `600*3050*26` contaminate account/domain inference", "defect_class": "semantic_understanding_gap" }, { "pattern_id": "F03_date_carryover_loss", "symptom": "follow-up `на эту дату` loses the originating date and silently switches to current date", "defect_class": "edge_carryover_gap" }, { "pattern_id": "F04_answer_shape_downgrade", "symptom": "user asks for item-level stock aging but runtime returns raw purchase documents", "defect_class": "answer_shape_mismatch" }, { "pattern_id": "F05_oldest_first_violation", "symptom": "`старые закупки` are listed newest-first or in another non-business order", "defect_class": "ordering_semantics_mismatch" }, { "pattern_id": "F06_pronoun_item_documents_misroute", "symptom": "short follow-up like `покажи документы по этой позиции` drifts into `documents_by_counterparty` instead of selected-item purchase documents", "defect_class": "followup_action_resolution_gap" }, { "pattern_id": "F07_provenance_bundle_not_reused", "symptom": "supplier/date/document lookup was already resolved for the selected item but adjacent follow-up recomputes broadly or loses the reusable bundle", "defect_class": "bundle_reuse_gap" }, { "pattern_id": "F08_short_when_replays_full_trace", "symptom": "short follow-up such as `когда` replays the full provenance packet instead of returning the compact purchase date first", "defect_class": "bundle_reuse_gap" }, { "pattern_id": "F09_temporal_auto_broaden_not_honest", "symptom": "the answer quietly broadens from the requested date window to nearest available evidence without separating those two facts", "defect_class": "temporal_honesty_gap" }, { "pattern_id": "F10_supplier_field_truth_blur", "symptom": "the answer names a supplier but the surfaced business field is actually organization or another unlabeled technical field", "defect_class": "field_mapping_gap" }, { "pattern_id": "F11_trace_first_top_block_noise", "symptom": "the answer starts with system scaffolding, trace narration, or contour jargon instead of the direct business answer", "defect_class": "business_utility_gap" }, { "pattern_id": "F12_numbered_block_scaffolding", "symptom": "a narrow business follow-up opens with `Блок 1/2/3` scaffolding instead of a compact direct answer", "defect_class": "business_utility_gap" }, { "pattern_id": "F12b_selected_object_supplier_u_kogo_kupili_misroute", "symptom": "selected-object follow-up such as `у кого купили` or `у кого куплено` stays on the root stock snapshot instead of switching to selected-item provenance", "defect_class": "followup_action_resolution_gap" }, { "pattern_id": "F12c_root_named_month_prepositional_misparsed", "symptom": "root stock snapshot wording such as `что лежит у нас на складе в мае 2016` collapses to the full year boundary instead of the requested month window", "defect_class": "temporal_honesty_gap" }, { "pattern_id": "F12d_selected_object_supplier_gde_kupili_misroute", "symptom": "selected-object follow-up such as `где мы купили это` or `где куплено!!` stays on the root stock snapshot or drifts into generic documents instead of switching to selected-item provenance", "defect_class": "followup_action_resolution_gap" }, { "pattern_id": "F13_selected_item_sale_followup_misroute", "symptom": "selected-item follow-up such as `кому в итоге мы продали этот товар` drifts back into purchase provenance and answers about supplier instead of buyer", "defect_class": "followup_action_resolution_gap" }, { "pattern_id": "F14_root_snapshot_service_heavy_top", "symptom": "root stock snapshot opens with service scaffolding and counters instead of a concise business summary plus top positions", "defect_class": "business_utility_gap" } ], "legacy_references": [ "docs/orchestration/domain_inventory_stock_supplier_trace.md", "docs/orchestration/domain_inventory_stock_supplier_trace_pool.md", "docs/orchestration/domain_inventory_stock_supplier_trace_pack.json" ] }