ssistant_runtime_ground_truth_audit.md ## Независимый архитектурно-процессный аудит фактического runtime-поведения assistant pipeline ## Цель: не чинить, а сделать подтверждённый рентген текущего механизма ### 1. Контекст Проект находится в состоянии, где: * архитектурный baseline уже поднят; * Stage 4 формально удержан в `P0-only` режиме; * на Chat20 достигался green по продуктовым метрикам; * но live-path ранее требовал отдельной дочистки, а в follow-up уже зафиксирована необходимость финального live-rerun и consolidated acceptance note. Текущая проблема: есть риск, что команда продолжает локально улучшать answer behavior, purity, wording, leakage и отдельные guards, **не имея подтверждённой картины того, как реально работает весь pipeline после пользовательского вопроса**. Нужен не очередной fix-wave, а **объективный аудит фактического процесса**, основанный на: * коде, * конфигурации, * реальных тестовых прогонах, * debug/runtime traces, * подтверждённых артефактах. --- ## 2. Главная цель задания Нужно **полностью восстановить и доказательно описать реальный end-to-end цикл**: **пользовательский вопрос → normalizer/router → route → retrieval → snapshot/live access → graph/problem-unit/evidence layers → answer composer → итоговый ответ** Нужно не пересказывать старые отчёты, а: * проверить, что реально происходит; * показать, какие этапы действительно существуют в runtime; * показать, какие этапы только декларируются; * показать, где именно строится гипотеза; * показать, существует ли вообще обязательный этап добычи доказательной базы под вопрос пользователя; * показать, на каких реальных данных строится ответ. --- ## 3. Жёсткие ограничения задания ### Что делать нельзя 1. Не выполнять в этом задании архитектурный redesign. 2. Не вносить большие изменения в код как часть “исправления”. 3. Не подменять аудит выводами из старых md-отчётов без фактической проверки. 4. Не считать Stage 4 report источником истины — использовать его только как reference map. 5. Не ограничиваться unit-тестами без runtime traces. 6. Не делать “оптимистичный” вывод, если нет подтверждающих артефактов. ### Что делать можно 1. Добавлять временное логирование/трассировку. 2. Добавлять временные probe/debug hooks. 3. Делать controlled test runs. 4. Создавать отчёты, matrices, trace dumps, snapshot inventories, diagrams и служебные md/json файлы в `docs/ARCH`. --- ## 4. Базовый исследовательский вопрос аудита Нужно ответить на главный вопрос: ### **Что именно реально делает система после пользовательского вопроса, и на каком основании она формирует вывод?** Подвопросы, на которые аудит обязан дать подтверждённые ответы: 1. Какие этапы реально проходят всегда, а какие — опциональны? 2. Есть ли отдельный обязательный шаг: * формулировки claim, * адресного похода за доказательствами, * проверки обязательных звеньев цепочки, * сборки verdict? 3. Или система сейчас в основном работает как: * hypothesis-first, * signal-first, * snapshot-first, * partial live probe, * answer synthesis? 4. Какие именно данные реально используются: * какие snapshot файлы, * какого они размера, * какого типа данные в них лежат, * какая глубина и полнота этих данных, * хватает ли их для восстановления цепочек? 5. Что реально делает MCP/live: * какие вызовы идут, * когда идут, * с какими аргументами, * что возвращают, * являются ли они доказательной базой или только дополнительным слабым сигналом? 6. Где и как рождаются: * route, * semantic profile, * graph traversal, * domain purity, * problem units, * evidence, * confidence, * limitations? 7. На каком шаге система впервые делает интерпретацию? 8. До или после сбора фактов? 9. Есть ли в runtime механизм, который запрещает ответу звучать уверенно при неполной доказательной базе? 10. Что в pipeline реально является фундаментом ответа: * факт, * сигнал, * эвристика, * graph hint, * snapshot artifact, * live lookup, * LLM interpretation? --- ## 5. Что именно нужно проверить в коде и рантайме ### A. Runtime process map Нужно построить фактическую карту pipeline: * входной user message; * normalizer; * decomposition/fragments/requirements; * route selection; * retrieval backend(s); * snapshot access; * live MCP access; * graph logic; * domain guardrails; * problem-unit assembly; * evidence packaging; * answer composer; * debug/export behavior. Для каждого шага указать: * модуль/файл/функцию; * вход; * выход; * обязательность шага; * где принимается решение; * deterministic это или LLM-mediated; * есть ли logging/trace. ### B. Snapshot reality audit Нужно провести отдельный аудит snapshot-слоя: 1. Какие snapshot-источники реально участвуют в Stage 4. 2. Где они лежат. 3. Какие размеры файлов. 4. Какие сущности/поля/таблицы/срезы содержат. 5. На какие вопросы они вообще способны отвечать. 6. Какие вопросы они принципиально не могут закрыть без live access. 7. Есть ли разрыв между “в документах написано heavy/deep snapshots” и фактической полнотой snapshot-data. ### C. Live MCP reality audit Нужно проверить: 1. Какие MCP/live методы реально вызываются на контрольных вопросах. 2. На каком шаге pipeline это происходит. 3. Какие аргументы реально передаются. 4. Идут ли вызовы на: * адресный сбор доказательств, * восстановление цепочки, * сверку договора/объекта расчётов, * closure/tax/book/register verification, или live используется только как ограниченный дополнительный сигнал. 5. Есть ли ситуации, где: * `matched_rows = 0`, * account scope не применён, * live не подтвердил claim, * но ответ всё равно строится как содержательный grounded answer. Это уже наблюдалось в traces и должно быть отдельно проверено. ### D. Evidence contract audit Нужно проверить, существует ли в системе реальный слой: * claim verification, * evidence admissibility, * proof verdict. Нужно установить: 1. Есть ли отдельный этап “сначала собрали факты, потом интерпретировали”. 2. Или фактически происходит наоборот: * сначала формируется hypothesis/problem unit, * потом под неё подбираются supporting signals. 3. Какие типы evidence реально существуют: * hard evidence, * weak mapping, * graph hint, * problem signal, * partial support, * inadmissible noise. 4. Есть ли gate, который вырезает нерелевантное evidence. 5. Если такого gate нет — это нужно зафиксировать как structural gap. ### E. Answer truthfulness audit Нужно проверить, что именно уходит наружу: * гипотеза, * доказанный факт, * partial coverage, * explain mode, * limitation-first answer, * pseudo-grounded answer. Нужно установить: 1. Умеет ли система различать: * “доказано”, * “опровергнуто”, * “недостаточно данных”. 2. Или наружу в основном уходит “похоже / есть признаки / часть цепочки подтверждена”. 3. Где answer composer теряет честность или, наоборот, слишком рано интерпретирует слабый сигнал как почти доказанный вывод. --- ## 6. Обязательный контрольный набор для аудита Нужно прогнать минимум ядро из вопросов по company snapshot July 2020, потому что именно на нём уже формулировались P0-требования. В первую очередь использовать 8 сильных core-вопросов: расчёты 60–62, НДС, month-close, РБП, limitation honesty. Минимально обязательны к прогону: 1. Оплата 55 200 по договору № 01/19-ПТ — почему долг мог остаться. 2. Поступление 276 873,60 — корректно ли зачёлся аванс 15 июля. 3. Платежи 40 860 и 20 000 по договору № 1-ПМ/2020 — это аванс или закрытие дебиторки. 4. Услуги связи + НДС 233,33 + счёт-фактура — полная ли НДС-цепочка. 5. Есть ли покупки июля с неполным НДС-контуром. 6. Закрытие косвенных расходов 31 июля — не осталось ли хвостов. 7. Списание РБП — не живёт ли часть РБП дольше ожидаемого. 8. После полного month-end — что реально проблема, а что нормальный остаток. --- ## 7. Формат выполнения аудита ### Этап 1. Static architecture pass Без изменений логики: * прочитать relevant code paths; * построить map модулей; * составить runtime call graph; * определить места принятия решений. ### Этап 2. Instrumentation pass Добавить временное диагностическое логирование, если его не хватает, чтобы фиксировать: * какой route выбран; * какие sources выбраны; * какой snapshot использован; * какие live MCP calls ушли; * какие аргументы ушли; * что вернулось; * какие evidence items попали в answer; * на каком шаге появился primary interpretation; * какой confidence/limitation режим ушёл наружу. ### Этап 3. Controlled runtime pass Прогнать контрольный набор вопросов с включённым audit logging. ### Этап 4. Comparative pass Для каждого вопроса восстановить таблицу: * что спросил пользователь; * какие anchors извлеклись; * какой route selected; * какие snapshot datasets реально использовались; * какие live calls реально были; * какие факты реально подтверждены; * что осталось недоказанным; * где возникла гипотеза; * из чего собрался финальный ответ. ### Этап 5. Structural gap analysis Выделить: * отсутствующие обязательные шаги; * смешанные режимы; * места ранней интерпретации; * фиктивную или слабую доказательную базу; * расхождение между декларируемой архитектурой и фактическим runtime. --- ## 8. Главные вопросы, на которые аудит обязан ответить в финальном отчёте 1. Система сейчас **proof-first** или **hypothesis-first**? 2. Есть ли у неё реальный слой **claim verification**? 3. Что является фактическим фундаментом ответа: * snapshot, * live lookup, * graph signals, * problem units, * эвристики, * LLM synthesis? 4. Достаточен ли текущий snapshot-слой для company-specific July 2020 reasoning? 5. Какие классы вопросов нельзя надёжно решать без обязательного live evidence acquisition? 6. Есть ли в runtime этап адресного похода по цепочке: * документ, * договор, * объект расчётов, * проводка, * регистр, * книга, * closure? 7. Если такого этапа нет, где именно он должен быть встроен концептуально. 8. Что сейчас реально делает MCP: * verification, * lookup, * enrichment, * noise injection, * partial support? 9. Какие части Stage 4 реально полезны, а какие маскируют отсутствие фундамента. 10. Что является минимальным обязательным новым слоем, без которого дальнейшие corrective waves теряют смысл. --- ## 9. Что нужно создать в `docs/ARCH` Создать новый комплект артефактов. ### Основной отчёт `docs/ARCH/7 - assistant_runtime_ground_truth_audit_2026-03-28.md` В нём должны быть разделы: 1. Executive summary 2. Scope and constraints 3. Verified runtime architecture 4. Snapshot reality 5. MCP/live reality 6. Evidence acquisition reality 7. Answer synthesis reality 8. Control question audit 9. Structural gaps 10. Minimum required architectural correction 11. What not to do next ### Приложения 1. `docs/ARCH/7A - runtime_call_graph.md` * по шагам и модулям 2. `docs/ARCH/7B - snapshot_inventory_and_coverage.md` * список snapshot-источников, размеров, сущностей, покрываемых question classes 3. `docs/ARCH/7C - live_mcp_call_inventory.md` * какие live вызовы реально ушли на контрольных прогонах 4. `docs/ARCH/7D - control_question_trace_matrix.md` * по каждому вопросу: route, sources, evidence, claim status, answer type 5. `docs/ARCH/7E - structural_gap_register.md` * список критичных gap’ов с severity: * blocker * high * medium 6. `docs/ARCH/7F - instrumentation_notes.md` * что было добавлено/включено ради аудита 7. `docs/ARCH/audit_artifacts/` * raw json traces, * exported debug payloads, * sample dialog logs, * live call dumps, * optional diagrams --- ## 10. Требования к доказательности отчёта Финальный отчёт **не может** состоять из общих слов. Каждое важное утверждение должно быть подтверждено хотя бы одним из: * ссылкой на конкретный кодовый путь; * runtime trace; * debug payload; * live MCP call dump; * snapshot inspection artifact; * reproduced control question log. Если что-то не удалось проверить — это нужно явно маркировать: * `verified` * `partially verified` * `not verified` * `inferred` --- ## 11. Специальный акцент аудита Отдельно нужно проверить и честно описать: ### A. Существует ли сейчас отдельный обязательный шаг “добычи доказательной базы” Не abstract retrieval, а именно: * по claim пользователя; * с обязательными anchors; * с адресной проверкой звеньев цепочки. ### B. Не подменяется ли доказательство problem units / graph hints / snapshot signals Это критический вопрос. ### C. Не является ли текущая система фактически: **snapshot-driven hypothesis engine with partial live enrichment** вместо: **evidence-first accounting verification assistant** --- ## 12. Финальная форма вывода В конце основного отчёта обязательно дать **жёсткий вердикт** в одной из форм: * `VERIFIED_AS_EVIDENCE_FIRST` * `VERIFIED_AS_HYPOTHESIS_FIRST` * `MIXED_RUNTIME_WITHOUT_MANDATORY_PROOF_LAYER` И отдельно: * что именно уже годно; * что именно фундаментально отсутствует; * какой минимальный архитектурный слой нужен дальше; * почему дальнейшие локальные фиксы без этого слоя либо полезны, либо уже неокупаемы. --- ## 13. Что не должно быть результатом Результатом этого задания **не должен** стать новый fix pack. Результатом должен стать: * честный рентген, * подтверждённая карта runtime, * список gaps, * и ясный ответ, **что у нас вообще реально работает после вопроса пользователя**. ---