Единица разбора — спан: реальный промпт владельца + вся активность ассистента
до следующего реального промпта. Системные ходы (гейт-фидбек, загрузка навыка)
приклеиваются к спану, не считаются отдельными. Разбор отложенный: закрытые
спаны разбираются один раз (курсор в флажке сессии); reconcile и аудитор
получают ПОЛНЫЙ склеенный спан (промпт + все ответы + все действия).
- Слой 1: снят обрез вывода действий (полная картина), защита структурных меток.
- Граница спана — событие UserPromptSubmit (prompt-hook метит realPromptTurns),
фолбэк по sysLabel; выключение через mode:closing (финальный спан добивает Stop).
- Калибровка скрытых вопросов: страж-ноп (не мутировать при неизменном тексте) +
кап показа родословной (~~первая~~ → текущая, данные целы).
- Шаги — по спанам («Ход (промпт) N [вобрал ходы X-Y]»); «висит N промптов».
- Новый модуль secretary-span.mjs (computeSpans/spansToDistill/recordRealPrompt/
parseTurnBlock/assembleSpan).
Свод секретаря зелёный (138 тестов), живой прогон на реальной модели подтвердил:
Шаги по спанам, гейт-шум не плодит скрытые вопросы, находки выживают по одному раз.
Спека/план: docs/superpowers/{specs,plans}/2026-06-23-secretary-span-redesign*.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Раздел «Шаги» переписан по Слою 1 как LLM-секретарём (суть+результат+находки,
без водянистого обреза), заполнен пропущенный ход 21. Применён фикс метки
«[зачёркнуто]»: марки срезаны (16→0), клоны слиты, 2 галлюцинации модели удалены.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5 задач TDD: parse step{user,assistant} + правило в запросе; buildStepLine
принимает essence; reconcileTurn прокидывает step (транзитно); stop-hook
использует модельную суть с фолбэком и не персистит step; выключение не
затирает модельные «Шаги» (mergeStepsPreservingText, слияние по ходу).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Витрина «Шаги» сейчас режется детерминированно (firstSentence: слепой обрез
130 знаков посреди слова, пример — ход 12 «протокола»). Дизайн: суть хода
формулирует тот же секретарь-модель — одно поле step{user,assistant} в том же
reconcile-вызове (без лишней платы). Инструменты и ссылка на Слой 1 остаются
детерминированными (хук, не LLM). Фолбэк на сбой; модельный текст переживает
выключение (слияние, не перезатир buildStepsFromRaw). Слой 1 не трогаем.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
secretary-audit.mjs (новый): 9 линз, buildAuditPrompt -> {system,user}, parseAuditResponse,
applyAudit (новые СВ с номером от хука, мутация+родословная, close/тихо/partial, горящие
блоки Л8/Л9), preserveRegistry (реестр СВ изолирован от reconcile).
protocol: поля hidden/acceptance/tails/nextSvId + рендер горящих блоков и раздела
«Скрытые вопросы (фон)». stop-hook: второй проход после reconcile + снимок реестра ДО
reconcile (reconcile не владеет СВ). + дизайн-спека и план.
97 юнит-тестов зелёные. Живьём подтверждены: наполнение, мутация под тем же номером,
routing Л9 в горящий блок. Известно: старый реестр в деле «линза» уже искажён до фикса.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- general: тетрадь сброшена начисто (protocol.json/md удалены, строка убрана из
содержания); сырьё (Слой 1) сохранено, при следующем использовании регенерируется
- содержание: тема дела строительство-секретаря исправлена с ошибочной
«Настройка хука enforce-coverage-verify» на реальную (доработка секретаря)
- тетрадь строительство-секретаря — runtime (untracked), очищена от coverage-шума на диске
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- reconcileTurn зовёт callback diag на каждом пути срыва (model-threw / bad-json / guard-lost);
раньше срыв был тихий (fail-quiet) и причина нигде не писалась
- стоп-хук пишет причину в docs/secretary/<дело>/_reconcile.log (+ no-key)
- mergeTurnIntoProtocol: шаг хода пишется ВСЕГДА, даже при срыве reconcile -> нет дыр в «Шагах»;
protocol.json/md/содержание обновляются каждый ход когда секретарь включён
- успешный путь reconcile не тронут, diag опционален (обратная совместимость), полный свод зелёный
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- parseLastExchange привязывает результат инструмента к действию по tool_use_id,
склеивает text-блоки, усекает до 1200 симв.; [ВЫДАЧА] в Слое 1 теперь наполняется
- resolveCaseActivation: похожее имя дела (опечатка/подстрока) -> переспросить,
не заводя дело-двойник; хук secretary-prompt-hook выводит подсказку с кандидатами
- TDD: тесты secretary-transcript/flag/prompt-hook; полный свод зелёный
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Дело о проектировании «умного» секретаря: фоновый аудитор скрытых вопросов
(7 линз, два прохода, жёсткие номера от хука, отслеживание мутации/тихого закрытия).
Собран родным движком (renderProtocol + prepareTurnFiles), 9 ходов сессии.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- stampProvenance ведёт История-таймлайн (in/out) и многоходовый провенанс при смене зачёркивания строки
- splitRawIntoTurns/prepareTurnFiles: нарезка raw на <дело>/ходы/turn-N.log; Шаги ссылаются на файл хода
- buildStepsFromRaw + обработчик off: Шаг на КАЖДЫЙ ход (без пропусков выкл-ходов)
- neutralizeMarkers в buildRawRecord: защита от самозагрязнения лога копиями маркеров
- полная форма протокола (9 категорий) + дело создание-секретаря приведено к виду; набор секретаря 56/56
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- secretary-reconcile.mjs: buildReconcilePrompt (весь протокол+обмен), parseReconcileResponse,
reconcileGuard (ни одна старая строка не пропала), buildGuardRemark (обоснованный возврат),
stampProvenance (turn+session по тексту), reconcileTurn (вызов->сторож->до 2 возвратов)
- stop-хук: вместо applyExtraction вызывает reconcileTurn; мотор инъектируется
- renderProtocol: зачёркивание во ВСЕХ разделах (закрытые вопросы видны ~~struck~~)
- ретайр: applyExtraction/buildExtractionPrompt/parseExtractionResponse (secretary-extract удалён)
- Слой 1, провенанс @session, флажок по сессии, оглавление — без изменений
- спека + план reconcile в docs/superpowers
33 теста green (мотор замокан, без сети). Модель для prod — Sonnet.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
owner-seal был мёртв в тупике с наставником: наставник блокировал (exit 2) раньше,
чем оркестратор звал судью (а owner-seal читает только судья). Теперь
decideMentorObjection принимает ownerSealOpen; при открытом терминальном гранте
владельца наставник не блокирует (и на NO-GO, и на degraded) — пропускает к судье,
который печатает через ownerSealOpen. main() вычисляет owner-seal тем же
ownerSealOpenForEvent, что и судья. GO-путь не изменён.
Гайд стены: урок 2026-06-21 — при требовании наставника о церемонии вокруг
разрушительных шагов уступать и добавлять прогон проверки перед каждым; owner-seal
теперь работает и в тупике с наставником.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
B2: router-classifier.mjs без buildChainsBlock и блоков «Available chains» (recommended_chain сохранён).
B3: удалены router-stop-gate(+test) и observer-chain-map-checker(+test); status-md-generator без
health-check C6; lefthook.yml без шага observer-chain-map-checker. observer-chain-detector и
observer-chain-map.json — снос отложен в под-этап (живые импортёры transcript-parser/retrofill/stop-hook).
Гайд: восстановлена markdown-разметка урока 2026-06-20. Полный свод зелёный.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Этап 3 эпика «роутер-реестр» (фундамент): убран реестр именованных цепочек L1-L17
из schema.json (required/свойство chains/chain_membership/определение chain), nodes.yaml
(153 строки chain_membership + секция chains), registry-load.mjs (chains/findChainsByNode)
и его теста. recommended_chain и прочие границы D5 не тронуты. Полный свод зелёный
(263 файла, 4412 тестов). node-graph/router-classifier (Этап B) устойчивы к отсутствию chains.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
В конец гайда добавлен раздел «⚠️ Урок 2026-06-19»: NO-GO = свой дефект (читать objection,
не гадать); реальные дефекты (reformat structured / нет отката при RED); печать асинхронна
(не опрашивать runtime, ждать вердикт); не удалять seal-файлы; баннер ≠ вердикт текущего
плана; stop-loss; спека=ЧТО / план=КАК.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Этап 2c (a5d30f3) + 2d (внутри 2c) закрыты; Осталось = этап 3 (снос цепочек L) +
хвосты спеки 4/7 + инфра-долг (gitleaks/lychee bin). Граф жив как замена цепочкам.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8 мест router-mentor-wall-GUIDE.md приведены к коду (reading-discipline.mjs:114 — ДР-1 снят;
criterion-gate.mjs:28 / verify-gate.mjs:38 — escape снимает гейты; supreme-gate actionOf:128 —
PowerShell-op не матчит; readonly-шаг не двигает указатель) + раздел автономности A-E
(нулевое вмешательство владельца на реализации, коммит по церемонии скриптом).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
После починки lefthook (commit 5fb9897) обычный git commit / git push gitea main
проходят без LEFTHOOK=0 при ОТСУТСТВУЮЩИХ инструментах (5 джоб обёрнуты
test -f <tool> || exit 0). LEFTHOOK_EXCLUDE остаётся только для pre-existing-находки
УСТАНОВЛЕННОГО инструмента. Заметка в раздел 5 (коммит/пуш) router-mentor-wall-GUIDE.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ремонт инфра-долга (после сплита ADR-020 не установлены gitleaks/markdownlint/
cspell/lychee → pre-commit жёстко падал, форсил глухой LEFTHOOK=0):
5 джоб pre-commit/pre-push обёрнуты в `if test -f <tool>; then <run>; else echo skip; fi`.
- инструмент отсутствует → джоба ПРОПУСКАЕТСЯ (коммит не срывается);
- инструмент есть и нашёл проблему → по-прежнему БЛОКИРУЕТ (if/then/else, не ||);
- рабочие контролёры (adr-judge/cross-ref/observer/registry) идут на каждом коммите.
Учёт этапа 2b: splitting-inventory +секция статуса (2a/2b DONE, осталось 2c/2d/этап3);
план этапа 2 (vocabulary-graph) + спека/план церемонии фиксации внесены в репозиторий.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ui-ux-pro-max row + решение C: нормативный квинтет-sync вокруг NB-заметки
PSR (9e17fad) выполнен — PSR v3.26 / Tooling v2.27 / CLAUDE.md v2.48 /
CHANGELOG; Pravila без изменений (forward-compat). Коммит sync f1cdd7e.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Формальный квинтет-sync вокруг NB-заметки PSR (commit 9e17fad):
ui-ux-pro-max развёрнут в реестре навыков на 7 гранулярных карточек
ui-ux-pro-max:<навык>; роль не изменена (материал/не решатель; R6.0
Vue+Vuetify; финальный код Frontend Design #30; R10.1/R11.5/R14.3/R14.5).
Содержательных изменений R0-R16: 0.
- PSR v3.25 -> v3.26 (шапка + История версий)
- Tooling Прил.Н v2.26 -> v2.27 (cross-ref PSR v3.25->v3.26; счётчики без изменений)
- CLAUDE.md v2.47 -> v2.48 (§0 cross-refs + §9) + CHANGELOG зеркало
- Pravila v1.45 без изменений (живые cross-refs на PSR forward-compat «+»)
Через normative-sync агента (§15 governance) + ручная верификация/правка
контроллером. Счётчики инструментов не изменились.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Эпик роутер-реестр. После разворачивания комка ui-ux-pro-max в 7 карточек
(commit предыдущий) — заметка в PSR §«плагины вне stack'а»: UPM теперь
адресуется как ui-ux-pro-max:<навык>, НО роль не изменилась (материал, не
решатель; стек Vue+Vuetify R6.0; код — Frontend Design; R10.1/R11.5/R14.3/R14.5
применяются к 7 карточкам как раньше к одной).
Минимальная документарная правка под авторизацию владельца «делай нормативку».
ОТЛОЖЕНО (во избежание §15 коллизии с параллельной сессией в Pravila):
формальный sync квинтета — версия PSR + cross-refs в CLAUDE.md/Pravila/Tooling.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Внесён единый раздел §18 «Дисциплины работы агента под управляющим слоем»: 18.1 A (препятствие
на ходу — перепланируй, не гадай), 18.2 D1 (деплой — читать вывод каждого шага, стоп на аномалии,
опасное — per-command согласие), 18.3 D2 (сохранение под ревью — раздельные согласия деплоя/коммита,
опасное вне общего согласия). Нормативная формулировка действующего поведения; код не меняется.
Версия свода v1.44 -> v1.45; история догнана записью v1.44 (Perplexity Pack). Через церемонию стены:
спека (v3) + план (v4-push) опечатаны наставником+судьёй; §6-правка авторизована escape владельца.
Синхрон квинтета (PSR/Tooling/CLAUDE.md) — отдельным шагом.
GUIDE (bags/router-mentor-wall-GUIDE.md): +урок про escape-окошко (строку давать в чат для
копирования, вставлять в поле ответа окошка) +урок про коммит/пуш шагами плана (обоснование
docs-only git под claude-md-management).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>