month-close · v1.0.0 · 2026-08-05 · sha256 bbda381fa73ac32c
month-close v1.0.0A
Immutable. This exact content is served forever at /api/v1/blob/bbda381fa73ac32c.
---
name: month-close
description: "Протокол закрытия месяца (Month Close). Стадия 7 каскада ВДВ v9 (PD.METHOD.008). Запускается в первый Пн месяца, до Strategy Session."
argument-hint: ""
version: 1.0.0
layer: L1
status: active
triggers:
slash: [/month-close]
phrases: []
routing:
executor: opus
deterministic: false
agents: single
interaction: multi-step
gates_required: []
gates_enforced: []
gates_rationale: "операционный скилл; WP Gate применим только при создании нового РП, не для операционных вызовов"
---
# Month Close (протокол закрытия месяца)
> **Роль:** R1 Стратег (выполнение), R23 Верификатор (Haiku, чеклист). **Бюджет:** 30-45 мин.
> **Триггер:** первый Пн месяца, перед Strategy Session первой недели.
> **Принцип:** Month Close = агрегация 4-5 Week Close'ов + переосмысление фазы/калибра. Не повторяет Week Close, опирается на его выходы.
> **Позиция в ВДВ v9:** стадия 7 «Закрытие месяца». Вход = Report W{N} предыдущего месяца + Strategy.md. Выход = Strategy.md § Результаты месяца (R1-RN) + `archive/MonthClose YYYY-MM.md`.
> **SKILL.md = L1 платформенный файл.** Пользователь не редактирует напрямую — только через `extensions/`.
## When to use
Протокол закрытия месяца (Month Close). Стадия 7 каскада ВДВ v9 (PD.METHOD.008). Запускается в первый Пн месяца, до Strategy Session.
## БЛОКИРУЮЩЕЕ: пошаговое исполнение
Month Close = протокол. Исполнять ТОЛЬКО пошагово через TodoWrite.
**Шаг 0 — ПЕРВОЕ действие:** создать список задач прямо сейчас (до любых других действий).
Каждый шаг алгоритма → отдельная задача (pending → in_progress → completed).
Переход к следующему — ТОЛЬКО после отметки текущего. Шаг невозможен → blocked (не пропускать молча).
## Предусловия (проверить ДО запуска)
1. **Сегодня первый Пн месяца?** Если нет — СТОП, предложить запустить в правильный день. Исключение: пропущенный Month Close за прошлый месяц (запускать до середины месяца с явным указанием периода).
2. **Week Close предыдущей недели выполнен?** Report W{N-1} существует в `current/` или `archive/`. Если нет — СТОП, сначала `/week-close`.
3. **Month Close прошлого месяца архивирован?** `archive/MonthClose YYYY-MM.md` существует (для месяцев после MVP). Если нет (первый прогон мая 2026) — пропустить проверку.
## Algorithm
### 0. Extensions (before)
Загрузить: `bash .claude/scripts/load-extensions.sh month-close before`. Exit 0 → `Read` каждый файл из вывода (alphabetic) → выполнить как первые шаги. Exit 1 → пропустить. Поддерживает `extensions/month-close.before.md` И `extensions/month-close.before.<suffix>.md`.
### 1. Сбор данных (агент)
**1a. Период.** Определить границы месяца: `YYYY-MM-01 .. YYYY-MM-{last}` (фактически — последний Week Close предыдущего месяца).
**1b. Коммиты за месяц.**
```bash
for repo in $(ls {{HOME_DIR}}/IWE/); do
if [ -d {{HOME_DIR}}/IWE/$repo/.git ]; then
count=$(git -C {{HOME_DIR}}/IWE/$repo log --since="$MONTH_START" --until="$MONTH_END" --oneline --no-merges 2>/dev/null | wc -l)
[ "$count" -gt 0 ] && echo "$repo: $count"
fi
done
```
**1c. Week Report'ы месяца.** Собрать `current/Report W{N}.md` за 4-5 недель → список закрытых/перенесённых РП, мультипликаторы, ТОС недель.
**1d. Drift месячный.** `bash ${IWE_SCRIPTS:-$HOME/IWE/scripts}/iwe-drift.sh` → выявить пары, где lag вырос за месяц.
**1e. Decision log.** Канонический файл: `${IWE_GOVERNANCE_REPO:-DS-strategy}/decisions/decision-log-YYYY-MM.md` (WP-109 Ф7, один файл на месяц). Перед чтением выполнить совместимую миграцию: если канонического файла нет, но существует `${IWE_GOVERNANCE_REPO:-DS-strategy}/exocortex/decisions/decision-log-YYYY-MM.md`, создать `decisions/` и переместить старый файл; если существуют оба, не объединять и не перезаписывать молча, сообщить пилоту о расхождении и читать канонический. Если файла нет или в нём нет записей месяца, зафиксировать «решения за месяц не зарегистрированы» и продолжить; отсутствие файла на пустом месяце не является ошибкой Month Close.
**1f. Метрики файлов memory (WP-217 Ф10.2).**
```bash
bash ${IWE_SCRIPTS:-$HOME/IWE/scripts}/memory-health.sh
bash ${IWE_SCRIPTS:-$HOME/IWE/scripts}/memory-bleed.sh
```
HOT-лимит превышен → понизить horizon в frontmatter нужных файлов ДО дальнейших шагов. Кандидаты на понижение из bleed-отчёта → зафиксировать в `MonthClose YYYY-MM.md § T-чеклист T23`.
**1g. Стабильные входы (PD.METHOD.008 стадия 7 входы 5+6).** Прочитать `${IWE_GOVERNANCE_REPO:-DS-strategy}/docs/Dissatisfactions.md` (список НЭП) + `${IWE_GOVERNANCE_REPO:-DS-strategy}/docs/Projects.md` (список проектов P1-P6). Без них ревизия проектов (Шаг 4) и промоция новых R (Шаг 9) не имеют контекста.
### 2. Мультипликатор месяца
> Агрегация недельных мультипликаторов, НЕ среднее дневных.
1. **WakaTime месяца** — сумма физического времени за все дни месяца
2. **Бюджет закрыт за месяц** — сумма `Бюджет закрыт` из всех Week Report'ов месяца
3. **Мультипликатор месяца** = Бюджет закрыт / WakaTime. Формат: `N.Nx`
4. **Динамика** — сравнить с прошлым месяцем (рост / падение / стабильно)
### 3. Ретроспектива метрик (человек + агент)
**3a. Фаза стратегической позиции (PD.FORM.078).**
Текущая декларация в Strategy.md § Состояние месяца: [Development / Chaos / Ceiling / Pivot]. Проверить по 5 сигналам PD.FORM.078:
- Оправдались ли сигналы перехода, зафиксированные в начале месяца?
- Фаза стабильна, сдвинулась, или требует пересмотра?
- Решение: оставить / сдвинуть → записать в `MonthClose YYYY-MM.md`.
**3b. Калибр личности (PD.CHR.007).**
Текущий калибр в Strategy.md (например: 3, целевой 4 к концу 2026). Вопросы:
- Появились ли за месяц события/результаты, сигнализирующие рост?
- Разрыв по трём направлениям (горизонт / bus factor / публичность) — какой сократился?
- Пересчёт: оставить / поднять на 0.5 / потребовать дополнительных действий.
### 4. Ревизия проектов P1-P6 (человек)
По `docs/Projects.md`, для каждого активного проекта:
- Какие R-результаты месяца двигали P?
- P застыл (0 часов за месяц) → сигнал: актуален ли P? Не пора ли декомпозировать или закрыть?
- Баланс часов по P — есть ли крен, соответствующий стратегии?
Вывод: 1-2 абзаца в `MonthClose YYYY-MM.md § Ревизия проектов`.
### 5. R-вопросник месяца (человек)
Открыть `memory/r-questionnaire.md` → раздел «Month Close — 6 доп. вопросов» → ответить последовательно (M1-M6).
**Особый статус M6 (decommission):** ответ = список T-действий на перевод в dormant/archived. Агент перед вопросом запускает `bash ${IWE_SCRIPTS:-$HOME/IWE/scripts}/iwe-drift.sh` + читает `sync-manifest.yaml § activity_checks:` → предъявляет кандидатов.
Время: 20-30 мин.
### 6. T-чеклист месяца (агент + человек)
Открыть `memory/t-checklist.md` → раздел «Month Close» → выполнить T23-T25:
- **T23 Lesson Hygiene месячный.** НЕ ротация дневная/недельная (это уже сделано Day/Week Close). Месячный масштаб — **объединение тематических файлов, удаление пустых категорий, сверка что `lessons_*.md` не разрослись за лимит**. Пройти MEMORY.md секция «Уроки» и тематические `lessons_*.md`. Лимит MEMORY.md «Уроки» ≤8 строк.
- **T24 Аудит протоколов на обходимые шаги.** Пройти `memory/protocol-*.md` и `.claude/skills/*/SKILL.md` — выявить шаги, которые агент регулярно пропускает (по `behaviour-report.sh`) или человек обходит молча. Решение: удалить / переформулировать / оставить как есть.
- **T25 Decommission-триаж.** Применить решения из Шага 7 (add-on). Здесь T25 — pointer, не дубль. См. Шаг 7 ниже.
### 7. Add-on: Decommission-триаж (WP-226 Ф2) — реализация T25
> Шаг 5 M6 собирает кандидатов → **Шаг 7 применяет** решения → Шаг 6 T25 = указатель на этот шаг. Единая точка выполнения (избегать тройного прогона).
Для каждого кандидата из Шага 5 M6:
1. Проверить: действие имеет измеримый след (entry в `sync-manifest.yaml § activity_checks:`)? Если нет — дополнить manifest перед решением.
2. Фактическая частота за 3 окна: `bash ${IWE_SCRIPTS:-$HOME/IWE/scripts}/iwe-drift.sh --activity` → счётчик.
3. Решение человека:
- **active → dormant:** переместить в секцию «Спящие действия» соответствующего чеклиста, пометить `dormant_from: YYYY-MM-DD`
- **dormant → archived:** перенести в `${IWE_GOVERNANCE_REPO:-DS-strategy}/archive/retired-actions.md` с причиной
- **dormant → active (реактивация):** вернуть в основной чеклист, пометить `reactivated_from: YYYY-MM-DD`, причина.
4. Зафиксировать решения в `MonthClose YYYY-MM.md § Decommission`.
### 8. Add-on: Decision log review (WP-226 Ф2)
> Обзор решений месяца из WP-109 Ф7 decision register.
1. Открыть канонический файл, уже подготовленный в шаге 1e: `${IWE_GOVERNANCE_REPO:-DS-strategy}/decisions/decision-log-YYYY-MM.md`. Если файл отсутствует или не содержит решений месяца — записать в `MonthClose YYYY-MM.md § Decision log review`: «Решения за месяц не зарегистрированы» и перейти к шагу 9; требование «минимум 1 инсайт» ниже применяется только когда в журнале есть решения.
2. Для каждого решения месяца ответить:
- **Оказалось правильным / неправильным / рано судить?**
- Если неправильное: какой сигнал был пропущен? → кандидат в `memory/feedback_*.md` как урок.
- Если рано судить: когда пересмотреть? → запись в trigger.
3. Записать выводы в `MonthClose YYYY-MM.md § Decision log review` — минимум 1 инсайт (если совсем нечего — это само по себе сигнал, что решения не отслеживаются).
### 9. Обновление Strategy.md § Результаты месяца (человек)
1. Закрытые R{N} — пометить done, краткий итог («что получилось», «что осталось»).
2. Перенесённые R{N} — в следующий месяц (с явным обоснованием: «не удалось из-за X»).
3. Новые R{N} следующего месяца — из черновика Strategy.md § «Черновик: {next month}» → промоция в «Фокус».
4. Если фаза сдвинулась (шаг 3a) → обновить секцию «Состояние месяца — фаза стратегической позиции».
5. Если калибр сдвинулся (шаг 3b) → обновить секцию «Калибр личности».
**EXTENSION POINT (month-close after):** `bash .claude/scripts/load-extensions.sh month-close after` — exit 0 → `Read` каждый файл из вывода (alphabetic) → выполнить. Exit 1 → пропустить. Поддерживает `extensions/month-close.after.md` И `extensions/month-close.after.<suffix>.md`.
### 10. Запись `MonthClose YYYY-MM.md`
Создать `${IWE_GOVERNANCE_REPO:-DS-strategy}/archive/MonthClose YYYY-MM.md` по шаблону (секция «Шаблон отчёта» ниже). Все разделы заполнены, плейсхолдеры заменены.
### 11. Коммит ${IWE_GOVERNANCE_REPO:-DS-strategy}
```bash
cd ~/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}
# НЕ `git add -A`: в общем клоне (multi-agent) сметает чужое pre-staged → mis-attribution
# (см. sessions/2026-06/2026-06-20-39-*). Перечисли артефакты month-close ЯВНО:
MONTH_FILES=(
"archive/MonthClose YYYY-MM.md"
"docs/Strategy.md"
# + archive/retired-actions.md, decisions/decision-log-YYYY-MM.md,
# memory/t-checklist.md — добавь те, что фактически правил в этом month-close
)
git add "${MONTH_FILES[@]}"
git commit -m "month-close: close YYYY-MM" -- "${MONTH_FILES[@]}"
```
Push при явном триггере «заливай».
### 12. Верификация (Haiku R23)
Запустить sub-agent Haiku в роли R23 Верификатор (context isolation).
Передать: (1) чеклист Month Close ниже, (2) `MonthClose YYYY-MM.md`, (3) изменения в Strategy.md.
По ❌ — исправить до показа пользователю.
---
## Шаблон отчёта `MonthClose YYYY-MM.md`
```markdown
---
type: month-close-report
period: YYYY-MM
closed: YYYY-MM-DD
closer: R1 Стратег
verified: R23 Верификатор
---
# Month Close YYYY-MM
## Обзор
- Период: YYYY-MM-01 .. YYYY-MM-{last}
- WakaTime месяца: {h}
- Бюджет закрыт: {h}
- Мультипликатор: {N.Nx} (прошлый месяц: {N.Nx})
- Коммитов: {N}
- Закрытых РП: {N}
- Перенесённых РП: {N}
## Фаза стратегической позиции (PD.FORM.078)
- Декларация на начало месяца: {Development | Chaos | Ceiling | Pivot}
- Фактически: {подтверждено | сдвинулось в Y}
- Сигналы: {что именно наблюдали}
- Решение: {оставить Development / перейти в Y}
## Калибр (PD.CHR.007)
- Текущий: {N}
- Разрыв: {горизонт / bus factor / публичность — что двигалось}
- Пересчёт: {оставить N / поднять до N+0.5}
## Ревизия проектов
- P1 Созидатель: {h, двигалось / застыло, причина}
- P2 Экосистема+МИМ: {...}
- P3 Платформа+IWE: {...}
- P4 Бот: {...}
- P5 Личное развитие: {...}
- P6 Ближнее окружение: {...}
- Баланс: {крен в сторону X, соответствует / не соответствует стратегии}
## R-вопросник (M1-M6)
- **M1:** ...
- **M2:** ...
- **M3:** ...
- **M4:** ...
- **M5:** ...
- **M6 Decommission:** {список T-действий на dormant/archived}
## Decommission (применённые переходы)
| Действие | Было | Стало | Причина |
|----------|------|-------|---------|
| T-NN | active | dormant | 3 окна без срабатывания |
| ... | | | |
## Decision log review
- Решение X (YYYY-MM-DD): {оказалось правильным / неправильным / рано судить}
- ...
- **Инсайт:** {1+ вывод}
## Результаты R{N} месяца (копия из Strategy.md)
- R1 ...: {done | перенесено | изменено}
- R2 ...: ...
## Задел на следующий месяц
- R1' {черновик}
- R2' {черновик}
- Red line: {главная цель}
## T-чеклист (T23-T25)
- [x] T23 Lesson Hygiene: {что изменено в MEMORY.md}
- [x] T24 Аудит протоколов: {какие шаги пересмотрены}
- [x] T25 Decommission-триаж: {см. таблицу выше}
```
---
## Чеклист Month Close
- [ ] Первый Пн месяца (или явное обоснование задержки)
- [ ] Week Close предыдущей недели выполнен
- [ ] Коммиты за месяц собраны по всем репо
- [ ] Мультипликатор месяца рассчитан + сравнение с прошлым
- [ ] Фаза стратегической позиции пересмотрена (PD.FORM.078)
- [ ] Калибр пересчитан (PD.CHR.007)
- [ ] Ревизия проектов P1-P6 выполнена
- [ ] R-вопросник M1-M6 пройден (ответы в `MonthClose YYYY-MM.md`)
- [ ] T-чеклист T23-T25 выполнен
- [ ] Decommission-триаж применён (таблица переходов)
- [ ] Decision log review: минимум 1 инсайт
- [ ] Strategy.md § Результаты месяца обновлён (R{N} закрыты, перенесены, заведены новые)
- [ ] Strategy.md § Черновик следующего месяца промотирован в Фокус
- [ ] Если фаза/калибр сдвинулись — обновлены соответствующие секции Strategy.md
- [ ] `archive/MonthClose YYYY-MM.md` создан, все секции заполнены
- [ ] ${IWE_GOVERNANCE_REPO:-DS-strategy} закоммичен
- [ ] Верификация R23 пройдена (или явно пропущена)
Все ✅ → «Месяц закрыт. Готов к Strategy Session первой недели.» Иначе — указать что осталось.
---
## Связь с другими масштабами ОРЗ
- **Не заменяет `/week-close`** — Month Close опирается на свежий Week Report предыдущей недели. Сначала `/week-close`, потом `/month-close`.
- **Предшествует Strategy Session первой недели** — её вход = только что обновлённый Strategy.md + `MonthClose YYYY-MM.md`. Не сливать в одну сессию: разные роли (R23 Верификатор для Close, R1 Стратег для Session) и разные артефакты.
- **Триггер вне каскада:** Strategy Session первой недели месяца требует, чтобы Month Close был пройден до неё. DayPlan первого Пн содержит две строки: «Month Close YYYY-MM» (0.75h) и «Strategy Session W{N}» (1-2h).
## Связь с Pack
- **PD.METHOD.008 § Каскад ВДВ v9** — канонический источник стадии 7 «Закрытие месяца»
- **PD.FORM.078** — фазы стратегической позиции (шаг 3a)
- **PD.CHR.007** — калибр личности (шаг 3b)
- **DP.SC.024** — обещание техобслуживания IWE, сценарий SC.024.4 «Месячное ТО» реализуется этим скиллом
## История
- 2026-04-24: скилл создан (WP-196 Ф12.2 + WP-226 Ф2 add-ons). Первый прогон — 4 мая 2026 на закрытие апреля.
<!-- USER-SPACE -->
<!-- /USER-SPACE -->