{ "fecha": "2026-09-21", "que_es": "Las capacidades que se midieron contra su modelo nulo y no pasaron. El codigo se quito; queda esto, y el codigo entero en el commit indicado.", "capacidades": [ { "nombre": "reconocedor_de_area", "que_hacia": "lee el área del enunciado por su FORMA (símbolos + palabras)", "donde_estaba": "nucleo/graph/reconocedor.py", "metrica": "acierto de área", "contra": "siempre el área más frecuente", "real": 0.7587, "nulo": 0.2377, "por_que_se_quito": "gana a su nulo en MATH (75,9 % contra 23,8 %) pero medida por el camino real contra ProofNet no paga: el brazo `lexico+puerta` de scripts/recuperacion_contra_proofnet.py ofrece nombres en 11 casos mas y no se usa ni uno —cobertura igual, precision 0,7 puntos por debajo—. El motivo esta en nucleo/core.py, donde se decidio dejarla fuera: en ProofNet el lexico solo calla en 31 de 371, asi que el margen era del 4 % desde el principio. Se construyo para las consultas en español, donde el lexico calla en el 27 %, y para esas NO HAY BANCO con premisas de oro. Lo que falta no es cablearla: es medirla donde se supone que sirve", "codigo_en_el_commit": "e7edc19" }, { "nombre": "eleccion_de_imports", "que_hacia": "añade a la cabecera los módulos de Mathlib de las skills activadas, sobre un conjunto fijo de tres", "donde_estaba": "nucleo/core.py::_modulos_mathlib", "metrica": "enunciados que elaboran, de 20", "contra": "un conjunto fijo de tres módulos", "real": 18.0, "nulo": 18.0, "por_que_se_quito": "NO bate a su nulo: enunciados que elaboran, de 20 18 contra 18 (un conjunto fijo de tres módulos)", "codigo_en_el_commit": "e7edc19" }, { "nombre": "orden_de_cascada_por_area", "que_hacia": "ordena las tácticas de la cascada según el área detectada", "donde_estaba": "nucleo/multi_agent/colimit_agents.py::domain_tactic_order", "metrica": "posición de la táctica que cierra", "contra": "`simp` primero y el resto por frecuencia", "real": 1.262, "nulo": 1.091, "por_que_se_quito": "NO bate a su nulo: posición de la táctica que cierra 1,262 contra 1,091 (`simp` primero y el resto por frecuencia)", "codigo_en_el_commit": "e7edc19" }, { "nombre": "tacticas_por_vecinos", "que_hacia": "propone la táctica ENTERA —con sus argumentos— que cerró los estados más parecidos de LeanWorkbook, en lugar de los nombres desnudos del rankeador", "donde_estaba": "nucleo/lazo/vecinos.py::IndiceDeVecinos", "metrica": "estados raíz cerrados en 3 intentos", "contra": "las 3 primeras tácticas del rankeador, desnudas", "real": 76.0, "nulo": 79.0, "por_que_se_quito": "no está cableada como sustituto del rankeador, y no debe: medida con Lean pierde contra él; como fuente del lazo es `vecinos_en_el_lazo`", "codigo_en_el_commit": "e7edc19" }, { "nombre": "busqueda_de_lean_en_el_lazo", "que_hacia": "`apply?` como SONDA en el lazo (D2): sus «Try this» como candidatos", "donde_estaba": "nucleo/lazo/proponentes.py::D2Busqueda", "metrica": "estados raíz verificados por el lazo", "contra": "el lazo sólo con la cascada", "real": 40.0, "nulo": 41.0, "por_que_se_quito": "vive dentro del lazo, que no está en el camino servido; y dentro del lazo tampoco paga: 40 contra 41", "codigo_en_el_commit": "e7edc19" }, { "nombre": "premisas_densas_en_el_lazo", "que_hacia": "el encoder de premisas de Mathlib (D1 denso) como fuente del lazo: las premisas más cercanas al objetivo, hechas `exact`, `apply`, `rw` y `simp [..]`", "donde_estaba": "nucleo/lazo/densa.py::D1Denso", "metrica": "estados raíz verificados por el lazo", "contra": "el lazo con la cascada y los vecinos", "real": 46.0, "nulo": 48.0, "por_que_se_quito": "vive dentro del lazo, que no está en el camino servido; y dentro del lazo resta: 46 contra 48 de los vecinos solos", "codigo_en_el_commit": "e7edc19" }, { "nombre": "dos_etapas_localizar_y_elegir", "que_hacia": "localiza el área y luego elige premisas dentro de ella", "donde_estaba": "scripts/dos_etapas_localizar_y_elegir.py", "metrica": "precisión de premisas", "contra": "las premisas más frecuentes, sin localizar nada", "real": 0.4193512552766052, "nulo": 0.93, "por_que_se_quito": "NO bate a su nulo: precisión de premisas 0,419 contra 0,93 (las premisas más frecuentes, sin localizar nada)", "codigo_en_el_commit": "e7edc19" }, { "nombre": "recuperacion_lexica_de_lemas", "que_hacia": "busca lemas por solapamiento léxico con la consulta", "donde_estaba": "scripts/medir_recuperacion_lemas.py", "metrica": "precisión de lemas", "contra": "los lemas más frecuentes", "real": 0.06500812601575197, "nulo": 7.78, "por_que_se_quito": "NO bate a su nulo: precisión de lemas 0,065 contra 7,78 (los lemas más frecuentes)", "codigo_en_el_commit": "e7edc19" }, { "nombre": "emparejador_semantico", "que_hacia": "empareja la consulta con skills por embeddings", "donde_estaba": "scripts/emparejador_semantico.py", "metrica": null, "contra": null, "real": null, "nulo": null, "por_que_se_quito": "evaluado y descartado, nunca se adopto: en emparejador_semantico.json acierta el area en el 12 % (285 de 2385) contra el 61 % del emparejador lexico (emparejamiento.json). Las dos cifras son CRUDAS sobre un banco 89 % algebra, donde responder siempre «algebra» acierta el 88,6 %: ninguna de las dos bate a esa constante, asi que la comparacion vale para ordenarlas entre si y para nada mas. El fichero no guarda un nulo en forma comparable, asi que aqui cuenta como sin evidencia; y ademas cuesta una llamada. Contra ProofNet, que si tiene oro, el semantico da 13,1 % de precision y 2,4 % de cobertura frente a 21,6 % y 18,3 % del lexico", "codigo_en_el_commit": "e7edc19", "sin_evidencia_comparable": "evaluado y descartado, nunca se adopto: en emparejador_semantico.json acierta el area en el 12 % (285 de 2385) contra el 61 % del emparejador lexico (emparejamiento.json). Las dos cifras son CRUDAS sobre un banco 89 % algebra, donde responder siempre «algebra» acierta el 88,6 %: ninguna de las dos bate a esa constante, asi que la comparacion vale para ordenarlas entre si y para nada mas. El fichero no guarda un nulo en forma comparable, asi que aqui cuenta como sin evidencia; y ademas cuesta una llamada. Contra ProofNet, que si tiene oro, el semantico da 13,1 % de precision y 2,4 % de cobertura frente a 21,6 % y 18,3 % del lexico" }, { "nombre": "enrutado_neuronal", "que_hacia": "decide con el GNN+PPO si la consulta va a Lean o al chat", "donde_estaba": "nucleo/rl/agent.py::NucleoAgent._select_neural", "metrica": "acciones distintas ante una sonda heterogenea", "contra": "la politica constante, que da exactamente una", "real": 1.0, "nulo": 1.0, "por_que_se_quito": "gratis y sin contraindicación", "codigo_en_el_commit": "e7edc19" } ] }