Синхронизировать карту Route-Candidate Enablement

This commit is contained in:
dctouch 2026-05-12 16:03:43 +03:00
parent 5f0c4f5ead
commit b118ce1805
9 changed files with 703 additions and 26 deletions

View File

@ -78,8 +78,15 @@ Fresh validation cut:
- Completed semantic-control slice: `W5/W7 Counterparty Value-Flow And Money-Breakdown Integrity`: bank-document/value-flow recipes now materialize explicit counterparty predicates, zero-row supplier-payment checks answer as checked negative evidence, compound money-breakdown wording stays in `business_overview`, and MCP discovery receives active organization scope only when the current turn has no explicit organization.
- Completed operating-system slice: `Agentic Semantic Development Loop Dogfood Gate`: stage manifest, stage pack, stage-loop wrapper, review/status/continue safety, lead-coder handoff, and save-after-acceptance gating are wired and accepted by the `asl` dogfood loop artifact.
- Completed hygiene slice: `Autorun Cyrillic C1 Repair`: old autorun cards/questions/runtime materialization now repair C1-control mojibake before UI or assistant-lane use, including the historical `БОЛЬШОЙ ОБЩИЙ` / `АЛЬТЕРНАТИВА` failure class.
- Completed autonomy slice: `Open-World Route Candidate Promotion`: `assistantMcpDiscoveryRuntimeBridge` now emits a structured `route_candidate` handoff with candidate status, selected chain, catalog alignment, fact/action family, required/provided/missing axes, execution readiness, enablement reason, safe next action, and forbidden-overclaim flags; debug attachment, truth-harness artifacts, acceptance matrix rows, source-catalog tags, and lead-coder handoff preserve those fields, and the phase90 live replay is accepted at `5/5`.
- Active autonomy slice: `Route-Candidate-Driven Enablement Loop`: `needs_route_enablement` route candidates now become first-class deterministic repair targets and Lead Codex handoff groups, while `needs_user_scope` remains a valid clarification signal rather than a false bug.
- Completed autonomy slice inside that loop: `Proof-Family Enablement Candidates`: exact organization-level profit/margin, overdue/due-date debt aging, inventory reserve/liquidation, and vendor-risk/procurement-quality asks remain user-safe while route candidates mark the missing reviewed proof families as `needs_route_enablement`.
- Completed autonomy slice inside that loop: `Accounting Profit-Margin Reviewed Route`: `accounting_profit_margin` is now promoted from `needs_route_enablement` into a reviewed 90/91/99 accounting-result route with accepted live replay.
- Completed autonomy slice inside that loop: `Debt Due-Date Aging Reviewed Route`: `debt_due_date_aging_quality` is now promoted from proxy-only route-candidate gap into a reviewed payment-term/open-balance route with accepted live replay.
- Current live canary: `phase94_debt_due_date_aging_reviewed_route_live4` accepted `7/7`.
- Current accepted autorun: `AGENT | Phase 94 debt due-date aging reviewed route` (`gen-ag05101319-c04f79`).
- Implementation breadth: `~99% (Open-World Bounded Autonomy Breadth through Slice 25)`.
- Next active slice: continue `Agentic Semantic Development Loop` dogfood over real Open-World/Semantic-Control packs and confirm the latest autorun hygiene fix in the GUI.
- Next active slice: select the next phase92 proof family, likely vendor/procurement quality or inventory reserve/liquidation, and drive it through repair -> reviewed route enablement -> rerun, without treating proxy-only evidence as proof.
- Active module progress: `~99% (Agentic Semantic Development Loop, accepted dogfood loop + autorun hygiene; manual GUI confirmation still required)`.
## Reporting Rule
@ -90,6 +97,8 @@ Use these labels when reporting progress:
- `Прогресс модуля: 100% (Planner Autonomy Consolidation, declared phase83 slice closed)` when discussing the planner-autonomy slice that was just completed.
- `Прогресс модуля: 99% (Open-World Bounded Autonomy Breadth, active slice: Semantic Control Gate)` while discussing current module closure after the EHMO-derived critical subset accepted live again with W5/W7 hardening.
- `Прогресс модуля: 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.
- `Прогресс модуля: 84% (Route-Candidate-Driven Enablement Loop, active slice: second reviewed proof-family route accepted)` when discussing the current candidate-driven enablement loop.
- `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.
@ -125,7 +134,7 @@ Remaining work belongs to the next breadth module:
- confirm the latest autorun Cyrillic hygiene cut in the GUI after backend refresh and inspect frontend/API payloads if old replacement characters remain visible;
- continue dogfooding the `Agentic Semantic Development Loop` on real stage packs, especially generated-question quality, semantic business audit, repair handoff, and rerun acceptance;
- finish closure of the `Open-World Semantic Control Gate` opened by `assistant-stage1-EHMOy3lNFt`; the EHMO-derived critical subset is accepted live after W5/W7 hardening, but the fat GUI pack and residual answer-shape roughness still need final review;
- extend `business_overview` beyond money-flow/activity, customer and supplier concentration, document/account-section activity mix, counterparty role split, contract usage, yearly operating-flow dynamics, explicit profit/margin wording boundaries, explicit debt due-date wording boundaries, explicit inventory reserve/liquidation wording boundaries, explicit supplier/procurement-quality wording boundaries, explicit-period VAT/tax, as-of-date debt position, open-settlement concentration, contract-date debt age, debt staleness-risk proxy, as-of-date inventory position, trading-margin proxy, sales-to-stock inventory proxy, warehouse staleness-risk proxy, and the missing-proof ledger into separately proven exact accounting profit/margin, due-date debt aging/overdue, confirmed vendor-risk/procurement-quality analysis, and confirmed reserve/write-off/liquidation inventory evidence families;
- extend `business_overview` beyond money-flow/activity, customer and supplier concentration, document/account-section activity mix, counterparty role split, contract usage, yearly operating-flow dynamics, explicit profit/margin wording boundaries, explicit debt due-date wording boundaries, explicit inventory reserve/liquidation wording boundaries, explicit supplier/procurement-quality wording boundaries, explicit-period VAT/tax, as-of-date debt position, open-settlement concentration, contract-date debt age, debt staleness-risk proxy, as-of-date inventory position, trading-margin proxy, sales-to-stock inventory proxy, warehouse staleness-risk proxy, the missing-proof ledger, the reviewed accounting profit/margin route, and the reviewed debt due-date aging route into separately proven vendor-risk/procurement-quality analysis and confirmed reserve/write-off/liquidation inventory evidence families;
- broader dynamic schema traversal for unfamiliar 1C asks;
- more primitive descriptors where live evidence proves a real gap;
- more replay-backed domain packs that start from user business meaning, not from route convenience;
@ -146,12 +155,17 @@ For current planning, read:
1. `README.md`
2. this document
3. `24 - agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md`
4. `23 - current_execution_spine_and_semantic_control_gate_2026-05-05.md`
5. `22 - open_world_bounded_autonomy_breadth_2026-05-01.md`
6. `20 - planner_autonomy_consolidation_2026-05-01.md`
7. `19 - inventory_stock_open_world_breadth_proof_2026-05-01.md`
8. `17 - post_f_semantic_integrity_hardening_2026-04-23.md`
9. `16 - data_need_graph_and_open_world_mcp_plan_2026-04-22.md`
3. `29 - debt_due_date_aging_reviewed_route_2026-05-10.md`
4. `28 - accounting_profit_margin_reviewed_route_2026-05-10.md`
5. `27 - proof_family_enablement_candidates_2026-05-10.md`
6. `26 - route_candidate_driven_enablement_loop_2026-05-10.md`
7. `25 - open_world_route_candidate_promotion_2026-05-10.md`
8. `24 - agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md`
9. `23 - current_execution_spine_and_semantic_control_gate_2026-05-05.md`
10. `22 - open_world_bounded_autonomy_breadth_2026-05-01.md`
11. `20 - planner_autonomy_consolidation_2026-05-01.md`
12. `19 - inventory_stock_open_world_breadth_proof_2026-05-01.md`
13. `17 - post_f_semantic_integrity_hardening_2026-04-23.md`
14. `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.

View File

@ -660,7 +660,7 @@ Implemented now:
- evidence and answer drafting can surface the leading document type and leading account section as confirmed operational activity mix;
- risk synthesis and headline wording can mention this activity mix when present;
- `must_not_claim` explicitly forbids treating the profile as process quality, accounting correctness, or complete 1C activity coverage;
- missing exact accounting profit, due-date debt aging, vendor-risk/procurement quality, and reserve/liquidation inventory evidence remain pending reviewed-route work.
- missing exact vendor-risk/procurement quality and reserve/liquidation inventory evidence remain pending reviewed-route work; accounting profit/margin and due-date debt aging are now promoted by later route-candidate-driven slices.
This is not a process-audit engine. It is a bounded management context bridge: "what kind of confirmed 1C activity is visible" without pretending to prove whether the business processes or accounting are healthy.
@ -711,7 +711,7 @@ The important distinction is not "can we say something useful?" because the curr
Implemented now:
- `derived_business_overview.missing_proof_families` records the remaining hard proof families for accounting profit/margin, due-date debt aging, inventory reserve/liquidation quality, and vendor-risk/procurement quality;
- `derived_business_overview.missing_proof_families` originally recorded hard proof gaps for accounting profit/margin, due-date debt aging, inventory reserve/liquidation quality, and vendor-risk/procurement quality; later phase93 and phase94 slices promote accounting profit/margin and due-date debt aging into reviewed routes;
- each missing proof family exposes `current_status`, `current_supported_evidence`, `next_required_evidence`, and `must_not_claim`;
- trading-margin evidence is explicitly recorded as `proxy_only_currently` for accounting profit/margin, not as clean profit or P&L;
- open-settlement/debt-staleness evidence is explicitly recorded as proxy-only for due-date aging, not as contractual overdue debt;
@ -779,8 +779,8 @@ Suggested first subset:
Current status:
- implementation breadth through Slice 25: `~99%`;
- accepted Open-World module progress after the EHMO-derived Semantic Control Gate subset accepted live: `~98%`;
- exact P&L, real due-date debt aging, reserve/write-off/liquidation evidence, and vendor-risk engines stay queued behind this semantic gate.
- accepted Open-World module progress after the EHMO-derived Semantic Control Gate subset accepted live and later W5/W7 hardening: `~99%`;
- exact P&L and real due-date debt aging have since moved through reviewed route promotion; reserve/write-off/liquidation evidence and vendor-risk engines stay queued behind this semantic gate.
### Slice 26 local cut 1 - anchor hygiene and overview continuation
@ -835,3 +835,97 @@ Remaining before acceptance:
- keep the EHMO-derived semantic subset as a regression gate for nearby edits;
- review remaining W5/SVK answer-shape roughness for counterparty/organization arbitration after pivots;
- rerun the fat manual GUI pack for final acceptance or explicitly classify residuals outside the declared contour.
### Slice 27 - route candidate promotion
Implemented first cut:
- `assistantMcpDiscoveryRuntimeBridge` now emits a versioned internal `route_candidate` contract;
- the contract records selected chain, nearest catalog chain template, catalog alignment status, business fact/action family, proof expectation, required/provided/missing axes, execution readiness, enablement reason, recommended next action, and forbidden-overclaim flags;
- clarification paths become `needs_user_scope` candidates instead of prose-only stops;
- executable reviewed paths become `ready_for_reviewed_execution` candidates;
- unsupported-but-understood paths have a dedicated `needs_route_enablement` status for future route-growth work;
- the contract is internal and must not leak into user-facing answers;
- route-candidate fields are now flattened into debug attachment, truth-harness step state, truth-review markdown, acceptance matrix rows, source-catalog tags, and lead-coder handoff context.
Validation:
- `npm.cmd test -- --run tests/assistantMcpDiscoveryRuntimeBridge.test.ts`: passed `17/17`.
- `npm.cmd test -- --run tests/assistantMcpDiscoveryDebugAttachment.test.ts tests/assistantDebugPayloadAssembler.test.ts tests/assistantMcpDiscoveryRuntimeBridge.test.ts`: passed `23/23`.
- `python -m unittest scripts.test_domain_case_loop_step_state scripts.test_agent_semantic_pack_builder scripts.test_scenario_acceptance_policy`: passed `30/30`.
- `npm.cmd run build`: passed.
Next:
- create an unfamiliar-1C semantic replay that checks safe clarification, route enablement, and no overclaim;
- only promote a candidate to executable route after reviewed code, local tests, and semantic replay acceptance.
### Slice 28 - proof-family enablement candidates
Implemented now:
- exact organization-level proof asks over business overview are separated from broad proxy overview answers;
- `profit_margin_boundary`, `debt_due_date_boundary`, `inventory_reserve_boundary`, and `vendor_risk_procurement_boundary` are classified as explicit boundary action families;
- `route_candidate` now marks the matching missing proof family as `needs_route_enablement` instead of `ready_for_reviewed_execution`;
- user-facing compact answers remain direct and bounded: they may mention proxy evidence, but must not claim exact P&L, contractual overdue debt, confirmed reserve/liquidation value, or vendor-risk/procurement quality.
Validation:
- `npm.cmd test -- --run tests/assistantMcpDiscoveryResponseCandidate.test.ts tests/assistantMcpDiscoveryAnswerAdapter.test.ts tests/assistantMcpDiscoveryTurnInputAdapter.test.ts tests/assistantMcpDiscoveryRuntimeBridge.test.ts`: passed `178/178` with `8` skipped.
- `npm.cmd run build`: passed.
- `address_truth_harness_phase92_proof_family_enablement_candidates_live5_20260510`: accepted `6/6`, `0` warnings, `0` failures.
- accepted autorun: `AGENT | Phase 92 proof-family enablement candidates` (`gen-ag05101045-374169`).
Next at that point:
- select one phase92 proof family and wire the smallest reviewed exact route;
- rerun phase92 plus a focused route-specific pack until the chosen proof family moves from `needs_route_enablement` to `ready_for_reviewed_execution` or a consciously bounded non-implementation decision.
### Slice 29 - accounting profit-margin reviewed route
Implemented now:
- `accounting_profit_margin` was selected as the first proof family to promote from route candidate to reviewed execution;
- `address_accounting_financial_result_for_organization_v1` queries confirmed 90/91/99/84 accounting rows for an organization and explicit period;
- business-overview derives an `accounting_financial_result` summary from confirmed rows and can answer exact accounting profit/loss and margin basis directly;
- short profit/loss follow-ups stay attached to the accounting-result frame instead of drifting back into generic overview;
- canonical VAT charged-or-paid wording remains protected by the exact VAT route inside the same replay.
Validation:
- `npm.cmd test -- --run tests/addressIntentResolverRegression.test.ts tests/assistantMcpDiscoveryTurnInputAdapter.test.ts tests/assistantMcpDiscoveryRuntimeBridge.test.ts tests/assistantMcpDiscoveryAnswerAdapter.test.ts tests/assistantMcpDiscoveryResponseCandidate.test.ts`: passed `194/194` with `8` skipped.
- `npm.cmd test -- --run tests/addressQueryRuntimeM23.test.ts -t "confirmed VAT tax-period"`: passed.
- `npm.cmd run build`: passed.
- `address_truth_harness_phase93_accounting_profit_margin_reviewed_route_live3_20260510`: accepted `6/6`, `0` warnings, `0` failures.
- accepted autorun: `AGENT | Phase 93 accounting profit-margin reviewed route` (`gen-ag05101213-596d99`).
Next:
- keep phase94 as the live canary for the candidate-driven route enablement loop;
- select the next phase92 proof family, likely vendor/procurement quality or inventory reserve/liquidation;
- do not promote debt, vendor-risk, or reserve/liquidation wording without reviewed evidence and replay acceptance.
### Slice 30 - debt due-date aging reviewed route
Implemented now:
- `debt_due_date_aging_quality` was selected as the second proof family to promote from route candidate to reviewed execution;
- `address_debt_due_date_aging_for_organization_v1` checks organization-scoped open balances on accounts `60`, `62`, and `76` together with reachable contract payment-term fields;
- business-overview derives a `debt_due_date_aging` summary from confirmed rows and distinguishes confirmed overdue, no configured payment terms, insufficient due-date basis, and no overdue found;
- noisy organization tails are trimmed before SQL filtering, so the current-turn company scope is not polluted by the rest of the question;
- short due-date boundary follow-ups stay attached to the reviewed debt-aging frame instead of drifting into generic chat.
Validation:
- `npm.cmd test -- --run tests/assistantTransitionPolicy.test.ts`: passed `38/38`.
- `npm.cmd test -- --run tests/assistantMcpDiscoveryTurnInputAdapter.test.ts`: passed `103/103` with `7` skipped.
- `npm.cmd test -- --run tests/assistantMcpDiscoveryPilotExecutor.test.ts tests/assistantMcpDiscoveryAnswerAdapter.test.ts tests/assistantMcpDiscoveryResponseCandidate.test.ts tests/assistantMcpDiscoveryRuntimeBridge.test.ts`: passed `113/113` with `1` skipped.
- `npm.cmd run build`: passed.
- `phase94_debt_due_date_aging_reviewed_route_live4`: accepted `7/7`, `0` warnings, `0` failures.
- accepted autorun: `AGENT | Phase 94 debt due-date aging reviewed route` (`gen-ag05101319-c04f79`).
Next:
- keep phase94 as the live canary for the candidate-driven route enablement loop;
- choose between vendor/procurement quality and inventory reserve/liquidation as the next reviewed proof family;
- do not promote vendor-risk or reserve/liquidation wording without reviewed evidence and replay acceptance.

View File

@ -96,7 +96,8 @@ Status:
- implementation state: operational dogfood loop exists and has an accepted first loop artifact;
- semantic status: accepted loop artifact is useful, but manual GUI confirmation remains required;
- hygiene status: saved autorun/runtime Cyrillic repair is now covered by code and tests;
- hygiene status: saved autorun/runtime Cyrillic repair is covered by code/tests and the GUI-side check is reported clean;
- current autonomy status: `Open-World Route Candidate Promotion` is live-accepted at `5/5`; `Route-Candidate-Driven Enablement Loop` has accepted phase91/phase92 canaries; `accounting_profit_margin` is promoted into a reviewed 90/91/99 route by phase93; `debt_due_date_aging_quality` is promoted into a reviewed payment-term/open-balance route by phase94; both reviewed proof-family routes are saved as accepted AGENT autoruns;
- risk: medium, because the loop is now infrastructure for future acceptance decisions, not just a local route fix.
Recommended reporting line:
@ -109,21 +110,20 @@ Do not treat the stage-loop as a replacement for business-answer review.
Still open:
- frontend/browser cache can still show old broken autorun text until the backend is restarted and the UI is refreshed;
- the first accepted dogfood loop proves the mechanism, not all future stage packs;
- generated question quality still needs pressure from real GUI runs and user feedback;
- broad arbitrary 1C autonomy is still bounded by reviewed routes, truth gates, and replay evidence;
- route-candidate-driven enablement still needs more proof-family promotions after the accepted `accounting_profit_margin` and `debt_due_date_aging_quality` routes;
- manual GUI confirmation remains required before declaring a fat AGENT pack fully accepted.
## Next Work
Next operational pass:
1. Restart/reload the backend and reopen the affected autorun card from the GUI.
2. Confirm old saved-session text now displays as normal Cyrillic.
3. If the GUI still shows replacement characters, inspect frontend state/cache and API payload side by side.
4. Continue dogfooding the stage-loop on the next real Open-World/agentic pack.
5. Keep Post-F, phase83, inventory, business-overview, and mojibake autorun cases as regression canaries.
1. Use phase94 as the current candidate-driven enablement canary.
2. Continue dogfooding the stage-loop on real Open-World/agentic packs.
3. Pick the next proof family, likely vendor/procurement quality or inventory reserve/liquidation, and require the same live replay/save-after-acceptance discipline.
4. Keep Post-F, phase83, inventory, business-overview, and mojibake autorun cases as regression canaries.
## Canonical Reading Order Update
@ -131,8 +131,13 @@ For current planning, read:
1. `README.md`
2. `21 - current_status_canon_2026-05-01.md`
3. this document
4. `23 - current_execution_spine_and_semantic_control_gate_2026-05-05.md`
5. `22 - open_world_bounded_autonomy_breadth_2026-05-01.md`
6. `20 - planner_autonomy_consolidation_2026-05-01.md`
7. `17 - post_f_semantic_integrity_hardening_2026-04-23.md`
3. `29 - debt_due_date_aging_reviewed_route_2026-05-10.md`
4. `28 - accounting_profit_margin_reviewed_route_2026-05-10.md`
5. `27 - proof_family_enablement_candidates_2026-05-10.md`
6. `26 - route_candidate_driven_enablement_loop_2026-05-10.md`
7. `25 - open_world_route_candidate_promotion_2026-05-10.md`
8. this document
9. `23 - current_execution_spine_and_semantic_control_gate_2026-05-05.md`
10. `22 - open_world_bounded_autonomy_breadth_2026-05-01.md`
11. `20 - planner_autonomy_consolidation_2026-05-01.md`
12. `17 - post_f_semantic_integrity_hardening_2026-04-23.md`

View File

@ -0,0 +1,132 @@
# 25 - Open-World Route Candidate Promotion (2026-05-10)
## Purpose
This note records the next autonomy slice after the agentic loop and autorun hygiene cut.
The target is not to let the assistant answer arbitrary 1C questions freely.
The target is to make the runtime leave a structured handoff whenever it almost understands an unfamiliar 1C ask:
`user ask -> data-need graph -> planner/catalog chain -> route candidate -> reviewed enablement or safe clarification`
That route candidate is the bridge between the current bounded MCP route fabric and the future autonomous route-growth loop.
## Why This Slice Exists
The project already has:
- data-need graph extraction;
- reviewed catalog chain templates;
- planner-vs-catalog alignment telemetry;
- bounded pilot execution;
- semantic replay and AGENT stage-loop artifacts.
The remaining gap is the materialization handoff for unfamiliar but meaningful asks.
Before this slice, a question could be recognized as "unsupported but understood" or could stop at clarification, but the repair loop still had to infer from scattered debug fields what route should be enabled next.
Now the runtime bridge exposes a single machine-readable `route_candidate` contract.
## Runtime Contract
`assistantMcpDiscoveryRuntimeBridge` now emits:
- `route_candidate.schema_version = assistant_mcp_route_candidate_v1`;
- `candidate_status`:
- `ready_for_reviewed_execution`;
- `needs_user_scope`;
- `needs_route_enablement`;
- `blocked`;
- selected reviewed chain id and selected chain summary;
- nearest catalog chain template and catalog alignment status;
- business fact family, action family, and proof expectation from the data-need graph;
- required, provided, and missing axes;
- `executable_now`;
- enablement reason;
- recommended next action;
- forbidden overclaim flags.
This is intentionally internal orchestration state.
It must not leak into the user-facing answer. The answer adapter and response candidate layers still decide what the human sees.
## Safety Boundary
The route candidate is not proof.
Rules:
- `ready_for_reviewed_execution` means the selected reviewed bridge can run through the normal truth gate.
- `needs_user_scope` means the assistant should ask for missing axes such as organization, period, item, or counterparty before execution.
- `needs_route_enablement` means the system understood a likely family but still must add or wire a reviewed exact route before claiming the fact.
- `blocked` means the route must not execute until the blocking reason is fixed.
This keeps the open-world direction bounded: the system may discover the next route candidate, but it may not promote unreviewed evidence into a confirmed business answer.
## First Implementation Cut
Implemented locally:
- `AssistantMcpRouteCandidateContract` in `assistantMcpDiscoveryRuntimeBridge.ts`;
- route-candidate construction from planner, pilot, bridge status, data-need graph, and dry-run axes;
- route-candidate reason codes in the runtime bridge;
- focused runtime-bridge tests for clarification candidates, ready-for-execution candidates, metadata-scoped movement candidates, and internal-mechanics non-leakage;
- debug attachment flattening for route-candidate status, fact/action family, proof expectation, missing/provided axes, executability, enablement reason, and next action;
- domain-loop step-state, truth-review markdown, acceptance-matrix rows, source-catalog tags, and lead-coder handoff now preserve route-candidate fields.
Focused validation:
- `npm.cmd test -- --run tests/assistantMcpDiscoveryRuntimeBridge.test.ts` passed `17/17`.
- `npm.cmd test -- --run tests/assistantMcpDiscoveryDebugAttachment.test.ts tests/assistantDebugPayloadAssembler.test.ts tests/assistantMcpDiscoveryRuntimeBridge.test.ts` passed `23/23`.
- `python -m unittest scripts.test_domain_case_loop_step_state scripts.test_agent_semantic_pack_builder scripts.test_scenario_acceptance_policy` passed `30/30`.
- `npm.cmd run build` passed.
- graphify rebuilt after the artifact-propagation cut: `6379 nodes`, `14066 edges`, `143 communities`.
## Live Semantic Replay Closure
The declared route-candidate promotion slice is now accepted by live semantic replay:
- spec: `docs/orchestration/address_truth_harness_phase90_route_candidate_handoff_open_world.json`;
- accepted run: `artifacts/domain_runs/address_truth_harness_phase90_route_candidate_handoff_open_world_live5_20260510`;
- final status: `accepted`, `5/5` passed, `0` warnings, `0` failures;
- accepted AGENT autorun: `AGENT | Phase 90 open-world route candidate handoff replay` (`gen-ag05100927-aec0ad`).
The replay proves:
- open counterparty money-flow ranking asks stop for organization scope instead of guessing;
- a plain organization reply promotes the pending candidate into reviewed execution in the same session;
- a counterparty lifecycle pivot to `Группа СВК` does not inherit the previous organization scope as stale counterparty context;
- explicit VAT movement wording selects the metadata-scoped `movement_evidence` catalog chain while the exact VAT answer remains organization-bound and source-honest;
- inventory reserve/liquidation wording remains bounded and does not claim a confirmed reserve without reviewed proof evidence.
Latest validation after the final VAT answer-shape cut:
- `npm.cmd test -- --run tests/assistantTransitionPolicy.test.ts tests/assistantRoutePolicy.test.ts tests/assistantMcpDiscoveryTurnInputAdapter.test.ts tests/assistantMcpDiscoveryAnswerAdapter.test.ts tests/assistantMcpDiscoveryResponseCandidate.test.ts tests/assistantMcpDiscoveryResponsePolicy.test.ts` passed `237/237` with `8` skipped;
- `npm.cmd test -- --run tests/addressQueryRuntimeM23.test.ts -t "confirmed VAT tax-period reply"` passed `1/1`;
- `npm.cmd run build` passed;
- graphify rebuilt to `6383 nodes`, `14077 edges`, `143 communities`.
## Next Work
Next slices should use this contract instead of prose-only diagnosis:
1. Extend stage-loop analysis so accepted route-candidate fields become first-class repair targets, not just debug evidence.
2. Let AGENT pack review group failures by candidate status, missing axes, selected chain, and catalog alignment.
3. Only after a candidate is reviewed, wired, tested, and replay-accepted may it become a normal executable route.
The next active autonomy slice should move from "record a route candidate" to "use route candidates as repair-loop targets": the stage-loop should group replay failures by candidate status and produce a lead-coder handoff that names the next reviewed route/capability to enable, without letting unreviewed candidates become user-facing truth.
This continuation is recorded in [26 - route_candidate_driven_enablement_loop_2026-05-10.md](./26%20-%20route_candidate_driven_enablement_loop_2026-05-10.md).
## Status
This slice is the first accepted concrete step from "planner chooses reviewed routes" toward "the system can propose the next reviewed route to build."
Current module wording:
`Open-World Route Candidate Promotion, declared phase90 slice accepted`
Progress: `100%` for this declared route-candidate promotion slice.
This does not mean arbitrary open-world 1C autonomy is complete. It means the route-candidate handoff contract, artifact propagation, live semantic replay, and accepted autorun persistence are closed enough to become the next module's input contract.

View File

@ -0,0 +1,88 @@
# 26 - Route-Candidate-Driven Enablement Loop (2026-05-10)
## Purpose
This note records the next autonomy slice after route-candidate promotion.
Slice 25 made the runtime expose a structured `route_candidate`.
Slice 26 starts using that contract as a development-loop input:
`semantic replay -> route candidate fields -> repair target grouping -> Lead Codex handoff -> reviewed route enablement`
The goal is not to let unreviewed candidates become business truth.
The goal is to make the agentic development loop see what route should be reviewed or enabled next without asking a human to manually infer it from scattered debug payloads.
## Implementation Cut 1
Implemented locally:
- deterministic repair-target generation now treats `mcp_discovery_route_candidate_status = needs_route_enablement` as a first-class `route_candidate_enablement_gap`;
- route-candidate repair targets preserve selected chain, fact/action family, missing axes, executability, enablement reason, and next action;
- repair-target summaries now include `route_candidate_handoff_count`, status counts, and grouped route-candidate handoff rows;
- Lead Codex handoff JSON/Markdown now includes:
- `route_candidate_groups`;
- `route_candidate_enablement_targets`;
- explicit instructions to distinguish missing user scope from a real reviewed-route enablement gap before patching.
Safety boundary:
- `needs_user_scope` remains a valid clarification/continuation signal, not an automatic bug;
- `ready_for_reviewed_execution` remains a proof that the reviewed route can execute through the normal truth gate;
- `needs_route_enablement` becomes a repair target because the system understood the business family but still lacks a reviewed executable route;
- unreviewed route candidates still must not leak into the user-facing answer.
## Validation
Local tooling validation:
- `python -m unittest scripts.test_domain_case_loop_step_state scripts.test_scenario_acceptance_policy scripts.test_agent_semantic_pack_builder` passed `33/33`.
Live semantic replay:
- spec: `docs/orchestration/address_truth_harness_phase91_route_candidate_driven_enablement_loop.json`;
- accepted run: `artifacts/domain_runs/address_truth_harness_phase91_route_candidate_driven_enablement_loop_live1_20260510`;
- final status: `accepted`, `5/5` passed, `0` warnings, `0` failures.
- next accepted proof-family replay: `artifacts/domain_runs/address_truth_harness_phase92_proof_family_enablement_candidates_live5_20260510`, `6/6` passed, `0` warnings, `0` failures.
- accepted user-runnable autorun for the proof-family replay: `AGENT | Phase 92 proof-family enablement candidates` (`gen-ag05101045-374169`).
- first reviewed proof-family route replay: `artifacts/domain_runs/address_truth_harness_phase93_accounting_profit_margin_reviewed_route_live3_20260510`, `6/6` passed, `0` warnings, `0` failures.
- accepted user-runnable autorun for that route replay: `AGENT | Phase 93 accounting profit-margin reviewed route` (`gen-ag05101213-596d99`).
- second reviewed proof-family route replay: `artifacts/domain_runs/phase94_debt_due_date_aging_reviewed_route_live4`, `7/7` passed, `0` warnings, `0` failures.
- accepted user-runnable autorun for that route replay: `AGENT | Phase 94 debt due-date aging reviewed route` (`gen-ag05101319-c04f79`).
The replay proves the user-facing route-candidate canary remains healthy while the development tooling starts treating route candidates as repair-loop input:
- open value-flow ranking asks for organization scope instead of guessing;
- natural company clarification promotes the candidate to reviewed execution;
- counterparty lifecycle pivot resets stale company scope;
- VAT movement wording keeps metadata scope and company scope together;
- reserve/liquidation proof wording remains bounded and does not overclaim.
- exact P&L, due-date debt aging, vendor-risk/procurement-quality, and reserve/liquidation wording now surface as concrete `needs_route_enablement` proof-family candidates when the reviewed route is missing.
- exact accounting profit/margin wording now has the first reviewed route implementation and can move to `ready_for_reviewed_execution` through confirmed 90/91/99 accounting rows.
- exact due-date debt aging wording now has the second reviewed route implementation and can move to `ready_for_reviewed_execution` through confirmed open-balance/payment-term evidence, while absent payment terms produce an honest checked-negative boundary answer.
## Status
Current module wording:
`Route-Candidate-Driven Enablement Loop, active slice: second reviewed proof-family route accepted`
Progress: `84%`.
The first cut proved the handoff mechanics and live canary. The second cut proved real proof-family candidates and a saved accepted AGENT pack. The third cut proved the intended promotion loop on `accounting_profit_margin`. The fourth cut proves the same loop on `debt_due_date_aging_quality`, including short boundary follow-up continuity and saved accepted autorun hygiene. The module is still not complete because vendor/procurement quality and inventory reserve/liquidation need the same treatment or an explicit bounded non-implementation decision.
## Next Work
Next slices:
1. Pick the next high-value proof family from phase92: `vendor_risk_procurement_quality` or `inventory_reserve_liquidation_quality`.
2. Implement the smallest reviewed route/capability for that proof family only if reliable 1C evidence is reachable.
3. Rerun phase94 as a canary plus a focused route-specific pack until the selected candidate changes from `needs_route_enablement` to `ready_for_reviewed_execution` or a clearly bounded non-implementation decision.
4. Save the accepted pack into autoruns only after the live replay and semantic review pass.
See also:
- [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)

View File

@ -0,0 +1,110 @@
# 27 - Proof-Family Enablement Candidates (2026-05-10)
## Purpose
This note records the next `Route-Candidate-Driven Enablement Loop` cut after the repair-target handoff grouping in Slice 26.
The slice turns business-overview proof gaps into explicit route-candidate handoffs:
`valid exact business ask -> bounded proxy answer -> missing_proof_families -> route_candidate.needs_route_enablement -> accepted AGENT replay`
The goal is not to pretend the proxy is the final business truth.
The goal is to make the assistant and the development loop agree that the user asked a valid exact question, the current reviewed contour can only answer with a bounded proxy, and the missing reviewed proof route is now a concrete enablement target.
## Implementation Cut
Implemented locally:
- `assistantMcpDiscoveryRuntimeBridge` now promotes business-overview exact proof gaps to `route_candidate.candidate_status = needs_route_enablement` when the asked action maps to a missing reviewed proof family;
- route candidates now preserve the missing proof-family reason, next required evidence, current proxy evidence, and the forbidden overclaim flag;
- `assistantMcpDiscoveryTurnInputAdapter` now classifies organization-level exact proof asks into boundary action families:
- `profit_margin_boundary`;
- `debt_due_date_boundary`;
- `inventory_reserve_boundary`;
- `vendor_risk_procurement_boundary`;
- legal-entity wording such as `по ООО ... чистую прибыль и маржу` is treated as organization-level P&L boundary wording, not as a generic money overview;
- compact user-facing business-overview answers now keep exact proof-boundary turns direct:
- clean profit/margin stays a P&L route gap;
- overdue/due-date debt aging stays a payment-term route gap;
- reserve/liquidation inventory quality stays an inventory-quality route gap;
- vendor dependency/risk stays a procurement-quality route gap;
- the answer surface may expose bounded proxy evidence, but it must not claim exact P&L, contractual overdue debt, confirmed reserve/liquidation value, or vendor-risk/procurement-quality conclusions.
## Validation
Local validation:
- `npm.cmd test -- --run tests/assistantMcpDiscoveryResponseCandidate.test.ts tests/assistantMcpDiscoveryAnswerAdapter.test.ts tests/assistantMcpDiscoveryTurnInputAdapter.test.ts tests/assistantMcpDiscoveryRuntimeBridge.test.ts` passed `178/178` with `8` skipped;
- `npm.cmd run build` passed.
Live semantic replay:
- spec: `docs/orchestration/address_truth_harness_phase92_proof_family_enablement_candidates.json`;
- accepted run: `artifacts/domain_runs/address_truth_harness_phase92_proof_family_enablement_candidates_live5_20260510`;
- final status: `accepted`, `6/6` passed, `0` warnings, `0` failures.
Accepted autorun:
- title: `AGENT | Phase 92 proof-family enablement candidates`;
- generation id: `gen-ag05101045-374169`;
- saved session: `llm_normalizer/data/autorun_generators/saved_sessions/assistant_saved_session_20260510104553_gen-ag05101045-374169.json`;
- eval case: `llm_normalizer/data/eval_cases/assistant_autogen_saved_user_sessions_20260510104553_gen-ag05101045-374169.json`.
The accepted replay proves:
- open ranked value-flow still asks for organization scope rather than guessing;
- organization clarification still promotes the reviewed value-flow route to executable;
- exact P&L/profit/margin wording remains user-safe and becomes `needs_route_enablement` for `accounting_profit_margin`;
- exact overdue/due-date debt wording remains user-safe and becomes `needs_route_enablement` for `debt_due_date_aging_quality`;
- exact vendor dependency/risk wording remains user-safe and becomes `needs_route_enablement` for `vendor_risk_procurement_quality`;
- exact reserve/liquidation inventory wording remains user-safe and becomes `needs_route_enablement` for `inventory_reserve_liquidation_quality`.
## Phase93 Follow-Up
The first candidate from this slice has now been promoted:
- proof family: `accounting_profit_margin`;
- reviewed route: `address_accounting_financial_result_for_organization_v1`;
- evidence basis: confirmed 90/91/99 accounting rows with derived accounting result and margin basis;
- accepted run: `artifacts/domain_runs/address_truth_harness_phase93_accounting_profit_margin_reviewed_route_live3_20260510`, `6/6` passed;
- accepted autorun: `AGENT | Phase 93 accounting profit-margin reviewed route` (`gen-ag05101213-596d99`).
This means `accounting_profit_margin` is no longer only a proof-family candidate. It is now the first reviewed executable route produced by the candidate-driven enablement loop.
## Phase94 Follow-Up
The second candidate from this slice has now been promoted:
- proof family: `debt_due_date_aging_quality`;
- reviewed route: `address_debt_due_date_aging_for_organization_v1`;
- evidence basis: confirmed open-balance rows plus reachable contract payment-term fields;
- accepted run: `artifacts/domain_runs/phase94_debt_due_date_aging_reviewed_route_live4`, `7/7` passed;
- accepted autorun: `AGENT | Phase 94 debt due-date aging reviewed route` (`gen-ag05101319-c04f79`).
This means `debt_due_date_aging_quality` is no longer only a proxy-only proof-family candidate. It is now a reviewed executable route that can produce checked negative answers when payment terms are not configured.
## Status
Current module wording:
`Route-Candidate-Driven Enablement Loop, active slice: second reviewed proof-family route accepted`
Progress: `84%`.
This cut proved the missing-proof candidate surface and accepted user-runnable AGENT canary. Phase93 then implemented the first exact reviewed route for the accounting profit/margin family. Phase94 implemented the second reviewed route for due-date debt aging and verified short boundary follow-up continuity. The remaining closure work is to repeat that discipline for vendor/procurement quality and inventory reserve/liquidation, or explicitly bound them if exact evidence is not reachable.
## Next Work
Next slices:
1. Pick the next high-value proof family from the accepted phase92 candidate set: vendor/procurement quality or inventory reserve/liquidation.
2. Wire the smallest reviewed exact route/capability for that family, starting with the data that is already reachable through MCP/1C.
3. Keep the existing proxy answer as a fallback boundary, not as the final proof.
4. Rerun the phase94 canary plus a focused route-specific pack until the selected candidate moves from `needs_route_enablement` to `ready_for_reviewed_execution` or an explicit non-implementation boundary.
5. Save the new AGENT autorun only after the live replay and semantic review pass.
See also:
- [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)

View File

@ -0,0 +1,98 @@
# 28 - Accounting Profit-Margin Reviewed Route (2026-05-10)
## Purpose
This note records the first route implementation inside the `Route-Candidate-Driven Enablement Loop`.
Phase 92 proved that exact organization-level profit, margin, and financial-result questions were valid business asks, but the runtime could only answer with bounded proxies and `route_candidate.needs_route_enablement`.
Phase 93 takes one proof family through the intended loop:
`needs_route_enablement -> reviewed accounting recipe -> confirmed 90/91/99 rows -> derived accounting result -> ready_for_reviewed_execution -> accepted live replay -> saved autorun`
The goal is still not to pretend this is a full financial-reporting engine.
The goal is to prove that the agentic route-candidate loop can promote one concrete missing proof family into a reviewed executable route without weakening the proxy boundaries for other proof families.
## Implementation Cut
Implemented now:
- new intent `accounting_financial_result_for_organization`;
- new query template `accounting_financial_result_profile`;
- reviewed recipe `address_accounting_financial_result_for_organization_v1`;
- organization reference filtering through `Справочник.Организации` rather than stale counterparty or free-text scope;
- 90/91/99/84 accounting markers for revenue, cost, commercial/admin expenses, operational/non-operational result transfers, and retained profit/loss transfer;
- business-overview pilot execution for the accounting financial-result recipe;
- derived `accounting_financial_result` overview from confirmed recipe rows;
- answer-adapter and compact-reply support for direct accounting-result wording;
- short follow-up continuity for profit/loss questions after a business overview;
- explicit VAT wording bridge for "начислен или уплачен" period questions so VAT continuity remains protected during the same replay.
Safety boundaries:
- accounting result is stated as an inference from confirmed 1C accounting movements, not as audited statutory reporting;
- margin is computed only when the 90.01 revenue basis is present;
- remaining proof families stay bounded: due-date debt aging, vendor/procurement quality, and inventory reserve/liquidation evidence are not promoted by this slice;
- route-candidate internals remain diagnostic and must not leak into the user-facing answer.
## Validation
Local validation:
- `npm.cmd test -- --run tests/addressIntentResolverRegression.test.ts tests/assistantMcpDiscoveryTurnInputAdapter.test.ts tests/assistantMcpDiscoveryRuntimeBridge.test.ts tests/assistantMcpDiscoveryAnswerAdapter.test.ts tests/assistantMcpDiscoveryResponseCandidate.test.ts` passed `194/194` with `8` skipped;
- `npm.cmd test -- --run tests/addressQueryRuntimeM23.test.ts -t "confirmed VAT tax-period"` passed the targeted VAT regression;
- `npm.cmd run build` passed.
Live semantic replay:
- spec: `docs/orchestration/address_truth_harness_phase93_accounting_profit_margin_reviewed_route.json`;
- accepted run: `artifacts/domain_runs/address_truth_harness_phase93_accounting_profit_margin_reviewed_route_live3_20260510`;
- final status: `accepted`, `6/6` passed, `0` warnings, `0` failures;
- key invariants: direct answer, temporal honesty, selected-object continuity, truth gate, human-answer quality, meta-context integrity, catalog alignment, and route-candidate handoff all passed.
Accepted autorun:
- title: `AGENT | Phase 93 accounting profit-margin reviewed route`;
- generation id: `gen-ag05101213-596d99`;
- saved session: `llm_normalizer/data/autorun_generators/saved_sessions/assistant_saved_session_20260510121326_gen-ag05101213-596d99.json`;
- eval case: `llm_normalizer/data/eval_cases/assistant_autogen_saved_user_sessions_20260510121326_gen-ag05101213-596d99.json`.
The accepted replay proves:
- exact profit/margin wording for `ООО Альтернатива Плюс` in 2020 no longer stops at proxy-only boundary wording;
- the assistant can answer from confirmed 90/91/99 evidence and report the 2020 accounting loss and margin basis directly;
- short follow-up wording such as "а это прибыль или убыток, коротко?" stays on the accounting result instead of drifting back into a generic business overview;
- canonical VAT follow-up wording still reaches the exact VAT route and returns confirmed VAT payable for 2020;
- value-flow ranking and inventory reserve boundary canaries still remain safe in the same mixed pack.
## Phase94 Follow-Up
The next proof-family route has now also been promoted:
- proof family: `debt_due_date_aging_quality`;
- reviewed route: `address_debt_due_date_aging_for_organization_v1`;
- accepted run: `artifacts/domain_runs/phase94_debt_due_date_aging_reviewed_route_live4`, `7/7` passed;
- accepted autorun: `AGENT | Phase 94 debt due-date aging reviewed route` (`gen-ag05101319-c04f79`).
This keeps the phase93 accounting route as a canary while proving the candidate-driven loop is repeatable on a second proof family.
## Status
Current module wording:
`Route-Candidate-Driven Enablement Loop, active slice: second reviewed proof-family route accepted`
Progress: `84%`.
This was the first proof that the loop can turn a route candidate into an executable reviewed route. Phase94 has now repeated the pattern for due-date debt aging. The module is not yet complete because vendor/procurement quality and inventory reserve/liquidation still need the same treatment or an explicit bounded non-implementation decision.
## Next Work
Next slices:
1. Pick the next phase92 proof family: `vendor_risk_procurement_quality` or `inventory_reserve_liquidation_quality`.
2. Identify reachable 1C evidence for the selected family, or an honest fallback if the contour cannot prove it exactly.
3. Wire the smallest reviewed route/capability only if the evidence is reliable enough.
4. Rerun the phase94 canary plus a focused route-specific pack until the new route is either `ready_for_reviewed_execution` or explicitly bounded.
5. Save the next AGENT autorun only after live replay and semantic review pass.

View File

@ -0,0 +1,96 @@
# 29 - Debt Due-Date Aging Reviewed Route (2026-05-10)
## Purpose
This note records the second reviewed proof-family promotion inside the `Route-Candidate-Driven Enablement Loop`.
Phase 92 marked organization-level overdue debt, debt quality, due-date, and debt-aging questions as valid business asks, but only proxy-safe until a reviewed payment-term route existed.
Phase 94 moves that proof family through the same intended loop:
`needs_route_enablement -> reviewed debt due-date recipe -> payment-term/open-balance evidence -> checked negative boundary -> ready_for_reviewed_execution -> accepted live replay -> saved autorun`
The goal is not to invent contractual delinquency from open balances.
The goal is to answer exactly what can be proven: whether overdue debt is confirmed from reachable 1C payment-term evidence, and why it cannot be claimed when payment terms are absent.
## Implementation Cut
Implemented now:
- new intent `debt_due_date_aging_for_organization`;
- new query template `debt_due_date_aging_profile`;
- reviewed recipe `address_debt_due_date_aging_for_organization_v1`;
- open-balance evidence over accounting accounts `60`, `62`, and `76`;
- contract fields for settlement context, including contract date, payment-term flag, payment-term days, settlement document, organization, counterparty, and balance direction;
- organization reference filtering hardened against noisy raw tails, so a phrase such as "ООО Альтернатива Плюс на конец 2020 можно точно понять..." does not become the organization filter;
- business-overview pilot execution for the due-date aging recipe;
- derived `debt_due_date_aging` overview with explicit statuses:
- `confirmed_overdue`;
- `no_payment_terms_configured`;
- `insufficient_due_date_basis`;
- `no_overdue_found`;
- compact user-facing answer support for checked negative overdue debt;
- short boundary follow-up continuity, so "то есть просрочку доказать нельзя, коротко почему?" stays on the reviewed debt due-date route instead of falling into generic chat.
Safety boundaries:
- open balance alone is not presented as overdue debt;
- absent payment terms produce a checked negative/boundary answer, not a fabricated delinquency;
- missing settlement-date evidence is called out as insufficient basis;
- route-candidate internals remain diagnostic and must not leak into the user-facing answer;
- the exact buyer/debtor-list routes remain separate from organization-level due-date quality questions.
## Validation
Local validation:
- `npm.cmd test -- --run tests/assistantTransitionPolicy.test.ts` passed `38/38`;
- `npm.cmd test -- --run tests/assistantMcpDiscoveryTurnInputAdapter.test.ts` passed `103/103` with `7` skipped;
- `npm.cmd test -- --run tests/assistantMcpDiscoveryPilotExecutor.test.ts tests/assistantMcpDiscoveryAnswerAdapter.test.ts tests/assistantMcpDiscoveryResponseCandidate.test.ts tests/assistantMcpDiscoveryRuntimeBridge.test.ts` passed `113/113` with `1` skipped;
- `npm.cmd run build` passed.
Live semantic replay:
- spec: `docs/orchestration/address_truth_harness_phase94_debt_due_date_aging_reviewed_route.json`;
- accepted run: `artifacts/domain_runs/phase94_debt_due_date_aging_reviewed_route_live4`;
- final status: `accepted`, `7/7` passed, `0` warnings, `0` failures;
- key invariants: direct answer, temporal honesty, selected-object continuity, truth gate, human-answer quality, meta-context integrity, catalog alignment, and route-candidate handoff all passed;
- the replay spec was repaired to real UTF-8 Russian before saving, and codepoint checks confirmed normal Cyrillic in the spec and live artifacts.
Accepted autorun:
- title: `AGENT | Phase 94 debt due-date aging reviewed route`;
- generation id: `gen-ag05101319-c04f79`;
- saved session: `llm_normalizer/data/autorun_generators/saved_sessions/assistant_saved_session_20260510131922_gen-ag05101319-c04f79.json`;
- eval case: `llm_normalizer/data/eval_cases/assistant_autogen_saved_user_sessions_20260510131922_gen-ag05101319-c04f79.json`;
- validation status: `accepted_live_replay`.
The accepted replay proves:
- organization-level overdue debt wording for `ООО Альтернатива Плюс` in 2020 no longer stops at proxy-only boundary wording;
- the assistant can run the reviewed due-date route and answer that confirmed overdue debt is absent because the found contracts do not have payment terms configured;
- the short explanation follow-up keeps the same organization, date, evidence basis, and `debt_due_date_boundary` action family;
- profit/margin, VAT, value-flow ranking, inventory reserve boundary, and vendor-risk boundary canaries remain safe in the same mixed pack.
## Status
Current module wording:
`Route-Candidate-Driven Enablement Loop, active slice: second reviewed proof-family route accepted`
Progress: `84%`.
This is the second proof that the loop can turn a route candidate into an executable reviewed route. The module is not yet complete because vendor/procurement quality and inventory reserve/liquidation still need either reviewed exact routes or explicit bounded non-implementation decisions.
## Next Work
Next slices:
1. Pick the next phase92 proof family: either `vendor_risk_procurement_quality` or `inventory_reserve_liquidation_quality`.
2. Identify whether reliable 1C evidence exists for the chosen family.
3. Wire the smallest reviewed route only if it can prove the business claim without overreach.
4. Keep proxy-only evidence bounded if exact proof is not reachable.
5. Rerun phase94 as a canary plus the focused next route-specific pack.
6. Save the next AGENT autorun only after accepted live replay and semantic review.

View File

@ -42,6 +42,11 @@ This package answers the next question:
22. [22 - open_world_bounded_autonomy_breadth_2026-05-01.md](./22%20-%20open_world_bounded_autonomy_breadth_2026-05-01.md)
23. [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)
24. [24 - agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md](./24%20-%20agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md)
25. [25 - open_world_route_candidate_promotion_2026-05-10.md](./25%20-%20open_world_route_candidate_promotion_2026-05-10.md)
26. [26 - route_candidate_driven_enablement_loop_2026-05-10.md](./26%20-%20route_candidate_driven_enablement_loop_2026-05-10.md)
27. [27 - proof_family_enablement_candidates_2026-05-10.md](./27%20-%20proof_family_enablement_candidates_2026-05-10.md)
28. [28 - accounting_profit_margin_reviewed_route_2026-05-10.md](./28%20-%20accounting_profit_margin_reviewed_route_2026-05-10.md)
29. [29 - debt_due_date_aging_reviewed_route_2026-05-10.md](./29%20-%20debt_due_date_aging_reviewed_route_2026-05-10.md)
## Current Status Snapshot (2026-05-10)
@ -85,9 +90,25 @@ Status canon for planning:
- The active breadth slice is semantic control rather than new proof-family expansion: garbage-anchor protection, business-overview continuation, intent dominance, frame hygiene, counterparty/organization arbitration, and final-summary answer shape.
- The current accepted dogfood infrastructure slice is `Agentic Semantic Development Loop`: stage manifest, stage pack, loop wrapper, status/continue safety, strong business-audit handoff, and save-after-acceptance gating are wired and validated by the `asl` accepted loop artifact.
- The latest hygiene slice is `Autorun Cyrillic C1 Repair`: `addressTextRepair`, `autoRuns`, `eval`, and `assistantService` now preserve C1 bytes while repairing old saved-session Russian text, preventing replacement-character autorun cards or runtime turns from leaking into the user path after backend refresh.
- The GUI-side autorun Cyrillic check is now reported clean by the user after the backend-side C1 repair cut.
- The completed autonomy slice is now `Open-World Route Candidate Promotion`: runtime bridge emits a versioned `route_candidate` contract that records the selected reviewed chain, catalog alignment, fact/action family, required/provided/missing axes, execution readiness, and safe next action; debug/truth-harness/acceptance/lead-handoff artifacts preserve that handoff, and the phase90 live replay is accepted at `5/5`.
- The active autonomy slice is `Route-Candidate-Driven Enablement Loop`: `needs_route_enablement` route candidates now become first-class repair targets and Lead Codex handoff groups, while `needs_user_scope` remains a valid clarification signal rather than a false bug.
- The current live canary for this slice is accepted: `address_truth_harness_phase91_route_candidate_driven_enablement_loop_live1_20260510` passed `5/5`.
- The current proof-family candidate slice is accepted: `address_truth_harness_phase92_proof_family_enablement_candidates_live5_20260510` passed `6/6`, proving exact profit/margin, debt due-date aging, inventory reserve/liquidation, and vendor-risk/procurement-quality asks remain user-safe while `route_candidate` marks the missing reviewed proof families as `needs_route_enablement`.
- The accepted user-runnable autorun for that slice is `AGENT | Phase 92 proof-family enablement candidates` (`gen-ag05101045-374169`).
- The first proof-family route is now implemented and accepted: `accounting_profit_margin` moved from `needs_route_enablement` to reviewed execution through the 90/91/99 accounting-result recipe; `address_truth_harness_phase93_accounting_profit_margin_reviewed_route_live3_20260510` passed `6/6`.
- The accepted user-runnable autorun for that slice is `AGENT | Phase 93 accounting profit-margin reviewed route` (`gen-ag05101213-596d99`).
- The second proof-family route is now implemented and accepted: `debt_due_date_aging_quality` moved from proxy-only route-candidate gap to reviewed payment-term/open-balance execution; `phase94_debt_due_date_aging_reviewed_route_live4` passed `7/7`.
- The accepted user-runnable autorun for that slice is `AGENT | Phase 94 debt due-date aging reviewed route` (`gen-ag05101319-c04f79`).
- 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).
- The current stage-loop/hygiene overlay after the AGENT dogfood cut is [24 - agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md](./24%20-%20agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md).
- The current route-candidate autonomy slice is [25 - open_world_route_candidate_promotion_2026-05-10.md](./25%20-%20open_world_route_candidate_promotion_2026-05-10.md).
- The current route-candidate enablement-loop slice is [26 - route_candidate_driven_enablement_loop_2026-05-10.md](./26%20-%20route_candidate_driven_enablement_loop_2026-05-10.md).
- The current proof-family enablement-candidate slice is [27 - proof_family_enablement_candidates_2026-05-10.md](./27%20-%20proof_family_enablement_candidates_2026-05-10.md).
- The current first reviewed proof-family route slice is [28 - accounting_profit_margin_reviewed_route_2026-05-10.md](./28%20-%20accounting_profit_margin_reviewed_route_2026-05-10.md).
- The current second reviewed proof-family route slice is [29 - debt_due_date_aging_reviewed_route_2026-05-10.md](./29%20-%20debt_due_date_aging_reviewed_route_2026-05-10.md).
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:
@ -151,11 +172,13 @@ Current honest status:
- pre-multidomain readiness: `~90%`
- bounded-autonomy foundation readiness: `~89%`
- open-world bounded-autonomy readiness: `~87%`
- 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, and missing proof families recorded as runtime evidence ledger; exact accounting profit/margin, true due-date debt aging/overdue, confirmed vendor-risk/procurement-quality analysis, and confirmed reserve/write-off/liquidation inventory evidence are still pending
- 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, and debt due-date aging promoted into a reviewed payment-term/open-balance route by phase94; confirmed vendor-risk/procurement-quality analysis and confirmed reserve/write-off/liquidation inventory evidence are still pending
- 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
- active inventory-stock breadth slice progress: `100%` for the declared scenario pack, not for arbitrary inventory questions
- 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: `84%`, 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, and `debt_due_date_aging_quality` promoted into reviewed payment-term/open-balance execution by phase94 live replay; the remaining unresolved proof families are vendor/procurement quality and inventory reserve/liquidation
- graph snapshot after latest rebuild: see `graphify-out/GRAPH_REPORT.md`
- current regression-gate breakpoint:
- the validated hot paths are no longer structurally broken;
@ -239,6 +262,11 @@ Latest live proof now includes:
- guarded phase83 acceptance: `phase83_planner_brain_alignment_live_20260501_readygate_rerun3` accepted `20/20`, with `0` warnings, `0` failures, `catalog_alignment_ok=true`, `direct_answer_ok=true`, `temporal_honesty_ok=true`, `selected_object_continuity_ok=true`, `truth_gate_ok=true`, `human_answer_quality_ok=true`, and `meta_context_integrity_ok=true`;
- surface-grounded catalog promotion accepted locally: targeted planner/response-policy/pilot/continuity slice passed `109/109`, build passed, and graphify rebuilt to `5973 nodes`, `12971 edges`, `138 communities`.
- accepted phase83 is saved as an autorun canary: `AGENT | Planner Autonomy phase83: мозг маршрутов, pivots и legacy continuity` (`gen-ag05011759-6f85fc`).
- route-candidate promotion accepted live: `address_truth_harness_phase90_route_candidate_handoff_open_world_live5_20260510` accepted `5/5`, proving open-scope value-flow clarification, organization-scope continuation, counterparty lifecycle stale-scope reset, metadata-scoped VAT movement arbitration, and bounded reserve/no-overclaim behavior; the accepted autorun is `AGENT | Phase 90 open-world route candidate handoff replay` (`gen-ag05100927-aec0ad`).
- route-candidate-driven enablement loop cut 1 accepted locally/live: Python tooling tests passed `33/33`; `address_truth_harness_phase91_route_candidate_driven_enablement_loop_live1_20260510` accepted `5/5`, proving the user-facing canary remains clean while `needs_route_enablement` can now become a Lead Codex repair target in deterministic loop artifacts.
- proof-family enablement candidates accepted locally/live: targeted runtime/answer/turn-input/candidate tests passed `178/178` with `8` skipped; `address_truth_harness_phase92_proof_family_enablement_candidates_live5_20260510` accepted `6/6`, proving exact profit/margin, debt due-date aging, vendor-risk/procurement-quality, and reserve/liquidation asks remain bounded while their missing reviewed proof families become concrete route-candidate enablement targets; the accepted autorun is `AGENT | Phase 92 proof-family enablement candidates` (`gen-ag05101045-374169`).
- accounting profit/margin reviewed route accepted locally/live: targeted runtime/answer/turn-input/candidate/intent tests passed `194/194` with `8` skipped; targeted VAT tax-period regression passed; `address_truth_harness_phase93_accounting_profit_margin_reviewed_route_live3_20260510` accepted `6/6`, proving 90/91/99 accounting result, short profit/loss follow-up continuity, VAT continuity, value-flow canary, and inventory reserve boundary canary together; the accepted autorun is `AGENT | Phase 93 accounting profit-margin reviewed route` (`gen-ag05101213-596d99`).
- debt due-date aging reviewed route accepted locally/live: transition policy passed `38/38`, turn-input adapter passed `103/103` with `7` skipped, executor/answer/candidate/runtime bridge passed `113/113` with `1` skipped, build passed; `phase94_debt_due_date_aging_reviewed_route_live4` accepted `7/7`, proving payment-term/open-balance checked-negative overdue answers, short due-date boundary follow-up continuity, profit/margin/VAT/value-flow canaries, and reserve/vendor boundary safety together; the accepted autorun is `AGENT | Phase 94 debt due-date aging reviewed route` (`gen-ag05101319-c04f79`).
Current architectural reading:
@ -264,6 +292,12 @@ For the detailed audit, current percentages, and remaining debt, read:
- [20 - planner_autonomy_consolidation_2026-05-01.md](./20%20-%20planner_autonomy_consolidation_2026-05-01.md)
- [21 - current_status_canon_2026-05-01.md](./21%20-%20current_status_canon_2026-05-01.md)
- [22 - open_world_bounded_autonomy_breadth_2026-05-01.md](./22%20-%20open_world_bounded_autonomy_breadth_2026-05-01.md)
- [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)
- [24 - agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md](./24%20-%20agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md)
- [25 - open_world_route_candidate_promotion_2026-05-10.md](./25%20-%20open_world_route_candidate_promotion_2026-05-10.md)
- [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)
## Architectural Objects Of Planning
@ -304,6 +338,12 @@ Read in this order:
21. `20 - planner_autonomy_consolidation_2026-05-01.md`
22. `21 - current_status_canon_2026-05-01.md`
23. `22 - open_world_bounded_autonomy_breadth_2026-05-01.md`
24. `23 - current_execution_spine_and_semantic_control_gate_2026-05-05.md`
25. `24 - agentic_semantic_development_loop_and_autorun_hygiene_2026-05-10.md`
26. `25 - open_world_route_candidate_promotion_2026-05-10.md`
27. `26 - route_candidate_driven_enablement_loop_2026-05-10.md`
28. `27 - proof_family_enablement_candidates_2026-05-10.md`
29. `28 - accounting_profit_margin_reviewed_route_2026-05-10.md`
## Planning Rules