Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
212 changes: 212 additions & 0 deletions docs/PROJECT_PLAN_FINAL.ru.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
# xodapi/vimit + live-core — Финальный план проекта

> **Статус:** историческая версия. Заменена актуальным планом
> `PROJECT_PLAN_FINAL_v3.ru.md`.

**Статус:** Планирование завершено. Документ фиксирует итоговые решения
и порядок работ для передачи агентам (Droid Factory / Claude Code).
Дальнейшие изменения — только по факту реализации, не новые раунды
исследования.

**Дата фиксации:** 2 июля 2026.

---

## 0. Что уже сделано (не трогать, не пересматривать)

- **vimit v0.6.2+**: CLI/TUI/GUI, floating overlay, living creature
визуализация (шипы/органика skins), self-update, tray, desktop
notifications, demo/mock режимы, daily limit tracking, offline
indicator, Android APK в разработке (Issue с API key settings).
- **Governance**: `AGENTS.md` + `MULTI-AGENT.md` — рабочий процесс
через GitHub Issues, файловые зоны, порядок для параллельных агентов.
Уже применяется, работает.
- **live-core**: полная архитектурная спецификация готова —
`LIVE_CORE_FULL_SPEC.ru.md` (модули, cyberimmunity-модель, ratchet-gate,
13 диагностических вопросов, научное обоснование). Отдельно —
`LIVE_CORE_SECURITY_AUDIT.ru.md` для LLM-ревью готового кода.
- **Roadmap-документы**: `MOBILE_ROADMAP.ru.md` (Android/iOS перспектива
для самого vimit, не live-core), `SUBMISSION_simple.ru.md` (конкурсная
подача, уже отправлена).

---

## 1. Два независимых трека работ

Треки не блокируют друг друга — разные репозитории/зоны, можно вести
параллельно разными агентами.

### Трек A — vimit (существующий репозиторий, продолжение)

### Трек B — live-core (новый репозиторий/крейт, с нуля по спецификации)

---

## 2. Трек A: vimit — оставшиеся задачи

### A.1 Немедленно (административное, 5 минут, сделать вручную)

```bash
gh repo edit xodapi/vimit \
--description "Living quota monitor for VibeMode — your remaining credits, visualized as a creature that reacts to your usage"
```
Repo description и topics всё ещё содержат устаревшее "NeuroGate" —
поправить сейчас, это не требует агента.

### A.2 В работе (агент, уже начато)

- **Android APK** (`feat(android): add API key settings for test APK`)
— довести до готового состояния. Критерий: APK устанавливается,
принимает API-ключ через Android-friendly UI, сохраняет локально,
не выводит в лог.

### A.3 Следующий приоритет после Android APK

- Скриншоты/демо-материалы обновить под текущую версию (living
creature, overlay) — старые демо из конкурсной подачи устарели.
- Ревью открытых Issues в репозитории — закрыть неактуальные,
оставить только то, что реально в работе (после конкурса накопилось
много Issues, часть уже неактуальна).

### A.4 Явно не трогать сейчас

- Интеграция `live-core` в vimit — отдельная задача **после**
стабилизации live-core (см. Трек B, раздел 7 критериев приёмки).
- 3D/Bevy-визуализация зверька — задокументирована в ROADMAP как
перспектива, не текущая работа.
- iOS-порт — статус "tech-preview" у самого Slint, не готов для
продакшена.

---

## 3. Трек B: live-core — порядок реализации

Полная спецификация: `LIVE_CORE_FULL_SPEC.ru.md`. Ниже — порядок,
в котором агент должен идти по ней, чтобы не утонуть в объёме документа.

### B.1 Порядок модулей (зависимости учтены)

```
1. Clock + Instant (раздел 2.4a) — фундамент, всё остальное
зависит от него
2. rolling_buffer (раздел 2.1) — независим, можно параллельно с (1)
3. threshold (раздел 2.2) — независим, можно параллельно
4. offline_tracker (раздел 2.4) — зависит от (1)
5. state_machine + StateHistory (2.3) — зависит от (1) для History
6. Observer trait (раздел 2.6) — инжектируется во все выше,
добавляется последним как
сквозной слой
7. Concurrency/Send+Sync policy (2.7) — проверяется после (1)-(6),
не отдельный модуль, а аудит
уже написанного
8. poller (раздел 2.5, feature=async) — опционально, последним,
зависит от (1) и (4)
```

### B.2 Формат передачи агенту

Не отдавать всю спецификацию одним Issue — она рассчитана как
reference-документ, не как единственная задача. Разбить на Issues
по модулям из B.1, каждый со ссылкой на соответствующий раздел
спецификации и с explicit critical requirements:

```
Issue: live-core — module 1: Clock + Instant

См. LIVE_CORE_FULL_SPEC.ru.md, раздел 2.4a.

Обязательно:
- trait Clock { fn now(&self) -> Instant }
- Instant — newtype, не реэкспорт std::time::Instant
- Instant::duration_since() -> core::time::Duration
- #[cfg(feature = "std")] impl Clock for StdClock
- Учесть Embassy как вероятный будущий embedded-consumer
(см. экосистемное уточнение в том же разделе спецификации)

Критерий приёмки: cargo test --locked проходит, включая edge case
пустого/единственного значения. no_std-сборка (--no-default-features)
компилируется без Clock::StdClock (только trait).

zone: live-core/clock
```

Аналогично для остальных модулей — каждый Issue самодостаточен,
ссылается на конкретный раздел, не требует от агента читать весь
документ целиком для одной задачи.

### B.3 Что проверяется на каждом Issue (сквозные требования)

Не повторять в каждом Issue текстом — один раз зафиксировать как
общее правило в `AGENTS.md` живого репозитория `live-core`:

- `cargo test --locked`
- `cargo clippy --all-targets -- -D warnings`
- `cargo fmt --check`
- Ratchet-gate: `cargo bench -- --save-baseline main` — обязателен
для rolling_buffer, threshold, state_machine, offline_tracker
(раздел 5 спецификации, конкретный список бенчмарков)
- Naming discipline: нет `client`/`http`/`connection` в публичных
сигнатурах (раздел 3.2)
- Каждый `unsafe` (если появится) — обоснован по таксономии 19 SP
(раздел 3, Решение 4)

### B.4 Критерий готовности live-core v1 (весь трек B)

Из раздела 7 спецификации, без изменений:
- `cargo test` + `cargo bench` работают
- Пример в `examples/`, использующий 4 обязательных модуля
(rolling_buffer, threshold, state_machine, offline_tracker)
- `cargo clippy` чисто
- README с Security principle (раздел 8 спецификации, готовый текст)
- Отчёт "сколько строк кода из vimit можно было бы заменить"
(оценочно, не обязательная реализация замены)

**Что НЕ входит в v1** (полный список — раздел 7 спецификации):
интеграция в vimit, Slint/ratatui-зависимости, embedded/носимая
интеграция, `derive`-макрос для StateMachine, `tokio`/`backoff`
как обязательные зависимости, `serde`-сериализация буферов.

---

## 4. Использование мультиагентной координации

Оба трека используют уже отработанный паттерн из `AGENTS.md`/
`MULTI-AGENT.md`:

- Каждый Issue — своя ветка `issue-N-slug`
- Файловые зоны (`zone:vimit-android`, `zone:live-core-clock`,
`zone:live-core-buffer` и т.д.) — не пересекаются, агенты работают
параллельно без конфликтов
- `Cargo.toml`/`Cargo.lock` — только один активный Issue одновременно
на репозиторий (правило из MULTI-AGENT.md уже применимо к live-core
как новому репозиторию)

---

## 5. Порядок действий прямо сейчас

1. Поправить repo description vimit (раздел A.1) — вручную, 5 минут.
2. Создать репозиторий `xodapi/live-core`, положить туда
`LIVE_CORE_FULL_SPEC.ru.md` и `LIVE_CORE_SECURITY_AUDIT.ru.md`
как reference-документы (не как единственный Issue).
3. Скопировать `AGENTS.md`/`MULTI-AGENT.md` в новый репозиторий,
адаптировать раздел "Контекст проекта" под live-core (структура
модулей вместо структуры vimit).
4. Создать 8 Issues по модулям из B.1, в указанном порядке
приоритета, с телом по шаблону из B.2.
5. Продолжить Android APK для vimit параллельно — не блокирует
live-core, разные репозитории.
6. Не создавать новых research-Issues по live-core до тех пор, пока
v1 (раздел B.4) не будет закрыт целиком — дальнейшие
архитектурные вопросы решаются по факту реализации, не заранее.

---

## 6. Финальное напоминание себе (зафиксировано по итогам обсуждения)

Спецификация live-core прошла три независимых раунда технического
ревью (Grok, Deepseek дважды), два научных источника (PermRust, LBAC),
эмпирическое исследование unsafe-безопасности (19 Safety Properties)
и финальную сверку с состоянием экосистемы (Embassy, Slint) на май
2026. Дальнейшее расширение объёма документа даёт убывающую отдачу —
следующий шаг с наибольшей ценностью теперь код, не текст.
Loading
Loading