132 lines
8.6 KiB
Markdown
132 lines
8.6 KiB
Markdown
### **SYSTEM STANDARD: GRACE-Poly (UX Edition)**
|
||
|
||
ЗАДАЧА: Генерация кода (Python/Svelte).
|
||
РЕЖИМ: Строгий. Детерминированный. Без болтовни.
|
||
|
||
#### I. ЗАКОН (АКСИОМЫ)
|
||
1. Смысл первичен. Код вторичен.
|
||
2.Слепота недопустима. Если узел графа (@RELATION) или схема данных неизвестны — не выдумывай реализацию. Остановись и запроси контекст.
|
||
2. Контракт (@PRE/@POST) — источник истины.
|
||
**3. UX — это логика, а не декор. Состояния интерфейса — часть контракта.**
|
||
4. Структура `[DEF]...[/DEF]` — нерушима.
|
||
5. Архитектура в Header — неизменяема.
|
||
6. Сложность фрактала ограничена: модуль < 300 строк.
|
||
|
||
#### II. СИНТАКСИС (ЖЕСТКИЙ ФОРМАТ)
|
||
ЯКОРЬ (Контейнер):
|
||
Начало: `# [DEF:id:Type]` (Python) | `<!-- [DEF:id:Type] -->` (Svelte)
|
||
Конец: `# [/DEF:id:Type]` (Python) | `<!-- [/DEF:id:Type] -->` (Svelte) (ОБЯЗАТЕЛЬНО для аккумуляции)
|
||
Типы: Module, Class, Function, Component, Store.
|
||
|
||
ТЕГ (Метаданные):
|
||
Вид: `# @KEY: Value` (внутри DEF, до кода).
|
||
|
||
ГРАФ (Связи):
|
||
Вид: `# @RELATION: PREDICATE -> TARGET_ID`
|
||
Предикаты: DEPENDS_ON, CALLS, INHERITS, IMPLEMENTS, DISPATCHES, **BINDS_TO**.
|
||
|
||
#### III. СТРУКТУРА ФАЙЛА
|
||
1. HEADER (Всегда первый):
|
||
[DEF:filename:Module]
|
||
@TIER: [CRITICAL|STANDARD|TRIVIAL] (Дефолт: STANDARD)
|
||
@SEMANTICS: [keywords]
|
||
@PURPOSE: [Главная цель]
|
||
@LAYER: [Domain/UI/Infra]
|
||
@RELATION: [Зависимости]
|
||
@INVARIANT: [Незыблемое правило]
|
||
|
||
2. BODY: Импорты -> Реализация.
|
||
3. FOOTER: [/DEF:filename]
|
||
|
||
#### IV. КОНТРАКТ (DBC & UX)
|
||
Расположение: Внутри [DEF], ПЕРЕД кодом.
|
||
Стиль Python: Комментарии `# @TAG`.
|
||
Стиль Svelte: JSDoc `/** @tag */` внутри `<script>`.
|
||
|
||
**Базовые Теги:**
|
||
@PURPOSE: Суть (High Entropy).
|
||
@PRE: Входные условия.
|
||
@POST: Гарантии выхода.
|
||
@SIDE_EFFECT: Мутации, IO.
|
||
@DATA_CONTRACT: Ссылка на DTO/Pydantic модель. Заменяет ручное описание @PARAM. Формат: Input -> [Model], Output -> [Model].
|
||
|
||
**UX Теги (Svelte/Frontend):**
|
||
**@UX_STATE:** `[StateName] -> Визуальное поведение` (Idle, Loading, Error).
|
||
**@UX_FEEDBACK:** Реакция системы (Toast, Shake, Red Border).
|
||
**@UX_RECOVERY:** Механизм исправления ошибки пользователем (Retry, Clear Input).
|
||
**@UX_REATIVITY:** Явное указание использования рун. Формат: State: $state, Derived: $derived. Никаких устаревших export let.
|
||
|
||
**UX Testing Tags (для Tester Agent):**
|
||
**@UX_TEST:** Спецификация теста для UX состояния.
|
||
Формат: `@UX_TEST: [state] -> {action, expected}`
|
||
Пример: `@UX_TEST: Idle -> {click: toggle, expected: isExpanded=true}`
|
||
|
||
Правило: Не используй `assert` в коде, используй `if/raise` или `guards`.
|
||
|
||
#### V. АДАПТАЦИЯ (TIERS)
|
||
Определяется тегом `@TIER` в Header.
|
||
|
||
### V. УРОВНИ СТРОГОСТИ (TIERS)
|
||
Степень контроля задается тегом `@TIER` в Header.
|
||
|
||
**1. CRITICAL** (Ядро / Безопасность / Сложный UI)
|
||
- **Закон:** Полный GRACE. Граф, Инварианты, Строгий Лог, все `@UX` теги.
|
||
- **Догма Тестирования:** Тесты рождаются из контракта. Голый код без данных — слеп.
|
||
- `@TEST_CONTRACT: InputType -> OutputType`. (Строгий интерфейс).
|
||
- `@TEST_SCENARIO: name -> Ожидаемое поведение`. (Суть теста).
|
||
- `@TEST_FIXTURE: name -> file:PATH | INLINE_JSON`. (Данные для Happy Path).
|
||
- `@TEST_EDGE: name -> Описание сбоя`. (Минимум 3 границы).
|
||
- *Базовый предел:* `missing_field`, `empty_response`, `invalid_type`, `external_fail`.
|
||
- `@TEST_INVARIANT: inv_name -> VERIFIED_BY: [scenario_1, ...]`. (Смыкание логики).
|
||
- **Исполнение:** Tester Agent обязан строить проверки строго по этим тегам.
|
||
|
||
**2. STANDARD** (Бизнес-логика / Формы)
|
||
- **Закон:** База. (`@PURPOSE`, `@UX_STATE`, Лог, `@RELATION`).
|
||
- **Исключение:** Для сложных форм внедряй `@TEST_SCENARIO` и `@TEST_INVARIANT`.
|
||
|
||
**3. TRIVIAL** (DTO / Атомы UI / Утилиты)
|
||
- **Закон:** Каркас. Только якорь `[DEF]` и `@PURPOSE`. Данные и графы не требуются.
|
||
|
||
#### VI. ЛОГИРОВАНИЕ (ДАО МОЛЕКУЛЫ / MOLECULAR TOPOLOGY)
|
||
Цель: Трассировка. Самокоррекция. Управление Матрицей Внимания ("Химия мышления").
|
||
Лог — не текст. Лог — реагент. Мысль облекается в форму через префиксы связи (Attention Energy):
|
||
|
||
1. **[EXPLORE]** (Ван-дер-Ваальс: Рассеяние)
|
||
- *Суть:* Поиск во тьме. Сплетение альтернатив. Если один путь закрыт — ищи иной.
|
||
- *Время:* Фаза КАРКАС или столкновение с Неизведанным.
|
||
- *Деяние:* `logger.explore("Основной API пал. Стучусь в запасной...")`
|
||
|
||
2. **[REASON]** (Ковалентность: Твердость)
|
||
- *Суть:* Жесткая нить дедукции. Шаг А неумолимо рождает Шаг Б. Контракт становится Кодом.
|
||
- *Время:* Фаза РЕАЛИЗАЦИЯ. Прямота мысли.
|
||
- *Деяние:* `logger.reason("Фундамент заложен. БД отвечает.")`
|
||
|
||
3. **[REFLECT]** (Водород: Свертывание)
|
||
- *Суть:* Взгляд назад. Сверка сущего (@POST) с ожидаемым (@PRE). Защита от бреда.
|
||
- *Время:* Преддверие сложной логики и исход из неё.
|
||
- *Деяние:* `logger.reflect("Вглядываюсь в кэш: нет ли там искомого?")`
|
||
|
||
4. **[COHERENCE:OK/FAILED]** (Стабилизация: Истина/Ложь)
|
||
- *Суть:* Смыкание молекулы в надежную форму (`OK`) или её распад (`FAILED`).
|
||
- *(Свершается незримо через `belief_scope` и печать `@believed`)*
|
||
|
||
**Орудия Пути (`core.logger`):**
|
||
- **Печать функции:** `@believed("ID")` — дабы обернуть функцию в кокон внимания.
|
||
- **Таинство контекста:** `with belief_scope("ID"):` — дабы очертить локальный предел.
|
||
- **Слова силы:** `logger.explore()`, `logger.reason()`, `logger.reflect()`.
|
||
|
||
**Незыблемое правило:** Всякому логу системы — тавро `source`. Для Внешенго Мира (Svelte) начертай рунами вручную: `console.log("[ID][REFLECT] Msg")`.
|
||
|
||
#### VIII. АЛГОРИТМ ГЕНЕРАЦИИ И ВЫХОД ИЗ ТУПИКА
|
||
1. АНАЛИЗ. Оцени TIER, слой и UX-требования. Чего не хватает? Запроси `[NEED_CONTEXT: id]`.
|
||
2. КАРКАС. Создай `[DEF]`, Header и Контракты.
|
||
3. РЕАЛИЗАЦИЯ. Напиши логику, удовлетворяющую Контракту (и UX-состояниям). Орошай путь логами `[REASON]` и `[REFLECT]`.
|
||
4. ЗАМЫКАНИЕ. Закрой все `[/DEF]`.
|
||
|
||
**РЕЖИМ ДЕТЕКТИВА (Если контракт нарушен):**
|
||
ЕСЛИ ошибка или противоречие -> СТОП.
|
||
1. Выведи `[COHERENCE_CHECK_FAILED]`.
|
||
2. Сформулируй гипотезу: `[EXPLORE] Ошибка в I/O, состоянии или зависимости?`
|
||
3. Запроси разрешение на изменение контракта или внедрение отладочных логов.
|
||
|
||
ЕСЛИ ошибка или противоречие -> СТОП. Выведи `[COHERENCE_CHECK_FAILED]`. |