tawasuyu

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 1569Shell 203Rust 109Markdown 993728 Sutichaykuna

catálogo: wl-clipboard sube al corpus — cerraba el único orphan_dep de cuatro grafos

Estaba sólo en `recipes/incoming-wlr/`, o sea inalcanzable desde las otras
cuatro colas. `cliphist` vive en el CORPUS y la pide en `[deps] run`, así que
corpus, gnome, kde y cosmic la reportaban como `orphan_deps: ["wl-clipboard"]`.

No era cosmético: `escritorio-cosmic` declara `cliphist` de raíz, y la imagen
se habría armado con el demonio de historial y SIN `wl-copy`/`wl-paste` — el
modo de fallo silencioso que la propia receta de cliphist advierte (el binario
corre y no hace nada). La clausura no lo podía ver: decía `falta=0` en los
cinco perfiles, porque una dep que no resuelve no se cuenta, desaparece.

Solución = la que el catálogo ya usó con `mpv` y `atuq`: subirla al corpus, de
donde las colas la alcanzan (sibling-first y después el catálogo padre).

Medido antes de mover: ninguna de sus 9 deps tenía variante hermana en
`incoming-wlr`, así que el ArtifactHash no podía cambiar — y no cambió
(`b3:fc2ab7b7…` a los dos lados, comprobado con `takana hash`). Cero re-sellos.

Tras regenerar los cinco grafos: `orphan_deps: []` en los cinco, y la clausura
de `escritorio-cosmic` pasa de 273 a 274, sellada.

5cb6e568d6695436c7a5d789c157cb965eead043 · ruwaq Sergio · (1 killa ñawpaq) · tayta d2187fda1 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

7 qillqakuna · +208 −81

diff --git a/docs/state/build-state-cosmic.json b/docs/state/build-state-cosmic.json
index 9c656627..8533527f 100644
--- a/docs/state/build-state-cosmic.json
+++ b/docs/state/build-state-cosmic.json
@@ -1,14 +1,14 @@
 {
  "schema": "hammer-build-state/1",
  "totals": {
-  "recipes": 935,
-  "nodes": 937,
-  "sealed": 935,
+  "recipes": 936,
+  "nodes": 938,
+  "sealed": 936,
   "ajeno": 2
  },
  "by_class": {
   "ajeno": 2,
-  "c": 266,
+  "c": 267,
   "go": 366,
   "gui": 41,
   "kernel": 7,
@@ -17,7 +17,7 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 907,
+   "sealed": 908,
    "ajeno": 2
   },
   "incoming-cosmic": {
@@ -37,8 +37,8 @@
   },
   "escritorio-cosmic": {
    "raices": 132,
-   "clausura": 273,
-   "sealed": 273
+   "clausura": 274,
+   "sealed": 274
   },
   "escritorio-mirada": {
    "raices": 17,
@@ -52,9 +52,7 @@
   }
  },
  "sin_perfil": 617,
- "orphan_deps": [
-  "wl-clipboard"
- ],
+ "orphan_deps": [],
  "topo_ok": true,
  "nodes": {
   "abseil-cpp": {
@@ -18739,6 +18737,35 @@
    "perfiles": [],
    "dependientes_total": 0
   },
+  "wl-clipboard": {
+   "iname": "wl-clipboard",
+   "version": "2.2.1",
+   "link": "dynamic",
+   "compiler": "zig-cc",
+   "deps": [
+    "expat",
+    "libffi",
+    "meson",
+    "pkgconf",
+    "python3",
+    "samurai",
+    "wayland",
+    "wayland-protocols",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "foreign": false,
+   "hash": "b3:fc2ab7b7469f31fc351b0fdcf6a4fe836fa86ef9b06986bd9dec1e4f9a7147f9",
+   "state": "sealed",
+   "blocked_by": [],
+   "unblocks": 0,
+   "perfiles": [
+    "escritorio-cosmic",
+    "escritorio-sway"
+   ],
+   "dependientes_total": 1
+  },
   "wlr-randr": {
    "iname": "wlr-randr",
    "version": "0.5.0",
diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json
index 42d5a0b7..24d25408 100644
--- a/docs/state/build-state-gnome.json
+++ b/docs/state/build-state-gnome.json
@@ -1,14 +1,14 @@
 {
  "schema": "hammer-build-state/1",
  "totals": {
-  "recipes": 961,
-  "nodes": 963,
-  "sealed": 961,
+  "recipes": 962,
+  "nodes": 964,
+  "sealed": 962,
   "ajeno": 2
  },
  "by_class": {
   "ajeno": 2,
-  "c": 302,
+  "c": 303,
   "go": 366,
   "gui": 51,
   "kernel": 7,
@@ -17,7 +17,7 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 895,
+   "sealed": 896,
    "ajeno": 2
   },
   "incoming-gnome": {
@@ -52,9 +52,7 @@
   }
  },
  "sin_perfil": 616,
- "orphan_deps": [
-  "wl-clipboard"
- ],
+ "orphan_deps": [],
  "topo_ok": true,
  "nodes": {
   "abseil-cpp": {
@@ -19787,6 +19785,35 @@
    "perfiles": [],
    "dependientes_total": 0
   },
+  "wl-clipboard": {
+   "iname": "wl-clipboard",
+   "version": "2.2.1",
+   "link": "dynamic",
+   "compiler": "zig-cc",
+   "deps": [
+    "expat",
+    "libffi",
+    "meson",
+    "pkgconf",
+    "python3",
+    "samurai",
+    "wayland",
+    "wayland-protocols",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "foreign": false,
+   "hash": "b3:fc2ab7b7469f31fc351b0fdcf6a4fe836fa86ef9b06986bd9dec1e4f9a7147f9",
+   "state": "sealed",
+   "blocked_by": [],
+   "unblocks": 0,
+   "perfiles": [
+    "escritorio-cosmic",
+    "escritorio-sway"
+   ],
+   "dependientes_total": 1
+  },
   "wlr-randr": {
    "iname": "wlr-randr",
    "version": "0.5.0",
diff --git a/docs/state/build-state-kde.json b/docs/state/build-state-kde.json
index 65a9c1a8..be81068b 100644
--- a/docs/state/build-state-kde.json
+++ b/docs/state/build-state-kde.json
@@ -1,14 +1,14 @@
 {
  "schema": "hammer-build-state/1",
  "totals": {
-  "recipes": 1086,
-  "nodes": 1088,
-  "sealed": 1086,
+  "recipes": 1087,
+  "nodes": 1089,
+  "sealed": 1087,
   "ajeno": 2
  },
  "by_class": {
   "ajeno": 2,
-  "c": 434,
+  "c": 435,
   "go": 366,
   "gui": 44,
   "kernel": 7,
@@ -17,7 +17,7 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 889,
+   "sealed": 890,
    "ajeno": 1
   },
   "incoming-kde": {
@@ -54,9 +54,7 @@
   }
  },
  "sin_perfil": 624,
- "orphan_deps": [
-  "wl-clipboard"
- ],
+ "orphan_deps": [],
  "topo_ok": true,
  "nodes": {
   "abseil-cpp": {
@@ -25582,6 +25580,35 @@
    "perfiles": [],
    "dependientes_total": 0
   },
+  "wl-clipboard": {
+   "iname": "wl-clipboard",
+   "version": "2.2.1",
+   "link": "dynamic",
+   "compiler": "zig-cc",
+   "deps": [
+    "expat",
+    "libffi",
+    "meson",
+    "pkgconf",
+    "python3",
+    "samurai",
+    "wayland",
+    "wayland-protocols",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "foreign": false,
+   "hash": "b3:fc2ab7b7469f31fc351b0fdcf6a4fe836fa86ef9b06986bd9dec1e4f9a7147f9",
+   "state": "sealed",
+   "blocked_by": [],
+   "unblocks": 0,
+   "perfiles": [
+    "escritorio-cosmic",
+    "escritorio-sway"
+   ],
+   "dependientes_total": 1
+  },
   "wlr-randr": {
    "iname": "wlr-randr",
    "version": "0.5.0",
diff --git a/docs/state/build-state-wlr.json b/docs/state/build-state-wlr.json
index c5f591d4..c443ee2f 100644
--- a/docs/state/build-state-wlr.json
+++ b/docs/state/build-state-wlr.json
@@ -17,11 +17,11 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 909,
+   "sealed": 910,
    "ajeno": 2
   },
   "incoming-wlr": {
-   "sealed": 12
+   "sealed": 11
   }
  },
  "by_profile": {
@@ -18540,16 +18540,17 @@
     "zlib"
    ],
    "cls": "c",
-   "queue": "incoming-wlr",
+   "queue": "corpus",
    "foreign": false,
    "hash": "b3:fc2ab7b7469f31fc351b0fdcf6a4fe836fa86ef9b06986bd9dec1e4f9a7147f9",
    "state": "sealed",
    "blocked_by": [],
    "unblocks": 0,
    "perfiles": [
+    "escritorio-cosmic",
     "escritorio-sway"
    ],
-   "dependientes_total": 0
+   "dependientes_total": 1
   },
   "wlr-randr": {
    "iname": "wlr-randr",
diff --git a/docs/state/build-state.json b/docs/state/build-state.json
index 5bd4360d..ba68d241 100644
--- a/docs/state/build-state.json
+++ b/docs/state/build-state.json
@@ -1,14 +1,14 @@
 {
  "schema": "hammer-build-state/1",
  "totals": {
-  "recipes": 910,
-  "nodes": 912,
-  "sealed": 910,
+  "recipes": 911,
+  "nodes": 913,
+  "sealed": 911,
   "ajeno": 2
  },
  "by_class": {
   "ajeno": 2,
-  "c": 261,
+  "c": 262,
   "go": 366,
   "gui": 41,
   "kernel": 7,
@@ -17,7 +17,7 @@
  "debt_by_class": {},
  "by_queue": {
   "corpus": {
-   "sealed": 910,
+   "sealed": 911,
    "ajeno": 2
   }
  },
@@ -44,9 +44,7 @@
   }
  },
  "sin_perfil": 617,
- "orphan_deps": [
-  "wl-clipboard"
- ],
+ "orphan_deps": [],
  "topo_ok": true,
  "nodes": {
   "abseil-cpp": {
@@ -18206,6 +18204,35 @@
    "perfiles": [],
    "dependientes_total": 0
   },
+  "wl-clipboard": {
+   "iname": "wl-clipboard",
+   "version": "2.2.1",
+   "link": "dynamic",
+   "compiler": "zig-cc",
+   "deps": [
+    "expat",
+    "libffi",
+    "meson",
+    "pkgconf",
+    "python3",
+    "samurai",
+    "wayland",
+    "wayland-protocols",
+    "zlib"
+   ],
+   "cls": "c",
+   "queue": "corpus",
+   "foreign": false,
+   "hash": "b3:fc2ab7b7469f31fc351b0fdcf6a4fe836fa86ef9b06986bd9dec1e4f9a7147f9",
+   "state": "sealed",
+   "blocked_by": [],
+   "unblocks": 0,
+   "perfiles": [
+    "escritorio-cosmic",
+    "escritorio-sway"
+   ],
+   "dependientes_total": 1
+  },
   "wlr-randr": {
    "iname": "wlr-randr",
    "version": "0.5.0",
diff --git a/recipes/incoming-wlr/wl-clipboard.toml b/recipes/wl-clipboard.toml
similarity index 62%
rename from recipes/incoming-wlr/wl-clipboard.toml
rename to recipes/wl-clipboard.toml
index 059c51f2..424afcfd 100644
--- a/recipes/incoming-wlr/wl-clipboard.toml
+++ b/recipes/wl-clipboard.toml
@@ -3,6 +3,24 @@
 # media docena de flujos (capturas con grim, selección con slurp) dependen de poder pegar el
 # resultado en algún lado.
 #
+# ── POR QUÉ VIVE EN EL CORPUS Y NO EN `incoming-wlr` (movida el 2026-09-14) ────────────────────
+# Estaba SÓLO en la cola de wlr, y eso la hacía inalcanzable desde las otras cuatro. El problema no
+# era teórico: `cliphist` vive en el CORPUS y la pide en `[deps] run`, así que en los grafos de
+# corpus, gnome, kde y cosmic aparecía como **orphan_dep** — una dep que nadie resuelve. Y el
+# perfil `escritorio-cosmic` declara `cliphist` de raíz: la imagen de COSMIC se habría armado con
+# el demonio de historial y SIN `wl-copy`/`wl-paste`, que es exactamente el modo de fallo silencioso
+# que la propia receta de cliphist advierte (el binario corre y no hace nada). La clausura NO lo
+# veía: `falta=0` en los cinco perfiles, porque una dep que no resuelve no se cuenta, desaparece.
+#
+# La solución es la que este catálogo ya usó con `mpv` y `atuq`: subirla al corpus, desde donde las
+# colas la alcanzan (resuelven sibling-first y después el catálogo padre). `escritorio-sway` la
+# sigue declarando de raíz y la sigue encontrando.
+#
+# ⚠ El ArtifactHash NO cambió al mover (`b3:fc2ab7b7…` antes y después): la ruta del fichero no
+# entra en `hash_inputs`, y ninguna de sus 9 deps tenía variante hermana en `incoming-wlr` que la
+# mudanza pudiera cambiar. Comprobado con `takana hash` a los dos lados; el artefacto sellado sigue
+# valiendo y no hubo que re-sellar nada.
+#
 # ── FUENTE GIT POR COMMIT, y una diferencia con codeberg que conviene notar ────────────────────
 # GitHub genera sus `archive/refs/tags/*.tar.gz` al vuelo igual que codeberg, así que se pinea el
 # commit (ADR 0006). PERO: este tag es **LIGERO**, no anotado — `git ls-remote` devuelve UN solo