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:
parent
ca55aaf604
commit
61b3e06850
1 changed files with 41 additions and 0 deletions
|
|
@ -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.
|
||||
Loading…
Reference in a new issue