@zhivex-ai/harness 1.0.0 → 1.1.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/CHANGELOG.md +109 -1
  2. package/README.md +52 -306
  3. package/SECURITY.md +1 -1
  4. package/SUPPORT.md +7 -3
  5. package/benchmarks/README.md +3 -3
  6. package/contracts/client-protocol-v1.schema.json +341 -0
  7. package/contracts/public-api.json +100 -1
  8. package/contracts/stable-api-signatures.json +14 -14
  9. package/dist/approvals/approval-diff.d.ts +45 -0
  10. package/dist/approvals/approval-history.d.ts +38 -0
  11. package/dist/approvals/approval-preview.d.ts +26 -0
  12. package/dist/cli/arguments.d.ts +103 -0
  13. package/dist/cli/changes.d.ts +2 -0
  14. package/dist/cli/cli-credentials.d.ts +38 -0
  15. package/dist/cli/cli-help.d.ts +3 -0
  16. package/dist/{cli-options.d.ts → cli/cli-options.d.ts} +1 -1
  17. package/dist/{cli-profiles.d.ts → cli/cli-profiles.d.ts} +1 -1
  18. package/dist/cli/configured-harness.d.ts +12 -0
  19. package/dist/cli/console/console-commands.d.ts +6 -0
  20. package/dist/{console-context.d.ts → cli/console/console-context.d.ts} +7 -3
  21. package/dist/cli/console/console-input.d.ts +68 -0
  22. package/dist/cli/console/console-model-catalog.d.ts +25 -0
  23. package/dist/cli/console/console-navigation.d.ts +27 -0
  24. package/dist/cli/console/console-presentation.d.ts +18 -0
  25. package/dist/cli/console/console-welcome.d.ts +13 -0
  26. package/dist/cli/console.d.ts +2 -0
  27. package/dist/cli/doctor.d.ts +50 -0
  28. package/dist/cli/errors.d.ts +7 -0
  29. package/dist/cli/help-text.d.ts +2 -0
  30. package/dist/cli/presentation.d.ts +23 -0
  31. package/dist/cli/resume-metadata.d.ts +12 -0
  32. package/dist/cli/routing.d.ts +6 -0
  33. package/dist/cli/run-commands.d.ts +4 -0
  34. package/dist/cli/run-document.d.ts +91 -0
  35. package/dist/cli/run-management.d.ts +2 -0
  36. package/dist/cli/service-client-cli.d.ts +2 -0
  37. package/dist/cli/session-management.d.ts +8 -0
  38. package/dist/cli/setup.d.ts +16 -0
  39. package/dist/cli/state.d.ts +2 -0
  40. package/dist/cli/terminal/terminal-continuation.d.ts +3 -0
  41. package/dist/{terminal-markdown.d.ts → cli/terminal/terminal-markdown.d.ts} +1 -0
  42. package/dist/{terminal-ui.d.ts → cli/terminal/terminal-ui.d.ts} +7 -0
  43. package/dist/cli/terminal/tool-activity.d.ts +19 -0
  44. package/dist/cli.d.ts +33 -238
  45. package/dist/cli.js +16049 -12066
  46. package/dist/client/adapter.d.ts +4 -0
  47. package/dist/client/index.d.ts +15 -0
  48. package/dist/client/local-service.d.ts +34 -0
  49. package/dist/client/protocol.d.ts +205 -0
  50. package/dist/client/service-events.d.ts +50 -0
  51. package/dist/{context-engineering.d.ts → context/context-engineering.d.ts} +2 -2
  52. package/dist/{execution-environment.d.ts → execution/execution-environment.d.ts} +8 -4
  53. package/dist/hostile-repository-demo.js +2025 -897
  54. package/dist/index.d.ts +48 -41
  55. package/dist/index.js +7541 -5906
  56. package/dist/internal/desktop/persistence.d.ts +14 -0
  57. package/dist/internal/desktop/protocol.d.ts +8 -0
  58. package/dist/internal/desktop/providers.d.ts +6 -0
  59. package/dist/internal/desktop/runtime.d.ts +7 -0
  60. package/dist/{operations.d.ts → persistence/operations.d.ts} +24 -2
  61. package/dist/persistence/persistence-secrets.d.ts +2 -0
  62. package/dist/persistence/recorded-workspace.d.ts +4 -0
  63. package/dist/{sessions.d.ts → persistence/sessions.d.ts} +3 -0
  64. package/dist/persistence/sqlite-access.d.ts +26 -0
  65. package/dist/{sqlite-database.d.ts → persistence/sqlite-database.d.ts} +2 -0
  66. package/dist/{state-backup.d.ts → persistence/state-backup.d.ts} +9 -1
  67. package/dist/{capabilities.d.ts → providers/capabilities.d.ts} +1 -1
  68. package/dist/{routing.d.ts → providers/routing.d.ts} +1 -1
  69. package/dist/{config.d.ts → runtime/config.d.ts} +1 -1
  70. package/dist/{harness.d.ts → runtime/harness.d.ts} +12 -135
  71. package/dist/{orchestration.d.ts → runtime/orchestration.d.ts} +3 -0
  72. package/dist/{runtime-policy.d.ts → runtime/runtime-policy.d.ts} +1 -1
  73. package/dist/runtime/usage-ledger.d.ts +84 -0
  74. package/dist/service-cli.d.ts +2 -0
  75. package/dist/service-cli.js +10899 -0
  76. package/dist/tools/execution.d.ts +47 -0
  77. package/dist/tools/shared.d.ts +67 -0
  78. package/dist/tools/workspace.d.ts +85 -0
  79. package/dist/verify-historical-migrations.js +5786 -5265
  80. package/dist/{workspace.d.ts → workspace/workspace.d.ts} +22 -0
  81. package/dist/zhx.js +16049 -12066
  82. package/docs/CLI.md +151 -30
  83. package/docs/CLIENT_PROTOCOL.md +212 -0
  84. package/docs/CREDENTIALS.md +59 -0
  85. package/docs/DURABLE_OPERATIONS.md +2 -2
  86. package/docs/FIRST_USE.md +82 -0
  87. package/docs/FIRST_USE_EXAMPLE.md +40 -0
  88. package/docs/HOSTILE_REPOSITORY_DEMO.md +1 -1
  89. package/docs/LOCAL_SERVICE.md +142 -0
  90. package/docs/README.md +24 -23
  91. package/docs/THREAT_MODEL.md +1 -1
  92. package/docs/TIME_TO_SAFE_FIX.md +2 -2
  93. package/docs/USAGE.md +181 -0
  94. package/evaluations/daily-cli-cohort.json +33 -0
  95. package/evaluations/representative-assembly-matrix.json +28 -1
  96. package/examples/README.md +26 -0
  97. package/examples/first-use/greeting.test.ts +3 -0
  98. package/examples/first-use/greeting.ts +1 -0
  99. package/examples/first-use/package.json +7 -0
  100. package/package.json +39 -11
  101. package/ROADMAP.md +0 -414
  102. package/benchmarks/baselines/context-navigation-2026-09-09.json +0 -94
  103. package/benchmarks/baselines/efficiency-2026-09-08.json +0 -233
  104. package/benchmarks/baselines/external-final-2026-09-08.json +0 -588
  105. package/benchmarks/baselines/external-intermediate-2026-09-08.json +0 -116
  106. package/benchmarks/baselines/external-matched-openai-2026-09-08.json +0 -1922
  107. package/benchmarks/baselines/external-matched-qwen-2026-09-08.json +0 -1706
  108. package/benchmarks/baselines/external-pilot-2026-09-08.json +0 -439
  109. package/benchmarks/baselines/external-qwen-flash-2026-09-08.json +0 -1570
  110. package/benchmarks/baselines/external-qwen-remediation-2026-09-09.json +0 -1509
  111. package/benchmarks/baselines/external-qwen-sdk-114-progress-2026-09-09.json +0 -2509
  112. package/benchmarks/baselines/external-sdk-upgrade-2026-09-08.json +0 -564
  113. package/benchmarks/baselines/external-verifier-recovery-2026-09-09.json +0 -794
  114. package/benchmarks/baselines/full-harness-review-2026-09-10.json +0 -134
  115. package/benchmarks/baselines/harness-audit-2026-09-09.json +0 -136
  116. package/benchmarks/baselines/harness-remediation-2026-09-09.json +0 -160
  117. package/benchmarks/baselines/oci-remediation-2026-09-10.json +0 -535
  118. package/benchmarks/baselines/rc14-holdout-2026-09-10.json +0 -854
  119. package/benchmarks/baselines/repair-architecture-audit-2026-09-09.json +0 -75
  120. package/benchmarks/baselines/time-to-safe-fix-live-expanded-2026-08-21.json +0 -186
  121. package/benchmarks/baselines/time-to-safe-fix-live-smoke-2026-08-21.json +0 -186
  122. package/dist/console-input.d.ts +0 -28
  123. package/docs/GA_READINESS.md +0 -29
  124. package/docs/GEMINI_1_0_DECISION.md +0 -9
  125. package/docs/LIVE_CERTIFICATION.md +0 -107
  126. package/docs/RC13_SECURITY_REVIEW.md +0 -28
  127. package/docs/RC14_DELEGATED_SECURITY_DECISION.md +0 -80
  128. package/docs/RC14_SECURITY_REVIEW.md +0 -40
  129. package/docs/RELEASE.md +0 -96
  130. package/docs/ROLLBACK.md +0 -9
  131. package/docs/SECURITY_REVIEW_EVIDENCE.md +0 -17
  132. package/docs/ga-readiness.json +0 -366
  133. package/docs/reports/EFFICIENCY_REVIEW.md +0 -156
  134. package/docs/reports/EXTERNAL_COMPARISON.md +0 -434
  135. package/docs/reports/FULL_HARNESS_REVIEW_2026-09-10.md +0 -200
  136. package/docs/reports/GA_BUDGET_REMEDIATION_2026-09-19.md +0 -38
  137. package/docs/reports/GA_REPAIR_RECOVERY_2026-09-19.md +0 -700
  138. package/docs/reports/GA_VALIDATION_2026-09-19.md +0 -111
  139. package/docs/reports/HARNESS_ARCHITECTURE_REVIEW_2026-09-09.md +0 -202
  140. package/docs/reports/HARNESS_AUDIT_2026-09-09.md +0 -306
  141. package/docs/reports/HARNESS_REMEDIATION_2026-09-09.md +0 -74
  142. package/docs/reports/HARNESS_REMEDIATION_2026-09-10.md +0 -90
  143. package/docs/reports/MODEL_COMPARISON_2026-09-09.md +0 -184
  144. package/docs/reports/QWEN_REMEDIATION_COMPARISON_2026-09-09.md +0 -142
  145. package/docs/reports/RC14_VALIDATION_2026-09-10.md +0 -45
  146. package/docs/reports/README.md +0 -26
  147. package/docs/reports/evidence/ga-budget-remediation-2026-09-19.json +0 -133
  148. package/docs/reports/evidence/ga-catalog-ablation-2026-09-19.json +0 -699
  149. package/docs/reports/evidence/ga-catalog-ablation-plan-2026-09-19.json +0 -40
  150. package/docs/reports/evidence/ga-catalog-observed-2026-09-19.json +0 -985
  151. package/docs/reports/evidence/ga-catalog-observed-plan-2026-09-19.json +0 -28
  152. package/docs/reports/evidence/ga-catalog-observed-status-2026-09-19.json +0 -15
  153. package/docs/reports/evidence/ga-complete-local-check-2026-09-19.json +0 -47
  154. package/docs/reports/evidence/ga-completion-reminder-2026-09-19.json +0 -22
  155. package/docs/reports/evidence/ga-fresh-cohort-plan-2026-09-19.json +0 -54
  156. package/docs/reports/evidence/ga-fresh-cohort-preparation-2026-09-19.json +0 -242
  157. package/docs/reports/evidence/ga-fresh-cohort-result-2026-09-19.json +0 -4318
  158. package/docs/reports/evidence/ga-local-validation-followup-2026-09-19.json +0 -66
  159. package/docs/reports/evidence/ga-node-consumers-2026-09-19.json +0 -31
  160. package/docs/reports/evidence/ga-package-content-validation-2026-09-19.json +0 -22
  161. package/docs/reports/evidence/ga-plan-completion-2026-09-19.json +0 -39
  162. package/docs/reports/evidence/ga-plan-reserve-2026-09-19.json +0 -573
  163. package/docs/reports/evidence/ga-plan-reserve-plan-2026-09-19.json +0 -24
  164. package/docs/reports/evidence/ga-plan-transition-2026-09-19.json +0 -19
  165. package/docs/reports/evidence/ga-private-verifier-plan-2026-09-19.json +0 -24
  166. package/docs/reports/evidence/ga-private-verifier-root-cause-2026-09-19.json +0 -41
  167. package/docs/reports/evidence/ga-published-sdk-2026-09-19.json +0 -35
  168. package/docs/reports/evidence/ga-python-checkout-imports-2026-09-19.json +0 -95
  169. package/docs/reports/evidence/ga-python-origin-delivery-2026-09-19.json +0 -211
  170. package/docs/reports/evidence/ga-python-origin-delivery-plan-2026-09-19.json +0 -27
  171. package/docs/reports/evidence/ga-qwen-patched-package-2026-09-19.json +0 -1092
  172. package/docs/reports/evidence/ga-qwen-patched-package-plan-2026-09-19.json +0 -18
  173. package/docs/reports/evidence/ga-qwen-published-2026-09-19.json +0 -571
  174. package/docs/reports/evidence/ga-qwen-published-plan-2026-09-19.json +0 -18
  175. package/docs/reports/evidence/ga-qwen-tool-choice-2026-09-19.json +0 -85
  176. package/docs/reports/evidence/ga-qwen-tool-choice-patched-2026-09-19.json +0 -85
  177. package/docs/reports/evidence/ga-recovery-development-2026-09-19.json +0 -1066
  178. package/docs/reports/evidence/ga-recovery-graded-development-2026-09-19.json +0 -1313
  179. package/docs/reports/evidence/ga-recovery-graded-v2-2026-09-19.json +0 -1151
  180. package/docs/reports/evidence/ga-recovery-v3-2026-09-19.json +0 -3943
  181. package/docs/reports/evidence/ga-recovery-v4-2026-09-19.json +0 -1055
  182. package/docs/reports/evidence/ga-recovery-v5-2026-09-19.json +0 -1245
  183. package/docs/reports/evidence/ga-recovery-v6-2026-09-19.json +0 -699
  184. package/docs/reports/evidence/ga-recovery-v7-2026-09-19.json +0 -854
  185. package/docs/reports/evidence/ga-recovery-v8-2026-09-19.json +0 -596
  186. package/docs/reports/evidence/ga-required-delivery-2026-09-19.json +0 -25
  187. package/docs/reports/evidence/ga-required-delivery-live-2026-09-19.json +0 -1337
  188. package/docs/reports/evidence/ga-required-delivery-live-plan-2026-09-19.json +0 -25
  189. package/docs/reports/evidence/ga-retained-candidate-grading-2026-09-19.json +0 -30
  190. package/docs/reports/evidence/ga-tool-selection-live-2026-09-19.json +0 -559
  191. package/docs/reports/evidence/ga-tool-selection-live-plan-2026-09-19.json +0 -28
  192. package/docs/reports/evidence/ga-tool-selection-recovery-2026-09-19.json +0 -27
  193. package/docs/reports/evidence/ga-validation-2026-09-19.json +0 -236
  194. package/docs/reports/evidence/ga-verifier-discovery-live-2026-09-19.json +0 -1369
  195. package/docs/reports/evidence/ga-verifier-discovery-plan-2026-09-19.json +0 -29
  196. package/docs/reports/evidence/ga-verifier-failure-identification-2026-09-19.json +0 -30
  197. package/docs/reports/evidence/ga-verifier-feedback-2026-09-19.json +0 -65
  198. package/docs/reports/evidence/ga-verifier-hints-live-2026-09-19.json +0 -1297
  199. package/docs/reports/evidence/ga-verifier-hints-plan-2026-09-19.json +0 -27
  200. package/docs/reports/evidence/ga-work-boundary-context-analysis-2026-09-19.json +0 -113
  201. package/docs/reports/evidence/ga-work-boundary-live-2026-09-19.json +0 -301
  202. package/docs/reports/evidence/ga-work-boundary-live-plan-2026-09-19.json +0 -84
  203. package/docs/reports/evidence/ga-work-budget-planning-2026-09-19.json +0 -32
  204. package/docs/reports/evidence/ga-working-context-2026-09-19.json +0 -22
  205. package/docs/reports/evidence/rc14-delegated-security-review-2026-09-20.json +0 -81
  206. package/docs/reports/evidence/rc14-ga-gate-2026-09-20.json +0 -18
  207. package/docs/reports/evidence/rc14-representative-2026-09-20.json +0 -509
  208. package/docs/reports/evidence/rc14-security-regressions-2026-09-20.json +0 -64
  209. package/docs/reports/evidence/security-current-2026-09-19.json +0 -91
  210. package/docs/reports/evidence/security-remediation-2026-09-19.json +0 -97
  211. /package/dist/{cli-stream.d.ts → cli/cli-stream.d.ts} +0 -0
  212. /package/dist/{json-contracts.d.ts → client/json-contracts.d.ts} +0 -0
  213. /package/dist/{compaction.d.ts → context/compaction.d.ts} +0 -0
  214. /package/dist/{context-metrics.d.ts → context/context-metrics.d.ts} +0 -0
  215. /package/dist/{task-memory.d.ts → context/task-memory.d.ts} +0 -0
  216. /package/dist/{package-manager.d.ts → execution/package-manager.d.ts} +0 -0
  217. /package/dist/{process-runtime.d.ts → execution/process-runtime.d.ts} +0 -0
  218. /package/dist/{mcp.d.ts → integrations/mcp.d.ts} +0 -0
  219. /package/dist/{state-directory.d.ts → persistence/state-directory.d.ts} +0 -0
  220. /package/dist/{providers.d.ts → providers/providers.d.ts} +0 -0
  221. /package/dist/{errors.d.ts → runtime/errors.d.ts} +0 -0
  222. /package/dist/{model-budget.d.ts → runtime/model-budget.d.ts} +0 -0
  223. /package/dist/{repair-controller.d.ts → runtime/repair-controller.d.ts} +0 -0
  224. /package/dist/{repair-progress.d.ts → runtime/repair-progress.d.ts} +0 -0
  225. /package/dist/{repair-verifier.d.ts → runtime/repair-verifier.d.ts} +0 -0
  226. /package/dist/{run-interruption.d.ts → runtime/run-interruption.d.ts} +0 -0
  227. /package/dist/{runtime-checkpoints.d.ts → runtime/runtime-checkpoints.d.ts} +0 -0
  228. /package/dist/{runtime-diagnostics.d.ts → runtime/runtime-diagnostics.d.ts} +0 -0
  229. /package/dist/{time-to-safe-fix.d.ts → runtime/time-to-safe-fix.d.ts} +0 -0
  230. /package/dist/{tool-registry.d.ts → tools/tool-registry.d.ts} +0 -0
  231. /package/dist/{bounded-reads.d.ts → workspace/bounded-reads.d.ts} +0 -0
  232. /package/dist/{change-envelope.d.ts → workspace/change-envelope.d.ts} +0 -0
  233. /package/dist/{edit-contracts.d.ts → workspace/edit-contracts.d.ts} +0 -0
  234. /package/dist/{file-security.d.ts → workspace/file-security.d.ts} +0 -0
  235. /package/dist/{replacement-edits.d.ts → workspace/replacement-edits.d.ts} +0 -0
  236. /package/dist/{workspace-mutation-lock.d.ts → workspace/workspace-mutation-lock.d.ts} +0 -0
@@ -1,111 +0,0 @@
1
- # Validación externa automatizada de GA — 19 de septiembre de 2026
2
-
3
- **Veredicto: NO-GO para RC.14 / promoción a 1.0.0.** Se reproduce un bloqueo
4
- funcional de los flujos de varios turnos de Meta y OpenAI con el presupuesto
5
- predeterminado. La suite existente pasa, pero no detecta esta combinación.
6
-
7
- Evaluador: Codex, actuando como validador externo automatizado por pedido del
8
- operador. Este informe no es una firma humana, una auditoría integral de seguridad
9
- ni evidencia de publicación. No se modificaron el runtime ni los criterios de GA.
10
-
11
- ## Identidad y reproducibilidad
12
-
13
- - Commit: `28723ff3350b7572d5bd68f2d40b6feef1e0e6b4`.
14
- - Versión: `1.0.0-rc.14`; Bun 1.4.0, Node 22.21.0, macOS arm64.
15
- - Se exportó el commit con `git archive` y se instaló su lockfile con
16
- `bun install --frozen-lockfile --ignore-scripts` en una carpeta temporal aislada.
17
- - El checkout original tenía dependencias desactualizadas y después recibió
18
- cambios concurrentes en `package.json`, `bun.lock` y `node_modules`. Los
19
- resultados definitivos proceden de la copia aislada; no certifican esos cambios.
20
- - [Evidencia estructurada](evidence/ga-validation-2026-09-19.json): resultados,
21
- hash del tarball local, versiones, CI y diagnósticos sin contenido de proveedores.
22
- - El tarball local pasó inspección de contenido e instalación independiente de
23
- esos mismos bytes. No tiene identidad de release protegida ni provenance npm.
24
-
25
- ## Resultados ejecutados
26
-
27
- | Frontera | Resultado |
28
- | --- | --- |
29
- | `ZHIVEX_HARNESS_OCI_REQUIRED=1 bun run check` | PASS, salida 0 en copia aislada |
30
- | Suite existente | 512/512 tests, 59 archivos |
31
- | Docs, contratos de preparación, tipos de fuente y tooling | PASS |
32
- | Migraciones históricas 0.10.0 / 0.11.1 | PASS |
33
- | Evaluaciones determinísticas | 7/7 |
34
- | Benchmarks de workspace y safe-fix scripted | PASS; no acreditan capacidad de modelos |
35
- | MCP e interoperabilidad con SDK oficial | PASS |
36
- | OCI real | PASS, Docker 29.8.0, secretos excluidos, red denegada e importación gobernada |
37
- | Paquete instalado y tarball exacto | PASS |
38
- | Auditoría de dependencias | BLOQUEADA: servicio de advisories npm HTTP 503, dos intentos |
39
- | Scripts de dependencias no confiables | 0 |
40
- | Gate formal `readiness:1.0:release` | FAIL: RC.14 incompleta, revisión pendiente, fase y versión sin promover |
41
-
42
- La imagen OCI usada fue
43
- `node:24-bookworm-slim@sha256:0e0ff40c39bc087845bfb27465a0df4ea419520094bc35842ff83dd8cbe6f9b6`.
44
-
45
- | Prueba live de fuente aislada | Meta muse-spark-1.2 | Qwen qwen3.8-max | OpenAI gpt-5.6-luna |
46
- | --- | --- | --- | --- |
47
- | Aprobación, persistencia y reinicio | FAIL | PASS | FAIL |
48
- | Orquestación, hijo persistido y reapertura | PASS | PASS | PASS |
49
- | Ejecución OCI e importación al host | FAIL | PASS | FAIL |
50
-
51
- Routing OpenAI → Qwen: PASS, una delegación y una herramienta del revisor.
52
- Estos smokes usan las credenciales existentes y fixtures temporales; no son la
53
- matriz representativa de un release protegido. Gemini no pertenece a la cohorte GA.
54
-
55
- ## Hallazgo GA-01 — P1 funcional: reserva de salida impide el segundo turno
56
-
57
- Con `subagentProfiles: []`, Meta y OpenAI activan el presupuesto de transporte en
58
- `src/harness.ts` (`createProviderCompatibleBudget`) y `src/runtime-policy.ts`.
59
- La integración con Core 1.14.0 vuelve a exigir la reserva completa de salida en
60
- el preflight del siguiente turno. La reserva no cabe después del primer consumo:
61
-
62
- | Proveedor | Límite | Consumido | Reserva solicitada | Disponible | Resultado |
63
- | --- | ---: | ---: | ---: | ---: | --- |
64
- | Meta | 30.000 | 2 | 30.000 | 29.998 | GuardrailTriggeredError, etapa input |
65
- | OpenAI | 30.000 | 2 | 30.000 | 29.998 | GuardrailTriggeredError, etapa input |
66
- | Qwen, control | 30.000 | 4 al terminar | — | — | completed |
67
-
68
- Se reprodujo sin red ni modelo real usando un primer turno `list_files` de dos
69
- tokens y un segundo turno de finalización. También se observó el guardrail de
70
- presupuesto de salida en diagnósticos adicionales de los fallos live de aprobación.
71
- Los fallos live OCI tienen el mismo fingerprint; no se afirma una inspección
72
- independiente de su causa interna.
73
-
74
- Ejecutar desde un checkout con el lockfile del commit evaluado:
75
-
76
- ```sh
77
- bun run scripts/validate-ga-budget.ts
78
- ```
79
-
80
- La nueva prueba de aceptación sale con código 1 en el candidato evaluado; Qwen
81
- actúa como control positivo. No se incluye silenciosamente como un test verde.
82
- El script valida finalización, salida esperada, uso y ejecución de herramienta.
83
- Debe pasar para los tres proveedores después de corregir la coordinación entre
84
- presupuesto acumulado y reserva por llamada, manteniendo límites y aprobaciones.
85
-
86
- ## Evidencia remota y pendientes
87
-
88
- La consulta actual de [CI del mismo commit](https://github.com/Zhivex/zhivex-harness/actions/runs/35458111045)
89
- mostró ambos jobs de consumidores Node 22.13/24 verdes. Los jobs de tooling macOS
90
- y Ubuntu fallaron en auditoría de dependencias; el log de Ubuntu confirma HTTP 503.
91
- [CodeQL del mismo commit](https://github.com/Zhivex/zhivex-harness/actions/runs/35458110958)
92
- pasó. La indisponibilidad de advisories no equivale a cero vulnerabilidades.
93
-
94
- Para levantar el NO-GO se requiere:
95
-
96
- 1. Corregir GA-01 y repetir esta aceptación y los smokes live afectados.
97
- 2. Resolver la retención por entrega de reparaciones registrada en
98
- [la validación previa de RC.14](RC14_VALIDATION_2026-09-10.md), con una cohorte
99
- nueva y criterios predeclarados. Esta validación no la reejecutó ni la cerró.
100
- 3. Recuperar auditoría de dependencias y CI completos.
101
- 4. Certificar el candidato final inmutable: tag, artefacto, OCI, live y matriz
102
- representativa completa de 42 casos; verificar publicación y SLSA. No se
103
- despachó publicación ni se ejecutó esa matriz sobre un candidato ya bloqueado.
104
- 5. Completar la revisión de seguridad de todas las fronteras y herramientas del
105
- candidato final con la identidad exigida por la política vigente. El borrador
106
- de RC.13 no cubre RC.14 y este informe no sustituye su firma humana.
107
- 6. Sólo después, preparar versión `1.0.0`, fase `ready` y ejecutar el gate formal.
108
-
109
- No se cambiaron estados del ledger, se declararon cero hallazgos de seguridad,
110
- se crearon tags ni se publicó ningún paquete. La revisión completa de seguridad
111
- queda pendiente, no aprobada por inferencia a partir de tests o CodeQL verdes.
@@ -1,202 +0,0 @@
1
- # Revisión estructural del harness tras la reevaluación Qwen
2
-
3
- > Historical snapshot: versions, findings and measurements below describe the recorded run, not the current checkout. See the [report index](README.md) for follow-up work and the [documentation index](../README.md) for maintained guides.
4
-
5
- El principal margen de mejora está en el controlador de reparación. El harness
6
- dispone de mecanismos de ejecución gobernada, pero sigue delegando en el modelo
7
- la decisión de abandonar la exploración, recuperar memoria, seleccionar una
8
- verificación e importar. Las políticas añadidas restringen ciertas herramientas;
9
- no implementan todavía un flujo de reparación con progreso comprobable y
10
- presupuesto de cierre. Más instrucciones y herramientas no resolvieron esa
11
- carencia y aumentaron el contexto fijo.
12
-
13
- ## Alcance y método
14
-
15
- Revisión del checkout actual, incluidos cambios locales: instrucciones y catálogo,
16
- lectura/búsqueda/edición, progreso, compacción/memoria, presupuesto, aprobación y
17
- finalización, ciclo OCI, configuración CLI/orquestación, driver, métricas y pruebas.
18
- Se contrastó con las veinte muestras archivadas de la última comparación y con
19
- los informes históricos. No se hicieron llamadas nuevas a proveedores ni se
20
- modificó el runtime. No es una recertificación completa de seguridad, proveedores,
21
- servicios externos, concurrencia, plataformas o publicación.
22
-
23
- Se ejecutaron 46 pruebas focalizadas en cinco archivos: progreso, remediación,
24
- compacción, recuperación de verificación y SWE-bench. Pasaron todas. El nuevo
25
- `../../evaluations/audits/repair-architecture-2026-09-09.ts` (source checkout)
26
- usa herramientas reales de lectura sobre archivos temporales y llamadas simuladas
27
- al middleware presupuestario. Pasó typecheck con las opciones estrictas del repo.
28
- La [evidencia estructurada](../../benchmarks/baselines/repair-architecture-audit-2026-09-09.json)
29
- incluye hashes de fuentes, resultados de los reproductores y métricas derivadas.
30
-
31
- ## Por qué las iteraciones no dieron el avance esperado
32
-
33
- 1. Se corrigieron defectos reales de integridad, cancelación, compatibilidad y
34
- observabilidad. Esas correcciones son necesarias, pero su aprobación local
35
- no demostraba que el agente fuera a resolver más tareas.
36
- 2. Se intervino con frecuencia sobre síntomas: más contexto recuperable,
37
- instrucciones de cierre y contadores de exploración. Ninguno obliga a que
38
- un candidato llegue a verificación con recursos suficientes.
39
- 3. La remediación agrupó once mejoras. La última matriz permite evaluar el
40
- paquete completo, pero no atribuir el resultado a cada intervención. Sí hubo
41
- un estudio anterior aislado de recuperación de verificador; no alcanzaba a
42
- reparar intentos que nunca llegaban al verificador.
43
- 4. Se reutilizaron cinco tareas conocidas. Sirven para depurar; repetirlas no
44
- amplía cobertura de generalización. Dos repeticiones tampoco estabilizan
45
- suficientemente resultados de un agente estocástico.
46
- 5. Las nuevas ayudas también cuestan: sistema más catálogo aumentó de 11.157
47
- a 13.755 caracteres por petición. No se exigió una mejora de resultado final
48
- antes de considerar completada la mejora del mecanismo.
49
-
50
- El resultado actual sigue siendo 0/10 entregas de Zhivex frente a 4/10 de mini
51
- con el mismo Qwen solicitado. Los tres candidatos correctos de Zhivex identifican
52
- una pérdida posterior a la edición, no tres éxitos ni una mejora medida respecto
53
- de una baseline que no capturaba candidatos.
54
-
55
- ## Hallazgos y cambios necesarios
56
-
57
- | ID | Prioridad | Diagnóstico | Cambio y criterio de aceptación |
58
- | --- | --- | --- | --- |
59
- | A01 | P1 | El cierre depende de otra decisión del modelo | Controlador durable por etapas y revisión de parche. Una edición activa una obligación pendiente de verificación; completar requiere recibo válido. |
60
- | A02 | P1 | No hay reserva efectiva para cerrar | Separar presupuesto de trabajo y cierre, estimar la siguiente petición completa, reservar inspección/verificación y recuperación acotada. El trabajo ordinario no puede consumir la reserva. |
61
- | A03 | P1 | La fase declarada no representa evidencia de progreso | Transiciones basadas en reproducción, digest del candidato y recibos; un plan es una hipótesis, no una reparación. |
62
- | A04 | P2 | El alcance del plan no se aplica a lecturas por lotes | Normalizar y validar todos los paths de cada herramienta. La política debe ser consistente entre lectura individual, lote y búsqueda. |
63
- | A05 | P1 | Recuperar memoria sigue siendo opcional; checks compactados pierden identidad | Proyección automática y acotada del estado de trabajo: requisito activo, hipótesis, evidencia, revisión del candidato y próximo check. Conservar vínculos a recibos completos. |
64
- | A06 | P2 | Catálogo estático y estimación parcial del contexto | Catálogo mínimo por etapa y medición de mensajes + sistema + esquemas + margen del transporte; verificar compatibilidad con historia y aprobaciones. |
65
- | A07 | P2 | El contrato de verificación exige salida cero, no suficiencia del check | Registrar propósito, aserciones y revisión probada; distinguir ejecución exitosa, reproducción corregida y regresión. No sustituir pruebas independientes por autoevaluación del modelo. |
66
- | A08 | P2 | Crear/sincronizar el entorno consume una parte medible de los comandos | Explorar sesión por ejecución lógica y sincronización incremental conservando leases, cancelación e integridad. Medir por separado antes de cambiar. |
67
- | A09 | P1 | Los gates de mecanismo no prueban mejora del agente | Regresiones de trayectorias difíciles, ablaciones pequeñas y promoción por resultados entregados, sin alterar métricas ni presupuestos tras observar fallos. |
68
- | A10 | P2 | Perfil y entorno del benchmark difieren del producto y el competidor | Manifiesto efectivo exportable para CLI y benchmark; comparar calidad del candidato y entrega gobernada por separado. |
69
-
70
- ### A01–A03: cambiar quién controla el progreso
71
-
72
- `runHarness` retorna un resultado no pendiente de aprobación sin conducir una
73
- transición de reparación. La ruta terminal solo se activa si el modelo ya pidió
74
- una herramienta terminal y quedó una aprobación única aprobada. Es una
75
- optimización útil del cierre solicitado, no un controlador que garantice llegar a él.
76
-
77
- `createRepairProgress` establece `phase=repair` al recibir `repair_plan`, incluso
78
- antes de reproducir o editar. No tiene estados basados en candidato modificado,
79
- verificación necesaria o importación pendiente. `closing()` activa un booleano
80
- al 70% de uso y permite hasta cuatro lecturas y tres comandos adicionales. Un
81
- modelo puede gastar lo restante antes de agotar esos contadores.
82
-
83
- El reproductor consume 70.000 tokens, acepta tres respuestas de 10.000 y bloquea
84
- la siguiente: reserva efectiva cero. En las trazas reales, nueve intentos entran
85
- en cierre con cero bloqueos de fase y ninguno solicita verificación. No hace
86
- falta una avería del SDK para explicar ese comportamiento.
87
-
88
- Propuesta de flujo: explorar → reproducir → editar → verificar → importar →
89
- completar. Debe permitir corregir hipótesis, reproducir con fixtures nuevos y
90
- volver a editar tras una verificación fallida. La transición puede automatizar
91
- inspección y preparación del próximo paso; nunca debe inventar aprobaciones,
92
- usar pruebas ocultas ni importar candidatos solo porque el evaluador posterior
93
- los considere correctos. Si falta autorización, termina como pendiente; si falta
94
- evidencia o presupuesto, conserva candidato y causa sin declarar éxito.
95
-
96
- La reserva debe calcularse antes de pedir otra respuesta, no solo después del
97
- 70%. Debe incluir el catálogo, la petición de cierre y una recuperación acotada.
98
- Un porcentaje fijo puede ser un límite inicial, pero su efectividad depende del
99
- tamaño de las peticiones. No se propone subir los 100.000 tokens para ocultar el
100
- problema. La telemetría de transporte debe persistir como contabilidad propia;
101
- restaurarla únicamente desde uso del SDK hereda los huecos ya documentados.
102
-
103
- ### A04: el plan no cubre la herramienta más utilizada
104
-
105
- El wrapper consulta `input.path`. `read_files` usa `input.files[].path`, por lo
106
- que queda fuera de esa comprobación. El reproductor registra `planned.txt`:
107
- `read_file(unplanned.txt)` se rechaza por alcance y el lote equivalente devuelve
108
- el archivo. Es un defecto de estrategia; las restricciones de seguridad del
109
- workspace continúan aplicándose.
110
-
111
- Hubo 52 ejecuciones de `read_files`, 27 de `search_files` y 7 de `search_many`.
112
- Por ello no basta probar un wrapper con un schema ficticio que solo contiene
113
- `path`: hay que probar los schemas reales y sus equivalencias. Contar un lote
114
- como una lectura también separa cantidad de llamadas de cantidad de evidencia.
115
-
116
- ### A05–A06: memoria utilizable, no solo disponible
117
-
118
- Las trazas contienen 14 eventos de compacción y una solicitud de `read_task`.
119
- Esto no demuestra por sí solo qué requisito olvidó cada intento, pero sí que la
120
- instrucción de recuperar la tarea después de compactar no se cumple de forma
121
- sistemática. La tarea completa ahora está conservada en metadata; el siguiente
122
- paso es presentarle al modelo automáticamente la parte necesaria, con acceso
123
- a la fuente completa, sin reinyectar documentos enteros en todas las peticiones.
124
-
125
- El compactor conserva paths, digests y códigos de salida, pero el reproductor
126
- muestra que pierde `assert 2 + 2 == 4` y mantiene `exitCode=0`. Hace falta un
127
- registro de evidencias ligado a `commandId`, propósito y revisión, cuya proyección
128
- resuma resultados y ubicación de fallos. Los logs completos deben quedar acotados
129
- y accesibles bajo la política de redacción; no incorporarse indiscriminadamente.
130
-
131
- El estimador usado por compacción recibe mensajes y divide caracteres por cuatro;
132
- no recibe el catálogo de herramientas. El medidor de transporte sí lo observa,
133
- pero esa observación no alimenta una predicción del costo siguiente. Catálogo
134
- y sistema crecieron 23,3%, mientras los resultados de herramientas presentes por
135
- petición bajaron solo 7,2% en la cohorte. Es evidencia de un tradeoff; no prueba
136
- causal de que retirar memoria aumente la tasa de resolución.
137
-
138
- Un catálogo dinámico debe conservar consistencia del protocolo de herramientas
139
- anteriores y de aprobaciones pendientes. No basta eliminar nombres del objeto
140
- antes de cada llamada. Primero conviene medir una variante estática mínima,
141
- manteniendo edición gobernada e importación, y luego agregar selección por fase.
142
-
143
- ### A07–A08: calidad de verificación y costo OCI
144
-
145
- `verify_and_apply_environment_patch` verifica patchId, ejecuta argv aprobado,
146
- exige salida cero, rechaza cambios producidos por el verificador e importa bajo
147
- las comprobaciones existentes. Esas garantías deben conservarse. Una salida cero
148
- no demuestra que el comando haya comprobado el requisito: un contrato de evidencia
149
- debe hacer explícito qué se comprobó, sin confundirlo con una prueba matemática
150
- de cobertura. El evaluador independiente sigue siendo necesario.
151
-
152
- En los 17 comandos nativos observados, las métricas acumulan 68,84 s, de los cuales
153
- 11,60 s corresponden a creación de sesión y 12,35 s a exportación de workspace:
154
- 34,8% del tiempo instrumentado de comandos entre ambas fases. No es 34,8% de toda
155
- la ejecución ni demuestra que OCI explique el fracaso. El runtime elimina los
156
- contenedores al liberar una sesión; su calentamiento depende de la duración de
157
- la adquisición. Hay margen para estudiar persistencia bajo una misma ejecución
158
- lógica, pero corregir el cierre y el contexto tiene prioridad sobre este ahorro.
159
-
160
- ### A09–A10: evaluar resultados y trasladarlos al producto
161
-
162
- Los tests de progreso verifican contadores y excepciones. Los de recuperación
163
- usan un modelo simulado que emite `read_task` o el verificador cuando el fixture
164
- lo programa. Son regresiones válidas del mecanismo; no evidencia de que Qwen
165
- vaya a tomar esas decisiones. `scripts/evaluate.ts` también usa modelos simulados.
166
-
167
- Añadir trayectorias con edición correcta temprana seguida de exploración,
168
- memoria compactada, lotes fuera de alcance, aprobación tardía, cancelación,
169
- verificación fallida y reinicio durable. Medir qué decisiones puede forzar el
170
- controlador sin depender de que el mock le entregue el final feliz. En live,
171
- registrar tokens hasta primera edición, primera reproducción y verificación,
172
- tokens después del último candidato, candidato correcto y entrega final.
173
-
174
- El benchmark activa `repair`, desactiva contexto de proyecto y subagentes, y
175
- recorta el catálogo. La CLI por defecto resuelve `strict`. No se concluye que
176
- estos resultados cubran toda la CLI, MCP, skills u orquestación. El siguiente
177
- experimento debe exportar el perfil efectivo y reutilizar el mismo ensamblado
178
- del producto donde sea posible.
179
-
180
- ## Orden de trabajo y criterio de avance
181
-
182
- 1. **Cerrar correctamente un candidato existente.** Regresión de flujo sin modelo
183
- real que conserve permisos, integridad y cancelación; luego un ensayo live
184
- acotado. El objetivo es elevar entregas, no solo llegar a editar.
185
- 2. **Integrar presupuesto y estado de reparación.** Hacer imposible gastar la
186
- reserva en exploración ordinaria; persistir estado/contabilidad y probar resume.
187
- 3. **Reducir contexto efectivo.** Variante mínima del catálogo y memoria proyectada,
188
- cambiadas por separado para identificar el aporte de cada una.
189
- 4. **Evaluar generalización.** Tras una mejora repetida en desarrollo, congelar
190
- configuración y abrir una cohorte nueva por tipo de tarea y repositorio.
191
-
192
- Predeclarar para cada ensayo hipótesis, cambio, tareas, repeticiones, límites,
193
- métrica principal y regla de parada. Mantener comparables modelo, razonamiento y
194
- transporte; la comparación anterior OpenAI/Qwen variaba esas tres dimensiones.
195
- No iniciar otra matriz completa por cada ajuste menor. Un resultado sin mejora
196
- final exige revisar la hipótesis, no acumular más herramientas por defecto.
197
-
198
- La HU del SDK sobre herramientas desconocidas y pérdida de uso durable ya está
199
- [en Zhivex](https://app.notion.com/p/3d7777b104f681248ed3cecffe9328d2).
200
- Los nuevos hallazgos reproducidos aquí pertenecen al harness y no requieren
201
- esperar al SDK. Muse o un modelo con mayor razonamiento podrían cambiar las
202
- decisiones, pero no garantizan resolver estos defectos del controlador.
@@ -1,306 +0,0 @@
1
- # Auditoría integral del harness — 2026-09-09
2
-
3
- > Historical snapshot: versions, findings and measurements below describe the recorded run, not the current checkout. See the [report index](README.md) for follow-up work and the [documentation index](../README.md) for maintained guides.
4
-
5
- > Estado posterior: los once hallazgos tienen implementaciones y regresiones locales.
6
- > Ver [cierre de implementación](HARNESS_REMEDIATION_2026-09-09.md).
7
- > El cuerpo de este documento y el baseline original conservan la evidencia previa;
8
- > sus ubicaciones de líneas son históricas y los resultados no describen el código corregido.
9
-
10
- La revisión encontró problemas adicionales a la adaptación de Qwen. Los más
11
- urgentes son la cancelación de la ruta terminal, una carrera en la validación de
12
- directorios y la pérdida de requisitos durante la compactación. No hay evidencia
13
- para atribuir estos hallazgos al SDK nuevo.
14
-
15
- El análisis cubre el checkout de `1.0.0-rc.13`, incluido el trabajo local sin
16
- commit, con Core 1.14.0, Agents 1.4.0 y Qwen 0.11.4. No se modificó código de
17
- producción. Se añadieron un reproductor local y evidencia; no se hicieron llamadas
18
- nuevas a modelos, publicación ni cambios en servicios externos.
19
-
20
- ## Alcance y método
21
-
22
- Se inspeccionaron las fronteras entre instrucciones, herramientas, SDK, contexto,
23
- OCI, aprobaciones, persistencia, CLI, orquestación, telemetría y evaluación. Se
24
- revisaron también los contratos de seguridad y los gates locales de CI/release.
25
- Esto es una auditoría de superficies y riesgos, no una certificación de todas las
26
- líneas, plataformas o condiciones concurrentes del producto.
27
-
28
- - **466 pruebas existentes:** pasaron, sin fallos.
29
- - **7 evaluaciones determinísticas:** pasaron; usan modelos simulados.
30
- - Typecheck de producción, contratos y migraciones publicadas 0.10.0/0.11.1: pasaron.
31
- - Reproductor de auditoría: ejecutado y validado con TypeScript por separado.
32
- - El contrato de preparación sigue declarando abierto el gate de revisión de seguridad.
33
- - La evidencia live consultada es la matriz Qwen anterior de diez intentos; no se repitió.
34
- - No se revalidaron servicios MCP externos, el paquete publicado, CI remoto ni OCI real en esta auditoría.
35
-
36
- Reproducción local sin credenciales ni Docker:
37
-
38
- ```sh
39
- bun --no-env-file run evaluations/audits/harness-review-2026-09-09.ts
40
- ```
41
-
42
- El `../../evaluations/audits/harness-review-2026-09-09.ts` (source checkout) sólo escribe
43
- fixtures temporales que elimina al terminar. La [evidencia estructurada](../../benchmarks/baselines/harness-audit-2026-09-09.json)
44
- registra observaciones, versiones y hashes. No es una suite que obligue a conservar
45
- los defectos: después de corregirlos deben cambiar las observaciones y agregarse
46
- regresiones con el comportamiento deseado.
47
-
48
- ## Hallazgos priorizados
49
-
50
- | ID | Prioridad | Hallazgo | Evidencia | Responsable |
51
- | --- | --- | --- | --- | --- |
52
- | H01 | P1 | La importación terminal puede ejecutarse después de cancelar | Reproducido | Harness |
53
- | H02 | P1 condicional a mutación concurrente | Una lectura puede seguir un directorio padre sustituido | Reproducido con intercalado controlado | Harness/filesystem |
54
- | H03 | P1 | La compactación elimina criterios de aceptación del objetivo | Reproducido | Harness/contexto |
55
- | H04 | P2 | Búsquedas válidas pueden producir más de 300.000 caracteres | Reproducido | Harness/herramientas |
56
- | H05 | P2 | Búsqueda incompleta se presenta como ausencia de coincidencias | Reproducido | Harness/herramientas |
57
- | H06 | P2 | Las instrucciones y el catálogo de herramientas no coinciden | Código y fixture | Harness/driver |
58
- | H07 | P2 | Readquirir OCI pierde el historial visible de mutaciones | Reproducido | Harness/OCI |
59
- | H08 | P2 | El control de exploración no representa el progreso de reparación | Código, fixture y matriz live | Harness/estrategia |
60
- | H09 | P2 | Las mejoras del driver no equivalen a mejoras activas en CLI | Código | Harness/producto |
61
- | H10 | P2 | La evaluación pierde los parches candidatos y etapas intermedias | Código y resultados | Harness/evaluación |
62
- | H11 | P2 | La telemetría no permite cerrar ciertas causas de fallo ni tiempos | Código y matriz live | Harness/observabilidad |
63
-
64
- ### H01 — Cancelación omitida en la ruta terminal
65
-
66
- `src/harness.ts:1030`, `:1054`, `:1098`, `:1472`.
67
-
68
- `executeTerminalReceiptTool` readquiere el entorno y construye un
69
- `ToolExecutionContext` sin propagar el `abortSignal` del llamado. `runHarness`
70
- tampoco vuelve a comprobarlo después de resolver la aprobación y antes de tomar
71
- esta ruta. Se sale del circuito normal del SDK para ejecutar e importar.
72
-
73
- La prueba canceló la señal dentro del resolver de aprobación, antes de devolver
74
- la respuesta. Resultado: `status=completed`, una ejecución, sin señal en el runtime
75
- e importación efectiva del archivo de prueba. El verificador fue simulado; las
76
- aprobaciones, snapshots, journal y escritura del host fueron los reales del harness.
77
-
78
- Alcance: ruta opt-in `terminalReceiptTools`, usada por el benchmark y disponible
79
- en la biblioteca. No demuestra que toda cancelación de la CLI falle.
80
-
81
- Corrección: propagar señal y deadline, comprobar cancelación antes de ejecutar y
82
- antes de importar, y mantener la finalización de estado bajo las mismas garantías
83
- de cancelación/concurrencia del circuito ordinario. Validar cancelación antes,
84
- durante y después del verificador; ninguna debe producir una importación posterior.
85
-
86
- ### H02 — El descriptor protege la hoja, no toda la ruta
87
-
88
- `src/workspace.ts:478`, `:508`; `src/file-security.ts:45`.
89
-
90
- Se validan ancestros con `lstat`, pero después se abre una ruta absoluta. El
91
- `O_NOFOLLOW` usado al abrir protege la hoja; un ancestro puede haber cambiado.
92
- La prueba sustituye el directorio padre por un symlink después de `safePath` y
93
- antes de la lectura real. Se devolvió el sentinel externo como si perteneciera a
94
- `parent/fixture.txt` dentro del workspace.
95
-
96
- Es un intercalado determinístico mediante instrumentación del objeto de prueba,
97
- no una medición de probabilidad de explotación. Requiere otro actor capaz de
98
- modificar el directorio durante la operación; un symlink estático sigue siendo
99
- rechazado. No se usaron secretos ni se demostró escritura externa.
100
-
101
- Corrección: ligar la resolución completa a directorios confiables y a descriptores
102
- (o un mecanismo equivalente soportado por plataforma). Repetir `lstat` antes o
103
- después no cierra por sí solo la carrera. Auditar también lecturas de contexto y
104
- operaciones de publicación que combinan validación de padres con uso posterior de
105
- rutas. No marcar estas otras superficies como explotadas sin reproducirlas.
106
-
107
- ### H03 — La memoria conserva ubicaciones, pero pierde la tarea
108
-
109
- `src/compaction.ts:18`, `:75`, `:89`, `:163`; `src/harness.ts:694`.
110
-
111
- El primer objetivo se recorta a 768 caracteres y los mensajes de seguimiento a
112
- 512. Se trata de un prefijo, no de una extracción semántica de requisitos. Un
113
- objetivo de 1.589 caracteres perdió el criterio final `MANDATORY_ACCEPTANCE` al
114
- compactar. Las compactaciones siguientes sólo pueden conservar lo que sobrevivió.
115
- El SDK invoca el compactor sobre el prefijo que reemplazará; el texto completo del
116
- objetivo no queda garantizado en el contexto enviado al modelo.
117
-
118
- Además, se conservan códigos de salida de checks sin toda su asociación a comandos,
119
- aserciones y revisión probada. Un historial de `exitCode=0` no permite reconstruir
120
- por sí solo qué comportamiento fue validado. Los recibos durables son otra fuente;
121
- no deben confundirse con esta memoria.
122
-
123
- Corrección: mantener objetivo, restricciones y criterios activos separados del
124
- historial comprimible; ofrecer recuperación controlada del pedido original y una
125
- memoria de trabajo con hipótesis, decisiones, cambios y comprobaciones asociadas.
126
- Probar requisitos ubicados al final, cambios de objetivo, varias compactaciones
127
- y continuidad luego de aprobaciones. No aumentar simplemente el límite global.
128
-
129
- ### H04 — Se limita el número de resultados, pero no su costo agregado
130
-
131
- `src/workspace.ts:855`, `:937`; `src/harness.ts:369`, `:688`.
132
-
133
- Una búsqueda legal de 500 coincidencias devolvió **310.975 caracteres**. Las
134
- lecturas ya tienen límites de contenido de 16.000/32.000 caracteres, pero búsquedas
135
- repiten texto, path y digest en cada coincidencia sin un presupuesto equivalente.
136
- El modelo puede recibir un payload grande de golpe. La estimación de compactación
137
- usa caracteres de mensajes divididos por cuatro; no incluye las definiciones de
138
- herramientas y no garantiza un límite exacto de tokens del proveedor.
139
-
140
- Corrección: presupuesto agregado por respuesta y por turno, paginación con aviso
141
- de cobertura, menos repetición de metadata y catálogo de herramientas por fase.
142
- Medir tokens reales; no traducir mecánicamente los caracteres a tokens facturados.
143
-
144
- ### H05 — Cero coincidencias no implica búsqueda completa
145
-
146
- `src/workspace.ts:891`, `:970`.
147
-
148
- Las búsquedas de directorio descartan errores de lectura. Con un archivo de más de
149
- 1 MiB que contenía el marcador buscado, el resultado fue `matches=[]` y
150
- `truncated=false`, sin contador de archivos omitidos. El límite de lectura es
151
- razonable; la falsa impresión de cobertura completa no lo es.
152
-
153
- Corrección: informar archivos inspeccionados/omitidos y motivos tipados, con
154
- `incomplete` independiente de la truncación por cantidad de coincidencias. La
155
- búsqueda por archivo exacto debe mantener sus errores explícitos.
156
-
157
- ### H06 — Instrucciones que no corresponden a las herramientas activas
158
-
159
- `src/harness.ts:154`, `:369`; `scripts/swebench/zhivex-driver.ts:51`, `:75`.
160
-
161
- El benchmark selecciona nueve herramientas, pero reutiliza instrucciones que
162
- ordenan inspeccionar `mutation_audit` y mencionan `git_diff`, `load_skill`,
163
- `apply_patch` y `run_check`. Varias no están disponibles. El prompt indica usar
164
- rutas relativas y después introduce `/workspace`; las descripciones de herramientas
165
- no explican uniformemente la diferencia entre ruta de herramienta y cwd del shell.
166
- La matriz muestra errores ENOENT iniciales, pero no conserva sus argumentos:
167
- no se puede atribuir esos errores concretos a esta ambigüedad.
168
-
169
- En el harness normal, `search_files` sólo acepta directorios aunque la guía general
170
- recomienda buscar en el archivo exacto. El fixture falla con `search_files` y
171
- funciona con `search_many` sobre ese mismo archivo.
172
-
173
- Corrección: generar instrucciones a partir del catálogo y backend efectivos,
174
- unificar contratos de búsqueda y dar ejemplos breves de rutas válidas. Validar que
175
- cada instrucción ejecutable tenga una herramienta disponible.
176
-
177
- ### H07 — El journal durable y mutation_audit cuentan historias distintas
178
-
179
- `src/execution-environment.ts:1677`; `src/workspace.ts:442`, `:1006`;
180
- `src/harness.ts:486`.
181
-
182
- Cada adquisición crea otra instancia de `Workspace`, cuyo audit es un array en
183
- memoria. Tras editar y readquirir la misma sesión OCI: entradas de audit **1 → 0**,
184
- pero el parche conservaba una entrada. Esto ocurre dentro del flujo de un run;
185
- no requiere reiniciar toda la aplicación.
186
-
187
- No demuestra pérdida del journal de ejecución del SDK ni del parche. Demuestra
188
- que la herramienta de audit no reconstruye la historia que el modelo y la
189
- documentación esperan consultar al final.
190
-
191
- Corrección: reconstruir por run desde eventos persistidos o mantener un registro
192
- ligado a la sesión durable. Distinguir las ediciones directas de los cambios hechos
193
- por comandos y probar continuidad a través de varias aprobaciones.
194
-
195
- ### H08 — El contador de duplicados no mide estancamiento
196
-
197
- `src/repair-progress.ts:28`, `:34`; baseline Qwen actualizado.
198
-
199
- El controlador borra su memoria ante toda herramienta fuera de la lista de lecturas.
200
- Eso incluye `inspect_environment_patch`, que es de sólo lectura. Alternar cuatro
201
- lecturas idénticas con esa inspección produjo cero duplicados y cero supresiones.
202
-
203
- La fase de cierre bloquea listados y búsquedas en la raíz; permite distintas
204
- lecturas, búsquedas en directorios y exploración vía shell. En la matriz se activó
205
- en cuatro intentos, bloqueó una llamada y no evitó cuatro agotamientos de presupuesto.
206
- No existe una reserva rígida del 30% ni una transición obligatoria hacia un parche.
207
-
208
- Corrección: invalidar sólo por posibles efectos reales, detectar solapamiento y
209
- progreso semántico, y asignar presupuestos a explorar/reproducir/editar/verificar.
210
- No bloquear una lectura necesaria para corregir con seguridad ni ejecutar cambios
211
- sólo porque se agotó el tiempo de exploración.
212
-
213
- ### H09 — Driver experimental y producto tienen políticas distintas
214
-
215
- `src/harness.ts:966`, `:1345`; `scripts/swebench/zhivex-driver.ts:38`, `:93`.
216
-
217
- La recuperación de schemas, el middleware de presupuesto de transporte y el
218
- control de progreso se habilitan en el driver. El runtime ordinario mantiene
219
- `stopOnError=true`, recuperación terminal deshabilitada por defecto y no instala
220
- el controlador de progreso automáticamente. Compactación v3 y herramientas nuevas
221
- sí están compartidas.
222
-
223
- Es una elección conservadora explícita, no un bug del SDK. Pero impide presentar
224
- el comportamiento de la corrida como el comportamiento general de la CLI.
225
-
226
- Corrección: perfiles de política explícitos, versionados y comprobables, con
227
- recuperación acotada por clase de error. Mantener denegaciones, límites, cancelación
228
- y errores de integridad como fronteras estrictas. Validar el mismo perfil desde
229
- la CLI, biblioteca y evaluación antes de habilitarlo por defecto.
230
-
231
- ### H10 — La métrica final oculta dónde se perdió la reparación
232
-
233
- `scripts/swebench/run.py:214`; `mini_driver.py:101`;
234
- `zhivex-driver.ts:109`.
235
-
236
- Mini exporta el diff existente de su contenedor incluso tras terminar por límites.
237
- Zhivex entrega el diff del host, que sólo recibe cambios mediante importación
238
- verificada. Después borra el directorio de estado, incluido el snapshot candidato.
239
-
240
- El score 0/5 frente a 2/5 sigue describiendo los resultados de esas dos políticas
241
- completas. No aísla calidad de razonamiento, calidad del parche candidato, costo
242
- adicional de gobierno ni el efecto del SDK. **Un diff exportado vacío no permite
243
- concluir que el agente nunca editó dentro de OCI.** Las llamadas de shell pueden
244
- editar; la telemetría proyectada no permite reconstruir siempre su intención.
245
-
246
- Corrección: conservar separadamente candidato, verificado e importado; registrar
247
- etapas alcanzadas; evaluar el candidato en un entorno independiente después de
248
- terminar, sin importarlo ni mostrarle tests ocultos al agente. Mantener el score
249
- oficial de reparación segura y añadir un diagnóstico comparable de capacidad.
250
- Usar holdout nuevo y varias repeticiones una vez congelada cada variante.
251
-
252
- ### H11 — Telemetría insuficiente para atribución y rendimiento
253
-
254
- `scripts/swebench/telemetry.ts`; `zhivex-driver.ts:111`, `:126`;
255
- `scripts/time-to-safe-fix-efficiency.ts`.
256
-
257
- SymPy terminó con un fingerprint sin causa identificada y uso incompleto. Algunas
258
- filas tienen `status=failed` y `failure=null`; la causa está en guardrails. El
259
- instrumentador recoge tiempos por herramienta, pero el driver devuelve sólo la
260
- suma de llamadas. Se observan respuestas, no todas las transiciones de etapa, y
261
- los códigos de salida del verificador no explican la aserción que falló.
262
-
263
- Corrección: taxonomía estructurada para transporte/parsing/schema/herramienta/
264
- verificación/presupuesto/cancelación; conservar finish reason, herramientas
265
- solicitadas con nombres permitidos, etapa y uso faltante. Añadir latencia de modelo,
266
- TTFT cuando exista, herramientas, aprobaciones, OCI y grading. Mantener artefactos
267
- de diagnóstico privados y acotados; no imprimir prompts, secretos o logs crudos.
268
-
269
- ## Superficies revisadas sin nuevo fallo confirmado
270
-
271
- | Superficie | Qué se contrastó | Límite de la conclusión |
272
- | --- | --- | --- |
273
- | Persistencia y sesiones | revisiones, scope, leases del SDK, migraciones, backup y estados activos | No se ensayó caída real del proceso durante cada escritura ni multi-host |
274
- | Presupuestos | guardrails, medición de transporte, continuación por aprobación | El probe `maxSteps=1` hizo una petición y terminó por límite; no se confirmó un reset de steps |
275
- | Orquestación | selección de roles, presupuestos hijos, promoción de aprobación e herencia de entorno del SDK | Grupos de review y perfiles necesitan evaluaciones de calidad, además de mocks |
276
- | MCP | límites de payload, permisos, aprobación, tratamiento no confiable | No se ensayaron todos los servidores/transportes externos; filtros de texto no son garantía universal contra inyección |
277
- | OCI | políticas, transacciones por comando, rechazo de drift, importación | El nuevo probe usa un proceso simulado; no constituye certificación del daemon |
278
- | Proveedores | configuración instalada, capability gate y recuperación comprobada | Sin llamadas live nuevas ni comparación de modelos con reasoning equivalente |
279
- | Build/release | contratos, CI declarada, versiones y gate de seguridad | Sin consulta de registry ni certificación del paquete publicado |
280
-
281
- Otros puntos para el backlog: `tester` ejecuta scripts de `package.json` y no es
282
- un verificador genérico de repositorios Python; un `read_files` con un archivo
283
- inválido pierde todos los resultados del batch; la compactación no guarda una
284
- hipótesis estructurada; el contexto de proyecto puede consumir una parte grande
285
- del prompt fijo. Son superficies de producto que requieren pruebas de uso y
286
- medición antes de rediseñar la API.
287
-
288
- ## Orden recomendado de trabajo
289
-
290
- 1. **Cerrar H01/H02** con regresiones adversariales y validación en las plataformas soportadas.
291
- 2. **Corregir H03/H04/H05/H06**: objetivo recuperable, salidas acotadas, cobertura explícita e instrucciones coherentes.
292
- 3. **Resolver H07/H08/H09**: continuidad de audit y perfiles de ejecución compartidos con presupuesto por fase.
293
- 4. **Instrumentar H10/H11** antes de otra campaña de gasto live.
294
- 5. Ablaciones: contrato/instrucciones; memoria de tarea; control de exploración;
295
- herramientas por fase. Cambiar una familia a la vez, manteniendo modelo,
296
- reasoning, imágenes y límites. Luego confirmar en un holdout nuevo.
297
-
298
- Medir resolución candidata/verificada/importada, tokens completos por reparación,
299
- tiempo hasta primer cambio y primera verificación, errores recuperados, cobertura
300
- de búsqueda y uso incompleto. Comparar presupuesto bajo, medio y alto para saber
301
- si la curva mejora; un solo punto de 100k no responde esa pregunta.
302
-
303
- No hay base para prometer que Muse cierre estas brechas. Una memoria adicional
304
- puede ayudar a la continuidad, pero no corrige cancelación, resolución de rutas,
305
- contratos incompatibles ni una evaluación que pierde etapas. Los hallazgos
306
- confirmados de esta revisión pertenecen al harness; no se creó una HU nueva del SDK.