ARCH: добавить вывод длительности активности MCP discovery

This commit is contained in:
2026-04-20 12:35:29 +03:00
parent 72804557aa
commit e85d456576
8 changed files with 293 additions and 3 deletions
@@ -1045,6 +1045,52 @@ Known next quality gap:
- the guarded candidate is now honest and safe, but it still does not compute and verbalize the exact activity duration such as "5 years N months" from first/latest confirmed rows. That belongs to the next evidence-derivation slice, not to the response gate itself.
## Progress Update - 2026-04-20 MCP Discovery Activity Duration Derivation
The fifteenth implementation slice of Big Block 5 closed the next quality gap in the guarded discovery answer:
- `assistantMcpDiscoveryPilotExecutor.ts`
- `assistantMcpDiscoveryAnswerAdapter.ts`
- `assistantMcpDiscoveryPilotExecutor.test.ts`
- `assistantMcpDiscoveryAnswerAdapter.test.ts`
- strengthened `address_truth_harness_phase19_mcp_discovery_response_gate.json`
The pilot now extracts a structured `derived_activity_period` from confirmed lifecycle rows:
- `first_activity_date`;
- `latest_activity_date`;
- `matched_rows`;
- `duration_total_months`;
- `duration_years`;
- `duration_months_remainder`;
- `duration_human_ru`;
- `inference_basis=first_and_latest_confirmed_1c_activity_rows`.
The answer adapter now verbalizes this as a user-facing bounded inference.
Example from the successful replay:
- first activity: `2014-10-06`;
- latest activity: `2022-04-13`;
- derived duration: `7 лет 6 месяцев`;
- answer wording: "По подтвержденным строкам активности в 1С период взаимодействия можно оценить примерно как 7 лет 6 месяцев... Это вывод по данным 1С, а не юридически подтвержденный возраст регистрации."
The generic inference sentence is suppressed when the structured duration line exists, so the final answer stays compact instead of repeating the same idea twice.
Replay result:
- `address_truth_harness_phase19_mcp_discovery_response_gate_live_rerun2` passed 4/4 after adding duration acceptance;
- `address_truth_harness_phase19_mcp_discovery_response_gate_live_rerun3` passed 4/4 after removing duplicate generic inference wording;
- final status stayed `accepted`;
- lifecycle answer source stayed `mcp_discovery_response_candidate_guarded`;
- debug confirmed `mcp_discovery_response_applied=true` and populated `derived_activity_period`.
Validation:
- `npm test -- assistantMcpDiscoveryPilotExecutor.test.ts assistantMcpDiscoveryAnswerAdapter.test.ts assistantMcpDiscoveryResponseCandidate.test.ts assistantMcpDiscoveryResponsePolicy.test.ts assistantLivingChatRuntimeAdapter.test.ts` passed 28/28;
- `npm run build` passed;
- `python scripts/domain_truth_harness.py run-live --spec docs/orchestration/address_truth_harness_phase19_mcp_discovery_response_gate.json --output-dir artifacts/domain_runs/address_truth_harness_phase19_mcp_discovery_response_gate_live_rerun3 --timeout-seconds 180` passed 4/4, final status `accepted`.
## Execution Rule
Do not implement this plan as:
@@ -61,6 +61,7 @@
"(?i)свк",
"(?i)1с|активност|подтвержд",
"(?i)вывод|оцен|инфер|можно оцен",
"(?i)лет|год|месяц",
"(?i)юридическ|регистрац|не подтвержд|не доказ"
],
"forbidden_answer_patterns": [