Регистрация косяка агента в системе учёта WP-316 L1. Без LLM — детерминированный скрипт без WP Gate.
日本語の概要は準備中です。原文の説明を表示しています。
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.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Роль: DP.ROLE.058 Артефактор-Постановщик
Триггер: запрос без routing-tag (Маршрутизатор → Артефактор) или/artifactor "текст"
Service Clause: DP.SC.160
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.
Вход: сырой текст запроса пилота (любой длины, без routing-tag)
Выход: JSON, schema_version 3 (WP-575 Ф2 — добавлено поле result_type) → stdout:
{
"task_type": "string",
"class": "trivial | closed-loop | open-loop | problem-framing",
"artifact": "string (одна строка на русском — существительное-результат)",
"budget_estimate": "~Xh | ?",
"confidence": "high | low",
"routing_tag": "string",
"resolution_path": "keyword | llm",
"schema_version": 3,
"result_type": "system | episteme | unresolved",
"expected_result_kind": "kind_id из PACK-digital-platform/pack/digital-platform/result-kinds-registry.yaml | null",
"result_kind_resolution": "static | deferred-to-session | unresolved",
"hypothesis_relation": "unclassified"
}
Инвариант:
confidence=high только при keyword-пути; confidence=low при LLM-пути{"error": "INSUFFICIENT_INPUT"}, стопbudget_estimate: "?" только при problem-framing или полной неопределённостиresult_type (WP-575 Ф2, hard-distinctions.md №36) — Исполнитель (system: агент/скрипт/сервис — действующее) vs Информационный объект (episteme: документ/знание/правило — читаемое). Решается ДО имени и класса задачи, независимая ось от expected_result_kind — НЕ выводится из kind_id (кортеж kind_id/task_type/class присваивается одновременно, вывод из него нарушил бы «раньше имени и класса», и kind_id создавался для другого различения). unresolved — тип неочевиден → форсирует уточнение у пилота на WP Gate, классификатор НЕ гадает (тот же принцип, что hypothesis_relation: "unclassified" ниже).result_type (делает потребитель — /wp-new/WP Gate Ритуал, не сам Артефактор, тот же принцип, что и передача hypothesis_relation в WP Gate): system → обязательна проверка IntegrationGate (новизна инструмента/агента/скрипта/сервиса); episteme → Routing Gate (карта размещения документа/знания, DP.KR.001 §5); unresolved → уточнение у пилота до продолжения.expected_result_kind — дискриминатор ожидаемого kind-а результата (WP-481 Ф7, «не бывает общего результата»), НЕ показатель готовности проверки (gate_ready — забота /verify, не Артефактора)result_kind_resolution: "unresolved" — ни один kind реестра не подходит; классификатор НЕ подменяет ближайшим (анти-утечка в супертип)result_kind_resolution: "deferred-to-session" — мета-триггер (например peer_session), kind решается внутри самого процесса, не в момент классификацииKEYWORD_MAP (дрейф) — fail-closed, эскалировать пилоту, не игнорировать полеhypothesis_relation: "unclassified". До выбора
tests | enables | responds | researches | operational РП остаётся pending,
а не запускается в работу.Артефактор не вправе приписать РП гипотезу без решения пилота. Он обязан передать в WP Gate вопрос о типе связи:
tests H-NNN — РП проверяет одну ставку;enables H-NNN — делает её проверку измеримой или возможной;responds H-NNN — следует из вердикта;researches — ищет основание для новой гипотезы;operational — поддерживает норму, устраняет инцидент или исполняет обязанность.Для первых трёх нужен один H-NNN. Для двух последних номер гипотезы не
подставляется. Связь unclassified видна в карточке РП и блокирует её запуск,
но не создание: это сохраняет обратимость и не ломает старые автоматизации.
Запустить скрипт (возвращает JSON или сигнал):
S="${IWE_SCRIPTS:-$HOME/IWE/scripts}"
PY3="$(bash "$S/lib/find-python3.sh")" && "$PY3" "$S/artifactor.py" "$ARGUMENTS"
Интерпретация результата:
result_type: system|episteme (exit 0) → вернуть пилоту, стоп.result_type: unresolved (exit 0) → перейти к Шагу 2 и проверить смысл всего запроса, включая явное уточнение пилота. Keyword-ответ не учитывает уточнение после общего триггера («реализация плана»); повторять тот же keyword-ответ после уточнения нельзя. Если основной результат по-прежнему неизвестен, Шаг 2 сохраняет unresolved для вопроса потребителя.{"error": "INSUFFICIENT_INPUT"}, стопЗаполнить все поля, используя правила ниже. Вернуть JSON с resolution_path: "llm", confidence: "low", schema_version: 3. Для expected_result_kind/result_kind_resolution — та же логика, что у keyword-пути: подобрать kind_id из PACK-digital-platform/pack/digital-platform/result-kinds-registry.yaml по смыслу запроса; если ни один явно не подходит — expected_result_kind: null, result_kind_resolution: "unresolved" (не подменять ближайшим).
Шаг 2.0 — тип результата (WP-575 Ф2, ПЕРВЫЙ вопрос, до имени и класса). Прежде чем формулировать artifact/class, ответить: результат этой работы будет действующей системой (агент, скрипт, сервис, MCP-инструмент, бот, автоматизация — что-то, что будет ВЫПОЛНЯТЬСЯ) или информационным объектом (документ, знание, правило, отчёт, план — что-то, что будет ЧИТАТЬСЯ)?
result_type: "unresolved", не гадать (та же дисциплина, что у result_kind_resolution: "unresolved"). Документ, который выдаёт создаваемый скрипт, — выход системы; документация к ней — сопроводительный результат. Это не делает тип неоднозначным, если основной результат явно указан. Описание сервиса без его реализации — episteme.result_type: "system" или "episteme" соответственно.system. «напиши руководство по Y» → episteme. «доделай хвосты РП-N» без указания что именно осталось → unresolved (может оказаться и кодом, и документом).Правила class:
| Класс | Критерий |
|---|---|
trivial | Протокол без неопределённости (day-open, week-close, peer-сессия) |
closed-loop | Чёткая спецификация + известный метод (баг-фикс, миграция, ревью, триаж) |
open-loop | Нет спецификации, нужно генерировать (контент-план, диагностика, сценарии) |
problem-framing | Расплывчато, метод неизвестен (идеи, концепции, «что-то придумать с X») |
При сомнении — выбирать более широкий класс (open-loop, не closed-loop).
Правила artifact: одна строка на русском, первое слово — существительное, обозначающее документ, систему или состояние системы (не процесс/действие над ним — «Разбор X», «Анализ X», «Проверка X» не годятся, даже когда сами по себе грамматически существительные).
Примеры: «Список тем для трёх постов», «Отчёт диагностики латентности», «Задание на сценарии».
Не так: «Разбор 88 неразобранных коммитов» (описывает действие) → так: «Реестр неразобранных коммитов ветки X» (описывает артефакт-результат).
Общий тест «процесс → результат» (WP-7 Ф140, peer-session 2026-09-11 с Kimi+Codex). Частные примеры выше не ловят отглагольные существительные без объекта X («Оплата», «Миграция», «Интеграция», «Синхронизация») — формально существительные, но по смыслу называют само действие. Перед тем как принять artifact:
Причастие на старом существительном оставляет прежний объект и клеит к нему статус. Так не называть.
Пример: не «Оплата Мастерской IWE через Aisystant и Telegram-канал» (оплата→оплатить — сама работа), а «Канал оплаты Мастерской IWE через Aisystant и Telegram».
Тест применяется и к keyword-пути (Шаг 1) — но там НЕ рантайм-проверкой (это нарушило бы контракт «<200ms, без LLM»), а разовым аудитом KEYWORD_MAP в artifactor.py: значение artifact каждой записи обязано проходить тот же тест на момент добавления/правки записи.
Правила budget_estimate:
trivial → ~0.5hclosed-loop → ~2h (если нет конкретного числа в запросе)open-loop → ~3hproblem-framing → ?Поле routing_tag = значение task_type (snake_case).
Вывести JSON в stdout. Без дополнительных пояснений.
| Сценарий | Поведение |
|---|---|
| Запрос < 5 слов | {"error": "INSUFFICIENT_INPUT"} |
| Скрипт не найден / сбой | Перейти к Шагу 2 напрямую |
| Запрос на иностранном языке | Классифицировать как есть, confidence: low |
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Регистрация косяка агента в системе учёта 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). Используй когда пользователь предлагает архитектурное решение, новый инструмент или системное изменение.
日本語の概要は準備中です。原文の説明を表示しています。
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, или при еженедельной сверке.
日本語の概要は準備中です。原文の説明を表示しています。
Инструкции для автора шаблона IWE: staging-канал (обкатка → FMT), авторские правила L3, Extensions Gate. Загружать при: staging / promote / author / шаблон / extensions / L3.
日本語の概要は準備中です。原文の説明を表示しています。