Files
hammer/docs/state/drenaje.json
T
sergioandClaude Opus 4.8 b08e582c89 catálogo objetivo P4: la cola de la granja pasa a ser derivada del grafo
drenar.py parte la deuda en ONDAS topológicas (una receta sólo espera por deps
que también estén en deuda; las selladas ya están en el store). Onda 1 =
construible ya; dentro de cada onda, orden por `unblocks` desc.

Da lo que una lista plana no da: el orden correcto, la PROFUNDIDAD real de la
cadena (pasos secuenciales = el reloj de pared) y qué paraleliza sin pisarse.

   base                0 en deuda   imagen completa
   cli                 0 en deuda   imagen completa
   escritorio-kde     77 en deuda   12 ondas   onda 1 = 1 receta: qtbase
   escritorio-mirada   4 en deuda    2 ondas   onda 1 = 3

HALLAZGO: el escritorio KDE está serializado detrás de UNA receta. qtbase
destraba 117 nodos y es lo único de la onda 1 — hasta que no esté sellada no hay
nada que paralelizar, por más workers que se enciendan. Cambia la pregunta de
"¿cuántas faltan?" (77, poco informativo) a "¿cuál es el camino crítico?".

Dos correcciones salidas de mirar la salida:
· el grafo se elige por la `cola` declarada en targets.toml, NO por cuál tiene
  más nodos: incoming-kde SOMBREA recetas canónicas, así que medir
  escritorio-mirada contra el grafo KDE medía una imagen que nadie construye
  (3 en deuda en vez de 4). El mismo atajo estaba en seed-graph.py --frontera;
  corregido en los dos.
· regla de la fuente única implementada en deps_de(): manda la receta si existe,
  la semilla sólo si el nodo es `wanted`, marcando procedencia en la salida.

Enchufado al latido: cosecha-cron regenera docs/state/drenaje.json junto al
grafo y lo commitea ⇒ cola derivada y versionada, el git diff entre ciclos
muestra qué salió de la deuda. NO lanza builds: eso cuesta € y sigue siendo
decisión explícita (farm-up + campana-deuda.sh).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 18:14:37 -04:00

202 lines
3.2 KiB
JSON

{
"schema": "hammer-drenaje/1",
"nota": "DERIVADO del grafo de estado por scripts/drenar.py — no editar a mano.",
"perfiles": {
"base": {
"grafo": "docs/state/build-state.json",
"nodos": 51,
"en_deuda": 0,
"ondas": 0,
"profundidad": 0,
"construibles_ya": [],
"olas": []
},
"cli": {
"grafo": "docs/state/build-state.json",
"nodos": 74,
"en_deuda": 0,
"ondas": 0,
"profundidad": 0,
"construibles_ya": [],
"olas": []
},
"escritorio-kde": {
"grafo": "docs/state/build-state-kde.json",
"nodos": 162,
"en_deuda": 77,
"ondas": 12,
"profundidad": 12,
"construibles_ya": [
"qtbase"
],
"olas": [
{
"n": 1,
"recetas": [
"qtbase"
]
},
{
"n": 2,
"recetas": [
"qttools",
"qtsvg",
"qtshadertools",
"qtlanguageserver",
"qcoro"
]
},
{
"n": 3,
"recetas": [
"qtdeclarative",
"kcodecs",
"karchive",
"kitemviews",
"kglobalaccel",
"kdbusaddons",
"attica",
"kdnssd",
"kplotting"
]
},
{
"n": 4,
"recetas": [
"kcoreaddons",
"kconfig",
"ki18n",
"kwidgetsaddons",
"kguiaddons",
"kwindowsystem",
"solid",
"sonnet",
"kirigami",
"kitemmodels",
"qtwayland",
"qt5compat",
"qtmultimedia",
"kholidays",
"qtpositioning",
"syntax-highlighting",
"prison"
]
},
{
"n": 5,
"recetas": [
"kcolorscheme",
"kcompletion",
"kcrash",
"kservice",
"kbookmarks",
"knotifications",
"kpackage",
"kauth",
"plasma-activities",
"kstatusnotifieritem",
"kwayland",
"kidletime",
"krunner",
"layer-shell-qt",
"kdecoration",
"qtspeech",
"knighttime",
"qtlocation"
]
},
{
"n": 6,
"recetas": [
"kconfigwidgets",
"kiconthemes",
"kjobwidgets",
"kdeclarative",
"kwallet",
"ktextwidgets",
"knewstuff",
"kfilemetadata",
"libkscreen",
"plasma-activities-stats",
"kded"
]
},
{
"n": 7,
"recetas": [
"kxmlgui",
"ksvg"
]
},
{
"n": 8,
"recetas": [
"kio"
]
},
{
"n": 9,
"recetas": [
"kparts",
"kcmutils",
"libplasma",
"kglobalacceld",
"libksysguard"
]
},
{
"n": 10,
"recetas": [
"frameworkintegration",
"ktexteditor",
"kscreenlocker",
"kwin"
]
},
{
"n": 11,
"recetas": [
"plasma-workspace",
"qqc2-desktop-style",
"breeze"
]
},
{
"n": 12,
"recetas": [
"plasma-integration"
]
}
]
},
"escritorio-mirada": {
"grafo": "docs/state/build-state.json",
"nodos": 31,
"en_deuda": 4,
"ondas": 2,
"profundidad": 2,
"construibles_ya": [
"libinput",
"mesa-swrast",
"mirada-greeter"
],
"olas": [
{
"n": 1,
"recetas": [
"libinput",
"mesa-swrast",
"mirada-greeter"
]
},
{
"n": 2,
"recetas": [
"mirada-compositor"
]
}
]
}
}
}