Промпт "распиши P2W из E.TGA в FPF для моей ситуации: <текст ситуации>"
Цепочка "от принципов к работе" (P2W) из FPF
U.SubstrateFormalization (чисто математический субстрат; types/effect-signatures/effect-rows/inference; NoEffectRealizationInSubstrateFormalization)
→ U.OntologyAuthoring (выделение объектов в мире выбор математических объектов из математического субстрата моделирования этих объектов)
→ U.CHRAuthoring (выбор характеристик, которыми можно описать объекты выбранной онтологии, но без собственно измерений)
→ U.PrincipleFraming (первые принципы + Measurement‑CHR binding; без законов применения)
→ U.MechanismRealization (Mechanism.Intension: CombinatorAlgebra, LawSet, AdmissibilityConditions, Γ_timeRule, Γ_planeRule, TransportRef)
→ U.ContextNormalization (UNM) (CG‑Spec, ComparatorSet, TransportRegistry(Φ); normalize‑then‑compare; method‑independent)
→ U.SelectionAndBinding (set‑returning) (кандидаты + локальная привязка; lawful orders; ParetoOnly)
→ U.WorkPlanning (planning) (осуществимость, расписания, EvidenceHooks)
→ U.WorkEnactment (enactment) (Bind values in WorkEnactment; фактические результаты/учёт/телеметрия)
→ U.EvaluatingAndRefreshing (G.11) (edition, slice‑scoped refresh, QD‑архивы, обратная связь)
Где цикл в потоке? Между `U.SelectionAndBinding` ↔ `U.WorkPlanning` (TAMP/MPC -- task and motion planning, model-predictive control).
Где «прихват параметров среды»? В `U.ContextNormalization (UNM)` до цикла;
Где появляются значения запуска? Только в `WorkEnactment`.
Что поддерживает проверяемость? CSLC‑законность сравнения; точные операции на `U.Transfer` (`ConstrainTo/CalibrateTo/CiteEvidence/AttributeTo`).
Для чего такое надо? Чтобы сориентироваться, что вообще происходит, о чём надо подумать. Это что-то вроде чеклиста, "примитивный граф трансдукций", от которого можно отталкиваться в работе. Получить такое просто: подгрузить FPF (https://github.com/ailev/FPF) и дать промпт "распиши P2W из E.TGA в FPF для моей ситуации: <текст ситуации>". И что с этим потом делать? Смотреть на то, что не пришло в голову, призывают же "thinking out of the box" -- вот это оно и есть.
Где тут первые принципы? Идите к началу цепочки и задавайте вопрос: а если поменять что-то в этом начале цепочки (скажем, если не думали вообще о теории, а теперь вдруг подумали! не думали об онтологии, а теперь подумали!), как это отразится на том, что вы сейчас делаете? Не появилось новых идей?
В слайдах семинара 7 декабря (попадать туда по вот этой ссылке: https://t.me/+W3q_gmfpmdE4Nzdi) я дам пример 1 -- промышленный манипулятор, собирающий детали на конвейере (нет, не end-to-end нейроконтроллер, а old school подход). Тут дам ещё парочку. Это просто абстрактные примеры, много от них ждать нельзя, но общую идею можно понять.
Пример 2. Автоскейлинг микросервисов в облачной системе
У нас распределённая система микросервисов, надо автоматически масштабировать реплики под нагрузку, не перегружая базу и не плодя лишние ресурсы.
1) U.SubstrateFormalization (математика)
* теория очередей (M/M/k, более сложные сети);
* марковские процессы, стационарные распределения;
* контроль нагрузок и SLA (вероятностные гарантии, tail latency);
* вариационная формулировка EM / RL (если автонастройка).
2) U.OntologyAuthoring (онтология)
* сущности: сервисы, инстансы, запросы, очереди, базы, кэш;
* отношения: «кто кого вызывает», «кто чьим bottleneck».
3) U.CHRAuthoring (характеристики)
* для сервисов: RPS, latency percentiles, error rate;
* для инстансов: CPU, RAM, I/O, warmup-time;
* для SLA: P99 latency ≤ X, error rate ≤ Y.
4) U.PrincipleFraming (принципы и законы на их основе, и что замеряем в мире для их удовлетворения)
* из теории очередей: стабильность (λ < μ·k), формулы связей между RPS и latency;
* принцип управления: минимизировать cost = ресурсы + штрафы за SLA-нарушения;
* CHR↔measurement (latency ↔ замеры из трейсов / Prometheus, load ↔ CPU+RPS, violations ↔ события алёртов).
5) U.MechanismRealization (сам механизм автоскейлинга, семейство методов, из которого будем выбирать конкретный метод):
* CombinatorAlgebra: измерять → прогнозировать → решать задачу автоскейла → отправлять команду в оркестратор;
* LawSet: конкретные законы принятия решений (HPA-подобный алгоритм, RL-агент, MPC на очередях);
* AdmissibilityConditions (не превышать лимиты кластера, не масштабировать в моменты deploy’ев, учитывать холодный старт;
* Γ_timeRule: период переоценки (например, каждые 30 секунд), горизонты предсказаний;
* Γ_planeRule: пространства измерений (нормализованный load, лог-метрики и т.п.);
* TransportRef: как доставлять решения в Kubernetes/орchestrator.
6) U.ContextNormalization (UNM)
* собирает метрики из разных источников (Prometheus, logs, tracing),
* приводит их к единому виду (единицы времени, единицы нагрузки, сглаживание/агрегация по окнам;
* проверяет freshness: если метрики старые/дырявые → выдаёт FreshnessRequest на перезапуск агента метрик, проверку конфигурации сбора.
* регистрирует транспорты и калибровки, например, пересчёт load в units, которые использует конкретный механизм (ML-модель, плато-триггеры и т.п.).
7) U.SelectionAndBinding cелектор метода по итогам замеров в реальном контексте:
* на вход: множество возможных конфигураций (число реплик, лимиты ресурсов, разные схемы троттлинга);
* ComparatorSet: Pareto по {SLA violation risk, cost, robustness};
* на выход: множество допустимых конфигураций (set-returning), никакого скалярного "вот это бери" (ибо ресурсы ещё непонятны).
### 8) U.WorkPlanning -- планирование:
* выбирает конфигурацию/набор конфигураций для ближайшего горизонта;
* учитывает окна deployment’ов, maintenance, политики безопасности;
* проверяет, нет ли конфликтов с другими задачами (другие управляющие петли, ручные операции админов);
* расставляет EvidenceHooks: какие метрики/trace-спаны логировать, какие события хранить для последующей оценки.
Цикл Selection↔Planning:
* если план неосуществим (конфликт с деплоем, нехватка ресурсов, политики безопасности),
* возвращаемся к SelectionAndBinding за альтернативным набором кандидатов.
9) U.WorkEnactment -- вот только тут актуальная работа:
* автоскейлер/оркестратор применяет план: создаёт/убирает реплики, меняет лимиты ресурсов, возможно, перераспределяет трафик; документируются фактические значения (какая конфигурация действительно была применена, какие были задержки, ошибки, проваленные SLA).
10) U.EvaluatingAndRefreshing -- это ещё не вся история, надо отследить результат и поправиться:
* сравнение ожидаемых SLA с фактическими;
* анализ: сколько раз сработали алёрты, сколько стоили ресурсы, были ли ситуации over/under-provisioning;
* обновление версий (editions): возможно, корректировка ComparatorSet (более жёсткие критерии), refresh ML-модели/параметров HPA, запись кейсов и результатов в QD-архив (Quality-Diversity по стратегиям автоскейла).
Пример 3. Управление дозировкой лекарств в терапевтическом отделении
Система поддержки принятия решений подбирает схему дозирования для пациента (например, антибиотик или антикоагулянт), учитывая множество факторов и ограничений.
1) U.SubstrateFormalization (выбор математики, я когда-то на кафедре клинической фармакологии помогал программировать такие модели на тогда ещё более чем современных СМ-4):
* диффур/ODE-модели фармакокинетики/фармакодинамики (PK/PD);
* вероятностное моделирование (байесовские модели параметров пациента);
* оптимальное управление/контроль под риском (cost = эффективность + побочные эффекты).
2) U.OntologyAuthoring -- формулируем онтологию, с чем работаем:
* пациент, орган/система, заболевание, лекарство, курс лечения;
* параметры пациента: возраст, вес, функции органов, другие лекарства;
* события: доза, приём, измерения (анализы крови, давления и т.д.).
3) U.CHRAuthoring -- характеризация, что должны отслеживать:
* концентрация препарата в плазме,
* биомаркеры эффективности (например, снижение температуры, маркеры воспаления),
* показатели токсичности и побочек,
* риск осложнений (вероятности неблагоприятных событий).
4) U.PrincipleFraming -- принципы и законы предметной области, а также что для них замерять в реальности:
* законы PK/PD: всасывание, распределение, метаболизм, выведение;
* клинические принципы: «эффективная концентрация должна быть в таком-то диапазоне», «суммарный риск побочек не должен превышать X»;
* CHR↔measurement: концентрация ↔ результаты лабораторных тестов, эффективность ↔ динамика клинических показателей, токсичность ↔ специфические анализы.
5) U.MechanismRealization -- вот тут семейство возможных схем лечения:
* CombinatorAlgebra: модель PK/PD → модель риска → оптимизатор доз (MPC/RL/heuristics);
* LawSet: конкретная диффур-модель, уравнения для риска;
* AdmissibilityConditions: дозы не выходят за пределы, не конфликтуют с другими лекарствами, учитывают ограничения клиники (формы препарата, частота измерений);
* Γ_timeRule: шаги пересмотра (каждый день/каждый анализ), горизонты (курс на 7–14 дней);
* Γ_planeRule: units концентраций, доз, временных интервалов;
* TransportRef: как забирать данные из LIS/EMR (laboratory information system, electronic medical record) как возвращать рекомендации в медкарты.
6) U.ContextNormalization (UNM)
* забирает данные пациента, анализы, сопутствующие диагнозы;
* нормализует: единицы анализов (разные лаборатории дают в разных единицах), временные шкалы (время приёма, время забора анализа);
* проверяет актуальность: если анализы старые/неполные → FreshnessRequest: назначить новые анализы;
* TransportRegistry(Φ): хранит способы перевода разных форматов/единиц, учёт качества данных (ошибки, пропуски).
7) U.SelectionAndBinding -- селектор схем лечения:
* на вход: множество вариантов схем: разные дозы, интервал, длительность, комбинации лекарств;
* ComparatorSet: Pareto по {эффективность, риск побочек, нагрузка на пациента/систему, стоимость};
* на выход: множество допустимых схем (возможно, 2–3 варианта с разными акцентами: более агрессивная vs более щадящая).
8) U.WorkPlanning -- планирование терапии:
* выбирает одну/несколько схем для обсуждения с врачом;
* строит план: расписание приёмов, расписание контрольных анализов, маршрут пациента (к какому кабинету, когда);
* учитывает ресурсы клиники: занятость лаборатории/оборудования, доступность лекарств, ограничения по времени пребывания.
Цикл Selection↔Planning:
* если в WorkPlanning выясняется, что некоторые схемы нереализуемы (нет препарата, нет мощности лаборатории, конфликт с другими процедурами),
* возвращаемся к SelectionAndBinding за другими вариантами.
9) U.WorkEnactment -- вот тут реальное лечение:
* пациент получает конкретные дозы в конкретные моменты;
* проводятся реальные анализы и наблюдения;
* регистрируются фактические данные: приёмы, пропуски, побочные эффекты, результаты анализов и клинической оценки.
10) U.EvaluatingAndRefreshing -- оценка и обновление:
* сопоставляем прогнозы PK/PD и риск-модели с фактическими концентрациями и динамикой состояния;
* корректируем схему: возможно, меняем дозу/интервал, возможно, меняем препарат;
* обновляем edition’ы: уточняются параметры модели для данного пациента, пополняется QD-архив: какие схемы у каких кластеров пациентов работали лучше;
* цикл продолжается до окончания курса.

