P6.5: CLAUDE.md — v0.2 ГОТОВО, следующее v0.3/v0.5 параллельно поверх v0.2. a-base §4 — dev-VM Stage 0/1/2 = фазовые таргеты + shturman-splash (software-render), U-Boot framebuffer/A-B/secure-boot — HW (VM↔HW-граница). v0.1-v0.6 спека §13 — шов «shturman.target → зонтик; critical set → stage1.target». Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Alexander <akotenev2003@gmail.com>
7.2 KiB
Штурман — инструкции проекта
Open-source русскоязычный companion-слой («ОС поверх Linux») для авто на RK3588: быстрый Slint-UI + голосовой RU-ассистент, читающий OBD/CAN только на чтение + расширяемый Plugin API. Лицензия MIT. Общение и комментарии — по-русски; код-идентификаторы — как есть.
Фаза: РЕАЛИЗАЦИЯ (v0)
Проектирование завершено. Источник правды по дизайну — каталог docs/ (Tier 0–3 + 8 контрактов +
детальный roadmap.md; всё прошло многоагентный adversarial-ревью). Не противоречь докам; если
реальность расходится с доком — синхронизируй док (двунаправленные швы, как в дизайн-фазе).
КРАСНЫЕ ЛИНИИ (нерушимы)
- Никогда не safety-critical — двигатель/тормоза/ABS/ESP/руль/подушки; в системе нет actuator-путей.
- 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)
Фундамент готов и в main (Планы 1–5 ч.1; спека docs/specs/v0.1-v0.6-foundation.md + планы docs/specs/plans/):
воркспейс + shturman-common/ipc/sdk + стаб-сервисы firstboot/settings/power (интеграция на D-Bus) +
первый Slint-кадр (shell) + dev-tools (валидатор/scaffolding) + systemd/Lima/E2E-файлы. just ci зелёный.
План 5 ч.2 — ГОТОВО (ветка feat/v0.6-lima-e2e): Lima-VM поднимается (just vm-up), сквозной just e2e
зелёный с нуля (just vm-reset && just e2e): boot → data.mount → firstboot → machine-id bind → Power/Settings
на системной шине → fake-ACC AccChanged → первый Slint-кадр (software-render → PNG, oneshot-сервис) →
base-бюджеты (journald volatile / zram / oomd / fake-hwclock→/data / eMMC-прокси) → reboot: персист Settings +
machine-id стабилен. Приёмка §9.4 (v0.1 + v0.6 + шагающий скелет) выполнена. Швы реализации — спека §13.
v0.2 Boot-конвейер — ГОТОВО (ветка feat/v0.2-boot-pipeline): спека docs/specs/v0.2-boot-pipeline.md + план
docs/specs/plans/06-v0.2-boot-pipeline.md. shturman.target → зонтик фаз Stage 0/1/2; shturman-splash (Stage 0,
software-render → /run/shturman/splash.png, Before=shell → до первого кадра) + shturman-stage2-warmup (деферред
After=shell); общий рендер-хелпер shturman-render (shell+splash). just vm-reset && just e2e зелёный с нуля:
фазы разделены (splash ≤ frame ≤ stage2), регресс v0.1/v0.6 цел. Приёмка спека v0.2 §9.3 выполнена.
Следующее: v0.3 power-safe и v0.5 полный shell (живой weston-shell) — параллельно поверх v0.2 · затем v0.4 MCU/thermal.
CI: GitHub-Actions-конфиг удалён (его ловит Gitea). Гейт — локальный
just ci. CI на Gitea — решение позже.
Карта документации
- Архитектура/процессы/шина:
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 промптах агентов (закрывают строку, валят скрипт) — код-идентификаторы в одинарных кавычках.