NODEDC_1C/docs/ARCH/11 - architecture_turnaround/08 - current_status_audit_2...

15 KiB
Raw Blame History

08 - Current Status Audit (2026-04-17)

Purpose

This note is the honest execution snapshot for the turnaround package after the latest architecture passes, graph rebuild, and semantic acceptance work.

It is not a replacement for the phase documents.

It is the current-state audit that answers:

  • what is already real in code;
  • what still remains architectural debt;
  • how far the turnaround has actually progressed.

Audit Basis

This snapshot is based on:

  • graphify-out/GRAPH_REPORT.md rebuilt on 2026-04-19
  • current owner modules in llm_normalizer/backend/src/services/
  • current scenario acceptance scripts under scripts/
  • current AGENT semantic source catalog under docs/orchestration/
  • live replay comparison between:
    • address_truth_harness_phase12_wider_saved_session_pool_live_20260419_rerun16
    • address_truth_harness_phase14_counterparty_tail_resume_live_20260418_rerun2
    • address_truth_harness_phase15_answer_inspection_followup_live_20260419_rerun11
    • address_truth_harness_phase16_multicompany_late_pivot_live_20260419_rerun10
    • address_truth_harness_phase17_clarification_resume_and_counterparty_tail_live_20260419_rerun5
  • 10 - regression_breakpoint_analysis_2026-04-17.md
  • 11 - continuity_stabilization_plan_2026-04-17.md

Graph Snapshot

Latest graph rebuild:

  • 5372 nodes
  • 11525 edges
  • 135 communities

Most relevant current god nodes for turnaround 11:

  1. resolveAddressIntent()
  2. ChannelRegistry
  3. CanonicalStore
  4. compactWhitespace()
  5. ExecuteQueryParams

The relevant conclusion is not that every god node is part of turnaround 11.

The relevant conclusion is:

  • resolveAddressIntent() remains the main unresolved domain-intent concentration point;
  • composeFactualReplyBody() no longer appears in the top god-node slice after the latest compose extractions, which means the central answer-shaping pressure has materially dropped;
  • assistantService still appears as a large coordinator-heavy community rather than a thin shell.

What Is Already Real In Code

1. Policy owners are no longer hypothetical

The following owner modules exist and are live architectural objects:

  • assistantRoutePolicy.ts
  • assistantTransitionPolicy.ts
  • assistantBoundaryPolicy.ts
  • assistantMetaFollowupPolicy.ts
  • assistantMemoryRecapPolicy.ts
  • assistantProviderExecutionPolicy.ts

assistantService.ts wires these owners in active runtime paths around:

  • provider policy creation near line 4725
  • route/meta/memory policy creation near lines 4738-4783
  • transition policy creation near line 4785
  • boundary policy creation near line 5439

2. Truth and coverage/evidence are explicit contracts

The exact lane now exposes explicit machine-readable contracts:

  • address_truth_gate_v1
  • address_coverage_evidence_v1

Primary current owners:

  • addressTruthGatePolicy.ts
  • addressCoverageEvidencePolicy.ts
  • assistantRuntimeContractResolver.ts
  • assistantTruthAnswerPolicyRuntimeAdapter.ts

This means exact-lane answers are no longer judged only by final text or hidden heuristics.

3. Scenario acceptance is now a real gate artifact

The truth harness now writes:

  • scenario_acceptance_matrix.json
  • scenario_acceptance_matrix.md
  • pack_state.json
  • final_status.md

Primary current owners:

  • domain_truth_harness.py
  • scenario_acceptance_policy.py

This is the main reason the project is no longer relying on unit tests alone for architecture verification.

4. Mixed AGENT semantic source material already exists

Current source catalog snapshot:

  • truth_harness_steps_total = 58
  • saved_session_questions_total = 81

The source catalog already covers mixed reusable tags such as:

  • inventory_root
  • selected_object
  • selected_object_supplier
  • counterparty_documents
  • counterparty_shipment_fallback
  • settlements_account_60
  • settlements_receivables
  • vat
  • meta_smalltalk
  • meta_scope
  • meta_capability
  • meta_historical_capability
  • meta_memory
  • same_date_pivot
  • same_date_restore

This is enough to build targeted semantic packs that are not single-domain toy scripts.

Honest Phase Status

Turnaround implementation progress: ~96%

Pre-expansion readiness: ~78%

This split is intentional.

The codebase already contains most of the required architectural objects, but the mixed saved-session runtime is still not stable enough to justify aggressive domain expansion.

Phase 0. Shared Baseline

Status: 100%

Reason:

  • architecture vocabulary is stable;
  • planning discussions already use the package and current owner names.

Phase 1. Formal Layer Separation

Status: 100%

Reason:

  • subsystem boundaries are explicit enough in planning and in code ownership;
  • canonical_layer, llm_normalizer/backend, and domain loop/orchestration assets are no longer treated as one blob.

Phase 2. State And Transition Contracts

Status: 88%

Reason:

  • root, selected-object, same-date, and carryover classes exist as real owner seams;
  • transition policy is extracted;
  • scenario acceptance evaluates continuity explicitly.

Remaining debt:

  • there is still no single authoritative continuity contract for every live mixed session path;
  • continuity priority is still split across route policy, transition policy, recap policy, navigation state, and coordinator glue;
  • the flagship repaired chains are now stable, but more non-flagship saved-session paths still need proof before this phase can be treated as expansion-safe.

Phase 3. Capability Contracts

Status: 91%

Reason:

  • critical inventory/address capabilities are materially contract-driven;
  • selected-object and root capability behavior is much more explicit than before.
  • inventory intent-family now has an explicit owner in addressInventoryIntentSignals.ts instead of staying only as inline signal pressure inside resolveAddressIntent().
  • counterparty / documents / contracts / open-items intent-family now also has an explicit owner in addressCounterpartyIntentSignals.ts, even though legacy inline branches still remain as cleanup debt inside the central resolver.

Remaining debt:

  • resolveAddressIntent() is still too central;
  • extracted owner seams now exist for the hottest inventory and counterparty families, but the legacy inline body still keeps graph pressure high until the final cleanup pass is done;
  • some business contours outside the most exercised inventory/address scenarios remain less explicit.

Phase 4. Coverage / Evidence / Truth Gate Isolation

Status: 89%

Reason:

  • explicit truth and coverage/evidence contracts exist;
  • answer policy reads those contracts rather than rebuilding verdicts blindly from raw rows.
  • reply-packaging mechanics are now explicitly split into address_runtime/replyPackaging.ts instead of staying fully in composeStage.ts.
  • named reply contracts and answer semantics presets now also live in address_runtime/replyContracts.ts instead of being rebuilt inline across major factual branches.
  • inventory answer construction now has an explicit owner in address_runtime/inventoryReplyBuilders.ts instead of staying inline inside composeFactualReplyBody().
  • counterparty / lifecycle / value / contract-profile factual replies now also have an explicit owner in address_runtime/counterpartyAnalyticsReplyBuilders.ts instead of staying inline inside composeFactualReplyBody().
  • composeStage.ts is now down to about 4305 lines after the counterparty analytics extraction and duplicate-body cleanup.

Remaining debt:

  • composeFactualReplyBody() is still not fully decomposed, but it is no longer one of the top graph pressure points in the current snapshot;
  • humanized blocked/limited semantics are not yet fully separated from answer semantics across all paths;
  • composeStage.ts still remains too large even after packaging extraction, inventory-family extraction, and counterparty analytics extraction.

Phase 5. AssistantService Extraction

Status: 84%

Reason:

  • major policy categories have real owners outside the coordinator.
  • data-scope probing and organization-history extraction are now delegated to a dedicated owner.
  • address/backend debug payload assembly is no longer owned only by the coordinator.

Remaining debt:

  • assistantService.ts is still about 5050 lines;
  • runtime uses extracted owners, but priority and fallback seams still cross the coordinator boundary;
  • code review still requires reading assistantService together with extracted owners to understand real behavior.

Phase 6. Provider / Runtime Axis Hardening

Status: 80%

Reason:

  • provider/runtime behavior is now an explicit policy concern;
  • local/openai semantics are materially less entangled with business routing.

Remaining debt:

  • compatibility is stronger than before, but not yet the final universal execution contract for every contour and acceptance pack.

Phase 7. Scenario Acceptance As Primary Gate

Status: 86%

Reason:

  • acceptance writes first-class artifacts;
  • AGENT source catalog and mixed packs exist;
  • meta-space, domain-space, and cross-domain interruptions are already represented.

Remaining debt:

  • narrow packs and seam tests are much stronger than before, and the main saved-session flagship replay family is now green;
  • acceptance is no longer failing on the original continuity-critical edges, but replay breadth is still under the intended multi-domain blast radius;
  • coverage breadth should continue to grow across additional mixed trajectories before expansion is treated as low-risk.

Current Breakpoint Evidence

The strongest current architectural reading is no longer "the system still collapses on the original mixed continuity breakpoint".

It is now:

  • phase12_wider_saved_session_pool is green end-to-end on the broader flagship saved-session family;
  • phase14_counterparty_tail_resume is green on a different late-session counterparty/inventory/activity contour;
  • phase15_answer_inspection_followup is green on grounded self-correction plus neighboring VAT bridge continuity;
  • phase16_multicompany_late_pivot is green on late company switch plus referential inventory/receivables authority;
  • phase17_clarification_resume_and_counterparty_tail is green on the specific semantic seams exposed by the manual run assistant-stage1-uWH6xahSDt: company clarification resumption, historical inventory continuation, short СВК retarget, and counterparty tail follow-up;
  • therefore the original collapse has been materially repaired, and the main remaining risk has shifted from acute failure to incomplete generalization.

In practical terms, the active breakpoint is now:

  • owner extraction has progressed far enough to make the system materially safer than before;
  • saved-session mixed runtime still does not have one fully final governing authority consumed uniformly across every hot path;
  • replay breadth is now the main honest gate before multi-domain expansion, not the old flagship continuity collapse itself.

What Has Improved Relative To The Original State

Compared with the pre-turnaround baseline, the system is now materially better in the following ways:

  • long mixed conversations are more stable;
  • selected-object continuity is no longer treated as optional polish;
  • temporal honesty is now evaluated as an explicit invariant;
  • factual-negative answers can remain truthful instead of collapsing into generic technical refusals;
  • meta questions and memory recap are no longer purely incidental side effects of route logic;
  • organization data-scope probing is no longer owned only by coordinator-local helper bodies;
  • debug payload assembly is now further isolated from top-level turn coordination;
  • reply formatting and reply-type classification now have an explicit owner outside composeStage.ts;
  • confirmed-balance and heuristic-candidate reply contracts now have explicit builders instead of repeated inline semantics objects in major compose branches;
  • inventory factual replies are now owned by a dedicated module rather than embedded directly in the central compose body;
  • counterparty analytics, lifecycle, customer/supplier value rankings, and contract-value factual replies are now owned by a dedicated module rather than embedded directly in the central compose body;
  • inventory intent classification now has a dedicated owner instead of being only an inline segment inside the central address intent resolver;
  • counterparty / contract / documents intent classification now also has a dedicated owner instead of being only an inline segment inside the central address intent resolver;
  • architecture regressions can now be localized to route, transition, truth gate, coverage/evidence, boundary, or meta/memory layers.

What Still Remains The Main Architectural Debt

1. Mixed-session continuity still has no single authority

The project now has real route, transition, recap, and boundary owners, but the live session still does not resolve:

  • active root frame
  • selected object
  • organization scope
  • temporal carryover
  • clarification state
  • recap source of truth

from one governing contract.

This is still the highest-risk debt before domain expansion, even though the repaired replay families are now green.

2. assistantService.ts is still too large

The extracted owners are real, but the coordinator has not yet been fully reduced to a thin orchestration shell.

3. resolveAddressIntent() is still too central

Intent resolution remains one of the most connected business nodes in the graph.

This means capability and contour growth still concentrate pressure there.

4. composeFactualReplyBody() is still too central

Truth contracts are now explicit, and reply packaging, reply contracts, and the inventory answer family have all started moving into their own owners, but final answer-shaping still retains too much architecture weight.

This is the main remaining reason why user-facing humanization and limitation semantics are not completely isolated yet.

5. Coverage breadth is stronger, but still selective

The project is now strong on:

  • inventory root
  • selected-object provenance/documents
  • counterparty document and shipment-fallback cases
  • key settlement and VAT follow-ups
  • meta/memory/context integrity

But not every business family has reached the same contract maturity.

The next honest architecture slice should be:

  1. finish one authoritative continuity contract for live mixed sessions;
  2. subordinate clarification to restored business continuity instead of letting it act as a default escape hatch;
  3. continue reducing assistantService.ts to a thinner coordinator;
  4. continue isolating answer semantics further away from composeFactualReplyBody() now that reply packaging and reply contracts have their own owner seams;
  5. keep extending AGENT packs with mixed business + meta + interruption patterns instead of single-family smoke tests;
  6. keep using mixed scenario acceptance as the main sign-off rather than unit-test green status alone.

Bottom Line

Turnaround 11 is no longer a proposal.

It is an operational architecture program that is already mostly implemented in the critical path.

The current state is best described as:

  • architecturally real
  • operationally useful
  • not yet fully cleaned up

The remaining work is now mostly about:

  • removing residual concentration points;
  • tightening the last humanized answer-policy seams;
  • and broadening acceptance coverage without regressing the hard-won exact-data behavior.