| # PAMPAr-Coder — Roadmap | |
| > Plan de evolución. Última actualización: Mar 2026. | |
| > Para la identidad del modelo ver `CONCIENCIA.md`. Para el protocolo de despliegue ver `AGENTS.md`. | |
| --- | |
| ## 1. Visión | |
| PAMPAr es un **físico con doctorado** que puede especializarse en cualquier campo: | |
| - El **doctorado** (razonamiento computacional) está en los **pesos** — 108M params. | |
| - La **especialización** viene del **entorno** — se descubre al boot con el Scanner. | |
| - El protocolo de 3 archivos (`CONCIENCIA.md` + `AGENTS.md` + `TOOLS.md`) es la interfaz entre el modelo y su despliegue. | |
| ### Las 3 fases del proyecto | |
| | Fase | Qué | Estado | | |
| | -------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------- | | |
| | **Fase 1** — SFT | Entrenar el doctorado: lógica Python, patrones, razonamiento | **✅ Completa** (16/16 con reparadores, target superado) | | |
| | **Fase 2** — Runtime loop | El modelo usa herramientas, ejecuta, lee, aprende del loop | **✅ Completa** (chat.py + ColaFinetune + mini-SFT wiring) | | |
| | **Fase 3** — Protocolo entrenado | El modelo genera su propio AGENTS.md al aterrizar en un sistema nuevo | Futuro | | |
| --- | |
| ## 2. Arquitectura actual — PamparV3 | |
| ### 2.1 Grilla cortical 2D | |
| ``` | |
| Tokens (int) | |
| │ | |
| ▼ | |
| [Embeddings] 48K vocab, dim=640, weight-tied con lm_head | |
| │ | |
| ▼ | |
| ┌─────────────────────────────┐ | |
| │ TalamoInicial │ routing: qué streams procesan cada token | |
| │ 80% LLAVES (INT8 + reglas) │ | |
| │ 20% attn_proj (aprendido) │ | |
| │ + context_conv causal k=32 │ | |
| └────────────┬────────────────┘ | |
| │ [B, L, 4, dim] — 4 streams con pesos distintos | |
| ▼ | |
| ┌──────────────────────────────────────────────┐ | |
| │ 5 × NivelProfundo │ | |
| │ TalamoNivel → 4× BloqueAttn GQA 4:1 │ | |
| │ → 4× StreamFFN SwiGLU → LateralGate │ | |
| │ → Early Exit (umbral 0.90) │ | |
| └──────────────────────────────────────────────┘ | |
| │ | |
| ▼ | |
| RMSNorm + lm_head → logits [B, L, 48000] | |
| ``` | |
| ### 2.2 Streams ↔ Capas lingüísticas | |
| | Stream | Territorio | Zonas | Capa lingüística | | |
| | ------ | ----------- | ------- | --------------------------------- | | |
| | 0 | SINTAXIS | B01-B15 | Sintaxis — estructura del código | | |
| | 1 | SEMANTICA | B16-B30 | Semántica — significado | | |
| | 2 | LOGICO | B31-B42 | Pragmática — intención, flujo | | |
| | 3 | ESTRUCTURAL | B43-B52 | Discurso — organización, patrones | | |
| Los 4 streams procesan en paralelo. Cada NivelProfundo tiene Lateral Gates (bottleneck=128) para comunicación entre streams — como las fibras blancas del cerebro. | |
| ### 2.3 Boot Protocol | |
| ``` | |
| 1. CONCIENCIA.md → RAG L3 (identidad inmutable) | |
| 2. Scanner → workspace (ast), paquetes (importlib), servicios (socket), sistema (platform) | |
| 3. AGENTS.md contextual → RAG L2 (entorno mutable) | |
| 4. System prompt dinámico = identidad + contexto + acciones | |
| ``` | |
| Implementado en `pampar.runtime.scanner` + `pampar.runtime.boot`. | |
| --- | |
| ## 3. Estado de checkpoints | |
| | Checkpoint | Datos | Eval open (temp=0.0) | | |
| | -------------- | --------------------------------------------- | -------------------- | | |
| | `v3_sft.pt` | 43K Magicoder (inglés) | 0/16 | | |
| | `v3_sft_v5.pt` | SFT v5 (base post-catastrófico) | 6/16 | | |
| | `v3_sft_v6.pt` | clean_sft.jsonl (555 ejemplos) | 10/16 | | |
| | `v3_sft_v7.pt` | final_sft.jsonl (825 = clean + quirúrgico×3) | 15/16 | | |
| | `v3_sft_v8.pt` | micro-SFT cuadrados (300 steps + reparadores) | **16/16 ✅ BEST** | | |
| ### Estado actual (v3_sft_v8.pt — 16/16 con reparadores) | |
| | # | Función | Estado | Notas | | |
| | --- | ---------------- | ------ | -------------------------------------------------------------- | | |
| | 01 | contar_vocales | ✅ | — | | |
| | 02 | suma_digitos | ✅ | — | | |
| | 03 | es_palindromo | ✅ | — | | |
| | 04 | maximo_lista | ✅ | — | | |
| | 05 | fizzbuzz | ✅ | Corregido (dataset quirúrgico) | | |
| | 06 | aplanar_lista | ✅ | — | | |
| | 07 | frecuencia | ✅ | — | | |
| | 08 | cuadrados_pares | ✅ | Genera `x*i` → reparador NameError word-boundary lo corrige | | |
| | 09 | invertir_dict | ✅ | — | | |
| | 10 | fibonacci | ✅ | — | | |
| | 11 | busqueda_binaria | ✅ | — | | |
| | 12 | merge_sort | ✅ | Corregido (self-contained) | | |
| | 13 | Stack | ✅ | — | | |
| | 14 | Punto | ✅ | Corregido (import math / \*\*0.5) | | |
| | 15 | memoize | ✅ | Corregido (usa `fn`, no `func`) | | |
| | 16 | primos_hasta | ✅ | Reparador `_reparar_bloques_huerfanos` + stop `endswith(\n\n)` | | |
| --- | |
| ## 4. Plan de entrenamiento | |
| ### Fase A — Entrenamiento curricular con MotorCuriosidad | |
| Objetivo: reforzar las bases de lógica que el modelo falla. | |
| ```bash | |
| python scripts/train_v3.py \ | |
| --checkpoint checkpoints/v3_sft_v4.pt \ | |
| --biblioteca data/biblioteca/ \ | |
| --lr 3e-5 --epochs 3 | |
| ``` | |
| Temas prioritarios basados en fallos del eval: | |
| 1. `bucles_for_while` — fizzbuzz, cuadrados_pares | |
| 2. `diccionarios` — invertir_dict | |
| 3. `busqueda_algoritmos` — búsqueda binaria | |
| 4. `recursion` — merge_sort | |
| 5. `clases_oop` — Punto, memoize | |
| 6. `matematica_basica` — primos, potencias | |
| ### Fase B — SFT v5 (post-curricular) | |
| - ~18K ejemplos curados (3K por topic × 6 topics) | |
| - Formato Alpaca, filtrado con pytest | |
| - Generados por el propio modelo + verificación automática | |
| ### Fase C — Matriz lingüística como dato de entrenamiento | |
| Incluir ejemplos que ejerciten explícitamente cada capa: | |
| - **Pragmática**: "El usuario quiere X, yo debo hacer Y" (comprensión de intención) | |
| - **Semántica**: Renombrar variables, inferir tipos, naming conventions | |
| - **Sintaxis**: Indentación correcta, keywords, delimitadores, f-strings | |
| - **Discurso**: Organización de código (imports → constantes → clases → funciones → main) | |
| --- | |
| ## 5. Roadmap de milestones | |
| ``` | |
| COMPLETADO ✅ COMPLETADO ✅ AHORA LARGO PLAZO | |
| ──────────── ──────────── ───────────── ──────────── | |
| 15/16 eval → 16/16 eval → Mini-SFT auto → Protocolo | |
| v3_sft_v7.pt v3_sft_v8.pt cuando cola≥50 entrenado | |
| 108M params + reparadores ColaFinetune Fase 3 | |
| SFT dataset chat.py Mini-SFT wiring El modelo | |
| limpio+quirúrgico loop activo sft_v5.py genera su | |
| Clean+surgical×3 gen→exec→retry auto-reload AGENTS.md | |
| ``` | |
| ### Milestone 1 — 16/16 eval ✅ COMPLETADO (target era ≥12/16) | |
| - [x] Dataset limpio (clean_sft.jsonl — 555 ejemplos sin contradicciones) | |
| - [x] Dataset quirúrgico (surgical_sft.jsonl — 90 ejemplos para 6 fallos) | |
| - [x] SFT v6 (10/16) desde clean data | |
| - [x] SFT v7 (15/16) desde clean + surgical×3 | |
| - [x] Fix primos_hasta → reparador `_reparar_bloques_huerfanos` + stop `endswith(\n\n)` | |
| - [x] Fix cuadrados_pares → reparador NameError word-boundary en verificador | |
| - [x] **16/16 confirmado** con v3_sft_v8.pt + eval_v3.py cadena de reparadores | |
| ### Milestone 2 — Runtime autónomo (EN PROGRESO) | |
| - [x] Scanner del sistema (`pampar.runtime.scanner`) | |
| - [x] Boot protocol (`pampar.runtime.boot`) | |
| - [x] CONCIENCIA.md como identidad invariante | |
| - [x] System prompt dinámico (identidad + contexto del scan) | |
| - [x] El agente ejecuta código que genera y observa output (`scripts/chat.py`) | |
| - [x] Si falla, agrega el par (prompt, error) a ColaFinetune | |
| - [x] Mini-SFT automático cuando la cola supera umbral (wiring con sft_v5.py + reload en proceso) | |
| ### Milestone 3 — Protocolo entrenado ✅ Implementado (generador determinista) | |
| - [x] `pampar/runtime/generar_agents.py` — genera AGENTS.md contextual desde el scan (determinista) | |
| - [x] `BootProtocol._inyectar_contexto()` actualizado: genera AGENTS.md → fragmenta por secciones → RAG L2 | |
| - [x] 23 tests en `tests/test_generar_agents.py` (132/132 en suite completa) | |
| - [x] Quick Reference, Sistema detectado, Paquetes clave, Servicios, Boot protocol generados dinámicamente | |
| - [ ] El modelo "sabe" escanear: genera `scan_sistema()` como código (largo plazo — necesita mucho más SFT) | |
| - [ ] CONCIENCIA se refuerza con RLHF/DPO sobre interacciones reales (largo plazo) | |
| - [ ] Nota: entrenar 108M params para generar markdown desde cero requiere 10K+ pasos — protocolo funcionando vía boot determinista es la aproximación correcta para este tamaño de modelo | |
| ### Milestone 4 — VS Code extension | |
| - [ ] Extension que carga PamparV3 localmente (CPU/GPU) | |
| - [ ] Completado inline de código | |
| - [ ] Panel de chat con el agente | |
| - [ ] Memoria persistente entre sesiones (RAG en disco) | |
| ### Milestone 5 — Voz (cuando el sistema la tiene) | |
| - [ ] Detectar motores de voz al boot (espeak, SAPI, say) — ya implementado en Scanner | |
| - [ ] TTS para respuestas cuando el usuario lo pide | |
| - [ ] Zero-dependency: usa lo que el OS tiene instalado | |
| --- | |
| ## 6. Estructura de carpetas | |
| ``` | |
| PAMPAr-Coder/ | |
| ├── CONCIENCIA.md # Identidad invariante del modelo | |
| ├── AGENTS.md # Protocolo de despliegue (mutable) | |
| ├── ROADMAP.md # Este archivo | |
| ├── pampar/ | |
| │ ├── coder/v3/ # Arquitectura activa (108M) | |
| │ │ ├── modelo.py # PamparV3 | |
| │ │ ├── config.py # ConfigV3, presets | |
| │ │ ├── talamo.py # TalamoInicial | |
| │ │ ├── bloques.py # BloqueAttn, StreamFFN, LateralGate | |
| │ │ ├── llaves.py # LlavesV2 — lookup INT8 | |
| │ │ └── zonas.py # 52 Zonas de Brodmann | |
| │ ├── memoria/ | |
| │ │ ├── clasificador.py # ClasificadorPareto — L0 a L3 | |
| │ │ ├── rag.py # RAGResidual — vector store | |
| │ │ └── cola_finetune.py # ColaFinetune — buffer SFT | |
| │ ├── runtime/ | |
| │ │ ├── agente.py # Agente — orquestador principal | |
| │ │ ├── scanner.py # Scanner — inspección del entorno | |
| │ │ └── boot.py # BootProtocol — secuencia de arranque | |
| │ └── training/ | |
| │ ├── curiosidad.py # MotorCuriosidad — ZPD | |
| │ └── lector.py # LectorBiblioteca | |
| ├── checkpoints/ | |
| │ └── v3_sft_v4.pt # Mejor checkpoint (8/16) | |
| └── tests/ # 109+ tests | |
| ``` | |