Завершить phase99-105 schema primitive closure
This commit is contained in:
@@ -29,7 +29,7 @@ Current reporting baseline:
|
||||
- Open-World Business Overview implementation breadth: `~99%` through Slice 25.
|
||||
- Open-World Semantic Control Gate: accepted critical subset after EHMO/W5/W7 hardening; fat GUI pack review remains a broad human-pressure gate.
|
||||
- Route-Candidate-Driven Enablement Loop: `100%`, now regression-gated by phase91-phase98 canaries.
|
||||
- Open-World Schema/Primitive Discovery: `38%`, financial-counterparty slice accepted live at `4/4` and limit-honesty/business-language gate accepted live at `6/6`; next schema/primitive candidate should come from real live/manual replay evidence.
|
||||
- Open-World Schema/Primitive Discovery: `95%`, phases97-105 accepted live and saved as user-runnable AGENT autoruns; latest closure replay `phase105_mixed_schema_primitive_closure_live3` accepted `13/13`. Remaining gate is manual GUI/fat-pack review before final closure or a narrow phase106 repair if that review reveals a new semantic defect.
|
||||
|
||||
## Archived Execution Snapshot (2026-04-17)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ This note is the short source of truth for current module wording after the Post
|
||||
|
||||
It exists to prevent stale percentage drift in planning discussions.
|
||||
|
||||
If another document says `78%`, `87%`, `92%`, or `85%` for a module that is now closed, read that value as a historical snapshot unless this note explicitly repeats it as current.
|
||||
If another document says `78%`, `84%`, `87%`, `92%`, or `85%` for a module that is now closed or has since advanced, read that value as a historical snapshot unless this note explicitly repeats it as current.
|
||||
|
||||
## 2026-05-05 Overlay - EHMO Manual QA Gate
|
||||
|
||||
@@ -87,11 +87,18 @@ Fresh validation cut:
|
||||
- Completed autonomy slice inside that loop: `Inventory Reserve/Liquidation Quality Reviewed Route`: `inventory_reserve_liquidation_quality` now promotes to reviewed inventory quality-event evidence from posted write-off, receipt-adjustment, stocktaking, and revaluation documents; phase96 live replay is accepted.
|
||||
- Completed broader schema/primitive discovery slice: `Financial Counterparty Flow Hints`: bank-document money-flow recipes expose operation/purpose/comment fields, ranked value-flow buckets carry `financial_flow_hint`, explicit `СБЕРБАНК` wording is not swallowed by supplier/customer tails, and bank-like leaders are bounded away from ordinary supplier/customer overclaim; phase97 live replay is accepted.
|
||||
- Completed broader schema/primitive discovery support slice: `Limit Honesty And Business Language Gate`: compact business-overview replies sanitize route/proxy/MCP-style wording, keep row-limit disclosure relevant to the asked contour, and preserve debt/VAT/bank/inventory/supplier canaries; phase98 live replay is accepted.
|
||||
- Current live canary: `phase98_limit_honesty_business_language_live3` accepted `6/6`.
|
||||
- Current accepted autorun: `AGENT | Phase 98 limit honesty and business-language replay` (`gen-ag05122315-f1e27c`).
|
||||
- Completed broader schema/primitive discovery support slice: `Large-Query Budget And Continuation Policy`: explicit-year `business_overview` now receives the chunked monthly recovery budget already used by value-flow routes, yearly money-flow coverage can recover from broad-row caps without fake limit refusal, and profit follow-ups answer direct-first that cash-flow net is not clean profit while still surfacing checked accounting close evidence when present; phase99 live replay is accepted.
|
||||
- Completed broader schema/primitive discovery support slice: `Large-Query Continuation UX`: all-time broad `business_overview` row-cap disclosure now becomes a safe year/quarter continuation path, while narrowed explicit-year follow-ups keep company scope instead of falling into placeholder counterparty wording; phase100 live replay is accepted.
|
||||
- Completed broader schema/primitive discovery support slice: `Inventory Root Scope Without Warehouse Clarification`: broad stock-on-hand root wording now has replay proof that the assistant asks only for company when organization scope is ambiguous, resumes the all-warehouse company snapshot after the company choice, and does not invent warehouse/item/category/material requirements for root inventory questions; phase101 live replay is accepted.
|
||||
- Completed broader schema/primitive discovery support slice: `Debt Mirror Clean-Scope Polarity`: fresh bare organization-name turns can bind scope from a live data-scope probe, confirmed payables/receivables keep the selected organization, short mirror follow-ups override stale/open-items LLM expansion, and mirrored 76.09 financial-security rows are disclosed as offset evidence rather than counted as clean debt in both directions; phase102 live replay is accepted.
|
||||
- Completed broader schema/primitive discovery support slice: `Financial Role/Purpose Arbitration`: grounded exact `bank_operations_*` answers now win over generic value-flow discovery when bank-like counterparties need role/purpose classification; compact bank answers summarize incoming/outgoing rows and do not overclaim ordinary customer revenue or supplier dependency without operation/purpose/contract evidence; phase103 live replay is accepted.
|
||||
- Completed broader schema/primitive discovery support slice: `Generic Role-Tail Anchor Hygiene`: broad role wording such as `не обычный клиент или поставщик` no longer leaks `или поставщик` into counterparty filters, selected objects, or discovery predecompose input, while explicit supplier-payment wording still keeps real counterparties and routes to `supplier_payouts_profile`; phase104 live replay is accepted.
|
||||
- Completed broader schema/primitive discovery closure slice: `Mixed Schema/Primitive Closure Replay`: phase105 validates the combined current module surface across inventory root scope, historical inventory carryover, role-tail hygiene, bank role/purpose, supplier payout, bidirectional SVK value-flow, clean debt polarity, VAT tax-period continuity, and cash-flow/profit boundary; phase105 live replay is accepted.
|
||||
- Current live canary: `phase105_mixed_schema_primitive_closure_live3` accepted `13/13`.
|
||||
- Current accepted autorun: `AGENT | Phase 105 mixed schema/primitive closure replay` (`gen-ag05131312-2d0445`).
|
||||
- Implementation breadth: `~99% (Open-World Bounded Autonomy Breadth through Slice 25)`.
|
||||
- Active broader autonomy module: `Open-World Schema/Primitive Discovery`, with `Financial Counterparty Flow Hints` and `Limit Honesty And Business Language Gate` accepted and saved.
|
||||
- Next active slice: select the next unfamiliar 1C ask from live/manual replay evidence, then continue broader schema/primitive discovery while using phase91-phase98 as regression canaries.
|
||||
- Active broader autonomy module: `Open-World Schema/Primitive Discovery`, with phases97-105 accepted and saved; the module is now at manual-review readiness rather than another blind coding slice.
|
||||
- Next active slice: run/review the phase105 GUI autorun or the user's fat manual pack; if it stays clean, close this module, otherwise convert the next observed failure into a narrow phase106 repair/replay.
|
||||
- Operating-layer progress: `~99% (Agentic Semantic Development Loop, accepted dogfood loop + autorun hygiene; manual GUI confirmation still required)`.
|
||||
|
||||
## Reporting Rule
|
||||
@@ -104,7 +111,7 @@ Use these labels when reporting progress:
|
||||
- `Прогресс модуля: 99% (Agentic Semantic Development Loop, accepted dogfood loop + autorun hygiene; manual GUI confirmation still required)` when discussing the current development-loop operating layer.
|
||||
- `Прогресс модуля: 100% (Open-World Route Candidate Promotion, declared phase90 slice accepted)` when discussing the route-candidate handoff slice itself.
|
||||
- `Прогресс модуля: 100% (Route-Candidate-Driven Enablement Loop, final reviewed proof-family route accepted; use as regression gate)` when discussing the current candidate-driven enablement loop.
|
||||
- `Прогресс модуля: 38% (Open-World Schema/Primitive Discovery, phase97 financial-counterparty slice and phase98 business-language gate accepted; next schema/primitive candidate pending)` when discussing the current broader schema/primitive discovery module.
|
||||
- `Прогресс модуля: 95% (Open-World Schema/Primitive Discovery, phases97-105 accepted; phase105 GUI/manual checkpoint pending before final closure)` when discussing the current broader schema/primitive discovery module.
|
||||
- `Open-World Business Overview implementation breadth: ~99%, Semantic Control Gate critical subset accepted, fat GUI pack still pending` when discussing only the already wired Slice 25 breadth.
|
||||
- `Прогресс модуля: X% (Open-World Bounded Autonomy Breadth, active slice: <name>)` for later breadth work after the Semantic Control Gate is accepted.
|
||||
|
||||
@@ -170,12 +177,18 @@ For current planning, read:
|
||||
9. `27 - proof_family_enablement_candidates_2026-05-10.md`
|
||||
10. `26 - route_candidate_driven_enablement_loop_2026-05-10.md`
|
||||
11. `25 - open_world_route_candidate_promotion_2026-05-10.md`
|
||||
12. `24 - agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md`
|
||||
13. `23 - current_execution_spine_and_semantic_control_gate_2026-05-05.md`
|
||||
14. `22 - open_world_bounded_autonomy_breadth_2026-05-01.md`
|
||||
15. `20 - planner_autonomy_consolidation_2026-05-01.md`
|
||||
16. `19 - inventory_stock_open_world_breadth_proof_2026-05-01.md`
|
||||
17. `17 - post_f_semantic_integrity_hardening_2026-04-23.md`
|
||||
18. `16 - data_need_graph_and_open_world_mcp_plan_2026-04-22.md`
|
||||
12. `34 - large_query_budget_continuation_2026-05-13.md`
|
||||
13. `35 - large_query_continuation_ux_2026-05-13.md`
|
||||
14. `36 - inventory_root_scope_no_warehouse_clarification_2026-05-13.md`
|
||||
15. `37 - debt_mirror_clean_scope_polarity_2026-05-13.md`
|
||||
16. `24 - agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md`
|
||||
17. `23 - current_execution_spine_and_semantic_control_gate_2026-05-05.md`
|
||||
18. `22 - open_world_bounded_autonomy_breadth_2026-05-01.md`
|
||||
19. `20 - planner_autonomy_consolidation_2026-05-01.md`
|
||||
20. `19 - inventory_stock_open_world_breadth_proof_2026-05-01.md`
|
||||
21. `40 - mixed_schema_primitive_closure_replay_2026-05-13.md`
|
||||
22. `39 - generic_role_tail_anchor_hygiene_2026-05-13.md`
|
||||
23. `17 - post_f_semantic_integrity_hardening_2026-04-23.md`
|
||||
24. `16 - data_need_graph_and_open_world_mcp_plan_2026-04-22.md`
|
||||
|
||||
Documents `01` through `15` remain valuable, but mostly as the historical architecture trail.
|
||||
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
# 34 - Large Query Budget And Continuation Policy (2026-05-13)
|
||||
|
||||
## Purpose
|
||||
|
||||
This slice hardens explicit-year large business questions inside the broader `Open-World Schema/Primitive Discovery` module.
|
||||
|
||||
The triggering user concern was not only answer wording. It was the runtime behavior where a broad yearly business question could hit the MCP row cap and then answer as if coverage was materially limited, even though the value-flow runtime already had a safe monthly recovery mechanism.
|
||||
|
||||
## Runtime Change
|
||||
|
||||
The planner now grants the existing chunked coverage budget to explicit-year `business_overview` routes, not only to direct value-flow routes.
|
||||
|
||||
Key boundary:
|
||||
|
||||
- this is not a global unlimited query mode;
|
||||
- this does not remove evidence gates;
|
||||
- this does not turn all-time broad analysis into a full accounting audit;
|
||||
- it enables bounded monthly recovery for explicit-year business overview money-flow evidence when the broad money probe reaches the row cap.
|
||||
|
||||
The pilot executor now also records successful business-overview monthly recovery in reason codes:
|
||||
|
||||
- `pilot_business_overview_incoming_monthly_period_chunking_recovered_coverage`
|
||||
- `pilot_business_overview_outgoing_monthly_period_chunking_recovered_coverage`
|
||||
|
||||
The answer layer was tightened so profit follow-ups answer direct-first:
|
||||
|
||||
- money-flow net is not clean profit;
|
||||
- if accounting close evidence exists, the answer may add the checked 90/91/99 result;
|
||||
- user-facing text avoids route jargon such as "бухгалтерский маршрут" and account-specific margin phrasing like `90.01`.
|
||||
|
||||
## Validation
|
||||
|
||||
Local validation:
|
||||
|
||||
- `npm.cmd test -- assistantMcpDiscoveryPlanner.test.ts assistantMcpDiscoveryPilotExecutor.test.ts assistantMcpDiscoveryAnswerAdapter.test.ts assistantMcpDiscoveryResponseCandidate.test.ts`
|
||||
- result: `141 passed, 1 skipped`
|
||||
- `npm.cmd run build`
|
||||
- result: passed
|
||||
|
||||
Live semantic replay:
|
||||
|
||||
- spec: `docs/orchestration/address_truth_harness_phase99_large_query_budget_continuation.json`
|
||||
- accepted run: `artifacts/domain_runs/phase99_large_query_budget_continuation_live2`
|
||||
- result: `4/4`, `final_status=accepted`
|
||||
|
||||
Saved user-runnable AGENT autorun:
|
||||
|
||||
- title: `AGENT | Phase 99 large-query budget and continuation policy replay`
|
||||
- generation id: `gen-ag05131009-f08174`
|
||||
- validation status: `accepted_live_replay`
|
||||
|
||||
## Acceptance Meaning
|
||||
|
||||
Accepted for this slice:
|
||||
|
||||
- explicit-year company business overview can recover yearly money-flow coverage through monthly probes when the broad money query hits the row cap;
|
||||
- yearly overview answers remain direct-first and preserve bank/counterparty role boundaries;
|
||||
- profit follow-up after money overview does not equate cash-flow net to clean profit;
|
||||
- if accounting-result evidence exists, it is framed as checked 1C period-close evidence, not external audit or legal reporting.
|
||||
|
||||
Still not accepted as universal:
|
||||
|
||||
- arbitrary all-time large 1C scans;
|
||||
- automatic long-running user confirmation UX;
|
||||
- complete accounting audit, statutory P&L, or legal reporting;
|
||||
- unlimited primitive exploration outside reviewed route candidates.
|
||||
|
||||
## Current Status
|
||||
|
||||
`Open-World Schema/Primitive Discovery` moves to `52%` after this slice.
|
||||
|
||||
Why not higher:
|
||||
|
||||
- phase97, phase98, and phase99 prove important runtime breadth/support behavior;
|
||||
- but broader dynamic schema/primitive discovery still needs more unfamiliar 1C asks, more primitive descriptors where live evidence demands them, and continuation UX for genuinely large all-time questions.
|
||||
@@ -0,0 +1,65 @@
|
||||
# 35 - Large Query Continuation UX (2026-05-13)
|
||||
|
||||
## Purpose
|
||||
|
||||
This slice hardens the user-facing behavior after genuinely broad all-time business questions.
|
||||
|
||||
The previous phase99 slice made explicit-year `business_overview` safe by giving it the existing monthly recovery budget. Phase100 covers the adjacent UX seam: when an all-time or very wide question still reaches row caps, the assistant must not pretend that the checked slice is a complete accounting answer, and it must not leave the user at a dead end.
|
||||
|
||||
## Runtime Change
|
||||
|
||||
The compact business-overview answer now turns a row-limit disclosure into an actionable continuation policy:
|
||||
|
||||
- state that the current result is an expanded checked slice, not a guaranteed full accounting turnover;
|
||||
- tell the user to choose a concrete year or quarter for a safe follow-up;
|
||||
- avoid promising unlimited scans or unreviewed full exports;
|
||||
- keep the answer business-readable and free of MCP/route/probe jargon.
|
||||
|
||||
The bidirectional value-flow compact answer also now respects organization scope when no counterparty is selected. If the turn is scoped to `ООО Альтернатива Плюс` and the derived value-flow has no explicit counterparty, the answer says `по компании ООО Альтернатива Плюс`, not `по контрагенту запрошенному контрагенту`.
|
||||
|
||||
## Validation
|
||||
|
||||
Local validation:
|
||||
|
||||
- `npm.cmd test -- assistantMcpDiscoveryResponseCandidate.test.ts`
|
||||
- result: `28 passed`
|
||||
- `npm.cmd run build`
|
||||
- result: passed
|
||||
|
||||
Live semantic replay:
|
||||
|
||||
- spec: `docs/orchestration/address_truth_harness_phase100_large_query_continuation_ux.json`
|
||||
- first run: `artifacts/domain_runs/phase100_large_query_continuation_ux_live1`, partial because the initial spec over-forbade a correct negative profit-boundary phrase and exposed the company-vs-counterparty wording defect in step 2;
|
||||
- accepted run: `artifacts/domain_runs/phase100_large_query_continuation_ux_live2`
|
||||
- result: `3/3`, `final_status=accepted`
|
||||
|
||||
Saved user-runnable AGENT autorun:
|
||||
|
||||
- title: `AGENT | Phase 100 large-query continuation UX replay`
|
||||
- generation id: `gen-ag05131028-234e5e`
|
||||
- validation status: `accepted_live_replay`
|
||||
|
||||
## Acceptance Meaning
|
||||
|
||||
Accepted for this slice:
|
||||
|
||||
- all-time company business overview can answer from the checked slice while honestly warning about row caps;
|
||||
- the answer includes a safe continuation path through a concrete year or quarter instead of a technical dead end;
|
||||
- explicit-year follow-up after the all-time answer recovers the 2020 money-flow numbers and labels the scope as company scope;
|
||||
- profit follow-up still separates operating cash-flow net from clean profit/accounting financial result.
|
||||
|
||||
Still not accepted as universal:
|
||||
|
||||
- automatic long-running confirmation UX;
|
||||
- arbitrary all-time full accounting export;
|
||||
- unlimited primitive exploration outside reviewed route candidates;
|
||||
- legal or external-audit profit claims.
|
||||
|
||||
## Current Status
|
||||
|
||||
`Open-World Schema/Primitive Discovery` moves to `60%` after this slice.
|
||||
|
||||
Why not higher:
|
||||
|
||||
- phase97 through phase100 now cover financial counterparty hints, language/limit hygiene, explicit-year large-query recovery, and all-time continuation UX;
|
||||
- but broader dynamic schema/primitive discovery still needs more unfamiliar 1C asks, more primitive descriptors where live evidence proves real gaps, and more continuation behavior for non-money domains.
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
# 36 - Inventory Root Scope Without Warehouse Clarification (2026-05-13)
|
||||
|
||||
## Purpose
|
||||
|
||||
This slice hardens a real manual-GUI signal from `assistant-stage1-hyh1A1WR3j`.
|
||||
|
||||
The problematic seam was not a missing inventory route. The route already knew how to answer stock-on-hand snapshots. The semantic risk was narrower:
|
||||
|
||||
- user asks a broad root question such as `что там на складе по остаткам?`;
|
||||
- assistant correctly asks for company because several organizations exist;
|
||||
- user selects `АЛЬТЕРНАТИВА`;
|
||||
- assistant must resume the broad inventory snapshot for the selected company instead of inventing a new requirement for a concrete warehouse, item, category, or material.
|
||||
|
||||
For root inventory, `склад` in user language means the stock contour, not necessarily a warehouse filter. A warehouse filter is valid only when the user names or asks for a specific warehouse.
|
||||
|
||||
## Runtime Meaning
|
||||
|
||||
No new code patch was required in this slice.
|
||||
|
||||
The live replay proved the current runtime already behaves correctly after the latest scope/continuation work:
|
||||
|
||||
- ambiguous broad inventory root asks only for organization;
|
||||
- bare company selection resumes the pending inventory intent;
|
||||
- extracted filters contain organization and date, but not `warehouse`, `item`, or `category`;
|
||||
- historical capability follow-up stays human and does not ask for a warehouse;
|
||||
- month-only follow-ups keep the inventory contour and the selected organization.
|
||||
|
||||
This is still important because it converts a manual concern into a saved regression gate rather than leaving it as a vague GUI memory.
|
||||
|
||||
## Validation
|
||||
|
||||
Live semantic replay:
|
||||
|
||||
- spec: `docs/orchestration/address_truth_harness_phase101_inventory_root_scope_no_warehouse_clarification.json`
|
||||
- accepted run: `artifacts/domain_runs/phase101_inventory_root_scope_no_warehouse_clarification_live1`
|
||||
- result: `7/7`, `final_status=accepted`
|
||||
|
||||
Critical step evidence:
|
||||
|
||||
- `step_03_inventory_root_requires_company_only`: asks for organization only.
|
||||
- `step_04_company_choice_resumes_inventory_without_warehouse`: answers `На 13.05.2026 на складе подтверждено 11 позиций...`, with `organization=ООО Альтернатива Плюс` and no warehouse/item/category filters.
|
||||
- `step_06_inventory_june_2017_after_capability`: answers the June 2017 snapshot with organization/date carryover and no warehouse filter.
|
||||
- `step_07_inventory_march_2016_stays_root`: answers the March 2016 snapshot with organization/date carryover and no warehouse filter.
|
||||
|
||||
Saved user-runnable AGENT autorun:
|
||||
|
||||
- title: `AGENT | Phase 101 inventory root scope without warehouse clarification replay`
|
||||
- generation id: `gen-ag05131044-cbe2ff`
|
||||
- validation status: `accepted_live_replay`
|
||||
|
||||
## Acceptance Meaning
|
||||
|
||||
Accepted for this slice:
|
||||
|
||||
- broad inventory root wording may ask for company when organization scope is ambiguous;
|
||||
- after company choice, the assistant answers across available company stock evidence instead of asking for a warehouse;
|
||||
- historical inventory follow-ups keep company/date carryover;
|
||||
- root inventory does not promote natural Russian `на складе` into a literal warehouse anchor by itself.
|
||||
|
||||
Still not accepted as universal:
|
||||
|
||||
- arbitrary warehouse-specific analytics without a named warehouse;
|
||||
- inventory turnover/FIFO/liquidity beyond already reviewed proxy contours;
|
||||
- item-level provenance unless an item or selected object is present;
|
||||
- external audit-grade stock valuation outside confirmed 1C evidence.
|
||||
|
||||
## Current Status
|
||||
|
||||
`Open-World Schema/Primitive Discovery` moves to `68%` after this slice.
|
||||
|
||||
Why not higher:
|
||||
|
||||
- this was a control/semantic-proof slice rather than new primitive expansion;
|
||||
- the live replay covers the manual warehouse-clarification seam, but broader unfamiliar inventory asks can still reveal new primitive gaps;
|
||||
- the next slice should continue from real manual/live evidence, especially where a broad business noun could be misread as a required technical axis.
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
# 37 - Debt Mirror Clean-Scope Polarity (2026-05-13)
|
||||
|
||||
## Purpose
|
||||
|
||||
This slice hardens a real debt-polarity question from manual replay `assistant-stage1-87gHJCwTI9`.
|
||||
|
||||
The dangerous symptom was semantic, not just routing noise:
|
||||
|
||||
- the same `Комитет государственных услуг` amount could appear in both "мы должны" and "нам должны";
|
||||
- mirrored financial-security rows on account `76.09` could be mistaken for clean payable or receivable debt;
|
||||
- a short follow-up such as `а мы кому?` after receivables could be expanded by LLM predecompose into an open-items route instead of the clean payables route;
|
||||
- a fresh-session bare company name such as `Альтернатива Плюс` could fall into generic living chat instead of becoming the selected organization scope.
|
||||
|
||||
The target behavior is direct and conservative: clean debt answers may disclose mirrored/offset evidence, but must not count it as real debt in both directions.
|
||||
|
||||
## Runtime Changes
|
||||
|
||||
Implemented:
|
||||
|
||||
- `assistantTransitionPolicy` now lets a detected debt-role swap override an LLM open-items expansion for short mirror follow-ups.
|
||||
- `assistantLivingChatRuntimeAdapter` now probes live data scope for short bare organization-name turns when no organization is active yet.
|
||||
- If the probe resolves a known organization, living chat emits the deterministic organization-selection reply and stores the selected/active organization before subsequent address turns.
|
||||
- The debug contract now records `living_chat_bare_scope_probe_attempted` and `living_chat_bare_scope_probe_matched_organization`.
|
||||
|
||||
This keeps the fix bounded:
|
||||
|
||||
- normal data/meta/capability/safety questions are not reinterpreted as organization selection;
|
||||
- unmatched bare text still falls back to the previous living-chat path;
|
||||
- clean payables/receivables still run through reviewed exact debt recipes.
|
||||
|
||||
## Validation
|
||||
|
||||
Live semantic replay:
|
||||
|
||||
- spec: `docs/orchestration/address_truth_harness_phase102_debt_mirror_clean_scope_polarity.json`
|
||||
- accepted run: `artifacts/domain_runs/phase102_debt_mirror_clean_scope_polarity_live3`
|
||||
- result: `6/6`, `final_status=accepted`
|
||||
|
||||
Critical step evidence:
|
||||
|
||||
- `step_01_choose_company_scope`: bare `Альтернатива Плюс` selects `ООО Альтернатива Плюс` through deterministic data-scope selection, not LLM chat.
|
||||
- `step_02_clean_payables_today`: clean payables keep `organization=ООО Альтернатива Плюс`.
|
||||
- `step_03_committee_payable_is_not_clean_debt`: payable debt to the Committee is confirmed as `0,00`.
|
||||
- `step_04_committee_receivable_is_not_clean_debt`: confirmed receivable debt from the Committee is not found.
|
||||
- `step_05_clean_receivables_today`: clean receivables keep the selected organization.
|
||||
- `step_06_payables_mirror_followup_keeps_clean_scope`: `а мы кому?` resolves to `payables_confirmed_as_of_date`, not open-items, and keeps the organization scope.
|
||||
|
||||
Targeted verification:
|
||||
|
||||
- `npm.cmd test -- assistantLivingChatRuntimeAdapter.test.ts assistantLivingChatAttemptInputBuilder.test.ts assistantLivingChatAttemptRuntimeInputBuilder.test.ts assistantTransitionPolicy.test.ts assistantAddressFollowupContext.test.ts`
|
||||
- `npm.cmd run build`
|
||||
|
||||
Saved user-runnable AGENT autorun:
|
||||
|
||||
- title: `AGENT | Phase 102 debt mirror clean-scope polarity replay`
|
||||
- generation id: `gen-ag05131121-8c41ab`
|
||||
- validation status: `accepted_live_replay`
|
||||
|
||||
## Acceptance Meaning
|
||||
|
||||
Accepted for this slice:
|
||||
|
||||
- fresh bare organization labels can bind organization scope from live known organizations;
|
||||
- clean debt root questions keep selected organization scope;
|
||||
- short receivables-to-payables mirror follow-ups stay in the confirmed clean-debt route;
|
||||
- mirrored financial-security evidence may be disclosed separately, but is not counted as clean debt in both directions.
|
||||
|
||||
Still not accepted as universal:
|
||||
|
||||
- arbitrary legal/commercial classification of every account `76.*` without reviewed semantics;
|
||||
- external audit-grade netting rules outside confirmed 1C evidence;
|
||||
- full contractual delinquency analysis beyond the reviewed due-date aging route;
|
||||
- organization/counterparty names that cannot be matched by the live data-scope probe.
|
||||
|
||||
## Current Status
|
||||
|
||||
`Open-World Schema/Primitive Discovery` moves to `72%` after this slice.
|
||||
|
||||
Why not higher:
|
||||
|
||||
- this slice fixes an important polarity/scope integrity seam, but does not expand the primitive catalog to arbitrary 1C facts;
|
||||
- account-role semantics beyond the reviewed debt recipes still need evidence-driven expansion;
|
||||
- the next slice should again be selected from real manual/live replay evidence where user business wording exposes an unsupported schema primitive or wrong semantic arbitration.
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
# 38 - Financial Role/Purpose Arbitration (2026-05-13)
|
||||
|
||||
## Purpose
|
||||
|
||||
This slice hardens a real schema/semantic seam around bank-like counterparties.
|
||||
|
||||
The dangerous symptom was not that `СБЕРБАНК` could be found. It was that the same evidence could be misread through an ordinary counterparty lens:
|
||||
|
||||
- incoming bank rows could be overclaimed as customer revenue;
|
||||
- outgoing bank rows could be overclaimed as supplier payments;
|
||||
- generic `value_flow` discovery could replace the more precise exact `bank_operations_*` route;
|
||||
- long bank operation lists could bury the business answer in raw rows.
|
||||
|
||||
The target behavior is conservative: bank-like counterparties are first treated as financial-operation evidence, and ordinary customer/supplier/revenue meaning must be proven from operation kind, payment purpose, contract, and checked rows rather than inferred from the name or movement direction alone.
|
||||
|
||||
## Runtime Changes
|
||||
|
||||
Implemented:
|
||||
|
||||
- `assistantMcpDiscoveryResponsePolicy` now keeps confirmed exact `bank_operations_by_counterparty` / `bank_operations_by_contract` replies over generic value-flow discovery candidates.
|
||||
- The guard is intentionally narrow: it requires an exact bank operation intent, matching bank recipe, address-lane source, and grounded/matched/exact runtime evidence.
|
||||
- Bank operation answer composition now includes a compact direction summary over incoming/outgoing/unknown rows.
|
||||
- Bank role boundary wording now says directly when a bank is not proven as an ordinary customer, supplier, or client revenue source.
|
||||
- Bank operation drilldown answers now show a bounded first-page sample instead of dumping every row into direct business answers.
|
||||
- Evidence selection prefers the direction implied by the user question when showing the short 1C basis line.
|
||||
|
||||
This keeps the fix bounded:
|
||||
|
||||
- ordinary customer/supplier value-flow routes are unchanged;
|
||||
- generic value-flow candidates can still replace stale or unsupported replies outside exact bank-operation evidence;
|
||||
- the assistant does not classify bank flows as credit, deposit, commission, or revenue without operation/purpose/contract evidence.
|
||||
|
||||
## Validation
|
||||
|
||||
Live semantic replay:
|
||||
|
||||
- spec: `docs/orchestration/address_truth_harness_phase103_financial_role_purpose_arbitration.json`
|
||||
- accepted run: `artifacts/domain_runs/phase103_financial_role_purpose_arbitration_live3`
|
||||
- result: `6/6`, `final_status=accepted`
|
||||
|
||||
Critical step evidence:
|
||||
|
||||
- `step_01_choose_company_scope`: fresh `Альтернатива Плюс` binds `ООО Альтернатива Плюс`.
|
||||
- `step_02_sberbank_role_purpose_summary`: exact bank route wins over generic value-flow and answers the role/purpose question.
|
||||
- `step_03_sberbank_incoming_customer_boundary`: incoming bank evidence is not overclaimed as customer revenue.
|
||||
- `step_04_sberbank_outgoing_supplier_boundary`: outgoing bank evidence is not overclaimed as ordinary supplier dependency.
|
||||
- `step_05_business_overview_excludes_bank_role_overclaim`: broad company overview keeps bank role boundaries in top-flow discussion.
|
||||
- `step_06_svk_value_flow_canary_after_bank_context`: normal non-bank counterparty value-flow canary remains healthy after the bank context.
|
||||
|
||||
Targeted verification:
|
||||
|
||||
- `npm.cmd test -- assistantMcpDiscoveryResponsePolicy.test.ts`
|
||||
- `npm.cmd test -- addressQueryRuntimeM23.test.ts assistantMcpDiscoveryResponsePolicy.test.ts`
|
||||
- `npm.cmd run build`
|
||||
|
||||
Saved user-runnable AGENT autorun:
|
||||
|
||||
- title: `AGENT | Phase 103 financial role and purpose arbitration replay`
|
||||
- generation id: `gen-ag05131200-0ed59a`
|
||||
- validation status: `accepted_live_replay`
|
||||
|
||||
## Acceptance Meaning
|
||||
|
||||
Accepted for this slice:
|
||||
|
||||
- exact bank-operation evidence is preferred over generic value-flow when the exact route is grounded;
|
||||
- bank-like counterparties are not classified as ordinary customers, suppliers, or revenue sources without purpose/operation/contract evidence;
|
||||
- direct bank boundary answers stay compact enough for business review;
|
||||
- the fix preserves normal counterparty value-flow behavior.
|
||||
|
||||
Still not accepted as universal:
|
||||
|
||||
- full bank-product accounting classification across every bank and account family;
|
||||
- external audit-grade loan/deposit/commission categorization without reviewed 1C document semantics;
|
||||
- arbitrary financial-instrument semantics outside the currently materialized operation/purpose/contract fields;
|
||||
- replacement of all value-flow logic with bank-specific heuristics.
|
||||
|
||||
## Current Status
|
||||
|
||||
`Open-World Schema/Primitive Discovery` moves to `78%` after this slice.
|
||||
|
||||
Why not higher:
|
||||
|
||||
- the slice closes a high-value role/purpose arbitration gap, but it is still one family of financial-operation semantics;
|
||||
- broader schema/primitive discovery still needs additional real evidence around unfamiliar 1C asks;
|
||||
- the next slice should come from another live/manual replay seam where the assistant can reach evidence but still lacks the right primitive, role, or answer shape.
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
# 39 - Generic Role-Tail Anchor Hygiene (2026-05-13)
|
||||
|
||||
## Purpose
|
||||
|
||||
This slice hardens a subtle semantic-integrity seam found after the financial role/purpose work.
|
||||
|
||||
The user may describe ordinary business roles inside a broad company question, for example `не обычный клиент или поставщик`. Those words are business semantics, not entity anchors. The dangerous failure mode was that the tail `или поставщик` could become a fake `counterparty` in exact filters, selected objects, and MCP discovery input.
|
||||
|
||||
The target behavior is narrow:
|
||||
|
||||
- role words such as `клиент`, `поставщик`, or `или поставщик` must not become counterparty anchors by themselves;
|
||||
- real explicit role-prefixed counterparties such as `по поставщику Группа СВК` must still keep the actual counterparty;
|
||||
- broad business overview can discuss customer/supplier/bank roles without poisoning later bank or value-flow drilldowns.
|
||||
|
||||
## Runtime Changes
|
||||
|
||||
Implemented:
|
||||
|
||||
- `addressFilterExtractor` now treats standalone generic role tails as low-quality counterparty anchors.
|
||||
- `address_runtime/decomposeStage` clears inherited low-quality role-tail anchors from follow-up state before recipe selection.
|
||||
- `assistantMcpDiscoveryTurnInputAdapter` rejects generic role tails from LLM predecompose before they become discovery entity candidates.
|
||||
- `addressIntentResolver` now recognizes `сколько мы ему заплатили` / `заплатили` supplier-payment wording as `supplier_payouts_profile`, preventing a supplier payment question from first falling into `counterparty_population_and_roles`.
|
||||
|
||||
The fix is bounded:
|
||||
|
||||
- `по поставщику Альфа` and `по поставщику Группа СВК` remain valid explicit counterparty anchors;
|
||||
- supplier count / role split questions such as `скока поставщиков` remain in counterparty population;
|
||||
- MCP discovery can still recover unsupported value-flow asks, but no longer receives a fake role-tail entity from the accepted replay seam.
|
||||
|
||||
## Validation
|
||||
|
||||
Live semantic replay:
|
||||
|
||||
- spec: `docs/orchestration/address_truth_harness_phase104_generic_role_tail_anchor_hygiene.json`
|
||||
- accepted run: `artifacts/domain_runs/phase104_generic_role_tail_anchor_hygiene_live2`
|
||||
- result: `4/4`, `final_status=accepted`
|
||||
|
||||
Critical step evidence:
|
||||
|
||||
- `step_01_choose_company_scope`: fresh `Альтернатива Плюс` binds `ООО Альтернатива Плюс`.
|
||||
- `step_02_business_overview_role_tail_not_counterparty`: broad company overview has no `counterparty` filter while still explaining bank/customer/supplier boundaries.
|
||||
- `step_03_sberbank_role_after_role_tail_overview`: SBERBANK bank-role drilldown remains grounded after the role-tail overview.
|
||||
- `step_04_real_supplier_prefix_still_keeps_counterparty`: real supplier-prefixed `Группа СВК` stays a counterparty and routes through `supplier_payouts_profile` instead of population.
|
||||
|
||||
Targeted verification:
|
||||
|
||||
- `npm.cmd test -- addressQueryRuntimeM23.test.ts assistantMcpDiscoveryTurnInputAdapter.test.ts`
|
||||
- `npm.cmd run build`
|
||||
|
||||
Saved user-runnable AGENT autorun:
|
||||
|
||||
- title: `AGENT | Phase 104 generic role-tail anchor hygiene replay`
|
||||
- generation id: `gen-ag05131226-630ddf`
|
||||
- validation status: `accepted_live_replay`
|
||||
|
||||
## Acceptance Meaning
|
||||
|
||||
Accepted for this slice:
|
||||
|
||||
- generic role-tail anchors are filtered across exact extraction, follow-up merge, and discovery predecompose input;
|
||||
- bank role/purpose context does not contaminate later normal counterparty value-flow questions;
|
||||
- explicit supplier-payment wording is routed as supplier payout, not as a population/role count question;
|
||||
- the accepted replay checks both user-facing answer quality and machine-level forbidden-filter hygiene.
|
||||
|
||||
Still not accepted as universal:
|
||||
|
||||
- every possible Russian business-role paraphrase outside the covered role-tail family;
|
||||
- full natural-language role taxonomy;
|
||||
- automatic proof that every role word in every sentence is entity-free;
|
||||
- broad arbitrary 1C schema discovery outside the currently accepted phase97-phase104 seams.
|
||||
|
||||
## Current Status
|
||||
|
||||
`Open-World Schema/Primitive Discovery` moves to `84%` after this slice.
|
||||
|
||||
Why not higher:
|
||||
|
||||
- the slice closes a real semantic poisoning seam, but it is still a targeted role-tail/intent-arbitration hardening cut;
|
||||
- the module still needs at least one broader mixed replay pass over unfamiliar asks before a `95%+` claim is honest;
|
||||
- future slices should continue coming from live/manual replay evidence where the assistant can reach evidence but still risks wrong primitive, stale state, wrong role, or noisy answer shape.
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
# 40 - Mixed Schema/Primitive Closure Replay (2026-05-13)
|
||||
|
||||
## Status
|
||||
|
||||
Accepted.
|
||||
|
||||
This slice closes the current `Open-World Schema/Primitive Discovery` pass to manual-review readiness. It is intentionally not a new proof-family expansion: it is a mixed semantic closure replay across the routes and integrity seams already hardened in phases 97-104.
|
||||
|
||||
Validated replay:
|
||||
|
||||
- spec: `docs/orchestration/address_truth_harness_phase105_mixed_schema_primitive_closure.json`
|
||||
- accepted run: `artifacts/domain_runs/phase105_mixed_schema_primitive_closure_live3`
|
||||
- result: `13/13`, `final_status=accepted`
|
||||
- saved autorun: `AGENT | Phase 105 mixed schema/primitive closure replay`
|
||||
- generation id: `gen-ag05131312-2d0445`
|
||||
|
||||
## What It Proves
|
||||
|
||||
- Broad inventory root wording such as `что там на складе по остаткам` answers from the resolved organization scope without inventing a warehouse, item, category, or material clarification.
|
||||
- Historical inventory follow-ups keep organization and temporal continuity.
|
||||
- Business-overview wording with generic role tails does not leak `или поставщик` or similar role text into counterparty scope.
|
||||
- Bank-like counterparties such as `СБЕРБАНК` are classified from bank-operation evidence and are not overclaimed as ordinary clients or suppliers.
|
||||
- Explicit supplier-payment wording for `Группа СВК` routes to supplier payout evidence.
|
||||
- Bidirectional counterparty value-flow keeps the full multi-token subject `Группа СВК` through raw-scope discovery and answers incoming, outgoing, and net money flow directly.
|
||||
- Broad debt-polarity questions switch cleanly between payables and receivables without inheriting stale counterparty scope.
|
||||
- VAT tax-period questions survive after inventory, role, value-flow, and debt pivots and keep the quarter tax-period basis explicit.
|
||||
- Earnings/cash-flow wording routes to business overview and does not equate operational cash net with clean accounting profit.
|
||||
|
||||
## Code-Level Corrections From The Replay
|
||||
|
||||
- `address_runtime/decomposeStage.ts` suppresses stale counterparty carryover for broad debt-polarity questions such as `кому мы должны` and `а нам кто должен`, while preserving explicit referential counterparty follow-ups such as `по нему`.
|
||||
- `addressFilterExtractor.ts` treats generic inventory wording like `по остаткам` as a low-quality warehouse pseudo-anchor.
|
||||
- `assistantMcpDiscoveryTurnInputAdapter.ts` preserves multi-token raw scoped counterparties in discovery input, so `по Группа СВК за 2020` does not degrade to `Группа`.
|
||||
|
||||
## Verification
|
||||
|
||||
- `npm.cmd test -- addressQueryRuntimeM23.test.ts assistantMcpDiscoveryTurnInputAdapter.test.ts --testTimeout=45000` passed: `537 passed`, `7 skipped`.
|
||||
- `npm.cmd run build` passed.
|
||||
- `phase105_mixed_schema_primitive_closure_live3` passed `13/13`.
|
||||
|
||||
## Remaining Risk
|
||||
|
||||
The module is now ready for a fat manual GUI check rather than more blind implementation. Remaining risk is not that phases 97-105 are absent; the risk is that a human mixed run may still expose a new unfamiliar 1C phrasing, another entity alias edge, or an answer-shape expectation outside the current replay.
|
||||
@@ -51,6 +51,13 @@ This package answers the next question:
|
||||
31. [31 - inventory_reserve_liquidation_quality_reviewed_route_2026-05-12.md](./31%20-%20inventory_reserve_liquidation_quality_reviewed_route_2026-05-12.md)
|
||||
32. [32 - financial_counterparty_flow_hints_2026-05-13.md](./32%20-%20financial_counterparty_flow_hints_2026-05-13.md)
|
||||
33. [33 - limit_honesty_business_language_2026-05-13.md](./33%20-%20limit_honesty_business_language_2026-05-13.md)
|
||||
34. [34 - large_query_budget_continuation_2026-05-13.md](./34%20-%20large_query_budget_continuation_2026-05-13.md)
|
||||
35. [35 - large_query_continuation_ux_2026-05-13.md](./35%20-%20large_query_continuation_ux_2026-05-13.md)
|
||||
36. [36 - inventory_root_scope_no_warehouse_clarification_2026-05-13.md](./36%20-%20inventory_root_scope_no_warehouse_clarification_2026-05-13.md)
|
||||
37. [37 - debt_mirror_clean_scope_polarity_2026-05-13.md](./37%20-%20debt_mirror_clean_scope_polarity_2026-05-13.md)
|
||||
38. [38 - financial_role_purpose_arbitration_2026-05-13.md](./38%20-%20financial_role_purpose_arbitration_2026-05-13.md)
|
||||
39. [39 - generic_role_tail_anchor_hygiene_2026-05-13.md](./39%20-%20generic_role_tail_anchor_hygiene_2026-05-13.md)
|
||||
40. [40 - mixed_schema_primitive_closure_replay_2026-05-13.md](./40%20-%20mixed_schema_primitive_closure_replay_2026-05-13.md)
|
||||
|
||||
## Current Status Snapshot (2026-05-13)
|
||||
|
||||
@@ -112,6 +119,20 @@ Status canon for planning:
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 97 financial counterparty flow hints replay` (`gen-ag05122250-4451a8`).
|
||||
- The second broader schema/primitive discovery support slice is now accepted: `limit honesty and business-language gate` sanitizes route/proxy/MCP-style answer wording, keeps row-limit disclosure relevant to the asked business contour, and preserves debt/VAT/bank/inventory/supplier canaries; `phase98_limit_honesty_business_language_live3` passed `6/6`.
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 98 limit honesty and business-language replay` (`gen-ag05122315-f1e27c`).
|
||||
- The third broader schema/primitive discovery support slice is now accepted: `large-query budget and continuation policy` grants explicit-year `business_overview` the existing monthly recovery budget, avoids artificial row-limit refusal when yearly money-flow coverage can be chunked safely, and fixes the profit follow-up answer shape so cash-flow net is not equated with clean profit; `phase99_large_query_budget_continuation_live2` passed `4/4`.
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 99 large-query budget and continuation policy replay` (`gen-ag05131009-f08174`).
|
||||
- The fourth broader schema/primitive discovery support slice is now accepted: `large-query continuation UX` turns all-time row-cap disclosure into a safe year/quarter continuation path, keeps broad answers honest about checked-slice coverage, and fixes organization-scoped bidirectional value-flow wording after continuation; `phase100_large_query_continuation_ux_live2` passed `3/3`.
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 100 large-query continuation UX replay` (`gen-ag05131028-234e5e`).
|
||||
- The fifth broader schema/primitive discovery support slice is now accepted: `inventory root scope without warehouse clarification` proves a broad stock-on-hand root query resumes after company clarification as an all-warehouse company snapshot instead of asking for a warehouse, item, category, or material; `phase101_inventory_root_scope_no_warehouse_clarification_live1` passed `7/7`.
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 101 inventory root scope without warehouse clarification replay` (`gen-ag05131044-cbe2ff`).
|
||||
- The sixth broader schema/primitive discovery support slice is now accepted: `debt mirror clean-scope polarity` proves a bare company-name turn in a fresh session can bind organization scope from live data-scope probe, confirmed payables/receivables keep the selected organization, short mirror follow-ups such as `а мы кому?` stay in the clean debt route instead of drifting into open-items, and mirrored 76.09 financial-security rows are disclosed as offset/mirror evidence rather than counted as debt in both directions; `phase102_debt_mirror_clean_scope_polarity_live3` passed `6/6`.
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 102 debt mirror clean-scope polarity replay` (`gen-ag05131121-8c41ab`).
|
||||
- The seventh broader schema/primitive discovery support slice is now accepted: `financial role/purpose arbitration` keeps grounded exact `bank_operations_*` evidence over generic value-flow candidates, summarizes incoming/outgoing bank rows compactly, and prevents bank-like counterparties from being classified as ordinary customer revenue or supplier dependency without operation/purpose/contract evidence; `phase103_financial_role_purpose_arbitration_live3` passed `6/6`.
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 103 financial role and purpose arbitration replay` (`gen-ag05131200-0ed59a`).
|
||||
- The eighth broader schema/primitive discovery support slice is now accepted: `generic role-tail anchor hygiene` prevents wording such as `или поставщик` from becoming a fake counterparty in exact filters, selected objects, or discovery predecompose input, while preserving real role-prefixed counterparties such as `по поставщику Группа СВК`; `phase104_generic_role_tail_anchor_hygiene_live2` passed `4/4`.
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 104 generic role-tail anchor hygiene replay` (`gen-ag05131226-630ddf`).
|
||||
- The ninth broader schema/primitive discovery closure slice is now accepted: `mixed schema/primitive closure replay` validates inventory scope, historical inventory carryover, role-tail hygiene, bank role/purpose, supplier payout wording, bidirectional SVK value-flow, clean payables/receivables polarity, VAT tax-period continuity, and cash-flow-vs-profit answer shape together; `phase105_mixed_schema_primitive_closure_live3` passed `13/13`.
|
||||
- The accepted user-runnable autorun for that slice is `AGENT | Phase 105 mixed schema/primitive closure replay` (`gen-ag05131312-2d0445`).
|
||||
- The phase94 replay spec was repaired to real UTF-8 Russian before autorun persistence, so the saved user-runnable pack does not repeat the earlier GUI mojibake/card-text regression.
|
||||
- The short source of truth for status wording is [21 - current_status_canon_2026-05-01.md](./21%20-%20current_status_canon_2026-05-01.md).
|
||||
- The current execution spine after EHMO is [23 - current_execution_spine_and_semantic_control_gate_2026-05-05.md](./23%20-%20current_execution_spine_and_semantic_control_gate_2026-05-05.md).
|
||||
@@ -125,6 +146,13 @@ Status canon for planning:
|
||||
- The fourth/final reviewed proof-family route slice is [31 - inventory_reserve_liquidation_quality_reviewed_route_2026-05-12.md](./31%20-%20inventory_reserve_liquidation_quality_reviewed_route_2026-05-12.md).
|
||||
- The first broader schema/primitive discovery slice is [32 - financial_counterparty_flow_hints_2026-05-13.md](./32%20-%20financial_counterparty_flow_hints_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
- The second broader schema/primitive discovery support slice is [33 - limit_honesty_business_language_2026-05-13.md](./33%20-%20limit_honesty_business_language_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
- The third broader schema/primitive discovery support slice is [34 - large_query_budget_continuation_2026-05-13.md](./34%20-%20large_query_budget_continuation_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
- The fourth broader schema/primitive discovery support slice is [35 - large_query_continuation_ux_2026-05-13.md](./35%20-%20large_query_continuation_ux_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
- The fifth broader schema/primitive discovery support slice is [36 - inventory_root_scope_no_warehouse_clarification_2026-05-13.md](./36%20-%20inventory_root_scope_no_warehouse_clarification_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
- The sixth broader schema/primitive discovery support slice is [37 - debt_mirror_clean_scope_polarity_2026-05-13.md](./37%20-%20debt_mirror_clean_scope_polarity_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
- The seventh broader schema/primitive discovery support slice is [38 - financial_role_purpose_arbitration_2026-05-13.md](./38%20-%20financial_role_purpose_arbitration_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
- The eighth broader schema/primitive discovery support slice is [39 - generic_role_tail_anchor_hygiene_2026-05-13.md](./39%20-%20generic_role_tail_anchor_hygiene_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
- The mixed schema/primitive closure replay is [40 - mixed_schema_primitive_closure_replay_2026-05-13.md](./40%20-%20mixed_schema_primitive_closure_replay_2026-05-13.md), now accepted live and saved as a user-runnable AGENT autorun.
|
||||
|
||||
It now documents a turnaround that is already operational in code, already materially past the acute regression breakpoint, and already moved through bounded MCP autonomy, Post-F hardening, inventory breadth proof, and the declared Planner Autonomy slice:
|
||||
|
||||
@@ -187,7 +215,7 @@ Current honest status:
|
||||
- exit-from-danger-zone readiness: `~97%`
|
||||
- pre-multidomain readiness: `~90%`
|
||||
- bounded-autonomy foundation readiness: `~89%`
|
||||
- open-world bounded-autonomy readiness: `~87%`
|
||||
- legacy open-world bounded-autonomy parent-readiness snapshot: `~87%` before the later route-candidate/schema-primitive closure; use the active module line below for the current `95%` schema/primitive discovery status
|
||||
- active Open-World Bounded Autonomy Breadth implementation breadth: `~99%`, with business-overview evidence fusion, the reviewed `business_overview` catalog/data-need/planner route-fabric slice, the fresh multi-probe runtime bridge, the explicit-period VAT/tax fact-family bridge, the explicit-period debt-position bridge, the explicit-date inventory-position bridge, the open-settlement quality bridge accepted by live semantic replay, selected-item profitability bridged by local semantic/runtime regression tests, contract-date debt age bridged locally, debt staleness-risk proxy bridged locally, debt due-date boundary arbitration bridged locally, inventory reserve/liquidation boundary arbitration bridged locally, supplier/procurement-quality boundary arbitration bridged locally, supplier concentration proxy bridged locally, document/account-section activity profile bridged locally, counterparty population/roles and contract usage profiles bridged locally, yearly operating-flow proxy bridged locally, earnings/best-year wording arbitration bridged locally, profit/margin wording boundary arbitration bridged locally, analyst synthesis added to business-overview answer drafting, company-period trading margin proxy bridged locally, inventory sales-to-stock proxy bridged locally, inventory staleness-risk proxy bridged locally, gap-specific answer shaping bridged locally, missing proof families recorded as runtime evidence ledger, exact accounting profit/margin promoted into a reviewed 90/91/99 route by phase93, debt due-date aging promoted into a reviewed payment-term/open-balance route by phase94, vendor/procurement quality promoted into reviewed procurement-concentration evidence by phase95, inventory reserve/write-off/liquidation quality promoted into reviewed inventory quality-event evidence by phase96, and bank-like financial counterparty role/purpose hints accepted by phase97
|
||||
- active Open-World Bounded Autonomy Breadth accepted-module progress: `~99%`, because the EHMO-derived `Open-World Semantic Control Gate` critical subset accepts live at `21/21` after W5/W7 hardening; full closure is still held back for the fat manual GUI pack and remaining answer-shape residual review
|
||||
- Post-F semantic integrity module progress: `~99%` operationally closed, with remaining risk now treated as next-slice discovery rather than an open blocker inside the closed slice
|
||||
@@ -195,7 +223,8 @@ Current honest status:
|
||||
- Planner Autonomy Consolidation progress: `100%` for the declared module, with catalog-fabric, value-flow arbitration, lifecycle bounded inference, broad-evaluation bridge, inventory catalog templates, inventory runtime-boundary honesty, exact inventory recipe bridging, unambiguous metadata-surface lane inference, catalog chain-template scoring, structured chain-match contract exposure, runtime/debug propagation, subject-aware bidirectional comparison arbitration, structured catalog-alignment verdicts, representative alignment regression guard, catalog-alignment reason-code telemetry, explicit `alignment_status` propagation, truth-harness/acceptance-matrix surfacing, soft divergence warning, `catalog_alignment_ok` acceptance invariant, step-level expected catalog-alignment assertions, phase66 and phase32 spec alignment expectations, AGENT source-catalog surfacing, generated phase83 mixed planner-brain replay spec, checked-source user-facing error sanitation, surface-grounded catalog promotion, and guarded live phase83 acceptance validated. Broader unfamiliar 1C asks are now next-module breadth work rather than an open blocker inside this declared slice
|
||||
- Open-World Route Candidate Promotion progress: `100%` for the declared phase90 slice, with structured `route_candidate` runtime contract, artifact propagation, live semantic replay accepted at `5/5`, and accepted AGENT autorun persistence; broader autonomous route enablement remains the next active slice
|
||||
- Route-Candidate-Driven Enablement Loop progress: `100%`, with deterministic repair-target grouping, Lead Codex handoff surfacing, local tooling tests, live phase91 canary acceptance, phase92 proof-family candidates accepted/saved as a user-runnable AGENT autorun, `accounting_profit_margin` promoted into reviewed 90/91/99 execution by phase93 live replay, `debt_due_date_aging_quality` promoted into reviewed payment-term/open-balance execution by phase94 live replay, `vendor_risk_procurement_quality` promoted into reviewed procurement-concentration evidence by phase95 live replay, and `inventory_reserve_liquidation_quality` promoted into reviewed inventory quality-event evidence by phase96 live replay; the declared route-candidate-driven enablement loop is now closed and should be used as a regression gate for the next broader autonomy slice
|
||||
- Open-World Schema/Primitive Discovery progress: `38%`, with `financial counterparty flow hints` accepted live at `4/4` and `limit honesty/business language` accepted live at `6/6`; bank-document money-flow recipes expose operation/purpose/comment fields, ranked value-flow buckets carry `financial_flow_hint`, Sberbank-like leaders are bounded away from name-only supplier/customer overclaim, route/proxy/MCP-style answer wording is sanitized, and the next slice should be selected from real unfamiliar 1C asks rather than synthetic domain wish lists.
|
||||
- Open-World Schema/Primitive Discovery progress: `95%`, with phases97-105 accepted live and saved as user-runnable AGENT autoruns; the latest closure replay `phase105_mixed_schema_primitive_closure_live3` passed `13/13` across inventory scope, historical inventory carryover, business overview role-tail hygiene, bank role/purpose, supplier payout wording, bidirectional SVK value-flow, clean payables/receivables polarity, VAT tax-period continuity, and cash-flow-vs-profit answer shape.
|
||||
- Current manual checkpoint for this module: run `AGENT | Phase 105 mixed schema/primitive closure replay` (`gen-ag05131312-2d0445`) from GUI autoruns before moving the module from `95%` to final closure.
|
||||
- graph snapshot after latest rebuild: see `graphify-out/GRAPH_REPORT.md`
|
||||
- current regression-gate breakpoint:
|
||||
- the validated hot paths are no longer structurally broken;
|
||||
@@ -288,6 +317,11 @@ Latest live proof now includes:
|
||||
- inventory reserve/liquidation quality reviewed route accepted locally/live: answer/runtime/candidate tests passed `84/84` with `1` skipped, pilot-executor tests passed `34/34`, build passed; direct MCP query for `address_inventory_quality_events_for_organization_v1` returned `fetched_rows=0`, `matched_rows=0`, `error=null`; `phase96_inventory_reserve_liquidation_quality_rerun` accepted `2/2`; `inventory_reserve_liquidation_quality` now derives reviewed evidence from posted write-off, receipt-adjustment, stocktaking, and revaluation documents, removes the proof family from `missing_proof_families` when this reviewed route executes, anchors the organization in the direct answer, and can promote `inventory_reserve_boundary` route candidates to `ready_for_reviewed_execution`; the accepted autorun is `AGENT | Phase 96 inventory reserve/liquidation quality-events` (`gen-ag05122057-c9786e`).
|
||||
- financial counterparty flow hints accepted locally/live: targeted bank-flow/intent/turn-input/answer tests passed `554/554` with `7` skipped, build passed, graphify rebuilt to `6483` nodes, `14382` edges, `143` communities; `phase97_financial_counterparty_flow_hints_live4` accepted `4/4`, proving explicit `СБЕРБАНК` wording, bank-operation purpose/direction disclosure, incoming-bank no-overclaim, business-overview bank boundaries, and `Группа СВК` net-flow canary continuity; the accepted autorun is `AGENT | Phase 97 financial counterparty flow hints replay` (`gen-ag05122250-4451a8`).
|
||||
- limit honesty and business-language gate accepted locally/live: response-candidate/answer-adapter/pilot-executor/M23 tests passed `519/519` with `1` skipped, build passed, graphify rebuilt to `6484` nodes, `14385` edges, `142` communities; `phase98_limit_honesty_business_language_live3` accepted `6/6`, proving debt due-date boundary, short follow-up directness, VAT debug hygiene, top incoming bank boundary, inventory reserve boundary language, and supplier dependency language together; the accepted autorun is `AGENT | Phase 98 limit honesty and business-language replay` (`gen-ag05122315-f1e27c`).
|
||||
- large-query budget/continuation policy accepted locally/live: targeted planner/pilot/answer/candidate tests passed `141/141` with `1` skipped, build passed; `phase99_large_query_budget_continuation_live2` accepted `4/4`, proving explicit-year business overview can recover money-flow coverage through monthly probes, cash-flow net is not treated as clean profit, bank-like incoming leaders stay bounded, and supplier-dependency answers remain concentration-only unless stronger evidence exists; the accepted autorun is `AGENT | Phase 99 large-query budget and continuation policy replay` (`gen-ag05131009-f08174`).
|
||||
- large-query continuation UX accepted locally/live: response-candidate tests passed `28/28`, build passed; `phase100_large_query_continuation_ux_live2` accepted `3/3`, proving all-time row-cap disclosure becomes a safe year/quarter continuation path, the 2020 follow-up recovers checked incoming/outgoing/net numbers under company scope, and profit follow-up remains cash-flow-vs-profit honest; the accepted autorun is `AGENT | Phase 100 large-query continuation UX replay` (`gen-ag05131028-234e5e`).
|
||||
- inventory root scope without warehouse clarification accepted live: `phase101_inventory_root_scope_no_warehouse_clarification_live1` accepted `7/7`, proving the manual `assistant-stage1-hyh1A1WR3j` stock-root seam now asks only for company when organization scope is ambiguous, resumes the root stock snapshot after `АЛЬТЕРНАТИВА`, preserves organization/date carryover for June 2017 and March 2016, and does not invent warehouse/item/category/material clarification requirements; the accepted autorun is `AGENT | Phase 101 inventory root scope without warehouse clarification replay` (`gen-ag05131044-cbe2ff`).
|
||||
|
||||
- debt mirror clean-scope polarity accepted locally/live: targeted living-chat/transition/follow-up tests passed `95/95` with `1` skipped, build passed; `phase102_debt_mirror_clean_scope_polarity_live3` accepted `6/6`, proving a fresh bare company-name turn binds `ООО Альтернатива Плюс` through data-scope probe, clean payables/receivables keep organization scope, Committee 76.09 mirror rows are disclosed as offset evidence rather than double-counted debt, and short `а мы кому?` follow-up stays in `payables_confirmed_as_of_date` instead of drifting into open-items; the accepted autorun is `AGENT | Phase 102 debt mirror clean-scope polarity replay` (`gen-ag05131121-8c41ab`).
|
||||
|
||||
Current architectural reading:
|
||||
|
||||
@@ -319,6 +353,18 @@ For the detailed audit, current percentages, and remaining debt, read:
|
||||
- [26 - route_candidate_driven_enablement_loop_2026-05-10.md](./26%20-%20route_candidate_driven_enablement_loop_2026-05-10.md)
|
||||
- [27 - proof_family_enablement_candidates_2026-05-10.md](./27%20-%20proof_family_enablement_candidates_2026-05-10.md)
|
||||
- [28 - accounting_profit_margin_reviewed_route_2026-05-10.md](./28%20-%20accounting_profit_margin_reviewed_route_2026-05-10.md)
|
||||
- [29 - debt_due_date_aging_reviewed_route_2026-05-10.md](./29%20-%20debt_due_date_aging_reviewed_route_2026-05-10.md)
|
||||
- [30 - vendor_procurement_quality_reviewed_route_2026-05-12.md](./30%20-%20vendor_procurement_quality_reviewed_route_2026-05-12.md)
|
||||
- [31 - inventory_reserve_liquidation_quality_reviewed_route_2026-05-12.md](./31%20-%20inventory_reserve_liquidation_quality_reviewed_route_2026-05-12.md)
|
||||
- [32 - financial_counterparty_flow_hints_2026-05-13.md](./32%20-%20financial_counterparty_flow_hints_2026-05-13.md)
|
||||
- [33 - limit_honesty_business_language_2026-05-13.md](./33%20-%20limit_honesty_business_language_2026-05-13.md)
|
||||
- [34 - large_query_budget_continuation_2026-05-13.md](./34%20-%20large_query_budget_continuation_2026-05-13.md)
|
||||
- [35 - large_query_continuation_ux_2026-05-13.md](./35%20-%20large_query_continuation_ux_2026-05-13.md)
|
||||
- [36 - inventory_root_scope_no_warehouse_clarification_2026-05-13.md](./36%20-%20inventory_root_scope_no_warehouse_clarification_2026-05-13.md)
|
||||
- [37 - debt_mirror_clean_scope_polarity_2026-05-13.md](./37%20-%20debt_mirror_clean_scope_polarity_2026-05-13.md)
|
||||
- [38 - financial_role_purpose_arbitration_2026-05-13.md](./38%20-%20financial_role_purpose_arbitration_2026-05-13.md)
|
||||
- [39 - generic_role_tail_anchor_hygiene_2026-05-13.md](./39%20-%20generic_role_tail_anchor_hygiene_2026-05-13.md)
|
||||
- [40 - mixed_schema_primitive_closure_replay_2026-05-13.md](./40%20-%20mixed_schema_primitive_closure_replay_2026-05-13.md)
|
||||
|
||||
## Architectural Objects Of Planning
|
||||
|
||||
@@ -370,6 +416,13 @@ Read in this order:
|
||||
32. `31 - inventory_reserve_liquidation_quality_reviewed_route_2026-05-12.md`
|
||||
33. `32 - financial_counterparty_flow_hints_2026-05-13.md`
|
||||
34. `33 - limit_honesty_business_language_2026-05-13.md`
|
||||
35. `34 - large_query_budget_continuation_2026-05-13.md`
|
||||
36. `35 - large_query_continuation_ux_2026-05-13.md`
|
||||
37. `36 - inventory_root_scope_no_warehouse_clarification_2026-05-13.md`
|
||||
38. `37 - debt_mirror_clean_scope_polarity_2026-05-13.md`
|
||||
39. `38 - financial_role_purpose_arbitration_2026-05-13.md`
|
||||
40. `39 - generic_role_tail_anchor_hygiene_2026-05-13.md`
|
||||
41. `40 - mixed_schema_primitive_closure_replay_2026-05-13.md`
|
||||
|
||||
## Planning Rules
|
||||
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase100_large_query_continuation_ux",
|
||||
"domain": "address_phase100_large_query_continuation_ux",
|
||||
"title": "Phase 100 large-query continuation UX replay",
|
||||
"description": "Focused semantic replay for all-time or very broad business overview questions: the assistant should answer from checked evidence, disclose row-limit coverage honestly, offer a safe period-narrowing continuation path, and then recover the explicit-year follow-up through chunked evidence without leaking technical mechanics.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_all_time_overview_limit_becomes_continuation_path",
|
||||
"title": "All-time overview gives checked partial answer plus safe continuation path",
|
||||
"question": "Дай общий бизнес-обзор ООО Альтернатива Плюс за весь доступный период: входящие, исходящие, нетто, лучший год. Если срез слишком широкий, не выдумывай полный итог, а скажи как безопасно дособрать.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива",
|
||||
"(?i)входящ|поступлен",
|
||||
"(?i)исходящ|списан|платеж",
|
||||
"(?i)нетто|денежн",
|
||||
"(?i)год|период",
|
||||
"(?i)лимит строк|проверенн.*срез|не гарантия полного|не полный",
|
||||
"(?i)конкретн.*год|год или квартал|дозапрос|собрать.*част"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"large_query_continuation",
|
||||
"limit_honesty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_user_narrows_to_2020_and_gets_recovered_year",
|
||||
"title": "Explicit-year continuation recovers yearly money evidence",
|
||||
"question": "Ок, тогда дособери конкретно 2020: входящие, исходящие и расчетное денежное нетто.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)входящ|поступлен",
|
||||
"(?i)исходящ|списан|платеж",
|
||||
"(?i)нетто|денежн",
|
||||
"(?i)47\\s*628\\s*853|47,?6",
|
||||
"(?i)43\\s*763\\s*351|43,?7|43,?8"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)уп[её]р.*лимит",
|
||||
"(?i)лимит выборки",
|
||||
"(?i)лимит строк",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"large_query_budget",
|
||||
"followup_continuation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_profit_followup_keeps_boundary_after_continuation",
|
||||
"title": "Profit follow-up keeps cash-flow boundary after continuation",
|
||||
"question": "Это можно считать прибылью за 2020 или нет? Ответь коротко и по делу.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)нет|нельзя|не стоит",
|
||||
"(?i)прибыл",
|
||||
"(?i)денежн|поток|нетто|поступлен",
|
||||
"(?i)90/91/99|закрыт|финрезультат|себестоим|расход"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object",
|
||||
"(?i)бухгалтерскому маршруту"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"profit_boundary",
|
||||
"followup_directness",
|
||||
"business_language"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+267
@@ -0,0 +1,267 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase101_inventory_root_scope_no_warehouse_clarification",
|
||||
"domain": "address_phase101_inventory_root_scope_no_warehouse_clarification",
|
||||
"title": "Phase 101 inventory root scope without warehouse clarification replay",
|
||||
"description": "Focused semantic replay for the manual assistant-stage1-hyh1A1WR3j signal: after a broad stock-on-hand question and organization clarification, the assistant must resume the root inventory snapshot for the selected company across available warehouses instead of asking the user to name a warehouse, item, category, or material.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_smalltalk_entry",
|
||||
"title": "Smalltalk entry stays human",
|
||||
"question": "приветик - че как там дела",
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)привет|дела|помочь|могу"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"smalltalk_entry",
|
||||
"human_answer_quality"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_capability_meta_entry",
|
||||
"title": "Capability meta entry stays human and business-oriented",
|
||||
"question": "расскажи что можешь интересного",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)могу|умею",
|
||||
"(?i)ндс|документ|контрагент|долг|склад|остат"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"capability_meta",
|
||||
"human_answer_quality"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_inventory_root_requires_company_only",
|
||||
"title": "Broad inventory root asks only for organization when company scope is ambiguous",
|
||||
"question": "кайф - что там на складе по остаткам?",
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)уточни|уточнить|выбери|какую компанию|какая компания|организац",
|
||||
"(?i)альтернатива плюс|лайсвуд|райм"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"inventory_root",
|
||||
"clarification_required",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_company_choice_resumes_inventory_without_warehouse",
|
||||
"title": "Company choice resumes root inventory snapshot without asking for warehouse or item",
|
||||
"question": "АЛЬТЕРНАТИВА",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)на складе|остат",
|
||||
"{{runtime.today_dot_regex}}"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^отлично, фиксирую рабочую организацию",
|
||||
"(?i)^фиксирую рабочую организацию",
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"clarification_resume",
|
||||
"inventory_root",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_historical_inventory_capability_no_warehouse_reask",
|
||||
"title": "Historical inventory capability follow-up stays human and does not ask for warehouse",
|
||||
"question": "а исторические остатки на другие даты умеешь?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"required_answer_patterns_any": [
|
||||
"(?i)историческ|история",
|
||||
"(?i)могу|умею"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"inventory_capability_meta",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_inventory_june_2017_after_capability",
|
||||
"title": "Month-only follow-up keeps inventory contour and selected organization",
|
||||
"question": "давай на июнь 2017",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2017-06-30",
|
||||
"period_from": "2017-06-01",
|
||||
"period_to": "2017-06-30",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"30\\.06\\.2017",
|
||||
"(?i)на складе|остат"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^отлично, фиксирую рабочую организацию",
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"historical_inventory",
|
||||
"date_followup",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_07_inventory_march_2016_stays_root",
|
||||
"title": "Another short month stays in inventory root and organization scope",
|
||||
"question": "март 2016",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2016-03-31",
|
||||
"period_from": "2016-03-01",
|
||||
"period_to": "2016-03-31",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"31\\.03\\.2016",
|
||||
"(?i)на складе|остат"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^отлично, фиксирую рабочую организацию",
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"historical_inventory",
|
||||
"date_followup",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+207
@@ -0,0 +1,207 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase102_debt_mirror_clean_scope_polarity",
|
||||
"domain": "address_phase102_debt_mirror_clean_scope_polarity",
|
||||
"title": "Phase 102 debt mirror clean-scope polarity replay",
|
||||
"description": "Focused semantic replay for the assistant-stage1-87gHJCwTI9 concern: mirrored 76.* settlement rows around Комитет государственных услуг must not look like the same clean debt in both directions. The assistant may disclose the mirrored/offset part, but the direct business answer must keep payables and receivables polarity clean.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_choose_company_scope",
|
||||
"title": "Select Альтернатива Плюс as active organization",
|
||||
"question": "Альтернатива Плюс",
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива плюс",
|
||||
"(?i)зафиксир|работаем|организац"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"company_selected",
|
||||
"organization_scope"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_clean_payables_today",
|
||||
"title": "Clean payables root excludes mirrored settlement offset from direct answer",
|
||||
"question": "мы кому реально должны денег на сегодня? коротко, чистый долг к оплате, без встречных обеспечений как основного долга",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"expected_intents": [
|
||||
"payables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)долг к оплате|должны|кредитор|к оплате"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454.*комитет"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"payables_snapshot",
|
||||
"debt_mirror_clean_scope",
|
||||
"direct_answer_first"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_committee_payable_is_not_clean_debt",
|
||||
"title": "Committee payable check explains mirrored/offset nature instead of clean debt overclaim",
|
||||
"question": "а Комитету государственных услуг мы реально должны эти 3,6 млн или это встречное обеспечение/зачет? объясни именно по смыслу долга",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)комитет",
|
||||
"(?i)встречн|обеспеч|зач[её]т|исключ|не.*чист|не.*основн"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^.*мы\\s+должны.*комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)^.*комитет.*чист.*долг.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"payables_counterparty_check",
|
||||
"debt_mirror_clean_scope",
|
||||
"polarity_honesty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_committee_receivable_is_not_clean_debt",
|
||||
"title": "Mirrored receivable question does not present the same amount as clean customer debt",
|
||||
"question": "а нам Комитет государственных услуг тоже должен 3,6 млн? это же та же сумма — скажи честно, это дебиторка или встречная часть?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)комитет",
|
||||
"(?i)встречн|обеспеч|зач[её]т|исключ|не.*чист|не.*основн|не.*дебитор"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)^.*нам\\s+долж.*комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)^.*комитет.*чист.*дебитор.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"receivables_counterparty_check",
|
||||
"debt_mirror_clean_scope",
|
||||
"polarity_honesty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_clean_receivables_today",
|
||||
"title": "Clean receivables root excludes mirrored settlement offset from direct answer",
|
||||
"question": "тогда кто нам реально должен денег на сегодня? именно чистая дебиторка",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"expected_intents": [
|
||||
"receivables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)нам должны|дебитор|задолж|долг"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454.*комитет"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"receivables_snapshot",
|
||||
"debt_mirror_clean_scope",
|
||||
"direct_answer_first"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_payables_mirror_followup_keeps_clean_scope",
|
||||
"title": "Short mirror follow-up returns clean payables again, not the mirrored Committee amount",
|
||||
"question": "а мы кому?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"expected_intents": [
|
||||
"payables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)долг к оплате|должны|кредитор|к оплате"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)комитет.*3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454",
|
||||
"(?i)3\\s*[\\.,]?\\s*677\\s*[\\.,]?\\s*454.*комитет"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"settlements_mirror_followup",
|
||||
"payables_snapshot",
|
||||
"debt_mirror_clean_scope"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase103_financial_role_purpose_arbitration",
|
||||
"domain": "address_phase103_financial_role_purpose_arbitration",
|
||||
"title": "Phase 103 financial role and purpose arbitration replay",
|
||||
"description": "Focused semantic replay for the Open-World Schema/Primitive Discovery slice: bank-like counterparties must be explained through confirmed 1C operation/purpose evidence and must not contaminate ordinary customer, supplier, revenue, or procurement semantics. The replay starts with a bare organization choice and ends with a normal counterparty value-flow canary.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_choose_company_scope",
|
||||
"title": "Bare organization choice binds active company scope",
|
||||
"question": "Альтернатива Плюс",
|
||||
"allowed_reply_types": [
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)фиксир|рабоч.*организац|контур",
|
||||
"(?i)альтернатива"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)программ|продукт|услуг.*компан",
|
||||
"(?i)не могу определить",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bare_org_scope",
|
||||
"phase102_canary"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_sberbank_role_purpose_summary",
|
||||
"title": "Sberbank role is answered by operation and purpose evidence",
|
||||
"question": "По СБЕРБАНКУ за 2020 покажи коротко: сколько денег входило и уходило, и что это по смыслу в 1С — клиентская выручка, поставщик, комиссия, кредит или другой финансовый поток?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк|финансов",
|
||||
"(?i)вход|поступ|исход|списан|ушл",
|
||||
"(?i)комисс|кредит|возврат|вид операц|назначен|договор",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*клиентск.*выручк|нельзя.*читать"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)обычный поставщик.*сбербанк",
|
||||
"(?i)обычный клиент.*сбербанк",
|
||||
"(?i)главный поставщик.*сбербанк",
|
||||
"(?i)главный клиент.*сбербанк",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"financial_role_purpose",
|
||||
"bank_like_counterparty",
|
||||
"bank_operations_by_counterparty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_sberbank_incoming_customer_boundary",
|
||||
"title": "Incoming Sberbank money is not overclaimed as customer revenue",
|
||||
"question": "Если СБЕРБАНК есть во входящих поступлениях, можно ли считать его нашим клиентом и выручкой? Скажи по подтвержденным строкам, без притягивания.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк",
|
||||
"(?i)не.*клиент|не.*выручк|нельзя.*считать|не подтвержд",
|
||||
"(?i)поступ|вид операц|договор|возврат|кредит|депозит|финансов"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)сбербанк.*клиентская выручка",
|
||||
"(?i)точно.*выручка",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bank_like_customer_boundary",
|
||||
"customer_revenue_and_payments"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_sberbank_outgoing_supplier_boundary",
|
||||
"title": "Outgoing Sberbank money is not overclaimed as supplier dependency",
|
||||
"question": "А если деньги уходили в СБЕРБАНК, это наш поставщик или финансовые списания? Раздели по смыслу и покажи основание.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк",
|
||||
"(?i)не.*поставщик|не.*обычн.*поставщик|финансов|банковск",
|
||||
"(?i)комисс|назначен|вид операц|списан|договор"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)главный поставщик.*сбербанк",
|
||||
"(?i)точно.*закупк",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bank_like_supplier_boundary",
|
||||
"supplier_payouts_profile"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_business_overview_excludes_bank_role_overclaim",
|
||||
"title": "Business overview keeps bank leaders out of ordinary operating role overclaim",
|
||||
"question": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток, если по назначению он не обычный клиент или поставщик.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "business_overview",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020|компан|организац",
|
||||
"(?i)вход|поступ|исход|списан|нетто",
|
||||
"(?i)банк|сбербанк|финансов",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*выручк|не.*закупк|назначен"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)чистая прибыль.*точно",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"financial_role_purpose",
|
||||
"bank_like_counterparty"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_svk_value_flow_canary_after_bank_context",
|
||||
"title": "Normal counterparty net flow survives after bank-role context",
|
||||
"question": "А теперь отдельно по Группа СВК за 2020: сколько денег получили, сколько заплатили и какое нетто?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "value_flow_comparison",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк|группа",
|
||||
"(?i)2020",
|
||||
"(?i)получ|вход|поступ",
|
||||
"(?i)заплат|исход|списан",
|
||||
"(?i)нетто|сальдо|разниц"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк",
|
||||
"(?i)уточните организац|какую компанию",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"counterparty_net_cash_flow",
|
||||
"stale_scope_guard",
|
||||
"canary"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase104_generic_role_tail_anchor_hygiene",
|
||||
"domain": "address_phase104_generic_role_tail_anchor_hygiene",
|
||||
"title": "Phase 104 generic role-tail anchor hygiene replay",
|
||||
"description": "Focused semantic replay for the Open-World Schema/Primitive Discovery slice: broad company overview wording may mention ordinary customer/supplier roles as business semantics, but generic role tails such as 'или поставщик' must not become a counterparty anchor or poison later bank/counterparty drilldowns.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_choose_company_scope",
|
||||
"title": "Bare organization choice binds active company scope",
|
||||
"question": "Альтернатива Плюс",
|
||||
"allowed_reply_types": [
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)фиксир|рабоч.*организац|контур",
|
||||
"(?i)альтернатива"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)не могу определить",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bare_org_scope",
|
||||
"phase102_canary"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_business_overview_role_tail_not_counterparty",
|
||||
"title": "Business overview role words do not become counterparty anchors",
|
||||
"question": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток, если по назначению он не обычный клиент или поставщик.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "business_overview",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"forbidden_filter_keys": [
|
||||
"counterparty"
|
||||
],
|
||||
"forbidden_filter_values": {
|
||||
"counterparty": [
|
||||
"или поставщик",
|
||||
"поставщик",
|
||||
"клиент",
|
||||
"обычный клиент",
|
||||
"обычный клиент или поставщик"
|
||||
]
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020|компан|организац",
|
||||
"(?i)вход|поступ|исход|списан|нетто",
|
||||
"(?i)банк|сбербанк|финансов",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*выручк|не.*закупк|назначен"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)чистая прибыль.*точно",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"generic_role_tail_anchor_hygiene",
|
||||
"financial_role_purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_sberbank_role_after_role_tail_overview",
|
||||
"title": "Bank-role drilldown still resolves Sberbank after role-tail overview",
|
||||
"question": "А отдельно по СБЕРБАНКУ: он для нас клиент, поставщик или финансовый поток? Дай коротко по подтвержденным строкам.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_filters": {
|
||||
"counterparty": "СБЕРБАНК"
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк",
|
||||
"(?i)финансов|банковск|кредит|комисс|возврат|назначен|вид операц",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*клиентск.*выручк|нельзя.*читать"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)или поставщик",
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bank_like_counterparty",
|
||||
"financial_role_purpose",
|
||||
"post_overview_anchor_integrity"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_real_supplier_prefix_still_keeps_counterparty",
|
||||
"title": "Explicit supplier prefix still preserves a real counterparty",
|
||||
"question": "А теперь по поставщику Группа СВК за 2020: сколько мы ему заплатили и какой общий денежный смысл?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "value_flow",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_filters": {
|
||||
"counterparty": "Группа СВК"
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк|группа",
|
||||
"(?i)2020",
|
||||
"(?i)заплат|исход|списан|получ|поступ|нетто|смысл"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)или поставщик",
|
||||
"(?i)сбербанк",
|
||||
"(?i)уточните организац|какую компанию",
|
||||
"(?i)route_candidate|primitive|planner_|catalog_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"counterparty_net_cash_flow",
|
||||
"supplier_prefix_canary",
|
||||
"stale_scope_guard"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+429
@@ -0,0 +1,429 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase105_mixed_schema_primitive_closure",
|
||||
"domain": "address_phase105_mixed_schema_primitive_closure",
|
||||
"title": "Phase 105 mixed schema/primitive closure replay",
|
||||
"description": "A broad live semantic replay for the Open-World Schema/Primitive Discovery module. It intentionally crosses old and new seams: inventory root clarification, historical inventory carryover, business overview role-tail hygiene, bank role/purpose boundaries, supplier payout wording, bidirectional value-flow, clean debt polarity, VAT continuity, and cash-flow-vs-profit answer shape.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_inventory_root_requires_company_only",
|
||||
"title": "Broad inventory root uses resolved organization and does not ask for warehouse",
|
||||
"question": "кайф - что там на складе по остаткам?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "{{runtime.today_iso}}",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category",
|
||||
"counterparty"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"(?i)на складе|остат",
|
||||
"{{runtime.today_dot_regex}}"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"inventory_root",
|
||||
"resolved_organization_scope",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_redundant_company_choice_scope_ack",
|
||||
"title": "Redundant company choice only updates organization scope",
|
||||
"question": "АЛЬТЕРНАТИВА",
|
||||
"allowed_reply_types": [
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"counterparty",
|
||||
"category"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива плюс",
|
||||
"(?i)фиксир|организац|контур|компан"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"redundant_scope_selection",
|
||||
"organization_scope",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_historical_inventory_meta",
|
||||
"title": "Historical inventory capability follow-up stays human",
|
||||
"question": "а исторические остатки на другие даты умеешь?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation"
|
||||
],
|
||||
"required_answer_patterns_any": [
|
||||
"(?i)историческ|история",
|
||||
"(?i)могу|умею"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "important",
|
||||
"semantic_tags": [
|
||||
"inventory_capability_meta",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_inventory_june_2017_followup",
|
||||
"title": "Month-only follow-up keeps inventory contour and selected organization",
|
||||
"question": "давай на июнь 2017",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"inventory_on_hand_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2017-06-30",
|
||||
"period_from": "2017-06-01",
|
||||
"period_to": "2017-06-30",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"warehouse",
|
||||
"item",
|
||||
"category"
|
||||
],
|
||||
"required_direct_answer_patterns_any": [
|
||||
"30\\.06\\.2017",
|
||||
"(?i)на складе|остат"
|
||||
],
|
||||
"forbidden_direct_answer_patterns": [
|
||||
"(?i)уточните организацию",
|
||||
"(?i)какой\\s+конкретн.*склад",
|
||||
"(?i)какой\\s+склад",
|
||||
"(?i)конкретн.*товар",
|
||||
"(?i)названи[ея]\\s+товар",
|
||||
"(?i)категор",
|
||||
"(?i)материал",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"historical_inventory",
|
||||
"date_followup",
|
||||
"warehouse_not_required"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_05_business_overview_role_tail_hygiene",
|
||||
"title": "Business overview keeps role-tail words out of counterparty filters",
|
||||
"question": "Теперь дай взрослый обзор за 2020 по компании: входящие, исходящие, нетто, топы, но банк в топах отдельно объясни как финансовый поток, если по назначению он не обычный клиент или поставщик.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "business_overview",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"forbidden_filter_keys": [
|
||||
"counterparty"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020|компан|организац",
|
||||
"(?i)вход|поступ|исход|списан|нетто",
|
||||
"(?i)банк|сбербанк|финансов",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*выручк|не.*закупк|назначен"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"generic_role_tail_anchor_hygiene"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_06_sberbank_role_after_overview",
|
||||
"title": "Sberbank role drilldown stays on bank-operation evidence",
|
||||
"question": "А отдельно по СБЕРБАНКУ: он для нас клиент, поставщик или финансовый поток? Дай коротко по подтвержденным строкам.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_filters": {
|
||||
"counterparty": "СБЕРБАНК"
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)сбербанк|банк",
|
||||
"(?i)финансов|банковск|кредит|комисс|возврат|назначен|вид операц",
|
||||
"(?i)не.*обычн.*клиент|не.*обычн.*поставщик|не.*клиентск.*выручк|нельзя.*читать"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)или поставщик",
|
||||
"(?i)сбербанк.*обычный поставщик",
|
||||
"(?i)сбербанк.*обычный клиент",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"bank_like_counterparty",
|
||||
"financial_role_purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_07_supplier_payment_wording",
|
||||
"title": "Supplier payment wording routes as supplier payout, not population",
|
||||
"question": "А теперь по поставщику Группа СВК за 2020: сколько мы ему заплатили и какой общий денежный смысл?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"supplier_payouts_profile"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "value_flow",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк|группа",
|
||||
"(?i)2020",
|
||||
"(?i)заплат|исход|списан|платеж|платёж|денежн|смысл"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)или поставщик",
|
||||
"(?i)сбербанк",
|
||||
"(?i)уточните организац|какую компанию",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"supplier_prefix_canary",
|
||||
"value_flow"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_08_svk_bidirectional_value_flow",
|
||||
"title": "Normal counterparty bidirectional value flow survives after supplier-only ask",
|
||||
"question": "А теперь по Группа СВК за 2020: сколько денег получили, сколько заплатили и какое нетто?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "value_flow_comparison",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)свк",
|
||||
"(?i)2020",
|
||||
"(?i)получ|вход|поступ",
|
||||
"(?i)заплат|исход|списан",
|
||||
"(?i)нетто|сальдо|разниц"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк",
|
||||
"(?i)уточните организац|какую компанию",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"counterparty_net_cash_flow",
|
||||
"stale_scope_guard"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_09_clean_payables_scope",
|
||||
"title": "Clean payables question keeps organization scope and debt polarity",
|
||||
"question": "кому мы должны на конец 2020?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"payables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2020-12-31",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"counterparty"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)должн|кредитор|кредиторск|поставщик|обязательств",
|
||||
"(?i)2020|31\\.12\\.2020|конец"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)нам должны.*мы должны",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"debt_polarity",
|
||||
"payables"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_10_clean_receivables_scope",
|
||||
"title": "Mirror receivables follow-up switches polarity cleanly",
|
||||
"question": "а нам кто должен на конец 2020?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"receivables_confirmed_as_of_date"
|
||||
],
|
||||
"required_filters": {
|
||||
"as_of_date": "2020-12-31",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"forbidden_filter_keys": [
|
||||
"counterparty"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)нам.*долж|дебитор|дебиторск|покупател|заказчик",
|
||||
"(?i)2020|31\\.12\\.2020|конец"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)мы должны.*нам должны",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"debt_polarity",
|
||||
"receivables"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_11_vat_tax_period_continuity",
|
||||
"title": "VAT tax-period exact question survives after debt/value-flow pivots",
|
||||
"question": "сколько НДС надо заплатить в налоговую за декабрь 2019?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_intents": [
|
||||
"vat_liability_confirmed_for_tax_period"
|
||||
],
|
||||
"required_filters": {
|
||||
"period_from": "2019-10-01",
|
||||
"period_to": "2019-12-31",
|
||||
"organization": "ООО Альтернатива Плюс"
|
||||
},
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)ндс",
|
||||
"(?i)декабр|2019",
|
||||
"(?i)налог|заплат|уплат|к уплате|не найден"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"vat_continuity",
|
||||
"tax_period"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_12_earnings_wording_to_business_overview",
|
||||
"title": "Organization earnings slang routes to business overview, not customer ranking",
|
||||
"question": "скока денег альтернатива заработала за 20 год?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"expected_catalog_alignment_status": "selected_matches_top",
|
||||
"expected_catalog_chain_top_match": "business_overview",
|
||||
"expected_catalog_selected_matches_top": true,
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива|компан|организац",
|
||||
"(?i)2020",
|
||||
"(?i)поступ|вход|денег|заработ",
|
||||
"(?i)не.*прибыл|не.*чист"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"earnings_wording"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_13_profit_followup_boundary",
|
||||
"title": "Profit follow-up distinguishes cash-flow net from clean profit",
|
||||
"question": "а это чистая прибыль?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)не.*чист.*прибыл|не.*является.*прибыл|это.*не.*прибыл",
|
||||
"(?i)поступ|денежн|cash|нетто|расход|себестоим|закрытие"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)это чистая прибыль",
|
||||
"(?i)точно.*прибыл",
|
||||
"(?i)route_candidate|primitive|planner_|snapshot_items|answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"profit_boundary",
|
||||
"business_overview_followup"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"schema_version": "domain_truth_harness_spec_v1",
|
||||
"scenario_id": "address_truth_harness_phase99_large_query_budget_continuation",
|
||||
"domain": "address_phase99_large_query_budget_continuation",
|
||||
"title": "Phase 99 large-query budget and continuation policy replay",
|
||||
"description": "Focused semantic replay for explicit-year large business questions: the assistant should use chunked 1C evidence where available, answer direct-first, avoid fake profit claims, keep bank/counterparty boundaries, and not collapse into row-limit refusal wording when yearly money coverage can be recovered.",
|
||||
"bindings": {},
|
||||
"steps": [
|
||||
{
|
||||
"step_id": "step_01_year_business_overview_uses_chunked_money_evidence",
|
||||
"title": "Explicit-year business overview gives direct money summary without row-limit refusal",
|
||||
"question": "Дай взрослый бизнес-обзор ООО Альтернатива Плюс за 2020: входящие, исходящие, нетто, кто основные источники денег и где важные ограничения.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)альтернатива",
|
||||
"(?i)2020",
|
||||
"(?i)входящ|поступлен",
|
||||
"(?i)исходящ|списан|платеж",
|
||||
"(?i)нетто|денежн",
|
||||
"(?i)прибыл|не.*прибыл|не.*бухгалтерск"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)уп[её]р.*лимит",
|
||||
"(?i)лимит выборки",
|
||||
"(?i)лимит строк",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"business_overview",
|
||||
"large_query_budget",
|
||||
"direct_answer_first"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_02_followup_profit_boundary_stays_short",
|
||||
"title": "Follow-up keeps cash-flow versus profit boundary",
|
||||
"question": "То есть это можно считать прибылью за 2020 или нет? Коротко.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)нет|нельзя|не стоит",
|
||||
"(?i)прибыл",
|
||||
"(?i)денежн|поступлен|поток",
|
||||
"(?i)себестоим|расход|финрезультат|бухгалтерск"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_",
|
||||
"(?i)snapshot_items",
|
||||
"(?i)answer_object"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"profit_boundary",
|
||||
"followup_directness",
|
||||
"business_language"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_03_top_money_source_keeps_bank_boundary",
|
||||
"title": "Top money source keeps bank boundary after broad overview",
|
||||
"question": "А кто за 2020 принес больше всего денег, и если там банк, не называй его обычным клиентом.",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)деньг|поступлен|входящ",
|
||||
"(?i)сбербанк|банк|финансов|не.*обычн|не.*клиент"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычн.*клиент",
|
||||
"(?i)сбербанк.*главн.*клиент",
|
||||
"(?i)уп[её]р.*лимит",
|
||||
"(?i)лимит выборки",
|
||||
"(?i)лимит строк",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"financial_counterparty_flow_hint",
|
||||
"large_query_budget",
|
||||
"context_continuity"
|
||||
]
|
||||
},
|
||||
{
|
||||
"step_id": "step_04_supplier_dependency_uses_checked_outgoing_scope",
|
||||
"title": "Supplier-dependency question uses checked outgoing scope and avoids hard audit overclaim",
|
||||
"question": "По исходящим за 2020 есть зависимость от одного поставщика или это только денежная концентрация?",
|
||||
"allowed_reply_types": [
|
||||
"factual",
|
||||
"factual_with_explanation",
|
||||
"partial_coverage"
|
||||
],
|
||||
"required_answer_patterns_all": [
|
||||
"(?i)2020",
|
||||
"(?i)исходящ|платеж|списан",
|
||||
"(?i)поставщик|получател|концентрац",
|
||||
"(?i)не.*аудит|не.*полный|не.*надежност|не.*качество"
|
||||
],
|
||||
"forbidden_answer_patterns": [
|
||||
"(?i)сбербанк.*обычн.*поставщик",
|
||||
"(?i)сбербанк.*главн.*поставщик",
|
||||
"(?i)уп[её]р.*лимит",
|
||||
"(?i)лимит выборки",
|
||||
"(?i)лимит строк",
|
||||
"(?i)\\bMCP\\b",
|
||||
"(?i)route_candidate",
|
||||
"(?i)primitive",
|
||||
"(?i)planner_",
|
||||
"(?i)catalog_"
|
||||
],
|
||||
"criticality": "critical",
|
||||
"semantic_tags": [
|
||||
"vendor_risk_procurement_quality",
|
||||
"large_query_budget",
|
||||
"business_language"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user