From 7bbef6886f2de820778dffdb4a4471ddb3889ec4 Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 24 Jun 2026 11:58:12 +0300 Subject: [PATCH] docs(governance): LICENSE (MIT) + DCO + CONTRIBUTING + README Co-Authored-By: Claude Opus 4.8 Signed-off-by: Alexander --- CONTRIBUTING.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ DCO | 34 ++++++++++++++++++++++++++ LICENSE | 21 +++++++++++++++++ README.md | 39 ++++++++++++++++++++++++++++++ 4 files changed, 157 insertions(+) create mode 100644 CONTRIBUTING.md create mode 100644 DCO create mode 100644 LICENSE create mode 100644 README.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..689b4c9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,63 @@ +# Контрибьютинг в «Штурман» + +Спасибо за интерес! «Штурман» — open-source русскоязычный companion-слой («ОС поверх Linux») для авто на +**RK3588**: быстрый Slint-UI + голосовой RU-ассистент, читающий OBD/CAN **только на чтение**, + расширяемый +Plugin API. Лицензия **MIT**. Общение и комментарии — по-русски; код-идентификаторы — как есть. + +## 1. Красные линии (нерушимы) + +Это не обсуждается и проверяется в каждом ревью: + +1. **Никогда не safety-critical** — никаких интеграций с управляющими ЭБУ (двигатель/тормоза/ABS/ESP/руль/ + подушки); в системе нет actuator-путей. +2. **CAN только на чтение** — допустимы стандартные OBD-II **read**-запросы (Mode 01/03/07/09/0A); запрещены + write/actuator/Mode-04/UDS-write — их не существует в коде, на D-Bus и в SDK. + +PR, добавляющий такой путь, **отклоняется**. Граница и энфорсмент — [`docs/contracts/safety.md`](docs/contracts/safety.md). + +## 2. Источник правды — `docs/` + +Дизайн (Tier 0–3 + контракты + roadmap) — в [`docs/`](docs/). Не противоречь докам; если реальность +расходится с доком — **синхронизируй док** (двунаправленный шов), а не «молча обойди». Точка входа — +[`CLAUDE.md`](CLAUDE.md). + +## 3. Рабочий цикл (фаза реализации) + +- **Roadmap ведёт** ([`docs/roadmap.md`](docs/roadmap.md)). Цикл на веху: **спека → TDD → реализация → + verify в Lima-VM → коммит**. **Код не пишем до утверждённой спеки.** Спеки — в [`docs/specs/`](docs/specs/). +- Тестируемость без машины (принцип #13): каждая фича поставляется со своим симулятором/моком. + +## 4. Стиль кода и тесты + +- Rust везде в проде (Python — только dev/симуляторы). Формат и линт: `cargo fmt` + `cargo clippy -D warnings` + (через `just lint`). +- Пирамида тестов: unit → integration → E2E. `just test` зелёный до PR. + +## 5. Лицензионная гигиена (#12) + +- Зависимости — **MIT/Apache-2.0/BSD/ISC**-совместимые. Заражающий дистрибуцию копилефт (**GPL/AGPL**) — + избегаем или изолируем отдельным процессом. **LGPL — гранулярно** (динамическая/системная линковка + допустима, не blanket-запрет). +- **`cargo deny check` обязателен** (CI-гейт). Любые исключения (напр. `slint` под GPL-3.0 — см. + [`docs/specs/`](docs/specs/)) — **явные и задокументированные** в `deny.toml`. + +## 6. Коммиты, ветки, DCO + +- Сообщения: `feat/fix/chore/docs(): …`. Ветка — от `main` (в `main` не коммитим без явного «ок»). +- **DCO sign-off обязателен:** каждый коммит — с `git commit -s` (Developer Certificate of Origin, + файл [`DCO`](DCO)). CLA нет. +- В конце сообщения коммита (для AI-ассистированных правок): `Co-Authored-By: Claude Opus 4.8 `. + +## 7. PR-чеклист + +- [ ] `just ci` зелёный (lint + test + deny). +- [ ] Не нарушает красные линии (§1). +- [ ] Доки синхронизированы (§2), если поведение/контракт изменились. +- [ ] Добавлены тесты (unit/integration/E2E по уровню изменения). +- [ ] Коммиты подписаны (`-s`). + +## 8. Поведение и обсуждение + +Уважительно и по делу (Code of Conduct — будет добавлен `CODE_OF_CONDUCT.md`, ориентир — Contributor +Covenant). Вопросы и предложения — в GitHub Issues/Discussions; крупные 🟡-развилки — в «Риск-реестре» +[`docs/roadmap.md`](docs/roadmap.md). diff --git a/DCO b/DCO new file mode 100644 index 0000000..49b8cb0 --- /dev/null +++ b/DCO @@ -0,0 +1,34 @@ +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..52e73a8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 K9 Shturman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..64ce54c --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# Штурман + +Open-source русскоязычный companion-слой («ОС поверх Linux») для авто на **RK3588**: быстрый Slint-UI + +голосовой RU-ассистент, читающий OBD/CAN **только на чтение**, + расширяемый Plugin API. Лицензия **MIT**. + +> Статус: **реализация v0** (фундамент — образ-болванка + dev-харнесс + первый Slint-кадр). Дизайн +> завершён, источник правды — [`docs/`](docs/). + +## Красные линии (нерушимы) + +- **Никогда не safety-critical** — двигатель/тормоза/ABS/ESP/руль/подушки; в системе нет actuator-путей. +- **CAN только на чтение** — стандартные OBD-II read (Mode 01/03/07/09/0A); запрещены write/actuator/Mode-04/UDS-write. + +## Документация + +- Точка входа: [`CLAUDE.md`](CLAUDE.md). +- Дизайн (источник правды): [`docs/`](docs/) — архитектура, контракты, домены. +- План реализации: [`docs/roadmap.md`](docs/roadmap.md); спеки вех — [`docs/specs/`](docs/specs/). + +## Быстрый старт (dev) + +Разработка ведётся в ARM64 Lima-VM (нативно к таргету RK3588). Команды — через `just`: + +``` +just vm-up # поднять dev-VM (Lima) — появляется в Плане 5 +just run # boot → стаб-сервисы на D-Bus → первый Slint-кадр +just ci # lint + test + deny (локальный гейт) +``` + +> Сейчас доступно: `just build` / `just test` / `just lint` / `just deny` (сборка/тесты `shturman-common` +> на хосте). Lima-VM и сквозной `run`/`e2e` — по мере планов реализации. + +## Лицензия и контрибьютинг + +MIT — см. [`LICENSE`](LICENSE). Контрибьюции — по DCO (`git commit -s`), см. [`CONTRIBUTING.md`](CONTRIBUTING.md). + +> **Примечание о UI-тулките:** Slint для embedded доступен бесплатно под **GPL-3.0** → шипимый UI-бинарь +> прод-образа (v4) будет под GPL-3.0; решение по тулкиту/лицензии осознанно отложено к v4 (см. +> [`docs/specs/`](docs/specs/)). Ядро и остальной код — MIT.