Etapa F refinamientos: uninstall poda dirs vacíos + install --require-signed

Dos bordes ásperos de la paquetería:
- uninstall ahora retira los directorios que quedaron VACÍOS por el borrado (rmdir de abajo
  arriba; remove_dir sólo borra dirs vacíos ⇒ se detiene solo al toparse con contenido de otro
  paquete). Antes dejaba /usr/bin, etc. huérfanos.
- `install --require-signed`: modo estricto que ABORTA si el release no está firmado por una
  clave confiada (Unsigned o UnknownKey ⇒ error). No basta con que el .swm reproduzca: exige
  autoría verificada del catálogo. Default off (no rompe flujos sin firma).

Validado E2E: uninstall bwrap poda 4 dirs; --require-signed aborta sin firma y procede con
release trusted. 31 suites verde.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 07:12:58 -04:00
co-authored by Claude Opus 4.8
parent 910db267ef
commit f94ef01139
2 changed files with 46 additions and 6 deletions
+2 -1
View File
@@ -145,7 +145,8 @@ CLI:
un binario ajeno. Registra el paquete en la DB de instalados (`--db`). `--repo` admite un
directorio local **o una URL HTTP(S)** (el repo son ficheros estáticos: `index.json` + los
`.swm`; con URL baja el índice + el cierre de deps a un temporal y procede igual).
`--prefix`/`--skip-source-patch` para staging y dry-run de schema.
`--prefix`/`--skip-source-patch` para staging y dry-run de schema. `--require-signed` exige que
el release esté firmado por una clave confiada (modo estricto: no basta con reproducir).
- `hammer repo list [--repo DIR]` — lista el catálogo (`<repo>/index.json`).
- `hammer repo sign --repo DIR --key KEY` — firma el ÍNDICE entero (release). Re-firmá tras
publicar (cada `pack --repo` invalida la firma del release).