Верификация артефакта
Роль: VR.R.001 Верификатор (PACK-verification) Принцип: Context isolation (VR.SOTA.002) — проверяю результат по эталону, НЕ процесс создания. Архитектура: Ядро (Pack, фиксированное) + Контекст (переменный) — AS.D.004.
Аргументы: $ARGUMENTS
When to use
Верификация артефакта по эталону из Pack. Загружает роль VR.R.001 (Верификатор) с context isolation — проверяет результат, а не процесс создания.
Algorithm
Extensions before
bash .claude/scripts/load-extensions.sh verify before
Код 0 → прочитать каждый путь в алфавитном порядке и выполнить инструкции до
выбора типа проверки. Код 1 → расширений нет. Любой другой код или ошибка
обязательного шага расширения → верификацию не начинать и показать настоящую
причину.
Шаг 0. Определить тип проверки
| Аргумент | Тип | Что проверяет |
|---|---|---|
code |
Проверка кода | Качество кода: логика, edge cases, безопасность, coupling |
archgate |
Проверка реализации АрхГейта | Код соответствует ЭМОГССБ-оценке, принципы воплощены |
capture |
Проверка capture-candidate | UL, полнота, непротиворечивость с Pack |
pack |
Проверка Package-адекватности | Проверяет 11 координат E.4.DPF.DA seed-пакета (Ф1-Ф3 артефакты): SoTA, decision-record, seed-маркер, их достаточность. Используется из /verify pack или pack-creator Шаг 4 |
wp |
Приёмка рабочего продукта | Критерии done из WP context file |
chain |
Data flow check | Прочитаны ли downstream consumers? Контракты совпадают? (CoVe stage 3) |
adversarial |
Scope & bias check | Scope определён анализом или выводом? Что НЕ прочитано? (Pre-mortem) |
subsection |
Проверка подраздела руководства (SS) | 🔴 v4-lint + 🟡 нарратив/дуга/практика/аналогия (G-L) по CHECKLIST-subsection-v1.md |
section |
Проверка раздела руководства (S) | 🔴 v4-lint section + 🟡 связность SS, дуга по ступеням, охват темы (D-H) по CHECKLIST-section-v1.md |
guide |
Проверка руководства целиком | 🔴 v4-lint guide + 🟡 целостность объекта, дуга, охват узлов мастерства, эпилог (E-I) по CHECKLIST-guide-v1.md |
auto или пусто |
Автоопределение | По типу файла и контексту сессии |
Автоопределение:
- Был АрхГейт в текущей сессии →
archgate - Указан путь к .py/.ts/.sh файлу →
code - Указан путь к Pack-сущности →
capture - Указан путь к WP context →
wp - Изменения >1 файла + cross-component → предложить
chain - После АрхГейта + код → предложить
adversarial - Путь содержит
subsection_id: PD.GUIDE.N.SX.SSYво frontmatter, или один файл подраздела руководства →subsection - Путь — папка раздела (
S{N}-*/) или указанsection_idво frontmatter →section - Путь —
structure-guide-N.mdили папка руководства целиком →guide - Не определился → спросить пользователя
Триггеры от пилота: «проверь подраздел X» / «проверь раздел S{N}» / «проверь руководство N» → соответственно subsection / section / guide.
Шаг 1. Запустить sub-agent Верификатора
Запустить Agent tool с context isolation:
Для code:
- Прочитать
git diff(или указанные файлы) - Прочитать
CLAUDE.mdзатронутого репо - Передать sub-agent'у: diff + CLAUDE.md + чеклист code
- Модель sub-agent'а: Sonnet
Для archgate:
- Найти ЭМОГССБ-таблицу из текущей сессии (или запросить)
- Прочитать изменённые файлы реализации
- Прочитать DP.ARCH.001 §7 (21 принцип)
- Передать sub-agent'у: файлы + таблица + принципы + чеклист archgate
- Модель sub-agent'а: Opus
Для capture:
- Прочитать capture-candidate
- Прочитать manifest целевого Pack
- Передать sub-agent'у: candidate + manifest + чеклист capture
- Модель sub-agent'а: Sonnet
Для pack:
- Прочитать WP-контекст пакета (WP-474.md или папка пакета)
- Прочитать файлы артефактов Ф1-Ф3:
06-sota/{slug}-sota-sheet.md(Ф1: SoTA-лист).pfad-decision.md(Ф2: decision record)01B-distinctions.mdс маркером**Maturity:** seed(Ф3: seed-маркер + mature-lite чек-лист)
- Передать sub-agent'у промпт:
verify-pack-adequacy-subsection.md+ данные из контекста - Модель sub-agent'а: Sonnet
- Verdict:
DPFPackageAdequacyStatus—admissibleForDeclaredDPFUse/seedOnly/repairBeforeDPFUse(авто) + эскалационныеholdForPFADDecision/holdForCoreAmendmentDecision/refreshNeeded— по координатам D1-D11, порядковая шкала 0-5 (WP-474 Ф8.1/Ф8.3, пир-сессия 2026-09-05-27)
Для wp:
- Прочитать WP context file (
{{GOVERNANCE_REPO}}/inbox/WP-{N}-*.md) - Прочитать артефакт РП
- Передать sub-agent'у: артефакт + критерии done + чеклист wp
- Модель sub-agent'а: по verification_class
Для chain (CoVe — Chain-of-Verification, Meta ACL 2024):
- Прочитать
git diffизменённых файлов - Для каждого изменённого output:
grepпо codebase — найти все файлы, которые import/require/вызывают изменённые функции - Прочитать каждый downstream consumer
- Передать sub-agent'у: diff + consumers + чеклист chain
- Модель sub-agent'а: Sonnet
- Чеклист chain:
- Для каждого изменённого output — кто потребляет?
- Прочитан ли каждый потребитель?
- Типы/формат output совпадают с ожиданиями потребителя?
- Переменные, используемые в предложенном коде — откуда определены? Существуют ли в scope?
- Env vars / конфиги, на которые опирается код — определены ли в том же файле или переданы явно?
Для adversarial (Pre-mortem + Devil's Advocate, PROClaim 2026):
- Прочитать
git diffизменённых файлов - Составить список файлов, которые автор НЕ прочитал, но которые могут быть затронуты (
git diff --statvs файлы из diff) - Прочитать описание задачи (из WP context или commit message)
- Передать sub-agent'у: diff + unread files list + task description + чеклист adversarial
- Модель sub-agent'а: Sonnet
- Чеклист adversarial:
- Scope определён анализом кода или подогнан под заранее выбранный вывод?
- Какие файлы/компоненты НЕ прочитаны, но могут быть затронуты?
- Предположи, что этот фикс сломается в production. 3 наиболее вероятные причины?
- Есть ли альтернативные объяснения проблемы, которые не были рассмотрены?
- Заявленный scope («1 файл», «не архгейт», «простой фикс») — соответствует реальному?
Для subsection (один подраздел руководства, WP-322 Ф0.10):
Двухэтапная проверка: 🔴 машинная (оркестратор) → 🟡 семантическая (sub-agent). 🟢 пилот не делается агентом.
Переменные окружения:
IWE_ROOT— корень рабочей директории (default:$HOME/IWE). Используется для путей к Pack иDS-principles-curriculum.
Hotfix-исключение: если последний коммит содержит [hotfix] в message — запускается только 🔴, без 🟡 (см. CHECKLIST-subsection-v1.md §«Правило»).
Auxiliary-режим: если frontmatter подраздела содержит format_version: 4.1-aux — это auxiliary-подраздел (.08-concepts, .09-exercises, .10-review-questions, .11-section-conclusions). Применяется упрощённая проверка: только 🔴 B (минимальный frontmatter: subsection_id, title, order) + 🟡 проверка типа содержимого (concepts = сводка, exercises = практики, review = вопросы, conclusions = выводы). Полный G-L НЕ применяется (auxiliary не вводит понятий, не имеет цепочки мем→метод→мировоззрение).
Этап 🔴 (оркестратор, локально):
IWE_ROOT="${IWE_ROOT:-$HOME/IWE}" cd "$IWE_ROOT/DS-principles-curriculum" PACK_FORM_089="$IWE_ROOT/PACK-personal/pack/personal-development/02-domain-entities/formalizations/PD.FORM.089-learner-rcs.md" # 1. Структура (A.1-A.11) + контракт Портного (B.1-B.9) python3 tools/v4-lint.py porter <subsection.md> # 2. Кросс-руководная согласованность python3 tools/v4-lint.py cross-guide specs/v4-reference/ # 3. Pack-drift (cp/bh) python3 tools/v4-lint.py pack-drift specs/v4-reference/ --pack "$PACK_FORM_089" # 4. Граф понятий python3 tools/v4-lint.py graph build specs/v4-reference/ --out-json /tmp/graph.json # 5. Блок F (Git-целостность + F.4 формат степеней) — вне v4-lint: git -C "$IWE_ROOT/DS-principles-curriculum" status --porcelain specs/v4-reference/ # F.1 чисто grep -l "$(basename <subsection.md>)" "$IWE_ROOT/aisystant/docs" 2>/dev/null || \ echo "F.3 WARN: файл может быть не в правильном репо" # F.4 (формат «Степени мастерства» — таблица, не список) проверяется вручную или в 🟡- Любой FAIL → verdict
FAILс диагностикой из stderr, sub-agent НЕ запускается - Все PASS → перейти к 🟡
- Любой FAIL → verdict
Этап 🟡 (два специализированных sub-agent, Opus, context isolation) — WP-322 Ф14:
Разделение на два субагента: смешанный промпт снижает качество обеих веток. FPF-агент видит только FPF; педагог-агент видит только педагогику.
Пропустить auxiliary: если
format_version: 4.1-aux— Этап 🟡 заменяется упрощённой проверкой типа содержимого.Порядок: FPF → педагог (FPF-нарушения часто блокируют педагогическую оценку).
Sub-agent 1 — verify-fpf (промпт:
verify-fpf-subsection.md):- Вход: файл подраздела
- Промпт:
.claude/skills/verify/verify-fpf-subsection.md - Модель: Opus
- Проверяет: G (границы понятий, A.6), H (нарратив мем→метод→мировоззрение), L (Pack-согласованность), border-objects
- Если FPF-Verdict = FAIL → остановиться, вернуть FAIL автору, Sub-agent 2 не запускать
Sub-agent 2 — verify-pedagogy (промпт:
verify-pedagogy-subsection.md):- Вход: файл подраздела
- Промпт:
.claude/skills/verify/verify-pedagogy-subsection.md - Модель: Opus
- Проверяет: I (дуга по ступени, нет дидактических запрещённых слов), J (практика и время), K (аналогия), transfer test
Итоговый Verdict (агрегированный):
- PASS = FPF-PASS + Педагог-PASS → готов к 🟢 пилот-тесту (вывести шаблон issue
pilot-feedback.yml) - CONDITIONAL = любой CONDITIONAL без FAIL → можно к 🟢 с оговорками
- FAIL = любой FAIL → диагностика автору с разбивкой по блокам
- PASS = FPF-PASS + Педагог-PASS → готов к 🟢 пилот-тесту (вывести шаблон issue
Для section (раздел руководства S, WP-322 Ф0.10):
Предусловие: ВСЕ подразделы раздела уже прошли
verify subsection(🔴+🟡 PASS). Если нет — остановиться, попросить сначала закрыть SS.
Hotfix-исключение: если последний коммит содержит [hotfix] в message И затронут только один SS — запускается verify subsection для этого SS, без полного verify section.
Этап 🔴 (оркестратор):
IWE_ROOT="${IWE_ROOT:-$HOME/IWE}" cd "$IWE_ROOT/DS-principles-curriculum" # 1. Структурная полнота раздела (A.1-A.4, B.1-B.3, C.1-C.2) python3 tools/v4-lint.py section --id <section-id> specs/v4-reference/ # 2. Связность prerequisites внутри раздела (отдельная проверка B.1-B.3, дублирует часть section) python3 tools/v4-lint.py prerequisites-graph --scope section --id <section-id> specs/v4-reference/- Любой FAIL → verdict
FAIL - PASS → перейти к 🟡
- Любой FAIL → verdict
Этап 🟡 (sub-agent, Opus, context isolation):
- Прочитать: ВСЕ SS раздела (в порядке оглавления) + frontmatter раздела +
CHECKLIST-section-v1.md§🟡 (D-H) - Объём: типично 5-12 SS × 0.5-1.5K слов = 3-20K слов
- Передать sub-agent'у промпт: все SS подряд + frontmatter + чек-лист §D-H
- Модель: Opus — по эталону
CHECKLIST-section-v1.md§🟡 («Claude Opus, context isolation»). Sonnet справляется по объёму, но связность нарратива и согласованность метафор раздела требуют глубокого анализа — Opus. - Чеклист D-H (5 блоков по 3-4 пункта):
- D. Нарративная связность подразделов (логический переход, нет «висящих» SS, нет повторов)
- E. Дуга по ступеням внутри раздела (stage_relevant согласован, тональность, сложность нарастает)
- F. Охват темы (обещанное раскрыто, нет «дыры» в зоне раздела, нет «лишнего»)
- G. Аналогии в разделе (согласованность сквозных метафор, нет конкурирующих)
- H. Связь с другими разделами (ссылки корректны, нет противоречий)
- Sub-agent для каждого пункта: PASS/FAIL + конкретные SS-ссылки
- Прочитать: ВСЕ SS раздела (в порядке оглавления) + frontmatter раздела +
Verdict: PASS = 🔴+🟡 PASS → готов к 🟢 пилот-тесту раздела (≥3 пилота × 6/6). FAIL = диагностика по конкретным SS.
Для guide (руководство целиком, WP-322 Ф0.10):
Предусловие: ВСЕ разделы руководства уже прошли
verify section. Если нет — остановиться. Это самый дорогой тип проверки — Opus, объём 20-100K слов.
Hotfix-исключение: при [hotfix] в коммите — только verify subsection затронутых файлов; полный verify guide не запускается. Полный запуск guide — ежеквартально (content-аудит) или при релизе нового руководства.
Этап 🔴 (оркестратор):
IWE_ROOT="${IWE_ROOT:-$HOME/IWE}" cd "$IWE_ROOT/DS-principles-curriculum" PACK_FORM_089="$IWE_ROOT/PACK-personal/pack/personal-development/02-domain-entities/formalizations/PD.FORM.089-learner-rcs.md" GUIDE_ID="<guide-id>" # PD.GUIDE.<N> или N (1-4) # 1. Структурная полнота руководства (A.1-A.5, B.1-B.4, C.1-C.3) python3 tools/v4-lint.py guide --id "$GUIDE_ID" --pack "$PACK_FORM_089" specs/v4-reference/ # 2. Кросс-руководная согласованность (внутри guide + между guides) python3 tools/v4-lint.py cross-guide --scope guide --id "$GUIDE_ID" specs/v4-reference/ # 3. Граф понятий руководства python3 tools/v4-lint.py graph build --scope guide --id "$GUIDE_ID" --out-json /tmp/guide-graph.json specs/v4-reference/ # 4. Pack-drift на масштабе руководства (если не прошло через cmd_guide --pack) python3 tools/v4-lint.py pack-drift --scope guide --id "$GUIDE_ID" --pack "$PACK_FORM_089" specs/v4-reference/- Любой FAIL → verdict
FAIL - PASS → перейти к 🟡
- Любой FAIL → verdict
Этап 🟡 (sub-agent, Opus, context isolation):
- Прочитать: ВСЕ S/SS руководства + структуру (
structure-guide-N.md) + README +CHECKLIST-guide-v1.md§🟡 (E-I) + frontmatter руководства - Объём: типично 4-8 разделов × 5-12 SS × 0.5-1.5K слов = 20-100K слов — нужен Opus с большим контекстом
- Стратегия для большого объёма (20-100K слов):
- Если объём ≤ 30K слов — передать всё руководство одним промптом Opus с extended thinking
- Если объём > 30K — батчинг: sub-agent читает разделы по 2-3 за раз, аккумулирует findings, в финале — meta-pass на согласованность дуги (E-I критерии требуют видения всего руководства)
- Альтернатива: разделить guide-чек-лист на «целостность объекта + дуга» (E, F — требуют целостного видения, один проход) и «охват + связность + эпилог» (G, H, I — можно по частям)
- Передать sub-agent'у промпт: руководство целиком + структура + чек-лист §E-I
- Модель: Opus (объём + глубина анализа мировоззренческого сдвига)
- Чеклист E-I (5 блоков по 3-4 пункта):
- E. Целостность объекта (с первого раздела ясно, не подменяется, границы соблюдены)
- F. Дуга нарратива (прогрессия 1-2 → 3-5, нет «прыжков», мировоззренческий сдвиг отчётлив, тональность согласована)
- G. Охват узлов мастерства (cp/bh-измерения покрыты, нет «дыр» по ступеням, bottleneck-узлы помечены)
- H. Связность с другими руководствами (cross-references, нет дублирования, точки сопряжения объяснены)
- I. Эпилог и навигация (эпилог есть, связь со ступенями, README с картой)
- Sub-agent для каждого пункта: PASS/FAIL + конкретные S/SS-ссылки
- Прочитать: ВСЕ S/SS руководства + структуру (
Verdict: PASS = 🔴+🟡 PASS → готов к 🟢 пилот-тесту руководства (≥3 пилота × 6/6, типично 2-4 недели). FAIL = диагностика по конкретным S/SS.
Шаг 2. Sub-agent: промпт
Sub-agent получает промпт с заполненными данными из шага 1.
⛔ Sub-agent НЕ получает:
- Историю обсуждения текущей сессии
- Задание создателя
- Промежуточные рассуждения
Для code, capture, wp, archgate — определить эталон:
| Тип артефакта | Эталон |
|---|---|
| Pack-сущность | SPF pack-template + доменные принципы Pack |
| Описание метода | SPF process/07 + Pack |
| Код (DS) | CLAUDE.md репо + Pack-описания сервисов |
| Архитектурное решение | DP.ARCH.001 §7 (→ используй /archgate вместо /verify) |
| План (WeekPlan/DayPlan) | Протоколы Open/Close |
| Подраздел руководства (SS) | DS-principles-curriculum/specs/v4-reference/CHECKLIST-subsection-v1.md (v1.2+) |
| Раздел руководства (S) | DS-principles-curriculum/specs/v4-reference/CHECKLIST-section-v1.md |
| Руководство целиком | DS-principles-curriculum/specs/v4-reference/CHECKLIST-guide-v1.md |
Если эталон не определяется → СТОП. Сообщи: «Эталон не найден. Нужен рецензент, не верификатор.»
Для chain, adversarial — эталон = сам код (downstream consumers, scope analysis). Чеклисты встроены в шаг 1.
Шаг 3. Verdict
До формирования итогового verdict выполнить Extensions checks:
bash .claude/scripts/load-extensions.sh verify checks
Код 0 → прочитать и выполнить каждый файл поверх результатов основного
проверяющего. Код 1 → дополнительных проверок нет. Любой другой код или провал
проверки → итог не может быть PASS; вернуть FAIL с именем расширения и
наблюдаемой причиной.
Sub-agent возвращает verdict:
## Verdict: [PASS / FAIL / CONDITIONAL]
**Контекст:** [тип проверки]
**Артефакт:** [что проверялось]
**Эталон:** [по чему проверялось]
### Несоответствия
| # | Severity | Файл | Строка | Что | Почему (reasoning) | Эталон |
|---|----------|------|--------|-----|-------------------|--------|
| 1 | критический / высокий / средний / низкий | path | N | описание | почему проблема | принцип/правило |
### Сводка
- **Критических:** N
- **Высоких:** N
- **Средних:** N
- **Низких:** N
### Рекомендация
[1-3 предложения]
Правила verdict:
- PASS: 0 критических, 0 высоких
- CONDITIONAL: 0 критических, ≥1 высоких
- FAIL: ≥1 критических
Шаг 4. Показать пользователю
Вывести verdict. Пользователь решает:
- Принять → продолжить работу
- Исправить → внести изменения по рекомендациям
- Отклонить verdict → аргументировать почему (→ feedback для обучения)
После показа результата выполнить Extensions after:
bash .claude/scripts/load-extensions.sh verify after
Код 0 → прочитать и выполнить файлы в алфавитном порядке. Код 1 →
расширений нет. Ошибка after не переписывает уже показанный verdict, но
обязательно выводится отдельным предупреждением с именем расширения и причиной.