Publisher: TwinForce Title: Práctica propia — convertir un fallo de herramienta en una prueba de regresión Source type: retained first-party educational experiment Retrieved UTC: 2026-11-05T07:29:47.282128+00:00 Execution UTC: 2026-11-05T07:28:14.802421+00:00 Publication status: not_published Planned public URL (not yet available): https://twinforce.es/experimentos/2026-11-05/fallo-agente/ METODOLOGÍA Demo de arnés determinista con traza sintética. Los datos del catálogo y los libros son ficticios. La llamada de herramienta de trace.json se escribió como fixture; no se capturó un agente real ni un LLM. Se ejecutaron realmente dos parsers locales de Python 3.12.3 sobre las mismas cuatro entradas literales fijadas antes de ejecutar. La comparación exige coincidencia JSON exacta con expected, fijado antes de ejecutar. El parser before acepta content sin comprobar status. El cambio de fixed añade una guarda general que solo acepta status == "ok". No se cambió un modelo. El código conserva la rama preexistente de content ausente. Se fijaron antes de ejecutar el caso de regresión TIMEOUT, dos controles y un caso reservado SERVICE_UNAVAILABLE con status unavailable. El caso reservado fue conocido por el autor al diseñar la práctica: no es un holdout ciego. No se ajustó el código después de observar resultados. Se ejecutó una sola ronda, sin seleccionar entre alternativas. El control sin resultados sigue siendo respuesta válida; el control cuyo título contiene la palabra error evita confundir contenido con estado estructurado. Ninguna dependencia pesada instalada. Sin red, GPU, NeMo, API ni LLM en las dos ejecuciones medidas. Opus 5.5 solo autoró el ejemplo en una llamada distinta; no es el agente evaluado. RESULTADOS OBSERVADOS before returncode: 1 fixed returncode: 0 case_id | role | before | fixed reg-001-timeout-como-respuesta | regression | FAIL | PASS ctl-001-sin-resultados-es-valido | control | PASS | PASS ctl-002-titulo-con-palabra-error | control | PASS | PASS res-001-servicio-no-disponible | reserved | FAIL | PASS Los expected y observed íntegros están en case-table.json y case-table.csv. Los stdout y rc capturados están en logs/; ambos stderr están vacíos. Las entradas y el código conservaron los mismos hashes después de ambas ejecuciones. LÍMITES Cuatro casos solo verifican el comportamiento observado con esas entradas. No se estima una tasa de éxito, una mejora porcentual, robustez general, rendimiento de un LLM ni resultados de NVIDIA. No se ejecutó NVIDIA NeMo, Hermes, Harbor ni herramientas de evaluación de NVIDIA. Las ramas content ausente/None y status ausente no están cubiertas por los cuatro casos. No se cambió código productivo. No se ha efectuado QA editorial en esta rama. FUENTE METODOLÓGICA NVIDIA — Use NVIDIA NeMo to Turn Agent Failures into Tests and Harness Fixes https://developer.nvidia.com/blog/use-nvidia-nemo-to-turn-agent-failures-into-tests-and-harness-fixes/ Documento retenido de NVIDIA: work/2026-11-05/ingesta/primary/8db6db70c49ae8ff.txt NVIDIA retained text SHA256: 5b2c927d3897e1e668bd375ff05f32b936c80154559a0421c9c92af0c90180b4 El documento inspira el ciclo de diagnóstico, evaluación, cambio de arnés y reevaluación; los datos de la práctica son propios y no se atribuyen a NVIDIA. EVIDENCIAS PROPIAS inputs-frozen.json SHA256 fb4384ade27a9ca59ebe4df9000393419d282b25ae472f084217b0bcf08e369a protocolo.json SHA256 332cf010d97bdc2c16c01cf553c2f7d474cf6db03bf3ec77d6466e2598857405 result.json SHA256 525a47a0565f167b6712f33d0aa9b99f356c17f984b434446710c647c0360207 cases.json SHA256 ef2fd52724aa81b3c25d5a1df74f685beefa4f3816b65367c094c87bd24f6e13 before.py SHA256 478ad7d456fa746fbb2e5e9d773072c39f185c8e347a59ff2fcbb18ea71a49d2 fixed.py SHA256 b3c460c1d67b13794526c5be52a23c46e3a227ca3787ba8fb00bd7f9b16c355f test_harness.py SHA256 139dea30314c9abcb3c37676da23b048ac31d921a2d8b0fcd3898c88a2619c1d case-table.json SHA256 5699570646f231353256d444df87a6fa3407a53bfc591e795d4bf019bad62bfe trace-execution.json SHA256 d0cc3a5b1a4f66b8e114e862a3689d55344e7f5c2800787e45f45465202b180c logs/before-stdout.txt SHA256 1db98ce5c3c78aca5b46a386be930d9f7660c9f8a26c658e4b8927d9d2b18090 logs/fixed-stdout.txt SHA256 2bfa08dc64f515937185962888cbfc8b08006c461cf76a99dab7437bc23aba25 AUTHOR ROUTE Requested model: claude-opus-5-5 Reported model: claude-opus-5-5 Route: CLI OAuth, safe-mode, API environment overrides removed CLI declared cost USD: 0.3232778 Cost is not remaining balance or proof of any additional charge. Raw author receipt retained privately; no credentials in public package. Publisher signature: TwinForce — registro local de práctica educativa; sin publicación externa todavía.