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>
202 lines
3.2 KiB
JSON
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"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|