@ingcrea/aumic-puf 0.0.0-stage → 3.1.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/MANIFEST.es.md +172 -0
- package/MANIFEST.md +64 -0
- package/PUF-15.md +118 -0
- package/PUF_G16_Lighthouse.md +70 -0
- package/README.es.md +256 -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 +259 -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 +77 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +41 -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 +53 -4
- package/puf-github-action.yml +30 -0
package/README.es.md
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# AUM-IC PUF — Protocolo Universal contra Fallos (PUF-23)
|
|
2
|
+
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
[](https://github.com/ingcrea/aum-ic)
|
|
5
|
+
[](https://www.npmjs.com/package/@ingcrea/aumic-puf)
|
|
6
|
+
|
|
7
|
+
> 🌐 **Navegación:** 🇺🇸 [Read in English](./README.md) | 📜 [Manifiesto (ES)](./MANIFEST.es.md) | 📜 [Manifesto (EN)](./MANIFEST.md) | 🌌 [Estándar AUM-IC 7](https://github.com/ingcrea/aum-ic)
|
|
8
|
+
|
|
9
|
+
> 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)**.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Matriz de 23 Compuertas de Calidad (G0 - G22)
|
|
14
|
+
|
|
15
|
+
### 0. G0: Higiene Forense Anti-Entropía y Codificación Pura (aumic-sanitizer Audit)
|
|
16
|
+
- **Alcance:** Diagnóstico in-process de mojibake, entropía de caracteres, saltos CRLF y codificación UTF-8 pura.
|
|
17
|
+
|
|
18
|
+
### 1. G1: Mapeo de Comportamientos y Límites (Behavior & Boundary Mapping)
|
|
19
|
+
- **Alcance:** Analizar el flujo completo de ejecución, ciclo de vida de la UI y desacoplamiento de hilos pesados.
|
|
20
|
+
|
|
21
|
+
### 2. G2: Test de Reproducción — Fase Roja (Reproduction Test-First)
|
|
22
|
+
- **Alcance:** Escribir y verificar test automatizado previo a tocar código de lógica (*Red State*).
|
|
23
|
+
|
|
24
|
+
### 3. G3: Checkpoint Inmutable (State Snapshot)
|
|
25
|
+
- **Alcance:** Respaldos atómicos con hash SHA-256 en `checkpoints/` para permitir reversión instantánea.
|
|
26
|
+
|
|
27
|
+
### 4. G4: Reparación Focalizada y Cero CSS Inline (Pure Logic Refactor)
|
|
28
|
+
- **Alcance:** Erradicación de causa raíz, cero código muerto y prohibición de atributos `style="..."` inline.
|
|
29
|
+
|
|
30
|
+
### 5. G5: Validación de Test y No-Regresión — Fase Verde (Green State & Non-Regression)
|
|
31
|
+
- **Alcance:** 100% de aserciones aprobadas y verificación perimetral contra regresiones colaterales.
|
|
32
|
+
|
|
33
|
+
### 6. G6: Análisis Estático Estricto (Static Gate Multi-Ecosystem)
|
|
34
|
+
- **Alcance:** Compiladores y linters en modo estricto (Rust, TypeScript, Python, PHP, Java, C#, C++, Swift, etc.).
|
|
35
|
+
|
|
36
|
+
### 7. G7: Documentación Semántica y Registro ADR (Intent & Architecture Decision)
|
|
37
|
+
- **Alcance:** Registro obligatorio de decisiones de arquitectura en `BITACORA.md`.
|
|
38
|
+
|
|
39
|
+
### 8. G8: Aplanadora POSIX y Sanitización Anti-Mojibake
|
|
40
|
+
- **Alcance:** Blindaje de bytes LF puros y UTF-8 estricto sin BOM.
|
|
41
|
+
|
|
42
|
+
### 9. G9: Integridad Operativa, Permisos y Secretos Zero-Trust
|
|
43
|
+
- **Alcance:** Permisos POSIX (644/755) y cero credenciales en texto plano.
|
|
44
|
+
|
|
45
|
+
### 10. G10: Invalidación y Purga de Estado Efímero
|
|
46
|
+
- **Alcance:** Purga de cachés de compilación (.next, .turbo, target, __pycache__, .phpunit.cache).
|
|
47
|
+
|
|
48
|
+
### 11. G11: Ergonomía del SO, Foco de Ventanas y Aislamiento UI (Zero-Focus Stealing)
|
|
49
|
+
- **Alcance:** Compuerta obligatoria contra robo de foco en Windows (`CREATE_NO_WINDOW`) e I/O desacoplado de loops UI.
|
|
50
|
+
|
|
51
|
+
### 12. G12: Topología de Rutas Vivas & Dead Link Sweeper
|
|
52
|
+
- **Alcance:** Detección de enlaces y destinos locales rotos en código web.
|
|
53
|
+
|
|
54
|
+
### 13. G13: Grafo de Interactividad & Erradicación Zombie
|
|
55
|
+
- **Alcance:** Erradicación de botones decorativos o handlers de eventos inertes.
|
|
56
|
+
|
|
57
|
+
### 14. G14: Traza de Contratos HTTP & Endpoints Vivos
|
|
58
|
+
- **Alcance:** Detección estática de contratos HTTP rotos o paths huérfanos.
|
|
59
|
+
|
|
60
|
+
### 15. G15: Headless E2E Crawler & Runtime Exceptions
|
|
61
|
+
- **Alcance:** Suites E2E (Playwright / Cypress) para verificación de flujo funcional.
|
|
62
|
+
|
|
63
|
+
### 16. G16: Calidad Visual, Core Web Vitals y Auditoría Web (Lighthouse / CWV)
|
|
64
|
+
- **Alcance:** Puntuación de experiencia de usuario, layouts DOM estables y Core Web Vitals.
|
|
65
|
+
|
|
66
|
+
### 17. G17: Blindaje Legal, Integridad de Licencias y Compatibilidad (IP & License Guard)
|
|
67
|
+
- **Alcance:** Consistencia entre manifiestos (`package.json`, `Cargo.toml`) y archivos `LICENSE`, titularidad y copyright.
|
|
68
|
+
|
|
69
|
+
### 18. G18: Consistencia de Motores de Estilo y Erradicación de Antipatrones (Style Engine Consistency)
|
|
70
|
+
- **Alcance:** Prevención de colisión entre frameworks (ej. Tailwind + Bootstrap) y control de deuda de `!important`.
|
|
71
|
+
|
|
72
|
+
### 19. G19: Blindaje de Superficie de Ataque y Cero Inyecciones (Zero-Injection Guard)
|
|
73
|
+
- **Alcance:** Erradicación de archivos expuestos (`.env`, `dump.sql`) y prevención de concatenación SQL directa.
|
|
74
|
+
|
|
75
|
+
### 20. G20: Topología de Entornos, Aislamiento de Red y Cero Conexiones Fantasma (Topology Guard)
|
|
76
|
+
- **Alcance:** Erradicación de referencias hardcodeadas a `localhost` / `127.0.0.1` en entornos de producción.
|
|
77
|
+
|
|
78
|
+
### 21. G21: Cumplimiento Oficial WordPress & WooCommerce (WPCS & WC Guidelines)
|
|
79
|
+
- **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`.
|
|
80
|
+
|
|
81
|
+
### 22. G22: Diagnóstico Universal de Sintaxis y Delimitadores (Universal Syntax Guard)
|
|
82
|
+
- **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.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Uso del Orquestador (CLI)
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Instalación global desde npm
|
|
90
|
+
npm install -g @ingcrea/aumic-puf
|
|
91
|
+
|
|
92
|
+
# Auditar todas las compuertas de la matriz (G0 a G22)
|
|
93
|
+
puf auditar
|
|
94
|
+
|
|
95
|
+
# Auditar compuertas focalizadas (G0, G21, G22)
|
|
96
|
+
puf auditar -g G0,G21,G22
|
|
97
|
+
|
|
98
|
+
# Modo fail-fast (aborta al primer fallo detectado)
|
|
99
|
+
puf auditar --fast
|
|
100
|
+
|
|
101
|
+
# Consultar versión instalada
|
|
102
|
+
puf -v
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 1. G1: Mapeo de Comportamientos y Limites (Behavior & Boundary Mapping)
|
|
106
|
+
- **Alcance:** Analizar el flujo completo de ejecucion y ciclo de vida de la UI.
|
|
107
|
+
- **Acciones:**
|
|
108
|
+
- Identificar entradas, tipos, contratos, mutaciones y salidas esperadas.
|
|
109
|
+
- Definir formalmente casos de borde: valores nulos (`None`, `null`, `Option::None`), cadenas vacias, desbordamientos numericos, condiciones de carrera/concurrencia y accesos no autenticados.
|
|
110
|
+
- **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.
|
|
111
|
+
|
|
112
|
+
### 2. G2: Test de Reproduccion -- Fase Roja (Reproduction Test-First)
|
|
113
|
+
- **Alcance:** Probar y demostrar empiricamente el defecto antes de tocar una sola linea de logica.
|
|
114
|
+
- **Acciones:**
|
|
115
|
+
- Escribir un test automatizado (unitario, integracion o CLI determinista) que replique la falla reportada con fidelidad.
|
|
116
|
+
- Ejecutar el test y confirmar que falle contra el codigo actual (*Red State*).
|
|
117
|
+
|
|
118
|
+
### 3. G3: Checkpoint Inmutable (State Snapshot)
|
|
119
|
+
- **Alcance:** Blindaje de rollback y preservacion de estado pre-mutacion.
|
|
120
|
+
- **Acciones:**
|
|
121
|
+
- Generar un respaldo atomico timestamped en `checkpoints/` (`<archivo>.bak_YYYYMMDDHHMMSS`).
|
|
122
|
+
- Registrar hash SHA-256 para permitir reversion instantanea sin perdida de informacion.
|
|
123
|
+
|
|
124
|
+
### 4. G4: Reparacion Focalizada y Refactorizacion Limpia (Pure Logic Refactor)
|
|
125
|
+
- **Alcance:** Correccion quirurgica de la causa raiz.
|
|
126
|
+
- **Acciones:**
|
|
127
|
+
- Atacar la causa raiz sin parches superficiales. Cero codigo muerto, cero dependencias circulares.
|
|
128
|
+
- Cumplir principios de codigo limpio del stack correspondiente:
|
|
129
|
+
- **Rust:** Cero `unwrap()` no justificado; manejo exhaustivo con `Result` / `Option`.
|
|
130
|
+
- **Astro:** Componentes puros, separacion de logica frontmatter y JSX estatico/reactivo.
|
|
131
|
+
- **Python:** Tipado estricto (Type hints), PEP 8, manejo explicito de excepciones.
|
|
132
|
+
- **PHP:** POO fuertemente tipada, `declare(strict_types=1);`, inyeccion de dependencias.
|
|
133
|
+
- **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`.
|
|
134
|
+
|
|
135
|
+
### 5. G5: Validacion de Test y No-Regresion -- Fase Verde (Green State & Non-Regression)
|
|
136
|
+
- **Alcance:** Verificacion de solucion completa y estabilidad perimetral.
|
|
137
|
+
- **Acciones:**
|
|
138
|
+
- Reejecutar el test de G2 y validar el 100% de aserciones aprobadas (*Green State*).
|
|
139
|
+
- Ejecutar la suite de pruebas perimetral/completa para certificar cero regresiones colaterales.
|
|
140
|
+
|
|
141
|
+
### 6. G6: Analisis Estatico, Tipado y Compilador Estricto (Static Gate)
|
|
142
|
+
- **Alcance:** Tolerancia cero a advertencias del compilador o linters.
|
|
143
|
+
- **Acciones:**
|
|
144
|
+
- Ejecutar compilador y analisis estatico en modo estricto segun el stack:
|
|
145
|
+
- **Rust:** `cargo clippy -- -D warnings` y `cargo check`.
|
|
146
|
+
- **Astro / TypeScript:** `npx astro check` y `npx eslint`.
|
|
147
|
+
- **Python:** `ruff check` y `mypy --strict`.
|
|
148
|
+
- **PHP:** `php -l` y `phpstan analyse --level=max`.
|
|
149
|
+
- Cero advertencias o errores tolerados.
|
|
150
|
+
|
|
151
|
+
### 7. G7: Documentacion Semantica y Registro ADR (Intent & Architecture Decision)
|
|
152
|
+
- **Alcance:** Memoria tecnica e intencion arquitectonica.
|
|
153
|
+
- **Acciones:**
|
|
154
|
+
- Explicar en comentarios de codigo el *por que* de la decision y no solo el *que hace*.
|
|
155
|
+
- Registrar en `BITACORA.md` de la raiz del proyecto bajo el formato estricto:
|
|
156
|
+
```
|
|
157
|
+
[Timestamp] | Contexto | Decision | Consecuencia
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 8. G8: Aplanadora POSIX y Sanitizacion Anti-Mojibake (aumic-sanitizer)
|
|
161
|
+
- **Alcance:** Integridad de codificacion y terminacion de linea.
|
|
162
|
+
- **Acciones:**
|
|
163
|
+
- Barrer los archivos con `node C:\Users\NexoRemoto\Proyectos\aumic-sanitizer\dist\index.js audit .`
|
|
164
|
+
- Purgar caracteres Mojibake forzando UTF-8 puro sin BOM.
|
|
165
|
+
- Aplanar y forzar saltos de linea Unix LF (`\n`), erradicando Windows CRLF (`\r\n`).
|
|
166
|
+
|
|
167
|
+
### 9. G9: Integridad Operativa, Permisos y Secretos Zero-Trust (Ops Shield)
|
|
168
|
+
- **Alcance:** Blindaje de infraestructura y seguridad de credenciales.
|
|
169
|
+
- **Acciones:**
|
|
170
|
+
- Verificar permisos restrictivos en sistema de archivos (`chmod 644` archivos / `755` directorios, llaves SSH `600`).
|
|
171
|
+
- Cero credenciales, tokens o contrasenas en texto plano. Gestionar accesos via variables de entorno seguras o `SECRETOS.py`.
|
|
172
|
+
|
|
173
|
+
### 10. G10: Invalidacion y Purga de Estado Efimero (State Flush)
|
|
174
|
+
- **Alcance:** Consumo garantizado del codigo fresco en runtime.
|
|
175
|
+
- **Acciones:**
|
|
176
|
+
- Purgar deterministamente cache de objetos (Redis, Memcached, Opcache, `.next`, `dist`).
|
|
177
|
+
- Reiniciar workers (Gunicorn, Systemd, SSR Node, PM2) para garantizar que los clientes consuman el codigo validado.
|
|
178
|
+
|
|
179
|
+
### 11. G11: Blindaje de Ergonomia del SO, Foco de Ventanas y Aislamiento UI (OS & Desktop Ergonomics Gate)
|
|
180
|
+
- **Alcance:** Experiencia de usuario inmaculada, ausencia total de robo de foco.
|
|
181
|
+
- **Acciones:**
|
|
182
|
+
- **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`).
|
|
183
|
+
- **Zero-Ghost Processes:** Al cerrar la aplicacion, no deben quedar procesos huerfanos consumiendo CPU.
|
|
184
|
+
- **Cache de Consultas de Privilegios:** Usar cache atomico perezoso (`AtomicU8` / `OnceLock`), evitando invocaciones repetidas en bucles.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### 12. G12: Topologia de Rutas Vivas & Dead Link Sweeper (Living Routes Gate)
|
|
189
|
+
- **Alcance:** Integridad de navegacion sin pantallas 404 ni rutas huerfanas en Web (Astro, React, Next, Vue), Mobile (Flutter) y Desktop (Slint, C#/WPF, Tauri).
|
|
190
|
+
- **Acciones:**
|
|
191
|
+
- Escanear los archivos HTML/JSX/Astro/PHP afectados con el metodo `auditarRutasVivas()` del adaptador.
|
|
192
|
+
- Detectar atributos `href`, `src`, `to`, `action` que apunten a rutas locales que no existen en el filesystem.
|
|
193
|
+
- Cero enlaces rotos hacia destinos locales inexistentes. Toda ruta relativa debe resolverse a un archivo real.
|
|
194
|
+
- El orquestador informa la lista exacta: `archivo.astro -> "/ruta/inexistente" (no existe en filesystem)`.
|
|
195
|
+
- **Solo aplica a extensiones web:** `.astro`, `.jsx`, `.tsx`, `.html`, `.php`, `.vue`, `.svelte`.
|
|
196
|
+
|
|
197
|
+
### 13. G13: Grafo de Interactividad & Erradicacion Zombie (Living UI Actions Gate)
|
|
198
|
+
- **Alcance:** Cero botones decorativos, pseudoelementos inertes o acciones no conectadas.
|
|
199
|
+
- **Acciones:**
|
|
200
|
+
- Escanear los archivos web afectados con el metodo `auditarInteractividad()` del adaptador.
|
|
201
|
+
- Detectar patrones de handler inerte: `onClick=""`, `onClick={undefined}`, `on:click=""`, `@click=""`.
|
|
202
|
+
- Todo control interactivo debe resolver en un evento real (API call, modal, mutacion de estado o feedback visual).
|
|
203
|
+
- El orquestador reporta exactamente que archivo y linea contiene el handler zombie.
|
|
204
|
+
- **Solo aplica a extensiones web:** `.astro`, `.jsx`, `.tsx`, `.html`, `.php`, `.vue`, `.svelte`.
|
|
205
|
+
|
|
206
|
+
### 14. G14: Traza de Contratos HTTP & Endpoints Vivos (Living API Contract Gate)
|
|
207
|
+
- **Alcance:** Consistencia granular entre las llamadas del cliente y los controladores declarados en el backend.
|
|
208
|
+
- **Acciones:**
|
|
209
|
+
- Analizar los archivos afectados buscando llamadas `fetch(...)` o `axios.get/post/...` con rutas hardcodeadas locales (no `/api/`, no variables de entorno `${}`).
|
|
210
|
+
- Cero llamadas HTTP a paths huerfanos o inexistentes detectados estaticamente.
|
|
211
|
+
- Si se detectan inconsistencias, listar exactamente el archivo y el endpoint problematico.
|
|
212
|
+
|
|
213
|
+
### 15. G15: Headless E2E Crawler & Runtime Exceptions (Headless Handshake Gate)
|
|
214
|
+
- **Alcance:** Deteccion de errores silenciosos, excepciones de runtime y bloqueos de interfaz.
|
|
215
|
+
- **Acciones:**
|
|
216
|
+
- Verificar si existe suite E2E (Playwright `playwright.config.ts`, Cypress `cypress.config.ts`) en la raiz del proyecto.
|
|
217
|
+
- Si existe: marcar como **APROBADA** e instruir al Jefe Maestro a ejecutarla manualmente para certificacion completa.
|
|
218
|
+
- Si NO existe: marcar como **OMITIDA** (no bloquea certificacion) con recomendacion de configurar Playwright.
|
|
219
|
+
- **G15 OMITIDA no es un fallo:** `todasAprobadas` acepta tanto `aprobada` como `omitida`.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Reglas Inviolables de Ejecucion
|
|
224
|
+
|
|
225
|
+
1. **Cero Complacencia:** No dejar tareas a medias ni usar marcadores vacios (`// el resto del codigo aqui`).
|
|
226
|
+
2. **Determinismo Tecnico:** Todo entregable debe ser determinista, verificado en consola y listo para produccion.
|
|
227
|
+
3. **Reporte por Compuerta:** Reportar siempre el estado de cada compuerta (G1 a G15) con su respectiva evidencia.
|
|
228
|
+
4. **G15 es OMITIDA, no RECHAZADA:** Si no hay suite E2E, G15 se omite sin bloquear la certificacion.
|
|
229
|
+
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.
|
|
230
|
+
|
|
231
|
+
## Uso del Orquestador (CLI)
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# Inicializar incidente (crea andamio G2 + checkpoints G3)
|
|
235
|
+
puf iniciar INC-042 "Descripcion del fallo" src/archivo.ts
|
|
236
|
+
|
|
237
|
+
# Auditar las 15 compuertas concurrentemente
|
|
238
|
+
puf auditar INC-042 src/archivo.ts
|
|
239
|
+
|
|
240
|
+
# Modo fail-fast (aborta al primer fallo)
|
|
241
|
+
puf auditar INC-042 src/archivo.ts --fast
|
|
242
|
+
|
|
243
|
+
# Revertir a estado pre-fallo (usando checkpoint G3)
|
|
244
|
+
puf revertir INC-042 archivo.ts
|
|
245
|
+
|
|
246
|
+
# Instalar guardian de Git (pre-commit hook)
|
|
247
|
+
puf instalar-hook
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Licencia
|
|
251
|
+
|
|
252
|
+
Distribuido bajo licencia **GNU Affero General Public License v3.0 (AGPL-3.0)**. Ver [LICENSE](LICENSE).
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
**[Ingeniería Creativa](https://ingcrea.com)** | [Estándar AUM-IC](https://github.com/ingcrea/aum-ic)
|
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"}
|