Saltar al contenido
Soberanía de la Intención · Designio

Caso vivo · Especificación Ejecutable de Intención

EIS-020 — Asegurar la calidad transversal: 404, iconos/OG, cabeceras de seguridad y auditoría automática

módulo plataforma FIRMADA — 2026-06-12 (acta, artefacto 06)

EIS-020 — Calidad transversal (el «Security Sentinel» de esta web)

1. Contexto técnico

Cierre de los implícitos de producción: página 404 de marca; favicon/touch-icons/manifest con el motivo «chispa Designio» de la portada (ADN §8.3); imágenes OG (por defecto + Libro + Comparativa); robots.txt permitiendo buscadores y crawlers de IA (decisión Q-09: sí); analítica Cloudflare Web Analytics activada (decisión Q-03: sí, cookieless); fichero _headers con CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy; y auditoría automática en CI: Lighthouse CI (umbral ADN §7) + axe + validación de enlaces internos — el equivalente local del Security Sentinel: sin auditoría verde no hay despliegue.

2. Restricciones de arquitectura

  • CSP sin unsafe-inline de script (estilos inline de Astro permitidos vía hash/style-src).
  • La auditoría corre en cada PR (GitHub Actions free) y bloquea merge si incumple ADN §7.
  • 0 cookies emitidas por el sitio (verificable).

3. Criterios de aceptación (Test-Driven Intent)

criterios:
  - id: C1
    given: "una URL inexistente"
    when: "se visita"
    then: "responde 404 con página de marca y navegación de vuelta"
  - id: C2
    given: "el sitio desplegado"
    when: "se inspeccionan respuestas HTTP"
    then: "CSP, X-Content-Type-Options, Referrer-Policy y Permissions-Policy presentes; ninguna cookie emitida"
  - id: C3
    given: "un PR que degrada Performance < 95 o introduce violación AA"
    when: "corre la CI"
    then: "el check falla y bloquea el merge"
  - id: C4
    given: "una página compartida en redes"
    when: "se previsualiza"
    then: "muestra imagen OG de marca correcta"

4. Definition of Done

  • CI verde en main; informe de auditoría publicado en el log de sprint del caso vivo.

← Volver al caso vivo