@ingcrea/aumic-puf 3.1.0 → 3.2.1
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/MANIFEST.es.md +68 -134
- package/MANIFEST.md +85 -43
- package/README.es.md +205 -203
- package/README.md +208 -204
- package/dist/cli/index.js +1 -1
- package/dist/core/evaluador-wp-woo.d.ts.map +1 -1
- package/dist/core/evaluador-wp-woo.js +21 -1
- package/dist/core/evaluador-wp-woo.js.map +1 -1
- package/package.json +1 -1
package/README.es.md
CHANGED
|
@@ -1,256 +1,258 @@
|
|
|
1
1
|
# AUM-IC PUF — Protocolo Universal contra Fallos (PUF-23)
|
|
2
2
|
|
|
3
|
-
[](LICENSE)
|
|
4
4
|
[](https://github.com/ingcrea/aum-ic)
|
|
5
|
-
[](https://www.npmjs.com/package/@ingcrea/aumic-puf)
|
|
6
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)
|
|
7
|
+
> 🌐 **Navegación:** 🇲🇽 [Leer en Español](./README.es.md) | 🇺🇸 [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
8
|
|
|
9
|
-
|
|
9
|
+
Suite oficial de aseguramiento determinista de calidad y orquestador multi-lenguaje de 23 compuertas (G0 a G22) bajo el estándar **AUM-IC 7:2026**, diseñado y mantenido por **Ingeniería Creativa (IngCrea)**.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Filosofía y Arquitectura del Motor
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- **Alcance:** Diagnóstico in-process de mojibake, entropía de caracteres, saltos CRLF y codificación UTF-8 pura.
|
|
15
|
+
El Protocolo Universal contra Fallos (PUF) no es un linter superficial ni una colección dispersa de scripts. Es un **motor de auditoría determinista de ciclo cerrado** concebido para erradicar la entropía del software antes de que alcance entornos de producción.
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
- **Alcance:** Analizar el flujo completo de ejecución, ciclo de vida de la UI y desacoplamiento de hilos pesados.
|
|
17
|
+
Opera de forma agnóstica a través de adaptadores especializados para **Rust, TypeScript/JavaScript, Astro, Next.js, Python, PHP, Java/JVM, C#, C/C++, Flutter/Dart y Shell**, garantizando cumplimiento riguroso con normativas internacionales de fiabilidad (**ISO/IEC 25010**), seguridad de la información (**ISO 27001**) y testabilidad (**ISO 29119**).
|
|
20
18
|
|
|
21
|
-
###
|
|
22
|
-
- **Alcance:** Escribir y verificar test automatizado previo a tocar código de lógica (*Red State*).
|
|
19
|
+
### Características Clave del Motor v3.2.1
|
|
23
20
|
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
* **Snapshot VFS en Memoria (`LectorArbolProyecto`):** Mapeo virtual del sistema de archivos con caché volátil estructurado. Permite que múltiples compuertas analicen el repositorio de forma concurrente sin provocar saturación de I/O en disco.
|
|
22
|
+
* **Persistencia Forense Indexada (`RepositorioSqliteAudit`):** Almacenamiento nativo en SQLite (`.aumic/puf_audit.sqlite`) de cada ejecución, registrando métricas de latencia, violaciones detectadas y telemetría histórica con tiempos de consulta inferiores a 20 ms.
|
|
23
|
+
* **Perfiles Dinámicos de Auditoría (`--profile`):** Flexibilidad de inspección según el ciclo de entrega (`enterprise`, `mvp`, `dev`, `security`).
|
|
24
|
+
* **Zero-Black-Box Telemetry:** Reportes forenses interactivos en HTML (`puf-report.html`) con diagramas SVG gauge, tarjetas KPI de impacto y trazabilidad exacta de archivo y línea.
|
|
26
25
|
|
|
27
|
-
|
|
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.).
|
|
26
|
+
---
|
|
35
27
|
|
|
36
|
-
|
|
37
|
-
|
|
28
|
+
## Matriz Exhaustiva de las 23 Compuertas de Calidad (G0 a G22)
|
|
29
|
+
|
|
30
|
+
### G0: Higiene Forense Anti-Entropía y Codificación Pura (In-Process Sanitizer)
|
|
31
|
+
* **Para qué sirve:** Garantiza que ningún byte corrupto, BOM invisible o secuencia de caracteres rotos ingrese al flujo de desarrollo.
|
|
32
|
+
* **Qué hace:** Ejecuta diagnósticos directos en memoria (vía motor `aumic-sanitizer`), auditando que el 100% de los archivos del proyecto mantengan codificación **UTF-8 pura sin BOM** y terminaciones de línea Unix **LF (`\n`)**, purgando de inmediato secuencias de mojibake y eliminando el riesgo de discrepancias entre sistemas operativos.
|
|
33
|
+
|
|
34
|
+
### G1: Mapeo de Comportamientos, Límites y Aislamiento de Hilos (Behavior & Boundary Mapping)
|
|
35
|
+
* **Para qué sirve:** Blinda la estabilidad del ciclo de vida y previene la degradación o congelamiento de las interfaces de usuario.
|
|
36
|
+
* **Qué hace:** Inspecciona contratos, firmas y puntos de entrada identificando valores extremos (`null`, `undefined`, `None`, cadenas vacías y desbordamientos numéricos). Audita que **ninguna operación pesada de I/O, comandos síncronos ni peticiones de red** se invoquen dentro de temporizadores o bucles directos de la interfaz (`slint::Timer`, `setInterval`, `requestAnimationFrame`), forzando su delegación a tareas asíncronas desacopladas o memorias caché atómicas.
|
|
37
|
+
|
|
38
|
+
### G2: Test de Reproducción — Fase Roja (Reproduction Test-First)
|
|
39
|
+
* **Para qué sirve:** Erradica correcciones a ciegas y asunciones subjetivas al resolver anomalías.
|
|
40
|
+
* **Qué hace:** Exige la existencia o creación previa de una prueba automatizada (unitaria, funcional o de integración) que replique con fidelidad el defecto reportado. El motor verifica que el test falle inequívocamente contra el código base actual (*Estado Rojo*) antes de permitir cualquier mutación de lógica.
|
|
41
|
+
|
|
42
|
+
### G3: Checkpoint Inmutable de Estado (State Snapshot Guard)
|
|
43
|
+
* **Para qué sirve:** Otorga inmunidad frente a pérdidas de código o regresiones destructivas durante una reparación.
|
|
44
|
+
* **Qué hace:** Captura una copia de seguridad atómica con marca de tiempo en el directorio `checkpoints/` (`<archivo>.bak_YYYYMMDDHHMMSS`) registrando su huella criptográfica SHA-256. Esto permite realizar reversiones instantáneas e íntegras mediante `puf revertir` si el proceso de remediación se descarrila.
|
|
45
|
+
|
|
46
|
+
### G4: Reparación Focalizada, Refactorización Limpia y Cero CSS Inline (Pure Logic Refactor)
|
|
47
|
+
* **Para qué sirve:** Asegura soluciones de raíz sin parches superficiales, código muerto ni deuda de estilos acoplados.
|
|
48
|
+
* **Qué hace:** Audita que la solución resuelva la causa fundamental sin generar efectos colaterales. Impone principios estrictos por lenguaje (en Rust prohíbe `unwrap()` injustificados forzando `Result`/`Option`; en PHP exige `declare(strict_types=1);`; en Astro separa lógica de frontmatter). Prohíbe de manera tajante el uso de atributos `style="..."` inline en HTML, JSX, PHP o Astro, exigiendo que todo diseño resida en hojas `.css` o `.scss` modulares.
|
|
49
|
+
|
|
50
|
+
### G5: Validación de Test y No-Regresión — Fase Verde (Green State & Non-Regression)
|
|
51
|
+
* **Para qué sirve:** Certifica matemáticamente que el defecto quedó subsanado sin romper módulos adyacentes.
|
|
52
|
+
* **Qué hace:** Reejecuta el test automatizado introducido en G2 constatando el 100% de aserciones aprobadas (*Estado Verde*). Simultáneamente lanza la suite de pruebas perimetral para validar que ninguna funcionalidad preexistente haya sufrido regresiones.
|
|
53
|
+
|
|
54
|
+
### G6: Análisis Estático, Tipado y Compilador Estricto (Static Gate Multi-Ecosystem)
|
|
55
|
+
* **Para qué sirve:** Cero tolerancia a advertencias, tipos implícitos y descuidos detectables en tiempo de compilación.
|
|
56
|
+
* **Qué hace:** Invoca el instrumental estático oficial del lenguaje detectado bajo banderas de rigor máximo:
|
|
57
|
+
* **TypeScript / Astro:** `npx astro check`, `npx tsc --noEmit` y ESLint sin warnings permitidos.
|
|
58
|
+
* **Rust:** `cargo check` y `cargo clippy -- -D warnings`.
|
|
59
|
+
* **Python:** `mypy --strict` y `ruff check`.
|
|
60
|
+
* **PHP:** `php -l` y `phpstan analyse --level=max`.
|
|
61
|
+
* **Java / JVM:** Validación contra Maven (`mvn test-compile`), Gradle o `javac`.
|
|
62
|
+
* **C# / .NET:** `dotnet build /warnaserror`.
|
|
63
|
+
|
|
64
|
+
### G7: Documentación Semántica y Registro ADR (Intent & Architecture Decision)
|
|
65
|
+
* **Para qué sirve:** Preserva la memoria técnica y el razonamiento del porqué se tomaron las decisiones.
|
|
66
|
+
* **Qué hace:** Verifica que el código cuente con comentarios que expliquen la intención arquitectónica y valida la existencia y actualización de la bitácora `BITACORA.md` en la raíz del proyecto bajo el formato estricto:
|
|
67
|
+
```text
|
|
68
|
+
[Timestamp] | Contexto | Decisión | Consecuencia
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### G8: Aplanadora POSIX y Sanitización Anti-Mojibake (POSIX Squasher)
|
|
72
|
+
* **Para qué sirve:** Evita fallos de build, inconsistencias en git diffs y scripts inutilizables en entornos Linux/Docker.
|
|
73
|
+
* **Qué hace:** Barre en memoria la totalidad de los archivos de código fuente, aplastando de manera definitiva los saltos de línea Windows CRLF (`\r\n`) para forzar Unix LF (`\n`) y erradicando caracteres residuales con codificaciones no compatibles con POSIX.
|
|
74
|
+
|
|
75
|
+
### G9: Integridad Operativa, Permisos y Secretos Zero-Trust (Ops Shield)
|
|
76
|
+
* **Para qué sirve:** Blinda la infraestructura contra fugas de credenciales y permisos de sistema inseguros.
|
|
77
|
+
* **Qué hace:** Inspecciona permisos en el sistema de archivos (forzando `644` para archivos regulares, `755` para ejecutables/directorios y `600` para llaves de acceso). Realiza análisis de patrones en búsqueda de credenciales, contraseñas, API keys o tokens expuestos en texto plano, obligando el uso de variables de entorno o bóvedas de secretos.
|
|
78
|
+
|
|
79
|
+
### G10: Invalidación y Purga de Estado Efímero (State Flush)
|
|
80
|
+
* **Para qué sirve:** Garantiza que clientes y desarrolladores consuman código fresco, descartando cachés corrompidas.
|
|
81
|
+
* **Qué hace:** Localiza y purga de forma determinista árboles de compilación residuales y cachés locales (`.next`, `.turbo`, `dist`, `target`, `__pycache__`, `.phpunit.cache`, `storage/framework/cache`), recomendando o ejecutando el reinicio controlado de workers (PM2, Systemd, Gunicorn) según corresponda.
|
|
82
|
+
|
|
83
|
+
### G11: Blindaje de Ergonomía del SO y Cero Robo de Foco (Zero-Focus Stealing Guard)
|
|
84
|
+
* **Para qué sirve:** Evita la degradación de la experiencia del usuario y parpadeos molestos en el sistema operativo.
|
|
85
|
+
* **Qué hace:** En entornos de escritorio Windows, audita que toda llamada a subprocesos nativos (`Command::new`, `powershell`, `cmd`, `exec`) incorpore obligatoriamente la bandera `creation_flags(0x08000000)` (`CREATE_NO_WINDOW`), impidiendo la aparición repentina de ventanas de consola negras que roben el foco del usuario. Igualmente audita que las consultas repetitivas de privilegios se resuelvan mediante cachés atómicos (`AtomicU8` / `OnceLock`).
|
|
86
|
+
|
|
87
|
+
### G12: Topología de Rutas Vivas y Barredora de Enlaces Rotos (Living Routes Gate)
|
|
88
|
+
* **Para qué sirve:** Erradica pantallas 404 y enlaces huérfanos antes del despliegue.
|
|
89
|
+
* **Qué hace:** Escanea archivos de plantillas y componentes (`.astro`, `.tsx`, `.jsx`, `.vue`, `.html`, `.php`), extrayendo atributos `href`, `src`, `to` y `action`. Verifica que cada ruta relativa local referenciada tenga una correspondencia física real en el árbol de rutas del proyecto.
|
|
90
|
+
|
|
91
|
+
### G13: Grafo de Interactividad y Erradicación Zombie (Living UI Actions Gate)
|
|
92
|
+
* **Para qué sirve:** Asegura que ningún control en pantalla sea un adorno inútil o carezca de respuesta.
|
|
93
|
+
* **Qué hace:** Analiza sintácticamente la interfaz buscando eventos interactivos huérfanos o inertes (`onClick=""`, `onClick={undefined}`, `on:click=""`, `@click=""`, botones sin atributo de tipo o sin listener). Todo elemento interactivo debe desencadenar un flujo concreto: llamada de API, apertura modal, mutación de estado o respuesta háptica/visual.
|
|
94
|
+
|
|
95
|
+
### G14: Traza de Contratos HTTP y Endpoints Vivos (Living API Contract Gate)
|
|
96
|
+
* **Para qué sirve:** Previene discrepancias entre los llamados frontend y los endpoints provistos por el backend.
|
|
97
|
+
* **Qué hace:** Rastrea invocaciones cliente (`fetch(...)`, `axios.get/post/...`, `ky`) contrastando que no existan rutas huérfanas, endpoints deprecados ni rutas locales relativas no mapeadas en los controladores del servidor.
|
|
98
|
+
|
|
99
|
+
### G15: Headless E2E Crawler y Runtime Exceptions (Headless Handshake Gate)
|
|
100
|
+
* **Para qué sirve:** Captura fallos silenciosos de renderizado, bloqueos de layout y excepciones de consola no controladas.
|
|
101
|
+
* **Qué hace:** Detecta la existencia de suites E2E (Playwright `playwright.config.ts` o Cypress `cypress.config.ts`). Si existen, valida su integración determinista; si no están configuradas, marca la compuerta como `omitida` con una recomendación técnica sin bloquear el proceso general de certificación.
|
|
102
|
+
|
|
103
|
+
### G16: Calidad Visual, Core Web Vitals y Auditoría Web (Lighthouse / CWV Guard)
|
|
104
|
+
* **Para qué sirve:** Asegura puntuaciones competitivas en motores de búsqueda y una experiencia de usuario de alto nivel.
|
|
105
|
+
* **Qué hace:** Evalúa métricas críticas de rendimiento web (LCP - Largest Contentful Paint, CLS - Cumulative Layout Shift, INP - Interaction to Next Paint), accesibilidad (a11y), cumplimiento de SEO y buenas prácticas. Exige una calificación mínima promedio de 70/100 sobre reportes locales (`aumic-live-report.json`) o telemetría en vivo.
|
|
106
|
+
|
|
107
|
+
### G17: Blindaje Legal, Integridad de Licencias y Compatibilidad (IP & License Guard)
|
|
108
|
+
* **Para qué sirve:** Protege la titularidad intelectual del software y previene litigios o incompatibilidades de código abierto.
|
|
109
|
+
* **Qué hace:** Audita la consistencia legal entre el manifiesto (`package.json`, `Cargo.toml`, `composer.json`) y los archivos físicos de licenciamiento (`LICENSE`, `LICENSE.md`, `LICENSE-DOCS`). Erradica placeholders sin llenar (ej. `<year>`, `<owner>`), valida compatibilidad de licencias de terceros y ofrece modo consultivo para código privativo de clientes.
|
|
110
|
+
|
|
111
|
+
### G18: Consistencia de Motores de Estilo y Erradicación de Antipatrones (Style Engine Consistency)
|
|
112
|
+
* **Para qué sirve:** Mantiene un diseño limpio y previene conflictos catastróficos entre librerías CSS.
|
|
113
|
+
* **Qué hace:** Audita que el proyecto no mezcle frameworks antagónicos (por ejemplo, Tailwind CSS y Bootstrap conviviendo en el mismo proyecto). Adicionalmente, fiscaliza la deuda técnica de especificidad CSS, marcando alerta o rechazo si la presencia de la regla `!important` excede el umbral tolerado (máximo 5 ocurrencias justificadas).
|
|
114
|
+
|
|
115
|
+
### G19: Blindaje de Superficie de Ataque y Cero Inyecciones (Zero-Injection & Attack Surface Guard)
|
|
116
|
+
* **Para qué sirve:** Cierra vectores de ataque comunes y previene intrusiones o robo de información.
|
|
117
|
+
* **Qué hace:** Escanea el repositorio descartando la presencia accidental de volcados de base de datos (`dump.sql`, `backup.sql`), scripts de diagnóstico peligrosos (`phpinfo.php`, `xmlrpc.php`) o llaves privadas SSH. Audita que el archivo `.env` se encuentre estrictamente ignorado en `.gitignore` e identifica patrones de concatenación directa de entradas de usuario en sentencias SQL, forzando consultas parametrizadas o Query Builders tipados.
|
|
118
|
+
|
|
119
|
+
### G20: Topología de Entornos y Cero Conexiones Fantasma (Topology Guard)
|
|
120
|
+
* **Para qué sirve:** Erradica fallos silenciosos y llamadas a servidores de desarrollo en despliegues a producción.
|
|
121
|
+
* **Qué hace:** Analiza el código fuente en búsqueda de direcciones locales (`http://localhost`, `127.0.0.1`) hardcodeadas dentro de controladores o servicios de producción, exigiendo su desacoplamiento absoluto mediante variables de entorno configuradas por entorno (`dev`, `staging`, `prod`).
|
|
122
|
+
|
|
123
|
+
### G21: Cumplimiento Oficial WordPress y WooCommerce (WPCS & WC Guidelines Guard)
|
|
124
|
+
* **Para qué sirve:** Garantiza código seguro, preparado para HPOS y resistente a fallos transaccionales en plataformas WordPress y WooCommerce.
|
|
125
|
+
* **Qué hace:** Se activa automáticamente al detectar proyectos PHP/WordPress ejecutando un conjunto de reglas especializadas:
|
|
126
|
+
* **`WP-SEC-01` (Sanitización y Nonces):** Valida sanitización de superglobales (`$_GET`, `$_POST`, `$_REQUEST`) y verificación obligatoria de nonces con `check_admin_referer()` / `wp_verify_nonce()`.
|
|
127
|
+
* **`WP-SEC-02` (Prepared Queries):** Prohíbe consultas directas a `$wpdb` sin `$wpdb->prepare()`.
|
|
128
|
+
* **`WC-HPOS-01` (CRUD Mandatorio de Pedidos):** Prohíbe lecturas o escrituras directas a `wp_postmeta` para metadatos de pedidos, forzando los métodos canónicos de la API CRUD de `WC_Order` (`$order->get_id()`, `$order->get_meta()`, `$order->update_meta_data()`, `$order->save()`).
|
|
129
|
+
* **`WC-CORE-01` (Propiedades Obsoletas):** Detecta accesos a propiedades deprecadas del core de WooCommerce (como `$order->id`).
|
|
130
|
+
* **`WP-ROBUST-OPT-01` (Empty Coalesce Guard):** Previene fallos sutiles donde el operador `??` sobre arrays de opciones falla porque una cadena vacía (`''`) no se evalúa como nula, evadiendo los valores de respaldo indispensables.
|
|
131
|
+
* **`WP-CIRCUIT-BREAKER-01` (Hardcoded Flags):** Detecta banderas booleanas fijas en código que bloquean silenciosamente flujos transaccionales o de pago.
|
|
132
|
+
|
|
133
|
+
### G22: Diagnóstico Universal de Sintaxis y Delimitadores (Universal Syntax Guard)
|
|
134
|
+
* **Para qué sirve:** Diagnostica en milisegundos errores sintácticos sutiles sin requerir compiladores pesados instalados en la máquina.
|
|
135
|
+
* **Qué hace:** Motor de análisis sintáctico in-memory multi-lenguaje (PHP, CSS/SCSS, JSON, JavaScript, TypeScript, Java) que:
|
|
136
|
+
* Localiza omisiones exactas de punto y coma (`;`) en sentencias PHP y CSS/SCSS.
|
|
137
|
+
* Audita la integridad de archivos JSON (detectando comas faltantes o trailing commas no permitidas).
|
|
138
|
+
* Evalúa el balanceo perfecto de delimitadores (`{ }`, `[ ]`, `( )`), ignorando inteligentemente literales de cadenas, comentarios y expresiones regulares para reportar la línea precisa de cualquier desbalance.
|
|
38
139
|
|
|
39
|
-
|
|
40
|
-
- **Alcance:** Blindaje de bytes LF puros y UTF-8 estricto sin BOM.
|
|
140
|
+
---
|
|
41
141
|
|
|
42
|
-
|
|
43
|
-
- **Alcance:** Permisos POSIX (644/755) y cero credenciales en texto plano.
|
|
142
|
+
## Perfiles Dinámicos de Auditoría (`--profile`)
|
|
44
143
|
|
|
45
|
-
|
|
46
|
-
- **Alcance:** Purga de cachés de compilación (.next, .turbo, target, __pycache__, .phpunit.cache).
|
|
144
|
+
Para optimizar pipelines de integración continua o verificaciones rápidas antes de un commit, el PUF incorpora perfiles de auditoría seleccionables:
|
|
47
145
|
|
|
48
|
-
|
|
49
|
-
|
|
146
|
+
| Perfil | Compuertas Evaluadas | Caso de Uso |
|
|
147
|
+
| :--- | :--- | :--- |
|
|
148
|
+
| **`enterprise`** *(Predeterminado)* | **G0 a G22 (23 compuertas)** | Certificación integral obligatoria previa a releases y despliegues productivos. |
|
|
149
|
+
| **`mvp`** | `G0`, `G4`, `G6`, `G8`, `G22` | Verificación ágil de prototipos rápidos: higiene, lógica limpia, tipado estricto y sintaxis. |
|
|
150
|
+
| **`dev`** | `G0`, `G4`, `G6`, `G8`, `G22` | Ciclo de desarrollo local ultrarrápido sin bloqueos por suites accesorias. |
|
|
151
|
+
| **`security`** | `G0`, `G8`, `G9`, `G17`, `G19`, `G20` | Auditoría de ciberseguridad, permisos POSIX, blindaje legal, topología y cero inyecciones. |
|
|
50
152
|
|
|
51
|
-
|
|
52
|
-
- **Alcance:** Detección de enlaces y destinos locales rotos en código web.
|
|
153
|
+
---
|
|
53
154
|
|
|
54
|
-
|
|
55
|
-
- **Alcance:** Erradicación de botones decorativos o handlers de eventos inertes.
|
|
155
|
+
## Manual de Uso del CLI (`puf` / `aumic-puf`)
|
|
56
156
|
|
|
57
|
-
###
|
|
58
|
-
- **Alcance:** Detección estática de contratos HTTP rotos o paths huérfanos.
|
|
157
|
+
### Instalación
|
|
59
158
|
|
|
60
|
-
|
|
61
|
-
|
|
159
|
+
```bash
|
|
160
|
+
# Instalación global vía npm
|
|
161
|
+
npm install -g @ingcrea/aumic-puf
|
|
62
162
|
|
|
63
|
-
|
|
64
|
-
-
|
|
163
|
+
# O uso directo sin instalación vía npx
|
|
164
|
+
npx @ingcrea/aumic-puf auditar
|
|
165
|
+
```
|
|
65
166
|
|
|
66
|
-
###
|
|
67
|
-
- **Alcance:** Consistencia entre manifiestos (`package.json`, `Cargo.toml`) y archivos `LICENSE`, titularidad y copyright.
|
|
167
|
+
### Comandos de Operación
|
|
68
168
|
|
|
69
|
-
|
|
70
|
-
|
|
169
|
+
#### 1. Auditoría Completa de la Matriz (Enterprise)
|
|
170
|
+
```bash
|
|
171
|
+
# Audita las 23 compuertas de calidad concurrentemente en el directorio actual
|
|
172
|
+
puf auditar
|
|
71
173
|
|
|
72
|
-
|
|
73
|
-
|
|
174
|
+
# Ejecución fail-fast (aborta de inmediato al primer fallo detectado)
|
|
175
|
+
puf auditar --fast
|
|
176
|
+
```
|
|
74
177
|
|
|
75
|
-
|
|
76
|
-
|
|
178
|
+
#### 2. Auditoría por Perfil Dinámico
|
|
179
|
+
```bash
|
|
180
|
+
# Auditoría rápida para entornos de desarrollo local
|
|
181
|
+
puf auditar --profile=dev
|
|
77
182
|
|
|
78
|
-
|
|
79
|
-
|
|
183
|
+
# Auditoría estricta de seguridad perimetral
|
|
184
|
+
puf auditar --profile=security
|
|
80
185
|
|
|
81
|
-
|
|
82
|
-
|
|
186
|
+
# Auditoría ligera de entrega rápida (MVP)
|
|
187
|
+
puf auditar --profile=mvp
|
|
188
|
+
```
|
|
83
189
|
|
|
84
|
-
|
|
190
|
+
#### 3. Auditoría Focalizada por Compuertas
|
|
191
|
+
```bash
|
|
192
|
+
# Evalúa únicamente higiene forense, compliance de WordPress y sintaxis universal
|
|
193
|
+
puf auditar -g G0,G21,G22
|
|
85
194
|
|
|
86
|
-
|
|
195
|
+
# Evalúa seguridad y topología de red
|
|
196
|
+
puf auditar -g G9,G19,G20
|
|
197
|
+
```
|
|
87
198
|
|
|
199
|
+
#### 4. Gestión de Incidentes y Reversión Atómica
|
|
88
200
|
```bash
|
|
89
|
-
#
|
|
90
|
-
|
|
201
|
+
# Inicia un incidente (genera andamio de test G2 y captura checkpoint inmutable G3)
|
|
202
|
+
puf iniciar INC-104 "Corrección de cálculo en pasarela de pagos" src/checkout.ts
|
|
91
203
|
|
|
92
|
-
#
|
|
93
|
-
puf
|
|
204
|
+
# Reversión de emergencia a partir del checkpoint SHA-256 en caso de error
|
|
205
|
+
puf revertir INC-104 src/checkout.ts
|
|
206
|
+
```
|
|
94
207
|
|
|
95
|
-
|
|
96
|
-
|
|
208
|
+
#### 5. Blindaje de Repositorio Git (Pre-commit Hook)
|
|
209
|
+
```bash
|
|
210
|
+
# Instala el guardián nativo en .git/hooks/pre-commit
|
|
211
|
+
puf instalar-hook
|
|
97
212
|
|
|
98
|
-
#
|
|
99
|
-
puf
|
|
213
|
+
# Validación en staged: impide realizar commits si se violan G4 (código muerto/CSS inline) o G7 (ADR)
|
|
214
|
+
puf guard
|
|
215
|
+
```
|
|
100
216
|
|
|
101
|
-
|
|
217
|
+
#### 6. Consulta de Versión
|
|
218
|
+
```bash
|
|
102
219
|
puf -v
|
|
220
|
+
# o
|
|
221
|
+
puf --version
|
|
103
222
|
```
|
|
104
223
|
|
|
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
224
|
---
|
|
187
225
|
|
|
188
|
-
|
|
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`.
|
|
226
|
+
## Integración Continua (GitHub Actions)
|
|
220
227
|
|
|
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.
|
|
228
|
+
El repositorio incluye la plantilla oficial [`puf-github-action.yml`](puf-github-action.yml). Para blindar cualquier repositorio en GitHub:
|
|
230
229
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
# Inicializar incidente (crea andamio G2 + checkpoints G3)
|
|
235
|
-
puf iniciar INC-042 "Descripcion del fallo" src/archivo.ts
|
|
230
|
+
```yaml
|
|
231
|
+
name: Certificación AUM-IC PUF-23
|
|
232
|
+
on: [push, pull_request]
|
|
236
233
|
|
|
237
|
-
|
|
238
|
-
puf
|
|
234
|
+
jobs:
|
|
235
|
+
auditoria-puf:
|
|
236
|
+
runs-on: ubuntu-latest
|
|
237
|
+
steps:
|
|
238
|
+
- name: Checkout del Repositorio
|
|
239
|
+
uses: actions/checkout@v4
|
|
239
240
|
|
|
240
|
-
|
|
241
|
-
|
|
241
|
+
- name: Configurar Node.js
|
|
242
|
+
uses: actions/setup-node@v4
|
|
243
|
+
with:
|
|
244
|
+
node-version: 22
|
|
242
245
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
# Instalar guardian de Git (pre-commit hook)
|
|
247
|
-
puf instalar-hook
|
|
246
|
+
- name: Ejecutar Auditoría PUF
|
|
247
|
+
run: npx @ingcrea/aumic-puf auditar --profile=enterprise --fast
|
|
248
248
|
```
|
|
249
249
|
|
|
250
|
-
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Licencia y Propiedad Intelectual
|
|
251
253
|
|
|
252
|
-
Distribuido bajo licencia **GNU Affero General Public License v3.0 (AGPL-3.0)**.
|
|
254
|
+
Distribuido bajo licencia **GNU Affero General Public License v3.0 (AGPL-3.0)**. Consulta el archivo [LICENSE](LICENSE) para mayores detalles sobre derechos y libertades de uso de software libre.
|
|
253
255
|
|
|
254
256
|
---
|
|
255
257
|
|
|
256
|
-
**[Ingeniería Creativa](https://ingcrea.com)** | [Estándar AUM-IC](https://github.com/ingcrea/aum-ic)
|
|
258
|
+
**[Ingeniería Creativa (IngCrea)](https://ingcrea.com)** | [Estándar AUM-IC 7:2026](https://github.com/ingcrea/aum-ic)
|