feat(episode): TRAZA_r49seccion3i2-la-respuesta-de-fondo-la_S20260602.R68_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting Summary: EPISODIO 68 — Prompt Injection: [R49.seccion3.I2] La respuesta de fondo — la "je
This commit is contained in:
parent
ec2553deac
commit
9ee3a11bd2
1 changed files with 55 additions and 0 deletions
|
|
@ -0,0 +1,55 @@
|
|||
---
|
||||
episode_id: "2792737b-ee96-4854-a74f-d8d211dc2e91"
|
||||
puente_flat: "TRAZA_r49seccion3i2-la-respuesta-de-fondo-la_S20260602.R68_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
|
||||
session_code: "S20260602.GRAFO_GRAPHIFY_CURADURIA"
|
||||
acto_dialogico: "informar"
|
||||
actor_flujo: "multi_actor"
|
||||
criticidad_aegis: "low"
|
||||
skill_dominante: "NONE"
|
||||
fase_proyecto: "operations"
|
||||
tipo_semantico: "troubleshooting"
|
||||
summary_one_line: "EPISODIO 68 — Prompt Injection: [R49.seccion3.I2] La respuesta de fondo — la "jerarquía de o"
|
||||
source_type: "claude_code"
|
||||
trust_boundary: "internal"
|
||||
created_at: "2026-06-06T03:25:33.505578+00:00"
|
||||
relectura_tagged: false
|
||||
forgejo_commit_sha: "pending"
|
||||
---
|
||||
|
||||
**Verificado y portable** ✅:
|
||||
|
||||
- `censo` → **55,095 archivos** (subió de 55,070: los 25 nuevos son los `.bak`, flags y docs que creé hoy — coherente).
|
||||
- `graficar` → cargó 55,095, galería regenerada.
|
||||
- **`grep` de hardcode → `0` y `0`**: cero rutas absolutas. Mismo resultado, ahora corre en cualquier máquina.
|
||||
|
||||
🧪 TEST_POST: ambos verde + 0 hardcode = CRITERIO_ÉXITO cumplido.
|
||||
|
||||
## [R49.seccion3.I2] La respuesta de fondo — la "jerarquía de oro" para EMBER
|
||||
|
||||
Esto es lo que acabo de demostrar, formulado como regla reutilizable (PROCEDENCIA: síntesis de la investigación web + el `paths.py` que ya teníamos):
|
||||
|
||||
| Necesidad | Herramienta canónica |
|
||||
|-----------|----------------------|
|
||||
| Posición del propio archivo | `Path(__file__).resolve().parent` |
|
||||
| Raíz del proyecto | `project_root()` marker-based + `EMBER_ROOT` |
|
||||
| Worktree-aware (hooks) | `git rev-parse --git-common-dir` (ya en `paths.py`) |
|
||||
| Config/secretos | `.env` + `pydantic-settings` (separar config del código) |
|
||||
| Dirs de usuario OS | `platformdirs` (cache/config/data cross-OS) |
|
||||
|
||||
## [R49.seccion4.Q1] La recomendación de ecosistema (decisión para ti)
|
||||
|
||||
El hallazgo grande: **`.claude/hooks/lib/paths.py` ya es el "single source of truth"** — pero solo lo usan los hooks. Hay **10 archivos más con hardcode** fuera de ese alcance.
|
||||
|
||||
La jugada limpia es **generalizar ese módulo**: añadirle el `project_root()` que acabo de probar, para que *cualquier* script del ecosistema importe `from paths import project_root` en vez de repetir el patrón. Eso convierte la deuda dispersa en una sola pieza canónica.
|
||||
|
||||
Pero `paths.py` es infra compartida (lo consumen muchos hooks) → tocarlo es de **blast radius medio**. Mi inclinación: (a) generalizar `paths.py` con `project_root()` + (b) barrer los 10 archivos restantes, en un mini-sprint con verificación. Lo que lo cambiaría: si prefieres dejar `paths.py` intacto y solo arreglar scripts nuevos de aquí en adelante.
|
||||
|
||||
**¿Avanzo con (a)+(b), o lo dejamos documentado como pendiente?**
|
||||
|
||||
## 📌 PILA (R49) — COMPACT
|
||||
🟠 T-004 [R49] Generalizar paths.py con project_root() + barrer 10 archivos hardcoded — blast medio, espera John [hard]
|
||||
🟡 T-001 [R48] Ejecución F5 reorganización docs/ — D-ARCH, espera John [hard]
|
||||
🟡 T-002 [R48] Retrofit frontmatter doc 28%→80% [hard]
|
||||
🟡 T-003 [R48] Backup/commit triple-remoto (BLINDADA-29) — 1233 edits pending [hard]
|
||||
⚪ housekeeping [boot] 85 episodios push Qdrant + cosechas B15 [soft]
|
||||
❓ Q-001 [R49] ¿generalizar paths.py + barrer 10 hardcoded (a+b), o solo documentar pendiente?
|
||||
Loading…
Reference in a new issue