АРЧ АП11 - Архитектура: вынести reply packaging из composeStage в отдельный owner

This commit is contained in:
2026-04-17 17:21:26 +03:00
parent 18e4eba54e
commit c2bafcff9b
6 changed files with 188 additions and 46 deletions
@@ -25,15 +25,15 @@ This snapshot is based on:
Latest graph rebuild:
- `5228 nodes`
- `11338 edges`
- `133 communities`
- `5251 nodes`
- `11337 edges`
- `136 communities`
Most relevant current god nodes for turnaround `11`:
1. `resolveAddressIntent()`
2. `ChannelRegistry`
3. `composeFactualReply()`
2. `composeFactualReplyBody()`
3. `ChannelRegistry`
4. `CanonicalStore`
5. `compactWhitespace()`
@@ -42,7 +42,7 @@ The relevant conclusion is not that every god node is part of turnaround `11`.
The relevant conclusion is:
- `resolveAddressIntent()` remains the main unresolved domain-intent concentration point;
- `composeFactualReply()` remains the main unresolved answer-shaping concentration point;
- `composeFactualReplyBody()` now carries the remaining answer-shaping concentration after packaging extraction;
- `assistantService` still appears as a large coordinator-heavy community rather than a thin shell.
## What Is Already Real In Code
@@ -126,7 +126,7 @@ This is enough to build targeted semantic packs that are not single-domain toy s
## Honest Phase Status
Estimated overall turnaround completion: `~87%`
Estimated overall turnaround completion: `~88%`
### Phase 0. Shared Baseline
@@ -177,17 +177,19 @@ Remaining debt:
### Phase 4. Coverage / Evidence / Truth Gate Isolation
Status: `84%`
Status: `86%`
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`.
Remaining debt:
- `composeFactualReply()` is still a major concentration point;
- humanized blocked/limited semantics are not yet fully separated from final packaging logic across all paths.
- `composeFactualReplyBody()` is still a major concentration point;
- 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.
### Phase 5. AssistantService Extraction
@@ -244,6 +246,7 @@ Compared with the pre-turnaround baseline, the system is now materially better i
- 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`;
- 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
@@ -258,9 +261,9 @@ Intent resolution remains one of the most connected business nodes in the graph.
This means capability and contour growth still concentrate pressure there.
### 3. `composeFactualReply()` is still too central
### 3. `composeFactualReplyBody()` is still too central
Truth contracts are now explicit, but final answer-shaping still retains too much architecture weight.
Truth contracts are now explicit, and reply packaging has started moving into its own owner, but final answer-shaping still retains too much architecture weight.
This is the main remaining reason why user-facing humanization and limitation semantics are not completely isolated yet.
@@ -281,7 +284,7 @@ But not every business family has reached the same contract maturity.
The next honest architecture slice should be:
1. continue reducing `assistantService.ts` to a thinner coordinator;
2. isolate answer-shaping semantics further away from `composeFactualReply()`;
2. continue isolating answer semantics further away from `composeFactualReply()` now that reply packaging has its own owner seam;
3. keep extending AGENT packs with mixed business + meta + interruption patterns instead of single-family smoke tests;
4. keep using scenario acceptance as the main sign-off rather than unit-test green status alone.