Регистрация косяка агента в системе учёта WP-316 L1. Без LLM — детерминированный скрипт без WP Gate.
日本語の概要は準備中です。原文の説明を表示しています。
Протокол закрытия недели (Week Close). Ретро 7 дней + carry-over в новую неделю + платформенные шаги (бэкап, dirty repos).
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Роль: Плановик (DP.ROLE.066) ведёт недельный ритуал; Стратег (R1) подключается по триггеру пересмотра приоритетов (DP.SC.051). Бюджет: ~30 мин. Принцип: SKILL.md = L1 платформенный файл. Пользователь не редактирует напрямую — только через
extensions/. Стиль текста: ретро недели и новый WeekPlan читает пилот → весь текст синтезировать в базе разговорного стиля (S0 база + S1 автор, источник DP.SC.050): русский, без машинных меток, главная мысль первой, код РП и путь не подлежащее.
Протокол закрытия недели (Week Close). Ретро 7 дней + carry-over в новую неделю + платформенные шаги (бэкап, dirty repos).
Week Close = протокол. Блокирующее требование — наблюдаемое свойство: ни один шаг не пропущен молча; каждый шаг отмечается ДО перехода к следующему. Шаг 0 — ПЕРВОЕ действие: зафиксировать список шагов прямо сейчас (до любых других действий) — в TodoWrite, а при его недоступности явной нумерацией в ответе. Инструмент по умолчанию — TodoWrite: каждый шаг алгоритма → отдельная задача (pending → in_progress → completed). TodoWrite недоступен (штатная ситуация, зависит от сборки клиента) → сообщить пилоту одной строкой, вести шаги явной нумерацией («Шаг X из Y: <название> — выполнен»), факт замены зафиксировать в отчёте закрытия (issues #561, #563).
Загрузить: bash .claude/scripts/load-extensions.sh week-close before. Exit 0 → Read каждый файл из вывода (alphabetic) → выполнить как первые шаги. Exit 1 → пропустить. Поддерживает extensions/week-close.before.md И extensions/week-close.before.<suffix>.md.
Коммиты:
for repo in $(ls {{WORKSPACE_DIR}}/); do
if [ -d {{WORKSPACE_DIR}}/$repo/.git ]; then
commits=$(git -C {{WORKSPACE_DIR}}/$repo log --since="last monday 00:00" --until="today 00:00" --oneline --no-merges 2>/dev/null)
[ -n "$commits" ] && echo "=== $repo ===" && echo "$commits"
fi
done
Календарь недели:
bash {{WORKSPACE_DIR}}/scripts/server-calendar.sh --week $(date -v-mon +%Y-%m-%d 2>/dev/null || date -d "last monday" +%Y-%m-%d)
Сверить запланированные встречи/задачи с фактом: что состоялось, что перенеслось, что отменилось. Для задач с отчётами (🔧 backup stress-test и т.п.) — проверить наличие артефакта.
Сопоставить коммиты и календарь с РП в WeekPlan → определить статусы (done/partial/not started).
Условный шаг: если запущен через
strategist.sh week-review(Пн 00:00 launchd) — алгоритм идёт через{{IWE_TEMPLATE}}/roles/strategist/prompts/week-review.md. В интерактивном режиме/week-close(вечер Вс) — выполнять следующие шаги вручную.
3a. Закрытые РП: что сделано, ключевые артефакты, мультипликатор за неделю. 3b. Частичные: % выполнения, что осталось, перенос в W+1. 3c. Не стартовавшие: причина, перенос или закрытие. 3d. Заблокированные: блокер, ETA снятия.
Незавершённые РП с pending/in_progress статусами → перенести в новый WeekPlan W{N+1} (создаст session-prep автоматически в Пн 04:00 либо вручную).
Зачем: carry-over §5 работает на уровне РП (status: in_progress → перенос). Pending фазы внутри Ф-таблиц context-файлов могут потеряться: если родительский РП в
in_progress— pending-фаза не выделяется автоматически; если родительский ушёл вdone— фаза теряется вместе с context-файлом.
bash ${IWE_SCRIPTS}/pending-phases-sweep.sh
Скрипт обходит все {{WORKSPACE_DIR}}/{{GOVERNANCE_REPO}}/inbox/WP-*.md со status: in_progress (или без явного status), извлекает строки Ф-таблицы со статусом ⏳ pending / pending, выводит сводку формата:
WP-NNN: pending-фазы (M):
Фx — <описание фазы>
Фy — <описание фазы>
Для каждой pending-фазы решить: (a) делать на этой неделе → добавить в W{N+1} как явный пункт; (b) переоценить (блокер? устарела?); (c) оставить как есть (если ожидание внешнего события — записать ожидаемый триггер).
Если скрипта нет — fallback: grep -l "status: in_progress" {{WORKSPACE_DIR}}/{{GOVERNANCE_REPO}}/inbox/WP-*.md → для каждого grep -E "⏳.*pending|Ф[0-9]+.*pending".
inbox/fleeting-notes.md за неделю → маршрутизировать невыключенные.lessons_*.md (если есть).bash {{IWE_SCRIPTS}}/check-wp-transfer-completeness.sh --all "${IWE_ROOT:-$HOME/IWE}" по inbox/WP-N/ — выводит results_not_captured-флаги (проставленные при закрытии без заполненного results_in) и файлы в подпапках без учёта в основном контекст-файле. Для каждого warning — пилот решает: (a) действительно нужен перенос знания, найти куда; (b) файл технический/устарел, можно оставить; (c) results_in заполнить постфактум. Не блокирует Close.Регламент:
memory/lpf-hypothesis-log.md. Журнал:{{GOVERNANCE_REPO}}/current/hypotheses-log.md.
hypotheses-log.md — отфильтровать записи со статусом «на сверке» И датой сверки ≤ сегодня. Записи со статусом «черновик» (не подтверждённые пилотом Note-Review) — пропустить, они не в цикле сверки.domain_event, инфраструктурные логи, факты из ретро §3-4 этого протокола).Сверка H-NNN). Исходную запись не редактировать.Зачем: протокол Close (§ 5c) — реактивный: предлагает архивацию только когда агент случайно касается конкретной карточки. Прецедент WP-7 — механизм архива существовал, но использование прекратилось на 2 месяца, пока карточка не была замечена вручную. Этот шаг закрывает разрыв: сканирует весь
inbox/безусловно каждую неделю.
S="${IWE_SCRIPTS:-$HOME/IWE/scripts}"
PY3="$(bash "$S/lib/find-python3.sh")" && "$PY3" "$S/archive-cadence-sweep.py" --format md
Критерий (тот же, что и в § 5c, не переизобретается): created >14 дней И карточка >400 строк, при отсутствии inbox/WP-N/WP-N-archive.md. Отказ пилота (archive_declined: YYYY-MM-DD) уважается 14 дней от отметки.
Вывод — список кандидатов, отложенных по cooldown и (диагностически) расхождений archive:-поля с фактом файла. Не архивировать автоматически — только вставить список в WeekReport (§8) как явную рекомендацию; решение по каждой карточке пилот принимает при следующем открытии (через § 5c реактивного механизма).
Обязательный шаг перед бэкапом. Запускает
iwe-backup-check.sh(WP-317 supplement). issue #880:backup_enabled: falseвparams.yaml→ пользователь ведёт свой бэкап через собственное расширение (week-close.after.*.md) — пропустить 7a и 7b целиком, не запускать встроенную проверку/бэкап вообще.
grep -qE '^backup_enabled:[[:space:]]*false([[:space:]]*(#.*)?)?$' "${WORKSPACE_DIR}/params.yaml" 2>/dev/null && BACKUP_DISABLED=1 || BACKUP_DISABLED=0
BACKUP_DISABLED=1 → пропустить 7a и 7b, перейти к 7c. Иначе:
bash ${IWE_SCRIPTS}/iwe-backup-check.sh
Если вернул ❌ (exit 2) — устранить критичные gaps ДО бэкапа (устаревший бэкап >14 дней, нет директории бэкапа — по умолчанию iCloud, либо backup_dir из params.yaml, если задан).
Если вернул ⚠️ (exit 1) — зафиксировать warnings в WeekReport, продолжить.
Если ✅ (exit 0) — бэкап в норме.
Условный шаг: только macOS с iCloud Drive, и только если
BACKUP_DISABLED=0(см. 7a). Запускать ТОЛЬКО если 7a не вернул ❌.
${IWE_SCRIPTS}/backup-icloud.sh
Архив всех файлов IWE (без .git, node_modules, .venv) → iCloud Drive. Хранит 4 последних архива.
${IWE_SCRIPTS}/check-dirty-repos.sh
Если есть грязные репо → закоммитить и запушить ДО завершения Week Close.
bash ${IWE_SCRIPTS}/memory-bleed.sh
Нарушения (HOT-лимит, orphans, superseded_by без ссылки) → исправить до коммита Week Close. Кандидаты на понижение горизонта → информативно, пользователь решает при следующем Month Close.
Проверка здоровья статической нагрузки контекста. Флаги — информативно, пользователь решает.
IWE_ROOT="${IWE_ROOT:-$HOME/IWE}"
MEMORY_DIR="$IWE_ROOT/memory"
echo "=== distinctions.md ===" && wc -l {{WORKSPACE_DIR}}/.claude/rules/distinctions.md
echo "=== MEMORY.md ===" && wc -l "$MEMORY_DIR/MEMORY.md"
echo "=== memory/ файлы (mtime >14д) ===" && find "$MEMORY_DIR" -name "*.md" -mtime +14 -not -name "MEMORY.md" -not -path "*/archive/*" | sort
| Метрика | Порог | Действие |
|---|---|---|
| distinctions.md строк | > 150 | Drift-флаг (порог синхронизирован с исполняемым verify-context-budget.sh — issue #736, тот же файл, тот же канон, не два расходящихся числа). Зафиксировать в Week Report, добавить задачу в техдолг. |
| MEMORY.md строк | > 200 | Флаг превышения лимита. Предложить архивацию старых feedback в archive/. |
| memory/*.md без обращения > 14д | > 5 файлов | Предложить понизить horizon: warm (пользователь решает при Month Close). |
Hindsight — опциональное L2-расширение. Week Close проверяет уже подключённый сервис, но не запускает его автоматически и не превращает отсутствие сервиса в ошибку закрытия недели.
HINDSIGHT_CONFIGURED=0
[ -f "$HOME/.iwe/hindsight.env" ] && HINDSIGHT_CONFIGURED=1
[ "${IWE_HINDSIGHT_RETAIN:-}" = "1" ] && HINDSIGHT_CONFIGURED=1
if [ "$HINDSIGHT_CONFIGURED" -eq 0 ]; then
echo "N/A: Hindsight не настроен (опциональное расширение)"
elif ! command -v docker >/dev/null 2>&1; then
echo "⚠️ Hindsight подключён, но Docker недоступен — запускать только после решения пользователя"
else
echo "=== Hindsight container ==="
docker ps --format "table {{.Names}}\t{{.Status}}" | grep iwe-hindsight || \
echo "⚠️ Container not running — запускать только после решения пользователя"
echo "=== Hindsight log (last 20) ==="
tail -20 "$HOME/.iwe/hindsight.log" 2>/dev/null || echo "⚠️ No log file"
if docker ps --format "{{.Names}}" | grep -qx iwe-hindsight; then
docker exec iwe-hindsight ls -lh /data/hindsight.db
fi
fi
Проверки при подключённом Hindsight:
iwe-hindsight → статус Up; если не запущен — сообщить пользователю, не запускать автоматическиFAIL за неделю. Если есть FAIL → docker logs iwe-hindsight → диагностика (OpenAI key? network? disk?)RECALL_SKILLS (созданные за неделю)?Split (WP-297 ОПТ-5): факты недели живут в
WeekReport W{N}, не в WeekPlan. WeekPlan — только намерения.
WeekReport W{N} YYYY-MM-DD.md (если нет — создай при следующем session-prep, см. CLAUDE.md §9 правило split).roles/strategist/prompts/week-review.md).| ... | ... |) без хотя бы одной реальной строки — пройди список закрытых РП недели (шаг 5) и для каждого сверься с docs/Dissatisfactions.md на явную связь (поле «Связанный РП» в реестре НЭП или обратная ссылка в контексте РП); нет связи → «нет» в столбце, не пропуск строки.Dissatisfactions.md / Strategy.md.Загрузить: bash .claude/scripts/load-extensions.sh week-close after. Exit 0 → Read каждый файл из вывода (alphabetic) → выполнить. Exit 1 → пропустить. Поддерживает extensions/week-close.after.md И extensions/week-close.after.<suffix>.md.
Спросить пользователя: «Оцени качество недели 1-5:
1 = механически (шёл по инерции, голова не работала)
2 = поверхностно (что было, что сделано — без анализа паттернов)
3 = норма (осознанно, видишь паттерны, без прорывов)
4 = хорошо (конкретные решения, что-то понято по-новому)
5 = прорывная (изменилось понимание системы, ключевые решения)»
Ответ N → включить q:N в commit message следующего шага.
Если пользователь пропускает → commit без q:.
(cd {{WORKSPACE_DIR}}/{{GOVERNANCE_REPO}}
git status --short
# НЕ git add -A/git add ./git add -u — AGENTS.md CRITICAL (может захватить работу других агентов)
# Стейджить ТОЛЬКО файлы, изменённые в шагах 1-10 (в массив для pathspec):
WC_FILES=(<каждый файл явным путём: WeekPlan, WeekReport, WP-REGISTRY, inbox/WP-*.md и т.д.>)
git add "${WC_FILES[@]}"
git diff --cached --name-only # проверить scope — только week-close файлы
# pathspec после `--`: commit ТОЛЬКО свои файлы, не подметаем чужой индекс
git commit -m "week-close: W{N} итоги q:{score}" -- "${WC_FILES[@]}"
git push
)
Запустить sub-agent Haiku в роли R23 Верификатор (context isolation). Передать: чеклист, итоги недели, список обновлённых файлов.
pending-phases-sweep.sh или fallback grep) — решения зафиксированыarchive-cadence-sweep.py) — список в WeekReportdocs/Backlog.md обойдён в следующую Strategy Session (либо триггеры активированы, либо явно «B-NNN живёт без триггеров»).after.md выполнены (если есть)N/A (не настроен) или при явном подключении проверены container/log/размер БД; автозапуска не былоfind ${IWE_WORKSPACE:-$HOME/IWE}/${IWE_GOVERNANCE_REPO:-DS-strategy}/sessions -type f -name "peer-prompt.md" \
| awk -F/ '{d=$(NF-1); match(d,/^[0-9]{4}-[0-9]{2}-[0-9]{2}/); print substr(d,RSTART,RLENGTH) " " $0}' \
| awk '$1 >= "2026-06-09" {print $2}' \
| xargs -I{} sh -c 'grep -q "Открытие (WP Gate)" "{}" || echo "WP-GATE-MISS: {}"'
# Пропуски фиксировать в inbox/bugs/bug-YYYY-MM-DD-wp-gate-miss.md или «нет пропусков»
Все ✅ → «Неделя закрыта.» Иначе — указать что осталось.
<!-- USER-SPACE --> <!-- /USER-SPACE -->まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Регистрация косяка агента в системе учёта WP-316 L1. Без LLM — детерминированный скрипт без WP Gate.
日本語の概要は準備中です。原文の説明を表示しています。
Разбор extraction-reports со status pending-review — решение R15 (accept/reject/defer) ЖИВЫМ ПИЛОТОМ, запись в Pack, обновление статуса, коммит. Вызывать при Close при наличии N>0 pending-review отчётов.
日本語の概要は準備中です。原文の説明を表示しています。
Оценка архитектурного решения по 7 характеристикам ЭМОГССБ (v3.1 — фильтр допуска, атрибут-сценарии, совет затронутых сторон; профиль без агрегатного балла, conjunctive screening). Используй когда пользователь предлагает архитектурное решение, новый инструмент или системное изменение.
日本語の概要は準備中です。原文の説明を表示しています。
Classifies raw pilot request → structured JSON {task_type, class, artifact, budget_estimate, confidence, routing_tag, resolution_path, schema_version, result_type, expected_result_kind, result_kind_resolution, hypothesis_relation}. Keyword-fast (<200ms) or Haiku fallback (<60s). Does NOT create WP or call executor.
日本語の概要は準備中です。原文の説明を表示しています。
Audit repository documentation: detect drift between code and docs, report coverage by category. Run manually or on triggered drift critical.
日本語の概要は準備中です。原文の説明を表示しています。
Аудит пользовательской инсталляции IWE. Запускает scripts/iwe-audit.sh + MCP healthcheck + smoke-test ритуала через sentinel-механику (контракт dry-run-contract.md), передаёт отчёт subagent'у в роли VR.R.002 Аудитор (context isolation) → verdict ✅/⚠️/❌ по 6 компонентам (Inventory, L1 drift, DS-strategy, L3 customizations, MCP, ритуал). Используй после restore из бэкапа, после update.sh, или при еженедельной сверке.
日本語の概要は準備中です。原文の説明を表示しています。