diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..62dceb8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,25 @@ +# Changelog + +Формат — [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), версии — [SemVer](https://semver.org/lang/ru/). + +## [Unreleased] + +### Added +- Security guardrails: `secret-scanner` (блок записи секретов), `commit-guard` + (Conventional Commits + скан секретов в сообщении), `llm-redaction` (редакция + секретов перед отправкой в LLM), `audit-log` (локальный аудит + опциональный endpoint). +- DX-команды: `/kit-doctor` (health-check окружения), `/kit-help` (каталог возможностей). +- Каналы установки (`stable`/`beta`) и процесс релизов (`RELEASING.md`); `PI_KIT_CHANNEL`. +- `config/company.json`: поле `auditEndpoint`. +- Тест-харнес guardrails: `npm test`. + +## [0.1.0] + +### Added +- Базовый пакет: extensions (`company-context`, `protected-paths`, `permission-gate`), + скилы (jira-workflow, repo-map, docs-map, go/rust/typescript/python/kotlin/swift-standards), + команды `/bugfix` `/feature` `/review` `/rfc` `/kit-config`. +- `install.sh` с выбором профиля, гейтингом скилов, установкой публичных скилов и + интерактивной настройкой окружения (`~/.config/pi-kit/env.sh`). +- `config/company.json` как единый источник правды + `remoteConfigUrl`. +- Конвенции M.Video: URL (jira/wiki/gitlab), Conventional Commits, деплой `release-*`/`v*`. diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000..c2a0b50 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,47 @@ +# Релизы и каналы `@mvideo/pi-kit` + +Пакет исполняет код на машинах всех разработчиков, поэтому раскатка контролируется +**каналами** и **semver-тегами**, а не «всегда latest». + +## Каналы + +- **`stable`** — ветка, на которую сотрудники установлены по умолчанию + (`git:git.codelab.vc/ai/pi-kit@stable`). Указывает на проверенный релиз. +- **`beta`** — ветка для обкатки перед `stable` (по желанию). Установка: `PI_KIT_CHANNEL=beta`. +- Можно закрепиться на конкретный тег: `PI_KIT_CHANNEL=v1.2.3`. + +`pi update --extensions` тянет текущее состояние канала, на который установлен пользователь. + +## Как выпустить релиз + +1. Собрать изменения в `main` через MR с ревью (правило репозитория). +2. Прогнать проверки: `npm test` (guardrails), `npm run typecheck` (при наличии peer-типов), + `pi install ./` + `/kit-doctor`. +3. Обновить версию в `package.json` и запись в `CHANGELOG.md` (раздел из `Unreleased`). +4. Поставить тег на нужный коммит `main`: + ```bash + git tag -a vX.Y.Z -m "vX.Y.Z" + git push origin vX.Y.Z + ``` +5. Перевести канал на этот тег (fast-forward ветки канала): + ```bash + git branch -f beta vX.Y.Z # сначала на beta для обкатки + git push origin beta + # после обкатки: + git branch -f stable vX.Y.Z + git push origin stable + ``` +6. Сотрудники получат обновление обычным `pi update --extensions`. + +## Semver + +- **patch** (`vX.Y.Z+1`) — фиксы guardrails/скилов/шаблонов без изменения поведения команд. +- **minor** — новые скилы/команды/расширения, обратно совместимо. +- **major** — несовместимые изменения (удаление команд, смена формата `config/company.json`). + +## Откат + +Перевести `stable` на предыдущий тег и запушить: +```bash +git branch -f stable vX.Y.(Z-1) && git push origin stable +``` diff --git a/install.sh b/install.sh index 5200103..008af7e 100755 --- a/install.sh +++ b/install.sh @@ -14,10 +14,14 @@ set -euo pipefail # --------------------------------------------------------------------------- -# The ONLY place the repository address appears. No version ref on purpose, so -# `pi update --extensions` always pulls the latest main. +# The ONLY place the repository address appears. Employees install a CHANNEL +# (a moving git ref): `stable` (default, vetted releases) or `beta`. Maintainers +# fast-forward the channel branch to a tagged release. `pi update --extensions` +# then follows that channel. Override with PI_KIT_CHANNEL=beta (or a tag like v1.2.3). # --------------------------------------------------------------------------- -PI_KIT_REPO="git:git.codelab.vc/ai/pi-kit" +PI_KIT_HOST="git.codelab.vc/ai/pi-kit" +PI_KIT_CHANNEL="${PI_KIT_CHANNEL:-stable}" +PI_KIT_REPO="git:${PI_KIT_HOST}@${PI_KIT_CHANNEL}" MIN_NODE_MAJOR=20 INTERNAL_COURSE_URL="TODO: ссылка на внутренний курс по Pi" @@ -316,15 +320,16 @@ fi cat < /feature <тикет> - /review [фокус] /rfc <тема> /kit-config - Проверка: /kit-config — покажет действующие корпоративные значения + Сменить канал: PI_KIT_CHANNEL=beta ./install.sh + Команды: /bugfix <тикет> /feature <тикет> /review [фокус] /rfc <тема> + /kit-config /kit-doctor /kit-help + Проверка: /kit-doctor — health-check окружения Внутренний курс по Pi: ${INTERNAL_COURSE_URL} ────────────────────────────────────────────────────────