feat(episode): TRAZA_por-qu-casbin-va-en-una-hook-y-no-en-149_S20260519.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting Summary: EPISODIO 1 — BLINDADAS: Por qué Casbin va en una hook y no en 149 — explicación
This commit is contained in:
parent
c271a42ff4
commit
e6fc3c3eb4
1 changed files with 48 additions and 0 deletions
|
|
@ -0,0 +1,48 @@
|
|||
---
|
||||
episode_id: "72fb6ff4-f188-4dda-af82-cd41208c5956"
|
||||
puente_flat: "TRAZA_por-qu-casbin-va-en-una-hook-y-no-en-149_S20260519.R1_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: "troubleshooting"
|
||||
summary_one_line: "EPISODIO 1 — BLINDADAS: Por qué Casbin va en una hook y no en 149 — explicación de m"
|
||||
source_type: "claude_code"
|
||||
trust_boundary: "internal"
|
||||
created_at: "2026-05-19T14:07:23.134944+00:00"
|
||||
relectura_tagged: false
|
||||
forgejo_commit_sha: "pending"
|
||||
---
|
||||
|
||||
John, dos resultados antes de explicarte — y el primero exige honestidad inmediata:
|
||||
|
||||
**El skill PLASTILINA no se pudo cargar.** Invoqué el `Skill` tool y devolvió `Unknown skill: anthropic-skills:plastilina`. PLASTILINA está en el catálogo EMBER (skill #48) pero **no** está en el registro de skills cargables de este entorno Claude Code. No te voy a fingir que lo usé. Te explico honrando su *espíritu* — pedagógico, tangible, con la paleta cromática como escala didáctica — sin su andamiaje formal. Si quieres la versión con sus módulos, dime y busco `skills/plastilina/CLAUDE.md` como archivo.
|
||||
|
||||
**El `Grep` ancló el dato clave:** de las ~149 hooks, **22 archivos** contienen `permissionDecision` (≈20 hooks reales + 2 de test). Ese campo es la firma de una hook que decide *allow/deny*. Guarda ese número: **~20**, no 149.
|
||||
|
||||
—
|
||||
|
||||
# Por qué Casbin va en una hook y no en 149 — explicación de maestro
|
||||
|
||||
## 1. Qué es Casbin, en plastilina
|
||||
|
||||
Casbin es un **motor de políticas**. Su único oficio: recibe un input y responde **"permitido" o "denegado"** consultando un reglamento escrito (`policies/`).
|
||||
|
||||
> 🧱 **Analogía tangible:** Casbin es un **guardia de puerta con un reglamento**. Un guardia solo sirve donde **hay una puerta que controlar**. No pones un guardia frente a la fotocopiadora, ni frente al reloj de pared, ni frente al archivador. Solo en las **puertas**.
|
||||
|
||||
La pregunta correcta no es *"¿cuántas hooks?"* — es *"¿cuántas hooks son puertas?"*.
|
||||
|
||||
## 2. Las 149 hooks NO son todas puertas — la taxonomía
|
||||
|
||||
Una hook es un programita que se dispara ante un evento (antes de un Bash, después de un Write, al arrancar sesión…). Pero hacen **trabajos distintos**. Uso la paleta como gradiente de *"qué tanto encaja Casbin"*:
|
||||
|
||||
| Color | Tipo de hook | Qué hace | ¿Casbin? |
|
||||
|---|---|---|---|
|
||||
| 🔴 Rojo | **Compuerta rica en reglas** | decide allow/deny con *muchos* patrones | **SÍ — encaja fuerte** |
|
||||
| 🟠 Naranja | **Compuerta simple** | decide allow/deny con 1-3 reglas | Sí, ganancia media |
|
||||
| 🟡 Amarillo | **Compuerta trivial** | decide con *una* condición (`if`) | Casbin sería *overkill* |
|
||||
| 🟢 Verde | **Computación / inyección** | calcula algo e inyecta contexto (self-awareness, alquimia, panel-analítico) | **NO — no decide allow/deny** |
|
||||
| 🔵 Azul | **Registro / telemetría** | loguea, cuenta, agrega (activity-logger, compass-telemetry) | NO |
|
||||
| 🟣 Violeta | **Efecto secundario** | regenera mapas, sincroniza servidor, recuerda (bitacora-auto, server-sync, correos) | **NO — totalmente irrelevante** |
|
||||
Loading…
Reference in a new issue