diff --git a/AGENTS.md b/AGENTS.md index 4bc259f..16ba16a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -17,7 +17,7 @@ ## Restricciones -- Funcionalidad nueva solo dentro del veredicto vigente (CONDITIONAL-CLEAR hasta MVP-5: catálogo de matriz, UI de cinco pasos de esa matriz, paridad Tauri/WASM); el rail de Forge sigue en seis pasos y no se elimina ninguna pantalla. Runner, imagen real, root, discos y shell siguen cerrados hasta un alcance `accepted` adicional y una reevaluación del veredicto. +- Funcionalidad nueva solo dentro del veredicto vigente (CONDITIONAL-CLEAR hasta MVP-5, más el slice ISO-01 de imagen viva x86_64 UEFI: perfil archiso, una corrida `mkarchiso` en proceso separado y arranque vivo). El recorrido de la cara es Sistema base → Entorno → Apps → Identidad y seguridad → Revisión. El paso Disco y particiones sale de ese recorrido por orden del operador (2026-10-18). Siguen cerrados el runner de instalación, root, discos (A6), shell arbitraria y aarch64. Sin la línea ISO-01 de `go-no-go.md` no hay exporter ni `mkarchiso`. - No ejecutar strings heredados `cmd`, hooks, `pacstrap` ni shell. - Rust es la única autoridad semántica; TypeScript no duplica reglas. - MVP no usa root, discos, shell, sidecars ni instalación real. @@ -37,7 +37,7 @@ - La siguiente fase se especifica desde el último plan implementado, el roadmap de `docs/10-delivery/` y el trabajo pendiente, sin ampliar el veredicto vigente. - No incluir en un commit cambios de `.gitignore` ni artefactos de fugas salvo petición explícita. - La GUI se llama Forge (la interfaz gráfica de ArchMaker); el proyecto y el motor se llaman ArchMaker. Neubat queda fuera de la nomenclatura activa y se conserva solo como historia. No inventar pantallas: conectar los botones y controles que ya trae la cara. -- El flujo de Forge es Disco y particiones → Sistema base → Entorno → Apps → Identidad y seguridad → Revisión (experiencia única; sin Sencillo/Avanzado). +- El flujo de Forge es Sistema base → Entorno → Apps → Identidad y seguridad → Revisión (experiencia única; sin Sencillo/Avanzado). En Revisión se pide la imagen. No hay paso de disco, particiones, GPT, ESP, LUKS ni formatear. El SSD lo instala archinstall en la sesión viva. - En la cara UEFI el arranque preseleccionado es systemd-boot; GRUB y Limine siguen seleccionables. - Título visible de ventana/documento/cabecera: ArchMaker Forge; productName Forge e identifier intactos. - Protección de `main` sin checks bloqueantes para el dueño y sí ante colaboradores externos. @@ -46,12 +46,12 @@ - Remoto canónico: `https://github.com/Alexendros/archmaker`. Licencia Apache-2.0. - Baseline vigente: `implementation-baseline-mvp5`. En el árbol están el walking skeleton MVP-0 y los slices MVP-1 (dominio, catálogo y migración v5.1), MVP-2 (reglas, resolución y validación), MVP-3 (adapters de exportación), MVP-4 (React + MockCorePort + cara Forge en `apps/web`) y MVP-5 (catálogo de matriz, UI cinco pasos, paridad Tauri/WASM, remediación operativa + Prove-It). -- Alcance MVP-5 cerrado (`mvp5-scope.md`, MVP-5-01..05). Hueco residual histórico: `docs/10-delivery/mvp5-gap-spec.md` (draft; cara supersedida por incremento Forge 2026-10-17). Remediación operativa: `docs/10-delivery/remediation/`. MVP-6 **accepted** solo AppImage (histórico Neubat `v0.1.0`; nombre visible vigente Forge); release [`v0.1.0`](https://github.com/Alexendros/archmaker/releases/tag/v0.1.0) publicada (verificación parcial: sin cosign local, sin 3× GUI, F7 sin `RC_SHA_FUNCIONAL`). `iso-scope.md` sigue sin `accepted`. +- Alcance MVP-5 cerrado (`mvp5-scope.md`, MVP-5-01..05). Hueco residual histórico: `docs/10-delivery/mvp5-gap-spec.md` (draft; cara supersedida por incremento Forge 2026-10-17). Remediación operativa: `docs/10-delivery/remediation/`. MVP-6 **accepted** solo AppImage (histórico Neubat `v0.1.0`; nombre visible vigente Forge); release [`v0.1.0`](https://github.com/Alexendros/archmaker/releases/tag/v0.1.0) publicada (verificación parcial: sin cosign local, sin 3× GUI, F7 sin `RC_SHA_FUNCIONAL`). `iso-scope.md` **accepted** el 2026-10-18 solo para imagen viva x86_64 UEFI (ISO-01). El código del perfil y de `mkarchiso` empieza en ISO-02. - `reference/v5.1/` es evidencia inmutable verificada por SHA-256. La UI React vive en `apps/web/` (`forge-face.ts`); el dominio está en `crates/archmaker-core` y se expone por CorePort. - Arranque de adaptadores vía `apps/web/src/create-core-port.ts`: Desktop → TauriCorePort (`invoke` de `@tauri-apps/api/core`); navegador → WasmCorePort (`tools/build-wasm.sh`); MockCorePort solo con `?mock=1` u opt-in explícito, nunca por fallo silencioso de Tauri/WASM. - ADR-0011 (propuesto, `in-review`): la selección del configurador produce un contrato JSON de aplicación; cada cláusula tiene schema en `contracts/json-schema/`, issue `kind:clause` y tests verificados en Rust. No añade target de imagen. - Alcance declarativo Forge (draft): `docs/10-delivery/forge-declarative-scope.md`. ADR-0013…0018 (UKI ESP, estados ortogonales, handles, digests v2, ONLYOFFICE/navegadores, A6 excluida). No reescribe `mvp5-scope.md`. Mantener `executionStatus=not-executed` en ese alcance. -- Cadena de integridad Forge (selección → documento persistido → motor → resolución/validación → UI efectiva → export → reimportación). Registro: `docs/10-delivery/closure/forge-integrity-findings-2026-10-18.md`; matriz: `docs/10-delivery/closure/forge-acceptance-matrix.md`. `StorageIntent` y campos v2 deben llegar íntegros al borrador/`draftForCore`/export; TypeScript no inventa semántica. +- Cadena de integridad Forge (selección → documento persistido → motor → resolución/validación → UI efectiva → export → reimportación). Registro: `docs/10-delivery/closure/forge-integrity-findings-2026-10-18.md`; matriz: `docs/10-delivery/closure/forge-acceptance-matrix.md`. Desde el 2026-10-18 la cara no autora `storagePlan`, filesystem ni cifrado de disco; un borrador importado con `storagePlan` no reabre el paso de disco. `executionStatus` de planes de disco permanece `not-executed`. TypeScript no inventa paquetes ni el perfil. - En `apps/web` con Vite, la CSP (`style-src 'self'`) exige CSS por `` a `/forge-face.css` (plugin Vite); inyectar `