From 9834f57052ba8a255af919a06f67d1e3ebbf9c2a Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 4 Sep 2026 14:27:34 +0000 Subject: [PATCH] =?UTF-8?q?yupana:=20`--help`=20imprim=C3=ADa=20literalmen?= =?UTF-8?q?te=20None?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Todo el encabezado del fichero era comentario `#`, así que __doc__ era None y `main()` hace `print(__doc__)` en dos caminos: `--help` y verbo desconocido. La puerta única de la metodología no sabía explicarse, y el error de verbo tampoco decía cuáles son los verbos válidos. La ayuda operativa pasa a docstring; el diseño y el porqué se quedan arriba como comentario. Cotejada contra el despacho real: los 11 verbos de la ayuda existen y los 11 que existen están en la ayuda (faltaba `sembrar`). --- scripts/yupana.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/scripts/yupana.py b/scripts/yupana.py index 6261cfba..5804477e 100755 --- a/scripts/yupana.py +++ b/scripts/yupana.py @@ -42,9 +42,31 @@ # triaje clasificar la frontera → triaje.py # drenar [--perfil] el orden de masticado, en ondas → drenar.py # -# Uso: scripts/yupana.py radio [--json] -# scripts/yupana.py estado [--kde] | drenar [--todos] | triaje | frontera | objetivo -# Como módulo: from yupana import cargar_colas, membresia, dependientes, resolver +# La ayuda operativa vive en el DOCSTRING de abajo y no en estos comentarios, por una razón medida: +# `main()` hace `print(__doc__)` para `--help` y para un verbo desconocido, y mientras todo el +# encabezado fue `#` eso imprimía literalmente `None`. La puerta única de la metodología no sabía +# explicarse, y el error de verbo desconocido tampoco decía cuáles son los verbos. El diseño y el +# porqué se quedan arriba como comentario; lo que un humano necesita para USARLO va en el docstring. +"""yupana — el ábaco del build: reckona sobre el khipu (docs/state/build-state.json). + +Verbos, en el orden del ciclo: + + radio [--json] ¿a QUIÉN rompo si toco esto? cruza TODAS las colas ← ANTES de cambiar nada + perfiles ¿qué imágenes dependen de esto? + duplicados [--json] el mismo paquete bajo dos nombres (por sha) + keystones [--json] nudos en deuda que gatean el máximo trabajo bloqueado + preflight ¿choca con un límite del entorno que el grafo no ve? + estado [--kde|--gnome|--cosmic|--wlr] regenera el grafo firme + objetivo qué debe tener cada imagen + frontera qué pide upstream y no tenemos + triaje clasificar la frontera + sembrar sembrar las recetas que la frontera reveló + drenar [--todos|--perfil

] el orden de masticado, en ondas + +Uso: scripts/yupana.py radio [--json] + scripts/yupana.py estado [--kde] | drenar [--todos] | triaje | frontera | objetivo +Como módulo: from yupana import cargar_colas, membresia, dependientes, resolver +""" import glob, json, os, re, subprocess, sys, tomllib from pathlib import Path