feat(episode): TRAZA_r3seccion1i1-por-qu-tus-25-subagentes-so_S20260719.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: [R3.seccion1.I1] Por qué tus 25 subagentes son ci
This commit is contained in:
parent
4b247c0e26
commit
366ba71d41
1 changed files with 48 additions and 0 deletions
|
|
@ -0,0 +1,48 @@
|
||||||
|
---
|
||||||
|
episode_id: "000230d9-dc1e-4eca-83df-2f5300583780"
|
||||||
|
puente_flat: "TRAZA_r3seccion1i1-por-qu-tus-25-subagentes-so_S20260719.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
|
||||||
|
session_code: "S20260719.ORACULO_RETRIEVAL_X09"
|
||||||
|
acto_dialogico: "informar"
|
||||||
|
actor_flujo: "multi_actor"
|
||||||
|
criticidad_aegis: "low"
|
||||||
|
skill_dominante: "NONE"
|
||||||
|
fase_proyecto: "operations"
|
||||||
|
tipo_semantico: "troubleshooting"
|
||||||
|
summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: [R3.seccion1.I1] Por qué tus 25 subagentes son ciegos — caus"
|
||||||
|
source_type: "claude_code"
|
||||||
|
trust_boundary: "internal"
|
||||||
|
created_at: "2026-07-20T03:34:18.083204+00:00"
|
||||||
|
relectura_tagged: false
|
||||||
|
forgejo_commit_sha: "pending"
|
||||||
|
---
|
||||||
|
|
||||||
|
El primer agente entregó un hallazgo de peso: **encontró la causa raíz de tu dimensión más débil**, y es un bug concreto y arreglable.
|
||||||
|
|
||||||
|
## [R3.seccion1.I1] Por qué tus 25 subagentes son ciegos — causa raíz encontrada
|
||||||
|
|
||||||
|
La nota de la rúbrica (`agentes_con_telemetria = 1/23`) es **cierta hoy**, verificada en disco. Pero la causa no es la que parecía. No falta el escritor de telemetría: **existe y está vivo**.
|
||||||
|
|
||||||
|
`mega-hook-subagent-telemetry.py` está registrado como `PostToolUse` con `matcher="Task"` y sí dispara. El problema está en una línea:
|
||||||
|
|
||||||
|
> El hook saca la identidad del agente con `tool_input.get("subagent_type")` (línea 110). Ese campo **llega vacío**. Al no encontrarlo, devuelve `"unknown"` (línea 112) y vuelca el registro a `unknown_telemetry.jsonl` en vez de a `<agente>_telemetry.jsonl`.
|
||||||
|
|
||||||
|
Resultado: desde el 13 de junio, **todos los registros son anónimos**. Los tres últimos (13-jun, 27-jun, 3-jul) tienen `subagent_name="unknown"`, `task_description=""`, `prompt_chars=0`.
|
||||||
|
|
||||||
|
★ Insight ─────────────────────────────────────
|
||||||
|
**Esto es exactamente la patología que BLINDADA-30 nombra (IV-1).** El hook *corre* — si preguntas "¿está vivo el sensor?", la respuesta es sí. Pero no *mide el hecho*: produce filas vacías. Verificar que un instrumento se ejecuta no es verificarlo; hay que verificar que dice la verdad. Un sensor que escribe "unknown" 3 veces se ve idéntico, desde fuera, a uno sano con poco tráfico.
|
||||||
|
─────────────────────────────────────────────────
|
||||||
|
|
||||||
|
**El efecto dominó aguas abajo:** `telemetry-watcher` está diseñado para detectar patrones con N≥30 registros. El corpus histórico completo tiene **13 filas** (general-purpose 9, code-explorer 1, unknown 3). Está condenado a devolver `INSUFFICIENT_TELEMETRY` por construcción — no por fallo suyo, sino porque su fuente de alimento nunca se llenó.
|
||||||
|
|
||||||
|
## [R3.seccion2.I2] El detalle que más me llamó la atención
|
||||||
|
|
||||||
|
El cruce declarado-vs-verificado sobre los 23 cuerpos de subagente dio esto:
|
||||||
|
|
||||||
|
| Situación | Cuántos | Cuáles |
|
||||||
|
|---|---|---|
|
||||||
|
| Declara telemetría **y** la tiene viva | **0** | — |
|
||||||
|
| Declara pero el archivo no existe | 1 | `loop-auditor` |
|
||||||
|
| Tiene archivo pero no la declara | 1 | `code-explorer` (la escribió el hook) |
|
||||||
|
| Ni declara ni tiene | 21 | el resto |
|
||||||
|
|
||||||
|
Cero. El único que cumple la doctrina en el papel (`loop-auditor`, con su sección `## Telemetry` y su ruta concreta) no tiene archivo — **porque nunca se ha ejecutado ni una vez**.
|
||||||
Loading…
Reference in a new issue