АРЧ АП11 - Оркестрация: дожать агентный прогон по selected-object continuity и сохранить accepted
This commit is contained in:
@@ -25,16 +25,16 @@ This snapshot is based on:
|
||||
|
||||
Latest graph rebuild:
|
||||
|
||||
- `5251 nodes`
|
||||
- `11337 edges`
|
||||
- `136 communities`
|
||||
- `5261 nodes`
|
||||
- `11347 edges`
|
||||
- `134 communities`
|
||||
|
||||
Most relevant current god nodes for turnaround `11`:
|
||||
|
||||
1. `resolveAddressIntent()`
|
||||
2. `composeFactualReplyBody()`
|
||||
3. `ChannelRegistry`
|
||||
4. `CanonicalStore`
|
||||
2. `ChannelRegistry`
|
||||
3. `CanonicalStore`
|
||||
4. `composeFactualReplyBody()`
|
||||
5. `compactWhitespace()`
|
||||
|
||||
The relevant conclusion is not that every god node is part of turnaround `11`.
|
||||
@@ -42,7 +42,7 @@ The relevant conclusion is not that every god node is part of turnaround `11`.
|
||||
The relevant conclusion is:
|
||||
|
||||
- `resolveAddressIntent()` remains the main unresolved domain-intent concentration point;
|
||||
- `composeFactualReplyBody()` now carries the remaining answer-shaping concentration after packaging extraction;
|
||||
- `composeFactualReplyBody()` still carries answer-shaping pressure, but it is no longer a top-3 god node after the latest extractions;
|
||||
- `assistantService` still appears as a large coordinator-heavy community rather than a thin shell.
|
||||
|
||||
## What Is Already Real In Code
|
||||
@@ -126,7 +126,7 @@ This is enough to build targeted semantic packs that are not single-domain toy s
|
||||
|
||||
## Honest Phase Status
|
||||
|
||||
Estimated overall turnaround completion: `~88%`
|
||||
Estimated overall turnaround completion: `~90%`
|
||||
|
||||
### Phase 0. Shared Baseline
|
||||
|
||||
@@ -177,19 +177,21 @@ Remaining debt:
|
||||
|
||||
### Phase 4. Coverage / Evidence / Truth Gate Isolation
|
||||
|
||||
Status: `86%`
|
||||
Status: `89%`
|
||||
|
||||
Reason:
|
||||
|
||||
- explicit truth and coverage/evidence contracts exist;
|
||||
- answer policy reads those contracts rather than rebuilding verdicts blindly from raw rows.
|
||||
- reply-packaging mechanics are now explicitly split into `address_runtime/replyPackaging.ts` instead of staying fully in `composeStage.ts`.
|
||||
- named reply contracts and answer semantics presets now also live in `address_runtime/replyContracts.ts` instead of being rebuilt inline across major factual branches.
|
||||
- inventory answer construction now has an explicit owner in `address_runtime/inventoryReplyBuilders.ts` instead of staying inline inside `composeFactualReplyBody()`.
|
||||
|
||||
Remaining debt:
|
||||
|
||||
- `composeFactualReplyBody()` is still a major concentration point;
|
||||
- `composeFactualReplyBody()` is still a major concentration point, but its graph pressure is lower than in the previous snapshot;
|
||||
- humanized blocked/limited semantics are not yet fully separated from answer semantics across all paths;
|
||||
- `composeStage.ts` still remains too large even after packaging extraction.
|
||||
- `composeStage.ts` still remains too large even after packaging extraction and inventory-family extraction.
|
||||
|
||||
### Phase 5. AssistantService Extraction
|
||||
|
||||
@@ -247,6 +249,8 @@ Compared with the pre-turnaround baseline, the system is now materially better i
|
||||
- organization data-scope probing is no longer owned only by coordinator-local helper bodies;
|
||||
- debug payload assembly is now further isolated from top-level turn coordination;
|
||||
- reply formatting and reply-type classification now have an explicit owner outside `composeStage.ts`;
|
||||
- confirmed-balance and heuristic-candidate reply contracts now have explicit builders instead of repeated inline `semantics` objects in major compose branches;
|
||||
- inventory factual replies are now owned by a dedicated module rather than embedded directly in the central compose body;
|
||||
- architecture regressions can now be localized to route, transition, truth gate, coverage/evidence, boundary, or meta/memory layers.
|
||||
|
||||
## What Still Remains The Main Architectural Debt
|
||||
@@ -263,7 +267,7 @@ This means capability and contour growth still concentrate pressure there.
|
||||
|
||||
### 3. `composeFactualReplyBody()` is still too central
|
||||
|
||||
Truth contracts are now explicit, and reply packaging has started moving into its own owner, but final answer-shaping still retains too much architecture weight.
|
||||
Truth contracts are now explicit, and reply packaging, reply contracts, and the inventory answer family have all started moving into their own owners, but final answer-shaping still retains too much architecture weight.
|
||||
|
||||
This is the main remaining reason why user-facing humanization and limitation semantics are not completely isolated yet.
|
||||
|
||||
@@ -284,7 +288,7 @@ But not every business family has reached the same contract maturity.
|
||||
The next honest architecture slice should be:
|
||||
|
||||
1. continue reducing `assistantService.ts` to a thinner coordinator;
|
||||
2. continue isolating answer semantics further away from `composeFactualReply()` now that reply packaging has its own owner seam;
|
||||
2. continue isolating answer semantics further away from `composeFactualReplyBody()` now that reply packaging and reply contracts have their own owner seams;
|
||||
3. keep extending AGENT packs with mixed business + meta + interruption patterns instead of single-family smoke tests;
|
||||
4. keep using scenario acceptance as the main sign-off rather than unit-test green status alone.
|
||||
|
||||
|
||||
+189
@@ -0,0 +1,189 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase4_inventory_answer_shape_continuity",
|
||||
"domain": "inventory_answer_shape_and_continuity",
|
||||
"title": "AGENT replay for inventory clarification continuity and answer-shape cleanliness",
|
||||
"description": "Targeted AGENT replay for the recent compose/inventory fixes: company clarification, inventory root restore, selected-object provenance, purchase date/documents follow-ups, and protection against technical garbage in user-facing replies.",
|
||||
"bindings": {
|
||||
"target_date": "2021-03-31",
|
||||
"observed_organization": "ООО \\Альтернатива Плюс\\",
|
||||
"observed_warehouse": "Основной склад",
|
||||
"focus_item_current": "Столешница 600*3050*26 альмандин"
|
||||
},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_inventory_root_requires_company",
|
||||
"title": "Inventory root asks to choose the company instead of hallucinating scope",
|
||||
"question": "какие остатки на складе на март 2021",
|
||||
"semantic_tags": [
|
||||
"inventory_root",
|
||||
"company_clarification"
|
||||
],
|
||||
"required_answer_patterns_any": [
|
||||
"(?i)компан|организац",
|
||||
"(?i)уточни|уточните|выбери|выберите|по какой"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)snapshot_items",
|
||||
"(?i)bank_operations?_by_",
|
||||
"(?i)technical_debug_payload|debug_payload_json|technical_breakdown_json",
|
||||
"(?i)route[_ ]summary|trace_id|capability[_ ]id|intent",
|
||||
"(?i)selected_object|focus_object|answer_object"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_choose_company",
|
||||
"title": "User chooses the company inside the same session",
|
||||
"question": "давай по Альтернативе Плюс",
|
||||
"semantic_tags": [
|
||||
"meta_scope",
|
||||
"company_selection"
|
||||
],
|
||||
"required_answer_patterns_any": [
|
||||
"(?i)альтернатива плюс|ООО \\\\Альтернатива Плюс\\\\|работаем по"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)tool_gate_reason|living_router_reason|hard_meta_mode"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_inventory_root_after_company",
|
||||
"title": "Inventory root continues after the company choice",
|
||||
"question": "тогда покажи остатки на март 2021",
|
||||
"allowed_reply_types": [
|
||||
"factual"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2021-03-31",
|
||||
"period_from": "2021-03-01",
|
||||
"period_to": "2021-03-31"
|
||||
},
|
||||
"required_direct_answer_patterns_any": [
|
||||
"31\\.03\\.2021",
|
||||
"(?i)на складе",
|
||||
"(?i)столешница 600\\*3050\\*26 альмандин"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)snapshot_items",
|
||||
"(?i)bank_operations?_by_",
|
||||
"(?i)technical_debug_payload|debug_payload_json|technical_breakdown_json",
|
||||
"(?i)route[_ ]summary|trace_id|capability[_ ]id|intent"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_selected_item_supplier",
|
||||
"title": "Selected-object supplier follow-up stays business-first",
|
||||
"question": "По выбранному объекту \"Столешница 600*3050*26 альмандин\": кто нам это поставил?",
|
||||
"allowed_reply_types": [
|
||||
"factual"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_purchase_provenance_for_item"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)столешница 600\\*3050\\*26 альмандин",
|
||||
"(?i)поставщик|поставил|куплен",
|
||||
"(?i)союз|торговый дом"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^на 31\\.03\\.2021 на складе",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)bank_operations?_by_",
|
||||
"(?i)selected_object|focus_object|answer_object",
|
||||
"(?i)technical_debug_payload|debug_payload_json|technical_breakdown_json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_selected_item_purchase_date",
|
||||
"title": "Natural follow-up keeps the same selected item",
|
||||
"question": "а по этой позиции когда была закупка?",
|
||||
"allowed_reply_types": [
|
||||
"factual"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_purchase_provenance_for_item"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)столешница 600\\*3050\\*26 альмандин|по этой позиции",
|
||||
"(?i)дата|закупк|поступ"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^на 31\\.03\\.2021 на складе",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)bank_operations?_by_",
|
||||
"(?i)selected_object|focus_object|answer_object",
|
||||
"(?i)technical_debug_payload|debug_payload_json|technical_breakdown_json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_selected_item_documents",
|
||||
"title": "Purchase documents stay in the same contour without technical dump",
|
||||
"question": "покажи документы по этой позиции",
|
||||
"allowed_reply_types": [
|
||||
"factual"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_purchase_documents_for_item"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)столешница 600\\*3050\\*26 альмандин|по этой позиции",
|
||||
"(?i)документ"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)snapshot_items",
|
||||
"(?i)bank_operations?_by_",
|
||||
"(?i)selected_object|focus_object|answer_object",
|
||||
"(?i)technical_debug_payload|debug_payload_json|technical_breakdown_json",
|
||||
"(?i)route[_ ]summary|trace_id|capability[_ ]id|intent"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_07_inventory_same_date_restore",
|
||||
"title": "Same-date restore returns to the March 2021 root snapshot",
|
||||
"question": "покажи еще раз остатки на эту же дату",
|
||||
"allowed_reply_types": [
|
||||
"factual"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2021-03-31",
|
||||
"period_from": "2021-03-01",
|
||||
"period_to": "2021-03-31"
|
||||
},
|
||||
"required_direct_answer_patterns_any": [
|
||||
"31\\.03\\.2021",
|
||||
"(?i)на складе"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)transition_not_supported_by_capability",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)bank_operations?_by_",
|
||||
"(?i)technical_debug_payload|debug_payload_json|technical_breakdown_json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_08_memory_recap_business_only",
|
||||
"title": "Memory recap stays business-first after the provenance chain",
|
||||
"question": "а что мы уже выяснили по этой позиции?",
|
||||
"semantic_tags": [
|
||||
"meta_memory"
|
||||
],
|
||||
"required_answer_patterns_any": [
|
||||
"(?i)столешница 600\\*3050\\*26 альмандин|по этой позиции",
|
||||
"(?i)поставщик|закупк|документ"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)snapshot_items",
|
||||
"(?i)bank_operations?_by_",
|
||||
"(?i)selected_object|focus_object|answer_object",
|
||||
"(?i)technical_debug_payload|debug_payload_json|technical_breakdown_json",
|
||||
"(?i)route[_ ]summary|trace_id|capability[_ ]id|intent"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user