- permission-gate: block refs/tags/v* pushes, rm -r -f separated flags, git reset --hard, git clean (verified against actual bypasses) - prompts: /bugfix /feature /review no longer hardcode go-standards — reference profile-gated <lang>-standards instead - company-context: drop hardcoded Go stack, note TRACKER_URL priority, warn on context truncation instead of silently dropping rules - repo-map/docs-map: graceful degradation when config values are TODO - /kit-doctor: warn on unfilled config fields (repoMap/trackerUrl/docsUrl) - audit: retry POSTs to endpoint (3 attempts, backoff), still best-effort - install.sh: remove TODO course URL from cheat sheet - tests: expand guardrails (43 node checks), add shell tests for create-mr.sh (scp/https origin parse, GITLAB_HOST override, protected branch refusal), cover company-context lib (normalize/fetch/truncation) and mcp-bridge - commit package-lock.json for reproducible installs - document npm test Node >= 22.6 requirement (type stripping)
49 lines
2.6 KiB
Markdown
49 lines
2.6 KiB
Markdown
# Релизы и каналы `@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 + shell-скрипты; нужен Node ≥ 22.6),
|
|
`npm run typecheck` (при наличии peer-типов), `pi install ./` + `/kit-doctor`
|
|
(должно быть без предупреждений о TODO-значениях конфига).
|
|
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
|
|
```
|