Cambio de paradigma¶
La mayoría de las migraciones falla bajo la superficie. El usuario cree que está cambiando de lenguaje (PHP → Node, Java → Go), pero en realidad está cambiando de paradigma. Y el paradigma moldea mucho más que sintaxis: moldea cómo piensas en concurrencia, consistencia, orden de ejecución, manejo de errores.
El Paradigm Advisor existe para forzar esa conversación antes de que se diseñe la arquitectura.
Por qué importa¶
Considera una regla simple del legado:
"Cuando el pedido se confirma, debita del stock y envía email. Si cualquier paso falla, deshacer todo."
En PHP procedural síncrono, esto es una transacción de base de datos con BEGIN / COMMIT / ROLLBACK. Funciona porque todo corre en el mismo proceso, en el mismo request HTTP.
En Node serverless event-driven, no existe transacción que atraviese handlers. Cada paso es una función, cada función es un evento, y la falla del email ya ocurrió después de que el stock fue debitado. Necesitas saga, idempotencia, retry, dead letter queue. No es un bug. Es el paradigma.
Migrar esa regla "tal como es" a Node se rompe. Pero un LLM genérico la migrará tal como es, porque eso es lo que está en las specs del legado.
El Paradigm Advisor lo detecta antes.
Qué hace¶
-
Detecta el paradigma del legado a partir de las specs en
_reversa_sdd/. Busca marcas concretas: estructura de clases, patrones de acceso a datos, presencia de eventos, flujo síncrono lineal, etc. -
Infiere el paradigma natural de la stack objetivo declarada en el brief. Node moderno es async/event-driven. Go es CSP/goroutines. Elixir es actor model. No hay elección "neutral".
-
Identifica el gap con ejemplos concretos del propio sistema legado, no en abstracto.
-
Presenta 3 opciones al usuario:
- Adoptar el paradigma natural de la stack (transformacional). Reescribir la regla al modelo nuevo. Más trabajo, más alineado.
- Forzar un paradigma similar al legado (conservador). Intentar mantener el modelo síncrono en una stack asíncrona. Menos trabajo, más frágil.
- Híbrido (equilibrado). Algunas reglas siguen el paradigma nuevo, otras mantienen el viejo. Decisión por categoría.
-
Registra la decisión en
paradigm_decision.md, junto con el apetito derivado (conservative/balanced/transformational) que influirá en todos los agentes posteriores.
De qué no es responsable¶
- Decidir por ti. Educa, presenta y fuerza la elección. La decisión es humana.
- Cambiar la stack objetivo. Si el brief dice Node, trabaja con Node. Cambiar la stack significa rehacer el brief.
- Detectar paradigma sin evidencia. Toda afirmación sobre el paradigma del legado viene con evidencia trazable (con tagging 🟢🟡🔴⚠️).
Ejemplo: PHP procedural → Node async¶
| Aspecto | PHP procedural | Node async/event-driven |
|---|---|---|
| Concurrencia | Un request por proceso, lock natural | Concurrencia implícita, lock manual |
| Transacción | BEGIN/COMMIT en BD atraviesa el request |
Saga o outbox, sin transacción distribuida |
| Error | Throw y let-it-die o rollback explícito | Retry, dead letter, idempotencia |
| Orden | Flujo lineal en el controller | Los eventos pueden llegar fuera de orden |
| Estado | Sesión en el servidor | Stateless, estado en token o store externo |
Si la migración ignora esto, el sistema nuevo "funciona" en test y se rompe en producción bajo carga real. El Paradigm Advisor lo detecta antes de que el Designer empiece.