type: standard
title: "Жизненный цикл проекта — процессы"
status: active
version: 1.0.0
date: 2026-04-10
knowledge_level: У1
Полный цикл от идеи до архивирования: инициация, инициализация, рабочий процесс,
операции, разработка IT-решения, реабилитация, процессорная обработка.
Выполнять строго по порядку.
Шаг 1 — Определить тип и место
1. Тип проекта → PROJECT_TYPOLOGY.md §3
2. Место в иерархии → где родитель?
3. Имя папки: @{тип}-{имя}/
Шаг 2 — Скопировать шаблон
# Шаблоны: architect/templates/@{тип}/
cp -r architect/templates/@biz/ projects/org/@biz-{имя}/
Доступные шаблоны: @org, @biz, @it, @ops, @hr, @fin, @mkt, @rd, @phys, @module
Шаг 3 — Структура проекта
@{тип}-{имя}/
├── INDEX.md ← навигация: что где лежит
├── AI.md ← контекст для любого AI
├── CLAUDE.md ← инструкции для Claude
├── STATUS.md ← стадия: IDEA, что делаем, следующий шаг
├── LOG.md ← первая запись: инициализация
├── [файлы по типу] ← матрица в PROJECT_DOCUMENTS.md §4
└── arh/
Шаг 4 — Заполнить AI.md
type: biz # тип из TYPOLOGY
name: ...
description: ... # 1-2 абзаца: что это, зачем
status: IDEA
key_files:
- INDEX.md
- STATUS.md
Шаг 5 — Глоссарий (обязательно)
1. Изучить тему проекта (бизнес, предметная область, технологии)
2. Предложить пользователю список основных терминов с определениями
3. Обсудить, скорректировать
4. Если терминов >3 → записать в GLOSSARY.md
5. При появлении новых терминов — предлагать добавить
Шаг 6 — Обновить родителя
- Добавить ссылку в INDEX.md родительского проекта
- Добавить запись в LOG.md: "YYYY-MM-DD — Создан проект @{name}"
Санация — применение чеклиста bootstrap к существующему проекту.
Цель: определить нужный список документов, собрать ценное, лишнее — в arh/.
Каждый шаг утверждает оператор.
Алгоритм санации:
Разведка (L0): читаем все .md, строим карту
↓
Карта документов → показываем оператору
↓
Утверждение списка ← ОПЕРАТОР
↓
По каждому документу:
Читаем существующие → предлагаем объединение → ОПЕРАТОР ✓ → записываем
↓
Всё остальное → arh/ ← ОПЕРАТОР ✓
↓
Битые ссылки → fix
↓
git commit -m "chore({project}): sanation — docs list, merge, arh/"
Отличие от bootstrap:
| Bootstrap | Санация | |
|---|---|---|
| Откуда | С нуля | Существующий проект |
| Контент | Пишем новый | Берём лучшее из существующего |
| Участие оператора | Шаг глоссария | Каждый документ |
| Результат | Чистый проект | Оздоровлённый проект с историей в arh/ |
ZERO VANILLA WORKING PRODUCTION
───────── ────────────── ───────────── ─────────────
Установлено Голый дистрибутив Версии с кодом Релиз в проде
НЕ работает v0.0.0 v0.1.0+ v1.0.0+
БД нет БД есть Custom модули Стабильно
PATH A: Создание с нуля
НИЧЕГО → Zero → Vanilla (v0.0.0) → Working (v0.1.0+) → Production (v1.0.0+)
PATH B: Онбординг существующего
Получение → Анализ → Развёртывание → Онбординг (v1.0.0) → Working (v1.1.0+)
PATH A дает Vanilla (чистый дистрибутив), PATH B дает Working project (уже с кодом).
Шаг 1: Проверка инфраструктуры
# Диск
df -h # минимум 10GB свободно
# PHP
php -v # 8.1+ (рекомендуется 8.4)
# БД
mysql --version # MySQL 8.0+ или MariaDB 10.6+
# Веб-сервер
nginx -v # nginx 1.20+
# Composer
composer --version # 2.x
Шаг 2: Создание Zero
cd ~/
composer create-project drupal/recommended-project new.site.ru
cd new.site.ru
git init
git add .
git commit -m "Zero: Drupal 11.3.3 deployed"
Шаг 3: Настройка -> Vanilla
# Создать БД
mysql -u root -p
CREATE DATABASE site_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site_user'@'localhost' IDENTIFIED BY 'SecurePass123';
GRANT ALL PRIVILEGES ON site_db.* TO 'site_user'@'localhost';
FLUSH PRIVILEGES;
# Установить CMS
php core/scripts/drupal install standard \
--db-url=mysql://site_user:SecurePass123@localhost/site_db \
--site-name="New Site" \
--account-name=admin \
--account-pass=Admin123!
# Включить ТОЛЬКО модули из коробки
drush en locale -y
# Проверить
curl -I http://new.site.ru/ # HTTP/1.1 200 OK
drush pml --status=enabled --no-core | wc -l # 1 (только locale)
# Зафиксировать
git tag v0.0.0
Шаг 4: Эталонные данные
# .credentials.md — НЕ в git, добавить в .gitignore
# .project-config.md — в git (параметры без паролей)
echo ".credentials.md" >> .gitignore
Шаг 5: Vanilla Backup (L3)
cd ~/
tar -czf "vanilla-$(date +%Y%m%d-%H%M%S).tar.gz" new.site.ru/
mysqldump -u site_user -pSecurePass123 site_db | \
gzip > "vanilla-db-$(date +%Y%m%d-%H%M%S).sql.gz"
v0.0.0 = Vanilla (голый дистрибутив) — контрольная точка
v0.1.0 = Первая фича
v0.x.x = Разработка (не в проде)
v1.0.0 = Релиз в production
v1.0.1 = Баг-фикс (PATCH)
v1.1.0 = Новая фича (MINOR)
v2.0.0 = Breaking change (MAJOR)
Чеклист аудита проекта:
- Структура соответствует стандарту
- Все обязательные файлы на месте
- Нет дублирования данных
- Credentials в .gitignore
- Версия актуальна
Когда нужен рефакторинг:
- Накопился технический долг
- Структура перестала соответствовать стандарту
- Меняется стек или архитектура
Режим 1: ПОЛНЫЙ ЦИКЛ (DEV -> STAGING -> PRODUCTION)
Когда: E-commerce, финансы, большая аудитория, высокая стоимость ошибки.
DEV → разработка
STAGING → точная копия prod, финальные тесты
PRODUCTION → боевой
STAGING = точная копия PRODUCTION (БД, версии, конфиг).
Режим 2: БЫСТРЫЙ ЦИКЛ (DEV -> PRODUCTION)
Когда: MVP, внутренние инструменты, низкий риск, малый бюджет.
DEV → разработка + ВСЕ тесты
PRODUCTION → релиз + мониторинг
LEGACY — текущий рабочий проект в production.
NEXT — переделка с нуля, разрабатывается параллельно.
Миграция:
site.ru (LEGACY) → archive.site.ru
new.site.ru (NEXT) → site.ru
Полный цикл:
1. DEV: код → тесты → git commit → push develop
2. STAGING: merge develop → deploy → тесты stage.site.ru
3. PRODUCTION: merge staging → deploy → мониторинг
Быстрый цикл:
1. DEV: код → ВСЕ тесты → git commit → push main
2. PRODUCTION: deploy → мониторинг → hotfix при необходимости
Правило: один шаг = одна проверка
1. СДЕЛАТЬ одно изменение
2. ПРОВЕРИТЬ что работает
3. ЗАПИСАТЬ в DEVLOG.md
4. GIT COMMIT
5. Следующее изменение
Правило: не чинить ядро
Ядро (НЕ ТРОГАТЬ):
| Система | Ядро | Можно менять |
|---|---|---|
| Drupal | core/, vendor/ |
modules/custom/, themes/custom/ |
| Laravel | vendor/, bootstrap/ |
app/, routes/, config/ |
| WordPress | wp-includes/, wp-admin/ |
wp-content/plugins/, themes/ |
| Node.js | node_modules/ |
src/, lib/ |
Если сломалось: ОТКАТ к backup -> Повторить ПО-ДРУГОМУ.
Правило: 3 ошибки -> СТОП
3 ошибки подряд -> откат к backup -> другой подход.
Правило: удаленные изменения (READ-MODIFY-WRITE)
1. READ — прочитать текущее состояние
2. BACKUP — сохранить копию
3. MODIFY — изменить конкретное место
4. VERIFY — проверить результат
5. COMMIT или ROLLBACK
Формат записи:
[YYYY-MM-DD HH:MM] ДЕЙСТВИЕ: описание
Параметр: значение
✓ Результат
→ Статус
Типы действий: INFRA CHECK, ZERO, VANILLA, SETUP, MODULE, BACKUP, FEATURE, FIX, DEPLOY, ROLLBACK.
Проверил что работает -> commit. НЕ раньше.
git commit -m "Feature: описание"
git tag v0.x.x
Один commit = одно логическое изменение.
| Уровень | Что | Когда | Где |
|---|---|---|---|
| L1 Файлы | Модули, код | Перед деплоем | arh/ + timestamp |
| L2 БД | Дамп БД | Перед миграцией БД | arh/sql/ + timestamp |
| L3 Vanilla | Голый дистрибутив | После установки CMS | ~/backups/vanilla/ |
| L4 Система | Весь проект | Перед большими изменениями | $INFRA/backups/ |
# L1: Модули
tar -czf "arh/modules-$(date +%Y%m%d-%H%M%S).tar.gz" modules/
# L2: БД
mysqldump -u user -p db_name | gzip > "arh/sql/db-$(date +%Y%m%d-%H%M%S).sql.gz"
# L3: Vanilla
tar -czf "backups/vanilla/vanilla-$(date +%Y%m%d-%H%M%S).tar.gz" site.ru/
mysqldump -u user -p db_name | gzip > "backups/vanilla/vanilla-db-$(date +%Y%m%d-%H%M%S).sql.gz"
Checklist перед деплоем:
□ Backup создан (L1+L2)
□ Тесты пройдены (на DEV/STAGING)
□ Git tag поставлен
□ DEVLOG заполнен
□ План rollback готов
Rollback при ошибке:
# Откат файлов
tar -xzf arh/modules/modules-before-deploy-*.tar.gz -C modules/
# Откат БД
gunzip -c arh/sql/db-before-deploy-*.sql.gz | mysql -u user -ppass db_name
# Проверка
curl -I http://site.ru/
ФАЗА 1: СОЗДАНИЕ СТРУКТУРЫ ← один раз
ФАЗА 2: РАЗРАБОТКА (dev/) ← активная работа
ФАЗА 3: ТЕСТИРОВАНИЕ (test/) ← проверка
ФАЗА 4: PRODUCTION (prod/) ← релиз
ФАЗА 5: ЭКСПЛУАТАЦИЯ ← использование
ФАЗА 6: ОБНОВЛЕНИЕ ← новая версия (цикл)
ФАЗА 7: АРХИВИРОВАНИЕ ← вывод из эксплуатации
| Стадия | Версия | Где | Описание |
|---|---|---|---|
| dev/ | X.Y.Z-dev | modules/dev/ | Разработка |
| test/ | X.Y.Z-rc1 | modules/test/ | Тестирование |
| prod/ | X.Y.Z | modules/prod/ | Production |
| archive/ | X.Y.Z | modules/archive/ | Deprecated |
dev -> test:
# Обновить версию: X.Y.Z-dev -> X.Y.Z-rc1
cp -r modules/dev/my_module/ modules/test/my_module-vX.Y.Z-rc1/
test -> prod:
# Обновить версию: X.Y.Z-rc1 -> X.Y.Z
bash /opt/scripts/backup.sh # ОБЯЗАТЕЛЬНО
cp -r modules/test/my_module-vX.Y.Z-rc1/ modules/prod/my_module-vX.Y.Z/
Хранить минимум 2-3 версии в prod/ для rollback.
Критерии: критический баг (downtime, потеря данных), простое исправление (1-5 строк), срочность.
# Исправить в dev/
vim modules/dev/my_module/func.php
# Обновить версию: X.Y.Z -> X.Y.Z+1
# Можно пропустить test/ если критично
cp -r modules/dev/my_module/ modules/prod/my_module-vX.Y.Z+1/
1. ЗАДАЧА — оператор формулирует
2. АНАЛИЗ — кодер читает существующий код, планирует
3. РЕАЛИЗАЦИЯ — код по стандартам, минимальные изменения
4. ПРОВЕРКА — тесты, ручная проверка, демонстрация
5. ФИКСАЦИЯ — git add, git commit, обновление документации
Git-коммиты:
feat: новая функциональность
fix: исправление ошибки
refactor: рефакторинг
docs: документация
ФАЗА 0: INTAKE — сбор входных данных (2-4 ч)
ФАЗА 1: ПОЧЕМУ — проблема (4-8 ч)
ФАЗА 2: ЗАЧЕМ — видение (4-6 ч)
ФАЗА 3: ЧТО — решение (6-10 ч)
ФАЗА 4: КТО — команда (2-4 ч)
ФАЗА 5: КАК — архитектура (8-16 ч)
ФАЗА 6-8: ЧЕМ/ГДЕ/КОГДА — параллельно (8-12 ч)
ФАЗА 9: СКОЛЬКО — ресурсы (4-6 ч)
ФАЗА 10: СТАРТ — разработка
Обязательный чеклист перед первой строкой кода:
Если хотя бы один пункт НЕ готов -> НЕ начинать разработку.
Реабилитация — последовательный курс сеансов, каждый из которых атомарно
приводит часть документации в соответствие с целевой структурой.
| Томография | Реабилитация | |
|---|---|---|
| Цель | Что не так | Привести в порядок |
| Результат | Отчёт | Изменения в репозитории |
| Обратимость | Без изменений | Каждый сеанс обратим через git |
Фаза 0 — Фиксация
git tag rehab-YYYY-MM-start
Создать маппинг в tmp/PLAN.md со статусами: RENAME, CREATE, DELETE, ARCHIVE, KEEP, REVIEW.
Фаза 1 — Создание недостающего
Создать новые файлы. Сначала создать, потом переносить/удалять.
git commit -m "rehab: create missing files"
Фаза 2 — Миграция
Атомарное правило: переименование файлов и обновление ВСЕХ ссылок — один коммит.
git mv old/path.md new/path.md
# Обновить все ссылки во всём репозитории
find /opt/claude-workspace -name "*.md" -exec sed -i 's|old/path|new/path|g' {} +
# Проверить: ноль вхождений старого пути
grep -rn 'old/path' --include="*.md" | wc -l # должно быть 0
git commit -m "rehab: migrate [описание]"
Фаза 3 — Очистка
Удалить или архивировать устаревшее. Только после того как новый файл существует и все ссылки обновлены.
Фаза 4 — Верификация
✅ Ноль ссылок на старые пути
✅ Все файлы из PLAN.md имеют статус ✅
✅ Каждая папка-аспект имеет README.md
✅ git log --follow показывает историю для перенесённых файлов
git tag rehab-YYYY-MM-end
mv tmp/PLAN.md architect/arh/rehab-YYYY-MM-plan.md
scan.sh — найти все ссылки на паттерн:
#!/bin/bash
PATTERN=${1:-"ваш паттерн"}
grep -rn "$PATTERN" /opt/claude-workspace --include="*.md" | grep -v "^Binary" | sort
validate.sh — проверить нет битых ссылок:
#!/bin/bash
ERRORS=0
while IFS= read -r file; do
while IFS= read -r link; do
target=$(dirname "$file")/$link
if [ ! -f "$target" ]; then
echo "BROKEN: $file -> $link"
ERRORS=$((ERRORS + 1))
fi
done < <(grep -oP '\[.*?\]\(\K[^)]+(?=\))' "$file" | grep -v '^http' | grep '\.md')
done < <(find /opt/claude-workspace/architect -name "*.md" | grep -v arh/ | grep -v tmp/)
echo "Total broken links: $ERRORS"
ПРОЕКТОР (агент) → использует → ПРОЕКТ-ПРОЦЕССОР (движок)
Проектор решает ЧТО делать. Проект-Процессор решает КАК исполнить.
PROCESS(task, context):
[0] CONTEXT_CHECK(task) → path, risk_level
[0.5] MATCHER(task) → template | null
if ATOMIC(task):
[2] SYNTHESIZE(task, context) → CODE-PROMPT.md
[3] EXECUTE(CODE-PROMPT) → result
return result
[1] DECOMPOSE(task) → subtasks[]
[1.5] CLARIFY(subtasks) → verified_subtasks[]
for each subtask:
if ATOMIC: SYNTHESIZE + EXECUTE
else: PROCESS(subtask, INHERIT(context, subtask)) ← РЕКУРСИЯ
INTEGRATE(results[]) → deploy/
PASS_3(deploy/, risk_level)
PASS_4(deploy/)
return deploy/
[0] CONTEXT_CHECK — проверить размер и сложность
[0.5] MATCHER — найти шаблон (БЫСТРЫЙ / МЕДЛЕННЫЙ ПУТЬ)
[1] ДЕКОМПОЗИТОР — разбить на дерево атомов
[1.5] УТОЧНЕНИЕ — верификация полноты параметров
[2] СИНТЕЗАТОР — собрать контекст для каждого атома
[3] ЭКЗЕКУТОР — исполнить атомы
INTEGRATE — собрать результаты
PASS 3 — полное тестирование
PASS 4 — финализация (HARDEN)
Точное совпадение (100%) → БЫСТРЫЙ ПУТЬ: шаблон → ЭКЗЕКУТОР
Частичное (>=70%) → БЫСТРЫЙ + дополнить
Нет совпадения (<70%) → МЕДЛЕННЫЙ ПУТЬ: полный цикл + сохранить шаблон
ATOMIC = true если ВСЕ условия:
1. entity_count = 1 — одна сущность
2. estimated_lines <= 500 — результат помещается в один CODE-PROMPT
3. dependency_count = 0 — нет зависимости от незавершённых задач
4. Все REQUIRED_PARAMS разрешены
depth > 7 → WARN: проверить декомпозицию
depth > 12 → STOP: пересмотреть задачу, ESCALATE оператору
| Рекурсия задач | Рекурсия блоков | |
|---|---|---|
| Причина | Задача сложная по смыслу | Задача не влезает в контекст |
| Механизм | Декомпозиция по логике | Разбивка на последовательные части |
| Глубина | Не ограничена (WARN > 7) | 1-2 уровня |
| Критерий | Задача атомарна | Блок < CONTEXT_LIMIT * 0.7 |
| Правило | Описание |
|---|---|
| Глоссарий обязателен | Каждый проект начинается с изучения темы и предложения терминов |
| Структура сначала | INDEX, AI, STATUS, LOG -> потом контент |
| Имя папки | Всегда @{тип}-{имя}/, тип из PROJECT_TYPOLOGY.md |
| Один шаг = одна проверка | Сделал -> проверил -> записал -> commit |
| Не чинить ядро | Откатиться к рабочему -> повторить по-другому |
| DEVLOG всегда | Каждое действие записывается |
| Git после проверки | Проверил -> commit, не раньше |
Версия: 1.0.0
Дата: 2026-04-10