feat(episode): TRAZA_3-correccin-de-un-modelo-mental_S20260519.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: chronicle
Summary: EPISODIO 2 — BLINDADAS: 3. Corrección de un modelo mental
This commit is contained in:
Ember 2026-05-19 14:08:48 +00:00
parent ca55aaf604
commit 61b3e06850

View file

@ -0,0 +1,41 @@
---
episode_id: "917a28a6-1dc3-411a-82c6-c49ed5471578"
puente_flat: "TRAZA_3-correccin-de-un-modelo-mental_S20260519.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260519.COMMIT_MASIVO_PRESERVACION"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "chronicle"
summary_one_line: "EPISODIO 2 — BLINDADAS: 3. Corrección de un modelo mental"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-05-19T14:07:23.761036+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
De las ~149, **solo ~20 son puertas** (verde→violeta = ~129 hooks que *no deciden nada que autorizar*). Meter Casbin en `activity-logger.py` es ponerle un reglamento de autorización a la fotocopiadora: **no tiene a quién decirle "no"**.
## 3. Corrección de un modelo mental
Dijiste *"reescribir todas las hooks para que **contengan** la información de Casbin"*. Ahí hay un matiz importante:
> 🧱 Las hooks **no "contienen" Casbin**. Existe **un solo** almacén central de políticas (`policies/`), y las hooks-compuerta lo **consultan**. La hook queda **delgada** — es un *punto de aplicación* (PEP); Casbin + `policies/` son el *punto de decisión* (PDP).
Incluso en un rollout total, nunca "reescribes 149 hooks con Casbin dentro". Conviertes **un puñado de puertas** en consultoras delgadas de un reglamento central. Las otras ~129 ni se tocan.
## 4. Por qué hicimos UNA sola — fue un PILOTO, por diseño
Esto **no fue un descuido** — el plan lo decidió así. `PLAN_IMPLEMENTACION_CASBIN` eligió explícitamente `mega-hook-ssh.py` como **"dominio piloto, acotado, de alto valor"**. Ingeniería sensata: pruebas el enfoque en *un* dominio bien delimitado **antes** de comprometerte a un rollout. Y la Fase 5 *literal* del plan dice textualmente: *"migrar los **demás** dominios, uno a uno"*. O sea: el plan **siempre** previó que habría más — gradual, después del piloto.
## 5. Las inconsistencias que hueles — sí existen, te las reconozco
Tu instinto es correcto. Hay tres, y la primera es **mía**:
**🔴 Inconsistencia 1 — mi naming engañoso.** Yo dije *"Fase 5 completa"* y *"sprint Casbin content-complete"*. Eso suena a *"la migración Casbin está terminada"*. **No lo está.** Completamos la **integración piloto en una hook**. La Fase 5 *literal* del plan ("los demás dominios") está **intacta**. Debí decir *"piloto completo"*, no *"Fase 5 completa"*. Es un error de comunicación mío — lo corrijo aquí.
**🟠 Inconsistencia 2 — el ecosistema quedó mixto.** Ahora 1 hook-compuerta usa el motor declarativo; las otras ~19 siguen con lógica hardcodeada. Eso *es* una inconsistencia. Es el estado **esperado** de un piloto (deliberadamente parcial), pero sigue siendo inconsistencia hasta que se resuelva.
**🟡 Inconsistencia 3 — `policies/` "constitución ejecutable" al ~5%.** El plan vendió `policies/` como *"la constitución ejecutable de EMBER"* — el lugar único de **todas** las políticas. Hoy tiene **un** dominio (SSH authz). Es una constitución con una sola ley. La visión grande está sin realizar.