Commit Graph
6 Commits
Author SHA1 Message Date
Sergio c7097e4a91 atuq §7.duodecies: el sembrador entra a las cuatro imágenes — y cifraba la seed de todos con una palabra pública
El §7.undecies dejó la bóveda declarada y a NADIE capaz de abrirla: ninguna
imagen traía un binario que sembrara `pacha_llavero::SEED_IDENTIDAD`. Esta es
esa unidad.

De las dos formas posibles entra `agora-cli`, y el motivo no es que sea mejor:
el wizard `churay-welcome-llimphi` SÍ tiene binario (medido: `src/main.rs` sin
`[[bin]]`, o sea que cargo lo descubre), pero decide además backend de IA,
dotfiles, fondo de pantalla y chasqui — la experiencia de primer arranque
entera, que no se decide dentro de una unidad del navegador.

⚠ Y antes de poder declararlo apareció lo que lo volvía imposible: sin
`AGORA_PASSPHRASE`, `Sesion::abrir()` caía en la frase de desarrollo
"agora-dev" con un aviso por stderr y un ✓ en pantalla. La cadena que eso toca:
frase → Argon2id → ChaCha20-Poly1305 que cifra la seed → la clave con la que
`boveda` descifra su base. O sea, en una imagen de escritorio, la bóveda de
todo el mundo cerrada con una palabra escrita en el fuente, y nada que falle.

Arreglado en tawasuyu (`fd08dc03a`): variable > terminal (se pregunta, sin eco,
y DOS veces en la génesis, donde un error de tipeo no se nota hasta que la seed
ya no se recupera) > desarrollo sólo si no hay a quién preguntarle. La decisión
vive en una función pura con cuatro tests, probada AL REVÉS: con el brazo
`Preguntar` borrado falla con `left: Desarrollo / right: Preguntar`.

Pin `9967b02c` → `da5fb8968` ⇒ `b3:46529e14`, 1,9 M, sellado en el worker con
la guarda PEGADA al build. Mirado por dentro (regla 3) y probado como
artefacto, con control negativo: `identity new` + `unlock` deja
`user pacha:id:default: 32` en `/proc/keys`, y con la frase equivocada contesta
«autenticación fallida» y NO re-siembra.

El muro del `Cargo.lock` por cuarta vez, con la causa cambiada: esta vez no la
puso quien tocó el lock sino otro agente que metió `shuma-taller` en un
`Cargo.toml`. Cerrado en el worker, donde el registro está completo: +1 línea.
Y el lock del árbol compartido traía otra vez el malo (índice y árbol con dos
versiones distintas, las dos rotas), así que el commit se armó con
`commit-tree` sin pasar por el índice.

Corrección al §7.undecies: el verbo es `agora-cli unlock`, no
`agora-cli identity unlock`.

El guardián de coherencia pasa de SEIS lugares a SIETE, con su cuarto control
negativo; los cuatro, en verde.

Queda: la herencia del llavero de SESIÓN entre procesos hermanos (sin medir —
y `/proc/keys` como root no la mide), y `pacha`/`pacha-secretos` en
`perfil.servidor` con el mismo hueco.
2026-09-21 16:40:46 +00:00
Sergio 0e0d8ddf0c atuq: el pin del sembrador sube al hijo — el lock de tawasuyu no cerraba
`cargo vendor --locked` sobre `fd08dc03a` muere con «cannot update the lock
file»: le faltaba la arista `shuma-taller`, que otro agente había metido en un
`Cargo.toml` sin el lock. Es la cuarta vez que este monorepo pone el mismo muro
(SDD 26 §7.quinquies.bis, §7.octies, §7.undecies).

Cerrado en el WORKER —sobre el árbol que takana ya había bajado, que es donde el
registro de cargo está completo—: +1 línea, cero checksums movidos. En la jaula
la misma operación devuelve 0 y borra miembros del workspace, con un diff que se
ve más mínimo que el correcto.

hash: b3:6520470e → b3:46529e14
2026-09-21 16:34:56 +00:00
Sergio 25cb9d150a atuq: el sembrador de la bóveda — agora-cli sube de pin y aprende a no inventar la frase
La unidad 12 del SDD 26 quedó en esto (§7.undecies): la bóveda entró a las
cuatro imágenes y NADIE puede abrirla, porque ninguna trae un binario capaz de
sembrar `pacha_llavero::SEED_IDENTIDAD`. `agora-cli` es el único del corpus que
sabe hacerlo — y estaba sellado con `perfiles: []` y pineado al 2026-06-18,
donde el verbo todavía no existe (`git grep` sobre el pin: 0 y 0, con HEAD de
control dando 4 y 1).

Sube a `fd08dc03a`, que además trae el arreglo que este oficio vuelve
obligatorio: sin `AGORA_PASSPHRASE`, `Sesion::abrir()` caía en la frase de
desarrollo "agora-dev" con un aviso por stderr y un ✓ en pantalla. En una
máquina de trabajo es cómodo; en una imagen de escritorio es la bóveda de todo
el mundo cifrada con una palabra pública, porque el keystore va con Argon2id +
ChaCha20-Poly1305 bajo esa frase. Ahora con terminal se pregunta, sin eco y dos
veces al crear; la de desarrollo queda sólo para el caso sin terminal.

Y con el pin nuevo hace falta `cargo_vendor_dir`, que el pin viejo no
necesitaba: tawasuyu commitea su propio `vendor/` desde entonces.

hash: b3:e05c41f1 → b3:6520470e (sin construir todavía)
2026-09-21 16:31:53 +00:00
SergioandClaude Opus 5 4d77d232d3 la mudanza sin terceros: las fuentes de tawasuyu por HTTPS público, y el orden del cutover
Tres cosas, y las tres quitan vueltas.

1. NO HACE FALTA NINGUNA CREDENCIAL EN EL WORKER, Y TAMPOCO UN USUARIO NUEVO

`tawasuyu/tawasuyu` y `sergio/takana` son repos PÚBLICOS en el gitea. Las 23 recetas que apuntaban a
`gitea@git.tawasuyu.net` (SSH, que exige la clave que es el SSH de todo) pasan a
`https://git.tawasuyu.net/…`. La URL es locator y NO entra en `hash_inputs` (ADR 0013): hecho con
control antes/después, **ningún ArtifactHash se movió**. Medido en el worker: `git clone --mirror
--filter=blob:none` + `git archive` extrae el árbol (155 M) **sin una sola credencial**.

Un usuario propio en gitea sólo haría falta para un repo PRIVADO; hoy ninguna receta usa uno. Si
mañana hace falta, es una cuenta de máquina con acceso al repo que toque — nunca la clave personal.

De paso, tres recetas decían «HUB-ONLY: el worker secretless recibe Connection refused». Ya no es
cierto y el comentario decía lo contrario de lo que pasa: corregido en las tres.

2. LA COPIA FUERA LA DA LA MUDANZA, NO GITHUB (decisión del usuario)

El «paso 1: espejar los 26 repos» deja de ser el paso 1. En cuanto el gitea vive en la caja nueva,
esos repos dejan de existir sólo en la máquina que se borra — que es lo que el paso pedía. El
objetivo es dejar de pagar dos máquinas, no sumar una dependencia. `espejar-repos.sh` queda como
herramienta disponible.

3. EL §9 REESCRITO: qué está hecho, qué falta y en qué orden

Hecho y cerrado: la caja arranca takana puro · store/grafos/granja/respaldo · repo firmado · la
imagen del perfil servidor con gitea sirviendo 200 supervisado por arje · `arjectl` · y el ensayo con
los datos REALES de gioser corriendo sobre takana.

Falta, en orden: actualizar la caja a la imagen nueva (`upgrade`, no `dd`) → mudar los datos del
gitea (`.backup` + rsync, con el origen parado en el corte) → caddy con los 6 dominios vivos → DNS →
verificar desde fuera con un clone real → el resto de servicios del censo → borrar gioser con las 8
puertas en verde.

Bloqueantes con su tamaño: `git` sellado sin `remote-http` (afecta a clonar DESDE una caja takana,
no al gitea que sirve; re-sella una raíz de `base`) y la puerta 5, que no bloquea la mudanza.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Tf9T4vGzsMoT7eS8YzMFn
2026-09-14 18:59:31 +00:00
sergioandClaude Opus 5 0225aa4e08 licencias: el código propio (tawasuyu) queda en MIT — 1017 de 1141 (89%)
Decisión del usuario: «tawasuyu está en MIT». Es la misma licencia que hammer (LICENSE en
la raíz + Cargo.toml), así que todo lo nuestro queda coherente bajo un solo término. Las 20
recetas con fuente en git.tawasuyu.net: arje-* (el init y sus compat), mirada-* (el
compositor, el greeter y mirada-ctl), netup, agora-cli, cosmos-cli, dominium-cli,
tinkuy-sim, llimphi-counter y libelogind.

⚠ ANOTADO EN LA TABLA porque es una trampa que casi pisé: `libelogind` NO es el elogind de
upstream (que sería LGPL-2.1+). Por el nombre lo parece; su cabecera dice que es una
reimplementación PROPIA de la C-ABI sd-login dentro de arje-compat. Declararla LGPL «porque
se llama así» habría sido exactamente el error que este fichero prohíbe — el tercero del
mismo tipo hoy, después de `knighttime` (parecía Go y es KDE) y de la familia `kube*`
(parecen KDE y son Go). El nombre nunca es evidencia; la fuente sí.

Hashes verificados sobre las 20: idénticos.

Quedan 124 sin declarar, ya todas de terceros.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 14:01:15 -04:00
sergio 3429bcf1d4 Etapa G: agora-cli + cosmos-cli — más apps tawasuyu al catálogo (57→59)
Sigo poblando con apps propias de tawasuyu (mismo patrón Cargo, commit 9967b02c
--locked, estático zig-cc, bin==package, reusan el árbol fuente fetcheado):
- agora-cli: shell del ágora (identidad/atestaciones/grafo firmado), deps livianas.
- cosmos-cli: cliente del servicio de cómputo astronómico (usa tokio, build sano musl).

Ambos construyen+corren estáticos y publicados al repo firmado (59 paquetes).
2026-06-21 11:37:51 -04:00