agent-fault
FreeРегистрация косяка агента в системе учёта WP-316 L1. Без LLM — детерминированный скрипт без WP Gate.
The English summary is being prepared. Showing the original description.
Протокол закрытия недели (Week Close). Ретро 7 дней + carry-over в новую неделю + платформенные шаги (бэкап, dirty repos).
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Роль: Плановик (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 недоступен (на моделях новее Sonnet 4.6 клиент по умолчанию не выдаёт этот инструмент — включается переменной CLAUDE_CODE_ENABLE_TODO_TOOLS=1 в env настроек, issue #1216) → сообщить пилоту одной строкой, вести шаги явной нумерацией («Шаг 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.
Week Close сам по себе не рабочий продукт (см. gates_rationale выше — исключение из WP Gate уже заявлено для этого скилла), но session-open-gate.sh (отдельный, более узкий гейт именно на git commit/push, S-68) исключения не делает — финальный коммит протокола без привязки к --wp будет отклонён. Если сессия уже привязана к другому РП, вторая привязка не нужна:
HARNESS_ID="${CLAUDE_CODE_SESSION_ID:-}"
SESSION_DIR="${IWE_ROOT:-$HOME/IWE}/.iwe-runtime/sessions"
AGENT="${IWE_AGENT:-claude-code}"
ALREADY_BOUND=0
if [ -n "$HARNESS_ID" ]; then
while IFS= read -r sem; do
[ -z "$sem" ] && continue
grep -qE '^wp: .+' "$sem" 2>/dev/null && { ALREADY_BOUND=1; break; }
done < <(grep -lxF "harness_session_id: $HARNESS_ID" "$SESSION_DIR/${AGENT}"-*.open 2>/dev/null)
fi
[ "$ALREADY_BOUND" = 1 ] || bash "${IWE_SCRIPTS:-$HOME/IWE/scripts}/session-guard.sh" open --housekeeping week-close --agent "$AGENT" 2>&1 || true
session-open-gate.sh принимает housekeeping: week-close как легитимную привязку — это закрытый список из 4 операционных протоколов, не произвольная причина (S-68 запрещает именно произвольные --housekeeping-обходы, не эти четыре). Отказ открытия (коллизия с параллельной сессией) не блокирует протокол.
Коммиты:
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 -->No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Регистрация косяка агента в системе учёта WP-316 L1. Без LLM — детерминированный скрипт без WP Gate.
The English summary is being prepared. Showing the original description.
Разбор extraction-reports со status pending-review — решение R15 (accept/reject/defer) ЖИВЫМ ПИЛОТОМ, запись в Pack, обновление статуса, коммит. Вызывать при Close при наличии N>0 pending-review отчётов.
The English summary is being prepared. Showing the original description.
Оценка архитектурного решения по 7 характеристикам ЭМОГССБ (v3.1 — фильтр допуска, атрибут-сценарии, совет затронутых сторон; профиль без агрегатного балла, conjunctive screening). Используй когда пользователь предлагает архитектурное решение, новый инструмент или системное изменение.
The English summary is being prepared. Showing the original description.
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.
The English summary is being prepared. Showing the original description.
Audit repository documentation: detect drift between code and docs, report coverage by category. Run manually or on triggered drift critical.
The English summary is being prepared. Showing the original description.
Аудит пользовательской инсталляции 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, {{GOVERNANCE_REPO}}, L3 customizations, MCP, ритуал). Используй после restore из бэкапа, после update.sh, или при еженедельной сверке.
The English summary is being prepared. Showing the original description.