@ingcrea/aumic-puf 0.0.0-stage → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/PUF-15.md +118 -0
- package/PUF_G16_Lighthouse.md +70 -0
- package/README.md +253 -2
- package/dist/adapters/astro.d.ts +28 -0
- package/dist/adapters/astro.d.ts.map +1 -0
- package/dist/adapters/astro.js +68 -0
- package/dist/adapters/astro.js.map +1 -0
- package/dist/adapters/base.d.ts +53 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +138 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/cpp.d.ts +27 -0
- package/dist/adapters/cpp.d.ts.map +1 -0
- package/dist/adapters/cpp.js +48 -0
- package/dist/adapters/cpp.js.map +1 -0
- package/dist/adapters/csharp.d.ts +28 -0
- package/dist/adapters/csharp.d.ts.map +1 -0
- package/dist/adapters/csharp.js +100 -0
- package/dist/adapters/csharp.js.map +1 -0
- package/dist/adapters/flutter.d.ts +27 -0
- package/dist/adapters/flutter.d.ts.map +1 -0
- package/dist/adapters/flutter.js +49 -0
- package/dist/adapters/flutter.js.map +1 -0
- package/dist/adapters/java.d.ts +28 -0
- package/dist/adapters/java.d.ts.map +1 -0
- package/dist/adapters/java.js +123 -0
- package/dist/adapters/java.js.map +1 -0
- package/dist/adapters/nextjs.d.ts +27 -0
- package/dist/adapters/nextjs.d.ts.map +1 -0
- package/dist/adapters/nextjs.js +59 -0
- package/dist/adapters/nextjs.js.map +1 -0
- package/dist/adapters/php.d.ts +27 -0
- package/dist/adapters/php.d.ts.map +1 -0
- package/dist/adapters/php.js +50 -0
- package/dist/adapters/php.js.map +1 -0
- package/dist/adapters/python.d.ts +27 -0
- package/dist/adapters/python.d.ts.map +1 -0
- package/dist/adapters/python.js +55 -0
- package/dist/adapters/python.js.map +1 -0
- package/dist/adapters/rust.d.ts +27 -0
- package/dist/adapters/rust.d.ts.map +1 -0
- package/dist/adapters/rust.js +59 -0
- package/dist/adapters/rust.js.map +1 -0
- package/dist/adapters/selector.d.ts +14 -0
- package/dist/adapters/selector.d.ts.map +1 -0
- package/dist/adapters/selector.js +65 -0
- package/dist/adapters/selector.js.map +1 -0
- package/dist/adapters/shell.d.ts +28 -0
- package/dist/adapters/shell.d.ts.map +1 -0
- package/dist/adapters/shell.js +101 -0
- package/dist/adapters/shell.js.map +1 -0
- package/dist/adapters/swift.d.ts +28 -0
- package/dist/adapters/swift.d.ts.map +1 -0
- package/dist/adapters/swift.js +91 -0
- package/dist/adapters/swift.js.map +1 -0
- package/dist/adapters/typescript.d.ts +27 -0
- package/dist/adapters/typescript.d.ts.map +1 -0
- package/dist/adapters/typescript.js +63 -0
- package/dist/adapters/typescript.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +236 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interfaz.d.ts +21 -0
- package/dist/cli/interfaz.d.ts.map +1 -0
- package/dist/cli/interfaz.js +71 -0
- package/dist/cli/interfaz.js.map +1 -0
- package/dist/core/arbol-proyecto.d.ts +18 -0
- package/dist/core/arbol-proyecto.d.ts.map +1 -0
- package/dist/core/arbol-proyecto.js +119 -0
- package/dist/core/arbol-proyecto.js.map +1 -0
- package/dist/core/certificado.d.ts +17 -0
- package/dist/core/certificado.d.ts.map +1 -0
- package/dist/core/certificado.js +49 -0
- package/dist/core/certificado.js.map +1 -0
- package/dist/core/evaluador-ciberseguridad.d.ts +9 -0
- package/dist/core/evaluador-ciberseguridad.d.ts.map +1 -0
- package/dist/core/evaluador-ciberseguridad.js +139 -0
- package/dist/core/evaluador-ciberseguridad.js.map +1 -0
- package/dist/core/evaluador-estilos.d.ts +9 -0
- package/dist/core/evaluador-estilos.d.ts.map +1 -0
- package/dist/core/evaluador-estilos.js +132 -0
- package/dist/core/evaluador-estilos.js.map +1 -0
- package/dist/core/evaluador-licencias.d.ts +10 -0
- package/dist/core/evaluador-licencias.d.ts.map +1 -0
- package/dist/core/evaluador-licencias.js +139 -0
- package/dist/core/evaluador-licencias.js.map +1 -0
- package/dist/core/evaluador-lighthouse.d.ts +5 -0
- package/dist/core/evaluador-lighthouse.d.ts.map +1 -0
- package/dist/core/evaluador-lighthouse.js +78 -0
- package/dist/core/evaluador-lighthouse.js.map +1 -0
- package/dist/core/evaluador-sanitizer.d.ts +5 -0
- package/dist/core/evaluador-sanitizer.d.ts.map +1 -0
- package/dist/core/evaluador-sanitizer.js +109 -0
- package/dist/core/evaluador-sanitizer.js.map +1 -0
- package/dist/core/evaluador-sintaxis.d.ts +37 -0
- package/dist/core/evaluador-sintaxis.d.ts.map +1 -0
- package/dist/core/evaluador-sintaxis.js +372 -0
- package/dist/core/evaluador-sintaxis.js.map +1 -0
- package/dist/core/evaluador-topologia.d.ts +9 -0
- package/dist/core/evaluador-topologia.d.ts.map +1 -0
- package/dist/core/evaluador-topologia.js +86 -0
- package/dist/core/evaluador-topologia.js.map +1 -0
- package/dist/core/evaluador-wp-woo.d.ts +15 -0
- package/dist/core/evaluador-wp-woo.d.ts.map +1 -0
- package/dist/core/evaluador-wp-woo.js +197 -0
- package/dist/core/evaluador-wp-woo.js.map +1 -0
- package/dist/core/generador-reporte-html.d.ts +12 -0
- package/dist/core/generador-reporte-html.d.ts.map +1 -0
- package/dist/core/generador-reporte-html.js +760 -0
- package/dist/core/generador-reporte-html.js.map +1 -0
- package/dist/core/linter-inline-css.d.ts +20 -0
- package/dist/core/linter-inline-css.d.ts.map +1 -0
- package/dist/core/linter-inline-css.js +77 -0
- package/dist/core/linter-inline-css.js.map +1 -0
- package/dist/core/orquestador.d.ts +33 -0
- package/dist/core/orquestador.d.ts.map +1 -0
- package/dist/core/orquestador.js +518 -0
- package/dist/core/orquestador.js.map +1 -0
- package/dist/core/punto-control.d.ts +26 -0
- package/dist/core/punto-control.d.ts.map +1 -0
- package/dist/core/punto-control.js +129 -0
- package/dist/core/punto-control.js.map +1 -0
- package/dist/core/repositorio-sqlite.d.ts +16 -0
- package/dist/core/repositorio-sqlite.d.ts.map +1 -0
- package/dist/core/repositorio-sqlite.js +129 -0
- package/dist/core/repositorio-sqlite.js.map +1 -0
- package/dist/core/types.d.ts +75 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +35 -0
- package/dist/core/types.js.map +1 -0
- package/dist/hooks/guardian-git.d.ts +23 -0
- package/dist/hooks/guardian-git.d.ts.map +1 -0
- package/dist/hooks/guardian-git.js +111 -0
- package/dist/hooks/guardian-git.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/ejecutor.d.ts +19 -0
- package/dist/utils/ejecutor.d.ts.map +1 -0
- package/dist/utils/ejecutor.js +44 -0
- package/dist/utils/ejecutor.js.map +1 -0
- package/package.json +50 -4
package/PUF-15.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aumic-puf15
|
|
3
|
+
description: Protocolo Universal contra Fallos (PUF-15) del Estándar AUM-IC 7:2026. Matriz de 15 compuertas de calidad agnóstica (Rust, Astro, Python, PHP, C#) para auditoría, detección, resolución metódica de fallos, refactorización limpia sin deuda técnica y blindaje de ergonomía del sistema operativo.
|
|
4
|
+
---
|
|
5
|
+
# Protocolo Universal contra Fallos (PUF-15) — AUM-IC 7:2026
|
|
6
|
+
### Matriz de Compuertas de Calidad Agnóstica (Rust, Astro, Python, PHP, C#)
|
|
7
|
+
|
|
8
|
+
Cuando el usuario invoque **PUF-15** (o PUF) o solicite resolver un fallo bajo este estándar, se debe ejecutar con rigor militar este ciclo cerrado de 15 compuertas consecutivas (G1 a G15), reportando el progreso y las evidencias en consola:
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Matriz de Compuertas de Calidad (G1 - G15)
|
|
13
|
+
|
|
14
|
+
### 1. G1: Mapeo de Comportamientos y Límites (Behavior & Boundary Mapping)
|
|
15
|
+
- **Alcance:** Analizar el flujo completo de ejecución y ciclo de vida de la UI.
|
|
16
|
+
- **Acciones:**
|
|
17
|
+
- Identificar entradas, tipos, contratos, mutaciones y salidas esperadas.
|
|
18
|
+
- Definir formalmente casos de borde: valores nulos (`None`, `null`, `Option::None`), cadenas vacías, desbordamientos numéricos, condiciones de carrera/concurrencia y accesos no autenticados o permisos insuficientes.
|
|
19
|
+
- **Aislamiento del Bucle de UI:** Prohibido disparar I/O pesado, comandos o procesos síncronos dentro de temporizadores o callbacks de interfaz gráfica (`slint::Timer`, `setInterval`, `requestAnimationFrame`). Deben delegarse a tareas de fondo asíncronas con canales o cachearse de forma atómica.
|
|
20
|
+
|
|
21
|
+
### 2. G2: Test de Reproducción — Fase Roja (Reproduction Test-First)
|
|
22
|
+
- **Alcance:** Probar y demostrar empíricamente el defecto antes de tocar una sola línea de lógica.
|
|
23
|
+
- **Acciones:**
|
|
24
|
+
- Escribir un test automatizado (unitario, integración o CLI determinista) que replique la falla reportada con fidelidad.
|
|
25
|
+
- Ejecutar el test y confirmar que falle contra el código actual (*Red State*), validando que el bug ha sido capturado de forma determinista.
|
|
26
|
+
|
|
27
|
+
### 3. G3: Checkpoint Inmutable (State Snapshot)
|
|
28
|
+
- **Alcance:** Blindaje de rollback y preservación de estado pre-mutación.
|
|
29
|
+
- **Acciones:**
|
|
30
|
+
- Generar un respaldo atómico timestamped en `checkpoints/` o tag git (`<archivo>.bak_YYYYMMDD_HHMMSS`).
|
|
31
|
+
- Registrar hash de verificación o estado previo para permitir reversión instantánea sin pérdida de información ni corrupción colateral.
|
|
32
|
+
|
|
33
|
+
### 4. G4: Reparación Focalizada y Refactorización Limpia (Pure Logic Refactor)
|
|
34
|
+
- **Alcance:** Corrección quirúrgica de la causa raíz.
|
|
35
|
+
- **Acciones:**
|
|
36
|
+
- Atacar la causa raíz sin aplicar parches superficiales ni parches ciegos.
|
|
37
|
+
- Cero código muerto, cero dependencias circulares, bajo acoplamiento y alta cohesión.
|
|
38
|
+
- Cumplir principios de código limpio del stack correspondiente:
|
|
39
|
+
- **Rust:** Cero `unwrap()` no justificado; manejo exhaustivo con `Result` / `Option`.
|
|
40
|
+
- **Astro:** Componentes puros, separación de lógica frontmatter y JSX estático/reactivo.
|
|
41
|
+
- **Python:** Tipado estricto (Type hints), PEP 8, manejo explícito de excepciones.
|
|
42
|
+
- **PHP:** POO fuertemente tipada, tipos estrictos (`declare(strict_types=1);`), inyección de dependencias.
|
|
43
|
+
- **Prohibición Absoluta de CSS Inline:** Queda terminantemente prohibido inyectar atributos `style="..."` o estilos en línea en el HTML/PHP/JSX/Astro. Si se encuentran estilos inline preexistentes, es obligatorio refactorizarlos y extraerlos a su archivo `.css` o `.scss` respectivo con clases semánticas estructuradas.
|
|
44
|
+
|
|
45
|
+
### 5. G5: Validación de Test y No-Regresión — Fase Verde (Green State & Non-Regression)
|
|
46
|
+
- **Alcance:** Verificación de solución completa y estabilidad perimetral.
|
|
47
|
+
- **Acciones:**
|
|
48
|
+
- Reejecutar el test de reproducción desarrollado en G2 y validar el 100% de aserciones aprobadas (*Green State*).
|
|
49
|
+
- Ejecutar la suite de pruebas perimetral/completa para certificar cero efectos secundarios o regresiones colaterales.
|
|
50
|
+
|
|
51
|
+
### 6. G6: Análisis Estático, Tipado y Compilador Estricto (Static Gate)
|
|
52
|
+
- **Alcance:** Tolerancia cero a advertencias del compilador o linters.
|
|
53
|
+
- **Acciones:**
|
|
54
|
+
- Ejecutar compilador y análisis estático en modo estricto según el stack:
|
|
55
|
+
- **Rust:** `cargo clippy -- -D warnings` y `cargo check`.
|
|
56
|
+
- **Astro / TypeScript:** `npx astro check` y `npx eslint`.
|
|
57
|
+
- **Python:** `ruff check` y `mypy --strict`.
|
|
58
|
+
- **PHP:** `php -l` (sintaxis) y `phpstan analyse --level=max`.
|
|
59
|
+
- Cero advertencias o errores tolerados.
|
|
60
|
+
|
|
61
|
+
### 7. G7: Documentación Semántica y Registro ADR (Intent & Architecture Decision)
|
|
62
|
+
- **Alcance:** Memoria técnica e intención arquitectónica.
|
|
63
|
+
- **Acciones:**
|
|
64
|
+
- Explicar en comentarios de código el *por qué* de la decisión y no solo el *qué hace*.
|
|
65
|
+
- Registrar en `BITACORA.md` de la raíz del proyecto bajo el formato estricto:
|
|
66
|
+
```markdown
|
|
67
|
+
[Timestamp] | Contexto | Decisión | Consecuencia
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 8. G8: Aplanadora POSIX y Sanitización Anti-Mojibake (aumic-sanitizer)
|
|
71
|
+
- **Alcance:** Integridad de codificación y terminación de línea.
|
|
72
|
+
- **Acciones:**
|
|
73
|
+
- Barrer los archivos con `node C:\Users\NexoRemoto\Proyectos\aumic-sanitizer\index.js` (o `npx aumic-sanitizer`).
|
|
74
|
+
- Purgar de raíz cualquier carácter corrupto Mojibake (ej. `ó`, `’`, `ñ`) forzando UTF-8 puro sin BOM.
|
|
75
|
+
- Aplanar y forzar saltos de línea Unix LF (`\n`), erradicando Windows CRLF (`\r\n`).
|
|
76
|
+
|
|
77
|
+
### 9. G9: Integridad Operativa, Permisos y Secretos Zero-Trust (Ops Shield)
|
|
78
|
+
- **Alcance:** Blindaje de infraestructura y seguridad de credenciales.
|
|
79
|
+
- **Acciones:**
|
|
80
|
+
- Verificar permisos restrictivos en sistema de archivos (`chmod 644` archivos / `755` directorios, llaves SSH `600`, propietario correcto del servicio `chown`).
|
|
81
|
+
- Cero credenciales, tokens o contraseñas en texto plano. Gestionar accesos vía variables de entorno seguras o `SECRETOS.py`.
|
|
82
|
+
|
|
83
|
+
### 10. G10: Invalidación y Purga de Estado Efímero (State Flush)
|
|
84
|
+
- **Alcance:** Consumo garantizado del código fresco en runtime.
|
|
85
|
+
- **Acciones:**
|
|
86
|
+
- Purgar deterministamente memoria compartida, caché de objetos (`wp cache flush`, Redis, Memcached, Opcache).
|
|
87
|
+
- Limpiar transientes de base de datos o reiniciar workers (Gunicorn, Systemd, SSR Node, PM2) para garantizar que los clientes o servicios consuman el código recién validado sin residuos en memoria.
|
|
88
|
+
|
|
89
|
+
### 11. G11: Blindaje de Ergonomía del SO, Foco de Ventanas y Aislamiento UI (OS & Desktop Ergonomics Gate)
|
|
90
|
+
- **Alcance:** Experiencia de usuario inmaculada, ausencia total de robo de foco y persistencia limpia en el Sistema Operativo.
|
|
91
|
+
- **Acciones:**
|
|
92
|
+
- **Inmunidad al Robo de Foco (Zero-Focus Stealing):** Toda invocación de subprocesos en Windows (`Command::new`, `powershell`, `cmd`, `sc`, `reg`, `net`) DEBE incorporar obligatoriamente `.creation_flags(0x08000000)` (`CREATE_NO_WINDOW`) para erradicar consolas emergentes o parpadeos (flickering) que desactiven la ventana activa del usuario.
|
|
93
|
+
- **Zero-Ghost Processes:** Comprobar que al cerrar la aplicación no queden procesos huérfanos (`conhost`, workers zombies) consumiendo CPU.
|
|
94
|
+
- **Caché de Consultas de Privilegios:** Consultas de privilegios (`is_admin`) o del SCM deben usar caché atómico perezoso (`AtomicU8` / `OnceLock`), evitando invocaciones repetidas de subprocesos en bucles de tiempo.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
### 12. G12: Topología de Rutas Vivas & Dead Link Sweeper (Living Routes Gate)
|
|
98
|
+
- **Alcance:** Integridad de navegación sin pantallas 404 ni rutas huérfanas en Web (Astro, React, Next, Vue), Mobile (Flutter, React Native) y Desktop (Slint, C /WPF, Tauri).
|
|
99
|
+
- Cero enlaces rotos hacia destinos locales inexistentes.
|
|
100
|
+
|
|
101
|
+
### 13. G13: Grafo de Interactividad & Erradicación Zombie (Living UI Actions Gate)
|
|
102
|
+
- Cero botones decorativos, pseudoelementos inertes o acciones no conectadas que no responden al usuario.
|
|
103
|
+
|
|
104
|
+
- Todo control interactivo debe resolver en un evento real (API, modal, mutación o feedback).
|
|
105
|
+
|
|
106
|
+
### 14. G14: Traza de Contratos HTTP & Endpoints Vivos (Living API Contract Gate)
|
|
107
|
+
- Consistencia granular entre las llamadas del cliente y los controladores declarados en el backend.
|
|
108
|
+
- Cero llamadas fetch o solicitudes HTTP a paths huérfanos o inexistentes.
|
|
109
|
+
|
|
110
|
+
### 15. G15: Headless E2E Crawler & Runtime Exceptions (Headless Handshake Gate)
|
|
111
|
+
- Detección de errores silenciosos, excepciones de runtime y bloqueos de interfaz.
|
|
112
|
+
- Certificación del pase limpio de interactividad antes de liberar a producción.
|
|
113
|
+
|
|
114
|
+
## Reglas Inviolables de Ejecución
|
|
115
|
+
|
|
116
|
+
1. **Cero Complacencia o Respuestas Evasivas:** No dejar tareas a medias ni usar marcadores vacíos (`// el resto del código aquí`).
|
|
117
|
+
2. **Determinismo Técnico:** Todo entregable debe ser determinista, verificado en consola y listo para producción.
|
|
118
|
+
3. **Reporte por Compuerta:** Reportar siempre el estado de cada compuerta (G1 a G15) con su respectiva evidencia de consola.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# PUF G16 – Integración de auditorías Lighthouse
|
|
2
|
+
|
|
3
|
+
## Objetivo
|
|
4
|
+
Incorporar métricas críticas de rendimiento, accesibilidad, SEO y buenas prácticas que Lighthouse evalúa, para enriquecer el Protocolo Universal de Fallos (PUF) bajo el paradigma AUM‑IC 7:2026.
|
|
5
|
+
|
|
6
|
+
## KPI Prioritarios de Lighthouse (basados en Google PSI)
|
|
7
|
+
| Categoría | Métrica | Umbral de PASS | Umbral de WARN | Umbral de FAIL |
|
|
8
|
+
|-----------|---------|----------------|----------------|----------------|
|
|
9
|
+
| **Core Web Vitals** | **Largest Contentful Paint (LCP)** | < 2.5 s | 2.5 s – 4 s | > 4 s |
|
|
10
|
+
| | **Cumulative Layout Shift (CLS)** | < 0.1 | 0.1 – 0.25 | > 0.25 |
|
|
11
|
+
| | **First Input Delay (FID)** (o **Total Blocking Time** si FID no está disponible) | < 100 ms | 100 ms – 300 ms | > 300 ms |
|
|
12
|
+
| **Performance** | **Speed Index** | < 3 s | 3 s – 4.5 s | > 4.5 s |
|
|
13
|
+
| | **Time to Interactive (TTI)** | < 5 s | 5 s – 7 s | > 7 s |
|
|
14
|
+
| **Accessibility** | **Contrast Ratio** (texto vs fondo) | ≥ 4.5:1 (normal) ≥ 3:1 (large) | – | < 3:1 |
|
|
15
|
+
| | **ARIA roles & labels** | Todos presentes | – | Falta alguno |
|
|
16
|
+
| | **Form labels** | 100 % etiquetado | – | < 100 % |
|
|
17
|
+
| **SEO** | **Meta description** | Presente y 50‑160 caracteres | – | Ausente o fuera de rango |
|
|
18
|
+
| | **Title length** | 50‑60 caracteres | – | < 30 o > 70 |
|
|
19
|
+
| | **Canonical link** | Presente y válido | – | Ausente o inválido |
|
|
20
|
+
| **Best Practices** | **HTTPS** | Sí | – | No |
|
|
21
|
+
| | **Sin contenido mixto** | Sí | – | No |
|
|
22
|
+
| | **Política de caché** (Cache‑Control) | > 1 día para assets estáticos | – | < 1 día |
|
|
23
|
+
|
|
24
|
+
## Mapeo a checkpoints del PUF y pesos (siguiendo la distribución de Google PSI)
|
|
25
|
+
- **G16‑01**: LCP – **Peso 10 %** del bloque G16.
|
|
26
|
+
- **G16‑02**: CLS – **Peso 10 %**.
|
|
27
|
+
- **G16‑03**: FID/TBT – **Peso 10 %**.
|
|
28
|
+
- **G16‑04**: Speed Index – **Peso 8 %**.
|
|
29
|
+
- **G16‑05**: TTI – **Peso 7 %**.
|
|
30
|
+
- **G16‑06**: Accesibilidad (contrast, ARIA, labels) – **Peso 15 %**.
|
|
31
|
+
- **G16‑07**: SEO (meta, title, canonical) – **Peso 10 %**.
|
|
32
|
+
- **G16‑08**: Buenas prácticas (HTTPS, mixed‑content, cache) – **Peso 10 %**.
|
|
33
|
+
- **G16‑09**: Peso agregado de **Performance** dentro del PUF global – **40 %** del puntaje total (suma de los pesos anteriores).
|
|
34
|
+
- **G16‑10**: Peso de **Accesibilidad** dentro del PUF global – **15 %**.
|
|
35
|
+
- **G16‑11**: Peso de **SEO** dentro del PUF global – **10 %**.
|
|
36
|
+
- **G16‑12**: Peso de **Best Practices** dentro del PUF global – **10 %**.
|
|
37
|
+
|
|
38
|
+
## Umbrales de salud del PUF (Google PSI style)
|
|
39
|
+
- **Excelente**: Todos los KPI en PASS.
|
|
40
|
+
- **Adecuado**: Máximo 2 WARN, sin FAIL.
|
|
41
|
+
- **Deficiente**: ≥ 1 FAIL o > 2 WARN.
|
|
42
|
+
|
|
43
|
+
## Prototipo de auditoría Lighthouse (`lighthouse-audit.js`)
|
|
44
|
+
Se añadirá un script Node que:
|
|
45
|
+
1. Recibe una URL como argumento.
|
|
46
|
+
2. Ejecuta `lighthouse` con `--only-categories=performance,accessibility,seo,best-practices`.
|
|
47
|
+
3. Extrae los scores y métricas clave (LCP, CLS, FID/TBT, Speed Index, TTI, contrast, ARIA, etc.).
|
|
48
|
+
4. Genera un JSON compatible con el formato actual de `report-generator.js`.
|
|
49
|
+
5. Opcional: actualiza el puntaje global del PUF según los pesos definidos.
|
|
50
|
+
|
|
51
|
+
## Integración CI/CD (opciones)
|
|
52
|
+
- **GitHub Actions**: workflow que instala `node`, corre `npm ci`, ejecuta `node scripts/lighthouse-audit.js <URL>`, falla si algún KPI está en FAIL y publica artefacto HTML.
|
|
53
|
+
- **Azure Pipelines**: pipeline YAML con etapas `npm install`, `npm run lighthouse-audit -- <URL>`, `PublishTestResults` para fallos.
|
|
54
|
+
- **GitLab CI**: similar a GH Actions, usando `script:` secciones.
|
|
55
|
+
- **Local on‑demand**: ejecutable vía `npx lighthouse-audit <URL>` o `npm run lighthouse-audit -- <URL>`.
|
|
56
|
+
|
|
57
|
+
## Dependencias
|
|
58
|
+
```bash
|
|
59
|
+
npm i lighthouse chrome-launcher --save-dev
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Próximos pasos
|
|
63
|
+
1. Crear `scripts/lighthouse-audit.js` con el esqueleto descrito.
|
|
64
|
+
2. Extender `report-generator.js` para consumir los nuevos campos.
|
|
65
|
+
3. Añadir script a `package.json` (`"lighthouse-audit": "node scripts/lighthouse-audit.js"`).
|
|
66
|
+
4. Configurar CI (GitHub Actions o Azure Pipelines) según tu preferencia.
|
|
67
|
+
5. Ejecutar pruebas en `https://segurosiller.com/` y validar visualmente.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
*Este documento está listo para ser versionado en el repositorio `aumic-puf`.*
|
package/README.md
CHANGED
|
@@ -1,3 +1,254 @@
|
|
|
1
|
-
#
|
|
1
|
+
# AUM-IC PUF — Protocolo Universal contra Fallos (PUF-23)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
[](https://github.com/ingcrea/aum-ic)
|
|
5
|
+
[](https://www.npmjs.com/package/@ingcrea/aumic-puf)
|
|
6
|
+
|
|
7
|
+
> Suite oficial de aseguramiento de calidad y orquestador determinista para facilitar el cumplimiento del estándar [AUM-IC 7:2026](https://github.com/ingcrea/aum-ic) por **Ingeniería Creativa (IngCrea)**.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Matriz de 23 Compuertas de Calidad (G0 - G22)
|
|
12
|
+
|
|
13
|
+
### 0. G0: Higiene Forense Anti-Entropía y Codificación Pura (aumic-sanitizer Audit)
|
|
14
|
+
- **Alcance:** Diagnóstico in-process de mojibake, entropía de caracteres, saltos CRLF y codificación UTF-8 pura.
|
|
15
|
+
|
|
16
|
+
### 1. G1: Mapeo de Comportamientos y Límites (Behavior & Boundary Mapping)
|
|
17
|
+
- **Alcance:** Analizar el flujo completo de ejecución, ciclo de vida de la UI y desacoplamiento de hilos pesados.
|
|
18
|
+
|
|
19
|
+
### 2. G2: Test de Reproducción — Fase Roja (Reproduction Test-First)
|
|
20
|
+
- **Alcance:** Escribir y verificar test automatizado previo a tocar código de lógica (*Red State*).
|
|
21
|
+
|
|
22
|
+
### 3. G3: Checkpoint Inmutable (State Snapshot)
|
|
23
|
+
- **Alcance:** Respaldos atómicos con hash SHA-256 en `checkpoints/` para permitir reversión instantánea.
|
|
24
|
+
|
|
25
|
+
### 4. G4: Reparación Focalizada y Cero CSS Inline (Pure Logic Refactor)
|
|
26
|
+
- **Alcance:** Erradicación de causa raíz, cero código muerto y prohibición de atributos `style="..."` inline.
|
|
27
|
+
|
|
28
|
+
### 5. G5: Validación de Test y No-Regresión — Fase Verde (Green State & Non-Regression)
|
|
29
|
+
- **Alcance:** 100% de aserciones aprobadas y verificación perimetral contra regresiones colaterales.
|
|
30
|
+
|
|
31
|
+
### 6. G6: Análisis Estático Estricto (Static Gate Multi-Ecosystem)
|
|
32
|
+
- **Alcance:** Compiladores y linters en modo estricto (Rust, TypeScript, Python, PHP, Java, C#, C++, Swift, etc.).
|
|
33
|
+
|
|
34
|
+
### 7. G7: Documentación Semántica y Registro ADR (Intent & Architecture Decision)
|
|
35
|
+
- **Alcance:** Registro obligatorio de decisiones de arquitectura en `BITACORA.md`.
|
|
36
|
+
|
|
37
|
+
### 8. G8: Aplanadora POSIX y Sanitización Anti-Mojibake
|
|
38
|
+
- **Alcance:** Blindaje de bytes LF puros y UTF-8 estricto sin BOM.
|
|
39
|
+
|
|
40
|
+
### 9. G9: Integridad Operativa, Permisos y Secretos Zero-Trust
|
|
41
|
+
- **Alcance:** Permisos POSIX (644/755) y cero credenciales en texto plano.
|
|
42
|
+
|
|
43
|
+
### 10. G10: Invalidación y Purga de Estado Efímero
|
|
44
|
+
- **Alcance:** Purga de cachés de compilación (.next, .turbo, target, __pycache__, .phpunit.cache).
|
|
45
|
+
|
|
46
|
+
### 11. G11: Ergonomía del SO, Foco de Ventanas y Aislamiento UI (Zero-Focus Stealing)
|
|
47
|
+
- **Alcance:** Compuerta obligatoria contra robo de foco en Windows (`CREATE_NO_WINDOW`) e I/O desacoplado de loops UI.
|
|
48
|
+
|
|
49
|
+
### 12. G12: Topología de Rutas Vivas & Dead Link Sweeper
|
|
50
|
+
- **Alcance:** Detección de enlaces y destinos locales rotos en código web.
|
|
51
|
+
|
|
52
|
+
### 13. G13: Grafo de Interactividad & Erradicación Zombie
|
|
53
|
+
- **Alcance:** Erradicación de botones decorativos o handlers de eventos inertes.
|
|
54
|
+
|
|
55
|
+
### 14. G14: Traza de Contratos HTTP & Endpoints Vivos
|
|
56
|
+
- **Alcance:** Detección estática de contratos HTTP rotos o paths huérfanos.
|
|
57
|
+
|
|
58
|
+
### 15. G15: Headless E2E Crawler & Runtime Exceptions
|
|
59
|
+
- **Alcance:** Suites E2E (Playwright / Cypress) para verificación de flujo funcional.
|
|
60
|
+
|
|
61
|
+
### 16. G16: Calidad Visual, Core Web Vitals y Auditoría Web (Lighthouse / CWV)
|
|
62
|
+
- **Alcance:** Puntuación de experiencia de usuario, layouts DOM estables y Core Web Vitals.
|
|
63
|
+
|
|
64
|
+
### 17. G17: Blindaje Legal, Integridad de Licencias y Compatibilidad (IP & License Guard)
|
|
65
|
+
- **Alcance:** Consistencia entre manifiestos (`package.json`, `Cargo.toml`) y archivos `LICENSE`, titularidad y copyright.
|
|
66
|
+
|
|
67
|
+
### 18. G18: Consistencia de Motores de Estilo y Erradicación de Antipatrones (Style Engine Consistency)
|
|
68
|
+
- **Alcance:** Prevención de colisión entre frameworks (ej. Tailwind + Bootstrap) y control de deuda de `!important`.
|
|
69
|
+
|
|
70
|
+
### 19. G19: Blindaje de Superficie de Ataque y Cero Inyecciones (Zero-Injection Guard)
|
|
71
|
+
- **Alcance:** Erradicación de archivos expuestos (`.env`, `dump.sql`) y prevención de concatenación SQL directa.
|
|
72
|
+
|
|
73
|
+
### 20. G20: Topología de Entornos, Aislamiento de Red y Cero Conexiones Fantasma (Topology Guard)
|
|
74
|
+
- **Alcance:** Erradicación de referencias hardcodeadas a `localhost` / `127.0.0.1` en entornos de producción.
|
|
75
|
+
|
|
76
|
+
### 21. G21: Cumplimiento Oficial WordPress & WooCommerce (WPCS & WC Guidelines)
|
|
77
|
+
- **Alcance:** Auditoría estricta de sanitización de superglobales, prepared queries en `$wpdb`, compatibilidad obligatoria con High-Performance Order Storage (HPOS) y métodos CRUD canónicos de `WC_Order`.
|
|
78
|
+
|
|
79
|
+
### 22. G22: Diagnóstico Universal de Sintaxis y Delimitadores (Universal Syntax Guard)
|
|
80
|
+
- **Alcance:** Localización exacta de omisiones de punto y coma (`;`), comas en JSON y llaves/corchetes/paréntesis desbalanceados en memoria sin requerir compiladores externos.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Uso del Orquestador (CLI)
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Instalación global desde npm
|
|
88
|
+
npm install -g @ingcrea/aumic-puf
|
|
89
|
+
|
|
90
|
+
# Auditar todas las compuertas de la matriz (G0 a G22)
|
|
91
|
+
puf auditar
|
|
92
|
+
|
|
93
|
+
# Auditar compuertas focalizadas (G0, G21, G22)
|
|
94
|
+
puf auditar -g G0,G21,G22
|
|
95
|
+
|
|
96
|
+
# Modo fail-fast (aborta al primer fallo detectado)
|
|
97
|
+
puf auditar --fast
|
|
98
|
+
|
|
99
|
+
# Consultar versión instalada
|
|
100
|
+
puf -v
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 1. G1: Mapeo de Comportamientos y Limites (Behavior & Boundary Mapping)
|
|
104
|
+
- **Alcance:** Analizar el flujo completo de ejecucion y ciclo de vida de la UI.
|
|
105
|
+
- **Acciones:**
|
|
106
|
+
- Identificar entradas, tipos, contratos, mutaciones y salidas esperadas.
|
|
107
|
+
- Definir formalmente casos de borde: valores nulos (`None`, `null`, `Option::None`), cadenas vacias, desbordamientos numericos, condiciones de carrera/concurrencia y accesos no autenticados.
|
|
108
|
+
- **Aislamiento del Bucle de UI:** Prohibido disparar I/O pesado, comandos o procesos sincronos dentro de temporizadores o callbacks de interfaz grafica (`slint::Timer`, `setInterval`, `requestAnimationFrame`). Deben delegarse a tareas de fondo asincronas o cachearse atomicamente.
|
|
109
|
+
|
|
110
|
+
### 2. G2: Test de Reproduccion -- Fase Roja (Reproduction Test-First)
|
|
111
|
+
- **Alcance:** Probar y demostrar empiricamente el defecto antes de tocar una sola linea de logica.
|
|
112
|
+
- **Acciones:**
|
|
113
|
+
- Escribir un test automatizado (unitario, integracion o CLI determinista) que replique la falla reportada con fidelidad.
|
|
114
|
+
- Ejecutar el test y confirmar que falle contra el codigo actual (*Red State*).
|
|
115
|
+
|
|
116
|
+
### 3. G3: Checkpoint Inmutable (State Snapshot)
|
|
117
|
+
- **Alcance:** Blindaje de rollback y preservacion de estado pre-mutacion.
|
|
118
|
+
- **Acciones:**
|
|
119
|
+
- Generar un respaldo atomico timestamped en `checkpoints/` (`<archivo>.bak_YYYYMMDDHHMMSS`).
|
|
120
|
+
- Registrar hash SHA-256 para permitir reversion instantanea sin perdida de informacion.
|
|
121
|
+
|
|
122
|
+
### 4. G4: Reparacion Focalizada y Refactorizacion Limpia (Pure Logic Refactor)
|
|
123
|
+
- **Alcance:** Correccion quirurgica de la causa raiz.
|
|
124
|
+
- **Acciones:**
|
|
125
|
+
- Atacar la causa raiz sin parches superficiales. Cero codigo muerto, cero dependencias circulares.
|
|
126
|
+
- Cumplir principios de codigo limpio del stack correspondiente:
|
|
127
|
+
- **Rust:** Cero `unwrap()` no justificado; manejo exhaustivo con `Result` / `Option`.
|
|
128
|
+
- **Astro:** Componentes puros, separacion de logica frontmatter y JSX estatico/reactivo.
|
|
129
|
+
- **Python:** Tipado estricto (Type hints), PEP 8, manejo explicito de excepciones.
|
|
130
|
+
- **PHP:** POO fuertemente tipada, `declare(strict_types=1);`, inyeccion de dependencias.
|
|
131
|
+
- **Prohibicion Absoluta de CSS Inline:** Queda terminantemente prohibido inyectar `style="..."` en HTML/PHP/JSX/Astro. Si existen estilos inline preexistentes, refactorizarlos a archivos `.css`/`.scss`.
|
|
132
|
+
|
|
133
|
+
### 5. G5: Validacion de Test y No-Regresion -- Fase Verde (Green State & Non-Regression)
|
|
134
|
+
- **Alcance:** Verificacion de solucion completa y estabilidad perimetral.
|
|
135
|
+
- **Acciones:**
|
|
136
|
+
- Reejecutar el test de G2 y validar el 100% de aserciones aprobadas (*Green State*).
|
|
137
|
+
- Ejecutar la suite de pruebas perimetral/completa para certificar cero regresiones colaterales.
|
|
138
|
+
|
|
139
|
+
### 6. G6: Analisis Estatico, Tipado y Compilador Estricto (Static Gate)
|
|
140
|
+
- **Alcance:** Tolerancia cero a advertencias del compilador o linters.
|
|
141
|
+
- **Acciones:**
|
|
142
|
+
- Ejecutar compilador y analisis estatico en modo estricto segun el stack:
|
|
143
|
+
- **Rust:** `cargo clippy -- -D warnings` y `cargo check`.
|
|
144
|
+
- **Astro / TypeScript:** `npx astro check` y `npx eslint`.
|
|
145
|
+
- **Python:** `ruff check` y `mypy --strict`.
|
|
146
|
+
- **PHP:** `php -l` y `phpstan analyse --level=max`.
|
|
147
|
+
- Cero advertencias o errores tolerados.
|
|
148
|
+
|
|
149
|
+
### 7. G7: Documentacion Semantica y Registro ADR (Intent & Architecture Decision)
|
|
150
|
+
- **Alcance:** Memoria tecnica e intencion arquitectonica.
|
|
151
|
+
- **Acciones:**
|
|
152
|
+
- Explicar en comentarios de codigo el *por que* de la decision y no solo el *que hace*.
|
|
153
|
+
- Registrar en `BITACORA.md` de la raiz del proyecto bajo el formato estricto:
|
|
154
|
+
```
|
|
155
|
+
[Timestamp] | Contexto | Decision | Consecuencia
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 8. G8: Aplanadora POSIX y Sanitizacion Anti-Mojibake (aumic-sanitizer)
|
|
159
|
+
- **Alcance:** Integridad de codificacion y terminacion de linea.
|
|
160
|
+
- **Acciones:**
|
|
161
|
+
- Barrer los archivos con `node C:\Users\NexoRemoto\Proyectos\aumic-sanitizer\dist\index.js audit .`
|
|
162
|
+
- Purgar caracteres Mojibake forzando UTF-8 puro sin BOM.
|
|
163
|
+
- Aplanar y forzar saltos de linea Unix LF (`\n`), erradicando Windows CRLF (`\r\n`).
|
|
164
|
+
|
|
165
|
+
### 9. G9: Integridad Operativa, Permisos y Secretos Zero-Trust (Ops Shield)
|
|
166
|
+
- **Alcance:** Blindaje de infraestructura y seguridad de credenciales.
|
|
167
|
+
- **Acciones:**
|
|
168
|
+
- Verificar permisos restrictivos en sistema de archivos (`chmod 644` archivos / `755` directorios, llaves SSH `600`).
|
|
169
|
+
- Cero credenciales, tokens o contrasenas en texto plano. Gestionar accesos via variables de entorno seguras o `SECRETOS.py`.
|
|
170
|
+
|
|
171
|
+
### 10. G10: Invalidacion y Purga de Estado Efimero (State Flush)
|
|
172
|
+
- **Alcance:** Consumo garantizado del codigo fresco en runtime.
|
|
173
|
+
- **Acciones:**
|
|
174
|
+
- Purgar deterministamente cache de objetos (Redis, Memcached, Opcache, `.next`, `dist`).
|
|
175
|
+
- Reiniciar workers (Gunicorn, Systemd, SSR Node, PM2) para garantizar que los clientes consuman el codigo validado.
|
|
176
|
+
|
|
177
|
+
### 11. G11: Blindaje de Ergonomia del SO, Foco de Ventanas y Aislamiento UI (OS & Desktop Ergonomics Gate)
|
|
178
|
+
- **Alcance:** Experiencia de usuario inmaculada, ausencia total de robo de foco.
|
|
179
|
+
- **Acciones:**
|
|
180
|
+
- **Inmunidad al Robo de Foco (Zero-Focus Stealing):** Toda invocacion de subprocesos en Windows (`Command::new`, `powershell`, `cmd`) DEBE incorporar `.creation_flags(0x08000000)` (`CREATE_NO_WINDOW`).
|
|
181
|
+
- **Zero-Ghost Processes:** Al cerrar la aplicacion, no deben quedar procesos huerfanos consumiendo CPU.
|
|
182
|
+
- **Cache de Consultas de Privilegios:** Usar cache atomico perezoso (`AtomicU8` / `OnceLock`), evitando invocaciones repetidas en bucles.
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
### 12. G12: Topologia de Rutas Vivas & Dead Link Sweeper (Living Routes Gate)
|
|
187
|
+
- **Alcance:** Integridad de navegacion sin pantallas 404 ni rutas huerfanas en Web (Astro, React, Next, Vue), Mobile (Flutter) y Desktop (Slint, C#/WPF, Tauri).
|
|
188
|
+
- **Acciones:**
|
|
189
|
+
- Escanear los archivos HTML/JSX/Astro/PHP afectados con el metodo `auditarRutasVivas()` del adaptador.
|
|
190
|
+
- Detectar atributos `href`, `src`, `to`, `action` que apunten a rutas locales que no existen en el filesystem.
|
|
191
|
+
- Cero enlaces rotos hacia destinos locales inexistentes. Toda ruta relativa debe resolverse a un archivo real.
|
|
192
|
+
- El orquestador informa la lista exacta: `archivo.astro -> "/ruta/inexistente" (no existe en filesystem)`.
|
|
193
|
+
- **Solo aplica a extensiones web:** `.astro`, `.jsx`, `.tsx`, `.html`, `.php`, `.vue`, `.svelte`.
|
|
194
|
+
|
|
195
|
+
### 13. G13: Grafo de Interactividad & Erradicacion Zombie (Living UI Actions Gate)
|
|
196
|
+
- **Alcance:** Cero botones decorativos, pseudoelementos inertes o acciones no conectadas.
|
|
197
|
+
- **Acciones:**
|
|
198
|
+
- Escanear los archivos web afectados con el metodo `auditarInteractividad()` del adaptador.
|
|
199
|
+
- Detectar patrones de handler inerte: `onClick=""`, `onClick={undefined}`, `on:click=""`, `@click=""`.
|
|
200
|
+
- Todo control interactivo debe resolver en un evento real (API call, modal, mutacion de estado o feedback visual).
|
|
201
|
+
- El orquestador reporta exactamente que archivo y linea contiene el handler zombie.
|
|
202
|
+
- **Solo aplica a extensiones web:** `.astro`, `.jsx`, `.tsx`, `.html`, `.php`, `.vue`, `.svelte`.
|
|
203
|
+
|
|
204
|
+
### 14. G14: Traza de Contratos HTTP & Endpoints Vivos (Living API Contract Gate)
|
|
205
|
+
- **Alcance:** Consistencia granular entre las llamadas del cliente y los controladores declarados en el backend.
|
|
206
|
+
- **Acciones:**
|
|
207
|
+
- Analizar los archivos afectados buscando llamadas `fetch(...)` o `axios.get/post/...` con rutas hardcodeadas locales (no `/api/`, no variables de entorno `${}`).
|
|
208
|
+
- Cero llamadas HTTP a paths huerfanos o inexistentes detectados estaticamente.
|
|
209
|
+
- Si se detectan inconsistencias, listar exactamente el archivo y el endpoint problematico.
|
|
210
|
+
|
|
211
|
+
### 15. G15: Headless E2E Crawler & Runtime Exceptions (Headless Handshake Gate)
|
|
212
|
+
- **Alcance:** Deteccion de errores silenciosos, excepciones de runtime y bloqueos de interfaz.
|
|
213
|
+
- **Acciones:**
|
|
214
|
+
- Verificar si existe suite E2E (Playwright `playwright.config.ts`, Cypress `cypress.config.ts`) en la raiz del proyecto.
|
|
215
|
+
- Si existe: marcar como **APROBADA** e instruir al Jefe Maestro a ejecutarla manualmente para certificacion completa.
|
|
216
|
+
- Si NO existe: marcar como **OMITIDA** (no bloquea certificacion) con recomendacion de configurar Playwright.
|
|
217
|
+
- **G15 OMITIDA no es un fallo:** `todasAprobadas` acepta tanto `aprobada` como `omitida`.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Reglas Inviolables de Ejecucion
|
|
222
|
+
|
|
223
|
+
1. **Cero Complacencia:** No dejar tareas a medias ni usar marcadores vacios (`// el resto del codigo aqui`).
|
|
224
|
+
2. **Determinismo Tecnico:** Todo entregable debe ser determinista, verificado en consola y listo para produccion.
|
|
225
|
+
3. **Reporte por Compuerta:** Reportar siempre el estado de cada compuerta (G1 a G15) con su respectiva evidencia.
|
|
226
|
+
4. **G15 es OMITIDA, no RECHAZADA:** Si no hay suite E2E, G15 se omite sin bloquear la certificacion.
|
|
227
|
+
5. **G12 y G13 aplican solo a archivos web:** Para proyectos Rust/Python/Shell sin frontend, estas compuertas se aprueban automaticamente por ausencia de extensiones web en los archivos afectados.
|
|
228
|
+
|
|
229
|
+
## Uso del Orquestador (CLI)
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# Inicializar incidente (crea andamio G2 + checkpoints G3)
|
|
233
|
+
puf iniciar INC-042 "Descripcion del fallo" src/archivo.ts
|
|
234
|
+
|
|
235
|
+
# Auditar las 15 compuertas concurrentemente
|
|
236
|
+
puf auditar INC-042 src/archivo.ts
|
|
237
|
+
|
|
238
|
+
# Modo fail-fast (aborta al primer fallo)
|
|
239
|
+
puf auditar INC-042 src/archivo.ts --fast
|
|
240
|
+
|
|
241
|
+
# Revertir a estado pre-fallo (usando checkpoint G3)
|
|
242
|
+
puf revertir INC-042 archivo.ts
|
|
243
|
+
|
|
244
|
+
# Instalar guardian de Git (pre-commit hook)
|
|
245
|
+
puf instalar-hook
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Licencia
|
|
249
|
+
|
|
250
|
+
Distribuido bajo licencia **GNU Affero General Public License v3.0 (AGPL-3.0)**. Ver [LICENSE](LICENSE).
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
**[Ingeniería Creativa](https://ingcrea.com)** | [Estándar AUM-IC](https://github.com/ingcrea/aum-ic)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file astro.ts
|
|
3
|
+
* @description Adaptador heurístico especializado para Astro / Modern SSR.
|
|
4
|
+
* Compatible cross-platform (Windows & POSIX) con npx.cmd y fallback a npm run build.
|
|
5
|
+
* Estándar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
import type { EcosistemaLenguaje } from '../core/types.js';
|
|
8
|
+
import { AdaptadorBase } from './base.js';
|
|
9
|
+
export declare class AdaptadorAstro extends AdaptadorBase {
|
|
10
|
+
readonly ecosistema: EcosistemaLenguaje;
|
|
11
|
+
readonly nombreLegible: string;
|
|
12
|
+
protected readonly criterios: {
|
|
13
|
+
manifiestos: string[];
|
|
14
|
+
configuraciones: string[];
|
|
15
|
+
lockfiles: string[];
|
|
16
|
+
extensiones: string[];
|
|
17
|
+
};
|
|
18
|
+
ejecutarLinterEstricto(directorioRaiz: string): Promise<{
|
|
19
|
+
exitoso: boolean;
|
|
20
|
+
mensaje: string;
|
|
21
|
+
}>;
|
|
22
|
+
generarAndamioTest(idIncidente: string, descripcionFallo: string): Promise<string>;
|
|
23
|
+
purgarEstado(directorioRaiz: string): Promise<{
|
|
24
|
+
exitoso: boolean;
|
|
25
|
+
mensaje: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=astro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../src/adapters/astro.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAgB,UAAU,EAAE,kBAAkB,CAAW;IACzD,SAAgB,aAAa,EAAE,MAAM,CAAwB;IAE7D,SAAS,CAAC,QAAQ,CAAC,SAAS;;;;;MAK1B;IAEW,sBAAsB,CACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBpC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAIlG"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file astro.ts
|
|
4
|
+
* @description Adaptador heurístico especializado para Astro / Modern SSR.
|
|
5
|
+
* Compatible cross-platform (Windows & POSIX) con npx.cmd y fallback a npm run build.
|
|
6
|
+
* Estándar AUM-IC 7:2026.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AdaptadorAstro = void 0;
|
|
10
|
+
const base_js_1 = require("./base.js");
|
|
11
|
+
const ejecutor_js_1 = require("../utils/ejecutor.js");
|
|
12
|
+
class AdaptadorAstro extends base_js_1.AdaptadorBase {
|
|
13
|
+
ecosistema = 'astro';
|
|
14
|
+
nombreLegible = 'Astro / Modern SSR';
|
|
15
|
+
criterios = {
|
|
16
|
+
manifiestos: ['package.json'],
|
|
17
|
+
configuraciones: ['astro.config.mjs', 'astro.config.ts', 'astro.config.js'],
|
|
18
|
+
lockfiles: ['package-lock.json', 'pnpm-lock.yaml', 'yarn.lock'],
|
|
19
|
+
extensiones: ['.astro'],
|
|
20
|
+
};
|
|
21
|
+
async ejecutarLinterEstricto(directorioRaiz) {
|
|
22
|
+
// 1. Intentar astro check o tsc con comando agnóstico
|
|
23
|
+
const esWindows = process.platform === 'win32';
|
|
24
|
+
const comandoCheck = esWindows ? 'npx.cmd astro check' : 'npx astro check';
|
|
25
|
+
const comandoBuild = esWindows ? 'npm.cmd run build' : 'npm run build';
|
|
26
|
+
let res = await ejecutor_js_1.EjecutorComando.ejecutar(comandoCheck, directorioRaiz);
|
|
27
|
+
if (!res.exitoso) {
|
|
28
|
+
// Fallback a build estricto de Astro (valida tipos, sintaxis y templates al 100%)
|
|
29
|
+
res = await ejecutor_js_1.EjecutorComando.ejecutar(comandoBuild, directorioRaiz);
|
|
30
|
+
}
|
|
31
|
+
if (!res.exitoso) {
|
|
32
|
+
return {
|
|
33
|
+
exitoso: false,
|
|
34
|
+
mensaje: 'Astro Build / TypeScript detectó errores:\n' + (res.salidaError || res.salidaEstandar),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
exitoso: true,
|
|
39
|
+
mensaje: 'Auditoría estricta de compilación y contratos Astro aprobada sin errores.',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async generarAndamioTest(idIncidente, descripcionFallo) {
|
|
43
|
+
return [
|
|
44
|
+
'/**',
|
|
45
|
+
' * Andamio de Test Determinista PUF-15 [Fase Roja G2 / Fase Verde G5]',
|
|
46
|
+
' * Incidente: ' + idIncidente,
|
|
47
|
+
' * Descripción: ' + descripcionFallo,
|
|
48
|
+
' * Estándar AUM-IC 7:2026',
|
|
49
|
+
' */',
|
|
50
|
+
"import { describe, it } from 'node:test';",
|
|
51
|
+
"import assert from 'node:assert/strict';",
|
|
52
|
+
'',
|
|
53
|
+
"describe('Incidente ' + idIncidente, () => {",
|
|
54
|
+
" it('debe reproducir el fallo documentado', () => {",
|
|
55
|
+
' const condicion = true;',
|
|
56
|
+
" assert.ok(condicion, 'Falla resuelta');",
|
|
57
|
+
' });',
|
|
58
|
+
'});',
|
|
59
|
+
'',
|
|
60
|
+
].join('\n');
|
|
61
|
+
}
|
|
62
|
+
async purgarEstado(directorioRaiz) {
|
|
63
|
+
await ejecutor_js_1.EjecutorComando.ejecutar('rm -rf .astro 2>/dev/null || true', directorioRaiz);
|
|
64
|
+
return { exitoso: true, mensaje: 'Caché de compilación Astro purgada.' };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.AdaptadorAstro = AdaptadorAstro;
|
|
68
|
+
//# sourceMappingURL=astro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astro.js","sourceRoot":"","sources":["../../src/adapters/astro.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,uCAA0C;AAC1C,sDAAuD;AAEvD,MAAa,cAAe,SAAQ,uBAAa;IAC/B,UAAU,GAAuB,OAAO,CAAC;IACzC,aAAa,GAAW,oBAAoB,CAAC;IAE1C,SAAS,GAAG;QAC7B,WAAW,EAAE,CAAC,cAAc,CAAC;QAC7B,eAAe,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;QAC3E,SAAS,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,CAAC;QAC/D,WAAW,EAAE,CAAC,QAAQ,CAAC;KACxB,CAAC;IAEK,KAAK,CAAC,sBAAsB,CACjC,cAAsB;QAEtB,sDAAsD;QACtD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC/C,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC3E,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC;QAEvE,IAAI,GAAG,GAAG,MAAM,6BAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,kFAAkF;YAClF,GAAG,GAAG,MAAM,6BAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,6CAA6C,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,cAAc,CAAC;aACjG,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,2EAA2E;SACrF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,gBAAwB;QAC3E,OAAO;YACL,KAAK;YACL,uEAAuE;YACvE,gBAAgB,GAAG,WAAW;YAC9B,kBAAkB,GAAG,gBAAgB;YACrC,2BAA2B;YAC3B,KAAK;YACL,2CAA2C;YAC3C,0CAA0C;YAC1C,EAAE;YACF,8CAA8C;YAC9C,sDAAsD;YACtD,6BAA6B;YAC7B,6CAA6C;YAC7C,OAAO;YACP,KAAK;YACL,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,cAAsB;QAC9C,MAAM,6BAAe,CAAC,QAAQ,CAAC,mCAAmC,EAAE,cAAc,CAAC,CAAC;QACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;IAC3E,CAAC;CACF;AA9DD,wCA8DC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file base.ts
|
|
3
|
+
* @description Clase base abstracta para adaptadores con motor de puntuacion heuristica de confianza.
|
|
4
|
+
* Extiende la interfaz AdaptadorLenguaje con G12 (Rutas Vivas) y G13 (Interactividad).
|
|
5
|
+
* Estandar AUM-IC 7:2026.
|
|
6
|
+
*/
|
|
7
|
+
import type { AdaptadorLenguaje, ContextoDeteccion, EcosistemaLenguaje } from '../core/types.js';
|
|
8
|
+
export interface CriteriosHeuristicos {
|
|
9
|
+
readonly manifiestos: readonly string[];
|
|
10
|
+
readonly configuraciones: readonly string[];
|
|
11
|
+
readonly lockfiles: readonly string[];
|
|
12
|
+
readonly extensiones: readonly string[];
|
|
13
|
+
readonly shebangs?: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
export declare abstract class AdaptadorBase implements AdaptadorLenguaje {
|
|
16
|
+
abstract readonly ecosistema: EcosistemaLenguaje;
|
|
17
|
+
abstract readonly nombreLegible: string;
|
|
18
|
+
protected abstract readonly criterios: CriteriosHeuristicos;
|
|
19
|
+
/** Extensiones web que aplican para G12/G13 */
|
|
20
|
+
private static readonly EXT_WEB;
|
|
21
|
+
/** G12: Regex que captura href/src/to con rutas locales (no http, no #, no {}) */
|
|
22
|
+
private static readonly REGEX_RUTA_LOCAL;
|
|
23
|
+
/** G13: Detecta handlers de eventos vacios o inertes */
|
|
24
|
+
private static readonly REGEX_HANDLER_INERTE;
|
|
25
|
+
calcularPuntaje(contexto: ContextoDeteccion): Promise<number>;
|
|
26
|
+
detectar(directorioRaiz: string): Promise<boolean>;
|
|
27
|
+
abstract ejecutarLinterEstricto(directorioRaiz: string): Promise<{
|
|
28
|
+
exitoso: boolean;
|
|
29
|
+
mensaje: string;
|
|
30
|
+
}>;
|
|
31
|
+
abstract generarAndamioTest(idIncidente: string, descripcionFallo: string): Promise<string>;
|
|
32
|
+
abstract purgarEstado(directorioRaiz: string): Promise<{
|
|
33
|
+
exitoso: boolean;
|
|
34
|
+
mensaje: string;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* G12: Dead Link Sweeper — detecta hrefs/srcs locales rotos en archivos web.
|
|
38
|
+
* Implementacion base compartida; los adaptadores especializados pueden sobreescribirla.
|
|
39
|
+
*/
|
|
40
|
+
auditarRutasVivas(archivosAfectados: readonly string[], directorioRaiz: string): Promise<{
|
|
41
|
+
exitoso: boolean;
|
|
42
|
+
violaciones: readonly string[];
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* G13: Living UI Actions — detecta handlers de eventos vacios o inertes.
|
|
46
|
+
* Implementacion base compartida; los adaptadores especializados pueden sobreescribirla.
|
|
47
|
+
*/
|
|
48
|
+
auditarInteractividad(archivosAfectados: readonly string[], directorioRaiz: string): Promise<{
|
|
49
|
+
exitoso: boolean;
|
|
50
|
+
violaciones: readonly string[];
|
|
51
|
+
}>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEjG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,8BAAsB,aAAc,YAAW,iBAAiB;IAC9D,kBAAyB,UAAU,EAAE,kBAAkB,CAAC;IACxD,kBAAyB,aAAa,EAAE,MAAM,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IAE5D,+CAA+C;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAA2E;IAE1G,kFAAkF;IAClF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAC+B;IAEvE,wDAAwD;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CACkD;IAEjF,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB7D,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;aAK/C,sBAAsB,CACpC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;aAEjC,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;aAEF,YAAY,CAC1B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAEjD;;;OAGG;IACU,iBAAiB,CAC5B,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;IA4BhE;;;OAGG;IACU,qBAAqB,CAChC,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CAuBjE"}
|