gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1182Shell 87Rust 63Markdown 541592 Sutichaykuna

⎇ 13769aa7b41bf597cf8d0ff840d0ecfae76fdb5c docs/adr/0005-hardlink-hydration.md Markdown · 37 siq'ikuna · 1.6 KB Ñawpa willay ch'uya

Scaffold inicial: workspace Rust + SDDs completos 8bf162304 · sergio ·

1# ADR 0005 — Hidratación por hardlinks
2
3- **Estado:** aceptada
4- **Fecha:** 2026-06-06
5
6## Contexto
7
8Hay que llevar artefactos del store content-addressed al FHS real. Tres opciones:
9
101. **Symlinks al store** (estilo Nix): rutas crípticas, `/bin` lleno de enlaces a un almacén
11   oculto. Es justo el "pueblo fantasma" que rechazamos.
122. **Copia ciega** al FHS: rutas reales, pero se pierde el dedup y la relación con el store
13   (rollback más torpe, más disco).
143. **Hardlinks** del store al FHS.
15
16## Decisión
17
18**Hidratación por hardlinks** como modo por defecto (con `patchelf` para normalizar el caso
19dinámico antes del enlace).
20
21## Razones
22
23- **Rutas reales:** `/bin/grep` es un archivo de verdad, no un symlink a `/store/...`.
24  Estructura familiar, control total en la terminal.
25- **Dedup:** el hardlink comparte el inode del store; cero copia mientras no se modifique.
26- **Mutabilidad con red de seguridad:** pisar `/bin/grep` en caliente **rompe el hardlink**
27  (copy-on-write manual); el artefacto del store queda intacto como base de rollback.
28- **Rollback simple:** re-hidratar restaura el hardlink original desde el store.
29
30## Consecuencias
31
32- Hardlinks requieren que store y FHS estén en el **mismo filesystem**. En la fase Alpine viven
33  ambos en el rootfs → OK. En la distro propia se tendrá en cuenta al particionar
34  ([SDD 10](../10-roadmap.md)).
35- El caso dinámico necesita `patchelf` (set-interpreter + set-rpath) **antes** del hardlink
36  ([SDD 03](../03-hydration.md) §4).
37- El GC del store debe contar hardlinks/alcanzabilidad para no borrar artefactos vivos.

0005-hardlink-hydration.md

ADR 0005 — Hidratación por hardlinks

Contexto

Hay que llevar artefactos del store content-addressed al FHS real. Tres opciones:

  1. Symlinks al store (estilo Nix): rutas crípticas, /bin lleno de enlaces a un almacén oculto. Es justo el "pueblo fantasma" que rechazamos.
  2. Copia ciega al FHS: rutas reales, pero se pierde el dedup y la relación con el store (rollback más torpe, más disco).
  3. Hardlinks del store al FHS.

Decisión

Hidratación por hardlinks como modo por defecto (con patchelf para normalizar el caso dinámico antes del enlace).

Razones

Consecuencias