← Todos los benchmarks
May 2026

Django · NetBox

Internals de Django donde las respuestas seguras fallan. NetBox es un codebase Django real con signals cross-app, QuerySets con permisos por objeto, GenericRelations e índices de búsqueda con pesos. Este benchmark prueba si un agente puede seguir la implementación real — no solo recordar patrones de Django.

Ver en GitHub ↗
Stack
Django / Python · ~1,165 Python files, 9 apps
Versión de Tessra
v2.19.x
Fecha evaluado
May 2026
Rama / snapshot
rama main, snapshot de mayo 2026
Claude Haiku 4.5
12.375 / 25 (49.5%) 24.0 / 25 (96%) +11.625 pts (+46.5 pp)
Claude Sonnet 4.6
13.25 / 25 (53%) 23.125 / 25 (92.5%) +9.875 pts (+39.5 pp)
Tessra mejoró tanto modelos económicos como premium al anclar las respuestas en la implementación actual, no en suposiciones genéricas de Django o NetBox.
Caso Pregunta Sin Tessra Con Tessra Δ
01 ¿Qué signal receivers dispara Site.save()? ¿Qué modelos de otras apps se actualizan? Haiku 1.25 / 5 · Sonnet 1.25 / 5 Haiku 5.0 / 5 · Sonnet 3.125 / 5 Haiku +3.75 · Sonnet +1.875
03 ¿Cuáles son los padres directos de Device? ¿Cuántos mixins componen NetBoxFeatureSet? Haiku 4.0 / 5 · Sonnet 4.0 / 5 Haiku 5.0 / 5 · Sonnet 5.0 / 5 Haiku +1.0 · Sonnet +1.0
05 ¿Dónde se actualiza Interface._site cuando un Rack cambia de Site? Haiku 4.125 / 5 · Sonnet 4.0 / 5 Haiku 5.0 / 5 · Sonnet 5.0 / 5 Haiku +0.875 · Sonnet +1.0
07 ¿Cómo aplica Device.objects.restrict(user) los permisos por objeto? Haiku 0.625 / 5 · Sonnet 1.625 / 5 Haiku 5.0 / 5 · Sonnet 5.0 / 5 Haiku +4.375 · Sonnet +3.375
08 ¿Qué campos indexa DeviceIndex para búsqueda global y con qué pesos? Haiku 2.375 / 5 · Sonnet 2.375 / 5 Haiku 4.0 / 5 · Sonnet 5.0 / 5 Haiku +1.625 · Sonnet +2.625
restrict() usa subquery pk__in, no .distinct()
Ambos modelos respondieron con confianza la respuesta típica de Django: .filter(...).distinct(). El código real de NetBox hace algo más quirúrgico: construye una subquery pk__in separada para evitar duplicados sin aplicar DISTINCT a la query externa. Tessra expuso la implementación exacta y el comentario inline que explica el motivo.
Sin Tessra
Con Tessra
# What all models guessed without Tessra:
return self.filter(constraints_q).distinct()
# Actual code in utilities/querysets.py:64-68:
allowed_objects = self.model.objects.filter(attrs)
return self.filter(pk__in=allowed_objects)
# "#8715: Avoid duplicates when JOIN on M2M without DISTINCT"
.distinct() afecta toda la query externa. La subquery pk__in es quirúrgica y evita efectos secundarios en joins M2M.
Cascada cross-app que no se ve desde el modelo de origen
El Caso 01 pregunta qué se actualiza cuando Site.save() dispara signals. La respuesta no está en el modelo Site: está en un receiver que propaga cambios hacia Prefix, Cluster y WirelessLAN mediante bulk_update de campos cacheados. Sin Tessra, los modelos perdieron o confundieron la cascada. Con Tessra, identificaron el receiver, las apps afectadas y los campos actualizados.
Pesos de DeviceIndex: asset_tag tiene mayor prioridad que name
Sin Tessra, ambos modelos asumieron que name era el campo de mayor prioridad y devolvieron pesos incorrectos para serial y asset_tag. El código muestra que asset_tag=50 tiene mayor prioridad que name=100, porque los números menores rankean más alto.
Sin Tessra
Con Tessra
# What models assumed:
('name', 100),      # "name is always most important"
('serial', 500),    # invented
('asset_tag', 500)  # invented
# Actual code in dcim/search.py:55-62:
('asset_tag',       50),   # ← HIGHER priority (lower number)
('serial',          60),
('name',           100),
('virtual_chassis', 200),
('description',    500),
('comments',      5000),
Este benchmark mide navegación arquitectónica en NetBox. Los casos donde un modelo ya conocía la respuesta desde datos públicos de entrenamiento fueron excluidos del panel canónico. Los resultados pueden variar en otros proyectos Django con distinta arquitectura, convenciones y documentación. Los outputs de LLM no son determinísticos.
Pruébalo tú

Mira qué expone Tessra en tu repo.

Indexa un repo Angular, Django o Flutter y prueba el contexto local durante 7 días.