devlyn-cli 3.2.0 → 3.3.0

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 (424) hide show
  1. package/AGENTS.md +2 -2
  2. package/CLAUDE.md +2 -2
  3. package/README.md +22 -113
  4. package/bin/devlyn.js +13 -225
  5. package/bin/instruction-templates.json +752 -1
  6. package/bin/instructions.js +101 -17
  7. package/config/skills/_shared/adapters/grok.md +1 -2
  8. package/config/skills/_shared/archive_run.py +15 -3
  9. package/config/skills/_shared/judge-role-evidence.py +21 -1
  10. package/config/skills/_shared/runtime-principles.md +1 -1
  11. package/config/skills/_shared/spec-verify-check.py +0 -653
  12. package/config/skills/_shared/state-phase-write.py +371 -30
  13. package/config/skills/_shared/task-complete.py +635 -143
  14. package/config/skills/_shared/terminal-claim-check.py +229 -4
  15. package/config/skills/_shared/verify-merge-findings.py +93 -2
  16. package/config/skills/devlyn:ideate/SKILL.md +3 -4
  17. package/config/skills/devlyn:ideate/references/elicitation.md +2 -35
  18. package/config/skills/devlyn:ideate/references/from-spec-mode.md +3 -18
  19. package/config/skills/devlyn:ideate/references/project-mode.md +1 -16
  20. package/config/skills/devlyn:ideate/references/spec-template.md +0 -2
  21. package/config/skills/devlyn:queue/SKILL.md +6 -4
  22. package/config/skills/devlyn:resolve/SKILL.md +16 -25
  23. package/config/skills/devlyn:resolve/references/free-form-mode.md +0 -14
  24. package/config/skills/devlyn:resolve/references/outer-loop.md +1 -1
  25. package/config/skills/devlyn:resolve/references/phases/build-gate.md +1 -1
  26. package/config/skills/devlyn:resolve/references/phases/cleanup.md +3 -3
  27. package/config/skills/devlyn:resolve/references/phases/implement.md +1 -1
  28. package/config/skills/devlyn:resolve/references/phases/probe-derive.md +1 -16
  29. package/config/skills/devlyn:resolve/references/phases/verify.md +4 -9
  30. package/config/skills/devlyn:resolve/references/state-schema.md +9 -7
  31. package/config/skills/devlyn:resolve/references/task-completion.md +46 -37
  32. package/{config/skills → optional-skills}/code-health-standards/SKILL.md +4 -13
  33. package/{config/skills → optional-skills}/code-review-standards/SKILL.md +4 -12
  34. package/{config/skills → optional-skills}/root-cause-analysis/SKILL.md +4 -12
  35. package/{config/skills → optional-skills}/ui-implementation-standards/SKILL.md +4 -14
  36. package/package.json +1 -57
  37. package/benchmark/auto-resolve/BENCHMARK-DESIGN.md +0 -289
  38. package/benchmark/auto-resolve/BENCHMARK-RESULTS.md +0 -341
  39. package/benchmark/auto-resolve/README.md +0 -696
  40. package/benchmark/auto-resolve/RUBRIC.md +0 -177
  41. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/NOTES.md +0 -34
  42. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/expected.json +0 -68
  43. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/metadata.json +0 -10
  44. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/setup.sh +0 -4
  45. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/spec.md +0 -44
  46. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/task.ko.txt +0 -8
  47. package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/task.txt +0 -8
  48. package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/NOTES.md +0 -68
  49. package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/expected.json +0 -60
  50. package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/metadata.json +0 -10
  51. package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/setup.sh +0 -17
  52. package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/spec.md +0 -51
  53. package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/task.txt +0 -9
  54. package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/verifiers/invalid.js +0 -29
  55. package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/verifiers/parallel.js +0 -50
  56. package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/NOTES.md +0 -75
  57. package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/expected.json +0 -52
  58. package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/metadata.json +0 -10
  59. package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/setup.sh +0 -171
  60. package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/spec.md +0 -50
  61. package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/task.txt +0 -9
  62. package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/NOTES.md +0 -89
  63. package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/expected.json +0 -74
  64. package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/metadata.json +0 -10
  65. package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/setup.sh +0 -251
  66. package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/spec.md +0 -57
  67. package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/task.txt +0 -13
  68. package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/verifiers/replay-malformed-body.js +0 -64
  69. package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/NOTES.md +0 -104
  70. package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/expected.json +0 -46
  71. package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/metadata.json +0 -10
  72. package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/setup.sh +0 -336
  73. package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/spec.md +0 -51
  74. package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/task.txt +0 -9
  75. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/NOTES.md +0 -38
  76. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/expected.json +0 -64
  77. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/metadata.json +0 -10
  78. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/setup.sh +0 -32
  79. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/spec.md +0 -63
  80. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/task.txt +0 -7
  81. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/verifiers/exact-success.js +0 -54
  82. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/verifiers/no-hardcoded-pricing.js +0 -47
  83. package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/verifiers/stock-error.js +0 -45
  84. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/NOTES.md +0 -57
  85. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/expected-pair-plan-registry.json +0 -170
  86. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/expected.json +0 -84
  87. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/metadata.json +0 -21
  88. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/pair-plan.sample-fail.json +0 -214
  89. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/pair-plan.sample-pass.json +0 -223
  90. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/setup.sh +0 -5
  91. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/spec.md +0 -55
  92. package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/task.txt +0 -14
  93. package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/NOTES.md +0 -39
  94. package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/expected.json +0 -62
  95. package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/metadata.json +0 -10
  96. package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/setup.sh +0 -2
  97. package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/spec.md +0 -67
  98. package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/task.txt +0 -7
  99. package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/verifiers/error-order.js +0 -55
  100. package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/verifiers/priority-blocked.js +0 -48
  101. package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/NOTES.md +0 -35
  102. package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/expected.json +0 -56
  103. package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/metadata.json +0 -10
  104. package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/setup.sh +0 -2
  105. package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/spec.md +0 -64
  106. package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/task.txt +0 -7
  107. package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/verifiers/conflicting-duplicate.js +0 -34
  108. package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/verifiers/idempotent-close.js +0 -41
  109. package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/NOTES.md +0 -39
  110. package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/expected.json +0 -56
  111. package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/metadata.json +0 -10
  112. package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/setup.sh +0 -2
  113. package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/spec.md +0 -76
  114. package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/task.txt +0 -7
  115. package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/verifiers/priority-rollback.js +0 -64
  116. package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/verifiers/single-warehouse-fefo.js +0 -66
  117. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/NOTES.md +0 -40
  118. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/expected.json +0 -66
  119. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/metadata.json +0 -10
  120. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/setup.sh +0 -36
  121. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/spec.md +0 -71
  122. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/task.txt +0 -7
  123. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/verifiers/catalog-source.js +0 -57
  124. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/verifiers/exact-success.js +0 -63
  125. package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/verifiers/stock-error.js +0 -34
  126. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/NOTES.md +0 -31
  127. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/expected.json +0 -68
  128. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/metadata.json +0 -10
  129. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/setup.sh +0 -17
  130. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/spec.md +0 -68
  131. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/task.txt +0 -7
  132. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/verifiers/conflicting-duplicate.js +0 -29
  133. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/verifiers/exact-payout.js +0 -58
  134. package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/verifiers/rules-source.js +0 -56
  135. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/NOTES.md +0 -35
  136. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/expected-pair-plan-registry.json +0 -162
  137. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/expected.json +0 -67
  138. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/metadata.json +0 -19
  139. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/setup.sh +0 -4
  140. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/spec.md +0 -55
  141. package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/task.txt +0 -9
  142. package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/NOTES.md +0 -34
  143. package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/expected.json +0 -57
  144. package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/metadata.json +0 -10
  145. package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/setup.sh +0 -2
  146. package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/spec.md +0 -67
  147. package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/task.txt +0 -7
  148. package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/verifiers/duplicate-event-error.js +0 -35
  149. package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/verifiers/priority-transfer-rollback.js +0 -53
  150. package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/NOTES.md +0 -38
  151. package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/expected.json +0 -57
  152. package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/metadata.json +0 -10
  153. package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/setup.sh +0 -2
  154. package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/spec.md +0 -70
  155. package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/task.txt +0 -3
  156. package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/verifiers/duplicate-renewal-error.js +0 -42
  157. package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/verifiers/priority-credit-rollback.js +0 -70
  158. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/NOTES.md +0 -47
  159. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/expected.json +0 -57
  160. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/metadata.json +0 -10
  161. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/setup.sh +0 -6
  162. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/spec.md +0 -48
  163. package/benchmark/auto-resolve/fixtures/F4-web-browser-design/task.txt +0 -9
  164. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/NOTES.md +0 -45
  165. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/expected.json +0 -65
  166. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/metadata.json +0 -10
  167. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/setup.sh +0 -55
  168. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/spec.md +0 -48
  169. package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/task.txt +0 -7
  170. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/NOTES.md +0 -43
  171. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/expected.json +0 -77
  172. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/metadata.json +0 -10
  173. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/setup.sh +0 -4
  174. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/spec.md +0 -48
  175. package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/task.txt +0 -10
  176. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/NOTES.md +0 -57
  177. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/expected.json +0 -76
  178. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/metadata.json +0 -10
  179. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/setup.sh +0 -36
  180. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/spec.md +0 -45
  181. package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/task.txt +0 -7
  182. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/NOTES.md +0 -53
  183. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/expected.json +0 -63
  184. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/metadata.json +0 -10
  185. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/setup.sh +0 -4
  186. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/spec.md +0 -48
  187. package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/task.txt +0 -1
  188. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/NOTES.md +0 -105
  189. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/expected.json +0 -74
  190. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/metadata.json +0 -10
  191. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/setup.sh +0 -28
  192. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/spec.md +0 -59
  193. package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/task.txt +0 -5
  194. package/benchmark/auto-resolve/fixtures/SCHEMA.md +0 -188
  195. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/NOTES.md +0 -37
  196. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/RETIRED.md +0 -13
  197. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/expected.json +0 -56
  198. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/metadata.json +0 -10
  199. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/setup.sh +0 -18
  200. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/spec.md +0 -69
  201. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/task.txt +0 -7
  202. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/verifiers/exact-proration.js +0 -48
  203. package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/verifiers/rules-source-and-conflict.js +0 -79
  204. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/NOTES.md +0 -54
  205. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/RETIRED.md +0 -7
  206. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/expected.json +0 -67
  207. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/metadata.json +0 -10
  208. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/setup.sh +0 -2
  209. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/spec.md +0 -67
  210. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/task.txt +0 -5
  211. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/verifiers/policy-precedence.js +0 -72
  212. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/verifiers/validation-and-immutability.js +0 -43
  213. package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/verifiers/validation-boundary.js +0 -116
  214. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/NOTES.md +0 -35
  215. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/RETIRED.md +0 -12
  216. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/expected.json +0 -58
  217. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/metadata.json +0 -10
  218. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/setup.sh +0 -2
  219. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/spec.md +0 -73
  220. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/task.txt +0 -17
  221. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/verifiers/mixed-idempotent-settlement.js +0 -53
  222. package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/verifiers/rejection-boundaries.js +0 -74
  223. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/NOTES.md +0 -28
  224. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/RETIRED.md +0 -15
  225. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/expected.json +0 -57
  226. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/metadata.json +0 -10
  227. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/setup.sh +0 -50
  228. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/spec.md +0 -59
  229. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/task.txt +0 -9
  230. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/verifiers/ordered-settlement.js +0 -88
  231. package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/verifiers/reject-invalid.js +0 -45
  232. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/NOTES.md +0 -30
  233. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/RETIRED.md +0 -16
  234. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/expected.json +0 -64
  235. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/metadata.json +0 -10
  236. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/setup.sh +0 -21
  237. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/spec.md +0 -58
  238. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/task.txt +0 -9
  239. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/verifiers/dup-op.js +0 -54
  240. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/verifiers/priority-apply.js +0 -82
  241. package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/verifiers/rollback.js +0 -77
  242. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/NOTES.md +0 -99
  243. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/RETIRED.md +0 -18
  244. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/expected.json +0 -64
  245. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/metadata.json +0 -10
  246. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/setup.sh +0 -4
  247. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/spec.md +0 -61
  248. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/task.txt +0 -9
  249. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/verifiers/correctness-small.js +0 -135
  250. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/verifiers/scale.js +0 -100
  251. package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/verifiers/validation.js +0 -75
  252. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/NOTES.md +0 -93
  253. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/RETIRED.md +0 -16
  254. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/expected.json +0 -65
  255. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/metadata.json +0 -10
  256. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/setup.sh +0 -18
  257. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/spec.md +0 -66
  258. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/task.txt +0 -9
  259. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/verifiers/correctness-small.js +0 -84
  260. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/verifiers/scale.js +0 -184
  261. package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/verifiers/validation.js +0 -74
  262. package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/NOTES.md +0 -60
  263. package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/RETIRED.md +0 -29
  264. package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/expected.json +0 -73
  265. package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/metadata.json +0 -10
  266. package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/setup.sh +0 -28
  267. package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/spec.md +0 -58
  268. package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/task.txt +0 -5
  269. package/benchmark/auto-resolve/fixtures/test-repo/README.md +0 -12
  270. package/benchmark/auto-resolve/fixtures/test-repo/bin/cli.js +0 -63
  271. package/benchmark/auto-resolve/fixtures/test-repo/package-lock.json +0 -823
  272. package/benchmark/auto-resolve/fixtures/test-repo/package.json +0 -22
  273. package/benchmark/auto-resolve/fixtures/test-repo/playwright.config.js +0 -17
  274. package/benchmark/auto-resolve/fixtures/test-repo/server/index.js +0 -37
  275. package/benchmark/auto-resolve/fixtures/test-repo/tests/cli.test.js +0 -25
  276. package/benchmark/auto-resolve/fixtures/test-repo/tests/server.test.js +0 -58
  277. package/benchmark/auto-resolve/fixtures/test-repo/web/index.html +0 -37
  278. package/benchmark/auto-resolve/results/20260507-f10-f11-tier1-full-pipeline/headroom-gate.json +0 -25
  279. package/benchmark/auto-resolve/results/20260507-f10-f11-tier1-full-pipeline/headroom-gate.md +0 -10
  280. package/benchmark/auto-resolve/results/20260508-f22-exact-error-headroom/headroom-gate.json +0 -18
  281. package/benchmark/auto-resolve/results/20260508-f22-exact-error-headroom/headroom-gate.md +0 -9
  282. package/benchmark/auto-resolve/results/20260508-f26-headroom/headroom-gate.json +0 -18
  283. package/benchmark/auto-resolve/results/20260508-f26-headroom/headroom-gate.md +0 -9
  284. package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F16-cli-quote-tax-rules/l2_risk_probes/result.json +0 -28
  285. package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F23-cli-fulfillment-wave/l2_risk_probes/result.json +0 -28
  286. package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F25-cli-cart-promotion-rules/l2_risk_probes/result.json +0 -30
  287. package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/full-pipeline-pair-gate.json +0 -82
  288. package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/full-pipeline-pair-gate.md +0 -18
  289. package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/headroom-gate.json +0 -46
  290. package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/headroom-gate.md +0 -17
  291. package/benchmark/auto-resolve/results/20260511-f12-webhook-headroom/headroom-gate.json +0 -28
  292. package/benchmark/auto-resolve/results/20260511-f12-webhook-headroom/headroom-gate.md +0 -15
  293. package/benchmark/auto-resolve/results/20260511-f15-concurrency-headroom/headroom-gate.json +0 -28
  294. package/benchmark/auto-resolve/results/20260511-f15-concurrency-headroom/headroom-gate.md +0 -15
  295. package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/F21-cli-scheduler-priority/l2_risk_probes/result.json +0 -32
  296. package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/full-pipeline-pair-gate.json +0 -44
  297. package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/full-pipeline-pair-gate.md +0 -16
  298. package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/headroom-gate.json +0 -18
  299. package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/headroom-gate.md +0 -9
  300. package/benchmark/auto-resolve/results/20260511-f3-http-error-headroom/headroom-gate.json +0 -28
  301. package/benchmark/auto-resolve/results/20260511-f3-http-error-headroom/headroom-gate.md +0 -15
  302. package/benchmark/auto-resolve/results/20260512-f2-medium-headroom/headroom-gate.json +0 -28
  303. package/benchmark/auto-resolve/results/20260512-f2-medium-headroom/headroom-gate.md +0 -15
  304. package/benchmark/auto-resolve/results/20260512-f31-seat-rebalance-headroom/headroom-gate.json +0 -28
  305. package/benchmark/auto-resolve/results/20260512-f31-seat-rebalance-headroom/headroom-gate.md +0 -15
  306. package/benchmark/auto-resolve/results/20260512-f32-subscription-renewal-headroom/headroom-gate.json +0 -28
  307. package/benchmark/auto-resolve/results/20260512-f32-subscription-renewal-headroom/headroom-gate.md +0 -15
  308. package/benchmark/auto-resolve/results/20260512-f4-web-headroom/headroom-gate.json +0 -28
  309. package/benchmark/auto-resolve/results/20260512-f4-web-headroom/headroom-gate.md +0 -15
  310. package/benchmark/auto-resolve/results/20260512-f5-fixloop-headroom/headroom-gate.json +0 -28
  311. package/benchmark/auto-resolve/results/20260512-f5-fixloop-headroom/headroom-gate.md +0 -15
  312. package/benchmark/auto-resolve/results/20260512-f6-checksum-headroom/headroom-gate.json +0 -28
  313. package/benchmark/auto-resolve/results/20260512-f6-checksum-headroom/headroom-gate.md +0 -15
  314. package/benchmark/auto-resolve/results/20260512-f7-scope-headroom/headroom-gate.json +0 -28
  315. package/benchmark/auto-resolve/results/20260512-f7-scope-headroom/headroom-gate.md +0 -15
  316. package/benchmark/auto-resolve/results/20260512-f9-e2e-headroom/headroom-gate.json +0 -28
  317. package/benchmark/auto-resolve/results/20260512-f9-e2e-headroom/headroom-gate.md +0 -15
  318. package/benchmark/auto-resolve/run-real-benchmark.md +0 -303
  319. package/benchmark/auto-resolve/scripts/audit-headroom-rejections.py +0 -441
  320. package/benchmark/auto-resolve/scripts/audit-pair-evidence.py +0 -1256
  321. package/benchmark/auto-resolve/scripts/build-pair-eligible-manifest.py +0 -306
  322. package/benchmark/auto-resolve/scripts/check-f9-artifacts.py +0 -268
  323. package/benchmark/auto-resolve/scripts/collect-swebench-predictions.py +0 -108
  324. package/benchmark/auto-resolve/scripts/compile-report.py +0 -493
  325. package/benchmark/auto-resolve/scripts/fetch-swebench-instances.py +0 -129
  326. package/benchmark/auto-resolve/scripts/frozen-verify-gate.py +0 -434
  327. package/benchmark/auto-resolve/scripts/full-pipeline-pair-gate.py +0 -612
  328. package/benchmark/auto-resolve/scripts/headroom-gate.py +0 -378
  329. package/benchmark/auto-resolve/scripts/iter-0033c-compare.py +0 -683
  330. package/benchmark/auto-resolve/scripts/iter-0033c-l1-summary.py +0 -97
  331. package/benchmark/auto-resolve/scripts/judge-opus-pass.sh +0 -542
  332. package/benchmark/auto-resolve/scripts/judge.sh +0 -565
  333. package/benchmark/auto-resolve/scripts/oracle-scope-tier-a.py +0 -256
  334. package/benchmark/auto-resolve/scripts/oracle-scope-tier-b.py +0 -287
  335. package/benchmark/auto-resolve/scripts/oracle-test-fidelity.py +0 -328
  336. package/benchmark/auto-resolve/scripts/pair-candidate-frontier.py +0 -469
  337. package/benchmark/auto-resolve/scripts/pair-plan-idgen.py +0 -401
  338. package/benchmark/auto-resolve/scripts/pair-plan-lint.py +0 -475
  339. package/benchmark/auto-resolve/scripts/pair-rejected-fixtures.sh +0 -103
  340. package/benchmark/auto-resolve/scripts/pair_evidence_contract.py +0 -270
  341. package/benchmark/auto-resolve/scripts/prepare-swebench-frozen-case.py +0 -273
  342. package/benchmark/auto-resolve/scripts/prepare-swebench-frozen-corpus.py +0 -148
  343. package/benchmark/auto-resolve/scripts/prepare-swebench-solver-worktree.py +0 -210
  344. package/benchmark/auto-resolve/scripts/recent-benchmark-summary.py +0 -232
  345. package/benchmark/auto-resolve/scripts/run-fixture.sh +0 -1024
  346. package/benchmark/auto-resolve/scripts/run-frozen-verify-pair.sh +0 -683
  347. package/benchmark/auto-resolve/scripts/run-full-pipeline-pair-candidate.sh +0 -458
  348. package/benchmark/auto-resolve/scripts/run-headroom-candidate.sh +0 -336
  349. package/benchmark/auto-resolve/scripts/run-iter-0033c.sh +0 -208
  350. package/benchmark/auto-resolve/scripts/run-suite.sh +0 -251
  351. package/benchmark/auto-resolve/scripts/run-swebench-frozen-corpus.sh +0 -310
  352. package/benchmark/auto-resolve/scripts/run-swebench-solver-batch.sh +0 -257
  353. package/benchmark/auto-resolve/scripts/ship-gate.py +0 -391
  354. package/benchmark/auto-resolve/scripts/solo-ceiling-avoidance.py +0 -53
  355. package/benchmark/auto-resolve/scripts/solo-headroom-hypothesis.py +0 -77
  356. package/benchmark/auto-resolve/scripts/swebench-frozen-matrix.py +0 -478
  357. package/benchmark/auto-resolve/scripts/test-audit-headroom-rejections.sh +0 -288
  358. package/benchmark/auto-resolve/scripts/test-audit-pair-evidence.sh +0 -1672
  359. package/benchmark/auto-resolve/scripts/test-benchmark-arg-parsing.sh +0 -1015
  360. package/benchmark/auto-resolve/scripts/test-build-pair-eligible-manifest.sh +0 -491
  361. package/benchmark/auto-resolve/scripts/test-check-f9-artifacts.sh +0 -91
  362. package/benchmark/auto-resolve/scripts/test-frozen-verify-gate.sh +0 -517
  363. package/benchmark/auto-resolve/scripts/test-full-pipeline-pair-gate.sh +0 -610
  364. package/benchmark/auto-resolve/scripts/test-headroom-gate.sh +0 -401
  365. package/benchmark/auto-resolve/scripts/test-iter-0033c-compare.sh +0 -525
  366. package/benchmark/auto-resolve/scripts/test-iter-0033c-l1-summary.sh +0 -254
  367. package/benchmark/auto-resolve/scripts/test-lint-fixtures.sh +0 -580
  368. package/benchmark/auto-resolve/scripts/test-pair-candidate-frontier.sh +0 -591
  369. package/benchmark/auto-resolve/scripts/test-run-full-pipeline-pair-candidate.sh +0 -497
  370. package/benchmark/auto-resolve/scripts/test-run-headroom-candidate.sh +0 -401
  371. package/benchmark/auto-resolve/scripts/test-run-swebench-solver-batch.sh +0 -111
  372. package/benchmark/auto-resolve/scripts/test-ship-gate.sh +0 -1189
  373. package/benchmark/auto-resolve/scripts/test-swebench-frozen-case.sh +0 -1221
  374. package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/NOTES.md +0 -28
  375. package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/expected.json +0 -63
  376. package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/metadata.json +0 -10
  377. package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/setup.sh +0 -3
  378. package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/spec.md +0 -47
  379. package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/task.txt +0 -1
  380. package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/NOTES.md +0 -34
  381. package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/expected.json +0 -53
  382. package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/metadata.json +0 -10
  383. package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/setup.sh +0 -3
  384. package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/spec.md +0 -50
  385. package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/task.txt +0 -1
  386. package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/verifiers/duplicate-order-error.js +0 -27
  387. package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/verifiers/priority-stock-reservation.js +0 -44
  388. package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/NOTES.md +0 -34
  389. package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/expected.json +0 -55
  390. package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/metadata.json +0 -10
  391. package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/setup.sh +0 -3
  392. package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/spec.md +0 -52
  393. package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/task.txt +0 -1
  394. package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/verifiers/duplicate-ticket-error.js +0 -29
  395. package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/verifiers/priority-agent-assignment.js +0 -48
  396. package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/NOTES.md +0 -34
  397. package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/expected.json +0 -55
  398. package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/metadata.json +0 -10
  399. package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/setup.sh +0 -3
  400. package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/spec.md +0 -55
  401. package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/task.txt +0 -1
  402. package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/verifiers/duplicate-return-error.js +0 -43
  403. package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/verifiers/priority-return-routing.js +0 -70
  404. package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/NOTES.md +0 -37
  405. package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/expected.json +0 -54
  406. package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/metadata.json +0 -10
  407. package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/setup.sh +0 -3
  408. package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/spec.md +0 -59
  409. package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/task.txt +0 -1
  410. package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/verifiers/credit-ledger-priority.js +0 -98
  411. package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/verifiers/duplicate-charge-error.js +0 -38
  412. package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/NOTES.md +0 -36
  413. package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/expected.json +0 -56
  414. package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/metadata.json +0 -10
  415. package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/setup.sh +0 -3
  416. package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/spec.md +0 -59
  417. package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/task.txt +0 -1
  418. package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/verifiers/duplicate-refund-error.js +0 -41
  419. package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/verifiers/priority-refund-ledger.js +0 -65
  420. package/config/skills/_shared/pair-plan-schema.md +0 -298
  421. package/scripts/lint-fixtures.sh +0 -352
  422. package/scripts/lint-shadow-fixtures.sh +0 -58
  423. package/scripts/lint-skills.sh +0 -4265
  424. package/scripts/test-owner-phases.py +0 -193
@@ -1,336 +0,0 @@
1
- #!/usr/bin/env bash
2
- # run-headroom-candidate.sh — calibrate candidate fixtures for L2/pair headroom.
3
- #
4
- # Runs only the arms needed by headroom-gate.py: bare and solo_claude.
5
- # Then blind-judges those two arms and applies the mechanical gate.
6
-
7
- set -euo pipefail
8
-
9
- usage() {
10
- local code="${1:-1}"
11
- cat >&2 <<'EOF'
12
- usage: run-headroom-candidate.sh [options] <fixture> [<fixture> ...]
13
-
14
- Options:
15
- --run-id ID
16
- --bare-max N (default: 60)
17
- --solo-max N (default: 80)
18
- --min-bare-headroom N (default: 5)
19
- --min-solo-headroom N (default: 5)
20
- --min-fixtures N (default: 2)
21
- --allow-rejected-fixtures
22
- allow rejected/ceiling fixtures for diagnostics only
23
- --dry-run validate args/fixtures and print replay command only
24
- EOF
25
- exit "$code"
26
- }
27
-
28
- require_value() {
29
- local flag="$1"
30
- local value="${2:-}"
31
- if [ -z "$value" ] || [[ "$value" == --* ]]; then
32
- echo "$flag requires a value" >&2
33
- exit 1
34
- fi
35
- }
36
-
37
- RUN_ID=""
38
- BARE_MAX=60
39
- SOLO_MAX=80
40
- MIN_BARE_HEADROOM=5
41
- MIN_SOLO_HEADROOM=5
42
- MIN_FIXTURES=2
43
- ALLOW_REJECTED_FIXTURES=0
44
- DRY_RUN=0
45
- FIXTURES=()
46
- while [ $# -gt 0 ]; do
47
- case "$1" in
48
- --run-id) require_value "$1" "${2:-}"; RUN_ID="$2"; shift 2;;
49
- --bare-max) require_value "$1" "${2:-}"; BARE_MAX="$2"; shift 2;;
50
- --solo-max) require_value "$1" "${2:-}"; SOLO_MAX="$2"; shift 2;;
51
- --min-bare-headroom) require_value "$1" "${2:-}"; MIN_BARE_HEADROOM="$2"; shift 2;;
52
- --min-solo-headroom) require_value "$1" "${2:-}"; MIN_SOLO_HEADROOM="$2"; shift 2;;
53
- --min-fixtures) require_value "$1" "${2:-}"; MIN_FIXTURES="$2"; shift 2;;
54
- --allow-rejected-fixtures) ALLOW_REJECTED_FIXTURES=1; shift;;
55
- --dry-run) DRY_RUN=1; shift;;
56
- -h|--help) usage 0;;
57
- [FS][0-9]*) FIXTURES+=("$1"); shift;;
58
- *) echo "unknown arg: $1" >&2; usage;;
59
- esac
60
- done
61
-
62
- for threshold in BARE_MAX SOLO_MAX MIN_BARE_HEADROOM MIN_SOLO_HEADROOM MIN_FIXTURES; do
63
- value="${!threshold}"
64
- case "$threshold" in
65
- BARE_MAX) flag="bare-max" ;;
66
- SOLO_MAX) flag="solo-max" ;;
67
- MIN_BARE_HEADROOM) flag="min-bare-headroom" ;;
68
- MIN_SOLO_HEADROOM) flag="min-solo-headroom" ;;
69
- MIN_FIXTURES) flag="min-fixtures" ;;
70
- esac
71
- if [[ ! "$value" =~ ^[0-9]+$ ]]; then
72
- echo "--$flag must be an integer: $value" >&2
73
- exit 1
74
- fi
75
- done
76
- if [ "$MIN_FIXTURES" -lt 1 ]; then
77
- echo "--min-fixtures must be >= 1" >&2
78
- exit 1
79
- fi
80
- if [ "$MIN_BARE_HEADROOM" -lt 0 ]; then
81
- echo "--min-bare-headroom must be >= 0" >&2
82
- exit 1
83
- fi
84
- if [ "$MIN_SOLO_HEADROOM" -lt 0 ]; then
85
- echo "--min-solo-headroom must be >= 0" >&2
86
- exit 1
87
- fi
88
-
89
- [ ${#FIXTURES[@]} -gt 0 ] || usage
90
-
91
- BENCH_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
92
- REPO_ROOT="$(cd "$BENCH_ROOT/../.." && pwd)"
93
- source "$BENCH_ROOT/scripts/pair-rejected-fixtures.sh"
94
- if ! declare -F rejected_pair_fixture_reason >/dev/null; then
95
- echo "rejected fixture registry must define rejected_pair_fixture_reason" >&2
96
- exit 1
97
- fi
98
-
99
- if [ -z "$RUN_ID" ]; then
100
- TS=$(date -u +%Y%m%dT%H%M%SZ)
101
- SHA=$(git -C "$REPO_ROOT" rev-parse --short HEAD 2>/dev/null || echo nogit)
102
- RUN_ID="${TS}-${SHA}-headroom"
103
- fi
104
-
105
- print_command() {
106
- local cmd
107
- if [ "${DEVLYN_BENCHMARK_CLI_SUBCOMMAND:-}" = "headroom" ]; then
108
- cmd=(npx devlyn-cli benchmark headroom --run-id "$RUN_ID")
109
- else
110
- cmd=(bash "$0" --run-id "$RUN_ID")
111
- fi
112
- cmd+=(--bare-max "$BARE_MAX")
113
- cmd+=(--solo-max "$SOLO_MAX")
114
- cmd+=(--min-bare-headroom "$MIN_BARE_HEADROOM")
115
- cmd+=(--min-solo-headroom "$MIN_SOLO_HEADROOM")
116
- cmd+=(--min-fixtures "$MIN_FIXTURES")
117
- [ "$ALLOW_REJECTED_FIXTURES" -eq 0 ] || cmd+=(--allow-rejected-fixtures)
118
- [ "$DRY_RUN" -eq 0 ] || cmd+=(--dry-run)
119
- cmd+=("${FIXTURES[@]}")
120
- printf 'Command: '
121
- printf '%q ' "${cmd[@]}"
122
- printf '\n'
123
- }
124
-
125
- fixture_exists() {
126
- local fid="$1"
127
- [ -d "$BENCH_ROOT/fixtures/$fid" ] || [ -d "$BENCH_ROOT/shadow-fixtures/$fid" ]
128
- }
129
-
130
- fixture_dir() {
131
- local fid="$1"
132
- if [ -d "$BENCH_ROOT/fixtures/$fid" ]; then
133
- printf '%s\n' "$BENCH_ROOT/fixtures/$fid"
134
- else
135
- printf '%s\n' "$BENCH_ROOT/shadow-fixtures/$fid"
136
- fi
137
- }
138
-
139
- is_shadow_fixture() {
140
- local fid="$1"
141
- [ -d "$BENCH_ROOT/shadow-fixtures/$fid" ]
142
- }
143
-
144
- retired_fixture_exists() {
145
- local fid="$1"
146
- [ -d "$BENCH_ROOT/fixtures/retired/$fid" ]
147
- }
148
-
149
- fixture_smoke_only() {
150
- local fid="$1"
151
- [[ "$fid" == S1 || "$fid" == S1-* ]]
152
- }
153
-
154
- fixture_category() {
155
- local dir="$1"
156
- python3 - "$dir/metadata.json" <<'PY'
157
- import json
158
- import sys
159
-
160
- try:
161
- with open(sys.argv[1], encoding="utf-8") as handle:
162
- print(json.load(handle).get("category", ""))
163
- except FileNotFoundError:
164
- print("")
165
- PY
166
- }
167
-
168
- fixture_has_solo_headroom_hypothesis() {
169
- local dir="$1"
170
- python3 "$BENCH_ROOT/scripts/solo-headroom-hypothesis.py" --expected-json "$dir/expected.json" "$dir/spec.md"
171
- }
172
-
173
- fixture_has_solo_ceiling_avoidance_note() {
174
- local dir="$1"
175
- python3 "$BENCH_ROOT/scripts/solo-ceiling-avoidance.py" "$dir/NOTES.md"
176
- }
177
-
178
- fixture_has_pair_evidence() {
179
- local fid="$1"
180
- python3 - "$BENCH_ROOT/results" "$fid" <<'PY'
181
- import json
182
- import pathlib
183
- import sys
184
-
185
- results = pathlib.Path(sys.argv[1])
186
- fixture = sys.argv[2]
187
- if not results.is_dir():
188
- sys.exit(1)
189
- for path in results.glob("*/full-pipeline-pair-gate.json"):
190
- try:
191
- data = json.loads(path.read_text(encoding="utf-8"))
192
- except (OSError, json.JSONDecodeError):
193
- continue
194
- if data.get("verdict") != "PASS":
195
- continue
196
- rows = data.get("rows")
197
- if not isinstance(rows, list):
198
- continue
199
- for row in rows:
200
- if isinstance(row, dict) and row.get("fixture") == fixture and row.get("status") == "PASS":
201
- sys.exit(0)
202
- sys.exit(1)
203
- PY
204
- }
205
-
206
- validate_fixtures() {
207
- local missing=0
208
- local fid reason dir category
209
- for fid in "${FIXTURES[@]}"; do
210
- if ! fixture_exists "$fid"; then
211
- if retired_fixture_exists "$fid"; then
212
- echo "fixture is retired and is not rerun by pair-candidate runners: $fid. Use preserved results/docs for historical replay." >&2
213
- missing=1
214
- continue
215
- fi
216
- echo "fixture not found in fixtures/ or shadow-fixtures/: $fid" >&2
217
- missing=1
218
- continue
219
- fi
220
- if [ "$DRY_RUN" -eq 0 ] && fixture_smoke_only "$fid"; then
221
- echo "fixture is smoke-only and cannot run providers: $fid. Use --dry-run for runner/package validation." >&2
222
- missing=1
223
- continue
224
- fi
225
- reason="$(rejected_pair_fixture_reason "$fid" || true)"
226
- if [ "$ALLOW_REJECTED_FIXTURES" -eq 0 ]; then
227
- if [ -n "$reason" ]; then
228
- echo "fixture rejected for pair-candidate runs: $fid ($reason). Use --allow-rejected-fixtures for diagnostics only." >&2
229
- missing=1
230
- continue
231
- fi
232
- fi
233
- if [ -z "$reason" ]; then
234
- dir="$(fixture_dir "$fid")"
235
- category="$(fixture_category "$dir")"
236
- if [ "$category" = "high-risk" ] && ! fixture_has_pair_evidence "$fid"; then
237
- if ! fixture_has_solo_headroom_hypothesis "$dir"; then
238
- echo "fixture spec.md needs a solo-headroom hypothesis with solo_claude miss and observable command from expected.json before provider spend: $fid" >&2
239
- missing=1
240
- fi
241
- if is_shadow_fixture "$fid" && ! fixture_has_solo_ceiling_avoidance_note "$dir"; then
242
- echo "shadow fixture NOTES.md needs ## Solo ceiling avoidance with solo_claude, a rejected/solo-saturated control comparison, and headroom reasoning before provider spend: $fid" >&2
243
- missing=1
244
- fi
245
- fi
246
- fi
247
- done
248
- [ "$missing" -eq 0 ] || exit 1
249
- }
250
-
251
- echo ""
252
- echo "═══ Headroom Candidate Run ═══"
253
- echo "Run-id: $RUN_ID"
254
- echo "Fixtures: ${FIXTURES[*]}"
255
- echo "Arms: bare solo_claude"
256
- echo "Gate: bare <= $BARE_MAX (headroom >= $MIN_BARE_HEADROOM), solo_claude <= $SOLO_MAX (headroom >= $MIN_SOLO_HEADROOM), baseline evidence-complete, min fixtures $MIN_FIXTURES"
257
- [ "$DRY_RUN" -eq 0 ] || echo "Mode: DRY RUN (no model/provider invocations)"
258
- print_command
259
- if [ ${#FIXTURES[@]} -lt "$MIN_FIXTURES" ]; then
260
- echo "Gate: will FAIL set gate unless at least $MIN_FIXTURES fixtures are supplied"
261
- fi
262
- echo ""
263
-
264
- validate_fixtures
265
-
266
- if [ "$DRY_RUN" -eq 1 ] && [ "${#FIXTURES[@]}" -lt "$MIN_FIXTURES" ]; then
267
- echo "[headroom] DRY RUN failed — ${#FIXTURES[@]} fixture(s) supplied, --min-fixtures requires $MIN_FIXTURES." >&2
268
- exit 1
269
- fi
270
-
271
- if [ "$DRY_RUN" -eq 1 ]; then
272
- echo "[headroom] DRY RUN complete — fixtures resolved, no arms or judges executed."
273
- exit 0
274
- fi
275
-
276
- SRC_SKILLS="$REPO_ROOT/config/skills"
277
- DST_SKILLS="$REPO_ROOT/.claude/skills"
278
- mkdir -p "$DST_SKILLS"
279
- mirrored=0
280
- for src_dir in "$SRC_SKILLS"/*/; do
281
- [ -d "$src_dir" ] || continue
282
- name=$(basename "$src_dir")
283
- case "$name" in
284
- devlyn:auto-resolve-workspace|devlyn:ideate-workspace|preflight-workspace|roadmap-archival-workspace)
285
- continue ;;
286
- esac
287
- staging="$DST_SKILLS/.${name}.staging"
288
- rm -rf "$staging"
289
- cp -R "$src_dir" "$staging"
290
- rm -rf "$DST_SKILLS/$name"
291
- mv "$staging" "$DST_SKILLS/$name"
292
- mirrored=$((mirrored + 1))
293
- done
294
- echo "[headroom] mirrored $mirrored committed skill(s): config/skills/ -> .claude/skills/"
295
-
296
- for fid in "${FIXTURES[@]}"; do
297
- echo "[headroom] ► $fid / bare"
298
- bash "$BENCH_ROOT/scripts/run-fixture.sh" \
299
- --fixture "$fid" --arm bare --run-id "$RUN_ID" \
300
- || echo "[headroom] ✗ $fid / bare (arm failure tolerated; artifacts may still exist)"
301
-
302
- echo "[headroom] ► $fid / solo_claude"
303
- bash "$BENCH_ROOT/scripts/run-fixture.sh" \
304
- --fixture "$fid" --arm solo_claude --run-id "$RUN_ID" \
305
- || echo "[headroom] ✗ $fid / solo_claude (arm failure tolerated; artifacts may still exist)"
306
-
307
- echo "[headroom] ► judge $fid"
308
- bash "$BENCH_ROOT/scripts/judge.sh" --fixture "$fid" --run-id "$RUN_ID" \
309
- || echo "[headroom] ✗ judge failed for $fid"
310
- done
311
-
312
- echo ""
313
- set +e
314
- python3 "$BENCH_ROOT/scripts/headroom-gate.py" \
315
- --run-id "$RUN_ID" \
316
- --bare-max "$BARE_MAX" \
317
- --solo-max "$SOLO_MAX" \
318
- --min-bare-headroom "$MIN_BARE_HEADROOM" \
319
- --min-solo-headroom "$MIN_SOLO_HEADROOM" \
320
- --min-fixtures "$MIN_FIXTURES" \
321
- --out-json "$BENCH_ROOT/results/$RUN_ID/headroom-gate.json" \
322
- --out-md "$BENCH_ROOT/results/$RUN_ID/headroom-gate.md"
323
- GATE_EXIT=$?
324
- set -e
325
-
326
- if [ -f "$BENCH_ROOT/results/$RUN_ID/headroom-gate.md" ]; then
327
- cat "$BENCH_ROOT/results/$RUN_ID/headroom-gate.md"
328
- else
329
- echo "[headroom] headroom gate report missing: $BENCH_ROOT/results/$RUN_ID/headroom-gate.md" >&2
330
- fi
331
- if [ "$GATE_EXIT" -eq 0 ]; then
332
- echo "[headroom] headroom gate passed — candidate set accepted."
333
- else
334
- echo "[headroom] headroom gate failed — candidate set rejected."
335
- fi
336
- exit "$GATE_EXIT"
@@ -1,208 +0,0 @@
1
- #!/usr/bin/env bash
2
- # run-iter-0033c.sh — orchestrate the iter-0033c suite (NEW L2 vs NEW L1).
3
- #
4
- # Codex R0.5-infra design: bypass run-suite.sh + ship-gate.py + compile-report.py
5
- # (those enforce variant/bare semantics that don't apply here). Call run-fixture.sh
6
- # directly per fixture per arm; per-fixture interleaving for fail-early on hard-floor
7
- # violations (Codex R0.5-infra Q4).
8
- #
9
- # Per Mission 1: serial only, no parallel-fleet.
10
- #
11
- # Usage:
12
- # run-iter-0033c.sh --label <label> [--fixtures F1,F2,...] [--c1-summary <path>] [--f9-judge <path>]
13
- # [--manifest-out <path>] [--results-out-dir <path>] [--skip-judge]
14
- #
15
- # Pre-flight: smoke 1b (codex availability) — fail-fast.
16
- # Arms per fixture:
17
- # - All fixtures: solo_claude (L1 rerun) + l2_gated (L2 natural triggers)
18
- # - Pair-eligible (per manifest): also l2_forced (L2 diagnostic)
19
- # After arms: judge.sh per fixture; manifest build; iter-0033c-compare.py.
20
- set -euo pipefail
21
-
22
- usage() {
23
- cat >&2 <<EOF
24
- usage: $0 --label <label>
25
- [--fixtures F1,F2,F3,F4,F5,F6,F7,F8,F9]
26
- [--c1-summary <path>] # default: benchmark/auto-resolve/results/3bc86dd-iter0033c1-new-20260501T004229Z/summary.json
27
- [--f9-judge <path>] # default: benchmark/auto-resolve/results/4e3d89a-iter-0033a-f9-smoke3-20260430T232747Z/F9-e2e-ideate-to-resolve/judge.json
28
- [--results-root <path>] # default: benchmark/auto-resolve/results
29
- [--skip-judge] # skip judge.sh (re-runnable post-hoc)
30
- EOF
31
- exit 1
32
- }
33
-
34
- LABEL=""
35
- FIXTURES_CSV="F1,F2,F3,F4,F5,F6,F7,F8,F9"
36
- C1_SUMMARY="benchmark/auto-resolve/results/3bc86dd-iter0033c1-new-20260501T004229Z/summary.json"
37
- F9_JUDGE="benchmark/auto-resolve/results/4e3d89a-iter-0033a-f9-smoke3-20260430T232747Z/F9-e2e-ideate-to-resolve/judge.json"
38
- RESULTS_ROOT="benchmark/auto-resolve/results"
39
- SKIP_JUDGE=0
40
- while [ $# -gt 0 ]; do
41
- case "$1" in
42
- --label) LABEL="$2"; shift 2;;
43
- --fixtures) FIXTURES_CSV="$2"; shift 2;;
44
- --c1-summary) C1_SUMMARY="$2"; shift 2;;
45
- --f9-judge) F9_JUDGE="$2"; shift 2;;
46
- --results-root) RESULTS_ROOT="$2"; shift 2;;
47
- --skip-judge) SKIP_JUDGE=1; shift;;
48
- *) usage;;
49
- esac
50
- done
51
- [ -n "$LABEL" ] || usage
52
-
53
- REPO_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
54
- cd "$REPO_ROOT"
55
-
56
- # --- Smoke 1b: codex availability fail-fast ---
57
- echo "=== Smoke 1b: Codex availability ==="
58
- if ! command -v codex >/dev/null 2>&1; then
59
- echo "FAIL: codex not on PATH — iter-0033c L2 arms cannot run" >&2
60
- exit 1
61
- fi
62
- echo "PASS: $(command -v codex) ($(codex --version 2>&1 | head -1))"
63
-
64
- # --- Mirror committed skills to .claude/skills (parity with run-suite.sh:111-141) ---
65
- # Iteration commits land in config/skills/; the variant-arm runtime resolves
66
- # from .claude/skills/. Without this step, edits to SKILL.md / phase prompts /
67
- # _shared scripts (e.g. archive_run.py iter-0033c fix) silently run against the
68
- # stale mirror. UNSHIPPED list mirrors bin/devlyn.js:299-304.
69
- SRC_SKILLS="$REPO_ROOT/config/skills"
70
- DST_SKILLS="$REPO_ROOT/.claude/skills"
71
- mkdir -p "$DST_SKILLS"
72
- mirrored=0
73
- for src_dir in "$SRC_SKILLS"/*/; do
74
- [ -d "$src_dir" ] || continue
75
- name=$(basename "$src_dir")
76
- case "$name" in
77
- devlyn:auto-resolve-workspace|devlyn:ideate-workspace|preflight-workspace|roadmap-archival-workspace)
78
- continue ;;
79
- esac
80
- staging="$DST_SKILLS/.${name}.staging"
81
- rm -rf "$staging"
82
- cp -R "$src_dir" "$staging"
83
- rm -rf "$DST_SKILLS/$name"
84
- mv "$staging" "$DST_SKILLS/$name"
85
- mirrored=$((mirrored + 1))
86
- done
87
- echo "[run-iter-0033c] mirrored $mirrored committed skill(s): config/skills/ -> .claude/skills/"
88
-
89
- # --- Setup ---
90
- HEAD_SHA=$(git rev-parse --short HEAD)
91
- TS=$(date -u +%Y%m%dT%H%M%SZ)
92
- RUN_ID="${HEAD_SHA}-iter0033c-${LABEL}-${TS}"
93
- RESULTS_DIR="$RESULTS_ROOT/$RUN_ID"
94
- mkdir -p "$RESULTS_DIR"
95
- echo "[run-iter-0033c] RUN_ID=$RUN_ID"
96
- echo "[run-iter-0033c] RESULTS_DIR=$RESULTS_DIR"
97
-
98
- # --- Determine pair-eligible set from manifest input bundle ---
99
- # Pair eligibility is pre-registered from C1/F9 before any iter-0033c arms run.
100
- # The later L1 rerun summary is archived into the final manifest for provenance;
101
- # it must not change the arm-selection set after execution has begun.
102
- DRAFT_MANIFEST="$RESULTS_DIR/manifest-draft.json"
103
- python3 benchmark/auto-resolve/scripts/build-pair-eligible-manifest.py \
104
- --c1-summary "$C1_SUMMARY" \
105
- --f9-judge "$F9_JUDGE" \
106
- --l1-rerun-summary "$C1_SUMMARY" \
107
- --output "$DRAFT_MANIFEST"
108
- PAIR_ELIGIBLE=$(python3 - "$DRAFT_MANIFEST" "$REPO_ROOT/benchmark/auto-resolve/scripts" <<'PY'
109
- import pathlib
110
- import sys
111
-
112
- sys.path.insert(0, sys.argv[2])
113
- from pair_evidence_contract import loads_strict_json_object
114
-
115
- manifest = loads_strict_json_object(pathlib.Path(sys.argv[1]).read_text())
116
- fixtures = manifest.get("fixtures_pair_eligible")
117
- if not isinstance(fixtures, list) or not all(isinstance(item, str) for item in fixtures):
118
- raise SystemExit("manifest fixtures_pair_eligible must be a string array")
119
- print(" ".join(fixtures))
120
- PY
121
- )
122
- echo "[run-iter-0033c] pair-eligible: $PAIR_ELIGIBLE"
123
-
124
- # --- Per-fixture interleaved arm loop ---
125
- IFS=',' read -ra FIXTURES <<< "$FIXTURES_CSV"
126
- declare -a TIMINGS=()
127
- for short in "${FIXTURES[@]}"; do
128
- # Resolve short ID to canonical fixture dir name.
129
- case "$short" in
130
- F1) fx="F1-cli-trivial-flag";;
131
- F2) fx="F2-cli-medium-subcommand";;
132
- F3) fx="F3-backend-contract-risk";;
133
- F4) fx="F4-web-browser-design";;
134
- F5) fx="F5-fix-loop-red-green";;
135
- F6) fx="F6-dep-audit-native-module";;
136
- F7) fx="F7-out-of-scope-trap";;
137
- F8) fx="F8-known-limit-ambiguous";;
138
- F9) fx="F9-e2e-ideate-to-resolve";;
139
- *) echo "[run-iter-0033c] unknown fixture short id: $short" >&2; exit 1;;
140
- esac
141
- echo ""
142
- echo "=== Fixture $fx ==="
143
- ARMS=("solo_claude" "l2_gated")
144
- if [[ " $PAIR_ELIGIBLE " =~ " $short " ]]; then
145
- ARMS+=("l2_forced")
146
- fi
147
- for arm in "${ARMS[@]}"; do
148
- echo "[run-iter-0033c] $fx :: $arm START $(date -u +%FT%TZ)"
149
- arm_t0=$(date +%s)
150
- if ! bash benchmark/auto-resolve/scripts/run-fixture.sh \
151
- --fixture "$fx" --arm "$arm" \
152
- --run-id "$RUN_ID" --resolve-skill new \
153
- > "$RESULTS_DIR/${fx}-${arm}.log" 2>&1; then
154
- echo "[run-iter-0033c] $fx :: $arm FAILED — see $RESULTS_DIR/${fx}-${arm}.log"
155
- # Continue to next arm; full failure surface goes through compare.py gates.
156
- fi
157
- arm_t1=$(date +%s)
158
- elapsed=$((arm_t1 - arm_t0))
159
- TIMINGS+=("$fx:$arm:${elapsed}s")
160
- echo "[run-iter-0033c] $fx :: $arm END elapsed=${elapsed}s"
161
- done
162
-
163
- # Per-fixture judge (graded across ARMS_PRESENT)
164
- if [ "$SKIP_JUDGE" -eq 0 ]; then
165
- echo "[run-iter-0033c] $fx :: judge START"
166
- if ! bash benchmark/auto-resolve/scripts/judge.sh \
167
- --fixture "$fx" --run-id "$RUN_ID" \
168
- > "$RESULTS_DIR/${fx}-judge.log" 2>&1; then
169
- echo "[run-iter-0033c] $fx :: judge FAILED — see $RESULTS_DIR/${fx}-judge.log"
170
- fi
171
- echo "[run-iter-0033c] $fx :: judge END"
172
- fi
173
- done
174
-
175
- # --- Build L1 rerun summary from solo_claude arm result.json + judge.json ---
176
- L1_RERUN_SUMMARY="$RESULTS_DIR/l1-rerun-summary.json"
177
- python3 benchmark/auto-resolve/scripts/iter-0033c-l1-summary.py \
178
- --results-dir "$RESULTS_DIR" \
179
- --out "$L1_RERUN_SUMMARY" \
180
- --run-id "$RUN_ID" \
181
- --git-sha "$HEAD_SHA"
182
-
183
- # --- Build final manifest with real L1 rerun summary ---
184
- FINAL_MANIFEST="$RESULTS_DIR/iter-0033c-pair-eligible.json"
185
- python3 benchmark/auto-resolve/scripts/build-pair-eligible-manifest.py \
186
- --c1-summary "$C1_SUMMARY" \
187
- --f9-judge "$F9_JUDGE" \
188
- --l1-rerun-summary "$L1_RERUN_SUMMARY" \
189
- --output "$FINAL_MANIFEST"
190
-
191
- # --- Run iter-0033c gate compare ---
192
- GATES_JSON="$RESULTS_DIR/gates.json"
193
- GATES_MD="$RESULTS_DIR/gates.md"
194
- python3 benchmark/auto-resolve/scripts/iter-0033c-compare.py \
195
- --manifest "$FINAL_MANIFEST" \
196
- --results-dir "$RESULTS_DIR" \
197
- --work-dir-root /tmp \
198
- --run-id "$RUN_ID" \
199
- --out-json "$GATES_JSON" \
200
- --out-md "$GATES_MD" \
201
- || true # gates may FAIL — exit non-zero handled by inspecting gates.json
202
-
203
- echo ""
204
- echo "=== iter-0033c done ==="
205
- echo "RESULTS_DIR=$RESULTS_DIR"
206
- echo "MANIFEST=$FINAL_MANIFEST"
207
- echo "GATES=$GATES_MD"
208
- printf '\n--- per-arm wall ---\n%s\n' "$(printf '%s\n' "${TIMINGS[@]}")"