siru: cambios
=============

Del más nuevo al más viejo. rNNNN identifica una revisión del repositorio siru. Este registro comienza con r2180; no reconstruye retrospectivamente los cambios anteriores, descritos en HECHO.md y en los documentos de cada motor.

2026-10-09 — sección Siru en simusol.org

  * Publicada la sección Siru antes de Simplot en el menú de CMSimple, conservando íntegramente las 78 páginas anteriores y respaldando content.htm fuera de la raíz web. Incluye presentación, instalación, descripción del .ds, RK=[-1], FORMAS, resultados y documentación.
  * Manual completo y documentos complementarios convertidos desde doc/ a HTML navegable en downloads/siru/docs/, con enlaces adaptados y cinco ejemplos .ds descargables. Las referencias al código no publicado se conservan como rutas textuales; los planes se identifican como trabajo futuro.
  * Fuentes, generador, configuración y procedimiento en doc/web/. Siru registrado en la tabla de páginas de SummaPack para futuras sincronizaciones. El alta inicial verifica que ninguna página anterior cambia y rechaza crear Siru por segunda vez.
  * Comprobados los cinco ejemplos con Siru y los tres dibujos SVG. La página distingue el desarrollo actual del paquete público siru 1.0-4, que todavía no incorpora las últimas correcciones ni las llamadas a dibuja y Simplot. Esta publicación no modifica los paquetes.

2026-10-09 — documentación general reunida en doc/

  * Trasladados con su historia SVN los 22 documentos Markdown generales, ChangeLog y las tres páginas de man/ a doc/ y doc/man/. La raíz conserva un README breve de acceso; el contenido completo está en doc/README.md, con un índice. La documentación específica del corpus y de los ejemplos sigue junto a sus archivos.
  * Ajustados los enlaces relativos hacia el código, los ejemplos y otros paquetes, y las referencias entrantes desde slex, siruviejo y el corpus. Las órdenes documentadas siguen tomando como base la raíz del programa, no doc/.
  * siru.summa instala los documentos desde doc/ y las páginas desde doc/man/. El destino instalado continúa siendo PREFIX/share/doc/siru y PREFIX/share/man/man1; no se agrega un segundo doc/ dentro de la instalación.
  * Debian omite dh_auto_install, ya que sus listas install/docs/manpages distribuyen los archivos sin invocar de nuevo el instalador para fuentes ni escribir en /usr/local. Los Markdown y ChangeLog permanecen sin comprimir para conservar sus enlaces.
  * Verificación: enlaces locales de doc/ y referencias entrantes revisados, instalación con PREFIX=/usr y DESTDIR temporal comprobada y paquete Debian construido con 383 comprobaciones aprobadas. Los artefactos de esta comprobación quedan en /tmp; no se publica una nueva versión por este traslado.

2026-10-09 — instalación y publicación de dibuja 0.1.0-2; gramática DS y punto RK=[-1]

  * dibuja: make install/uninstall con PREFIX y DESTDIR, registro de archivos propios que protege archivos ajenos o modificados, y make subir/bajar con validación de los cinco artefactos y sus MD5. PRUEBA=1 no conecta; canal predeterminado inestable. hacer-pkg acepta SUMMAPACK_DATA y el instalador general incluye dibuja.
  * Entrega dibuja 0.1.0-2 construida y probada en Ubuntu 22.04 con Node 12.22.9; DEB instalado en un contenedor limpio y los tres DAT de ejemplo dibujados. Publicados DEB, RPM, TGZ, fuentes y descriptor Summa en el canal inestable de simusol.org; descargados los cinco mediante make bajar y comparados con los originales por MD5. Instalación personal en ~/.local comprobada; no se instaló en /usr/local porque sudo requería contraseña. No se promovió a estable.
  * MANUAL.md: referencia de la gramática .ds en §3.1–3.10, secciones, comentarios, includes, nombres, cantidades, ramas/modelos, ecuaciones, funciones/tablas, controles, DATA, FORMAS y gráficos. §12 explica que el .ds describe el problema completo para Calcula y RK=[-1] pide un punto sin integración; ejemplos autosuficientes y psicro_r_srk.ds.
  * UnPunto: no consulta una clave de tiempo indefinida; RK=[-1] impide la marcha temporal y los análisis DC adicionales. Pide todas las variables a Calcula y conserva los textos numéricos validados de la respuesta, sin reemplazar valores ausentes por ceros. La nota de salida también es correcta si existen estados fijados en su valor inicial.
  * Salida: cabecera con las filas de metadatos realmente disponibles; no duplica nombres idénticos ni fabrica magnitudes/unidades con ??. Las unidades declaradas en el sistema se conservan, con '-' en columnas sin unidad, y no se escribe esa fila cuando ninguna tiene unidad. Separación explícita entre columnas, incluso para textos largos. La integración conserva sus 17 cifras.
  * Verificación: 1429 comprobaciones en 45 archivos aprobadas con SIRU_SIMPLOT=/bin/true para la regresión numérica; 20 comprobaciones específicas finales del escritor, y ejecución real del ejemplo del manual con Simplot. Pruebas de regresión: sin tiempo, unidades parciales/ausentes, precisión textual, cero negativo, estados con RK=[-1], controles de marcha con RK=[-1] y las tres incógnitas de Psicro. Tabular2 lee la nueva cabecera. Se preservaron ambas incorporaciones al resolver los conflictos documentales de la actualización r2732 (FORMAS y llamada automática a Simplot). La vinculación gráfica conserva los nombres originales de OUTPUTS cuando difieren de los del solver.
  * Instalación final en ~/.local: Siru corregido y manual, Simplot compatible con --stdin y d2datdinc con FORMAS (compilado para ese prefijo y enlazado con las bibliotecas instaladas). Los tres ejemplos de dibuja producen SVG, SIMUL y gráficos sin avisos usando los comandos instalados. El comando sobre el psicro_r_srk.ds del corpus produce psicro_r_srk-2.simul y sus gráficos, sin avisos y sin sobrescribir las salidas anteriores. Estos cambios de Siru, Simplot y el lector se instalaron desde fuentes; la publicación de paquete registrada arriba corresponde a dibuja.

2026-10-09 — FORMAS, dibujo opcional y paquete independiente dibuja 0.1.0-1

  * El circuito admite FORMAS dentro del .ds/.ds2/.d. Slex la interpreta y escribe GLOBAL.formas: lista ordenada de objetos con nombre, forma, orientacion, x, y, ancho y alto. Conserva nodos y masas repetidas; una sección vacía produce []. Sin sección no agrega la clave. Los campos geométricos son numéricos y las filas inválidas impiden publicar un DAT parcial. Compatibilidad con el formato antiguo NOMBRE FORMA. Contrato: slex/d2datdinc/README.md; revisión del paquete slex: 1.0-26.
  * dibuja consume las ramas y GLOBAL.formas del DAT; las formas internas tienen prioridad por nombre sobre el .formas externo. --electrico ignora ambas fuentes. Las posiciones, tamaños y orientaciones quedan conservados; la disposición del esquema sigue siendo automática con ELK.
  * Siru::Dibujo y Siru::Donde: con FORMAS presente, aunque vacía, bin/siru busca dibuja en el árbol o el PATH y le entrega el dato ya leído, antes de simular. Genera NOMBRE.svg junto a la entrada, también desde DAT y al continuar una corrida. Sin dibuja sigue simulando y lo registra; ante una falla del dibujo avisa y continúa. Las entradas DIN no activan el dibujo. Siru sugiere el paquete dibuja como dependencia opcional.
  * Paquete independiente dibuja 0.1.0-1: Makefile, instalador con PREFIX/DESTDIR, metadatos dibuja.summa, hacer-pkg y man/dibuja.1. Incluye netlistsvg, sus dependencias fijadas por package-lock.json y las formas de Dia. Para DAT necesita Python y Node; para fuentes, también d2datdinc. No requiere Siru, Calcula ni Dia. JavaScript invocado mediante Node para funcionar con los permisos de los paquetes Debian; reinstalación sobre el mismo prefijo comprobada.
  * Ejemplos autocontenidos en dibuja/ejemplos: divisor eléctrico, circuito térmico y divisor con FORMAS vacía, cada uno con DS, DAT y SVG. El manual de dibuja describe sintaxis, contrato JSON, prioridad de formas, instalación, empaquetado y llamada desde Siru; MANUAL.md y README.md de Siru enlazan ese contrato.
  * Verificación: d2datdinc/probar, 121 comprobaciones correctas; make check de d2datdinc, cuatro programas de prueba aprobados. make check de Siru, 340 comprobaciones en diez archivos. Cinco pruebas de dibuja para DAT, prioridad, masas/nodos, SVG e instalación; también pasó pruebas/probar con los tres circuitos históricos.
  * Integración real: los tres ejemplos simulan y generan SVG tanto desde DS como desde DAT; el divisor da 5 V en la salida. Sin FORMAS simula sin dibujo. El Debian extraído genera los tres SVG con PATH limitado a Python y Node 18, sin Siru, Calcula ni slex. PREFIX=/opt/dibuja con DESTDIR también verificado.
  * Artefactos generados en dibuja/: dibuja_0.1.0-1_all.deb, dibuja-0.1.0-1.noarch.rpm, dibuja_0.1.0-1_all.tgz, fuentes dibuja_0.1.0-1.tar.gz y descriptor dibuja_0.1.0-1.summa, con sus MD5. Construidos y comprobados localmente; sin instalación en el sistema ni publicación.

2026-10-09 — Simplot al terminar, con -nosimplot para omitirlo

  * bin/siru y Siru::Graficos: llamada al graficador solo tras publicar una corrida correcta, por todas las entradas y motores. No cambia el estado de exito si el dibujo falla. Guarda los diagnosticos en el .log; separa los graficos de cada salida numerada. Permite SIRU_SIMPLOT y ejecucion sin pantalla. Conserva RESULTADOS/PARAPLOT mediante --simulado de Simplot, sin reemplazar las fuentes externas.
  * README, MANUAL y man siru: comportamiento predeterminado, opcion -nosimplot/--nosimplot, ubicacion y dependencia opcional del graficador.

2026-10-06 — cierre documental y paquetes 1.0-3 / 1.0-24

  * M4 inicial quedó versionado en r2444. M5 tiene sólo su contrato de primera entrega (r2451): interpolación de Euler y grilla de salida, antes de eventos; no se anuncia como código disponible.
  * debian/changelog, control y README: entrega siru 1.0-3 con d2datdinc >= 1.0-24 y Calcula >= 6.0-37. Incluye los módulos y manuales ya versionados, sin incorporar desarrollos pendientes de tabular2 ni nuevas colecciones del corpus.
  * El generador actual supera las 103 pruebas: las dos referencias antiguas de circuitoB ya fueron corregidas en el árbol. No se alteraron el paso ni la política adaptativa al empaquetar. Se conserva debajo el resultado histórico de la entrega r2444.
  * Verificación de entrega: regresión completa, 1388 comprobaciones en 43 archivos; paquete Siru, 331 en nueve archivos; SLEX, seis pruebas del lexer y probar/varios, sin fallos (las dos comparaciones externas al corpus se omiten en la copia de empaquetado). Los .deb extraídos en /tmp generan y ejecutan el oscilador Strang: 11 filas iguales a una recurrencia independiente. Lintian sin errores; conserva el aviso de falta de página de manual de d2datdinc. No se instalaron los paquetes.

2026-10-06 — GPU en línea: cuaderno, prueba y paquete

  * ejemplos/montecarlo-gpu/prueba-gpu.sh: detecta la placa (NVIDIA o AMD), instala el paquete de descarga de gcc de la misma versión que el gcc de la máquina, compila para el procesador y para la GPU, corre los dos con OMP_TARGET_OFFLOAD=MANDATORY (falla si no corre en la GPU) y compara la estadística; deja resultado-gpu.txt. Sale con 0 si la GPU da lo mismo, 1 si algo falla, 2 si no hay GPU.
  * cuaderno-gpu.ipynb (hacer-cuaderno.py, make cuaderno): un solo archivo para Kaggle o Colab, con los fuentes adentro. make paquete: el .tar.gz para una máquina alquilada.
  * INFORME-GPU.md, secciones 7 y 8; MANUAL.md 11 decies. Probado sin GPU (el script, el fallo con MANDATORY, la comparación, el cuaderno); no probado en una GPU real (r2449).

2026-10-06 — Un ejemplo para GPU: Montecarlo en lote

  * ejemplos/montecarlo-gpu: un rectificador de media onda (rectificador.d) simulado 100.000 veces con los componentes dentro de su tolerancia, por un programa en lote (montecarlo.c) que integra cada copia con el mismo trapecio que siru y Newton de 2x2. Un solo fuente, OpenMP: en los nucleos del procesador o, con -DGPU, en una GPU NVIDIA (gcc con nvptx, o nvc). Pedido del autor: un caso donde convenga una GPU (copias independientes, la misma cuenta, mucho trabajo por dato).
  * Medido sin GPU: 100.000 copias en 6,2 s con 16 hilos (72,5 s con uno); con siru, a 5,3 s por copia, serian unos 6 dias. La copia nominal da la curva de siru (6e-12). El camino -DGPU compila y da la misma estadistica en el procesador; en una GPU no se corrio (no hay una con CUDA en esta maquina). LEEME.md explica que GPU sirve: en doble precision, una de centro de datos.

2026-10-06 — Relajación de forma de onda: `siru-relaja`

  * bin/siru-relaja y Siru::Relajacion: un circuito .d partido en subcircuitos (bisección del grafo de ramas, o --particion), cada uno corrido por siru en su proceso, intercambiando las formas de onda de los nodos de frontera (fuentes EWR con TABLE, sondas JWR de cero) hasta converger, a la Jacobi; con --ventana, por ventanas que arrancan de los estados finales de la anterior. Pedido del autor; el porqué en calcula-6.0/PENDIENTE-iterativos.md, método 4.
  * Corpus: inventados/relaja-cadena.d (débilmente acoplada: 9 iteraciones) y relaja-diodos.d (no lineal: 18); con grilla-rc-10x10.d en cuatro partes y ventanas de 5, de 15 a 24 por ventana. Los tres dan la curva de la corrida entera (3e-9, 2e-9 y 6e-6).
  * tests/relajacion.t: la partición de una cadena y la curva contra la corrida entera, en dos ventanas. MANUAL.md 11 nonies, siru-relaja(1).

2026-10-06 — M4 inicial: composición SPLIT

  * Composicion y SPLIT: Lie–Trotter (1) y Strang (2), con dos mapas autónomos declarados exactos, paso fijo y confirmación transaccional del paso completo. Los estados intermedios no avanzan el reloj físico; duración y estados deben ser finitos. Los mapas de cada subflujo se evalúan simultáneamente.
  * Cadena .d/.ds y .din autosuficiente; sin SWIG ni cambios en Calcula. El descriptor conserva mapas, secuencia, estados, parámetros y salidas. Capacidades incompatibles se rechazan explícitamente; no se prueba matemáticamente la exactitud declarada de los mapas.
  * Corpus: oscilador Lie–Trotter/Strang y circuito LC con estado de carga. Pruebas de recurrencia, orden, aislamiento, diagnósticos y equivalencia fuente/din. 82 comprobaciones específicas; regresión completa: 1379 comprobaciones en 42 archivos con Calcula del árbol (antes de añadir dos comprobaciones adicionales de duración).
  * README, MANUAL, catálogo y plan distinguen este M4 inicial de sus extensiones pendientes. El Calcula instalado 6.0-35 falla en dos pruebas ajenas de tablas que pasan con el del árbol; no se instalaron paquetes ni se modificó el soporte de tablas.

2026-10-06 — r2371

  * Integrador: la historia/semilla del paso adaptativo doble ahora coincide con los dos medios pasos aceptados; el predictor extrapola con h solicitado / h anterior. Cambiar sesión, parámetros o estado invalida el predictor y actualiza las incógnitas, conservando la historia DC cuando corresponde.
  * Paso: migrado el conductor compartido RK/PGLM/ROS. Tiempo, historia, quiebres y contadores se confirman juntos; ramas de comparación/rescate aisladas para proveedores restaurables. Se conservan las políticas de convergencia, pero un timeout/EOF nuevo no puede quedar oculto por un SOLVER FAILURE anterior. Costos de consultas/descartes en el informe; la última integración no se presenta como suma de RERUN/CONTINUE.
  * ControlPaso e Historia: norma ponderada/controlador compartidos sin imponer un estimador universal; anillo de estados, derivadas disponibles, tiempos y pasos, dimensionable y separado de memoria GLM.
  * GLM v2: Euler, BDF2 efectivo/directo y AB2 admiten adaptación optativa desde .d/.ds y .din autosuficiente. Estimador conservador de orden de error 2, comparando con el arranque Euler; el arranque usa dos medios pasos Euler independientes. Rechazo sin avance, crecimiento máximo 2 y rearranque fuera de razón [0.2,2]. No habilita orden variable, listas ni topología; fallos de Calcula siguen siendo fatales. Se mantiene lectura de .din v1 fijo. Cuatro casos nuevos en corpus/corpus/GLM, sin regenerar resultados congelados.
  * ServiciosNumericos y EtapasROS: encapsulan campo EVAL/SENS1, Jacobiano reducido, LU y varios segundos miembros. Cachés ligadas a proveedor/modelo/topología/parámetros/t/y/h con 17 cifras; invalidación por cambio o fallo. ROS2 conserva fórmula, estimador y selector; no agrega protocolos a Calcula ni se presenta como motor DAE/disperso general.
  * Pruebas nuevas: paso_integrador.t, glm_adaptativo.t, glm_adaptativo_din.t y servicios_numericos.t. Verificación final: 1270 comprobaciones en 39 archivos, incluida la prueba AC incorporada por otra sesión, con Calcula real. También pasaron las 311 pruebas autónomas de debian/rules y la sintaxis de todos los módulos, la compilación C, las 99 pruebas actuales de d2datdinc/probar y los cinco tests de SLEX.
  * Documentación: README, MANUAL, CONTRATO_PASO, GLM_CONTRATO, ROS, PLAN_CAPACIDADES_MOTOR, CATALOGO_INTEGRADORES y README del corpus distinguen lo implementado de lo pendiente en M1–M3. M4–M8 no se dan por terminados. Cambios verificados desde el árbol; no se instala ni publica un paquete nuevo en este bloque.

2026-10-05 — r2277

  * corpus/nousamos: el `include` de los nueve circuitos apartados (los ocho `stiff` y `circuito-SERRORRARO_3.ds`) subía un nivel de más y salía del repositorio; `d2datdinc` no encontraba la biblioteca. Son tres niveles. Ahora los nueve se traducen. Con siru, probado en un temporal: `circuito-SERRORRARO_3.ds` corre (103 filas); los ocho `stiff` no arrancan, porque tienen una cosa del archivo sin traducir al sistema, como antes de que a `stiffloli.ds` —el que se mantiene— se lo corrigiera.

2026-10-05 — r2275

  * El corpus pasa a estar adentro del simulador: `corpus/` es `siru/corpus/` (`svn mv`, con su historia). Y `Simul/`, el simulador anterior, pasa a `siruviejo/`: sólo el directorio, sin renombrar ningún módulo ni programa (Simul 1 se sigue llamando así, y `Simusol::*` también); `siruviejo/perl` no se tocó.
  * Con eso cambiaron las rutas que los nombraban, en 1318 archivos más 28 a mano: los `include` de los circuitos del corpus (`../../../../slex/...`, un nivel más), las rutas absolutas de los `.dat` congelados y los `.gnu`, las menciones en documentos, comentarios y mensajes (`corpus/sceptre` es `siru/corpus/sceptre`, `Simul/LLAVES.md` es `siruviejo/LLAVES.md`), y las que el código arma a mano: los scripts del corpus toman la raíz del repositorio dos niveles arriba; las pruebas buscan el corpus en `../corpus` y el dato de ejemplo en `siruviejo/perl/data`; `tests/glm_matricial.t`, que copiaba un circuito cambiándole el `include` con la profundidad escrita a mano, ahora acepta cualquiera.
  * Cada ruta sigue nombrando lo mismo que nombraba, también las que apuntaban a algo que no existe: nueve circuitos de `corpus/nousamos` tienen el `include` roto desde antes (sube un nivel de más) y siguen igual. No se tocaron los ChangeLog, `corpus/borrados.txt`, los `.log` ni la frase que dice dónde estuvo el corpus hasta septiembre.
  * `corpus/convergencia`: la copia de trabajo de un circuito de afuera del repositorio va a `siru/corpus/corpus/fuera`, para quedar a la profundidad de los del corpus, y al enlazar la raíz se saltea `siru` en lugar de `corpus`.
  * Verificación: ensayado en una copia del árbol contra la copia sin mudar —las 1110 comprobaciones, `make check` de slex, `d2datdinc` sobre las 1141 fuentes (8421 archivos de salida: 7269 idénticos y 1152 iguales salvo la ruta), `clasificar` (322 `.tipo` idénticos), `compara-dat` y `compara-din` con el mismo resultado archivo por archivo, `corre_corpus`, `exactas`, `convergencia`, `regenera -n`, `example11` y el armado del paquete—. Después del commit, en el árbol: 1110 comprobaciones en 34 archivos, `probar` 72, y `compara-dat` y `compara-din` como antes.

2026-10-05 — r2270 a r2273

  * man/siru.1 y man/dat2din.1: las páginas de manual, escritas a mano como `tabular2/src/interpola.1`; las instala `debian/siru.manpages`. La de siru dice qué archivos acepta, las opciones, qué deja y dónde (con `--salida` la corrida, el informe y las tablas DC toman su nombre; el `.log` y los `.mdin` quedan al lado del circuito), el estado de salida y las variables de entorno (`SIRU_PASO_FACTOR`, `SIRU_VOLCAR`, `SIRU_DEPURA`). El paquete pasa a 1.0-2, porque el 1.0-1 ya estaba instalado (r2270, r2271, r2273).
  * `../instalar` (el del repositorio) arma e instala también a siru, después de slex (r2272). siru es el único que necesita algo del otro repositorio —`calcula`—, así que se arma siempre y se instala sólo si `calcula` está en la versión que pide el propio `.deb`. Si no está no es un error: los demás se instalan, y al final dice que siru quedó sin instalar, por qué, y las dos órdenes que faltan (`sudo ../calcula/instalar` y el `dpkg -i`). El estado de salida es 0, salvo que se haya pedido justamente `instalar siru` (3). `--que-hay` muestra también a `calcula` y quién lo necesita.
  * Probado sin ser root, con `dpkg -i`, `sudo` e `id` de mentira y los `.deb` verdaderos: sin `calcula`, con uno anterior al que pide, con el instalado, pidiendo `siru`, pidiendo `slex` y pidiendo uno que no existe.
  * MANUAL.md §1 y README.md: las dos maneras de instalarlo (r2273).

2026-10-05 — r2266 a r2269

  * Paquete Debian de siru: `debian/` y `hacer-deb`, como los de slex y mem_util. Es uno, `siru`, para todas las arquitecturas: `/usr/bin/siru` y `/usr/bin/dat2din`, los módulos `Siru::*` en `/usr/share/perl5`, los `.md` (sin comprimir) y el ejemplo. Depende de `d2datdinc (>= 1.0-10)`, que es el que escribe las claves `SIRU_*`, y de `calcula (>= 6.0-34)`; de Perl sólo usa módulos del núcleo. Versión 1.0-1 (r2267, r2268).
  * lib/Siru/Donde.pm: dónde están `d2datdinc`, su tabla y su biblioteca. Desde el árbol de fuentes, los de `siru/slex/d2datdinc`, con `-c` y `-b`, como antes; instalado, el `d2datdinc` del `PATH` —que ya sabe dónde están los suyos— y los catálogos `glm.json` y `pglm.json` de la biblioteca que lo acompaña (`PREFIJO/share/slex/biblioteca`). Lo decide por dónde está el módulo. `Siru::Preparador::_d2datdinc`, `Siru::CatalogoGLM` y `Siru::PGLM` lo usan; antes los tres armaban la ruta relativa al árbol y siru sólo andaba desde ahí (r2266).
  * tests/donde.t: 9 comprobaciones; lo instalado se imita con un directorio temporal, sin `d2datdinc` ni `calcula`.
  * Al armar el paquete se mira que todos los programas y módulos compilen y se corren las seis pruebas que no necesitan nada de afuera (234 comprobaciones). Las demás siguen siendo `prove tests/` desde el árbol.
  * Verificación: 1110 comprobaciones en 34 archivos desde el árbol. El paquete, extraído en un temporal junto con el `d2datdinc` 1.0-10 (sin instalar: hace falta ser root), da la misma corrida que el siru del árbol en 13 circuitos —`.d`, `.ds`, las claves de antes, capacidad variable, llaves con lazo y con corte, GLM, IMEX, ROS, sensibilidad DC y convolución—, sobre un `.dat`, y `dat2din` los mismos archivos.
  * MANUAL.md §1 y §2 y README.md: las dos maneras de tenerlo, instalado o desde el árbol (r2269).

2026-10-05 — r2264

  * Simul2 pasa a llamarse siru, como ya se llamaba el ejecutable. El directorio `Simul2/` es `siru/`; los módulos `Simul2::X` son `Siru::X`, en `lib/Siru/`; el informe `NOMBRE.simul2` es `NOMBRE.informe` (no `NOMBRE.siru`: `.siru` es la extensión de las bibliotecas y el informe las hubiera pisado); las claves `SIMUL2_PASO`, `SIMUL2_PASO_MIN`, `SIMUL2_PASO_MAX`, `SIMUL2_ADAPT`, `SIMUL2_ABSOLUTO`, `SIMUL2_RELATIVO`, `SIMUL2_ORDEN_ERROR` y `SIMUL2_COMPRESION_*` son `SIRU_*`, y los controles `SIMUL2 ADAPTIVE STEP`, `SIMUL2 ABSOLUTE TOLERANCE`, `SIMUL2 RELATIVE TOLERANCE` y `SIMUL2 ERROR ORDER` de un `.d` son `SIRU ...`. Los mensajes, la documentación y el registro (`siru: resultado: ...` en `NOMBRE.log`) dicen siru. Las entradas de más abajo conservan los nombres que valían cuando se escribieron.
  * Los nombres de antes de las claves se siguen aceptando. `d2datdinc` los convierte al leer un `.d`, un `.ds` o un `.dat`, y con `-v` lo avisa; `Siru::DesdeDat::claves_de_antes` hace lo mismo con el `.dat` que lee el Perl (`Siru::Circuito::_dato`, `Siru::DesdeDat::leer`). Si un dato trae los dos nombres vale el de ahora.
  * tests/nombres_de_antes.t: 14 comprobaciones. El circuito con las claves viejas (`slex/d2datdinc/pruebas/nombres-de-antes.ds`) da la misma corrida que con las de ahora, con el paso que dice la clave; y un `.dat` con las claves viejas, también.
  * En el corpus cambió el texto de los archivos generados (`.simul`, `.mdin`, `-Sceptre`, `.tipo`, `.dat`, `SCEPTRE.md`), sin regenerar nada: el campo `simul2` de los `.tipo` es `siru`, y las columnas `X_simul2` de los `-Sceptre`, `X_siru`. No se tocaron los `.log`, los ChangeLog ni `Simul/perl`.
  * Verificación de r2264: 1101 comprobaciones en 33 archivos; las 1087 de antes, con el mismo resultado. Antes de aplicarlo se ensayó en una copia del árbol: `d2datdinc` sobre las 1139 fuentes versionadas da lo mismo salvo el nombre (8405 archivos de salida) y `clasificar` también (322 `.tipo`).

2026-10-04 — r2180

  * PLAN_CAPACIDADES_MOTOR.md: plan de ampliación por capacidades del motor, con un método mínimo de verificación por etapa, antes de ampliar los catálogos. Define responsabilidades de Simul2, Calcula y libdin, compatibilidad del .din y criterios de cierre.
  * lib/Simul2/Paso.pm: primer bloque de M1. Contrato para preparar, intentar, aceptar, descartar y reiniciar pasos; copias aisladas del estado confirmado y del candidato; estadísticas que conservan el costo de los intentos descartados.
  * Proveedores: política independiente o restaurable con respaldo y restauración explícitos. Un fallo al guardar o restaurar bloquea la transacción; no se permite reutilizar un proveedor cuyo estado no se pudo recuperar.
  * lib/Simul2/IntegradorGLM.pm: primer conductor migrado. Tiempo, anillo físico, memoria GLM, quiebres pendientes y rearranques se confirman juntos después de validar el resultado. Conserva fórmulas, IDs, paso fijo, último paso desigual y tratamiento de quiebres.
  * tests/paso.t, tests/paso_glm.t y tests/paso_calcula.t: 106 comprobaciones nuevas de aislamiento, aceptación, descarte, fallos, memoria y quiebres. La prueba con Calcula real verifica que las semillas explícitas y el límite ITER de una petición no contaminan la siguiente, aun después de fallar.
  * Verificación de r2180: 249 comprobaciones en el grupo enfocado y 1087 en 32 archivos de la suite completa. Las 106 pruebas nuevas se repitieron antes del commit y pasaron.
  * CONTRATO_PASO.md: inventario de interfaces, contrato implementado, políticas de proveedores, pruebas y continuación. README.md, GLM_CONTRATO.md y PLAN_MOTORES_IMEX.md enlazan el plan y registran el alcance real del primer bloque.
  * Pendiente: completar M1 migrando el conductor compartido por RK/PGLM/ROS y sus servicios comunes. Este cambio no habilita adaptación GLM, listas mixtas ni nuevas capacidades de topología; no modifica Calcula ni libdin.
