Repository navigation
Conversation
…6#203) El check de CI (Windows) detectaba drift solo en los header tree hashes: los textos coinciden, cambió la estructura del árbol tras el merge con el main 0.8.0. Regenerado con node scripts/i18n-inventory.mjs --out. Co-Authored-By: Claude Code <noreply@anthropic.com>
|
@sosan gracias por retomarlo tan rápido. He revisado el diff completo contra 1. Separar el laboratorio WSLEl cuerpo dice «3 archivos, confinados», pero la PR trae 5: incluye 2. El smoke todavía puede borrar un secreto real
Propuesta:
3. Ejecutar el código nuevo
Detalle menor: rustfmt dejó algunos comentarios mal alineados junto a los |
…v6#106, AC2) Ejercita migrate_legacy() en Secret Service real del CI (run 40651008234) según la revisión del owner (2026-10-28): - smoke #[ignore] linux_legacy_migrate_once_then_legacy_is_gone: puebla LEGACY_SERVICE (es.egdev.ai-usage) con una clave base (nan_session, sin @: las claves con @ no migran por diseño), get() la recupera por migración, queda reescrita en el destino actual (es.egdev.quorb) y el legado devuelve NoEntry. Sin imprimir valores. - AISLAMIENTO OBLIGATORIO: el smoke exige QUORB_SECRETS_SMOKE_ISOLATED=1 (definida solo dentro del dbus-run-session + gnome-keyring efímero del workflow) y falla antes de tocar nada sin ella — nunca un escritorio con llavero real. CleanupGuard creado antes de cualquier lectura y con distinción NoEntry vs error de lectura en la precondición. - linux-ci.yml: el paso "Secret Service smoke" exporta la var de aislamiento y corre ambos smokes. - README de evidencia: la migración pasa de pendiente a ejercitada, con el run enlazado y la ejecución segura documentada (solo vía CI aislado, no manual en escritorio). Co-Authored-By: Claude Code <noreply@anthropic.com>
…dev6#106) Revisión del agente rust-reviewer (2026-10-28), sin CRITICAL/HIGH: - MEDIUM: el Drop del CleanupGuard re-verifica QUORB_SECRETS_SMOKE_ISOLATED antes de borrar; si la precondición de aislamiento falló (entorno con llavero real donde la var se filtró y el destino NO estaba vacío), no borra nada. El comentario deja claro que la protección real es el keyring efímero del CI, no el assert. - LOW: el round trip (linux_secret_service_round_trip) ahora exige el mismo QUORB_SECRETS_SMOKE_ISOLATED=1 antes de tocar nada (coherencia doc/código). - LOW: doc del smoke de migración ajustado — el valor no se loguea en el camino feliz (aparece solo en un assert_eq! si algo falla, y es una constante de prueba no secreta). Co-Authored-By: Claude Code <noreply@anthropic.com>
El inventario no se edita a mano: se regenera. Su header declara el hash del árbol `src-tauri/src/`, que cambia con el smoke de migracion de secrets. Regenerado y verificado con `node scripts/i18n-inventory.mjs --check`. Co-Authored-By: Claude Code <noreply@anthropic.com>
d9be5b5 to
06131e6
Compare
|
@sosan, revisé el head
No ejecuté los smokes localmente para no tocar un llavero real. Mantendría la PR sin integrar hasta resolver ambos puntos. |
Qué entrega
Ejercita la migración del servicio legacy (criterio AC2 del issue #106) en Secret Service real del CI, respondiendo a la revisión del owner (2026-10-28):
Cambios (3 archivos, confinados)
src-tauri/src/secrets.rs: smoke#[ignore]linux_legacy_migrate_once_then_legacy_is_gone:LEGACY_SERVICE(es.egdev.ai-usage) directamente con una clave base de la allowlist (nan_session, sin@; las claves con@no migran por diseño deget()).get(), con el destino actual vacío, recupera el valor mediante migración (una lectura); el valor queda reescrito en el destino actual (es.egdev.quorb) y el legado devuelveNoEntry.QUORB_SECRETS_SMOKE_ISOLATED=1(exportada solo dentro deldbus-run-sessiony elgnome-keyringefímero del workflow) y falla antes de tocar nada si no está presente.CleanupGuardse crea antes de cualquier lectura y suDropvuelve a verificar la variable antes de borrar. La precondición distingueNoEntryde un error de lectura..github/workflows/linux-ci.yml: el paso «Secret Service smoke» exporta la variable de aislamiento y ejecuta ambos smokes (round trip y migración).docs/linux-l1-evidence/README.md: la migración pasa de «pendiente» a «ejercitada» (run 40651008234) y se documenta la ejecución segura.Revisión
El cambio fue revisado por un agente
rust-reviewer: sin CRITICAL ni HIGH. Se detectaron 1 MEDIUM y 2 LOW, todos corregidos en9a9764d(reverificación del aislamiento en elDropdel guard, comprobación del aislamiento también en el round trip y documentación del valor sin registrarlo en los logs durante el camino feliz).Nota
Los cambios no entraron en #176 (ya fusionada); esta PR los aporta sobre
mainactual (0.8.0), con el diff confinado a los tres archivos.Resuelve el punto AC2 del issue #106.