# Оценка papa-yu по Tech Due Diligence Checklist **Дата:** 2025-01-31 **Результат:** **~65%** — продаваем с дисконтом (диапазон 60–80%) --- ## A. Продукт и назначение — 2/4 ✅⚠️ | Пункт | Статус | Комментарий | |-------|--------|-------------| | Что делает и для кого | ✅ | README: «Десктопное приложение для анализа проекта и автоматических исправлений». ЦА — разработчики (неформально). | | Ключевые сценарии | ✅ | Batch, agentic run, предложить исправления, undo/redo, domain notes, weekly report. | | Что НЕ делает (LIMITS.md) | ❌ | Отдельного LIMITS.md нет. Ограничения разбросаны по README и IMPLEMENTATION_STATUS. | | Critical отказ | ❌ | Не описано явно, что считается критическим отказом для бизнеса. | **Действие:** Добавить `docs/LIMITS.md` с границами продукта и определением Critical failure. --- ## B. Архитектура — 1/4 ⚠️ | Пункт | Статус | Комментарий | |-------|--------|-------------| | ARCHITECTURE.md | ❌ | Отдельного документа нет. | | Слои domain/services/adapters | ❌ | Слои не заданы. Есть commands, tx, online_research, domain_notes — границы неформальные. | | Скрытые зависимости | ✅ | Зависимости явно в Cargo.toml, package.json. | | ADR | ❌ | ADR нет. Часть решений описана в PROTOCOL_V*_PLAN, IMPLEMENTATION_STATUS. | **Red flag:** Архитектура понятна в основном из кода. **Действие:** Создать `docs/ARCHITECTURE.md` (1–2 стр.) и 2–3 ADR по основным решениям. --- ## C. Качество кода — 2/4 ✅⚠️ | Пункт | Статус | Комментарий | |-------|--------|-------------| | Единый стиль | ✅ | `cargo fmt` в CI, единый стиль Rust/TS. | | Дублирование | ⚠️ | Trace field adapters уменьшили дублирование; остаётся в llm_planner. | | Сложность функций | ⚠️ | llm_planner крупный; функции длинные. | | Обработка ошибок | ✅ | ERR_* коды, repair-логика, частичное использование контекста. | **Действие:** Постепенно дробить llm_planner; при необходимости ограничить сложность через clippy. --- ## D. Тестирование — 4/4 ✅ | Пункт | Статус | Комментарий | |-------|--------|-------------| | Автотесты | ✅ | `cargo test`, 100+ тестов. | | Покрытие критики | ✅ | Golden traces v1/v2/v3, unit-тесты apply, verify, SSRF. | | Тесты в CI | ✅ | `cargo test` в GitHub Actions. | | Golden / regression | ✅ | `docs/golden_traces/`, валидация в CI. | **Green flag:** Тестам можно доверять. --- ## E. CI/CD и релизы — 4/4 ✅ | Пункт | Статус | Комментарий | |-------|--------|-------------| | Сборка одной командой | ✅ | `npm install && npm run tauri build`. | | CI gate | ✅ | fmt, clippy, audit, test. | | Воспроизводимые релизы | ✅ | Cargo.lock, package-lock.json в репо. | | Откат | ⚠️ | Undo в приложении есть; откат релиза — через git. | **Green flag:** Релиз может выпустить новый владелец по инструкции из README. --- ## F. Security — 3/4 ✅ | Пункт | Статус | Комментарий | |-------|--------|-------------| | Секреты не в репо | ✅ | env.openai.example без ключей. | | Fetch/SSRF | ✅ | Модуль net, fetch_url_safe, trends через него. | | Audit/deny | ⚠️ | `cargo audit` в CI; `cargo deny` не настроен. | | Threat model | ⚠️ | IMPLEMENTATION_STATUS, IMPROVEMENT_ROADMAP; без отдельного threat model. | --- ## G. Зависимости и лицензии — 2/4 ⚠️ | Пункт | Статус | Комментарий | |-------|--------|-------------| | Lock-файлы | ✅ | Cargo.lock, package-lock.json. | | Список лицензий | ❌ | Нет явного LICENSE-обзора. | | GPL/AGPL | ⚠️ | Не проверялось. Rust/TS стек обычно MIT/Apache. | | Abandoned deps | ❌ | План по замене abandoned-зависимостей не описан. | **Действие:** Добавить `cargo deny` или лицензионный обзор. --- ## H. Эксплуатация — 2/4 ⚠️ | Пункт | Статус | Комментарий | |-------|--------|-------------| | RUNBOOK.md | ❌ | Нет. | | Типовые проблемы | ⚠️ | INCIDENTS.md — «больные места». | | INCIDENTS.md | ✅ | Шаблон и список известных проблем. | | Логи и метрики | ⚠️ | Traces, weekly report; нет структурированного лога. | **Действие:** Добавить короткий RUNBOOK (запуск, сборка, типовые ошибки). --- ## I. Bus-factor и передача — 2/3 ⚠️ | Пункт | Статус | Комментарий | |-------|--------|-------------| | Передача без автора | ⚠️ | README, IMPLEMENTATION_STATUS, PROTOCOL_* помогают; RUNBOOK бы усилил. | | «Почему» в документах | ✅ | PROTOCOL_V3_PLAN, IMPLEMENTATION_STATUS объясняют решения. | | «Не трогай» без объяснений | ✅ | INCIDENTS перечисляет проблемные места с контекстом. | --- ## Сводка | Раздел | Оценка | Баллы | |--------|--------|-------| | A. Продукт | ✅⚠️ | 2/4 | | B. Архитектура | ⚠️ | 1/4 | | C. Качество кода | ✅⚠️ | 2/4 | | D. Тестирование | ✅ | 4/4 | | E. CI/CD | ✅ | 4/4 | | F. Security | ✅ | 3/4 | | G. Зависимости | ⚠️ | 2/4 | | H. Эксплуатация | ⚠️ | 2/4 | | I. Bus-factor | ⚠️ | 2/3 | | **Итого** | | **22/35 ≈ 63%** | --- ## Интерпретация - **63%** — в диапазоне 60–80%: **продаваем с дисконтом**. - Покупатель увидит: сильные тесты, CI, SSRF-защиту, частичную документацию. - Слабости: архитектура «из кода», нет LIMITS.md, RUNBOOK.md, ADR, лицензионного обзора. --- ## Quick wins для перехода в >80% 1. **LIMITS.md** — границы продукта, что не делает, что считается Critical. 2. **ARCHITECTURE.md** — 1–2 страницы: стек, модули, границы. 3. **RUNBOOK.md** — запуск, сборка, типовые проблемы, контакты. 4. **2–3 ADR** — например: выбор Tauri, протокол v3 EDIT_FILE, SSRF-модель. 5. **cargo deny** или лицензионный обзор зависимостей. Оценка после этих шагов: **~75–80%**.