Files
shturman/CLAUDE.md
T
kk0t9 25703751dc chore: CLAUDE.md — точка входа фазы реализации (v0)
Инструкции проекта для новых сессий: стек, dev-окружение, рабочий цикл (спека→TDD→verify→коммит), текущая цель v0, карта docs/, красные линии.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 21:26:16 +03:00

66 lines
5.4 KiB
Markdown

# Штурман — инструкции проекта
Open-source русскоязычный companion-слой («ОС поверх Linux») для авто на **RK3588**: быстрый
Slint-UI + голосовой RU-ассистент, читающий OBD/CAN **только на чтение** + расширяемый Plugin API.
Лицензия **MIT**. Общение и комментарии — по-русски; код-идентификаторы — как есть.
## Фаза: РЕАЛИЗАЦИЯ (v0)
Проектирование завершено. **Источник правды по дизайну — каталог `docs/`** (Tier 0–3 + 8 контрактов +
детальный `roadmap.md`; всё прошло многоагентный adversarial-ревью). Не противоречь докам; если
реальность расходится с доком — **синхронизируй док** (двунаправленные швы, как в дизайн-фазе).
## КРАСНЫЕ ЛИНИИ (нерушимы)
1. **Никогда не safety-critical** — двигатель/тормоза/ABS/ESP/руль/подушки; в системе нет actuator-путей.
2. **CAN только на чтение** — стандартные OBD-II read-запросы (Mode 01/03/07/09/0A) допустимы; запрещены
write/actuator/Mode-04/UDS-write. Граница и энфорсмент — `docs/contracts/safety.md`.
## Стек (canonical — `docs/tech-stack.md`)
Rust везде в проде (Python — только dev/симуляторы). **D-Bus** control-plane; **PipeWire**+WirePlumber
(аудио); **Wayland** + **smithay**-композитор (Shell); **Slint** (UI); **bubblewrap** + Perm-Broker
(песочница плагинов); NM/MM + BlueZ (GPL-демоны через D-Bus, изолированы). License-гигиена — `cargo-deny`.
## Dev-окружение (`docs/dev-environment.md`)
Всё в **Lima ARM64-VM** (Ubuntu) — нативно к таргету RK3588, **разработка без машины** (принцип #13):
vcan + Vehicle Simulator + моки (аудио/BT/камера/GPS/сеть/plugin-host/нав/облако). `justfile` — единые
команды (`just vm-up`, `just sim`, `just test`, … — создаём по ходу). **Перф-вердикт — на реальном RK3588**
(не на dev-Mac), бюджеты — `docs/contracts/performance.md`.
## Как работаем (реализация)
- **Roadmap ведёт.** Идём по вехам `docs/roadmap.md`. Текущая цель — **v0** (критпуть: образ → power-safe → shell).
- **Цикл на веху:** спека (раскладка/границы/D-Bus-интерфейсы/тест-план/acceptance) → **TDD** → реализация
**verify в Lima-VM** → коммит. **Не писать код до утверждённой спеки.**
- Скиллы: `test-driven-development`, `writing-plans`/`executing-plans`, `verification-before-completion`,
`systematic-debugging`, `requesting-code-review`.
- **Коммиты:** `feat/fix/chore(<area>): …`; ветка от `main` (без явного «ок» в `main` не коммитим);
в конце — `Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>`.
- Сквозные гейты каждой вехи: safety (red-lines/distraction), performance (бюджеты), design-system (визуальный язык).
## Текущая цель — v0 (см. `docs/roadmap.md` § v0)
`v0.1` Образ-болванка → `v0.2` boot-конвейер → `v0.3` power-safe → `v0.5` shell-первый-кадр;
`v0.6` dev-харнесс — параллельный enabling-трек (стартуем с него + v0.1). **Первый запускаемый артефакт:**
boot в Lima-VM → стаб-сервисы (`Power`/`Settings` на D-Bus) → первый Slint-кадр.
## Карта документации
- **Архитектура/процессы/шина:** `docs/architecture.md` · **стек:** `docs/tech-stack.md` · **принципы (13):** `docs/principles.md`.
- **Контракты** (`docs/contracts/`): `ipc` · `data-model` · `security-privacy` · `plugin-sdk` · `hardware` · `safety` · `performance` · `design-system`.
- **Домены** (`docs/domains/`): A base-system · B power-lifecycle · C shell-ux · D assistant · E vehicle-data · F plugin-host · G…L.
- **План:** `docs/capability-catalog.md` (170 функций, ID `<буква><NN>`) · `docs/roadmap.md` (вехи v0.1…v4.5) + `docs/roadmap.html`.
## Решения-🟡 (всплывут по ходу — НЕ блокеры старта)
`A01` Armbian/Debian vs Yocto, `A02` f2fs vs ext4 — на сборке **прод-образа** (dev использует Lima Ubuntu).
`B08/B09` MCU vs supercap-only — на `v0.4` (вероятно нужна аппаратная проверка). Полный реестр — `docs/roadmap.md` «Риск-реестр».
## Гочи
- §-якоря в доках = номера **РАЗДЕЛОВ**, не строк.
- Adversarial-ревью через Workflow: **НЕ** ставить сырые backticks в template-literal промптах агентов
(закрывают строку, валят скрипт) — код-идентификаторы в одинарных кавычках.