Формат описания приложений с замыканием под собой. Не фреймворк, не low-code, не runtime — спецификация формы данных, над которой работают четыре независимых читателя: пиксели, голос, агентский API, документ.
Приложение — это типизированная структура данных, а не код. Описывается четырьмя сущностями:
- Ontology — типы домена с ролями и инвариантами
- Intents — конструктивные частицы изменения мира (декларации, не handler'ы)
- Projections — авторские контракты на логически связные виды
- Φ — лог confirmed-эффектов; единственный источник истины
World(t) = fold(Φ_confirmed)
Из артефакта вычисляются четыре равноправные материализации §1: пиксели, голос, агентский API, документ. Один читатель — одна цель; viewer-scoping применяется ко всем четырём через одну функцию filterWorldForRole.
LLM участвует в проектировании и кристаллизации (witnesses с reliability: "heuristic"). В рантайме LLM отсутствует — ни одно решение, влияющее на состояние мира или рендер, не идёт через provider.
📖 «Мета-циркулярный evaluator для UX-формата» — три поста о замыкании формата под собой и AI как effect-emitter:
- «Closure: формат описывает себя» (скоро)
- «Анатомия: четыре читателя одного артефакта» (скоро)
- «AI как эффект-эмиттер» (скоро)
▶ Живая демонстрация — пройди по /meta (мета-домен), Pattern Inspector через Cmd+Shift+P, AI add-pattern через mock-LLM.
# через npm — встраивание в существующий React-проект
npm install @intent-driven/core @intent-driven/renderer @intent-driven/adapter-mantineimport { useEngine } from "@intent-driven/core";
import { ProjectionRendererV2, registerUIAdapter } from "@intent-driven/renderer";
import { mantineAdapter } from "@intent-driven/adapter-mantine";
registerUIAdapter(mantineAdapter);
function App({ domain }) {
const { world, exec } = useEngine(domain);
return <ProjectionRendererV2 artifact={domain.ARTIFACT} world={world} exec={exec} />;
}# или scaffold проект из существующей схемы (Postgres / OpenAPI / Prisma)
npx create-idf-app my-app
cd my-app && idf import postgres --connection $DATABASE_URL| Домен | Намерений | Особенность |
|---|---|---|
| Sales | 225 | Аукционная барахолка, 4 роли, чисто-кристаллизационный (без ManualUI) |
| Keycloak | 256 | IAM Admin Console, AdminShell layout, scoped DataGrid, 5 tabs × 48 полей |
| ArgoCD | 106 | Status-driven admin, Swagger 2→3 import, K8s CRD inline-children |
| Messenger | 100 | WebSocket + WebRTC, real-time, 15 custom canvas |
| Notion | 60 | Block-based KB, первый polymorphic entity (Block × 15 variants) |
| Invest | 61 | Fintech, AntD, 7 правил Rules Engine, 3 ML-сервиса |
| LifeQuest | 56 | Цели + привычки, shadcn/doodle, mobile-first, 6 canvas |
| Reflect | 47 | Дневник эмоций (Yale RULER), Apple visionOS-glass |
| Freelance | 46 | Биржа услуг, multi-owner Deal (customer+executor), escrow, revision-loop |
| Delivery | 45 | Food last-mile, 5 ролей, scheduler + map + irreversibility |
| Compliance | 38 | SOX ICFR / «provable UI», 6 ролей, 15 invariants, 5 __irr:high intents |
| Automation | 36 | Visual workflow в духе n8n, 4 роли, threshold + schedule rules |
| Booking | 22 | Онлайн-запись, темпоральные предикаты, wizard |
| Planning | 17 | Коллективные опросы, кворум, phase-aware CTA |
| Workflow | 15 | Визуальный редактор процессов, React Flow canvas |
| Gravitino | — | Metadata catalog dogfood (Apache Gravitino WebUI v2 reference) |
| Meta | 8 | IDF, описанный в IDF. Self-hosting closure: 10 entities, Studio shell, 16 доменов в snapshot |
Итого: ~1100 намерений, один движок, ~1960 тестов (842 host + 916 core + 175 renderer + 36 canvas-kit + 34 adapters).
Мета-домен /meta — это IDF, описанный в IDF. Каждая сущность формата (Domain, Intent, Projection, Pattern, Witness, RRule, Adapter, Capability, BacklogItem, PatternPromotion) — обычная entity в обычном ontology.entities. Каждый Pattern в банке — instance этой Pattern-entity. 16 доменов runtime-loaded в snapshot через crystallizeV2 + explainAllCrystallize.
Это closure-под-формат: первый внутренний observer, не зависящий от единичного use-case. Параллель — meta-circular evaluator из SICP 4.1.
@intent-driven/llm-bridge — formal contract LLM subprocess → EffectSink → Φ. Claude CLI spawn'ится из мета-Studio, парсит stream-json, валидирует output через Zod gate, эмиттит ResearchRun + Pattern.applySource эффекты в общий лог. SSE broadcast обновляет UI в realtime.
Ключевой инвариант: LLM модифицирует формат, но не нарушает детерминизм рантайма — все эффекты проходят те же инварианты, что и человеческие.
await sink.emit({ α: "create", entity: "ResearchRun", fields: { runId, status: "running" } });
const { text } = await provider.run(prompt, { signal, onProgress });
const validated = SynthesizedApplySchema.parse(JSON.parse(text));
await sink.emit({ α: "replace", entity: "Pattern", fields: { applySource: validated.structure.apply } });| Читатель | Endpoint | Форматы | Реализация |
|---|---|---|---|
| Pixels | ProjectionRendererV2 + adapter registry |
React DOM | 4 UI-адаптера, capability surface, Token Bridge |
| Voice | GET /api/voice/:domain/:projection |
json / SSML / plain | brevity-rules, top-3 для catalog, money как «два с половиной миллиона» |
| Agent API | /api/agent/:domain/{schema,world,exec} |
JSON | JWT + role.canExecute + visibleFields + preapproval |
| Document | GET /api/document/:domain/:projection |
HTML / JSON | structured document-граф, viewer-scoped |
const scoped = filterWorldForRole(world, role);
const pixels = ProjectionRendererV2(artifact, scoped);
const voice = voiceMaterializer(artifact, scoped);
const agent = agentSchema(artifact, scoped);
const document = documentMaterializer(artifact, scoped);37 stable patterns (35 с structure.apply, 2 matching-only). Двухосевая таксономия: архетип (структура: feed/catalog/detail/...) × паттерн (поведение: monitoring/triage/execution/exploration/configuration). Falsification fixtures в .test.js для каждого паттерна.
Pattern Inspector (toggle Cmd+Shift+P) — Off / Preview / Commit / X-ray режимы. Derivation X-ray помечает каждый дериввированный slot warm-yellow border'ом с hover-trail.
patterns/stable/
├── catalog/ (11) — grid-card-layout, hero-create, kanban-phase-column-board, ...
├── detail/ (13) — subcollections, m2m-attach-dialog, lifecycle-locked-parameters, ...
├── cross/ (9) — bulk-action-toolbar, hierarchy-tree-nav, irreversible-confirm, ...
└── feed/ (3) — composer-entry, antagonist-toggle, response-cost-before-action
| Адаптер | Пакет | Стиль | Дефолт для |
|---|---|---|---|
| Mantine | @intent-driven/adapter-mantine |
Corporate / data-dense | booking, planning, workflow, messenger, sales |
| shadcn/ui (Doodle) | @intent-driven/adapter-shadcn |
Handcrafted / sketch | lifequest |
| Apple visionOS-glass | @intent-driven/adapter-apple |
Premium / glassmorphism | reflect |
| Ant Design | @intent-driven/adapter-antd |
Enterprise / fintech-grade | invest, compliance, keycloak, argocd, automation |
Переключение в runtime через PrefsPanel ⚙ → UI-kit. adapter.capabilities декларативно описывает поддерживаемые primitive'ы; getCapability / supportsVariant дают graceful fallback.
Структурный стресс-тест: формат decoupled от языка. Четыре независимые имплементации читают один idf-spec и проходят L1+L2 conformance:
| Стек | Репо | Уровень |
|---|---|---|
| JavaScript / React | intent-driven-software/idf-sdk |
L1+L2+L3 (документ-материализация) |
| Go | intent-driven-software/idf-go |
L1+L2+L3 |
| Rust | intent-driven-software/idf-rust |
L1+L2+L3 |
| Swift | intent-driven-software/idf-swift |
L1+L2+L3 |
Conformance harness — npm run conformance против shared L1+L2 fixtures.
- Намерение — атом формата: сущности, условия, эффекты, witnesses, подтверждение (RFC 2119 определение в спеке §3)
- Проекция — формальная спецификация
⟨E, Q⟩: какие сущности показать, какой запрос, какие кнопки. Зависит от зрителя черезrole.scope - Кристаллизатор v2 — построение артефакта из (intents + ontology + projection). Чистая функция, перегенерируема, тестируема. 7 архетипов
- Алгебра связей §12 — пять типов (▷ sequential, ⇌ antagonistic, ⊕ excluding, ∥ parallel, adjacency) выводятся из частиц, не декларируются
- Темпоральный scheduler —
schedule_timer/revoke_timerкак системные intent'ы; таймеры — обычные эффектыτв Φ - Map primitive — spatial primitive по образцу chart: 4 layer-kind, SVG-fallback, adapter-delegation
- Irreversibility — instance-уровневая метка
effect.context.__irr = { point, at, reason }; integrity-правило блокируетα:"remove"послеpoint=high, at≠null - Reactive Rules Engine — event-condition-action + 4 extensions v1.5 (aggregation / threshold / schedule / condition)
- Global Invariants — 6 видов:
role-capability/referential/transition/cardinality/aggregate/expression
- Манифест v2 — 26 глав в 8 частях, timeless-документ о формате IDF: тезис, объекты формата, алгебра, четыре читателя, авторство, conformance, границы, перспектива
- Открытая спецификация v0.1 — формальный документ под Apache 2.0, JSON-схемы L1+L2, conformance test fixtures
- Implementation status — живой документ: 17 доменов, 19 SDK-пакетов, ~1960 тестов, open items
- Field tests — каждый — один домен, один цикл «обнаружение блокера → формализация → закрытие»
- Серия статей (см. выше) — мета-циркулярность как narrative arc
| Репо | Назначение |
|---|---|
intent-driven-software/idf |
Этот — entry-point, манифест, спецификация, прототип |
intent-driven-software/idf-sdk |
19 npm-пакетов: ядро, рендерер, 4 адаптера, scaffold-путь, importers |
intent-driven-software/idf-spec |
JSON Schema + conformance L1+L2 + cross-stack fixtures |
intent-driven-software/idf-go |
Go-имплементация |
intent-driven-software/idf-rust |
Rust-имплементация |
intent-driven-software/idf-swift |
Swift-имплементация |
intent-driven-software/idf-infra |
LLM subprocess bridge: effect-sink + llm-subprocess + llm-bridge |
intent-driven-software/idf-auth |
Identity plane (live: auth.intent-design.tech) |
intent-driven-software/idf-runtime |
Data plane (live: runtime.intent-design.tech) |
intent-driven-software/idf-studio |
Control plane (live: studio.intent-design.tech) |
Часть зеркал может быть в процессе миграции из DubovskiyIM/* namespace.
Парадигма фальсифицируема, и это её сила:
- Зона максимальной силы: транзакционные домены (e-commerce, аукционы, финтех, бронирование, операционка)
- Зона высокой силы: темпоральные, коллаборативные, коммуникационные, admin/IAM, status-driven control planes
- Граница: распределённые системы с eventual consistency, real-time collaborative editing (CRDT), ML в рантайме, game-loop / физика
Подробнее — §21 «Транзакционный уклон парадигмы» и §23 «Слабые места и открытые задачи» манифеста v2.
Многолицензионный репозиторий:
| Зона | Лицензия | Путь |
|---|---|---|
| Спецификация | Apache License 2.0 | spec/LICENSE |
| Документация (манифест, field-tests) | Apache License 2.0 | docs/LICENSE |
Ядро @intent-driven/core |
Business Source License 1.1 → Apache 2.0 на 2030-04-15 | in idf-sdk |
| Прототип, домены | MIT | LICENSE-CODE |
| Клиентские SDK пакеты | MIT | in idf-sdk |
Подробнее — LICENSE (pointer, объясняющий split).
Автор: Игнат Дубовский · dubovskiy.im@gmail.com