triaje: los 170 candidatos de frontera clasificados, y la cadena se ejerce entera
Evidencia dura primero: NINGUNO de los 170 bloquea un build. Toda receta que
pide uno de estos ya está sellada al menos una vez ⇒ hammer construye sin
ninguno. Eso descarta empíricamente "hueco de build" para los 170 y deja sólo
la pregunta de runtime.
VEREDICTOS
provisto 11 — no faltan: ya los da otra receta con otro nombre. nixpkgs parte
en varios paquetes lo que acá es uno solo. Verificado contra el
store: wayland-scanner→wayland, mesa-libgbm→mesa (nuestros tres
mesa producen libgbm.so.1), libxcb-*→xcb-util-*, poppler-qt6→
poppler, gmp-with-cxx→gmp, uname→coreutils.
nix-ismo 5 — andamiaje de nixpkgs (env wrappers, helpers del stdenv, glibc
asomando por su libc).
opcional 150 — software real que nixpkgs habilita y hammer no necesita, con el
porqué agrupado: systemd (usamos arje-zero), X11 heredado (el
escritorio es Wayland), Vulkan/shaders, audio/multimedia,
conectores de BD, tooling de docs/tests, bindings Python de Qt,
paquetería ajena (tenemos .swm).
hueco 4 — gaps de RUNTIME, no de build: shared-mime-info (sin base MIME
no hay tipos de fichero), xwayland (ninguna app X11 corre),
polkit-qt-1 (sin diálogos de autorización), qqc2-breeze-style
(los controles QML caen a un estilo genérico).
CORRIGE UN ERROR MÍO DE P3: dije que mesa-libgbm/libglvnd eran "el muro de
GBM/EGL". Falso — libgbm ya lo produce nuestro mesa. El muro era softpipe vs
llvmpipe, no un paquete ausente.
CUARTO VEREDICTO NUEVO (`provisto`) con su propio lazo: sale a alias-triaje.txt
y seed-graph.py lo carga en MAPA ⇒ esos 11 nombres dejan de contarse como hueco
para siempre. Junto con nixismos-triaje.txt, el sembrador aprende de su triaje.
Y LA CADENA SE EJERCE ENTERA POR PRIMERA VEZ: los 4 huecos entraron como raíces
de escritorio-kde → nacieron 4 nodos `wanted` (raíces 11, sin receta 4; el grafo
sigue cerrando, --check exit 0) → seed-graph los sembró (42 aristas conocidas,
21 candidatos nuevos de frontera) → drenar.py los ordena marcándolos [semilla],
que es la regla de la fuente única a la vista. qqc2-breeze-style no cae en la
onda 1 porque sus deps SEMBRADAS la traban (kcodecs, kirigami…): el andamio
funcionando como se diseñó.
De paso: qtbase se selló mientras corría esto ⇒ la onda 1 de KDE se abrió de 1 a
13 recetas. El cuello de botella que reportó P4 ya está destrabado.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
# alias-triaje.txt — DERIVADO de frontera-triaje.toml por scripts/triaje.py --aplicar.
|
||||||
|
# `<nombre-en-nixpkgs> <receta-de-hammer-que-lo-provee>`. Lo lee seed-graph.py como MAPA:
|
||||||
|
# nixpkgs parte en varios paquetes lo que acá es uno solo.
|
||||||
|
gmp-with-cxx gmp
|
||||||
|
libxcb-cursor xcb-util-cursor
|
||||||
|
libxcb-image xcb-util-image
|
||||||
|
libxcb-keysyms xcb-util-keysyms
|
||||||
|
libxcb-render-util xcb-util-renderutil
|
||||||
|
libxcb-util xcb-util
|
||||||
|
libxcb-wm xcb-util-wm
|
||||||
|
mesa-libgbm mesa
|
||||||
|
poppler-qt6 poppler
|
||||||
|
uname coreutils
|
||||||
|
wayland-scanner wayland
|
||||||
+161
-374
File diff suppressed because it is too large
Load Diff
+44
-43
@@ -22,34 +22,29 @@
|
|||||||
},
|
},
|
||||||
"escritorio-kde": {
|
"escritorio-kde": {
|
||||||
"grafo": "docs/state/build-state-kde.json",
|
"grafo": "docs/state/build-state-kde.json",
|
||||||
"nodos": 162,
|
"nodos": 166,
|
||||||
"en_deuda": 77,
|
"en_deuda": 77,
|
||||||
"ondas": 12,
|
"ondas": 11,
|
||||||
"profundidad": 12,
|
"profundidad": 11,
|
||||||
"construibles_ya": [
|
"construibles_ya": [
|
||||||
"qtbase"
|
"kcodecs",
|
||||||
|
"karchive",
|
||||||
|
"kitemviews",
|
||||||
|
"kglobalaccel",
|
||||||
|
"kdbusaddons",
|
||||||
|
"attica",
|
||||||
|
"kdnssd",
|
||||||
|
"qtlanguageserver",
|
||||||
|
"kplotting",
|
||||||
|
"qcoro",
|
||||||
|
"polkit-qt-1",
|
||||||
|
"shared-mime-info",
|
||||||
|
"xwayland"
|
||||||
],
|
],
|
||||||
"olas": [
|
"olas": [
|
||||||
{
|
{
|
||||||
"n": 1,
|
"n": 1,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"qtbase"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"n": 2,
|
|
||||||
"recetas": [
|
|
||||||
"qttools",
|
|
||||||
"qtsvg",
|
|
||||||
"qtshadertools",
|
|
||||||
"qtlanguageserver",
|
|
||||||
"qcoro"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"n": 3,
|
|
||||||
"recetas": [
|
|
||||||
"qtdeclarative",
|
|
||||||
"kcodecs",
|
"kcodecs",
|
||||||
"karchive",
|
"karchive",
|
||||||
"kitemviews",
|
"kitemviews",
|
||||||
@@ -57,11 +52,22 @@
|
|||||||
"kdbusaddons",
|
"kdbusaddons",
|
||||||
"attica",
|
"attica",
|
||||||
"kdnssd",
|
"kdnssd",
|
||||||
"kplotting"
|
"qtlanguageserver",
|
||||||
|
"kplotting",
|
||||||
|
"qcoro",
|
||||||
|
"polkit-qt-1",
|
||||||
|
"shared-mime-info",
|
||||||
|
"xwayland"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 4,
|
"n": 2,
|
||||||
|
"recetas": [
|
||||||
|
"qtdeclarative"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"n": 3,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"kcoreaddons",
|
"kcoreaddons",
|
||||||
"kconfig",
|
"kconfig",
|
||||||
@@ -83,7 +89,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 5,
|
"n": 4,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"kcolorscheme",
|
"kcolorscheme",
|
||||||
"kcompletion",
|
"kcompletion",
|
||||||
@@ -106,7 +112,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 6,
|
"n": 5,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"kconfigwidgets",
|
"kconfigwidgets",
|
||||||
"kiconthemes",
|
"kiconthemes",
|
||||||
@@ -122,20 +128,21 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 7,
|
"n": 6,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"kxmlgui",
|
"kxmlgui",
|
||||||
"ksvg"
|
"ksvg",
|
||||||
|
"qqc2-breeze-style"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 8,
|
"n": 7,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"kio"
|
"kio"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 9,
|
"n": 8,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"kparts",
|
"kparts",
|
||||||
"kcmutils",
|
"kcmutils",
|
||||||
@@ -145,7 +152,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 10,
|
"n": 9,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"frameworkintegration",
|
"frameworkintegration",
|
||||||
"ktexteditor",
|
"ktexteditor",
|
||||||
@@ -154,7 +161,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 11,
|
"n": 10,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"plasma-workspace",
|
"plasma-workspace",
|
||||||
"qqc2-desktop-style",
|
"qqc2-desktop-style",
|
||||||
@@ -162,7 +169,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"n": 12,
|
"n": 11,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"plasma-integration"
|
"plasma-integration"
|
||||||
]
|
]
|
||||||
@@ -172,28 +179,22 @@
|
|||||||
"escritorio-mirada": {
|
"escritorio-mirada": {
|
||||||
"grafo": "docs/state/build-state.json",
|
"grafo": "docs/state/build-state.json",
|
||||||
"nodos": 31,
|
"nodos": 31,
|
||||||
"en_deuda": 4,
|
"en_deuda": 3,
|
||||||
"ondas": 2,
|
"ondas": 1,
|
||||||
"profundidad": 2,
|
"profundidad": 1,
|
||||||
"construibles_ya": [
|
"construibles_ya": [
|
||||||
"libinput",
|
|
||||||
"mesa-swrast",
|
"mesa-swrast",
|
||||||
|
"mirada-compositor",
|
||||||
"mirada-greeter"
|
"mirada-greeter"
|
||||||
],
|
],
|
||||||
"olas": [
|
"olas": [
|
||||||
{
|
{
|
||||||
"n": 1,
|
"n": 1,
|
||||||
"recetas": [
|
"recetas": [
|
||||||
"libinput",
|
|
||||||
"mesa-swrast",
|
"mesa-swrast",
|
||||||
|
"mirada-compositor",
|
||||||
"mirada-greeter"
|
"mirada-greeter"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"n": 2,
|
|
||||||
"recetas": [
|
|
||||||
"mirada-compositor"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
+354
-341
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,7 @@
|
|||||||
# nixismos-triaje.txt — DERIVADO de frontera-triaje.toml por scripts/triaje.py --aplicar.
|
# nixismos-triaje.txt — DERIVADO de frontera-triaje.toml por scripts/triaje.py --aplicar.
|
||||||
# Lo lee seed-graph.py y lo suma a su lista de descarte: el sembrador aprende de su triaje.
|
# Lo lee seed-graph.py y lo suma a su lista de descarte: el sembrador aprende de su triaje.
|
||||||
|
git-minimal
|
||||||
|
glibc
|
||||||
|
lndir
|
||||||
|
python3-3.14.6-env
|
||||||
|
remove-references-to
|
||||||
|
|||||||
@@ -0,0 +1,512 @@
|
|||||||
|
{
|
||||||
|
"schema": "hammer-seed-edges/1",
|
||||||
|
"fuente": "nixpkgs (metadata; NO se construye con nix — ADR 0004)",
|
||||||
|
"advertencia": "HIPÓTESIS, no verdad. Sólo válido para nodos SIN receta; con receta, manda la receta.",
|
||||||
|
"nodos": {
|
||||||
|
"polkit-qt-1": [
|
||||||
|
{
|
||||||
|
"dep": "cmake",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "cmake",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "samurai",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "ninja",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "wrap-qt6-apps-hook",
|
||||||
|
"clase": "nix-ismo",
|
||||||
|
"origen_nix": "wrap-qt6-apps-hook",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "kf6-move-outputs-hook",
|
||||||
|
"clase": "nix-ismo",
|
||||||
|
"origen_nix": "kf6-move-outputs-hook",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "qmllint-validate-hook",
|
||||||
|
"clase": "nix-ismo",
|
||||||
|
"origen_nix": "qmllint-validate-hook",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "pkgconf",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "pkg-config-wrapper",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "",
|
||||||
|
"clase": "nix-ismo",
|
||||||
|
"origen_nix": "",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "qtbase",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "qtbase",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "glib",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "glib",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "polkit",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "polkit",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"qqc2-breeze-style": [
|
||||||
|
{
|
||||||
|
"dep": "cmake",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "cmake",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "samurai",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "ninja",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "wrap-qt6-apps-hook",
|
||||||
|
"clase": "nix-ismo",
|
||||||
|
"origen_nix": "wrap-qt6-apps-hook",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "kf6-move-outputs-hook",
|
||||||
|
"clase": "nix-ismo",
|
||||||
|
"origen_nix": "kf6-move-outputs-hook",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "qmllint-validate-hook",
|
||||||
|
"clase": "nix-ismo",
|
||||||
|
"origen_nix": "qmllint-validate-hook",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "",
|
||||||
|
"clase": "nix-ismo",
|
||||||
|
"origen_nix": "",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "qtbase",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "qtbase",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "extra-cmake-modules",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "extra-cmake-modules",
|
||||||
|
"campo": "pbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "kcodecs",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "kcodecs",
|
||||||
|
"campo": "pbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "kcolorscheme",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "kcolorscheme",
|
||||||
|
"campo": "pbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "kconfig",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "kconfig",
|
||||||
|
"campo": "pbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "kguiaddons",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "kguiaddons",
|
||||||
|
"campo": "pbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "kiconthemes",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "kiconthemes",
|
||||||
|
"campo": "pbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "kirigami",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "kirigami-wrapped",
|
||||||
|
"campo": "pbi",
|
||||||
|
"ns": "kdePackages"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"shared-mime-info": [
|
||||||
|
{
|
||||||
|
"dep": "meson",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "meson",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "samurai",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "ninja",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "pkgconf",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "pkg-config-wrapper",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "gettext-tiny",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "gettext",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxml2",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libxml2",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "glib",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "glib",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"xwayland": [
|
||||||
|
{
|
||||||
|
"dep": "pkgconf",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "pkg-config-wrapper",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "meson",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "meson",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "samurai",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "ninja",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "wayland",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "wayland-scanner",
|
||||||
|
"campo": "nbi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "dri-pkgconfig-stub",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "dri-pkgconfig-stub",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "egl-wayland",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "egl-wayland",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libdecor",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libdecor",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "mesa",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "mesa-libgbm",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libepoxy",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libepoxy",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libei",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libei",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "font-util",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "font-util",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libglvnd",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libglvnd",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "glu",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "glu",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libX11",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libx11",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libXau",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libxau",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxaw",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libxaw",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libXdmcp",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libxdmcp",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libXext",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libxext",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libXfixes",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libxfixes",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxfont_2",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libxfont_2",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxmu",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libxmu",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxpm",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libxpm",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libXrender",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libxrender",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxres",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libxres",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxt",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libxt",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libdrm",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libdrm",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxcb",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libxcb",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxkbfile",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libxkbfile",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxshmfence",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libxshmfence",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libxcvt",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "libxcvt",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "mesa-gl-headers",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "mesa-gl-headers",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "openssl",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "openssl",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "pixman",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "pixman",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "wayland-protocols",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "wayland-protocols",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "xkbcomp",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "xkbcomp",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "xorgproto",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "xorgproto",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "xtrans",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "xtrans",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "zlib",
|
||||||
|
"clase": "conocida",
|
||||||
|
"origen_nix": "zlib",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libtirpc",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libtirpc",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "systemd",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "systemd",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dep": "libunwind",
|
||||||
|
"clase": "frontera",
|
||||||
|
"origen_nix": "libunwind",
|
||||||
|
"campo": "bi",
|
||||||
|
"ns": "top-level"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -58,4 +58,9 @@ cola = "incoming-kde"
|
|||||||
paquetes = [
|
paquetes = [
|
||||||
"plasma-workspace", "kwin", "kscreenlocker", "breeze", "frameworkintegration",
|
"plasma-workspace", "kwin", "kscreenlocker", "breeze", "frameworkintegration",
|
||||||
"qqc2-desktop-style", "plasma-integration",
|
"qqc2-desktop-style", "plasma-integration",
|
||||||
|
# Huecos de RUNTIME confirmados por el triaje de la frontera (2026-07-22). Ninguno bloquea un
|
||||||
|
# build —todas las recetas que los piden ya están selladas— pero sin ellos el escritorio arranca
|
||||||
|
# roto: sin tipos de fichero, sin apps X11, sin diálogos de autorización y con los controles QML
|
||||||
|
# en un estilo genérico. Ver docs/state/frontera-triaje.toml para el porqué de cada uno.
|
||||||
|
"shared-mime-info", "xwayland", "polkit-qt-1", "qqc2-breeze-style",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -76,6 +76,15 @@ _TRIAJE = ROOT / "docs/state/nixismos-triaje.txt"
|
|||||||
if _TRIAJE.exists():
|
if _TRIAJE.exists():
|
||||||
NIXISMOS_EXACTOS |= {l.strip() for l in _TRIAJE.read_text().splitlines()
|
NIXISMOS_EXACTOS |= {l.strip() for l in _TRIAJE.read_text().splitlines()
|
||||||
if l.strip() and not l.startswith("#")}
|
if l.strip() and not l.startswith("#")}
|
||||||
|
# Y los `provisto`: nombres que nixpkgs separa en un paquete propio y acá los da otra receta
|
||||||
|
# (`mesa-libgbm`→mesa). Entran al MAPA, así se resuelven como arista CONOCIDA en vez de hueco.
|
||||||
|
_ALIAS = ROOT / "docs/state/alias-triaje.txt"
|
||||||
|
if _ALIAS.exists():
|
||||||
|
for _l in _ALIAS.read_text().splitlines():
|
||||||
|
if _l.strip() and not _l.startswith("#"):
|
||||||
|
_p = _l.split()
|
||||||
|
if len(_p) == 2:
|
||||||
|
MAPA.setdefault(_p[0], _p[1])
|
||||||
NIXISMOS_INFIJOS = ("-hook",) # `cargo-build-hook.sh` no termina en `-hook`, lo contiene
|
NIXISMOS_INFIJOS = ("-hook",) # `cargo-build-hook.sh` no termina en `-hook`, lo contiene
|
||||||
# Toolchains que provee el LAB (el rootfs del sandbox), no una receta: ninguna receta Rust declara
|
# Toolchains que provee el LAB (el rootfs del sandbox), no una receta: ninguna receta Rust declara
|
||||||
# `rust` ni `cargo` en `[deps].build` — están vacías y el toolchain viene de abajo. Que nixpkgs los
|
# `rust` ni `cargo` en `[deps].build` — están vacías y el toolchain viene de abajo. Que nixpkgs los
|
||||||
|
|||||||
+21
-3
@@ -14,6 +14,9 @@
|
|||||||
# Queda registrada para que deje de reaparecer como pregunta.
|
# Queda registrada para que deje de reaparecer como pregunta.
|
||||||
# nix-ismo → andamiaje de nixpkgs sin contraparte acá ⇒ vuelve a `seed-graph.py` como descarte,
|
# nix-ismo → andamiaje de nixpkgs sin contraparte acá ⇒ vuelve a `seed-graph.py` como descarte,
|
||||||
# así la próxima corrida es más limpia. El sembrador aprende de su propio triaje.
|
# así la próxima corrida es más limpia. El sembrador aprende de su propio triaje.
|
||||||
|
# provisto → NO falta: ya lo da otra receta con otro nombre (nixpkgs parte en varios paquetes
|
||||||
|
# lo que acá es uno solo: `mesa-libgbm`→mesa, `libxcb-image`→xcb-util-image).
|
||||||
|
# Vuelve a `seed-graph.py` como ALIAS ⇒ deja de contarse como hueco para siempre.
|
||||||
#
|
#
|
||||||
# NO decide nada solo. `sugerencia` propone con evidencia mecánica (cuántas recetas lo piden, si el
|
# NO decide nada solo. `sugerencia` propone con evidencia mecánica (cuántas recetas lo piden, si el
|
||||||
# nombre tiene forma de env/wrapper de nix), pero `veredicto` arranca en `pendiente` y sólo lo
|
# nombre tiene forma de env/wrapper de nix), pero `veredicto` arranca en `pendiente` y sólo lo
|
||||||
@@ -29,7 +32,8 @@ ROOT = Path(__file__).resolve().parent.parent
|
|||||||
FRONTERA = ROOT / "docs/state/seed-frontera.json"
|
FRONTERA = ROOT / "docs/state/seed-frontera.json"
|
||||||
TRIAJE = ROOT / "docs/state/frontera-triaje.toml"
|
TRIAJE = ROOT / "docs/state/frontera-triaje.toml"
|
||||||
DESCARTE = ROOT / "docs/state/nixismos-triaje.txt"
|
DESCARTE = ROOT / "docs/state/nixismos-triaje.txt"
|
||||||
VEREDICTOS = ("pendiente", "hueco", "opcional", "nix-ismo")
|
ALIAS = ROOT / "docs/state/alias-triaje.txt"
|
||||||
|
VEREDICTOS = ("pendiente", "hueco", "opcional", "nix-ismo", "provisto")
|
||||||
|
|
||||||
# Formas de nombre que en nixpkgs son andamiaje casi seguro. Sólo alimenta `sugerencia`, nunca
|
# Formas de nombre que en nixpkgs son andamiaje casi seguro. Sólo alimenta `sugerencia`, nunca
|
||||||
# `veredicto`: una heurística no cierra un juicio, lo abarata.
|
# `veredicto`: una heurística no cierra un juicio, lo abarata.
|
||||||
@@ -61,13 +65,15 @@ def escribir(cands):
|
|||||||
"# pone un HUMANO editando este fichero. Sincronizar NO pisa lo ya decidido: sólo agrega",
|
"# pone un HUMANO editando este fichero. Sincronizar NO pisa lo ya decidido: sólo agrega",
|
||||||
"# candidatos nuevos y marca `[ausente]` los que dejaron de aparecer.",
|
"# candidatos nuevos y marca `[ausente]` los que dejaron de aparecer.",
|
||||||
"#",
|
"#",
|
||||||
"# veredicto ∈ pendiente | hueco | opcional | nix-ismo",
|
"# veredicto ∈ pendiente | hueco | opcional | nix-ismo | provisto",
|
||||||
"# hueco — falta de verdad. Ponelo como raíz en docs/state/targets.toml ⇒ nace un nodo",
|
"# hueco — falta de verdad. Ponelo como raíz en docs/state/targets.toml ⇒ nace un nodo",
|
||||||
"# `wanted` en el grafo y entra al drenaje. (`triaje.py --aplicar` te da la línea.)",
|
"# `wanted` en el grafo y entra al drenaje. (`triaje.py --aplicar` te da la línea.)",
|
||||||
"# opcional — dep que nixpkgs habilita y nosotros no queremos. Queda registrada para que no",
|
"# opcional — dep que nixpkgs habilita y nosotros no queremos. Queda registrada para que no",
|
||||||
"# vuelva a preguntarse.",
|
"# vuelva a preguntarse.",
|
||||||
"# nix-ismo — andamiaje de nixpkgs sin contraparte acá. `--aplicar` lo manda al descarte del",
|
"# nix-ismo — andamiaje de nixpkgs sin contraparte acá. `--aplicar` lo manda al descarte del",
|
||||||
"# sembrador ⇒ la próxima corrida sale más limpia.",
|
"# sembrador ⇒ la próxima corrida sale más limpia.",
|
||||||
|
"# provisto — no falta: ya lo da otra receta con otro nombre. `provee = \"<receta>\"` dice cuál;",
|
||||||
|
"# `--aplicar` lo manda al sembrador como alias.",
|
||||||
"#",
|
"#",
|
||||||
"# `sugerencia` es una heurística con evidencia, NO un veredicto: abarata el juicio, no lo cierra.",
|
"# `sugerencia` es una heurística con evidencia, NO un veredicto: abarata el juicio, no lo cierra.",
|
||||||
'schema = "hammer-frontera-triaje/1"',
|
'schema = "hammer-frontera-triaje/1"',
|
||||||
@@ -79,6 +85,8 @@ def escribir(cands):
|
|||||||
lineas.append(f'veredicto = "{c.get("veredicto", "pendiente")}"')
|
lineas.append(f'veredicto = "{c.get("veredicto", "pendiente")}"')
|
||||||
if c.get("sugerencia"):
|
if c.get("sugerencia"):
|
||||||
lineas.append(f'sugerencia = "{c["sugerencia"]}"')
|
lineas.append(f'sugerencia = "{c["sugerencia"]}"')
|
||||||
|
if c.get("provee"):
|
||||||
|
lineas.append(f'provee = "{c["provee"]}"')
|
||||||
if c.get("porque"):
|
if c.get("porque"):
|
||||||
lineas.append(f'porque = "{c["porque"]}"')
|
lineas.append(f'porque = "{c["porque"]}"')
|
||||||
lineas.append(f'perfiles = {json.dumps(sorted(c.get("perfiles", [])))}')
|
lineas.append(f'perfiles = {json.dumps(sorted(c.get("perfiles", [])))}')
|
||||||
@@ -114,7 +122,8 @@ def sincronizar():
|
|||||||
nuevos += 1
|
nuevos += 1
|
||||||
cands[dep] = dict(
|
cands[dep] = dict(
|
||||||
veredicto=anterior.get("veredicto", "pendiente"), # NUNCA se pisa un juicio humano
|
veredicto=anterior.get("veredicto", "pendiente"), # NUNCA se pisa un juicio humano
|
||||||
sugerencia=sug, porque=porque,
|
provee=anterior.get("provee"), sugerencia=sug,
|
||||||
|
porque=anterior.get("porque") or porque,
|
||||||
perfiles=e["perfiles"], piden=e["piden"])
|
perfiles=e["perfiles"], piden=e["piden"])
|
||||||
# Los que ya no aparecen no se borran: se marcan. Un candidato que desaparece puede ser progreso
|
# Los que ya no aparecen no se borran: se marcan. Un candidato que desaparece puede ser progreso
|
||||||
# (se escribió la receta) o un cambio de nixpkgs, y conviene verlo en el `git diff`.
|
# (se escribió la receta) o un cambio de nixpkgs, y conviene verlo en el `git diff`.
|
||||||
@@ -165,6 +174,15 @@ def aplicar():
|
|||||||
+ "\n".join(nixismos) + ("\n" if nixismos else ""))
|
+ "\n".join(nixismos) + ("\n" if nixismos else ""))
|
||||||
print(f"== {len(nixismos)} nix-ismos → {DESCARTE.relative_to(ROOT)} (los lee seed-graph.py)")
|
print(f"== {len(nixismos)} nix-ismos → {DESCARTE.relative_to(ROOT)} (los lee seed-graph.py)")
|
||||||
|
|
||||||
|
alias = {d: c["provee"] for d, c in cands.items()
|
||||||
|
if c.get("veredicto") == "provisto" and c.get("provee")}
|
||||||
|
ALIAS.write_text(
|
||||||
|
"# alias-triaje.txt — DERIVADO de frontera-triaje.toml por scripts/triaje.py --aplicar.\n"
|
||||||
|
"# `<nombre-en-nixpkgs> <receta-de-hammer-que-lo-provee>`. Lo lee seed-graph.py como MAPA:\n"
|
||||||
|
"# nixpkgs parte en varios paquetes lo que acá es uno solo.\n"
|
||||||
|
+ "".join(f"{d} {r}\n" for d, r in sorted(alias.items())))
|
||||||
|
print(f"== {len(alias)} alias → {ALIAS.relative_to(ROOT)} (los lee seed-graph.py como MAPA)")
|
||||||
|
|
||||||
huecos = {d: c for d, c in cands.items() if c.get("veredicto") == "hueco"}
|
huecos = {d: c for d, c in cands.items() if c.get("veredicto") == "hueco"}
|
||||||
if not huecos:
|
if not huecos:
|
||||||
print("\n== 0 huecos confirmados: no hay raíces nuevas que agregar a targets.toml")
|
print("\n== 0 huecos confirmados: no hay raíces nuevas que agregar a targets.toml")
|
||||||
|
|||||||
Reference in New Issue
Block a user