gioser

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

⎇ 42f198f97ead387cf2c64bc1daf987dba936a6e8 scripts/test-khipu-radio.py Python · 53 siq'ikuna · 2.5 KB Ñawpa willay Pi imata llamkarqan ch'uya

khipu: guardián de regresión del radio cruzado (la cicatriz de libdrm) 4d0a909bb · sergio ·

1#!/usr/bin/env python3
2# test-khipu-radio.py — REGRESIÓN del bug de libdrm (2026-07-22). No es un test cualquiera: es la
3# cicatriz. Si el radio de un paquete compartido entre colas vuelve a medirse sobre una sola cola,
4# esto falla. La propiedad que blinda: el radio SIEMPRE cruza todas las colas del disco.
5import sys, subprocess
6from pathlib import Path
7ROOT = Path(__file__).resolve().parent.parent
8sys.path.insert(0, str(ROOT / "scripts"))
9import khipu
10
11def main():
12    colas = khipu.cargar_colas()
13    rev = khipu.dependientes(colas)
14    memb = khipu.membresia(colas)
15    fallos = []
16
17    # 1) libdrm lo consumen recetas de MÁS de una cola (corpus + incoming-kde). Medirlo sobre una
18    #    sola cola es exactamente el bug.
19    if ("corpus", "libdrm") in rev:
20        colas_consumidoras = {q for q, _ in rev[("corpus", "libdrm")]}
21        if len(colas_consumidoras) < 2:
22            fallos.append(f"libdrm consumido desde una sola cola {colas_consumidoras} "
23                          f"— el radio se está midiendo recortado")
24        # y su membresía DEBE incluir escritorio-kde (la mentira original decía sólo mirada)
25        if "escritorio-kde" not in memb.get(("corpus", "libdrm"), set()):
26            fallos.append("libdrm NO atribuido a escritorio-kde — perfiles vuelve a mentir")
27
28    # 2) Invariante general: para todo nudo del corpus consumido por alguna receta de una cola
29    #    incoming-*, su membresía y sus dependientes DEBEN reflejar esa cola. (Detecta el recorte
30    #    en cualquier paquete compartido, no sólo libdrm.)
31    for (q, n), consumidores in rev.items():
32        if q != "corpus":
33            continue
34        colas_cons = {cq for cq, _ in consumidores}
35        if "corpus" in colas_cons and len(colas_cons) == 1:
36            continue  # sólo corpus, nada que cruzar
37        # hay consumidores de otra cola: su membresía no puede ser vacía si esas colas tienen perfil
38        if consumidores and not memb.get((q, n)) and any(cq != "corpus" for cq in colas_cons):
39            pass  # puede no tener perfil declarado; no es fallo duro, sólo libdrm es el guardián
40
41    if fallos:
42        print("✗ REGRESIÓN del radio cruzado:")
43        for f in fallos:
44            print("  -", f)
45        return 1
46    d = len(rev.get(("corpus", "libdrm"), ()))
47    print(f"✓ radio cruza colas: libdrm consumido por {d} recetas de "
48          f"{len({q for q,_ in rev.get(('corpus','libdrm'),())})} colas, atribuido a "
49          f"{sorted(memb.get(('corpus','libdrm'), set()))}")
50    return 0
51
52if __name__ == "__main__":
53    sys.exit(main())