73 KiB
11 - Continuity Stabilization Plan (2026-04-17)
Status Canon Update - 2026-05-01
This plan is historical architecture trail for the continuity breakpoint.
Any 78% estimate inside this file is the original 2026-04-17 planning estimate, not the current module status.
Current module wording lives in:
Purpose
This note defines the recovery plan for the current pre-expansion breakpoint.
The goal is not to patch individual failing prompts.
The goal is to finish the missing runtime authority that should govern mixed live sessions after the turnaround 11 owner extractions.
From the current stage onward, one more rule is explicit:
- do not treat "route passed" as sufficient acceptance if a human user would still feel that the assistant did not understand the question or answered the wrong business intent.
Current Reading
The strongest current evidence is:
- narrow and company-selected scenarios can pass end-to-end;
- mixed saved-session runtime still fails on root inventory, selected-object continuity, same-date restore, and cross-domain same-date pivot;
- therefore the architecture is not missing only routes;
- it is missing one governing continuity authority.
In one sentence:
- decision ownership became distributed faster than continuity ownership became explicit.
What This Plan Stabilizes
This plan is specifically about one system object:
assistant_session_continuity_v1
That object should become the shared authority for:
- active root frame
- active selected object
- active organization scope
- active date scope
- active clarification state
- active answer object / reusable bundle
- recap source of truth
This plan now also treats one product-facing invariant as architecture-critical:
semantic_robustness_for_live_user_wording_v1
That means the repaired runtime must stay meaningful for:
- live colloquial wording;
- short follow-up wording;
- typo/noisy wording that still clearly points to an already-supported business question;
- human-readable answers that match the user's asked intent rather than merely matching an internal route family.
Target Runtime Rule
Before any of the following decisions are made:
- route arbitration
- company clarification
- selected-object follow-up routing
- same-date restore
- recap answer generation
the runtime must first resolve one continuity snapshot for the active session.
Those downstream owners may interpret the snapshot differently, but they must not reconstruct competing versions of the session state independently.
Immediate Passes
Pass A. Install shared continuity snapshot
Scope:
- create one shared continuity resolver for session items and grounded address context;
- centralize extraction of active item, organization, date, root frame, and recap-eligible grounded context;
- stop allowing recap and adjacent meta logic to build over ungrounded or clarification-only state.
Exit condition:
- recap can only trigger over verified grounded address context;
- selected-object memory cannot be reconstructed from failed clarification turns;
- route and memory layers consume the same continuity snapshot.
Pass B. Reduce clarification priority conflicts
Scope:
- move clarification behind restored continuity when the business frame is already sufficient;
- stop repeated company clarification from interrupting same-family continuation;
- make clarification state explicit and resumable instead of re-discovered ad hoc.
Exit condition:
- repeated clarification no longer appears after adjacent grounded business answers in the same thread;
- selected-object and same-date follow-ups stop falling into generic company templates.
Pass C. Re-ground recap and answer packaging
Scope:
- recap must summarize verified session facts only;
- answer packaging must not sound more certain than truth assembly;
- technical scaffolding must not leak into the top block of user-facing answers.
Exit condition:
- recap cannot claim supplier/date/document facts that were never grounded;
- meta boundary replies no longer expose
MCP,read-only, route ids, capability ids, or debug labels; - user-facing top blocks remain business-first.
Pass D. Lock mixed runtime as the primary gate
Scope:
- promote mixed saved-session runtime to the main architecture gate before domain expansion;
- keep narrow harnesses and seam tests, but do not let them overrule mixed replay;
- evaluate critical user paths rather than isolated route green status.
Exit condition:
- the core mixed replay is green on direct answer, selected-object continuity, same-date carryover, recap truthfulness, and technical cleanliness;
- no unresolved
P0remains on the primary user path.
Pass E. Raise semantic robustness to first-class acceptance
Scope:
- evaluate repaired contours through the human user's intent and the human-readable answer before reading techchat;
- treat typo tolerance, short follow-up retarget, and intent-faithful answer selection as architecture work rather than optional UX polish;
- stop accepting a replay as "good enough" when the route is technically valid but the human answer still feels glitchy, stale, or semantically off-target.
Exit condition:
- already-supported business questions no longer fail only because of light live-user noise such as obvious typos or compressed colloquial wording;
- short follow-up turns can switch entity and intent without silently replaying the previous answer;
- new-user perception is no longer "the system glitches", but "the system understood what I meant".
Anti-Goals
This stabilization pass is not:
- a rollback to the old monolith
- a case-by-case regex patch sweep
- a prompt-only wording cleanup
- a UI-only improvement pass
Practical Sequence
- Finish the continuity snapshot and wire it into the hot route / recap path.
- Rework clarification precedence so it becomes a last meaningful step.
- Harden recap and boundary presentation against ungrounded and technical output.
- Raise semantic robustness on repaired contours until live wording no longer feels broken to a human user.
- Rerun the mixed AGENT replay until the critical continuity edges are green and semantically clean.
- Only then continue deeper intent extraction and wider domain expansion.
Current Pass Status
Completed in the current working pass:
- shared continuity snapshot is already wired into recap and adjacent route memory logic;
- grounded address history can now restore
active organization scopeinstead of depending only on explicit company-selection metadata; - early organization clarification no longer outranks item-focused inventory follow-up paths when the session already carries a strong object frame;
- meta boundary replies were already cleaned from technical
MCP/read-onlyleakage. - early
non_domainarbitration no longer suppresses a positive L0 address-lane decision for colloquial but supported exact routes; - foreign-accounting pivots over inventory drilldown now preserve root-scoped carryover instead of dropping continuity before root-frame sanitation;
- the wide
assistantAddressFollowupContextregression pack is green again, including month-only VAT follow-up and inventory -> VAT pivot sanitation. - counterparty document root wording is now recovered through unicode-safe exact signals instead of depending on mojibake-sensitive legacy phrases;
- declined Russian account wording like
по счёту 60now restores account scope inside polarity/runtime guards instead of collapsing intoother_numeric; - exact address intents can now stay in the address lane even if the semantic guard overflags deep investigation without an actual investigative user request;
- selected-object inventory follow-ups can now override a stale stock root intent when the semantic contract already marks
selected_object_scope_detected, including exact user wording likeпо выбранному объекту ... где взяли это; - explicit capability-meta wording for
дельта по договорамnow keeps the asked capability in the user-facing answer instead of collapsing into the genericчто ты умеешьcatalog reply. - the transition hot path now starts consuming the shared continuity snapshot as fallback authority for active item / active organization / grounded inventory root frame instead of rebuilding those values only from local ad hoc history scans;
- live replay
address_truth_harness_phase7_meta_domain_mix_live_20260417_post_arch_fix_rerun2is accepted end-to-end with14/14steps green, including the previously brokenstep_01_counterparty_documentsandstep_04_open_items_account_60.
Still open after this pass:
- mixed continuity is now strong enough for the current phase7 gate, but it still needs broader saved-session proof before domain expansion can be treated as low-risk;
- the next architecture pass should move from one repaired mixed replay to a wider saved-session set and multi-domain acceptance pack;
- remaining work should focus on keeping the unified continuity authority stable under new real user paths, not on wording-only polish or isolated route greens.
- company authority is still not proactive enough at root inventory entry in multi-company sessions without an already grounded active organization;
- the next stabilization slice should prefer system-level company authority handling over repeated local clarification templates when the session has enough business context.
Completed in the current follow-up pass:
- direct company activity-age wording like
а по Альтернативе Плюс сколько лет активности в базе 1С?is now protected by a unicode-safe exact signal instead of depending on mojibake-sensitive legacy lifecycle phrases; - capability meta answers now explain supported business groups through human examples instead of leaking internal operation ids like
vat_period_snapshot,inventory_on_hand_as_of_date,explain_boundary, orsuggest_safe_next_step; - the next proof target after unit/build checks is the live phase5 replay, because it exercises both the restored activity-age path and the capability-meta interrupt in one shared session.
Latest live replay evidence after that proof run:
- the capability meta interrupt is now business-first and no longer leaks internal operation ids in the top block;
- the same replay exposed a stricter continuity defect that the top-level review initially missed: organization identity can drift in session state as a damaged live label like
ООО \\Альтернати"а Плюс\\; - when that happens, the runtime keeps both
organizationand a stalecounterpartyanchor, does not emitcounterparty_cleared_for_selected_organization_activity, and falls intocounterparty_anchor_not_matched_in_materialized_rows; - this is a system-level organization-identity robustness gap between data-scope probing, continuity memory, and exact-route truth gating, not a wording-only prompt defect;
- the current stabilization slice therefore includes hardening organization identity matching itself and rerunning the same live pack until step-level human answers and review verdicts align.
Latest phase8 runtime authority evidence after the manual mixed replay hardening:
- live replay
address_truth_harness_phase8_manual_runtime_authority_mix_live_20260417_rerun1proved that the activity-age route was restored, but also exposed a hidden false-green:step_11_inventory_same_date_after_receivablessilently reused stale inventory-root date2021-03-31instead of the freshest receivables date2020-03-31; - the first fix in
assistantServicewas not sufficient on its own, becausedecomposeStagestill rebuiltinventory_rootfollow-up context by overwritingprevious_filtersfromroot_filterswholesale; - the architectural correction was to preserve
rootauthority for organization / warehouse while preserving the freshest temporal scope (as_of_date,period_from,period_to) from the immediately previous grounded step; - this was locked by direct regressions in
assistantTransitionPolicy.test.tsandaddressInventoryRootFrameRegression.test.ts, plus a live rerun against the same manual replay spec; - live replay
address_truth_harness_phase8_manual_runtime_authority_mix_live_20260417_rerun4is now accepted end-to-end with14/14steps green, including:step_07_capability_metawith business-first human wording;step_11_inventory_same_date_after_receivableson the correct date31.03.2020;step_14_company_activity_agewith restored factual lifecycle answer;- cleaned user-facing company labels in the data-scope meta reply (
ООО Альтернатива Плюс,ООО Лайсвуд,РАЙМ) instead of damaged raw probe labels.
Still open after the accepted phase8 replay:
- proactive organization authority at the very beginning of a new multi-company bookkeeping session is still weaker than the target product feel; the current system now clarifies honestly and cleanly, but it does not yet always pre-offer company selection early in the conversational flow;
- some user-facing inventory/counterparty labels inside business answers still deserve final presentation cleanup, but these are now post-stabilization quality refinements rather than continuity-authority blockers.
Latest phase9 proactive-authority evidence after the fresh multi-company replay:
- a new live replay
address_truth_harness_phase9_proactive_scope_offer_live_20260418_rerun3is accepted end-to-end with5/5steps green; - on the very first smalltalk turn, the assistant now stays in normal living-chat mode but appends a business-first proactive organization offer instead of waiting for a later forced clarification;
- explicit company choice in the next turn is now fixed deterministically into session authority before the first accounting route, so later business turns inherit one stable
active organization; - the restored activity-age route for
ООО Альтернатива Плюсis now proven again inside the same shared session, not only in isolated route checks; - the previously broken same-date inventory pivot after receivables is now routed as
inventory_on_hand_as_of_datewith the carried date31.03.2020and the carried organizationООО Альтернатива Плюс, without falling back into repeated company clarification; - this phase therefore closes the remaining gap called out at the end of phase8: proactive company authority is no longer purely reactive in fresh multi-company bookkeeping sessions.
Still open after the accepted phase9 replay:
- business answers are now semantically correct on this path, but some inventory list formatting still feels heavier and more mechanical than the target human style;
- the next architecture slice should keep expanding saved-session proof across additional real user chains, while separately tightening answer presentation so exact routes do not feel template-driven even when the truth path is already correct.
Latest phase10 bridge-and-aggregate evidence after the manual replay recovery:
- live replay
address_truth_harness_phase10_manual_bridge_and_aggregate_mix_live_20260418_rerun8is accepted end-to-end with9/9steps green; - the previously broken bridge
selected item purchase provenance -> VAT on purchase dateis now explicit instead of implicit:- the continuity layer derives the purchase month from the grounded provenance evidence;
- the same session keeps
selected objectcontinuity instead of collapsing into generic root-only VAT arbitration; - the runtime now routes this follow-up as
vat_liability_confirmed_for_tax_period, not asforecast,unknown, or generic clarification;
- the same replay also proves that the neighboring aggregate fixes are live on the real assistant path:
- top-customer-all-time now returns a direct business answer first;
- top-year aggregate now returns a direct business answer first;
- very-old-stock now prefers
inventory_aging_by_purchase_dateover a generic inventory snapshot;
- this matters architecturally because the seam that used to exist only as ambient monolith behavior is now protected as an explicit carryover contract plus replay-backed acceptance path.
Still open after the accepted phase10 replay:
- the user-facing VAT explanation block is now correct and grounded, but some long exact answers still feel heavier than the target human product tone;
- the next architecture slice should keep moving from repaired bridge authority into answer-shaping cleanup and broader saved-session replay coverage, not back into isolated wording tweaks.
Latest phase11 manual follow-up/meta-quality evidence after the current hardening loop:
- live replay
address_truth_harness_phase11_manual_followup_meta_quality_live_20260418_rerun6is accepted end-to-end with10/10steps green; - the previously broken
ты умеешь считать дельту по договорам?branch is now protected by an explicit authority rule:- raw capability-meta intent outranks canonical predecompose rewrites that look like address retrieval;
- stale VAT follow-up continuity no longer wins over a fresh capability/meta question in the same session;
- the previously broken short counterparty retarget
а по свкis now clean on the real assistant path:- the display label uses the most specific confirmed counterparty name instead of a generic group fallback or a stale carryover anchor;
- short uppercase Cyrillic acronyms like
СВКno longer get stripped by the user-facing sanitizer as false mojibake; - the replay acceptance rule now targets the real regression (
Контрагент: Группа Найдено ...) instead of incorrectly rejecting valid names likeКонтрагент: Группа СВК.;
- this phase matters architecturally because it closes two different seam classes at once:
meta authority vs stale follow-up authority;resolved business label vs boundary sanitization noise.
Still open after the accepted phase11 replay:
- the current phase11 path is now semantically clean, but broader manual/user session packs still need to be replayed before expansion can be called low-risk across new domains;
- answer shaping on some long exact list answers is still heavier than the target human product feel, even though the truth path and routing are now correct;
- the next architecture slice should move to wider saved-session acceptance coverage and humanized exact-answer presentation, not back to isolated prompt-level repairs.
Latest continuity-authority convergence evidence after the current route pass:
- the route hot path now consumes the shared continuity snapshot directly instead of relying only on local
findLastGrounded...helpers:- grounded address context can now survive into route arbitration even when the legacy local helper returns nothing for the current turn shape;
- active organization continuity is now allowed to participate in organization-selection arbitration, instead of forcing route policy to reconstruct that context only from immediate clarification payloads;
- a bare organization-selection turn after grounded bookkeeping continuity is no longer automatically classified as
non_domain_query_indexednoise when the session still carries valid grounded business context; - session organization recovery inside the data-scope layer now has a final fallback to the same continuity snapshot, reducing one more duplicate path that used to rescan assistant history independently;
- the living-chat runtime now also consumes continuity-backed organization authority:
- deterministic organization-fact boundary replies can now trigger from grounded continuity even when
sessionScope.selectedOrganizationandsessionScope.activeOrganizationare both empty at runtime entry; - the chat layer now records whether it entered with grounded continuity and which organization came from that continuity snapshot, making future saved-session review less blind;
- proactive organization offer logic is now explicitly blocked when grounded address continuity already exists, so the chat layer does not re-offer company selection on top of an already grounded business session;
- deterministic organization-fact boundary replies can now trigger from grounded continuity even when
- the next continuity-authority pass now centralizes
organization authorityin the shared continuity policy instead of letting route, living-chat, and data-scope reconstruct it independently:- a single resolver now merges grounded address continuity, assistant-side living-chat scope memory, session scope, and clarification candidates into one authority object;
- route arbitration now consumes that shared authority for organization clarification continuation instead of rebuilding candidates and fallback selection locally;
- living-chat runtime now boots with the same authority object, so
knownOrganizations,selectedOrganization, andactiveOrganizationno longer start from a different merge order than the route layer; - data-scope active-organization recovery now also reads the same authority object, reducing one more history-scan seam that used to drift from route and chat;
- targeted tests now protect this precedence layer directly, including the case where assistant-side living-chat selection must outrank older grounded continuity without losing the grounded organization in the merged known set;
- the first human-answer-shaping cleanup pass is now applied to heavy profile/aggregate exact answers:
period_coverage_profileanddocument_type_and_account_section_profilenow start with a direct business-first lead (Коротко: ...) instead of service-flavored intros likeпрофиль собран/строк агрегата;- the top block now states the business conclusion first and leaves ranked detail blocks below, which reduces the catalog-like feel without hiding the actual data;
- the next human-answer-shaping cleanup pass is now applied to VAT exact replies:
vat_payable_forecastandvat_liability_confirmed_for_tax_periodnow open with a business-firstКоротко: ...lead, while the detailed calculation stays in the secondary block;- service-flavored top lines like
Собран прогноз...,Режим результата..., andСтрок агрегата...are removed from the first screen of the reply, which makes VAT answers read like user-facing guidance instead of an engine report; - VAT reply tests now explicitly protect this top-block shape, so future changes cannot silently reintroduce the same mechanical preamble;
- the next human-answer-shaping cleanup pass is now applied to counterparty ranking/profile replies:
counterparty_activity_lifecycle,contract_usage_overview,customer_revenue_and_payments,supplier_payouts_profile, andcontract_usage_and_valuenow open with business-first wording instead of service-flavoredпрофиль собран / строк агрегата / строк источника;- ranking and contract replies now preserve user wording better in the visible heading layer, including
минимальный бюджетphrasing for low-turnover active contracts; - targeted ranking/profile tests now protect the new top-block shape, so these families are less likely to regress back into report-like wording during later route/domain work;
- the next human-answer-shaping cleanup pass is now applied to plain list replies in the exact lane:
list_contracts_by_counterparty,list_documents_by_contract,bank_operations_by_counterparty,bank_operations_by_contract, and the generic factual-list fallback no longer leaklive address lane / catalog address lanewording into the user-facing answer;- these list replies now start with direct business-first leads and keep the selected rows below, which preserves factual usefulness without exposing internal routing labels;
- targeted utf8 header tests now explicitly protect against
laneleakage in these list families;
- the next human-answer-shaping cleanup pass is now applied to open-contract evidence-heavy replies:
list_open_contractsandopen_contracts_confirmed_as_of_dateno longer open with numberedБлок 1/2/3...report framing and now start with direct business-first summaries;- section headings are still structured, but they now read like user-facing guidance instead of an internal audit report, while keeping the same factual slices and evidence detail below;
- targeted open-contract tests now protect the no-
Блок 1top-block shape, so future contour work cannot silently bring the report framing back;
- the next human-answer-shaping cleanup pass is now applied to confirmed debt snapshots:
payables_confirmed_as_of_dateandreceivables_confirmed_as_of_datenow open with business-firstКоротко: ...summaries instead of numbered report framing;- debt snapshot sections now keep the same factual structure, but top-level headings are user-facing (
Что учтено,Сводка,Категории...) rather thanБлок 1/2/3...; - direct compose tests now protect the no-
Блок 1top-block shape for both confirmed debt families; - isolated runtime proof for the
payables_confirmed_as_of_datetryHandlepath still needs a wider rerun, because the narrow harness invocation currently returnsundefinedbefore semantic assertions and therefore is not reliable evidence for this shaping pass by itself; - this is still not the end of shaping work: heuristic debt shortlists and some residual catalog-style blocks still need the same cleanup;
- this pass does not yet finish full single-owner continuity, but it narrows one of the remaining seams where route arbitration and scope memory could disagree about whether the session was still grounded.
Latest phase12 wider saved-session replay evidence after the current architecture pass:
- a new live replay
address_truth_harness_phase12_wider_saved_session_pool_live_20260418_rerun3is accepted end-to-end with20/20steps green; - this wider pack now proves one shared assistant session across a longer mixed path:
- first-turn smalltalk with proactive company offer;
- explicit company fixation;
- capability-meta interruption;
- inventory roots and historical roots;
- selected-object provenance and sale follow-up;
- selected-item -> VAT-period bridge;
- revenue aggregate pivot;
- payables/receivables polarity mirror;
- counterparty documents and short-name follow-up;
- account-60 tails;
- inventory aging and company activity-age;
- the replay exposed one real remaining seam before final acceptance:
- colloquial smalltalk entry reached the correct
living_chat + proactive_scope_offerlane, but the first answer still depended on raw LLM preamble and leaked irrelevant generic chat (Какой сегодня день?); - the fix was to convert
first-turn smalltalk + proactive organization offerinto a deterministic guarded entry path instead of trusting uncontrolled LLM preamble above the offer; - colloquial living-chat detection is now unicode-safe and no longer depends on Cyrillic
\\bboundaries that silently fail in JavaScript regex;
- colloquial smalltalk entry reached the correct
- this matters architecturally because another formerly ambient monolith behavior is now an explicit runtime contract:
- first-turn proactive company entry is controlled by runtime authority, not prompt luck;
- the broader saved-session pack now proves that organization authority, continuity carryover, and top-level chat entry survive one longer real-user trajectory rather than only the earlier flagship chains.
Still open after the accepted phase12 replay:
-
replay breadth is now better than before, but still not yet broad enough to call multi-domain expansion low-risk by default;
-
the biggest remaining architecture risk is no longer the original continuity collapse, but the unfinished convergence toward one true single-owner session authority across every hot path;
-
the next execution slice should therefore continue prioritizing:
- more saved-session and multi-trajectory replay breadth;
- less duplicated state reconstruction in route / transition / living-chat glue;
- controlled expansion only after those broader proofs stay green.
-
the next authority-convergence pass now also removes one more duplicate scope builder at the very start of the turn:
assistantOrganizationScopeRuntimeAdapterno longer reconstructsknownOrganizations / selectedOrganization / activeOrganizationonly from its own local history helpers;- the same session-scope bootstrap now consumes the shared continuity-backed organization authority first and only then falls back to older helper outputs and navigation-state overrides;
- this matters because route, living-chat, data-scope, and early session-scope bootstrap are now closer to the same organization merge order instead of keeping a separate pre-route branch with its own drift risk;
- targeted tests now explicitly protect the case where assistant-side continuity authority is present in prior assistant debug even when legacy history helpers are empty;
- live replay
address_truth_harness_phase12_wider_saved_session_pool_live_20260418_rerun4remains accepted20/20, which is the critical proof that this authority convergence did not reopen the wider saved-session path.
-
the next architecture pass exposed and fixed a deeper hybrid-investigation contract break outside the flagship address chain:
- phase13 replay showed that hybrid anomaly/tails questions were no longer failing only on follow-up continuity; the root entry itself had stopped entering the hybrid lane because deep-turn normalization was calling the normalizer with
promptVersion=address_query_runtime_v1; - the model was already returning valid
normalized_query_v2_0_2payloads for these questions, but the runtime validated them as legacyv1, discarded the parsed normalized object, and then dropped into claim-bound clarification with emptyfragments / route_summary; - deep-turn normalization now forces an actual normalizer contract (
promptVersion=normalizer_v2_0_2,schemaVersion=v2_0_2) unless the caller already supplied a normalizer-family prompt explicitly; - this is a real architecture fix, not a case patch: deep-turn no longer inherits a user-facing address runtime prompt as if it were a normalizer schema contract;
- targeted deep-turn normalization tests now protect this seam directly, including the case where an address-lane prompt would previously have caused silent
v1validation and total fragment loss; - live replay
address_truth_harness_phase13_hybrid_followup_authority_live_20260418_rerun3is now accepted:- root supplier tails anomaly questions re-enter
hybrid_store_plus_livewith grounded fragments and non-empty deterministic route summaries; - narrowing follow-up for
2020-06 / account 60now keeps hybrid/batch routing instead of collapsing into empty clarification; - the broader hybrid investigation contour is therefore back under explicit runtime authority rather than ambient luck.
- root supplier tails anomaly questions re-enter
- phase13 replay showed that hybrid anomaly/tails questions were no longer failing only on follow-up continuity; the root entry itself had stopped entering the hybrid lane because deep-turn normalization was calling the normalizer with
-
the remaining translit root seam is now also closed in the same contour:
- transliterated supplier-tail wording no longer loses the causal tail during predecompose entry handling;
- live replay
address_truth_harness_phase13_hybrid_followup_authority_live_20260418_rerun4is accepted with the translit root step returningfactual_with_explanationand staying inside hybrid investigation routing; - endpoint coverage now explicitly requires the translit account-60 tail question to keep every routed fragment in
hybrid_store_plus_live, so future refactors cannot silently split the same question back intohybrid + store_canonical.
-
the next authority-convergence pass now removes one more local organization reconstruction seam from the transition hot path:
assistantTransitionPolicyno longer reconstructs clarification/company authority only from ad hoc history scans and raw continuity snapshot pieces;- follow-up carryover now reads the shared organization authority object first, including assistant-side active organization memory and clarification candidates, before falling back to older local filters;
- this matters because mixed follow-up questions that pivot after assistant-side company fixation no longer depend on whether the previous address debug happened to still carry
organizationin its own extracted filters; - targeted transition regression now protects the case where grounded history is empty but assistant-side organization authority is already present;
- wide saved-session replay
address_truth_harness_phase12_wider_saved_session_pool_live_20260418_rerun5remains accepted20/20, which is the critical proof that this transition-layer convergence did not reopen the broader continuity path.
-
the next active-context convergence pass now removes one more duplicate
address debug -> item/date/organizationparser from memory-recap and living-chat follow-up builders:assistantContinuityPolicynow exposes one shared helper foritem,organization, andscopedDateextraction from grounded address debug, including root-frame fallback;assistantMemoryRecapPolicynow consumes this shared helper instead of manually rebuilding the same context fromextracted_filtersandaddress_root_frame_contextin multiple places;- this matters because deterministic memory-recap and historical-inventory capability replies now depend on the same context interpretation as the rest of continuity policy, rather than on a separate local parser that could drift on root-frame-only turns;
- targeted continuity / memory-recap / living-chat tests now protect the root-frame fallback path explicitly;
- wide saved-session replay
address_truth_harness_phase12_wider_saved_session_pool_live_20260418_rerun6remains accepted20/20, which is the critical proof that this context-helper convergence did not reopen the broader living-chat continuity path.
-
the next cleanup pass also removes one more class of false owners from the living-chat adapter itself:
assistantLivingChatRuntimeAdapterno longer keeps local dead history scanners for grounded inventory / selected-object / generic address debug lookup that are not part of the active execution path anymore;- this does not change runtime behavior directly, but it reduces the chance that future fixes accidentally revive or patch a stale local owner instead of the shared continuity / memory-recap policy seam;
- targeted living-chat adapter tests and backend build remain green after the cleanup, which is the necessary proof that this was a structural owner-reduction pass rather than a hidden behavior change.
-
the next continuity-authority pass now removes one more local
addressDebug -> carryover anchor/dateparser from the transition hot path:assistantContinuityPolicynow exposes shared helpers foranchorType/anchorValueresolution and raw temporal carryover scope (as_of_date / period_from / period_to) from groundedaddressDebug, including root-frame fallback;assistantTransitionPolicynow consumes these helpers instead of rebuilding previous anchor selection from rawanchor_value_*and filter fields inline, and instead of reading carryover dates directly fromreadAddressDebugFilters(...)in multiple ad hoc places;- this matters because follow-up carryover is now closer to the same continuity interpretation layer that already owns item / organization / scoped-date facts, rather than keeping a separate transition-local parser for the same runtime evidence;
- targeted continuity and transition regressions now protect inferred anchor carryover when explicit
anchor_typeis absent, plus root-frame temporal fallback at the helper layer; - wide saved-session replay
address_truth_harness_phase12_wider_saved_session_pool_live_20260418_rerun7remains accepted20/20, which is the critical proof that this transition-layer convergence did not reopen the broader saved-session path.
-
the next organization-authority pass now removes one more local history parser from the data-scope / session-bootstrap contour:
assistantDataScopePolicy.extractKnownOrganizationsFromHistoryno longer rebuildsknown organizationsfrom rawassistant_* / organization_candidates / extracted_filters / root_frame_contextfields on its own;- it now reads the shared
resolveAssistantOrganizationAuthority(...)result first and only keeps assistant-text parsing as a compatibility fallback for older free-text scope replies; - this matters because data-scope probing, organization selection bootstrap, and the broader continuity layer are now closer to one canonical organization merge order instead of keeping a separate debug-field collector inside the scope policy;
- targeted data-scope and organization-scope tests now protect that known organizations still include assistant-side authority, grounded address context, and free-text fallback organizations;
- wide saved-session replay
address_truth_harness_phase12_wider_saved_session_pool_live_20260418_rerun8remains accepted20/20, which is the critical proof that this data-scope convergence did not reopen the flagship saved-session path.
-
the next session-bootstrap pass now removes one more legacy callback seam from the organization scope adapter:
assistantOrganizationScopeRuntimeAdapterno longer depends on a separatefindLastAssistantActiveOrganization(...)callback even though it already computes shared continuity-backed organization authority internally;- active organization bootstrap now flows through selected organization, navigation organization, and shared continuity authority in one place instead of keeping a second callback-shaped fallback branch beside the authority object;
assistantService.resolveSessionOrganizationScopeContext(...)no longer passes that legacy callback into the runtime adapter, which reduces one more orchestration seam where old and new organization owners could drift;- targeted organization-scope, data-scope, and route regressions remain green after the change, and wide saved-session replay
address_truth_harness_phase12_wider_saved_session_pool_live_20260418_rerun9remains accepted20/20, which is the critical proof that this bootstrap convergence did not reopen the flagship continuity path.
-
the next replay-breadth pass now proves a different late-session contour instead of replaying only the flagship chain:
- a new live pack
address_truth_harness_phase14_counterparty_tail_resumevalidatesdata-scope meta -> explicit company selection -> counterparty docs -> short-name follow-up -> inventory today -> account 60 -> inventory aging -> historical inventory -> organization activity analyticsinside one shared session; - the first draft of this pack exposed one real architecture seam rather than another continuity collapse:
Как ты оценишь деятельность компании?after grounded organization activity-age was still falling intoliving_chatbecause the route depended too much on the L0 gate and not enough on the resolved supported intent; addressCounterpartyIntentSignalsnow treats company-activity assessment wording as the samecounterparty_activity_lifecyclecontour instead of leaving it as unsupported meta chat;assistantRoutePolicynow recovers the address lane from a supported resolved intent even when the initial L0 gate stays negative, so the system no longer loses a real business contour just because the low-level shape classifier stayedunsupported;- targeted counterparty UTF-8 and route-policy regressions now explicitly protect this seam, including the exact late-tail wording
Как ты оценишь деятельность компании?; - live replay
address_truth_harness_phase14_counterparty_tail_resume_live_20260418_rerun2is accepted10/10, which is the critical proof that replay breadth is now broader than the original flagship chain and that late-session organization analytics no longer depend on ambient chat luck.
- a new live pack
-
the next transition-authority pass now closes a subtler root-scoped carryover seam inside the shared follow-up path:
assistantService.buildAddressFollowupOffer(...)now reads follow-up anchor metadata through the shared continuity helper instead of reconstructing it from yet another localaddressDebugparser;assistantTransitionPolicyno longer promotes assistant-sideorganization authorityintoprevious_anchor_type=organizationwhen a root-scoped inventory pivot intentionally sanitizes the selected-item carryover and keeps only the restored root frame;- this matters because
root_context_onlyVAT pivots from inventory drilldown should preserve restored organization/date filters without pretending that restored scope is itself a user-selected follow-up anchor; - targeted
assistantAddressFollowupContextandassistantTransitionPolicysuites are now green after the fix, explicitly protecting theinventory drilldown -> VAT pivotregression where selected-item carryover must be removed while the inventory root company/date window remains intact; - live replay
address_truth_harness_phase12_wider_saved_session_pool_live_20260418_rerun10remains accepted20/20, which is the critical proof that this anchor-sanitization convergence did not reopen the flagship saved-session continuity path.
-
the next replay-breadth pass now proves a different late-session contour around answer inspection and self-correction:
- a new live pack
address_truth_harness_phase15_answer_inspection_followupvalidatessmalltalk -> company fixation -> historical inventory -> selected-item purchase provenance -> selected-item sale trace -> answer inspection -> VAT-on-purchase-date bridgeinside one shared session; - the first strict replay exposed a real architecture seam rather than a wording issue:
- after a grounded selected-item sale trace, the user could ask
у тебя написано кто контрагент: рабочая станция - это ошибка?; - the runtime was still trying to treat that as a fresh address retrieval request, which collapsed into
unknown / unsupportedinstead of inspecting the already grounded previous answer;
- after a grounded selected-item sale trace, the user could ask
- the fix is now explicit in the orchestration layer:
- living-mode policy exposes a dedicated answer-inspection signal for self-correction wording;
- meta follow-up policy can now recognize
answer inspection over grounded answeras its own follow-up class instead of leaving it to the generic address lane; - route policy now keeps that class out of the address lane and deliberately routes it back into living-chat inspection logic;
- living-chat runtime now serves a deterministic inspection reply contract for selected-item provenance / sale-trace answers, explicitly distinguishing
selected itemfromcounterpartyand preserving the next business move;
- this matters architecturally because another ambient monolith behavior is now an explicit runtime contract:
- grounded answer inspection is no longer left to accidental prompt luck;
- self-correction over a previous exact answer can now coexist with selected-object continuity instead of breaking the session into unsupported chat;
- the neighboring bridge
selected-item trace -> VAT on purchase dateremains alive after the inspection turn, which proves that answer inspection no longer tears down the active business frame;
- live replay
address_truth_harness_phase15_answer_inspection_followup_live_20260418_rerun5is accepted9/9, which is the critical proof that this inspection-follow-up contour now survives as a real saved-session path instead of a one-off manual rescue.
- a new live pack
-
the next living-chat convergence pass now removes one more local owner from the grounded contextual reply layer:
- answer-inspection follow-ups are no longer interpreted only inside
assistantLivingChatRuntimeAdaptervia its own local selected-object reply builder; assistantMemoryRecapPolicynow owns all three grounded contextual deterministic reply classes used by living-chat:- inventory-history capability follow-up;
- memory recap over grounded address context;
- answer inspection over the previous grounded selected-object answer;
resolveAssistantLivingChatMemoryContext(...)now carries explicitcontextualAnswerInspectionFollowupplus the grounded address debug that should be inspected, so living-chat reads one shared policy context instead of reconstructing this class from raw mode reason and direct continuity fields inline;- this matters because living-chat is now less of a hidden parallel owner of grounded session semantics, and future answer-inspection / recap / capability follow-up fixes can land in one shared policy seam instead of splitting again across adapter-local builders;
- targeted recap and living-chat runtime tests stay green after this move, and live replay
address_truth_harness_phase15_answer_inspection_followup_live_20260418_rerun7remains accepted9/9, which is the critical proof that the policy convergence did not reopen the phase15 contour.
- answer-inspection follow-ups are no longer interpreted only inside
-
the next living-chat owner-reduction pass now removes one more dead parallel builder layer from the adapter itself:
assistantLivingChatRuntimeAdapterno longer keeps local deterministic builders for inventory-history capability, memory recap, or selected-object answer inspection alongside the already active shared policy implementations;- those builders were no longer on the active runtime path, but their presence kept a false second owner of the same user-facing behavior inside the adapter and increased the chance that future fixes would land in dead code instead of the shared policy seam;
- the adapter now imports and uses only the shared builders from
assistantMemoryRecapPolicy, which makes the live chat branch structurally closer to a single owner for grounded contextual replies; - targeted
assistantLivingChatRuntimeAdapterandassistantMemoryRecapPolicytests stay green after the cleanup, and backend build remains green; - live reruns on
phase14andphase15on2026-04-19surfaced partial top-level status only because the packs still pininventory todayexpectations to2026-04-18; the repaired contextual reply contours themselves stayed semantically clean, which confirms this pass as owner reduction rather than a new runtime regression.
-
the next continuity-authority pass now removes one more duplicate root-frame owner from
assistantServicefollow-up glue:assistantService.extractAddressCarryoverAnchor(...)no longer reconstructs anchor resolution from rawanchor_value_* / extracted_filtersusing its own local precedence order;assistantService.findRecentInventoryRootFrame(...)no longer rebuilds inventory root carryover fromdetected_intent + extracted_filtersas a separate local parser;- both seams now consume the shared continuity helpers:
resolveAddressDebugAnchorContext(...)buildInventoryRootFrameFromAddressDebug(...)
- this matters because follow-up carryover in the top-level service now reads the same root-frame authority that already owns
root_filters / root_anchor / current_frame_kind, instead of keeping a service-local fallback that could silently prefer drilldownextracted_filtersover the realaddress_root_frame_context; - targeted
assistantAddressFollowupContextandaddressInventoryRootFrameRegressionsuites are green after the move, including a new regression that explicitly provesroot_filterscome fromaddress_root_frame_context.root_filtersrather than from stale drilldownextracted_filters; - this pass strengthens continuity convergence in the top-level orchestration glue without introducing a new case-specific branch.
-
the next continuity-authority pass now removes one more duplicate carryover owner from
assistantTransitionPolicy:- transition no longer seeds
previous_filtersfrom rawpreviousAddressDebug.extracted_filtersas an isolated local truth source; - shared continuity now owns that merge through
resolveAddressDebugCarryoverFilters(...), which overlays inventoryaddress_root_frame_context.root_filtersonto stale drilldown filters before the follow-up policy starts composing pivots; - this matters because the top-level transition glue can now inherit the same root-frame date and warehouse authority that already exists in continuity, instead of silently carrying a stale drilldown
as_of_dateintoroot_context_onlypivots; - targeted
assistantContinuityPolicyandassistantTransitionPolicysuites are green after the move, including explicit regression coverage forinventory_purchase_documents_for_item -> inventory_on_hand_as_of_datecarryover whereroot_filtersmust override a stale drilldown date; - this pass reduces one more hidden state-reconstruction fork between the continuity layer and transition glue without introducing case-specific routing;
- a fresh live rerun of
address_truth_harness_phase12_wider_saved_session_poolon2026-04-19stayed semantically clean on the repaired carryover path and failed only on the already-known time-unstabletodayexpectations (2026-04-18vs2026-04-19) ininventory_root_today,payables_today, andreceivables_mirror_today.
- transition no longer seeds
-
the next continuity-authority pass now centralizes one more shared inventory root-frame seam that used to be split across
assistantServiceandassistantTransitionPolicy:- continuity now owns
hydrateInventoryRootFrameState(...), which fills missing organization/date scope intoinventoryRootFrameand computescurrentFrameKindfrom the same shared state object instead of rebuilding both pieces locally inside transition glue; - continuity now also owns
buildRootScopedCarryoverFilters(...), so root-scoped filter precedence no longer lives as a separate service-local helper and tests no longer need a legacy re-export fromassistantService; - this matters because
inventoryRootFrame,current_frame_kind, androot-scopedfilter precedence now converge through one authority layer beforeroot_context_onlypivots are decided, which reduces another hidden chance for state drift when new domains or new follow-up families are added; - targeted
assistantContinuityPolicyandassistantTransitionPolicysuites are green after the move, with explicit coverage for root-frame hydration from navigation scope and for previous-date precedence over a stale inventory root frame; - a fresh live rerun of
address_truth_harness_phase12_wider_saved_session_poolon2026-04-19remained semantically stable on all repaired continuity paths and again failed only on the already-known date-sensitivetodayexpectations, not on the new shared root-frame state owner.
- continuity now owns
-
the next continuity-authority pass now removes another dense party-anchor owner from the transition hot path:
- continuity now owns
applyHistoricalPartyCarryoverFilters(...), socontract/counterpartybackfill for party-driven follow-up families no longer lives as an inline cascade insideassistantTransitionPolicy; - continuity now also owns
applyReferencedEntityCarryover(...), so displayed entity mentions from the previous grounded answer updateprevious_filters,previous_anchor_*, andfollowupSelectionModethrough one shared state helper instead of another transition-local mutation block; - this matters because counterparty / contract / selected-entity follow-ups are one of the heaviest remaining sources of local carryover reconstruction, and moving them under the shared continuity layer reduces another chance that route retargeting and anchor state drift apart when new domains are added;
- targeted
assistantContinuityPolicyandassistantTransitionPolicyregressions now protect both the helper layer and a realdisplayed counterparty -> contractsfollow-up path; - the next proof after this pass should still come from a live replay, but the expected verdict should now only move if a real counterparty carryover path regresses rather than because the state mutation lived in an inline transition branch.
- continuity now owns
-
the next continuity-authority pass now removes another selected-item state owner from the transition hot path:
- continuity now owns
applySelectedItemCarryover(...), soprevious_filters.itemplusprevious_anchor_*for selected-object inventory follow-ups no longer mutate inline insideassistantTransitionPolicy; - item carryover precedence is now explicit in one helper: navigation focus item -> continuity active item -> explicit selected-object label from the current message;
- this matters because selected-object follow-ups are one of the most fragile continuity seams in the product, and keeping their anchor mutation in the shared continuity layer reduces another chance that future inventory/domain expansion splits
focus_objecttruth from follow-up carryover truth; - targeted continuity and transition regressions now protect both the helper layer and a real short selected-item follow-up path that must keep the
itemanchor without reopening company/date drift.
- continuity now owns
-
the next replay-gate honesty pass now removes a false red zone from the flagship saved-session proof:
address_truth_harness_phase12_wider_saved_session_poolno longer hardcodes2026-04-18insidetoday-scoped steps for inventory root, payables, and receivables mirror follow-up;- those steps now resolve
as_of_dateand visible date patterns through runtime placeholders ({{runtime.today_iso}},{{runtime.today_dot_regex}}), so the replay verdict tracks real orchestration regressions instead of calendar drift; - this matters because the flagship phase12 pack is one of the main top-level readiness indicators, and a date-stale spec was creating a false
partialverdict even whileselected_object_continuity_ok,direct_answer_ok, and the repaired continuity paths stayed green; - the next live rerun after this pass should tell us whether any real runtime seam still exists in phase12 once the date-noise is removed.
-
the next continuity-authority pass now centralizes temporal backfill precedence for follow-up filters:
- transition no longer holds a service-local block of
shouldBackfillPreviousDateScopeFromNavigation + six field-level ifsforas_of_date / period_from / period_to; - shared continuity now owns that merge via
applyTemporalCarryoverFilters(...), whileshouldUseNavigationTemporalCarryover(...)keeps the intent-family boundary explicit in one place; - this matters because navigation date scope and continuity temporal scope are now merged through one owner before transition decides pivots, instead of being backfilled ad hoc inside the hot path;
- targeted
assistantContinuityPolicyandassistantTransitionPolicysuites are green after the move, with direct helper coverage for navigation-first temporal precedence and for non-applicable intent families staying untouched; - a fresh live rerun of
address_truth_harness_phase12_wider_saved_session_poolon2026-04-19stayed semantically stable and again failed only on the already-known date-sensitivetodayexpectations, not on the new shared temporal carryover authority.
- transition no longer holds a service-local block of
-
the next continuity-authority pass now centralizes organization carryover precedence for follow-up filters:
- transition no longer owns a local cascade of
historical organization -> shared authority -> continuity snapshot -> navigation organization -> clarification selection; - shared continuity now owns that merge through
applyOrganizationCarryoverFilters(...), so organization hydration in follow-up filters has a single explicit precedence contract; - this matters because
previous_filters.organizationis now aligned with the same continuity authority story that already drives route, living-chat, and data-scope, instead of keeping one more hot-path-only merge order inside transition glue; - targeted
assistantContinuityPolicyandassistantTransitionPolicysuites are green after the move, with direct helper coverage for organization precedence and for preserving an already grounded organization value; - a fresh live rerun of
address_truth_harness_phase12_wider_saved_session_poolon2026-04-19remained semantically stable and again failed only on the already-known date-sensitivetodayexpectations, not on the new shared organization carryover authority.
- transition no longer owns a local cascade of
-
the next continuity-authority pass now centralizes displayed-entity retargeting and removes another hidden duplicate owner from the transition hot path:
- continuity now owns
resolveDisplayedEntityFollowupRetarget(...), sodisplayedEntityTargetIntentand the companion carryover mutation for displayed counterparty / contract mentions are produced by one shared helper instead of being split between a local retarget branch and a separate transition mutation block; - the shared retarget contract is now explicitly UTF-8-safe, which matters because a broken regex encoding in the first extraction attempt silently collapsed short phrases like
покажи договоры по СВКback into stale previous-intent carryover; assistantTransitionPolicyno longer keeps a second localresolveDisplayedEntityRetargetIntent(...)owner beside the shared continuity helper, which reduces another chance that future follow-up fixes land in dead code or diverge between route retarget and anchor hydration;- targeted
assistantContinuityPolicyandassistantTransitionPolicysuites are green after the move, and a fresh live rerun ofaddress_truth_harness_phase11_manual_followup_meta_qualityon2026-04-19is accepted10/10, including the short displayed-counterparty retarget step.
- continuity now owns
-
the next continuity-authority pass now centralizes one more dense decision block from the transition hot path:
- continuity now owns
resolveInventoryFollowupPivotFlags(...), so inventory root pivots and explicit same-date pivots are no longer computed by a local boolean cascade insideassistantTransitionPolicy; - continuity now also owns
resolveFollowupTargetIntent(...), socarryover target intentprecedence for purchase-date VAT bridge, selected-object retarget, root-context carryover, same-date pivot, displayed-entity retarget, and plain previous-intent fallback is expressed in one shared helper instead of an inline ternary tower; - this matters because root-pivot semantics and target-intent precedence are among the heaviest remaining orchestration decisions in the follow-up path, and keeping them under one shared continuity layer reduces another chance that future domain expansion reintroduces drift between carryover state and target route selection;
- targeted
assistantContinuityPolicyandassistantTransitionPolicysuites are green after the move, and a fresh live rerun ofaddress_truth_harness_phase12_wider_saved_session_poolon2026-04-19is accepted20/20, which is the critical proof that the flagship mixed replay still survives after the decision-block extraction.
- continuity now owns
-
the next top-level orchestration pass now removes one more heavy owner from
assistantServiceand makes route arbitration more self-contained:- the base
address tool gatedecision no longer lives as a service-local block inassistantServiceand is no longer injected into route arbitration as an external callback-only source of truth; assistantRoutePolicynow owns the defaultresolveBaseAddressToolGateDecision(...)path itself, including:- meta/capability skip logic;
- classifier/intent/LLM-canonical exact-route signals;
- lexical/address-data fallback signals;
- unsupported predecompose semantic guard;
followup_context_detectedfallback when no direct message signal exists;
- this matters because the top-level
run address lane vs keep chatgate is now structurally closer to the same route-policy owner that already arbitrates memory/meta/follow-up/deep transitions, instead of remaining split acrossassistantServiceglue and route policy heuristics; - the route policy still accepts an override in tests, so regression coverage remains narrow and controllable, but the production runtime no longer depends on a duplicate service-local decision block;
- targeted
assistantRoutePolicy,assistantContinuityPolicy, andassistantTransitionPolicysuites are green after the move, and a fresh live rerun ofaddress_truth_harness_phase12_wider_saved_session_poolon2026-04-19remains accepted20/20, which is the proof that the flagship mixed path survives after lifting the gate out ofassistantService.
- the base
-
the next route-arbitration pass now extracts one more dense decision tower from the top-level orchestration hot path:
assistantRoutePolicynow ownsresolveAddressFallbackToDeepArbitration(...), so the four critical fallback verdicts are produced by one explicit helper instead of being recalculated as a scattered inline boolean block:unsupported_address_intent_fallback_to_deepdeep_analysis_signal_fallback_to_deepaggregate_analytics_signal_fallback_to_deepdeep_session_continuation_fallback_to_deep
- this matters because
address vs deeparbitration is one of the last heavy control-plane seams in the project: it decides whether the assistant stays in exact-data mode or escalates into deep-analysis mode, and leaving that logic as a long inline branch makes future domain expansion much more likely to reintroduce contradictory fallback rules; - the move does not change the route owner, but it makes the owner explicit and testable as one decision unit inside route policy rather than a fragile chain of local booleans;
- targeted route/continuity/transition suites remain green after the move, and a fresh live rerun of
address_truth_harness_phase12_wider_saved_session_poolon2026-04-19remains accepted20/20, which is the proof that the flagship mixed contour survives the extraction of the deep fallback arbitration seam.
-
the next route-arbitration pass now extracts the protected exact-route contract from another dense inline branch:
assistantRoutePolicynow ownsresolveAddressLaneProtectionArbitration(...), so the following coupled verdicts are produced by one explicit helper instead of a scattered cluster of route-local booleans:supportedAddressIntentDetectedsupportedAddressRouteCandidateDetectedsemanticDeepInvestigationHintDetectedsemanticAggregateShapeDetectedfollowupSemanticOverrideToDeepAllowedexactAddressIntentProtectedFromSemanticDeepHintprotectAddressLaneFromFallback
- this matters because the exact-route protection contract is what stops a valid address route from being pulled into deep-analysis mode just because semantic guards or hybrid prompts hint at deeper investigation;
- keeping that contract in one helper reduces another major chance that future domain expansion introduces contradictory exact-route vs deep-fallback precedence in nearby branches;
- targeted route/continuity/transition suites remain green after the move, including direct regression coverage that an exact VAT route must stay in the address lane even when only a semantic deep hint is present;
- a fresh live rerun of
address_truth_harness_phase12_wider_saved_session_poolon2026-04-19remains accepted20/20, which is the proof that the flagship mixed contour still survives after extracting the route-protection seam.
-
the next replay-breadth and continuity-authority pass now closes a non-flagship late-switch seam that was still dangerous before multi-domain expansion:
assistantOrganizationScopeRuntimeAdapternow prefers continuity-backed selected/active organization over stale address navigation scope after a late chat-side company switch, so a fresh company fixation in living-chat can no longer be silently overwritten by the previous address snapshot on the very next exact-data turn;mergeFollowupContextWithOrganizationScopeRuntime(...)now treats active session organization as the stronger authority over staleprevious_filters.organization/root_filters.organization, which closes the last hot-path drift where follow-up carryover could rehydrate the old company even after the user had already switched contours;- this matters because the system previously looked “almost fixed” on flagship chains while still failing a real multi-company late-pivot path:
Alternative Plus -> switch to RAYM in chat -> referential inventory/receivables follow-up -> switch back; - targeted
assistantOrganizationScopeRuntimeAdapter,assistantContinuityPolicy,assistantRoutePolicy, and referential-organization regressions are green after the owner-precedence fix, and backend build stays green; - the phase16 live replay
address_truth_harness_phase16_multicompany_late_pivotis now accepted on2026-04-19, which is the first explicit proof that a non-flagship multi-company late switch keeps truthful company authority across both inventory and receivables exact routes in the same saved session; - the same phase16 pass also hardened replay-gate honesty: its receivables step now accepts semantically equivalent honest empty-match phrasing (
31.03.2020or31 марта 2020,долг/долж) instead of overfitting to one single first-line wording, so this pack is now a trustworthy breadth gate rather than a fragile phrasing oracle.
Latest phase17 clarification-resume evidence after the current replay hardening:
- a new live pack
address_truth_harness_phase17_clarification_resume_and_counterparty_tailvalidatessmalltalk -> inventory clarification -> explicit company choice -> historical inventory continuation -> selected-item provenance -> short counterparty tail -> current inventory -> activity ageinside one shared session; - the semantic review of
assistant-stage1-uWH6xahSDtexposed three distinct architecture defects rather than one generic red score:- explicit company choice fixed the organization but did not resume the interrupted inventory root;
- short displayed-entity follow-up like
а по свкlost the previous counterparty thread and fell back into stale organization fixation behavior; - inventory-root follow-up turns still carried hidden
counterparty=АЛЬТЕРНАТИВАcontamination inside debug-derived filters, which could later poison carryover even when the visible answer looked acceptable;
- the stabilization fix is now explicit in runtime contracts instead of living as prompt luck:
- route/follow-up arbitration resumes the interrupted inventory root after explicit company choice instead of stopping at scope fixation;
- short displayed-entity follow-up keeps counterparty retarget on the validated path instead of losing to stale organization-switch interpretation;
decomposeStageno longer hydrates inventory follow-up filters with the selected organization alias as a fake counterparty anchor, so hidden carryover state stays truthful;
- targeted
assistantRoutePolicy,assistantAddressFollowupContext,addressImplicitOrganizationScope, andaddressFollowupTemporalRegressionsuites are green after the fix, and backend build stays green; - live replay
address_truth_harness_phase17_clarification_resume_and_counterparty_tail_live_20260419_rerun5is accepted10/10, which is the current proof that clarification-resume, historical inventory continuation, and short counterparty-tail retarget are now semantically clean on a non-flagship saved-session path. - the next continuity-authority pass now centralizes navigation focus-state parsing for the hot selected-object path:
assistantContinuityPolicynow ownsresolveNavigationSessionContextState(...), which extractsdate scope,organization,active focus object, andactive result set idfrom navigation state through one shared helper;assistantTransitionPolicyno longer reconstructssession_context.active_focus_objectin multiple local branches for purchase-date VAT bridge detection and selected-item carryover setup;- this matters because selected-item continuity, purchase-date VAT bridge, and navigation-driven focus-object hints now read one shared navigation-state interpretation instead of three local parsers inside the transition hot path;
- targeted
assistantContinuityPolicyandassistantTransitionPolicysuites are green after the move (37/37), backend build is green, and graphify was rebuilt on the updated codebase; - phase15 replay has also been made time-stable for the current snapshot step, and live replay
address_truth_harness_phase15_answer_inspection_followup_live_20260419_rerun11is accepted9/9, which is the semantic proof that the selected-item / answer-inspection / VAT bridge contour still survives after the focus-authority convergence pass.
- the next continuity-authority pass now centralizes organization clarification continuation state itself instead of rebuilding it separately inside route and transition:
assistantContinuityPolicynow ownsresolveOrganizationClarificationContinuation(...), which resolves clarification candidates, explicit company selection from the current message set, fallback selection from scope authority, and the finalhasContinuationverdict through one shared helper;- both
assistantTransitionPolicyandassistantRoutePolicynow consume that helper instead of maintaining separate local chains forexplicitOrganizationClarificationSelection -> organizationClarificationSelection -> hasOrganizationClarificationContinuation; - this matters because clarification-resume behavior is one of the highest-risk seams for future domain expansion: if route and transition diverge here, the same company choice can resume one contour but be treated as a standalone scope switch by another owner;
- targeted
assistantContinuityPolicy,assistantTransitionPolicy, andassistantRoutePolicysuites are green after the move (53/53), backend build is green, and graphify was rebuilt on the updated codebase; - live replay
address_truth_harness_phase17_clarification_resume_and_counterparty_tail_live_20260419_rerun6is accepted10/10, which is the semantic proof that clarification-resume and short counterparty-tail retarget still survive after moving clarification continuation into the shared continuity layer.
Next Execution Slice (2026-04-19)
The project is now moving from:
breakpoint recovery
to:
danger-zone exit under explicit gates
This next slice should be executed in the following order:
- Finish continuity authority convergence in the hot runtime path.
- Widen saved-session replay coverage beyond the already repaired flagship chains.
- Reduce duplicated state reconstruction that still lives outside the shared continuity authority.
- Prove that non-flagship hybrid/deep-turn contours survive the same runtime contracts across more than one repaired scenario pack.
- Only after that, continue secondary answer-shaping cleanup where it materially affects acceptance.
- Only after that, begin controlled domain-by-domain expansion toward the multi-domain stage.
Current explicit goals for this slice:
- fewer owners independently reconstruct
active context; - more replay breadth before any large expansion claim;
- fewer hidden runtime contract mismatches between entry prompts, schema validation, and deep-turn orchestration;
- fewer hybrid/deep entry seams that still depend on fragment luck instead of explicit runtime contracts;
- cleaner user-facing business answers on already-correct truth paths;
- lower risk that new domains multiply orchestration chaos faster than capability growth.
- clarification-resume, late company switch, and short entity-tail behavior should stop being "repaired on one chain only" and continue moving toward reusable runtime contracts across replay families.
Current remaining heavy fronts before low-risk domain expansion:
- finish the last convergence work toward one continuity owner for
active organization,active date,root frame,focus object, and clarification state across every hot runtime path; - widen saved-session replay breadth beyond the current flagship + phase14 + phase15 + phase16 + phase17 families;
- reduce coordinator pressure still concentrated in
assistantService.ts,addressQueryService.ts, andresolveAddressIntent(); - complete the missing contour for counterparty shipped-goods / service extraction instead of relying on honest-but-limited document-list fallback;
- keep answer shaping as secondary debt only where it materially affects acceptance, not as the primary architecture frontier.
Execution framing for the next level:
- the working target is now
90%+ pre-multidomain readinessbefore controlled domain expansion begins; - the
2026-04-17honest level was~78%, so the remaining gap at that time had to be treated as four large iterations, not as a few cosmetic follow-ups.
Current four-iteration plan:
Iteration 1 / Continuity authority completionGoal: finish convergence toward one owner fororganization / date / root frame / focus object / clarification stateacross the hot runtime path. Expected gain:~+4%.Iteration 2 / Wider saved-session replay poolGoal: widen replay breadth beyond the current flagship + phase14 + phase15 + phase16 + phase17 family set. Expected gain:~+4%.Iteration 3 / Coordinator pressure reductionGoal: reduce control-plane overload inassistantService.ts,addressQueryService.ts, and adjacent top-level orchestration seams. Expected gain:~+2-3%.Iteration 4 / Critical domain-enablement gaps + final replay proofGoal: close the remaining high-value business gaps such ascounterparty shipped goods/serviceand confirm the result under replay until the system crosses the90%threshold honestly. Expected gain:~+1-2%.
Ready Signal
The project can leave the current breakpoint when:
- mixed live sessions no longer depend on distributed guesswork about active context;
- clarification does not outrank valid restored business continuity;
- recap is grounded and business-useful;
- technical scaffolding is removed from user-facing meta answers;
- the primary mixed replay is green for the real user path, not only for narrow packs.