# Спека: end-to-end sanity печати M7 (2026-06-13)

## Цель

После возврата стены (M7) и перезапуска Claude Code проверить, что цикл печати
работает в СВЕЖЕЙ сессии. Печать привязана к сессии — рестарт обнулил прошлую,
поэтому нужен новый сквозной прогон: Write спеки → судья gate1 GO → печать
артефакта (печать №1); Write плана → судья gate2 GO + наставник Post → печать
плана (печать №2); затем шаг плана проходит стену. Это закрывает пункт «финальный
sanity печати» из роадмапа после починки дедлока судья↔наставник прошлой сессии.

## Решение {#print-sanity}

Прогнать минимальный, обратимый, реальный цикл: данная спека печатается как
артефакт; план с одним ref-less шагом печатается на свежем вердикте наставника;
шаг создаёт маркер-заметку `docs/observer/notes/2026-06-13-print-sanity.md` с одной
строкой-подтверждением. Маркер — НАБЛЮДАЕМОЕ доказательство: если Write маркера
проходит стену, значит план реально запечатался (стена пускает только действие,
покрытое запечатанным планом). Шаг намеренно без `ref` (C-5 снята) — sanity
проверяет печать №2 (починенный дедлок), а не резолюцию ссылок артефакта.

## Проверяемость

GREEN-критерий: Write маркер-заметки по шагу плана НЕ блокируется стеной (нет
сообщения «нет замороженного плана / действие вне плана»). RED-критерий: блок на
шаге → печать не встала → причина диагностируется по `seal-attempts.jsonl`
(judge_active / wired / cause / sealed / reason) и `judge-verdicts.jsonl`. Обе
печати наблюдаемы: артефакт — gate1 не заблокировал spec-Write; план — шаг прошёл.

## Риск исполнения

Низкий и полностью обратимый. Один Write нового doc-файла (маркер), не
discipline-код, не необратимое действие — снос/удаление/force-push отсутствуют.
Артефакты (эта спека, план, маркер) — тривиально удаляемы. Живые вызовы судьи
(gate1+gate2) и наставника — расход незначителен. Коммит — отдельный шаг владельца.
