---
phase: 04-matrix-mvp-shared-agent-context-and-context-management-comma
task: 3
total_tasks: 3
status: paused
last_updated: 2026-04-21T22:33:11.666Z
---
Phase 04 как MVP-фаза по сути закрыта: Matrix real backend работает, transport layer очищен до thin adapter над pinned upstream `platform-agent_api.AgentApi`, ветка чистая и запушенная. Текущее состояние зафиксировано как "working but problematic": после tool/file flow остаётся подтверждённый upstream bug платформы, из-за которого начало ответа может пропадать.
Ключевой результат последней сессии: raw tracing показал, что первый повреждённый `MsgEventTextChunk` появляется уже внутри `platform-agent` до websocket-клиента. Это сняло основное подозрение с `surfaces`.
- Переведён `sdk/agent_api_wrapper.py` в тонкий factory/shim без собственной stream-semantics.
- Переведён `sdk/real.py` на pinned upstream contract: без post-END drain, без custom listener, без локальной реконструкции стрима.
- Обновлены тесты под новый transport layer:
- `tests/platform/test_real.py`
- `tests/adapter/matrix/test_dispatcher.py`
- `tests/core/test_integration.py`
- README обновлён под новое состояние интеграции и known limitations.
- Создан финальный отчёт: `docs/reports/2026-04-22-platform-streaming-final-bug-report-ru.md`.
- Временная диагностика в vendored `platform-agent` и `platform-agent_api` была использована только для расследования и полностью удалена; nested repos снова clean.
- Последний кодовый commit с рабочим состоянием: `0c2884c` (`refactor: use thin upstream transport adapter`).
- Передать платформенной команде финальный отчёт и дождаться triage/fix proposal.
- После ответа платформы решить, открываем ли отдельную follow-up phase для production hardening в `surfaces`.
- После platform fix повторить live smoke:
- text-only
- staged attachments
- tool/file flow
- large image failure path
- Больше не трогать vendored platform repos ради рабочей реализации.
- Больше не добавлять локальные transport hacks, маскирующие streaming bug.
- Считать текущий missing-first-chunk баг platform-side дефектом до опровержения raw evidence.
- Оставить `tokens_used=0` как честное ограничение current upstream contract, не симулировать это значение локально.
- Platform-side streaming bug: после tool/file flow начало ответа может пропадать.
- Duplicate `END` на стороне платформы.
- Image path на больших вложениях падает с `data-uri > 10 MB` и `WS 1009`.
- Без ответа платформенной команды дальнейший transport-layer surgery в `surfaces` не имеет инженерного смысла.
Важная ментальная модель:
- `surfaces` сейчас максимально близок к upstream transport semantics.
- Если снова полезет corruption чанков, исходная презумпция должна быть "сначала смотреть platform-agent", а не придумывать новый локальный workaround.
- Главные артефакты для чтения перед продолжением:
1. `README.md`
2. `docs/reports/2026-04-22-platform-streaming-final-bug-report-ru.md`
3. `sdk/agent_api_wrapper.py`
4. `sdk/real.py`
5. `tests/platform/test_real.py`
Если придётся продолжать без платформы, разумные задачи уже не про баг с чанками, а про clean/prod-ready улучшения вокруг него:
- сделать `tokens_used` optional в локальном контракте
- развести `RealPlatformClient` на pool/adapter слои
- добавить bounded session cache / idle eviction
- убрать `sys.path` import hack в пользу нормальной dependency wiring
- переименовать конфиг `AGENT_WS_URL` в более честный `AGENT_BASE_URL`
- добавить protocol contract tests против fake WS server
Start with:
1. Открыть `docs/reports/2026-04-22-platform-streaming-final-bug-report-ru.md`
2. Отправить этот отчёт платформенной команде как основной артефакт
3. Не менять transport layer до получения их ответа
Если работа продолжается автономно без ответа платформы, следующий допустимый шаг — оформлять отдельную follow-up phase на hardening `surfaces`, а не повторно "чинить" стрим локальными обходами.