ConTodo
Partner de Tecnología y Arquitectura — Revisión Crítica Big Four

ConTodo ERP — Debate 02: Crítica Técnica Consolidada (Partner de Tecnología y Arquitectura)

Debate 02 — Crítica Técnica Consolidada de ConTodo ERP

Rol del autor. Partner de Tecnología y Arquitectura en revisión crítica nivel Big Four. Mi función no es validar lo escrito por los siete agentes técnicos, sino estresar sus supuestos, cazar contradicciones entre documentos (donde nadie tuvo visibilidad del otro), exponer trade-offs que se declararon resueltos pero no lo están, y cuantificar deuda técnica latente. La conclusión de un agente individual puede ser correcta en su silo y aun así romper el sistema cuando se ensambla con los demás. Aquí reviso el ensamble.

Disclaimer anti-overclaiming. Los siete documentos son, individualmente, de calidad alta y poco común para una etapa pre-MVP. Esta crítica es deliberadamente adversarial: asume que el lector ya leyó las virtudes y necesita oír lo que falla. Ninguna observación invalida el proyecto; varias sí condicionan su viabilidad económica a escala.


0. Veredicto ejecutivo

DimensiónCalificaciónSíntesis
Coherencia inter-documentoB−Contradicciones reales en región AWS, tipo de tenancy, modelo de eventos y stack de BI.
Realismo del modelo de costosC+El costo de RDS a 5.000 tenants está subestimado por un factor ~2–3x; el costo de IA y de BI (Kafka/MSK) está ausente del modelo financiero.
Escalabilidad de Rails a 5.000 tenantsBDefendible, pero depende de mitigaciones (particionado, RDS Proxy, sharding) que se describen como "a futuro" sin disparador ni dueño.
Gestión de seguridad multi-tenantA−El pilar más sólido. Doble candado RLS+Pundit bien razonado. Un hueco operativo serio (sección 3.4).
Madurez del modelo de datos/BIB−Excelente diseño dimensional; pero introduce Kafka/MSK/Debezium que contradice la promesa de "deliberadamente aburrido" y el presupuesto de equipo.
Trade-offs no resueltos9 identificados (sección 4).

Bottom line: la arquitectura es vendible y técnicamente seria, pero está escrita por siete especialistas que no negociaron entre sí. El riesgo número uno no es técnico sino de gobierno: no existe un contrato de arquitectura único que reconcilie las decisiones contradictorias antes de escribir la primera línea de código. Este documento es el insumo para esa reconciliación.


1. Contradicciones inter-documento (hallazgo crítico)

Cuando siete agentes escriben en paralelo sin un ADR maestro, divergen. Estas divergencias no son matices de estilo: son decisiones de infraestructura incompatibles que costarían reescritura si se descubren en implementación.

#TemaDocumento A diceDocumento B diceSeveridadResolución requerida
C1Región AWS primariaDevOps (10): us-east-1 ("menor precio, latencia 90 ms aceptable"). Architect (07): "us-east-1 o sa-east-1, se evalúa sa-east-1".Ciberseguridad (13): sa-east-1 (São Paulo) preferida por residencia y argumento comercial.AltaEs una decisión de una sola vía. sa-east-1 cuesta ~20–40% más que us-east-1 y rompe el modelo de costos de DevOps. Hay que elegir UNA y recostear.
C2Nombre de la columna tenantArchitect (07), IA (11), Data (12), Ciberseguridad (13): tenant_id.Rails (08), DevOps (10): company_id.MediaTrivial de unificar en papel, pero si se filtra al esquema SQL y a las policies RLS, son migraciones y bugs. Fijar el nombre canónico HOY.
C3Tipo de dato de tenant_idIA (11) RLS de ejemplo: ::uuid (current_setting(...)::uuid).Rails (08) outbox y RLS: BIGINT (BIGSERIAL, ::bigint). Architect (07): ::bigint.AltaUUID vs BIGINT es una decisión de modelado fundamental (sharding, índices, tamaño). Mezclarlas garantiza fallos de cast en producción de RLS. Decidir: BIGINT para PK internas, UUID solo para identificadores expuestos.
C4Bus de eventosRails (08): EventBus con impl. Redis (dev) / SNS-EventBridge (prod).DevOps (10): diagrama muestra SNS/EventBridge. Data (12): Kafka/MSK para CDC.AltaHay potencialmente tres sistemas de mensajería (Redis/Sidekiq, SNS/EventBridge, Kafka/MSK). Nadie reconcilió si CDC-Kafka y el outbox-EventBridge coexisten o si uno absorbe al otro. Es costo y complejidad operativa duplicada.
C5OpenAPI vs GraphQLFrontend (09): tipos generados desde OpenAPI; "GraphQL pospuesto". Rails (08): "GraphQL pospuesto".DevOps (10): ALB describe "API REST/GraphQL", compute "render server-side mínimo".BajaDevOps arrastra terminología no alineada (también dice "render server-side" cuando Frontend es SPA pura). Limpiar el doc DevOps; no hay GraphQL ni SSR.
C6Stack de BIData (12): elige Debezium + Kafka/MSK + Redshift/DuckDB + dbt + Cube.Architect (07) y DevOps (10): el modelo de costos y la arquitectura de contenedores no incluyen Kafka, MSK, Debezium, Redshift ni Cube.AltaEl módulo BI propuesto por Data NO está costeado ni dibujado por DevOps. MSK + Redshift agregan fácilmente US$ 1.500–4.000/mes desde escala media. El modelo de margen >80% de DevOps ignora esto.
C7Modelo de tenancy enterpriseArchitect (07): Silo vía Rails connects_to (otra RDS).DevOps (10): Silo = "RDS + ECS service propios".Media¿El silo comparte el cluster ECS (más barato) o tiene ECS dedicado (más caro y aislado)? Definen cosas distintas. Impacta pricing del SKU enterprise.
C8Costo de IAIA (11): capa completa Bedrock + Vertex + OpenAI + Llama-en-VPC (GPU).DevOps (10): el modelo de costos no tiene una sola línea de IA (ni Bedrock, ni GPU para Llama, ni tokens).AltaLlama self-host en VPC requiere instancias GPU (g5/p4) que cuestan US$ 1.000–8.000+/mes encendidas. La IA se vende como diferenciador pero no aparece en el P&L de infra.

Conclusión de la sección: 8 contradicciones, 5 de severidad Alta. Antes de codificar se necesita una sesión de reconciliación de ADRs que produzca un único documento maestro de decisiones vinculantes. Sin esto, cada equipo construye sobre supuestos del vecino que no se cumplen.


2. Coherencia multi-tenant vs costos AWS vs seguridad (el triángulo central)

El producto vive o muere en el equilibrio de tres fuerzas que se tensionan entre sí. Los agentes optimizaron cada vértice por separado.

2.1 El triángulo

2.2 Coherencia de la decisión Shared Schema + RLS

Lo que está bien. Los tres documentos que tocan tenancy (07, 08, 13) convergen en Shared Schema + RLS + Silo-on-demand. Es la decisión correcta para un SaaS de PYMEs y está bien justificada (Salesforce/Shopify/Zoho como precedente, economía de escala, onboarding instantáneo). La defensa en profundidad (Pundit → default_scope → RLS) es de manual.

Lo que no se resolvió:

  1. Costo de RLS bajo carga real. RLS añade un predicado a cada query. En tablas particionadas y gigantes (kardex, asientos), el planner de PostgreSQL puede degradar si las policies no usan índices alineados con current_setting. Ningún documento midió el overhead de RLS ni definió un benchmark. A 5.000 tenants en una db.r6g.4xlarge, esto puede ser la diferencia entre p95 = 250 ms y p95 = 1.5 s.

  2. SET LOCAL y connection pooling. Rails (08) usa SET LOCAL app.current_company_id dentro de una transacción. Pero DevOps (10) impone RDS Proxy / PgBouncer desde 100 clientes. PgBouncer en modo transaction puede romper SET que no sea SET LOCAL, y RDS Proxy multiplexa conexiones de forma que una variable de sesión mal scopeada filtra contexto entre tenants. Este es el bug de seguridad más peligroso y más probable de toda la arquitectura, y ningún documento lo aborda. El uso de SET LOCAL (transaccional) lo mitiga, pero exige que toda query corra dentro de una transacción explícita — algo que Rails NO hace por defecto en lecturas. Es deuda técnica de seguridad latente.

  3. Particionado por tenant_id choca con power-law. Architect (07, S3) admite que el 5% de tenants genera el 50% de la carga. Particionar por LIST/HASH(tenant_id) con esa distribución crea particiones desbalanceadas: una partición con un tenant gigante y otras casi vacías. El particionado por tenant_id no resuelve noisy-neighbor para el tenant pesado dentro de su propia partición. La mitigación real para ese 5% es promoverlos a Silo, pero el disparador no está definido.

2.3 Costos AWS — auditoría del modelo de DevOps

El modelo de costos (10, §9) es el artefacto más concreto y por eso el más auditable. Mis objeciones:

LíneaCifra DevOps (5.000)ObjeciónCifra ajustada (estimada)
RDS PostgreSQLUS$ 4.200Una db.r6g.4xlarge Multi-AZ NO sostiene 5.000 tenants con RLS + particionado + 4 TB+. Realista: cluster sharded (3–4 instancias) o Aurora.US$ 8.000–12.000
Read ReplicasUS$ 2.100BI pesado + EEFF + Cube necesitan más de 3 réplicas a esa escala.US$ 3.000–4.500
Kafka/MSKUS$ 0 (ausente)El doc Data lo exige para CDC. MSK 3 brokers mínimo.US$ 1.200–2.500
Redshift/DWUS$ 0 (ausente)Data propone Redshift para tenants grandes.US$ 1.500–4.000
IA (Bedrock/tokens)US$ 0 (ausente)Copilot + forecast + OCR a 5.000 tenants.US$ 3.000–15.000 (muy variable)
Llama VPC (GPU)US$ 0 (ausente)g5.xlarge+ encendida 24/7 para datos sensibles.US$ 1.000–6.000
Cube/semantic layerUS$ 0 (ausente)Servicio ECS adicional.US$ 300–800

Costo total realista a 5.000 tenants: no ~US$ 20.600/mes sino, con BI + IA completos, US$ 35.000–60.000/mes. El "costo por cliente ~US$ 4,1" se convierte en US$ 7–12. Sigue siendo un margen sano si el pricing es US$ 25–40/cliente, pero el margen >80% es optimista; el realista es 65–75% una vez que se costean los diferenciadores (IA, BI) que el equipo de producto va a vender.

Recomendación: el modelo de costos debe ser un solo artefacto consolidado que incluya las líneas de IA y BI, no tres modelos parciales. El P&L del agente de Finanzas debe usar el ajustado, no el optimista.

2.4 Seguridad — el pilar más fuerte, con un hueco

Ciberseguridad (13) es el mejor documento del set: RBAC+ABAC, SoD codificado, audit log con hash chain + WORM, STRIDE, OWASP, readiness SOC2/ISO. Hueco operativo crítico: el equipo de seguridad declarado es "0 dedicados → 1 Security Engineer" (S5) para sostener SOC 2 Type II, ISO 27001, pentest anual, bug bounty, DPA con subprocesadores, flujos ARCO, DLP y respuesta a incidentes. Eso es trabajo de un equipo de 3–4, no de 1. La ambición de compliance está sub-presupuestada en personas, no en controles. Es coherente con el doc de Finanzas solo si se contempla outsourcing (vCISO + plataforma Vanta/Drata), lo cual hay que hacer explícito.


3. Escalabilidad de Rails a 5.000 tenants

3.1 ¿Es defendible? Sí, con condiciones

Rails como modular monolith con YJIT, Fargate stateless y RDS Proxy escala horizontalmente sin techo en compute. El cuello de botella es siempre la base de datos única, y aquí los documentos son honestos pero difieren las soluciones a un "futuro" sin dueño:

Vector de escalaEstado en los docsCrítica
Conexiones DBRDS Proxy "desde 100 clientes" (10)Correcto, pero ver §2.2.2: RDS Proxy + SET de tenant es un riesgo de aislamiento no resuelto.
Particionado"desde MVP" (07, ADR-04)Bien, pero desbalanceo por power-law no resuelto (§2.2.3).
Sharding por cohorte"a 5.000+" (07, 10)Sin disparador, sin diseño, sin dueño. "A futuro" es donde mueren los proyectos. Falta un ADR de sharding con métrica gatillo (ej. >70% CPU sostenido en RDS escalada al máximo).
Aurora"a evaluar en escala" (07, 10)Decisión diferida razonable, pero Aurora Serverless v2 cambia el modelo de costos completo; debería pre-modelarse.
Migraciones onlinestrong_migrations (08)Bien. Pero a 5.000 tenants en shared schema, un backfill de columna sobre una tabla particionada de cientos de millones de filas es una operación de horas; falta runbook.

3.2 El verdadero límite: el "noisy migration"

El argumento estrella de Shared Schema vs Separate Schema es "una sola migración" (07, §3.3). Cierto. Pero a escala, esa única migración corre sobre tablas compartidas de cientos de millones de filas. Un add_index o un backfill bloquea o consume IOPS que afectan a los 5.000 tenants simultáneamente. Separate Schema reparte el dolor; Shared Schema lo concentra. El doc vende la simplicidad sin cuantificar que la migración pasa de "trivial" a "evento de mantenimiento planificado con riesgo para todos". Deuda técnica: falta una estrategia de migraciones por lotes con pt-online-schema-change/gh-ost-equivalente para Postgres (ej. pg-osc) desde el día 1.

3.3 Outbox relay como single point of contention

Rails (08) centraliza TODO en el outbox: eventos de dominio, webhooks, y (implícitamente) alimenta a BI. Data (12) en cambio usa CDC/Debezium que lee el WAL, NO el outbox. Hay dos mecanismos de captura de cambios compitiendo: outbox (08) y CDC (12). Si BI usa CDC, el "outbox como changelog para BI" (08, O1) es redundante. Si BI usa outbox, Debezium/Kafka sobra. Nadie eligió. Esto es a la vez una contradicción (C4/C6) y un riesgo de escalabilidad: dos pipelines de eventos doblan la carga sobre el WAL y el costo operativo.


4. Trade-offs declarados como resueltos que NO lo están

#Trade-offCómo se presentóPor qué sigue abierto
T1Shared Schema simplifica migraciones"Una migración, un backup" (07)A escala la migración afecta a todos a la vez; backup/restore selectivo por tenant es "difícil" (el propio doc lo admite) y la Ley 29733 exige export/delete por tenant. La simplicidad se paga después.
T2RLS garantiza aislamiento"garantizado por el motor" (07, 13)Solo si SET LOCAL corre en transacción y el pooler no multiplexa contexto. Con RDS Proxy esto NO está garantizado por defecto (§2.2.2).
T3SPA Vite "no necesita SSR""todo tras login" (09)Cierto para la app, pero pierde server-side rendering para enlaces de comprobantes públicos (un cliente abre el PDF/portal de su factura sin login). Falta definir si hay superficie pública.
T4Fargate Spot para workers"ahorra 60%" (10)Spot puede ser interrumpido. Sidekiq procesando emisión de CPE o asientos en una tarea Spot interrumpida = job a medias. Mitigable con idempotencia (que sí existe), pero el doc no garantiza que la cola critical esté en On-Demand, no en Spot. Riesgo fiscal.
T5"Stack deliberadamente aburrido"Architect (07)Data (12) introduce Kafka, Debezium, Redshift, dbt, Cube, Iceberg — el stack MÁS exótico del set, operado por un equipo de 4–6. Contradice el principio rector.
T6Multi-modelo de IA evita lock-inIA (11)Sí evita lock-in de LLM, pero crea dependencia operativa de 4 proveedores (Bedrock+Vertex+OpenAI+self-host GPU). Más superficie, más costo fijo, más cosas que monitorear. El lock-in se cambió por complejidad.
T7"Margen infra >80%"DevOps (10)Solo si IA y BI no se cuentan. Con ellos, 65–75% (§2.3).
T8Silo on-demand "sin reescribir nada""gracias a Rails multiple databases" (07)connects_to/connected_to funciona, pero migrar un tenant existente de shared a silo (mover sus datos, mantener FKs, cero downtime) es un proyecto de ingeniería que ningún doc diseñó. "Sin reescribir código" ≠ "sin esfuerzo de migración de datos".
T9Cifrado por-tenant (BYOK) descartado por costoCiberseguridad (13)Razonable para MVP, pero se vende "soberanía de datos" (IA 11, Architect O1) como diferenciador enterprise. Soberanía real suele exigir BYOK. El upsell promete algo que el cifrado compartido no entrega del todo.

5. Riesgos técnicos consolidados (cross-cutting)

Riesgos que ningún documento individual ve porque emergen del ensamble:

IDRiesgo emergenteOrigenSeveridadMitigación recomendada
RT1Fuga cross-tenant vía connection pooler (RDS Proxy multiplexa contexto de SET)08 + 10CríticaMandato: toda query en transacción con SET LOCAL; test de aislamiento que corra a través del pooler, no solo contra Postgres directo; considerar app.current_tenant por SET validado tras cada checkout de conexión.
RT2Costo real 2–3x el presupuestado por IA+BI ausentes del modelo10 vs 11,12AltaModelo de costos consolidado único; gate de FinOps antes de activar BI/IA en prod.
RT3Doble pipeline de eventos (outbox + CDC) duplica carga WAL y ops08 vs 12AltaElegir UNO: outbox→EventBridge para integración, CDC→BI; o CDC para ambos. ADR vinculante.
RT4Tres sistemas de mensajería (Sidekiq/Redis, SNS/EventBridge, Kafka/MSK)08,10,12AltaJustificar cada uno o colapsar. MSK solo si CDC es indispensable en Fase 2+, no MVP.
RT5Migración a escala bloquea a los 5.000 tenants simultáneamente07,08Altapg-osc/expand-contract estricto + ventana + runbook desde día 1.
RT6Spot interrumpe jobs fiscales10Media-AltaCola critical SIEMPRE On-Demand; solo reports/ai en Spot.
RT7Sharding sin disparador ni dueño = se descubre en crisis07,10AltaADR de sharding con métrica gatillo y RACI antes de 1.000 tenants.
RT8Equipo de 4–6 opera stack de 15+ servicios gestionadostodosAltaReducir superficie en MVP (sin MSK/Redshift/Llama-VPC); contratar SRE antes de 500 tenants.
RT9Compliance SOC2/ISO con 1 Security Engineer13Media-AltavCISO + Vanta/Drata; presupuestar en P&L.
RT10tenant_id UUID vs BIGINT inconsistente rompe RLS en runtime08,11MediaDecidir tipo canónico antes de la primera migración.

6. Deuda técnica latente (que se contrae el día 1 si no se actúa)

  1. Ausencia de un ADR maestro. Siete documentos, cero contrato unificado. La primera deuda es de gobierno, no de código.
  2. Tipo y nombre de tenant_id sin fijar (C2, C3). Cambiarlo después es una migración global.
  3. Pooler + RLS sin probar juntos (RT1). Si se descubre tras 500 tenants, es incidente de seguridad reportable.
  4. Estrategia de migración a escala inexistente. Se asume "rails db:migrate" eterno.
  5. Pipeline de eventos no decidido (outbox vs CDC). Construir ambos es deuda doble.
  6. Backup/restore por tenant. Shared Schema lo hace difícil; la Ley 29733 lo exige. Se menciona pero no se diseña.
  7. Promoción shared→silo sin diseño de migración de datos (T8).
  8. Observabilidad de IA y costos por tenant (medidor de tokens) está en IA (11) pero no integrado al CloudWatch/X-Ray de DevOps (10).
  9. Contrato OpenAPI como fuente de verdad (09) depende de que Rails (08) lo publique disciplinadamente; ningún doc define quién es dueño del spec ni el proceso de breaking changes.

7. Oportunidades técnicas (lo que el ensamble habilita y nadie capitalizó del todo)

#OportunidadPor qué es realAcción
OP1Outbox como única fuente de eventos elimina MSK/Debezium en MVPEl outbox transaccional (08) ya captura cambios; un consumidor puede alimentar BI sin Kafka hasta escala media.Diferir CDC/Kafka a Fase 3; ahorra US$ 1.500–2.500/mes y enorme complejidad operativa temprana.
OP2Tier "Soberanía" (Silo + BYOK + Llama-VPC) como SKU premium realTres docs lo insinúan (07,11,13); juntos forman un paquete enterprise diferenciado vs Defontana/StarSoft.Empaquetarlo formalmente con pricing que cubra GPU + RDS dedicada + KMS BYOK.
OP3Capa semántica (Cube) como contrato único de KPIs sirve a BI y a IA (NL2SQL)Data (12) ya lo propone; IA (11) puede consumirlo en vez de tools SQL ad-hoc → menos alucinación, una sola verdad.Unificar: la IA habla con Cube, no con tools que repliquen lógica de KPI.
OP4Tests de aislamiento cross-tenant en CI como activo de ventaCiberseguridad (13) ya los exige; convertirlos en evidencia auditable acelera SOC 2.Reportar cobertura de aislamiento como métrica de compliance.
OP5Graviton + Savings Plans + Spot selectivo ya están bien; falta FinOps por tenantEl medidor de costo de IA por tenant (11) puede extenderse a costo de infra por tenant.Dashboard de margen por tenant → identifica candidatos a silo o a upsell.

8. Recomendaciones consolidadas y priorizadas

8.1 Bloqueantes antes de escribir código (Semana 0–2)

  1. Sesión de reconciliación de ADRs. Producir un único ADR-MASTER.md que resuelva C1–C8. Decisiones vinculantes: región (una), nombre y tipo de tenant_id, bus de eventos (uno), stack de BI (fasing real), modelo de costos consolidado.
  2. Resolver RT1 (pooler + RLS). Diseñar y probar el mecanismo de SET LOCAL a través de RDS Proxy/PgBouncer. Sin esto validado, la promesa de aislamiento es papel. Es el riesgo de seguridad más alto del proyecto.
  3. Fijar tipo de tenant_id (recomendación: BIGINT interno + UUID público) y nombre canónico (recomendación: tenant_id, no company_id).

8.2 Antes del MVP (Mes 1–3)

  1. Reducir superficie operativa del MVP. Diferir MSK, Debezium, Redshift, Cube y Llama-VPC. MVP de BI = batch nocturno con dbt + DuckDB/S3 (como el propio Data admite en su fasing). MVP de IA = Bedrock managed (Claude/Haiku), sin self-host GPU.
  2. Cola critical en On-Demand, no Spot. Política explícita en Terraform.
  3. Estrategia de migración a escala (expand/contract + pg-osc + runbook) desde la primera tabla.
  4. Modelo de costos consolidado que incluya IA y BI, entregado al agente de Finanzas para recalcular margen (esperar 65–75%, no >80%).

8.3 Antes de 500–1.000 tenants (Mes 6–12)

  1. ADR de sharding con métrica gatillo y dueño (RACI). No "a futuro".
  2. Diseño de promoción shared→silo incluyendo migración de datos con cero downtime.
  3. Contratar SRE dedicado y formalizar seguridad (vCISO + Vanta/Drata) — el equipo de 4–6 no sostiene el stack a esa escala.
  4. Decidir CDC sí/no según necesidad real de latencia BI (<5 min). Si el batch satisface, no introducir Kafka jamás.

8.4 Tabla RACI mínima propuesta

Decisión pendienteResponsable (R)Aprobador (A)Plazo
ADR maestro / reconciliaciónSolution ArchitectCTOSemana 2
Pooler + RLS validadoRails Eng + CiberseguridadSolution ArchitectSemana 4
Tipo/nombre tenant_idRails EngSolution ArchitectSemana 1
Modelo de costos consolidadoDevOpsFinanzas/CTOSemana 3
Fasing real de BI/IAData + IACTOMes 1
ADR de shardingSolution ArchitectCTOAntes de 500 tenants

9. Conclusión

Los siete documentos técnicos de ConTodo son, individualmente, de calidad superior y reflejan criterio senior real: la decisión de tenancy está bien razonada, la seguridad es el pilar más sólido, y el modelo de datos dimensional es de manual. El proyecto es técnicamente viable y comercialmente diferenciable.

El problema no está en las piezas sino en el ensamble. Escritos en paralelo sin un contrato maestro, los agentes contradicen entre sí la región AWS, el tipo de tenancy enterprise, el nombre y tipo de la clave de tenant, el bus de eventos y el stack de BI. Más grave: el modelo de costos omite IA y BI —precisamente los diferenciadores que el negocio va a vender—, lo que infla el margen prometido de >80% a un realista 65–75% y subestima el costo a 5.000 tenants en un factor de ~2–3x. Y existe un riesgo de aislamiento cross-tenant no resuelto en la intersección de RDS Proxy y las variables de sesión de RLS que, de materializarse en producción, sería un evento de extinción de marca para un ERP contable.

La recomendación central es una sola: antes de escribir código, sentar a los siete agentes en una sesión de reconciliación que produzca un ADR maestro vinculante, valide el binomio pooler+RLS, y consolide un único modelo de costos. La arquitectura está a una semana de gobierno de ser excelente; sin ese gobierno, está a varios meses de reescritura de descubrir sus contradicciones en producción.