---
name: fpf
description: Загрузка применимых принципов для задачи из иерархии Pack → SPF → FPF. Используй когда нужно найти релевантные принципы перед принятием решения.
argument-hint: "<запрос или тема>"
version: 1.0.0
layer: L1
status: active
browser_safe: true
triggers:
  slash: [/fpf]
  phrases: []
routing:
  executor: haiku
  deterministic: false
agents: single
interaction: multi-step
gates_required: []
gates_enforced: []
gates_rationale: "операционный скилл; WP Gate применим только при создании нового РП, не для операционных вызовов"
---

# Загрузка принципов

Запрос: $ARGUMENTS

## When to use

Загрузка применимых принципов для задачи из иерархии Pack → SPF → FPF. Используй когда нужно найти релевантные принципы перед принятием решения.

## Fallback Chain

```
Pack (предметное) → SPF (корректность) → FPF (первые принципы)
```

## Режимы (определи по контексту запроса)

| Режим | Триггер | Что делать |
|-------|---------|-----------|
| **lookup** | Запрос содержит код паттерна (A.7, B.5, F.18) или конкретный термин | Grep по FPF → точная секция. Объясни в engineering-языке (см. `memory/fpf-reference.md` § Трансляция) |
| **review** | «Проверь», «сверь с FPF», артефакт для проверки | Загрузи артефакт + релевантные принципы → сверка пункт за пунктом → findings |
| **design** | «Спроектируй», «как сделать по FPF», задача проектирования | Подбери применимые паттерны (A.1 границы, A.6 состав, A.7 различения, B.5 ADI) → конкретные рекомендации |
| **characterize** | «Сравни», «оцени варианты», «как выбрать» | A.17-A.19 (Lawful Comparison): критерии → индикаторы → оценка вариантов по одинаковой шкале |
| **teach** | «объясни FPF», «что такое FPF», «с нуля», «введение» | Дай обзор FPF: что это, зачем, ключевые блоки (различения, паттерны, первые принципы) → объясни в engineering-языке без жаргона |
| **diagnose** | «какие принципы нарушаю», «что не так», «найди проблему», «проверь мою работу» | Получи описание работы/решения → найди расхождения с принципами FPF/Pack → назови конкретные нарушения с указанием принципа и где именно |
| **prioritize** | «наиболее важны», «для роли», «в роли», «для меня как» | Определи роль из аргумента → найди принципы FPF/Pack, релевантные этой роли → ранжируй по применимости → объясни почему каждый важен именно для этой роли |

**БЛОКИРУЮЩЕЕ — No-Jargon:** Каждый FPF-термин в output → engineering-эквивалент в скобках или вместо. Без исключений.
- Известные: `memory/fpf-reference.md` § Трансляция (Holon, F-G-R, Alpha, Mereology, Affordance, ADI...)
- Неизвестные (TransformerRole, senseFamily, Γ_*, ReferencePlane и т.п.): перевести по контексту, добавить `(FPF: <оригинал>)`. Не оставлять FPF-термин без перевода.
- **Тест перед выводом:** пробежать output — есть ли термин, непонятный инженеру без FPF? Если да — перевести.

## Algorithm

### 0. Проверь, что читаешь полный текст, а не ссылку

Ссылка на FPF, список имён файлов или обрезанный фрагмент — это ещё не доступ к тексту (правило автора, `FPF/USING-FPF.md`).

Шаг относится к локальной копии `FPF/` в рабочей области; пути ниже даны от её корня (`$IWE_WORKSPACE`), пути с пробелами (`Engineering DPF Suite/...`) бери в кавычки. В браузерной версии, где копии нет, или когда поиск идёт через MCP: читай документ целиком (`knowledge_get_document`) и называй источник.

- Убедись, что есть `FPF/USING-FPF.md`, и прочитай его, если не читал в этой сессии: это общая инструкция автора по поиску и чтению паттернов.
- Назови версию копии: `git -C FPF log -1 --format='%h %ad' --date=short`. Дата коммита копии старше 30 дней или файла `USING-FPF.md` нет → скажи об этом пользователю: копия устарела, обновит `update.sh` (или вручную `git -C FPF pull --ff-only`, если в копии нет своих правок).
- Нет папки `FPF/` или нужного паттерна нет в полном тексте → прямо скажи «доступа к полному тексту нет» и оставь зависимый вывод открытым. Не пересказывай паттерн по памяти.
- Поиск: `rg -n -i -C 2 --no-ignore -g '*.md' -- '<термин по-английски и по-русски>' FPF`. Совпадение в оглавлении или справочнике — не тело паттерна.
- Чтение паттерна целиком по номеру (точку в номере экранируй `\.`): `rg -U --no-heading --no-line-number --no-filename --color never '(?ms)^## <ID> [^\r\n]*\r?\n.*?^### <ID>:End[ \t]*\r?$' -- <файл>`. Вывод обрезан → читай тот же файл по диапазонам строк.
- Нет `rg` (ripgrep) → те же шаги через `grep -rn -i` по файлам `FPF/**/*.md` и чтение диапазонами строк (`sed -n 'A,Bp'`): начало — строка `## <ID> `, конец — `### <ID>:End`.

### 1. Определи режим

По таблице выше. Если неясно — режим lookup.

### 2. Классифицируй источник

- Предметное знание (архитектура, домен, сервис) → source_type=pack
- Форма, процесс, корректность → source=SPF
- Базовые различения, первые принципы → source=FPF

### 3. Ищи через iwe-knowledge

- `iwe-knowledge search(query="<запрос>", source_type="pack")` -- по всем Pack
- `iwe-knowledge search(query="<запрос>", source="SPF")` -- по SPF
- `iwe-knowledge search(query="<запрос>", source="FPF")` -- по FPF
- Если первый уровень не дал результатов -- спускайся по fallback chain

### 4. Если iwe-knowledge недоступен

(нет в `/mcp`):
- Pack: читай файлы `PACK-*/pack/` через Glob + Read
- SPF: читай `SPF/docs/` через Glob + Read
- FPF: читай `FPF/Readme.md` (обзор) или ищи через Grep по `FPF/`
- Наборы DPF: рядом со спецификацией автор FPF публикует `FPF/Engineering DPF Suite/` (справочник `ENGINEERING-DPF-SUITE-REFERENCE.md`) и `FPF/Foundational Thinking DPF Suite/` (справочник `FOUNDATIONAL-THINKING-DPF-SUITE-REFERENCE.md`); в `FPF-Spec.md` они не входят. Правила входа — `FPF/USING-FPF.md`: начинай с реальной ситуации, набор выбирай через `FPF/Readme.md` и справочник набора; приём ищется по заголовку `## <ID> - …`, его конец — `### <ID>:End`. Если этих папок нет в локальной копии `FPF/`, копия устарела — обнови её

### 5. Покажи результат

Релевантные принципы с пояснением, как они применимы к задаче. Включай ссылку на источник (github_url из результата поиска или путь к файлу). **Переводи FPF-термины** в engineering-язык.

**Источник в конце ответа.** Укажи: какая публикация и версия копии (commit), номера паттернов и разделы, что предполагаешь и чего не хватает для вывода. Дословная цитата нужна только когда проверяется толкование, а не в каждом ответе.

<!-- USER-SPACE -->
<!-- /USER-SPACE -->
