/** * Builder puro model→HTML para el reporte de run de workflow (registro de diseño, run bd039ef9). * * Contrato (pineado por observe/security.test.mjs): * - Cada string del modelo es UNTRUSTED DATA: la mayoría de strings renderiza vía el escaper de 5 chars; * las salidas de agentes renderizan como Markdown solo vía marked + sanitize-html con allowlist estricta. * - La página emite EXACTAMENTE dos bloques