🔒 Capa de Restricción de Modo (MCL) — constraints.md
Contexto de Sesión#
Module: Mode
Component: Mode Constraint Layer (MCL)
Version: 1.0
Status: active
Layer: Session
Coherence: declared
Drift: bounded
Canon: active
1. Objetivo#
La Capa de Restricción de Modo (MCL) vincula todos los Operadores de Modo a la coherencia declarada de RTT/1, límites de deriva y restricciones de origen del usuario. Hace cumplir que las transiciones de modo permanezcan explícitas, originadas por el usuario y que preserven la coherencia.
La MCL no es una capa de política — es una restricción estructural. No puede ser anulada por configuración, preferencia o flujo de trabajo externo. Es portante.
2. Invariantes#
El MCL declara exactamente tres invariantes estructurales. Estas se mantienen en todas las sesiones, todas las posturas y todos los regímenes.
INV-1 · Origen del Usuario#
All mode transitions must originate from the user.
- Ningún proceso del sistema, flujo de trabajo externo o rutina automatizada puede cambiar el modo activo sin la declaración explícita del usuario.
- El Modo Automático puede proponer acciones pero no puede transicionar modos.
- Esta invariante es incondicional: ningún marco, contexto o urgencia la anula.
INV-2 · Conservación de la Coherencia#
No mode transition may violate the declared coherence posture.
- Si la sesión actual declara
coherence: declared, cada transición de modo debe preservar esa declaración. - Una transición que crearía un estado de coherencia no declarado o ambiguo es rechazada.
- La postura de coherencia se hereda de la Capa de Régimen (ver propagation.md).
INV-3 · Gravedad del Modo Chat#
Chat Mode is the default, fallback, and recovery state.
- Cada sesión comienza en Modo Chat a menos que el usuario declare explícitamente lo contrario al inicio de la sesión.
- Cualquier error, tiempo de espera o transición no resuelta vuelve al Modo Chat.
- El Modo Chat no puede ser eliminado, deshabilitado o despriorizado.
3. Barrières#
Les barrières sont des règles opérationnelles qui appliquent les invariants à l'exécution. Le MCL déclare exactement cinq barrières.
GRD-1 · Sin Cambios en Modo Silencioso#
Rule: Mode changes must be announced and logged.
Scope: all stances
Enforces: INV-1
- Cada transición de modo genera un evento de sesión.
- El evento incluye: postura anterior, nueva postura, marca de tiempo, origen (usuario/sistema).
- Las transiciones silenciosas son una violación de restricción.
GRD-2 · El modo automático no puede escalar#
Rule: Automatic Mode cannot activate Task Mode.
Scope: M_auto only
Enforces: INV-1
- El modo automático puede proponer acciones dentro de sus límites declarados.
- No puede activar el modo de tarea, el modo de especificación o el modo de depuración.
- La escalada requiere una solicitud explícita del usuario enrutada a través del modo de chat.
GRD-3 · Sin Secuestro de Modo Externo#
Rule: No external workflow may override user-declared mode.
Scope: all stances
Enforces: INV-1, INV-2
- Los sistemas externos, complementos o integraciones no pueden establecer o cambiar el modo activo.
- Ellos pueden solicitar un cambio de modo al presentar una propuesta en Modo Chat.
- El usuario debe aceptar explícitamente la propuesta para que la transición ocurra.
GRD-4 · Drift Bound Enforcement#
Rule: Mode transitions must respect the stance's drift tolerance.
Scope: all stances
Enforces: INV-2
- Cada postura declara una tolerancia de deriva (ver operators.md §3).
- Una transición se rechaza si el estado resultante excede los límites de deriva de la postura objetivo.
- La deriva se evalúa en el momento de la transición, no retrospectivamente.
| Postura | Tolerancia de Deriva |
|---|---|
| Chat | limitada (amplia) |
| Tarea | estrecha |
| Especificación | mínima |
| Depuración | limitada |
| Automática | estrecha |
GRD-5 · Enrutamiento Hub-and-Spoke#
Rule: All mode transitions route through Chat Mode.
Scope: non-Chat stances
Enforces: INV-3
- No se permite la transición directa entre posturas que no son de Chat.
- Tarea → Especificación requiere: Tarea → Chat → Especificación.
- Esto asegura que el Modo Chat siga siendo el centro observable y estable.
4. Violaciones de Restricciones#
Cuando se viola una restricción, el MCL aplica una recuperación determinista:
on_violation:
1. Log the violation (stance, invariant, guardrail, timestamp).
2. Reject the attempted transition.
3. Revert to Chat Mode (INV-3).
4. Surface the violation to the user in Chat Mode.
Las violaciones no son silenciosas. El usuario siempre ve lo que sucedió y por qué.
5. Bloque de Sobrescritura del Contexto de Sesión#
Este bloque se puede pegar en el contexto de sesión de cualquier módulo para heredar las restricciones de Modo. Es mínimo, no intrusivo y compatible entre módulos.
# Mode Constraint Layer — Session Override
mode_constraint_layer:
version: 1.0
invariants:
- user_origin
- coherence_preservation
- chat_mode_gravity
guardrails:
- no_silent_mode_changes
- automatic_mode_cannot_escalate
- no_external_mode_hijacking
- drift_bound_enforcement
- hub_and_spoke_routing
default_mode: M_chat
fallback: M_chat
on_error: revert_to_M_chat
on_violation: log_reject_revert_surfaceConsecuencias operativas de pegar este bloque:#
- No se puede forzar ningún módulo en Modo Tarea.
- Ningún subsistema externo puede secuestrar el modo.
- El Modo Automático permanece limitado y seguro.
- El Modo Chat sigue siendo el predeterminado estable.
- La postura de coherencia sigue siendo la restricción gobernante.
6. Interacción de la Capa de Régimen#
El MCL hereda su postura de coherencia de la Capa de Régimen:
Regime Layer → declares coherence posture
↓
Mode Constraint Layer → enforces coherence during transitions
↓
Mode Operator → executes transitions within constraints
| Postura del Régimen | Efecto del MCL |
|---|---|
| declarada | Todas las transiciones deben ser explícitamente declaradas |
| inferida | Las transiciones pueden ser propuestas, el usuario confirma |
| suspendida | Todos los modos que no son Chat bloqueados; solo Modo Chat |
Cuando la Capa de Régimen cambia su postura de coherencia, el MCL re-evalúa todas las restricciones activas. Si la nueva postura es más restrictiva, los modos que no son Chat se cierran de manera elegante.
7. Linaje#
Parent: Mode Operator (M)
Layer: Session → Mode → MCL
Depends: Regime Layer (coherence posture)
Feeds: Mode Operator (transition gating)
Opacity (constraint state visibility)
Capture (constraint violations logged)
🔙 Volver al Módulo de Modo · Operadores · Propagación
Capa de Restricción de Modo v1.0 · Capa de Sesión RTT/1 · Marcos Triádicos