yupana: los 2 "bugs" de duplicados eran falsos positivos MÍOS — detector afinado, 0 reales
El usuario pidió arreglar itstool y la sombra de dbus. Apliqué el reflejo
(`yupana radio` + diff completo antes de tocar) y NINGUNO era un bug: ambos eran
patrones deliberados y documentados que mi detector, demasiado superficial, leyó
mal. Si los "arreglaba" a ciegas rompía dos builds.
· dbus: corpus/dbus (estático) e incoming-kde/dbus (dinámico) NO son redundantes
— qtbase linkea libdbus-1.so dinámicamente para Qt6DBus. El detector comparó
sólo versión+sha+deps, no el BUILD. Borrar la sombra rompía KDE.
· itstool: es un STUB documentado (`[source]=carrier`). El itstool real es
Python con libxml2-bindings ausentes en el lab; este genera un script inline y
sólo PRESTA el tarball de gettext-tiny. Apuntarlo al itstool real rompía
appstream (radio 5) con un source que ni compila acá.
Los 3 *-hello son el mismo patrón carrier; prison/prison-scanner una variante
cross-nombre (misma fuente, WITH_ZXING distinto).
FIX = el detector, no las recetas. Tres señales que le faltaban:
1. huella de BUILD en la firma de sombra (estático≠dinámico ⇒ no redundante).
2. CARRIER: ≤1 receta del grupo construye la fuente ⇒ el resto presta el tarball.
Señal: ¿invoca make/meson/cmake/ninja/cargo? (comentarios strippeados — la
prosa "invocación de meson" de un stub daba falso builder, lo cazó el guardián).
3. variante cross-nombre: ≥2 builders con BUILD distinto = deliberado, no bug.
Resultado: 0 colisiones reales (invariante c se cumple), 4 carrier + 14 variantes
+ 12 sombras justificadas, todas benignas.
Guardián extendido: ancla que el detector agrupa por FUENTE (itstool↔gettext-tiny)
y NO cría lobos (itstool=carrier, dbus=variante deliberada).
LECCIÓN: el reflejo del radio/diff antes de tocar evitó dos borrados destructivos
guiados por un falso positivo de mi propia herramienta. Medir antes de creer, aun
a la propia yupana.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+75
-61
@@ -1,53 +1,6 @@
|
||||
{
|
||||
"schema": "hammer-duplicados/1",
|
||||
"colisiones_fuente": [
|
||||
{
|
||||
"sha": "29cc165e27e83d2b",
|
||||
"nudos": [
|
||||
"corpus/gettext-tiny",
|
||||
"corpus/itstool"
|
||||
],
|
||||
"radio": {
|
||||
"corpus/gettext-tiny": 78,
|
||||
"corpus/itstool": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"sha": "5eacc5550f0bdbba",
|
||||
"nudos": [
|
||||
"corpus/adwaita-hello",
|
||||
"corpus/libadwaita"
|
||||
],
|
||||
"radio": {
|
||||
"corpus/adwaita-hello": 0,
|
||||
"corpus/libadwaita": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"sha": "760903e9ae401f8b",
|
||||
"nudos": [
|
||||
"incoming-kde/prison",
|
||||
"incoming-kde/prison-scanner"
|
||||
],
|
||||
"radio": {
|
||||
"incoming-kde/prison-scanner": 1,
|
||||
"incoming-kde/prison": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"sha": "ab35d420102f3e8b",
|
||||
"nudos": [
|
||||
"corpus/gtksourceview",
|
||||
"corpus/hammer-edit",
|
||||
"corpus/sourceview-hello"
|
||||
],
|
||||
"radio": {
|
||||
"corpus/gtksourceview": 2,
|
||||
"corpus/hammer-edit": 0,
|
||||
"corpus/sourceview-hello": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"schema": "hammer-duplicados/2",
|
||||
"colisiones_fuente": [],
|
||||
"variantes": [
|
||||
{
|
||||
"sha": "ab5a03176ee106d3",
|
||||
@@ -93,17 +46,6 @@
|
||||
"incoming-kde/glib-shared": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"sha": "e1817c650ddc3261",
|
||||
"nudos": [
|
||||
"corpus/gtk4",
|
||||
"corpus/gtk4-hello"
|
||||
],
|
||||
"radio": {
|
||||
"corpus/gtk4-hello": 0,
|
||||
"corpus/gtk4": 6
|
||||
}
|
||||
},
|
||||
{
|
||||
"sha": "075920b826834ac4",
|
||||
"nudos": [
|
||||
@@ -196,6 +138,17 @@
|
||||
"incoming-kde/zlib-shared": 34
|
||||
}
|
||||
},
|
||||
{
|
||||
"sha": "760903e9ae401f8b",
|
||||
"nudos": [
|
||||
"incoming-kde/prison",
|
||||
"incoming-kde/prison-scanner"
|
||||
],
|
||||
"radio": {
|
||||
"incoming-kde/prison-scanner": 1,
|
||||
"incoming-kde/prison": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"sha": "809afafab61593f9",
|
||||
"nudos": [
|
||||
@@ -208,6 +161,67 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"carriers": [
|
||||
{
|
||||
"sha": "5eacc5550f0bdbba",
|
||||
"nudos": [
|
||||
"corpus/adwaita-hello",
|
||||
"corpus/libadwaita"
|
||||
],
|
||||
"radio": {
|
||||
"corpus/adwaita-hello": 0,
|
||||
"corpus/libadwaita": 3
|
||||
},
|
||||
"carriers": [
|
||||
"corpus/adwaita-hello"
|
||||
]
|
||||
},
|
||||
{
|
||||
"sha": "29cc165e27e83d2b",
|
||||
"nudos": [
|
||||
"corpus/gettext-tiny",
|
||||
"corpus/itstool"
|
||||
],
|
||||
"radio": {
|
||||
"corpus/gettext-tiny": 78,
|
||||
"corpus/itstool": 1
|
||||
},
|
||||
"carriers": [
|
||||
"corpus/itstool"
|
||||
]
|
||||
},
|
||||
{
|
||||
"sha": "e1817c650ddc3261",
|
||||
"nudos": [
|
||||
"corpus/gtk4",
|
||||
"corpus/gtk4-hello"
|
||||
],
|
||||
"radio": {
|
||||
"corpus/gtk4-hello": 0,
|
||||
"corpus/gtk4": 6
|
||||
},
|
||||
"carriers": [
|
||||
"corpus/gtk4-hello"
|
||||
]
|
||||
},
|
||||
{
|
||||
"sha": "ab35d420102f3e8b",
|
||||
"nudos": [
|
||||
"corpus/gtksourceview",
|
||||
"corpus/hammer-edit",
|
||||
"corpus/sourceview-hello"
|
||||
],
|
||||
"radio": {
|
||||
"corpus/gtksourceview": 2,
|
||||
"corpus/hammer-edit": 0,
|
||||
"corpus/sourceview-hello": 0
|
||||
},
|
||||
"carriers": [
|
||||
"corpus/hammer-edit",
|
||||
"corpus/sourceview-hello"
|
||||
]
|
||||
}
|
||||
],
|
||||
"sombras": [
|
||||
{
|
||||
"nombre": "dbus",
|
||||
@@ -215,7 +229,7 @@
|
||||
"corpus",
|
||||
"incoming-kde"
|
||||
],
|
||||
"redundante": true,
|
||||
"redundante": false,
|
||||
"radio": {
|
||||
"corpus/dbus": 0,
|
||||
"incoming-kde/dbus": 114
|
||||
|
||||
Reference in New Issue
Block a user