dsh-desktop-kit 1.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -41
- package/client.js +780 -28
- package/docs/ARCHITECTURE.md +114 -0
- package/docs/COMPATIBILITY.md +61 -0
- package/docs/INSTALL.md +97 -0
- package/docs/PRIVACY.md +50 -0
- package/docs/ROADMAP.md +57 -0
- package/docs/TOKENS.md +118 -0
- package/docs/TROUBLESHOOTING.md +68 -0
- package/docs/images/hero.png +0 -0
- package/index.js +4 -0
- package/package.json +15 -5
- package/plugins/dsh-gkb-ru-ui/lib/client.js +276 -28
- package/plugins/dsh-gkb-ru-ui/lib/index.js +45 -1
- package/plugins/dsh-gkb-ru-ui/lib/skills.js +195 -1
- package/plugins/dsh-gkb-ru-ui/package.json +2 -2
- package/plugins/dsh-gkb-ru-ui/screenshots/01-home-tiles-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/06-home-tiles-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/01-real-time-peak-start.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/02-real-time-peak-end.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-768-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/06-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-live-preview-check.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-pre-peak-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/08-peak-start-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/09-peak-end-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/10-pre-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/11-pre-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/12-pre-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/qa-report.json +74 -0
- package/plugins/dsh-profile-transfer/screenshots/01-settings-transfer-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/02-settings-transfer-preview-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/03-settings-transfer-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/04-settings-transfer-390-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/05-settings-transfer-768-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/06-settings-transfer-390-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/07-settings-transfer-export-result.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/08-settings-transfer-workspaces-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/09-settings-transfer-workspaces-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/10-settings-transfer-workspaces-390-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/01-row-menu-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/02-dialog-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/03-dialog-390-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/04-dialog-1440-dark.png +0 -0
- package/plugins/dsh-session-move/screenshots/05-drag-highlight-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/06-drop-ungrouped-highlight.png +0 -0
- package/plugins/dsh-session-move/screenshots/07-after-drop-ungrouped.png +0 -0
- package/plugins/dsh-session-move/screenshots/08-move-dialog.png +0 -0
- package/plugins/dsh-session-move/screenshots/09-moved-to-second-workspace.png +0 -0
- package/plugins/dsh-session-move/screenshots/qa-report.json +62 -0
- package/plugins/dsh-skill-autopilot/cordis.patch.yml +3 -0
- package/plugins/dsh-skill-autopilot/index.js +444 -0
- package/plugins/dsh-skill-autopilot/package.json +19 -0
- package/plugins/dsh-token-lab/cordis.patch.yml +3 -0
- package/plugins/dsh-token-lab/lib/client.js +504 -0
- package/plugins/dsh-token-lab/lib/index.js +275 -0
- package/plugins/dsh-token-lab/package.json +26 -0
- package/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png +0 -0
- package/plugins/dsh-token-lab/screenshots/02-token-lab-1440-dark.png +0 -0
- package/skills/code-review-checklist/SKILL.md +48 -30
- package/skills/content-writing/SKILL.md +64 -327
- package/skills/content-writing/references/process.md +123 -0
- package/skills/content-writing/references/quick-recipes.md +99 -0
- package/skills/content-writing/references/rules.md +85 -0
- package/skills/content-writing/references/sources.md +49 -0
- package/skills/context-economy/SKILL.md +60 -0
- package/skills/context-economy/references/long-session.md +35 -0
- package/skills/context-economy/references/token-math.md +42 -0
- package/skills/context-economy/references/tool-recipes.md +34 -0
- package/skills/database-safety/SKILL.md +40 -24
- package/skills/debugging-playbook/SKILL.md +30 -27
- package/skills/design-critique/SKILL.md +57 -110
- package/skills/design-critique/references/a11y.md +25 -0
- package/skills/design-critique/references/diagnoses.md +33 -0
- package/skills/design-critique/references/quick-tests.md +30 -0
- package/skills/design-critique/references/report-template.md +63 -0
- package/skills/design-critique/references/rubric-fast.md +73 -0
- package/skills/dev-workflow/SKILL.md +41 -34
- package/skills/dev-workflow/references/definition-of-done.md +44 -0
- package/skills/dev-workflow/references/memory-and-boundaries.md +31 -0
- package/skills/dev-workflow/references/stages.md +67 -0
- package/skills/git-and-ci/SKILL.md +46 -26
- package/skills/pg-upgrade-verify/SKILL.md +54 -35
- package/skills/project-deep-dive/SKILL.md +39 -164
- package/skills/project-deep-dive/references/recon-commands.md +12 -0
- package/skills/project-deep-dive/references/section-templates.md +2 -0
- package/skills/project-deep-dive/references/tool-and-process.md +86 -0
- package/skills/project-memory-maintenance/SKILL.md +39 -154
- package/skills/project-memory-maintenance/references/api-and-checklist.md +99 -0
- package/skills/project-memory-maintenance/references/journal-template.md +2 -0
- package/skills/project-memory-maintenance/references/section-rules.md +2 -0
- package/skills/release-and-deploy/SKILL.md +46 -32
- package/skills/requirements-and-planning/SKILL.md +44 -110
- package/skills/requirements-and-planning/references/antipatterns-and-checklist.md +20 -0
- package/skills/requirements-and-planning/references/process-steps.md +52 -0
- package/skills/requirements-and-planning/references/templates-and-estimates.md +29 -0
- package/skills/security-review/SKILL.md +33 -29
- package/skills/seo/SKILL.md +53 -305
- package/skills/seo/references/antipatterns.md +66 -0
- package/skills/seo/references/audit-checklist.md +14 -0
- package/skills/seo/references/content-seo.md +180 -174
- package/skills/seo/references/eeat-medical.md +2 -0
- package/skills/seo/references/measurement.md +28 -1
- package/skills/seo/references/on-page.md +5 -0
- package/skills/seo/references/page-templates.md +56 -0
- package/skills/seo/references/stack-recipes.md +2 -0
- package/skills/seo/references/structured-data.md +2 -0
- package/skills/seo/references/technical-seo.md +2 -0
- package/skills/service-desk-conventions/SKILL.md +40 -28
- package/skills/service-desk-db-safety/SKILL.md +39 -28
- package/skills/service-desk-release/SKILL.md +40 -22
- package/skills/service-desk-testing/SKILL.md +47 -33
- package/skills/service-desk-ui/SKILL.md +43 -24
- package/skills/skills-router/SKILL.md +44 -82
- package/skills/skills-router/references/applying-skills.md +25 -0
- package/skills/skills-router/references/routing-matrix.md +52 -0
- package/skills/testing-strategy/SKILL.md +47 -32
- package/skills/ui-design-system/SKILL.md +43 -38
- package/skills/ui-design-system/references/accessibility-and-responsive.md +50 -0
- package/skills/ui-design-system/references/tokens-and-components.md +67 -0
- package/skills/ui-design-system/references/visual-qa.md +44 -0
- package/skills/web-research/SKILL.md +40 -33
- package/skills/web-research/references/answer-and-citations.md +60 -0
- package/skills/web-research/references/query-recipes.md +44 -0
- package/skills/wow-design/SKILL.md +82 -161
- package/skills/wow-design/references/anti-patterns.md +3 -0
- package/skills/wow-design/references/critique-rubric.md +3 -0
- package/skills/wow-design/references/design-brief-template.md +2 -0
- package/skills/wow-design/references/inspiration.md +3 -0
- package/skills/wow-design/references/presets.md +3 -0
- package/skills/wow-design/references/principles.md +3 -0
- package/skills/wow-design/references/quick-presets.md +50 -0
- package/skills/wow-design/references/report-template.md +21 -0
- package/skills/wow-design/references/stack-recipes.md +3 -0
- package/skills/wow-design/references/visual-qa.md +3 -0
- package/skills/wow-design/references/wow-levers.md +43 -0
- package/tools/skill-cost.mjs +76 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# API project_memory и детали анализа
|
|
2
|
+
|
|
3
|
+
> Часть навыка project-deep-dive. ≈2 950 токенов. Читать, когда: нужны полная таблица действий и аргументов, детали шагов анализа, форма отчёта или антипаттерны.
|
|
4
|
+
|
|
5
|
+
## 1. Хранилище и API
|
|
6
|
+
|
|
7
|
+
Хранилище: `%USERPROFILE%\.dsh\projects-memory\<slug>\` — `PROJECT.md`, `ARCHITECTURE.md`, `CODE-MAP.md`, `INVARIANTS.md`, `GOTCHAS.md`, `RUNBOOK.md`, `JOURNAL/YYYY-MM.md`, `INDEX.json`.
|
|
8
|
+
|
|
9
|
+
Сигнатура: `project_memory(action, project?, file?, content?, query?, root?, name?, mode?, maxChars?)`. В текущей сборке у `register` есть необязательный `stack` — короткое описание стека.
|
|
10
|
+
|
|
11
|
+
| action | Что делает | Обязательные аргументы | Пример |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| `status` | состояние хранилища, досье и свежести | — | `project_memory(action="status")` |
|
|
14
|
+
| `register` | регистрирует проект | `name`, `root` (+ `stack`) | `project_memory(action="register", name="my-app", root="C:\work\my-app", stack="Laravel 13 / PostgreSQL")` |
|
|
15
|
+
| `list` | список проектов | — | `project_memory(action="list")` |
|
|
16
|
+
| `read` | читает файл досье | `project`, `file` | `project_memory(action="read", project="my-app", file="ARCHITECTURE", maxChars=8000)` |
|
|
17
|
+
| `search` | ищет по досье перед записью | `query` | `project_memory(action="search", project="my-app", query="очереди")` |
|
|
18
|
+
| `append_journal` | дописывает сессию в `JOURNAL/YYYY-MM.md` | `project`, `content` | `project_memory(action="append_journal", project="my-app", content="...")` |
|
|
19
|
+
| `update_section` | записывает секцию досье | `project`, `file`, `content`, `mode` | `project_memory(action="update_section", project="my-app", file="ARCHITECTURE", content="...", mode="replace")` |
|
|
20
|
+
|
|
21
|
+
Правила аргументов:
|
|
22
|
+
- `file` — только `PROJECT`, `ARCHITECTURE`, `CODE-MAP`, `INVARIANTS`, `GOTCHAS`, `RUNBOOK`, `JOURNAL`.
|
|
23
|
+
- `mode` — `replace` (секция перезаписывается целиком, по умолчанию) или `append` (дописать в конец).
|
|
24
|
+
- `maxChars` — ограничение вывода `read` (500–30000, по умолчанию 12000); целиком досье не выкачивай.
|
|
25
|
+
- `root` — абсолютный путь к корню проекта; `name` — slug в kebab-case (`service-desk`); `stack` — короткое описание стека при `register`.
|
|
26
|
+
- `project` по умолчанию — проект текущей сессии; чужой проект указывай явно.
|
|
27
|
+
- `content` — markdown секции по каркасам из `section-templates.md`.
|
|
28
|
+
- `append_journal` сам выбирает `JOURNAL/YYYY-MM.md` по текущему месяцу.
|
|
29
|
+
- `update_section` — единственный способ писать секции; `INDEX.json` руками не правь — иначе рассинхронизируются индекс и свежесть.
|
|
30
|
+
|
|
31
|
+
## 2. Детали восьми шагов
|
|
32
|
+
|
|
33
|
+
1. **Статус и проект.** `status` до чтения файлов. Проект найден — запомни slug. Нет проекта — `register`. Несколько кандидатов или непонятно, о каком проекте речь, — **спроси пользователя**, не угадывай. Досье устарело — предупреди сразу; устаревшие факты в новых секциях помечай `[устарело]`.
|
|
34
|
+
2. **Что уже известно.** Прочитай существующие секции (`read`, `maxChars` 6000–8000), чтобы не дублировать и не противоречить. Новый факт спорит со старым — перепроверь по коду: победивший запиши, проигравший пометь `[устарело]`.
|
|
35
|
+
3. **Разведка (только чтение).** Источники по порядку: `AGENTS.md` → `README*` → манифесты → структура каталогов → git. Манифесты и конфиги: `composer.json`, `package.json`, `pnpm-workspace.yaml`, `pyproject.toml`, `requirements.txt`, `go.mod`, `Cargo.toml`, `pom.xml`, `docker-compose.yml`, `Dockerfile`, `Makefile`, `.env.example`, `phpunit.xml`, `vite.config.*`, `tsconfig.json`. Рецепты — `recon-commands.md`. Не запускай миграции, seed, деплой, install и другие изменяющие команды.
|
|
36
|
+
4. **Трассировка потоков.** Веди цепочку «точка входа → маршрут → обработчик → домен → данные → тесты». Фиксируй не всё подряд, а то, что объясняет: как запустить, где бизнес-логика, где данные, что легко сломать. Команды — `recon-commands.md`.
|
|
37
|
+
5. **Сборка секций.** Порядок: `PROJECT` → `ARCHITECTURE` → `CODE-MAP` → `INVARIANTS` → `GOTCHAS` → `RUNBOOK`. Каждая секция — отдельный `update_section`; после записи прочитай её обратно (`read`). Минимумы: `PROJECT` 8–15 строк, `ARCHITECTURE` 15+, `CODE-MAP` 10+ записей, `INVARIANTS` 5+, `GOTCHAS` 3+, `RUNBOOK` 5+ команд. Малый проект — минимумы пропорционально ниже, блоки те же.
|
|
38
|
+
6. **Метки достоверности.** `[проверено]` — прочитано в файле или подтверждено выводом команды, рядом `path:line`. `[выведено]` — логический вывод (соглашение фреймворка, косвенная связь), прямого источника нет. `[устарело]` — было верно в прошлой версии/ветке, требует перепроверки. Ссылка — `относительный/путь:строка`; копировать код, логи и дампы нельзя.
|
|
39
|
+
7. **Журнал.** Значимую сессию зафиксируй `append_journal` (сжато, по шаблону навыка `project-memory-maintenance`): что анализировали, что выяснили, какие решения, что осталось.
|
|
40
|
+
8. **Отчёт.** Не пропускай «Неясно»: перечисли каждую записанную секцию, каждый проверенный факт со ссылкой и каждый неясный пункт.
|
|
41
|
+
|
|
42
|
+
## 3. Каркасы секций (сжато)
|
|
43
|
+
|
|
44
|
+
- `PROJECT`: что делает; стек и версии; репозиторий и прод; как поднять; статус и владелец.
|
|
45
|
+
- `ARCHITECTURE`: слои и модули; поток данных текстом; очереди/крон; внешние сервисы; ключевые решения.
|
|
46
|
+
- `CODE-MAP`: таблица «область | путь | зачем»; точки входа; модели/схема; тесты; конфиги.
|
|
47
|
+
- `INVARIANTS`: нумерованные «нельзя», каждое с причиной и способом проверки.
|
|
48
|
+
- `GOTCHAS`: симптом → причина → обход; отдельная ловушка — отдельный пункт.
|
|
49
|
+
- `RUNBOOK`: окружение; установка; запуск; тесты; сборка; деплой; откат; бэкап; где логи.
|
|
50
|
+
|
|
51
|
+
Полные шаблоны с примерами — `section-templates.md`.
|
|
52
|
+
|
|
53
|
+
## 4. Форма отчёта
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## Записано в досье
|
|
57
|
+
- PROJECT — ...
|
|
58
|
+
- ARCHITECTURE — ...
|
|
59
|
+
|
|
60
|
+
## Проверено
|
|
61
|
+
- [проверено] ... (path:line)
|
|
62
|
+
|
|
63
|
+
## Неясно / требует проверки
|
|
64
|
+
1. ...
|
|
65
|
+
2. ...
|
|
66
|
+
|
|
67
|
+
## Дальше
|
|
68
|
+
- ...
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 5. Антипаттерны
|
|
72
|
+
|
|
73
|
+
- Копировать целые файлы, конфиги, миграции и логи «чтобы было».
|
|
74
|
+
- Сохранять `.env`, дампы, токены, персональные данные.
|
|
75
|
+
- Отправлять код/конфиги в веб-поиск или внешние API «для уточнения».
|
|
76
|
+
- Писать «очевидно», «скорее всего» без метки `[выведено]`.
|
|
77
|
+
- Заполнять шаблон пунктами без доказательств.
|
|
78
|
+
- Править файлы досье и `INDEX.json` руками.
|
|
79
|
+
- Начинать анализ без `status`.
|
|
80
|
+
- Оставлять старые факты без пометки и заявлять о свежести досье.
|
|
81
|
+
- Складывать всё в одну гигантскую секцию вместо ссылок на файлы.
|
|
82
|
+
|
|
83
|
+
## 6. Связанное
|
|
84
|
+
|
|
85
|
+
- Постоянное ведение памяти — `project-memory-maintenance` (журнал, дедупликация, свежесть).
|
|
86
|
+
- Процесс разработки — `dev-workflow`; планирование — `requirements-and-planning`; финальное ревью — `code-review-checklist`.
|
|
@@ -1,170 +1,55 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: project-memory-maintenance
|
|
3
|
-
description: "
|
|
4
|
-
whenToUse: "После
|
|
3
|
+
description: "Ведение памяти проектов через project_memory: журнал сессий, секции досье, дедупликация, лимиты, свежесть INDEX.json."
|
|
4
|
+
whenToUse: "После значимой сессии (до ответа), при изменении архитектуры/инвариантов/команд, найденной ловушке, устаревании досье, просьбе «запомни это»."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
> Память полезна, только если она актуальна, не дублируется и не превращается в свалку.
|
|
11
|
-
> Хранилище локальное: `%USERPROFILE%\.dsh\projects-memory\<slug>\`.
|
|
12
|
-
> Содержимое проекта не отправляется в сеть никогда.
|
|
8
|
+
# Project-memory-maintenance
|
|
13
9
|
|
|
14
10
|
## 0. Контракт
|
|
11
|
+
1. Журнал — после значимой сессии, до ответа.
|
|
12
|
+
2. В секции — долговечное; ход работы — в журнал.
|
|
13
|
+
3. Перед записью `search`; дубликат — в существующий.
|
|
14
|
+
4. Секреты, PII, код, дампы — не в досье, журнале, `INDEX.json`.
|
|
15
|
+
5. Только `project_memory`; файлы не правь.
|
|
15
16
|
|
|
16
|
-
1.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
4. В досье, журнале и `INDEX.json` нет секретов, PII, копий кода и дампов.
|
|
20
|
-
5. Пиши только через `project_memory`; файлы хранилища руками не редактируй.
|
|
21
|
-
|
|
22
|
-
## 1. API (кратко)
|
|
23
|
-
|
|
24
|
-
Сигнатура: `project_memory(action, project?, file?, content?, query?, root?, name?, mode?, maxChars?)`.
|
|
25
|
-
В текущей сборке инструмента у `register` есть также необязательный `stack`.
|
|
26
|
-
Хранилище: `%USERPROFILE%\.dsh\projects-memory\<slug>\` — `PROJECT.md`, `ARCHITECTURE.md`, `CODE-MAP.md`, `INVARIANTS.md`, `GOTCHAS.md`, `RUNBOOK.md`, `JOURNAL/YYYY-MM.md`, `INDEX.json`.
|
|
27
|
-
|
|
28
|
-
| action | Когда | Аргументы |
|
|
29
|
-
|---|---|---|
|
|
30
|
-
| `status` | в начале и в конце сессии | — |
|
|
31
|
-
| `list` | если нужно найти проект | — |
|
|
32
|
-
| `read` | перед правкой секции | `project`, `file`, `maxChars` |
|
|
33
|
-
| `search` | перед любой записью (дедуп) | `project`, `query`, `maxChars` |
|
|
34
|
-
| `append_journal` | после сессии | `project`, `content` |
|
|
35
|
-
| `update_section` | долговечный факт | `project`, `file`, `content`, `mode` |
|
|
36
|
-
| `register` | новый проект | `name`, `root` (+ `stack`) |
|
|
37
|
-
|
|
38
|
-
- `file` — `PROJECT`, `ARCHITECTURE`, `CODE-MAP`, `INVARIANTS`, `GOTCHAS`, `RUNBOOK`, `JOURNAL`.
|
|
39
|
-
- `mode` — `replace` (по умолчанию) или `append`.
|
|
40
|
-
- `project` по умолчанию — проект текущей сессии; при работе с чужим проектом указывай slug явно.
|
|
41
|
-
- `maxChars` ограничивает вывод `read` (500–30000, по умолчанию 12000); не выкачивай досье целиком без нужды.
|
|
42
|
-
|
|
43
|
-
## 2. Что считать значимой сессией
|
|
17
|
+
## 1. Что значимо и API
|
|
18
|
+
- Значимо: код/схема, решение, исправленный баг с проверкой, инвариант/ловушка, деплой, deep-dive; тривиальное — нет (сомневаешься — короткая запись).
|
|
19
|
+
- API: `project_memory(...)`; `file` — секция, `mode` — replace/append, `maxChars` 500–30000.
|
|
44
20
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
- глубокий анализ проекта (`project-deep-dive`).
|
|
21
|
+
## 2. Конец сессии
|
|
22
|
+
1. `status` — проект/свежесть.
|
|
23
|
+
2. `search` 1–3 темы с синонимами (`maxChars=4000`).
|
|
24
|
+
3. `append_journal` в `JOURNAL/YYYY-MM.md`; связанные шаги — одна запись.
|
|
25
|
+
4. `update_section` — только долговечное, одна секция — один вызов.
|
|
26
|
+
5. `read` 1–2 секции, гейт, отчёт.
|
|
52
27
|
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
- повторное обсуждение уже записанного;
|
|
56
|
-
- неудачная попытка без нового знания.
|
|
28
|
+
## 3. Журнал
|
|
29
|
+
`## YYYY-MM-DD — <сессия>` + 5 пунктов: делали, выявили, решения, проверки, осталось; все обязательны (пусто — «нет»), 1–3 строки. Без кода/логов/дампов/чата; «выявили» — факты, «проверки» — запуски и результат, «осталось» — шаги/риски. Секреты: «ошибка с DB_PASSWORD (значение не сохранено)».
|
|
57
30
|
|
|
58
|
-
|
|
31
|
+
## 4. Секции
|
|
32
|
+
`PROJECT` — стек/пути/прод/статус (не история); `ARCHITECTURE` — компоненты/потоки (не алгоритмы); `CODE-MAP` — модули/маршруты (не код); `INVARIANTS` — жёсткие правила (не советы); `GOTCHAS` — ловушки с симптомом (не банальности); `RUNBOOK` — команды/деплой (не архитектура); `JOURNAL` — сессии (не дампы/секреты).
|
|
59
33
|
|
|
60
|
-
|
|
34
|
+
`append` — добавить, `replace` — перестроить (сначала `read`). Один факт — одно место; в двух секциях — `path:line`.
|
|
61
35
|
|
|
62
|
-
|
|
63
|
-
|
|
36
|
+
## 5. Дедупликация и лимиты
|
|
37
|
+
1–3 термина (модуль, команда, ошибка, синонимы); `search` каждый; найдено — `read` + дополни, нет — добавь; после — `read`: дубля, секрета, мёртвой ссылки нет.
|
|
38
|
+
Секция ≤ 40 KB; пункт 1–3 строки; детали — `docs`/README, в секции `path:line`. Раздуто — вынеси, оставь ссылки; журнал по месяцам, повторяющиеся выводы — в секции.
|
|
64
39
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
- Что делали: ...
|
|
69
|
-
- Что выявили: ...
|
|
70
|
-
- Решения: ...
|
|
71
|
-
- Проверки: ...
|
|
72
|
-
- Осталось: ...
|
|
73
|
-
```
|
|
40
|
+
## 6. Свежесть и INDEX.json
|
|
41
|
+
`INDEX.json` — машинный, руками нельзя. `lastAnalyzedAt` — только полный анализ; `git.branch`/`head` — на чём; `confidence` — высокая/средняя/низкая по `[проверено]`/смеси/`[устарело]`.
|
|
42
|
+
`status` в начале; branch/HEAD разошлись — устарело: перечитай, обнови, старое помечай. Полный анализ — коммит в отчёт; частичная правка не выглядит полной. `confidence` — по тегам. Расхождение `status` — в отчёт, файл не правь.
|
|
74
43
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- Все пять пунктов обязательны; если пункт пуст — пиши «нет», не удаляй его.
|
|
78
|
-
- 1–3 строки на пункт; без копий кода, логов, дампов и пересказа чата.
|
|
79
|
-
- «Что выявили» — факты, меняющие понимание проекта (причина, зависимость, ловушка).
|
|
80
|
-
- «Проверки» — что реально запускалось и результат: тесты, линтер, сборка, ручной сценарий, тест на копии.
|
|
81
|
-
- «Осталось» — конкретные следующие шаги или риски; «нет» допустимо.
|
|
82
|
-
- Секреты и PII вырезай: «ошибка с `DB_PASSWORD` (значение не сохранено)».
|
|
83
|
-
- Подробный шаблон и примеры — `references/journal-template.md`.
|
|
84
|
-
|
|
85
|
-
## 4. Правила обновления секций
|
|
86
|
-
|
|
87
|
-
| Секция | Обновляй, когда | Не пиши сюда |
|
|
44
|
+
## 7. Куда грузить дальше
|
|
45
|
+
| Нужно | Файл | ≈токенов |
|
|
88
46
|
|---|---|---|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
| `
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
- Долговечный факт = верен через месяц и вне контекста сегодняшней задачи.
|
|
99
|
-
- Один факт — одно место. Нужен в двух секциях — дай ссылку `path:line`, а не копию.
|
|
100
|
-
- Подробные правила по каждой секции — `references/section-rules.md`.
|
|
101
|
-
|
|
102
|
-
## 5. Дедупликация: поиск до записи
|
|
103
|
-
|
|
104
|
-
1. Сформулируй 1–3 термина по теме (имя модуля, команда, текст ошибки, синонимы: «очереди/jobs/queue»).
|
|
105
|
-
2. По каждому: `project_memory(action="search", project="<slug>", query="<термин>", maxChars=4000)`.
|
|
106
|
-
3. Нашёл — `read` секцию и дополни существующий пункт; не создавай второй.
|
|
107
|
-
4. Не нашёл — добавь новый пункт.
|
|
108
|
-
5. После записи — `read` секцию: дубля нет, секрета нет, ссылка существует.
|
|
109
|
-
|
|
110
|
-
Запрещено: дублировать один факт в журнале и нескольких секциях; писать почти одинаковые пункты разными словами.
|
|
111
|
-
|
|
112
|
-
## 6. Лимиты размера
|
|
113
|
-
|
|
114
|
-
- Каждая секция ≤ 40 KB. Приближаешься к лимиту — сокращай до выводов и ссылок.
|
|
115
|
-
- 1 пункт — 1–3 строки; без воды, повторов и пересказа кода.
|
|
116
|
-
- Подробности, таблицы и длинные списки — в reference-файлы проекта (`docs/`, `references/`, README); в секции — ссылка `path:line`.
|
|
117
|
-
- `JOURNAL/` уже разделён по месяцам: не раздувай месяц, повторяющиеся выводы своди в секции.
|
|
118
|
-
- Раздутая секция — признак того, что в досье тащат детали реализации; перенеси их в проект и оставь ссылки.
|
|
119
|
-
|
|
120
|
-
## 7. Свежесть и INDEX.json
|
|
121
|
-
|
|
122
|
-
`INDEX.json` — машинный файл хранилища; вручную не редактируется. Значимые поля:
|
|
123
|
-
- `lastAnalyzedAt` — когда досье проанализировано целиком (а не косметически поправлено);
|
|
124
|
-
- `git.branch`, `git.head` — ветка и коммит, на которых сделан анализ;
|
|
125
|
-
- `confidence` — сводная уверенность: высокая при ключевых `[проверено]`, средняя при смеси, низкая при заметном `[устарело]`.
|
|
126
|
-
|
|
127
|
-
Правила:
|
|
128
|
-
- В начале сессии `status`; сравни `git.head`/ветку с текущими:
|
|
129
|
-
`git -C <root> rev-parse --abbrev-ref HEAD` и `git -C <root> rev-parse --short HEAD`.
|
|
130
|
-
- Расходятся — досье устарело: перечитай затронутые секции, обнови факты, старые пометь `[устарело]`.
|
|
131
|
-
- Полный анализ (`project-deep-dive`) — в отчёте укажи, на каком коммите он сделан; частичная правка не должна выглядеть как полный анализ.
|
|
132
|
-
- `confidence` повышай только новыми `[проверено]`; понижай при `[устарело]` и большом объёме `[выведено]`.
|
|
133
|
-
- Если после записи `status` показывает неактуальные поля — это расхождение инструмента: зафиксируй в отчёте и сообщи, но `INDEX.json` руками не правь.
|
|
134
|
-
|
|
135
|
-
## 8. Порядок конца сессии (5 шагов)
|
|
136
|
-
|
|
137
|
-
1. `status` — проект и свежесть.
|
|
138
|
-
2. `search` по темам сессии (1–3 запроса).
|
|
139
|
-
3. `append_journal` — запись по шаблону §3.
|
|
140
|
-
4. `update_section` — только долговечные факты, одна секция — один вызов.
|
|
141
|
-
5. `read` 1–2 изменённые секции и проверка по чек-листу §9; в отчёт — что записано.
|
|
142
|
-
|
|
143
|
-
## 9. Финальный чек-лист
|
|
144
|
-
|
|
145
|
-
- [ ] `status` вызван, проект определён.
|
|
146
|
-
- [ ] `search` был до записи, дублей нет.
|
|
147
|
-
- [ ] Журнал записан по шаблону, все пять пунктов на месте.
|
|
148
|
-
- [ ] Секции обновлены только долговечными фактами.
|
|
149
|
-
- [ ] Секретов, PII и копий кода нет.
|
|
150
|
-
- [ ] У ключевых утверждений метка `[проверено]`/`[выведено]`/`[устарело]` и ссылка `path:line`.
|
|
151
|
-
- [ ] Секции ≤ 40 KB; детали вынесены в references.
|
|
152
|
-
- [ ] Свежесть в порядке: `git.head` соответствует анализу, устаревшее помечено.
|
|
153
|
-
- [ ] Пользователю перечислено, что записано.
|
|
154
|
-
|
|
155
|
-
## 10. Антипаттерны
|
|
156
|
-
|
|
157
|
-
- Писать в досье после каждого шага: журнал — да, секции — нет.
|
|
158
|
-
- Дублировать один факт в нескольких секциях и журнале.
|
|
159
|
-
- Копировать код, логи, дампы, переписку.
|
|
160
|
-
- Секреты и PII в журнале («пароль ...», «токен ...»).
|
|
161
|
-
- Править файлы досье и `INDEX.json` руками.
|
|
162
|
-
- Превращать `PROJECT.md` в дневник.
|
|
163
|
-
- Заявлять полный анализ после косметической правки.
|
|
164
|
-
- Раздувать секцию до огромного размера вместо ссылок.
|
|
165
|
-
- Записывать одноразовые детали, которые не переживут сессию.
|
|
166
|
-
|
|
167
|
-
## 11. Связанное
|
|
168
|
-
|
|
169
|
-
- Первичный анализ проекта — `project-deep-dive`.
|
|
170
|
-
- Процесс разработки — `dev-workflow`; финальное ревью — `code-review-checklist`.
|
|
47
|
+
| API, чек-лист, антипаттерны | `references/api-and-checklist.md` | ≈2 600 |
|
|
48
|
+
| Журнал: шаблон | `references/journal-template.md` | ≈1 100 |
|
|
49
|
+
| Правила секций | `references/section-rules.md` | ≈1 750 |
|
|
50
|
+
|
|
51
|
+
## 8. Гейт перед сдачей
|
|
52
|
+
- [ ] `status`; проект; `search` до записи, дублей нет.
|
|
53
|
+
- [ ] JOURNAL дописан (5 пунктов); досье обновлено; `git.head` сверен; старое помечено.
|
|
54
|
+
- [ ] Нет секретов/PII/кода; теги/`path:line`; ≤ 40 KB.
|
|
55
|
+
- [ ] В отчёт — что записано.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# API, критерии, лимиты и чек-лист памяти
|
|
2
|
+
|
|
3
|
+
> Часть навыка project-memory-maintenance. ≈2 600 токенов. Читать, когда: нужны полная таблица `project_memory`, критерии значимой сессии, лимиты, свежесть `INDEX.json`, финальный чек-лист или антипаттерны.
|
|
4
|
+
|
|
5
|
+
## 1. API
|
|
6
|
+
|
|
7
|
+
Сигнатура: `project_memory(action, project?, file?, content?, query?, root?, name?, mode?, maxChars?)`. В текущей сборке у `register` есть необязательный `stack`.
|
|
8
|
+
|
|
9
|
+
Хранилище: `%USERPROFILE%\.dsh\projects-memory\<slug>\` — `PROJECT.md`, `ARCHITECTURE.md`, `CODE-MAP.md`, `INVARIANTS.md`, `GOTCHAS.md`, `RUNBOOK.md`, `JOURNAL/YYYY-MM.md`, `INDEX.json`.
|
|
10
|
+
|
|
11
|
+
| action | Когда | Аргументы |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `status` | в начале и в конце сессии | — |
|
|
14
|
+
| `list` | если нужно найти проект | — |
|
|
15
|
+
| `read` | перед правкой секции | `project`, `file`, `maxChars` |
|
|
16
|
+
| `search` | перед любой записью (дедуп) | `project`, `query`, `maxChars` |
|
|
17
|
+
| `append_journal` | после сессии | `project`, `content` |
|
|
18
|
+
| `update_section` | долговечный факт | `project`, `file`, `content`, `mode` |
|
|
19
|
+
| `register` | новый проект | `name`, `root` (+ `stack`) |
|
|
20
|
+
|
|
21
|
+
- `file` — `PROJECT`, `ARCHITECTURE`, `CODE-MAP`, `INVARIANTS`, `GOTCHAS`, `RUNBOOK`, `JOURNAL`.
|
|
22
|
+
- `mode` — `replace` (по умолчанию) или `append`.
|
|
23
|
+
- `project` по умолчанию — проект текущей сессии; при работе с чужим проектом указывай slug явно.
|
|
24
|
+
- `maxChars` ограничивает вывод `read` (500–30000, по умолчанию 12000); не выкачивай досье целиком без нужды.
|
|
25
|
+
- `root` — абсолютный путь, `name` — slug в kebab-case, `stack` — короткое описание стека.
|
|
26
|
+
- `append_journal` пишет в `JOURNAL/YYYY-MM.md` текущего месяца; `update_section` — единственный способ писать секции.
|
|
27
|
+
|
|
28
|
+
## 2. Что считать значимой сессией
|
|
29
|
+
|
|
30
|
+
Да:
|
|
31
|
+
- изменение кода/конфига/схемы данных;
|
|
32
|
+
- архитектурное или продуктовое решение;
|
|
33
|
+
- найденная и исправленная ошибка, подтверждённая проверкой;
|
|
34
|
+
- новый инвариант или ловушка, которые должны пережить сессию;
|
|
35
|
+
- деплой, откат, смена окружения или команд запуска;
|
|
36
|
+
- глубокий анализ проекта (`project-deep-dive`).
|
|
37
|
+
|
|
38
|
+
Нет:
|
|
39
|
+
- тривиальный вопрос, чтение файла без выводов;
|
|
40
|
+
- повторное обсуждение уже записанного;
|
|
41
|
+
- неудачная попытка без нового знания.
|
|
42
|
+
|
|
43
|
+
Сомневаешься — пиши короткую запись в журнал: лишняя строка дешевле потерянного знания.
|
|
44
|
+
|
|
45
|
+
## 3. Дедупликация, лимиты, свежесть
|
|
46
|
+
|
|
47
|
+
Дедупликация:
|
|
48
|
+
1. Сформулируй 1–3 термина по теме (имя модуля, команда, текст ошибки, синонимы: «очереди/jobs/queue»).
|
|
49
|
+
2. По каждому: `project_memory(action="search", project="<slug>", query="<термин>", maxChars=4000)`.
|
|
50
|
+
3. Нашёл — `read` секцию и дополни существующий пункт; не создавай второй.
|
|
51
|
+
4. Не нашёл — добавь новый пункт.
|
|
52
|
+
5. После записи — `read` секцию: дубля нет, секрета нет, ссылка существует.
|
|
53
|
+
|
|
54
|
+
Лимиты:
|
|
55
|
+
- Каждая секция ≤ 40 KB. Приближаешься к лимиту — сокращай до выводов и ссылок.
|
|
56
|
+
- 1 пункт — 1–3 строки; без воды, повторов и пересказа кода.
|
|
57
|
+
- Подробности, таблицы и длинные списки — в reference-файлы проекта (`docs/`, `references/`, README); в секции — ссылка `path:line`.
|
|
58
|
+
- `JOURNAL/` уже разделён по месяцам: не раздувай месяц, повторяющиеся выводы своди в секции.
|
|
59
|
+
- Раздутая секция — признак того, что в досье тащат детали реализации; перенеси их в проект и оставь ссылки.
|
|
60
|
+
|
|
61
|
+
Свежесть и `INDEX.json`:
|
|
62
|
+
- `INDEX.json` — машинный файл хранилища; вручную не редактируется.
|
|
63
|
+
- `lastAnalyzedAt` — когда досье проанализировано целиком (а не косметически поправлено).
|
|
64
|
+
- `git.branch`, `git.head` — ветка и коммит, на которых сделан анализ.
|
|
65
|
+
- `confidence` — сводная уверенность: высокая при ключевых `[проверено]`, средняя при смеси, низкая при заметном `[устарело]`.
|
|
66
|
+
- В начале сессии `status`; сравни `git.head`/ветку с текущими: `git -C <root> rev-parse --abbrev-ref HEAD` и `git -C <root> rev-parse --short HEAD`.
|
|
67
|
+
- Расходятся — досье устарело: перечитай затронутые секции, обнови факты, старые пометь `[устарело]`.
|
|
68
|
+
- Полный анализ (`project-deep-dive`) — в отчёте укажи, на каком коммите он сделан; частичная правка не должна выглядеть как полный анализ.
|
|
69
|
+
- `confidence` повышай только новыми `[проверено]`; понижай при `[устарело]` и большом объёме `[выведено]`.
|
|
70
|
+
- Если после записи `status` показывает неактуальные поля — это расхождение инструмента: зафиксируй в отчёте, но `INDEX.json` руками не правь.
|
|
71
|
+
|
|
72
|
+
## 4. Финальный чек-лист
|
|
73
|
+
|
|
74
|
+
- [ ] `status` вызван, проект определён.
|
|
75
|
+
- [ ] `search` был до записи, дублей нет.
|
|
76
|
+
- [ ] Журнал записан по шаблону, все пять пунктов на месте.
|
|
77
|
+
- [ ] Секции обновлены только долговечными фактами.
|
|
78
|
+
- [ ] Секретов, PII и копий кода нет.
|
|
79
|
+
- [ ] У ключевых утверждений метка `[проверено]`/`[выведено]`/`[устарело]` и ссылка `path:line`.
|
|
80
|
+
- [ ] Секции ≤ 40 KB; детали вынесены в references.
|
|
81
|
+
- [ ] Свежесть в порядке: `git.head` соответствует анализу, устаревшее помечено.
|
|
82
|
+
- [ ] Пользователю перечислено, что записано.
|
|
83
|
+
|
|
84
|
+
## 5. Антипаттерны
|
|
85
|
+
|
|
86
|
+
- Писать в досье после каждого шага: журнал — да, секции — нет.
|
|
87
|
+
- Дублировать один факт в нескольких секциях и журнале.
|
|
88
|
+
- Копировать код, логи, дампы, переписку.
|
|
89
|
+
- Секреты и PII в журнале («пароль ...», «токен ...»).
|
|
90
|
+
- Править файлы досье и `INDEX.json` руками.
|
|
91
|
+
- Превращать `PROJECT.md` в дневник.
|
|
92
|
+
- Заявлять полный анализ после косметической правки.
|
|
93
|
+
- Раздувать секцию до огромного размера вместо ссылок.
|
|
94
|
+
- Записывать одноразовые детали, которые не переживут сессию.
|
|
95
|
+
|
|
96
|
+
## 6. Связанное
|
|
97
|
+
|
|
98
|
+
- Первичный анализ проекта — `project-deep-dive`.
|
|
99
|
+
- Процесс разработки — `dev-workflow`; финальное ревью — `code-review-checklist`.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Шаблон журнала проекта
|
|
2
2
|
|
|
3
|
+
> Часть навыка project-memory-maintenance. ≈1 100 токенов. Читать, когда: нужен точный шаблон записи, требования к пяти пунктам, пример или антипримеры.
|
|
4
|
+
|
|
3
5
|
Журнал — хронология значимых сессий. Файл: `JOURNAL/YYYY-MM.md` (месяц определяется датой записи).
|
|
4
6
|
Пишется действием `append_journal`, не вручную.
|
|
5
7
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Правила обновления секций досье
|
|
2
2
|
|
|
3
|
+
> Часть навыка project-memory-maintenance. ≈1 750 токенов. Читать, когда: обновляешь конкретную секцию досье и нужны границы «что писать / что не писать», структура и правила устаревания.
|
|
4
|
+
|
|
3
5
|
Общие принципы для всех секций:
|
|
4
6
|
- Только долговечные факты: верны через месяц и вне сегодняшнего контекста.
|
|
5
7
|
- Ссылка `path:line` вместо копии кода; одно утверждение — один источник.
|
|
@@ -1,39 +1,53 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: release-and-deploy
|
|
3
|
-
description: "
|
|
4
|
-
whenToUse: "
|
|
3
|
+
description: "Выпуск и выкатка: SemVer, immutable-артефакт, SHA-256 checksums, бэкап, деплой штатным скриптом, smoke и откат."
|
|
4
|
+
whenToUse: "Перед подготовкой релиза, сборкой артефакта, выкаткой на сервер, обновлением с миграциями и когда нужен план отката."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Релиз и выкатка (универсально)
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
##
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
10
|
+
## 0. Когда применять
|
|
11
|
+
- Готовишь релиз: версия, артефакт, checksums, тег, release notes.
|
|
12
|
+
- Просят «задеплой», обновить стенд или прод.
|
|
13
|
+
- В обновлении есть миграции/данные — сначала `pg-upgrade-verify`.
|
|
14
|
+
- После выкатки нужны smoke и решение «оставить или откатить».
|
|
15
|
+
|
|
16
|
+
## 1. Главное
|
|
17
|
+
|
|
18
|
+
**Версия и артефакт**
|
|
19
|
+
- SemVer/правила проекта: feature → minor, fix → patch, breaking → major. Версия — в артефакте, на сервере и в CHANGELOG.
|
|
20
|
+
- Артефакт собирается **один раз** и выкатывается неизменным; пересборка = новая версия и sha256.
|
|
21
|
+
- Без `.env*`, `vendor/`, `node_modules/`, сборок, `storage/`, `.git`, дампов и PII (если проект не требует иного).
|
|
22
|
+
- Проверить состав и отсутствие секретов; SHA-256 — в `checksums.txt` (`sha256sum` / `Get-FileHash -Algorithm SHA256`).
|
|
23
|
+
- CHANGELOG/RELEASE-NOTES: изменения, миграции, риски, план отката.
|
|
24
|
+
|
|
25
|
+
**Перед выкаткой**
|
|
26
|
+
- Зелёные: линтер, статанализ, unit/feature, E2E/UI; baseline не хуже.
|
|
27
|
+
- Бэкап БД, файлов и текущего кода; копия читается (`pg_restore -l`, пробное восстановление) и хранится вне сервера.
|
|
28
|
+
- Свободное место, maintenance-окно и выполнимый план отката.
|
|
29
|
+
- Миграции проверены на копии (`pg-upgrade-verify`) и аддитивны; при риске — maintenance.
|
|
30
|
+
|
|
31
|
+
**Выкатка**
|
|
32
|
+
- Сверить checksums: `sha256sum -c checksums.txt`.
|
|
33
|
+
- Применять штатным скриптом; зависимости, сборку и кэши не делать вразнобой.
|
|
34
|
+
- Перезапустить очереди/воркеры/php-fpm, сбросить и собрать кэши, проверить права на `storage`.
|
|
35
|
+
- Smoke: версия/health, `/login` и вход, ключевой сценарий записи, старые данные, админ и пользователь, логи без ошибок, очередь жива.
|
|
36
|
+
|
|
37
|
+
**Откат**
|
|
38
|
+
- Код: предыдущий артефакт/папка/тег. БД: только если менялись данные/схема — из проверенного дампа и с подтверждением.
|
|
39
|
+
- Снять maintenance, повторить smoke, сообщить пользователям, зафиксировать причину.
|
|
40
|
+
|
|
41
|
+
**После**
|
|
42
|
+
- Наблюдать логи, метрики и фоновые задачи 15–30 минут; старые артефакты хранить до стабильности.
|
|
43
|
+
- Записать версию, sha256, smoke и откат в память/CHANGELOG.
|
|
44
|
+
|
|
45
|
+
## 2. Куда грузить дальше
|
|
46
|
+
`git-and-ci` — ветки/теги/CI; `pg-upgrade-verify` — проверка на копии живой БД; `database-safety` / `service-desk-db-safety` — бэкап; `service-desk-release` — проектный tgz + `deploy/update.sh`.
|
|
47
|
+
|
|
48
|
+
## 3. Гейт перед сдачей
|
|
49
|
+
- [ ] Версия, CHANGELOG и sha256 сверены с артефактом.
|
|
50
|
+
- [ ] Бэкап читается и лежит вне сервера; откат выполним.
|
|
51
|
+
- [ ] Миграции прогнаны на копии; выкатка — штатным скриптом.
|
|
52
|
+
- [ ] Smoke: версия, вход, ключевой сценарий, старые данные, админ + пользователь, логи/очередь.
|
|
53
|
+
- [ ] Факт выкатки записан.
|