🌐 Кросс‑модульная пропаганда — propagation.md
Контекст сеанса#
Module: Mode
Component: Cross-Module Propagation
Version: 1.0
Status: active
Layer: Session
Coherence: declared
Drift: bounded
Canon: active
1. Цель#
Этот документ определяет, как Уровень Режима распространяет свое состояние, ограничения и события на соседние модули в Уровне Сессии и на родительский Уровень Режима. Распространение гарантирует, что каждый модуль автоматически наследует осведомленность о режиме — ни один модуль не работает без режима.
Принцип проектирования: Распространение является основанным на передаче и декларативным. Уровень Режима объявляет состояние; принимающие модули решают, как его использовать. Ни один модуль не опрашивает состояние режима.
2. Архитектура распространения#
*
┌─────────────────┐
│ Regime Layer │
│ (coherence src) │
└────────┬────────┘
│ inherits coherence posture
▼
┌──────────────────────────────┐
│ Session Layer │
│ │
│ ┌────────┐ ┌──────────┐ │
│ │ Mode │──▶│ Opacity │ │
│ │ (M) │ └──────────┘ │
│ │ │ ┌──────────┐ │
│ │ │──▶│ Capture │ │
│ │ │ └──────────┘ │
│ │ │ ┌──────────┐ │
│ │ │──▶│ Context │ │
│ └────────┘ └──────────┘ │
└──────────────────────────────┘
Направление: Режим выталкивает наружу. Режим толкает вниз. Ничто не толкает в Режим, кроме Режима (постура когерентности) и Пользователя (переходы позы).
3. Правила распространения#
3.1 Режим → Непрозрачность#
Event: mode_transition
Payload: { previous: M_x, current: M_y, timestamp, origin }
Effect: Opacity recalculates session transparency weight
| Позиция режима | Эффект непрозрачности |
|---|---|
| M_chat | Стандартная прозрачность — сбалансированная видимость |
| M_task | Сниженная прозрачность — целевая видимость |
| M_spec | Структурная прозрачность — видимость на уровне схемы |
| M_debug | Максимальная прозрачность — полная внутренняя видимость |
| M_auto | Ограниченная прозрачность — только объявленные границы |
Правило: Каждый переход режима вызывает перерасчет Непрозрачности. Непрозрачность никогда не должна кэшировать устаревшее состояние режима.
3.2 Режим → Захват#
Event: mode_transition | mode_violation
Payload: { stance, timestamp, origin, violation_detail? }
Effect: Capture logs the mode event to the session record
Что записывает Захват:
- Каждый переход режима (позиция, временная метка, источник пользователя/системы).
- Каждое нарушение MCL (инвариант, защитный барьер, попытка перехода).
- Позиция режима в начале и в конце сессии.
Правило: Захват должен записывать события режима до завершения перехода. Журнал является только для добавления и неизменяемым в пределах сессии.
3.3 Режим → Контекст#
Event: mode_transition
Payload: { current: M_y, drift_tolerance, coherence_posture }
Effect: Context adjusts window behavior based on active stance
| Позиция режима | Поведение окна контекста |
|---|---|
| M_chat | Широкий контекст — исследовательский, ассоциативный |
| M_task | Узкий контекст — целенаправленный, очищенный |
| M_spec | Структурный контекст — только схема и определение |
| M_debug | Глубокий контекст — включает внутренние следы состояния |
| M_auto | Ограниченный контекст — только заранее объявленный диапазон |
Правило: Контекст должен настроить свое окно после получения события режима и до обработки следующего ввода пользователя.
3.4 Режим → Модус (входящий)#
Event: regime_posture_change
Payload: { posture: declared | inferred | suspended }
Effect: MCL re-evaluates all active constraints
Это единственное входящее распространение, которое Уровень Модуса принимает от непользовательского источника. Оно поступает из Уровня Режима и влияет на MCL (см. constraints.md §6).
| Позиция Режима | Ответ MCL |
|---|---|
| объявленная | Все переходы требуют явного объявления |
| выведенная | Переходы могут быть предложены, пользователь подтверждает |
| приостановленная | Не-Чат режимы заблокированы; плавный выход в Чат |
Правило: Изменения позиции Режима обрабатываются немедленно. Если новая позиция более ограничительная, активные не-Чат режимы выходят плавно.
4. Схема события#
Все события распространения следуют единой канонической схеме:
mode_event:
type: mode_transition | mode_violation | mode_query
timestamp: ISO-8601
origin: user | system | regime
previous_stance: M_chat | M_task | M_spec | M_debug | M_auto | null
current_stance: M_chat | M_task | M_spec | M_debug | M_auto
coherence_posture: declared | inferred | suspended
drift_tolerance: wide | bounded | tight | minimal
violation:
invariant: INV-1 | INV-2 | INV-3 | null
guardrail: GRD-1 | GRD-2 | GRD-3 | GRD-4 | GRD-5 | null
detail: string | nullПравило: Каждое событие должно включать тип, временную метку, источник и текущую_позицию. Все остальные поля являются необязательными, но рекомендуются.
5. Инварианты распространения#
PROP-1 · Нет устаревшего состояния
No sibling module may operate on a cached mode state
older than the most recent mode_transition event.
PROP-2 · Сохранение порядка#
Propagation events are delivered in timestamp order.
Out-of-order delivery is a constraint violation.
PROP-3 · Идемпотентное Потребление#
Receiving modules must handle duplicate events gracefully.
A repeated mode_transition with the same timestamp is a no-op.
6. Блок наследования модуля#
Любой модуль может наследовать осведомленность о режиме, включив этот блок в свой контекст сессии:
# Mode Propagation — Inherited
mode_propagation:
version: 1.0
listens_to:
- mode_transition
- mode_violation
receives_from: Mode (Session Layer)
coherence_source: Regime Layer
default_stance: M_chat
on_missing_event: assume M_chatВставьте это в контекст сессии любого модуля, чтобы сделать его осведомленным о режиме. Модуль автоматически будет получать события режима и корректировать свое поведение.
7. Происхождение#
Source: Mode Operator (M) + MCL
Targets: Opacity, Capture, Context
Inbound: Regime Layer (coherence posture only)
Layer: Session
Pattern: push-based, event-driven, declarative
🔙 Назад к Модулю Режима · Операторы · Ограничения · Тесты
Кросс-модульная пропаганда v1.0 · RTT/1 Слой сеанса · Триадические структуры
