@cassiomc1/forgeloop 1.6.5 → 1.8.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 (727) hide show
  1. package/DOCS_INDEX.md +1 -0
  2. package/GUIDE_ROUTER.md +26 -1
  3. package/LOOP_ENGINEERING.md +48 -0
  4. package/ORCHESTRATOR_INTEGRATION.md +38 -0
  5. package/PROTOCOL_INTEGRATION.md +62 -0
  6. package/README.md +25 -0
  7. package/benchmarks/execution-profiles/README.md +62 -0
  8. package/benchmarks/execution-profiles/api-feature.json +18 -0
  9. package/benchmarks/execution-profiles/authentication-change.json +18 -0
  10. package/benchmarks/execution-profiles/documentation-correction.json +18 -0
  11. package/benchmarks/execution-profiles/infrastructure-release.json +18 -0
  12. package/benchmarks/execution-profiles/novatask-saas-landing-page.json +36 -0
  13. package/benchmarks/execution-profiles/results/aggregate/codex-quality-repeat5-20260831/api-feature.json +552 -0
  14. package/benchmarks/execution-profiles/results/aggregate/codex-quality-repeat5-20260831/authentication-change.json +552 -0
  15. package/benchmarks/execution-profiles/results/aggregate/codex-quality-repeat5-20260831/documentation-correction.json +558 -0
  16. package/benchmarks/execution-profiles/results/aggregate/codex-quality-repeat5-20260831/infrastructure-release.json +552 -0
  17. package/benchmarks/execution-profiles/results/aggregate/codex-quality-repeat5-20260831/novatask-saas-landing-page.json +558 -0
  18. package/benchmarks/execution-profiles/results/aggregate/codex-quality-repeat5-20260831/small-bug-fix.json +552 -0
  19. package/benchmarks/execution-profiles/results/aggregate/codex-quality-repeat5-20260831/static-landing-page.json +558 -0
  20. package/benchmarks/execution-profiles/results/aggregate/codex-quality-repeat5-20260831/summary.json +231 -0
  21. package/benchmarks/execution-profiles/results/aggregate/codex-repeat5-20260831/api-feature.json +552 -0
  22. package/benchmarks/execution-profiles/results/aggregate/codex-repeat5-20260831/authentication-change.json +552 -0
  23. package/benchmarks/execution-profiles/results/aggregate/codex-repeat5-20260831/documentation-correction.json +558 -0
  24. package/benchmarks/execution-profiles/results/aggregate/codex-repeat5-20260831/infrastructure-release.json +552 -0
  25. package/benchmarks/execution-profiles/results/aggregate/codex-repeat5-20260831/novatask-saas-landing-page.json +558 -0
  26. package/benchmarks/execution-profiles/results/aggregate/codex-repeat5-20260831/small-bug-fix.json +552 -0
  27. package/benchmarks/execution-profiles/results/aggregate/codex-repeat5-20260831/static-landing-page.json +558 -0
  28. package/benchmarks/execution-profiles/results/aggregate/codex-repeat5-20260831/summary.json +231 -0
  29. package/benchmarks/execution-profiles/results/aggregate/codex-tail-repeat20-20260831/api-feature.json +1624 -0
  30. package/benchmarks/execution-profiles/results/aggregate/codex-tail-repeat20-20260831/authentication-change.json +1619 -0
  31. package/benchmarks/execution-profiles/results/aggregate/codex-tail-repeat20-20260831/documentation-correction.json +1539 -0
  32. package/benchmarks/execution-profiles/results/aggregate/codex-tail-repeat20-20260831/infrastructure-release.json +1633 -0
  33. package/benchmarks/execution-profiles/results/aggregate/codex-tail-repeat20-20260831/novatask-saas-landing-page.json +1634 -0
  34. package/benchmarks/execution-profiles/results/aggregate/codex-tail-repeat20-20260831/small-bug-fix.json +1726 -0
  35. package/benchmarks/execution-profiles/results/aggregate/codex-tail-repeat20-20260831/static-landing-page.json +1625 -0
  36. package/benchmarks/execution-profiles/results/aggregate/codex-tail-repeat20-20260831/summary.json +826 -0
  37. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/direct/run-001.json +64 -0
  38. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/direct/run-002.json +64 -0
  39. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/direct/run-003.json +64 -0
  40. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/direct/run-004.json +64 -0
  41. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/direct/run-005.json +64 -0
  42. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopAdaptive/run-001.json +64 -0
  43. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopAdaptive/run-002.json +64 -0
  44. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopAdaptive/run-003.json +64 -0
  45. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopAdaptive/run-004.json +64 -0
  46. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopAdaptive/run-005.json +64 -0
  47. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopBalanced/run-001.json +64 -0
  48. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopBalanced/run-002.json +64 -0
  49. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopBalanced/run-003.json +64 -0
  50. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopBalanced/run-004.json +64 -0
  51. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/api-feature/forgeloopBalanced/run-005.json +64 -0
  52. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/direct/run-001.json +64 -0
  53. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/direct/run-002.json +64 -0
  54. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/direct/run-003.json +64 -0
  55. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/direct/run-004.json +64 -0
  56. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/direct/run-005.json +64 -0
  57. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopAdaptive/run-001.json +64 -0
  58. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopAdaptive/run-002.json +64 -0
  59. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopAdaptive/run-003.json +64 -0
  60. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopAdaptive/run-004.json +64 -0
  61. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopAdaptive/run-005.json +64 -0
  62. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopBalanced/run-001.json +64 -0
  63. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopBalanced/run-002.json +64 -0
  64. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopBalanced/run-003.json +64 -0
  65. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopBalanced/run-004.json +64 -0
  66. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/authentication-change/forgeloopBalanced/run-005.json +64 -0
  67. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/direct/run-001.json +64 -0
  68. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/direct/run-002.json +64 -0
  69. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/direct/run-003.json +64 -0
  70. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/direct/run-004.json +64 -0
  71. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/direct/run-005.json +64 -0
  72. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-001.json +64 -0
  73. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-002.json +64 -0
  74. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-003.json +64 -0
  75. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-004.json +64 -0
  76. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-005.json +64 -0
  77. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopBalanced/run-001.json +64 -0
  78. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopBalanced/run-002.json +64 -0
  79. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopBalanced/run-003.json +64 -0
  80. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopBalanced/run-004.json +64 -0
  81. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/documentation-correction/forgeloopBalanced/run-005.json +64 -0
  82. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/direct/run-001.json +64 -0
  83. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/direct/run-002.json +64 -0
  84. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/direct/run-003.json +64 -0
  85. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/direct/run-004.json +64 -0
  86. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/direct/run-005.json +64 -0
  87. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-001.json +64 -0
  88. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-002.json +64 -0
  89. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-003.json +64 -0
  90. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-004.json +64 -0
  91. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-005.json +64 -0
  92. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-001.json +64 -0
  93. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-002.json +64 -0
  94. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-003.json +64 -0
  95. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-004.json +64 -0
  96. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-005.json +64 -0
  97. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/direct/run-001.json +64 -0
  98. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/direct/run-002.json +64 -0
  99. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/direct/run-003.json +64 -0
  100. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/direct/run-004.json +64 -0
  101. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/direct/run-005.json +64 -0
  102. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-001.json +64 -0
  103. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-002.json +64 -0
  104. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-003.json +64 -0
  105. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-004.json +64 -0
  106. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-005.json +64 -0
  107. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-001.json +64 -0
  108. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-002.json +64 -0
  109. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-003.json +64 -0
  110. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-004.json +64 -0
  111. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-005.json +64 -0
  112. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/direct/run-001.json +64 -0
  113. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/direct/run-002.json +64 -0
  114. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/direct/run-003.json +64 -0
  115. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/direct/run-004.json +64 -0
  116. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/direct/run-005.json +64 -0
  117. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-001.json +64 -0
  118. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-002.json +64 -0
  119. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-003.json +64 -0
  120. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-004.json +64 -0
  121. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-005.json +64 -0
  122. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-001.json +64 -0
  123. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-002.json +64 -0
  124. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-003.json +64 -0
  125. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-004.json +64 -0
  126. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-005.json +64 -0
  127. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/direct/run-001.json +64 -0
  128. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/direct/run-002.json +64 -0
  129. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/direct/run-003.json +64 -0
  130. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/direct/run-004.json +64 -0
  131. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/direct/run-005.json +64 -0
  132. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-001.json +64 -0
  133. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-002.json +64 -0
  134. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-003.json +64 -0
  135. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-004.json +64 -0
  136. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-005.json +64 -0
  137. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopBalanced/run-001.json +64 -0
  138. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopBalanced/run-002.json +64 -0
  139. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopBalanced/run-003.json +64 -0
  140. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopBalanced/run-004.json +64 -0
  141. package/benchmarks/execution-profiles/results/raw/codex-quality-repeat5-20260831/static-landing-page/forgeloopBalanced/run-005.json +64 -0
  142. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/direct/run-001.json +64 -0
  143. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/direct/run-002.json +64 -0
  144. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/direct/run-003.json +64 -0
  145. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/direct/run-004.json +64 -0
  146. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/direct/run-005.json +64 -0
  147. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopAdaptive/run-001.json +64 -0
  148. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopAdaptive/run-002.json +64 -0
  149. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopAdaptive/run-003.json +64 -0
  150. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopAdaptive/run-004.json +64 -0
  151. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopAdaptive/run-005.json +64 -0
  152. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopBalanced/run-001.json +64 -0
  153. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopBalanced/run-002.json +64 -0
  154. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopBalanced/run-003.json +64 -0
  155. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopBalanced/run-004.json +64 -0
  156. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/api-feature/forgeloopBalanced/run-005.json +64 -0
  157. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/direct/run-001.json +64 -0
  158. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/direct/run-002.json +64 -0
  159. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/direct/run-003.json +64 -0
  160. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/direct/run-004.json +64 -0
  161. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/direct/run-005.json +64 -0
  162. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopAdaptive/run-001.json +64 -0
  163. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopAdaptive/run-002.json +64 -0
  164. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopAdaptive/run-003.json +64 -0
  165. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopAdaptive/run-004.json +64 -0
  166. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopAdaptive/run-005.json +64 -0
  167. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopBalanced/run-001.json +64 -0
  168. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopBalanced/run-002.json +64 -0
  169. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopBalanced/run-003.json +64 -0
  170. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopBalanced/run-004.json +64 -0
  171. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/authentication-change/forgeloopBalanced/run-005.json +64 -0
  172. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/direct/run-001.json +64 -0
  173. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/direct/run-002.json +64 -0
  174. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/direct/run-003.json +64 -0
  175. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/direct/run-004.json +64 -0
  176. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/direct/run-005.json +64 -0
  177. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-001.json +64 -0
  178. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-002.json +64 -0
  179. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-003.json +64 -0
  180. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-004.json +64 -0
  181. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopAdaptive/run-005.json +64 -0
  182. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopBalanced/run-001.json +64 -0
  183. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopBalanced/run-002.json +64 -0
  184. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopBalanced/run-003.json +64 -0
  185. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopBalanced/run-004.json +64 -0
  186. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/documentation-correction/forgeloopBalanced/run-005.json +64 -0
  187. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/direct/run-001.json +64 -0
  188. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/direct/run-002.json +64 -0
  189. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/direct/run-003.json +64 -0
  190. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/direct/run-004.json +64 -0
  191. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/direct/run-005.json +64 -0
  192. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-001.json +64 -0
  193. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-002.json +64 -0
  194. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-003.json +64 -0
  195. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-004.json +64 -0
  196. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopAdaptive/run-005.json +64 -0
  197. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-001.json +64 -0
  198. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-002.json +64 -0
  199. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-003.json +64 -0
  200. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-004.json +64 -0
  201. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/infrastructure-release/forgeloopBalanced/run-005.json +64 -0
  202. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/direct/run-001.json +64 -0
  203. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/direct/run-002.json +64 -0
  204. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/direct/run-003.json +64 -0
  205. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/direct/run-004.json +64 -0
  206. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/direct/run-005.json +64 -0
  207. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-001.json +64 -0
  208. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-002.json +64 -0
  209. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-003.json +64 -0
  210. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-004.json +64 -0
  211. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-005.json +64 -0
  212. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-001.json +64 -0
  213. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-002.json +64 -0
  214. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-003.json +64 -0
  215. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-004.json +64 -0
  216. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/novatask-saas-landing-page/forgeloopBalanced/run-005.json +64 -0
  217. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/direct/run-001.json +64 -0
  218. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/direct/run-002.json +64 -0
  219. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/direct/run-003.json +64 -0
  220. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/direct/run-004.json +64 -0
  221. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/direct/run-005.json +64 -0
  222. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-001.json +64 -0
  223. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-002.json +64 -0
  224. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-003.json +64 -0
  225. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-004.json +64 -0
  226. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopAdaptive/run-005.json +64 -0
  227. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-001.json +64 -0
  228. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-002.json +64 -0
  229. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-003.json +64 -0
  230. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-004.json +64 -0
  231. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/small-bug-fix/forgeloopBalanced/run-005.json +64 -0
  232. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/direct/run-001.json +64 -0
  233. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/direct/run-002.json +64 -0
  234. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/direct/run-003.json +64 -0
  235. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/direct/run-004.json +64 -0
  236. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/direct/run-005.json +64 -0
  237. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-001.json +64 -0
  238. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-002.json +64 -0
  239. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-003.json +64 -0
  240. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-004.json +64 -0
  241. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopAdaptive/run-005.json +64 -0
  242. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopBalanced/run-001.json +64 -0
  243. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopBalanced/run-002.json +64 -0
  244. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopBalanced/run-003.json +64 -0
  245. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopBalanced/run-004.json +64 -0
  246. package/benchmarks/execution-profiles/results/raw/codex-repeat5-20260831/static-landing-page/forgeloopBalanced/run-005.json +64 -0
  247. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-001.json +80 -0
  248. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-002.json +80 -0
  249. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-003.json +80 -0
  250. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-004.json +80 -0
  251. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-005.json +80 -0
  252. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-006.json +80 -0
  253. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-007.json +80 -0
  254. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-008.json +80 -0
  255. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-009.json +80 -0
  256. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-010.json +80 -0
  257. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-011.json +80 -0
  258. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-012.json +80 -0
  259. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-013.json +80 -0
  260. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-014.json +80 -0
  261. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-015.json +80 -0
  262. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-016.json +80 -0
  263. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-017.json +80 -0
  264. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-018.json +80 -0
  265. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-019.json +80 -0
  266. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/direct/run-020.json +80 -0
  267. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-001.json +83 -0
  268. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-002.json +83 -0
  269. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-003.json +83 -0
  270. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-004.json +83 -0
  271. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-005.json +83 -0
  272. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-006.json +83 -0
  273. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-007.json +83 -0
  274. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-008.json +83 -0
  275. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-009.json +83 -0
  276. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-010.json +83 -0
  277. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-011.json +83 -0
  278. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-012.json +83 -0
  279. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-013.json +83 -0
  280. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-014.json +83 -0
  281. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-015.json +83 -0
  282. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-016.json +83 -0
  283. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-017.json +83 -0
  284. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-018.json +83 -0
  285. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-019.json +83 -0
  286. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopAdaptive/run-020.json +83 -0
  287. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-001.json +83 -0
  288. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-002.json +83 -0
  289. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-003.json +83 -0
  290. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-004.json +83 -0
  291. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-005.json +83 -0
  292. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-006.json +83 -0
  293. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-007.json +83 -0
  294. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-008.json +83 -0
  295. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-009.json +83 -0
  296. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-010.json +83 -0
  297. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-011.json +83 -0
  298. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-012.json +83 -0
  299. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-013.json +83 -0
  300. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-014.json +83 -0
  301. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-015.json +83 -0
  302. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-016.json +83 -0
  303. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-017.json +83 -0
  304. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-018.json +83 -0
  305. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-019.json +83 -0
  306. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/api-feature/forgeloopBalanced/run-020.json +83 -0
  307. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-001.json +80 -0
  308. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-002.json +80 -0
  309. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-003.json +80 -0
  310. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-004.json +80 -0
  311. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-005.json +80 -0
  312. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-006.json +80 -0
  313. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-007.json +80 -0
  314. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-008.json +80 -0
  315. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-009.json +80 -0
  316. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-010.json +80 -0
  317. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-011.json +80 -0
  318. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-012.json +80 -0
  319. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-013.json +80 -0
  320. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-014.json +80 -0
  321. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-015.json +80 -0
  322. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-016.json +80 -0
  323. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-017.json +80 -0
  324. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-018.json +80 -0
  325. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-019.json +80 -0
  326. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/direct/run-020.json +80 -0
  327. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-001.json +85 -0
  328. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-002.json +85 -0
  329. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-003.json +85 -0
  330. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-004.json +85 -0
  331. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-005.json +85 -0
  332. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-006.json +85 -0
  333. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-007.json +85 -0
  334. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-008.json +85 -0
  335. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-009.json +85 -0
  336. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-010.json +85 -0
  337. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-011.json +85 -0
  338. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-012.json +85 -0
  339. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-013.json +85 -0
  340. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-014.json +85 -0
  341. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-015.json +85 -0
  342. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-016.json +85 -0
  343. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-017.json +85 -0
  344. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-018.json +85 -0
  345. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-019.json +85 -0
  346. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopAdaptive/run-020.json +85 -0
  347. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-001.json +85 -0
  348. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-002.json +85 -0
  349. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-003.json +85 -0
  350. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-004.json +85 -0
  351. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-005.json +85 -0
  352. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-006.json +85 -0
  353. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-007.json +85 -0
  354. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-008.json +85 -0
  355. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-009.json +85 -0
  356. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-010.json +85 -0
  357. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-011.json +85 -0
  358. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-012.json +85 -0
  359. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-013.json +85 -0
  360. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-014.json +85 -0
  361. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-015.json +85 -0
  362. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-016.json +85 -0
  363. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-017.json +85 -0
  364. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-018.json +85 -0
  365. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-019.json +85 -0
  366. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/authentication-change/forgeloopBalanced/run-020.json +85 -0
  367. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-001.json +80 -0
  368. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-002.json +80 -0
  369. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-003.json +80 -0
  370. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-004.json +80 -0
  371. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-005.json +80 -0
  372. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-006.json +80 -0
  373. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-007.json +80 -0
  374. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-008.json +80 -0
  375. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-009.json +80 -0
  376. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-010.json +80 -0
  377. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-011.json +80 -0
  378. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-012.json +80 -0
  379. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-013.json +80 -0
  380. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-014.json +80 -0
  381. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-015.json +80 -0
  382. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-016.json +80 -0
  383. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-017.json +80 -0
  384. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-018.json +80 -0
  385. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-019.json +80 -0
  386. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/direct/run-020.json +80 -0
  387. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-001.json +82 -0
  388. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-002.json +82 -0
  389. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-003.json +82 -0
  390. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-004.json +82 -0
  391. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-005.json +82 -0
  392. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-006.json +82 -0
  393. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-007.json +82 -0
  394. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-008.json +82 -0
  395. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-009.json +82 -0
  396. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-010.json +82 -0
  397. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-011.json +82 -0
  398. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-012.json +82 -0
  399. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-013.json +82 -0
  400. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-014.json +82 -0
  401. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-015.json +82 -0
  402. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-016.json +82 -0
  403. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-017.json +82 -0
  404. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-018.json +82 -0
  405. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-019.json +82 -0
  406. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopAdaptive/run-020.json +82 -0
  407. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-001.json +82 -0
  408. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-002.json +82 -0
  409. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-003.json +82 -0
  410. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-004.json +82 -0
  411. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-005.json +82 -0
  412. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-006.json +82 -0
  413. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-007.json +82 -0
  414. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-008.json +82 -0
  415. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-009.json +82 -0
  416. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-010.json +82 -0
  417. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-011.json +82 -0
  418. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-012.json +82 -0
  419. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-013.json +82 -0
  420. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-014.json +82 -0
  421. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-015.json +82 -0
  422. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-016.json +82 -0
  423. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-017.json +82 -0
  424. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-018.json +82 -0
  425. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-019.json +82 -0
  426. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/documentation-correction/forgeloopBalanced/run-020.json +82 -0
  427. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-001.json +80 -0
  428. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-002.json +80 -0
  429. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-003.json +80 -0
  430. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-004.json +80 -0
  431. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-005.json +80 -0
  432. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-006.json +80 -0
  433. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-007.json +80 -0
  434. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-008.json +80 -0
  435. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-009.json +80 -0
  436. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-010.json +80 -0
  437. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-011.json +80 -0
  438. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-012.json +80 -0
  439. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-013.json +80 -0
  440. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-014.json +80 -0
  441. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-015.json +80 -0
  442. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-016.json +80 -0
  443. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-017.json +80 -0
  444. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-018.json +80 -0
  445. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-019.json +80 -0
  446. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/direct/run-020.json +80 -0
  447. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-001.json +84 -0
  448. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-002.json +84 -0
  449. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-003.json +84 -0
  450. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-004.json +84 -0
  451. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-005.json +84 -0
  452. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-006.json +84 -0
  453. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-007.json +84 -0
  454. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-008.json +84 -0
  455. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-009.json +84 -0
  456. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-010.json +84 -0
  457. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-011.json +84 -0
  458. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-012.json +84 -0
  459. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-013.json +84 -0
  460. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-014.json +84 -0
  461. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-015.json +84 -0
  462. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-016.json +84 -0
  463. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-017.json +84 -0
  464. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-018.json +84 -0
  465. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-019.json +84 -0
  466. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopAdaptive/run-020.json +84 -0
  467. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-001.json +84 -0
  468. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-002.json +84 -0
  469. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-003.json +84 -0
  470. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-004.json +84 -0
  471. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-005.json +84 -0
  472. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-006.json +84 -0
  473. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-007.json +84 -0
  474. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-008.json +84 -0
  475. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-009.json +84 -0
  476. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-010.json +84 -0
  477. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-011.json +84 -0
  478. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-012.json +84 -0
  479. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-013.json +84 -0
  480. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-014.json +84 -0
  481. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-015.json +84 -0
  482. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-016.json +84 -0
  483. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-017.json +84 -0
  484. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-018.json +84 -0
  485. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-019.json +84 -0
  486. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/infrastructure-release/forgeloopBalanced/run-020.json +84 -0
  487. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-001.json +80 -0
  488. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-002.json +80 -0
  489. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-003.json +80 -0
  490. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-004.json +80 -0
  491. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-005.json +80 -0
  492. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-006.json +80 -0
  493. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-007.json +80 -0
  494. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-008.json +80 -0
  495. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-009.json +80 -0
  496. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-010.json +80 -0
  497. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-011.json +80 -0
  498. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-012.json +80 -0
  499. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-013.json +80 -0
  500. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-014.json +80 -0
  501. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-015.json +80 -0
  502. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-016.json +80 -0
  503. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-017.json +80 -0
  504. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-018.json +80 -0
  505. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-019.json +80 -0
  506. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/direct/run-020.json +80 -0
  507. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-001.json +89 -0
  508. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-002.json +89 -0
  509. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-003.json +89 -0
  510. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-004.json +89 -0
  511. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-005.json +89 -0
  512. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-006.json +89 -0
  513. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-007.json +89 -0
  514. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-008.json +89 -0
  515. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-009.json +89 -0
  516. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-010.json +89 -0
  517. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-011.json +89 -0
  518. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-012.json +89 -0
  519. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-013.json +89 -0
  520. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-014.json +89 -0
  521. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-015.json +89 -0
  522. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-016.json +89 -0
  523. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-017.json +89 -0
  524. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-018.json +89 -0
  525. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-019.json +89 -0
  526. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopAdaptive/run-020.json +89 -0
  527. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-001.json +89 -0
  528. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-002.json +89 -0
  529. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-003.json +89 -0
  530. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-004.json +89 -0
  531. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-005.json +89 -0
  532. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-006.json +89 -0
  533. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-007.json +89 -0
  534. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-008.json +89 -0
  535. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-009.json +89 -0
  536. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-010.json +89 -0
  537. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-011.json +89 -0
  538. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-012.json +89 -0
  539. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-013.json +89 -0
  540. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-014.json +89 -0
  541. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-015.json +89 -0
  542. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-016.json +89 -0
  543. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-017.json +89 -0
  544. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-018.json +89 -0
  545. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-019.json +89 -0
  546. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/novatask-saas-landing-page/forgeloopBalanced/run-020.json +89 -0
  547. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-001.json +80 -0
  548. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-002.json +80 -0
  549. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-003.json +80 -0
  550. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-004.json +80 -0
  551. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-005.json +80 -0
  552. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-006.json +80 -0
  553. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-007.json +80 -0
  554. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-008.json +80 -0
  555. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-009.json +80 -0
  556. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-010.json +80 -0
  557. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-011.json +80 -0
  558. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-012.json +80 -0
  559. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-013.json +80 -0
  560. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-014.json +80 -0
  561. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-015.json +80 -0
  562. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-016.json +80 -0
  563. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-017.json +80 -0
  564. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-018.json +80 -0
  565. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-019.json +80 -0
  566. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/direct/run-020.json +80 -0
  567. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-001.json +83 -0
  568. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-002.json +83 -0
  569. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-003.json +83 -0
  570. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-004.json +83 -0
  571. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-005.json +83 -0
  572. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-006.json +83 -0
  573. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-007.json +83 -0
  574. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-008.json +83 -0
  575. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-009.json +83 -0
  576. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-010.json +83 -0
  577. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-011.json +83 -0
  578. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-012.json +83 -0
  579. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-013.json +83 -0
  580. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-014.json +83 -0
  581. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-015.json +83 -0
  582. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-016.json +83 -0
  583. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-017.json +83 -0
  584. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-018.json +83 -0
  585. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-019.json +83 -0
  586. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopAdaptive/run-020.json +83 -0
  587. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-001.json +83 -0
  588. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-002.json +83 -0
  589. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-003.json +83 -0
  590. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-004.json +83 -0
  591. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-005.json +83 -0
  592. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-006.json +83 -0
  593. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-007.json +83 -0
  594. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-008.json +83 -0
  595. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-009.json +83 -0
  596. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-010.json +83 -0
  597. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-011.json +83 -0
  598. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-012.json +83 -0
  599. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-013.json +83 -0
  600. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-014.json +83 -0
  601. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-015.json +83 -0
  602. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-016.json +83 -0
  603. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-017.json +83 -0
  604. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-018.json +83 -0
  605. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-019.json +83 -0
  606. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/small-bug-fix/forgeloopBalanced/run-020.json +83 -0
  607. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-001.json +80 -0
  608. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-002.json +80 -0
  609. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-003.json +80 -0
  610. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-004.json +80 -0
  611. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-005.json +80 -0
  612. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-006.json +80 -0
  613. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-007.json +80 -0
  614. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-008.json +80 -0
  615. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-009.json +80 -0
  616. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-010.json +80 -0
  617. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-011.json +80 -0
  618. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-012.json +80 -0
  619. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-013.json +80 -0
  620. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-014.json +80 -0
  621. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-015.json +80 -0
  622. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-016.json +80 -0
  623. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-017.json +80 -0
  624. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-018.json +80 -0
  625. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-019.json +80 -0
  626. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/direct/run-020.json +80 -0
  627. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-001.json +89 -0
  628. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-002.json +89 -0
  629. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-003.json +89 -0
  630. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-004.json +89 -0
  631. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-005.json +89 -0
  632. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-006.json +89 -0
  633. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-007.json +89 -0
  634. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-008.json +89 -0
  635. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-009.json +89 -0
  636. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-010.json +89 -0
  637. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-011.json +89 -0
  638. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-012.json +89 -0
  639. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-013.json +89 -0
  640. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-014.json +89 -0
  641. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-015.json +89 -0
  642. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-016.json +89 -0
  643. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-017.json +89 -0
  644. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-018.json +89 -0
  645. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-019.json +89 -0
  646. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopAdaptive/run-020.json +89 -0
  647. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-001.json +89 -0
  648. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-002.json +89 -0
  649. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-003.json +89 -0
  650. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-004.json +89 -0
  651. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-005.json +89 -0
  652. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-006.json +89 -0
  653. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-007.json +89 -0
  654. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-008.json +89 -0
  655. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-009.json +89 -0
  656. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-010.json +89 -0
  657. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-011.json +89 -0
  658. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-012.json +89 -0
  659. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-013.json +89 -0
  660. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-014.json +89 -0
  661. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-015.json +89 -0
  662. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-016.json +89 -0
  663. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-017.json +89 -0
  664. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-018.json +89 -0
  665. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-019.json +89 -0
  666. package/benchmarks/execution-profiles/results/raw/codex-tail-repeat20-20260831/static-landing-page/forgeloopBalanced/run-020.json +89 -0
  667. package/benchmarks/execution-profiles/small-bug-fix.json +18 -0
  668. package/benchmarks/execution-profiles/static-landing-page.json +18 -0
  669. package/completions/_forgeloop +6 -4
  670. package/completions/forgeloop.bash +8 -4
  671. package/completions/forgeloop.fish +24 -1
  672. package/docs/AGENT_PROTOCOL_SUMMARY.md +45 -1
  673. package/docs/ARTIFACT_REFERENCE.md +53 -7
  674. package/docs/CLI_REFERENCE.md +83 -1
  675. package/docs/EXECUTION_PROFILE_BENCHMARKS.md +420 -0
  676. package/docs/GETTING_STARTED.md +28 -0
  677. package/docs/MCP.md +7 -1
  678. package/docs/RELEASE_CHECKLIST.md +11 -0
  679. package/docs/TROUBLESHOOTING.md +6 -0
  680. package/docs/UNIVERSAL_INTEGRATION.md +58 -0
  681. package/package.json +17 -2
  682. package/schemas/config.schema.json +1 -0
  683. package/schemas/execution-profile-benchmark-aggregate.schema.json +93 -0
  684. package/schemas/execution-profile-benchmark-run.schema.json +144 -0
  685. package/schemas/execution-profile-benchmark-scenario.schema.json +66 -0
  686. package/schemas/routing-result.schema.json +12 -0
  687. package/schemas/usage.schema.json +30 -0
  688. package/scripts/check-efficiency-regression.mjs +99 -0
  689. package/scripts/generate-agent-protocol-summary.mjs +35 -0
  690. package/scripts/lib/execution-profile-benchmark-io.mjs +67 -0
  691. package/scripts/report-execution-profile-outliers.mjs +136 -0
  692. package/scripts/report-tail-interpretation.mjs +156 -0
  693. package/scripts/run-execution-profile-benchmarks.mjs +341 -0
  694. package/scripts/summarize-execution-profile-benchmarks.mjs +84 -0
  695. package/scripts/validate-execution-profile-benchmarks.mjs +120 -0
  696. package/src/cli.js +16 -4
  697. package/src/commands/efficiency.js +12 -0
  698. package/src/commands/eval.js +8 -2
  699. package/src/commands/metrics.js +2 -2
  700. package/src/commands/next.js +26 -2
  701. package/src/commands/route.js +20 -2
  702. package/src/commands/task-show.js +31 -2
  703. package/src/commands/usage-record.js +61 -0
  704. package/src/core/artifact-registry.js +12 -0
  705. package/src/core/cli-command-definitions.js +27 -0
  706. package/src/core/command-executors.js +29 -5
  707. package/src/core/command-input.js +34 -0
  708. package/src/core/config.js +9 -0
  709. package/src/core/efficiency.js +197 -0
  710. package/src/core/error-codes.js +18 -0
  711. package/src/core/execution-profile-benchmarks.js +1148 -0
  712. package/src/core/execution-profile-context.js +177 -0
  713. package/src/core/execution-profile.js +248 -0
  714. package/src/core/integration-invocation-policy.js +43 -0
  715. package/src/core/integration-resources.js +22 -1
  716. package/src/core/protocol-info.js +42 -0
  717. package/src/core/router.js +23 -1
  718. package/src/core/runtime-context.js +11 -0
  719. package/src/core/schema-validation.js +4 -0
  720. package/src/core/task-paths.js +2 -0
  721. package/src/core/templates.js +4 -0
  722. package/src/core/trace.js +1 -0
  723. package/src/core/trajectory-evaluation.js +2 -2
  724. package/src/core/trajectory-metrics.js +18 -2
  725. package/src/core/usage.js +137 -0
  726. package/src/integration.d.ts +84 -0
  727. package/src/integration.js +14 -0
@@ -0,0 +1,1148 @@
1
+ import { canonicalFingerprint } from "./artifacts.js";
2
+ import { evaluateRoute } from "./router.js";
3
+ import { normalizeUsage } from "./usage.js";
4
+
5
+ export const BENCHMARK_VERSION = "2";
6
+ export const SUPPORTED_BENCHMARK_VERSIONS = Object.freeze(["1", "2"]);
7
+ export const BENCHMARK_MODES = Object.freeze([
8
+ "direct",
9
+ "forgeloopBalanced",
10
+ "forgeloopAdaptive",
11
+ ]);
12
+ // Observational runaway-execution diagnostics only; they never gate lifecycle
13
+ // truth or completion validity.
14
+ export const BENCHMARK_RUNAWAY_SIGNALS = Object.freeze([
15
+ "EXCESSIVE_MODEL_TURNS",
16
+ "EXCESSIVE_TOOL_CALLS",
17
+ "EXCESSIVE_VERIFICATION_CYCLES",
18
+ "REPEATED_CONTEXT_REFRESH",
19
+ "REPEATED_FILE_READ",
20
+ "REPEATED_GUIDE_LOAD",
21
+ "UNEXPECTED_RETRY",
22
+ "CORRECTION_LOOP",
23
+ "HOST_RETRY",
24
+ "MODEL_STALL",
25
+ "UNKNOWN_TOKEN_SPIKE",
26
+ ]);
27
+ export const BENCHMARK_DIAGNOSTIC_COUNT_FIELDS = Object.freeze([
28
+ "verificationCycles",
29
+ "modelTurns",
30
+ "toolCalls",
31
+ "retries",
32
+ "correctionCycles",
33
+ "filesRead",
34
+ "filesWritten",
35
+ "contextRefreshes",
36
+ ]);
37
+ export const BENCHMARK_TIERS = Object.freeze({
38
+ smoke: Object.freeze({ minimumRuns: 1, maximumRuns: 3, defaultRuns: 1 }),
39
+ evidence: Object.freeze({ minimumRuns: 5, maximumRuns: 10, defaultRuns: 5 }),
40
+ tail: Object.freeze({ minimumRuns: 20, maximumRuns: 30, defaultRuns: 20 }),
41
+ });
42
+ export const OUTLIER_POLICY = "TOKEN_IQR_1_5";
43
+ export const OUTLIER_MINIMUM_SAMPLES = 4;
44
+ export const TAIL_SAMPLE_MINIMUM = 20;
45
+ export const LOW_BASELINE_RATIO = 0.60;
46
+ export const BASELINE_TOKEN_REGIMES = Object.freeze([
47
+ "NORMAL",
48
+ "LOW_BASELINE_TOKEN_REGIME",
49
+ ]);
50
+ export const TAIL_STATUSES = Object.freeze([
51
+ "TAIL_STABLE",
52
+ "TAIL_WARNING",
53
+ "TAIL_REGRESSION",
54
+ "NOT_ENOUGH_SAMPLES",
55
+ ]);
56
+ export const DISTRIBUTION_TAIL_STATUSES = Object.freeze([
57
+ "TAIL_ACCEPTABLE",
58
+ "TAIL_REGRESSION",
59
+ "NOT_ENOUGH_SAMPLES",
60
+ ]);
61
+ export const COMBINED_TAIL_STATUSES = Object.freeze([
62
+ "TAIL_CONSISTENT",
63
+ "TAIL_PAIRED_RATIO_SENSITIVE",
64
+ "TAIL_DISTRIBUTION_REGRESSION",
65
+ "TAIL_UNRESOLVED",
66
+ ]);
67
+ export const BENCHMARK_VERIFICATION_RESULTS = Object.freeze([
68
+ "PASS",
69
+ "FAIL",
70
+ "NOT_AVAILABLE",
71
+ ]);
72
+ export const BENCHMARK_USAGE_SOURCES = Object.freeze([
73
+ "PROVIDER_REPORTED",
74
+ "HOST_REPORTED",
75
+ "UNKNOWN",
76
+ ]);
77
+ export const BENCHMARK_CONTEXT_USAGE_SOURCES = Object.freeze([
78
+ "HOST_REPORTED",
79
+ "UNKNOWN",
80
+ ]);
81
+ export const BENCHMARK_CONTEXT_USAGE_ITEMS = Object.freeze([
82
+ "taskContext",
83
+ "guides",
84
+ "history",
85
+ "protocolInstructions",
86
+ "repositoryContext",
87
+ "other",
88
+ ]);
89
+ export const BENCHMARK_QUALITY_SOURCES = Object.freeze([
90
+ "EXTERNAL_REPORTED",
91
+ "HOST_REPORTED",
92
+ "UNKNOWN",
93
+ ]);
94
+ export const BENCHMARK_QUALITY_FIELDS = Object.freeze([
95
+ "visualQuality",
96
+ "responsiveQuality",
97
+ "accessibility",
98
+ "interactionPolish",
99
+ "requirementsCompleteness",
100
+ ]);
101
+ export const REQUIRED_BENCHMARK_SCENARIO_IDS = Object.freeze([
102
+ "documentation-correction",
103
+ "static-landing-page",
104
+ "small-bug-fix",
105
+ "api-feature",
106
+ "authentication-change",
107
+ "infrastructure-release",
108
+ "novatask-saas-landing-page",
109
+ ]);
110
+ export const LIGHT_EFFICIENCY_OBJECTIVES = Object.freeze({
111
+ p50TokenOverheadPercent: 35,
112
+ p95TokenOverheadPercent: 60,
113
+ });
114
+
115
+ const PROFILE_BY_MODE = Object.freeze({
116
+ direct: { requestedProfile: null, resolvedProfile: null },
117
+ forgeloopBalanced: { requestedProfile: "balanced", resolvedProfile: null },
118
+ forgeloopAdaptive: { requestedProfile: "auto", resolvedProfile: null },
119
+ });
120
+
121
+ function benchmarkError(message) {
122
+ const error = new Error(message);
123
+ error.code = "E_BENCHMARK_INVALID";
124
+ return error;
125
+ }
126
+
127
+ function assertObject(value, label) {
128
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
129
+ throw benchmarkError(`${label} must be an object`);
130
+ }
131
+ return value;
132
+ }
133
+
134
+ function assertString(value, label, { nullable = false } = {}) {
135
+ if (nullable && value === null) return value;
136
+ if (typeof value !== "string" || value.length === 0) {
137
+ throw benchmarkError(`${label} must be a non-empty string${nullable ? " or null" : ""}`);
138
+ }
139
+ return value;
140
+ }
141
+
142
+ function assertNullableFiniteNumber(value, label) {
143
+ if (value === null) return value;
144
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
145
+ throw benchmarkError(`${label} must be a non-negative finite number or null`);
146
+ }
147
+ return value;
148
+ }
149
+
150
+ function assertNullableNonNegativeInteger(value, label) {
151
+ if (value === null) return value;
152
+ if (!Number.isInteger(value) || value < 0) {
153
+ throw benchmarkError(`${label} must be a non-negative integer or null`);
154
+ }
155
+ return value;
156
+ }
157
+
158
+ function assertNullableProfile(value, label) {
159
+ if (value === null) return value;
160
+ if (typeof value !== "string" || !["light", "balanced", "full"].includes(value)) {
161
+ throw benchmarkError(`${label} must be light, balanced, full, or null`);
162
+ }
163
+ return value;
164
+ }
165
+
166
+ function assertRunSetId(value) {
167
+ assertString(value, "runSetId");
168
+ if (!/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/u.test(value)) {
169
+ throw benchmarkError("runSetId contains unsupported characters");
170
+ }
171
+ return value;
172
+ }
173
+
174
+ function assertRunId(value) {
175
+ assertString(value, "runId");
176
+ if (!/^run-[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/u.test(value)) {
177
+ throw benchmarkError("runId must start with run- and contain safe identifier characters");
178
+ }
179
+ return value;
180
+ }
181
+
182
+ function assertScenarioId(value) {
183
+ assertString(value, "scenarioId");
184
+ if (!/^[a-z0-9][a-z0-9-]{0,127}$/u.test(value)) {
185
+ throw benchmarkError("scenarioId must be a lowercase portable identifier");
186
+ }
187
+ return value;
188
+ }
189
+
190
+ function assertTimestamp(value, label) {
191
+ assertString(value, label);
192
+ if (Number.isNaN(Date.parse(value))) throw benchmarkError(`${label} must be a valid timestamp`);
193
+ return value;
194
+ }
195
+
196
+ function normalizedModeProfile(mode, resolvedProfile) {
197
+ const expected = PROFILE_BY_MODE[mode];
198
+ if (!expected) throw benchmarkError(`Unsupported benchmark mode: ${mode}`);
199
+ if (mode === "direct" && resolvedProfile !== null) {
200
+ throw benchmarkError(`${mode} must not report a ForgeLoop resolved profile`);
201
+ }
202
+ if (mode !== "direct" && (typeof resolvedProfile !== "string" || !resolvedProfile)) {
203
+ throw benchmarkError(`${mode} must report its resolved ForgeLoop profile`);
204
+ }
205
+ if (mode !== "direct" && !["light", "balanced", "full"].includes(resolvedProfile)) {
206
+ throw benchmarkError(`${mode} resolvedProfile must be light, balanced, or full`);
207
+ }
208
+ return expected;
209
+ }
210
+
211
+ export function assertBenchmarkScenario(value) {
212
+ const scenario = assertObject(value, "benchmark scenario");
213
+ if (scenario.schemaVersion !== 1) throw benchmarkError("benchmark scenario schemaVersion must be 1");
214
+ if (scenario.benchmarkVersion !== BENCHMARK_VERSION) {
215
+ throw benchmarkError(`benchmark scenario benchmarkVersion must be ${BENCHMARK_VERSION}`);
216
+ }
217
+ assertScenarioId(scenario.scenarioId);
218
+ assertString(scenario.description, "description");
219
+ assertObject(scenario.input, "input");
220
+ assertString(scenario.input.workType, "input.workType");
221
+ for (const key of ["surfaces", "risks", "platforms"]) {
222
+ if (!Array.isArray(scenario.input[key]) || scenario.input[key].some((item) => typeof item !== "string" || !item)) {
223
+ throw benchmarkError(`input.${key} must be an array of non-empty strings`);
224
+ }
225
+ }
226
+ if (!["light", "balanced", "full"].includes(scenario.expectedProfile)) {
227
+ throw benchmarkError("expectedProfile must be light, balanced, or full");
228
+ }
229
+ let resolvedProfile;
230
+ try {
231
+ resolvedProfile = evaluateRoute(scenario.input).executionProfile.resolved;
232
+ } catch (error) {
233
+ throw benchmarkError(`input must be a valid ForgeLoop route: ${error.message}`);
234
+ }
235
+ if (resolvedProfile !== scenario.expectedProfile) {
236
+ throw benchmarkError(
237
+ `expectedProfile does not match the default route resolution: ${scenario.expectedProfile} !== ${resolvedProfile}`,
238
+ );
239
+ }
240
+ if (scenario.referenceTask !== undefined) {
241
+ const referenceTask = assertObject(scenario.referenceTask, "referenceTask");
242
+ assertString(referenceTask.name, "referenceTask.name");
243
+ for (const field of ["requirements", "exclusions"]) {
244
+ if (!Array.isArray(referenceTask[field]) || referenceTask[field].some((item) => typeof item !== "string" || item.trim() === "")) {
245
+ throw benchmarkError(`referenceTask.${field} must be an array of non-empty strings`);
246
+ }
247
+ }
248
+ assertString(referenceTask.artifactMode, "referenceTask.artifactMode");
249
+ }
250
+ assertObject(scenario.measurements, "measurements");
251
+ for (const mode of BENCHMARK_MODES) {
252
+ const measurement = assertObject(scenario.measurements[mode], `measurements.${mode}`);
253
+ for (const field of [
254
+ "inputTokens",
255
+ "outputTokens",
256
+ "cacheReadTokens",
257
+ "cacheWriteTokens",
258
+ "totalTokens",
259
+ ]) {
260
+ assertNullableNonNegativeInteger(measurement[field], `measurements.${mode}.${field}`);
261
+ }
262
+ assertNullableFiniteNumber(measurement.wallClockMs, `measurements.${mode}.wallClockMs`);
263
+ if (!BENCHMARK_VERIFICATION_RESULTS.includes(measurement.verification)) {
264
+ throw benchmarkError(`measurements.${mode}.verification is not a supported result`);
265
+ }
266
+ }
267
+ return scenario;
268
+ }
269
+
270
+ export function assertRequiredBenchmarkScenarios(scenarios) {
271
+ if (!Array.isArray(scenarios)) throw benchmarkError("benchmark scenarios must be an array");
272
+ const ids = new Set(scenarios.map((scenario) => scenario.scenarioId));
273
+ const missing = REQUIRED_BENCHMARK_SCENARIO_IDS.filter((scenarioId) => !ids.has(scenarioId));
274
+ if (missing.length > 0) {
275
+ throw benchmarkError(`missing required benchmark scenario(s): ${missing.join(", ")}`);
276
+ }
277
+ return scenarios;
278
+ }
279
+
280
+ function normalizeBenchmarkUsage(value) {
281
+ let usage;
282
+ try {
283
+ usage = normalizeUsage(value, {
284
+ defaultSource: "UNKNOWN",
285
+ allowedSources: BENCHMARK_USAGE_SOURCES,
286
+ });
287
+ } catch (error) {
288
+ throw benchmarkError(error.message);
289
+ }
290
+ if (usage.source === "UNKNOWN" && [
291
+ usage.inputTokens,
292
+ usage.outputTokens,
293
+ usage.cacheReadTokens,
294
+ usage.cacheWriteTokens,
295
+ usage.totalTokens,
296
+ usage.costUsd,
297
+ usage.model,
298
+ usage.provider,
299
+ ].some((field) => field !== null)) {
300
+ throw benchmarkError("UNKNOWN usage must keep all measured values and identity fields null");
301
+ }
302
+ return usage;
303
+ }
304
+
305
+ export function normalizeBenchmarkContextUsage(value, expectedProfile = null) {
306
+ assertNullableProfile(expectedProfile, "contextUsage expected profile");
307
+ if (value === undefined || value === null) {
308
+ return {
309
+ source: "UNKNOWN",
310
+ profile: expectedProfile,
311
+ items: Object.fromEntries(BENCHMARK_CONTEXT_USAGE_ITEMS.map((item) => [item, null])),
312
+ };
313
+ }
314
+ const contextUsage = assertObject(value, "contextUsage");
315
+ const source = contextUsage.source ?? "UNKNOWN";
316
+ if (!BENCHMARK_CONTEXT_USAGE_SOURCES.includes(source)) {
317
+ throw benchmarkError(`contextUsage.source must be one of ${BENCHMARK_CONTEXT_USAGE_SOURCES.join(", ")}`);
318
+ }
319
+ const profile = contextUsage.profile ?? expectedProfile;
320
+ assertNullableProfile(profile, "contextUsage.profile");
321
+ if (profile !== expectedProfile) {
322
+ throw benchmarkError("contextUsage.profile must match the resolved benchmark profile");
323
+ }
324
+ const items = assertObject(contextUsage.items ?? {}, "contextUsage.items");
325
+ const unknownItem = Object.keys(items).find((item) => !BENCHMARK_CONTEXT_USAGE_ITEMS.includes(item));
326
+ if (unknownItem) throw benchmarkError(`contextUsage.items contains unsupported item: ${unknownItem}`);
327
+ const normalizedItems = Object.fromEntries(BENCHMARK_CONTEXT_USAGE_ITEMS.map((item) => {
328
+ const valueForItem = items[item] ?? null;
329
+ return [item, assertNullableNonNegativeInteger(valueForItem, `contextUsage.items.${item}`)];
330
+ }));
331
+ if (source === "UNKNOWN" && Object.values(normalizedItems).some((item) => item !== null)) {
332
+ throw benchmarkError("UNKNOWN context usage must keep every context item null");
333
+ }
334
+ return { source, profile, items: normalizedItems };
335
+ }
336
+
337
+ export function normalizeBenchmarkQuality(value) {
338
+ if (value === undefined || value === null) {
339
+ return {
340
+ source: "UNKNOWN",
341
+ scores: Object.fromEntries(BENCHMARK_QUALITY_FIELDS.map((field) => [field, null])),
342
+ };
343
+ }
344
+ const quality = assertObject(value, "quality");
345
+ const source = quality.source ?? "UNKNOWN";
346
+ if (!BENCHMARK_QUALITY_SOURCES.includes(source)) {
347
+ throw benchmarkError(`quality.source must be one of ${BENCHMARK_QUALITY_SOURCES.join(", ")}`);
348
+ }
349
+ const scores = assertObject(quality.scores ?? {}, "quality.scores");
350
+ const unknownScore = Object.keys(scores).find((field) => !BENCHMARK_QUALITY_FIELDS.includes(field));
351
+ if (unknownScore) throw benchmarkError(`quality.scores contains unsupported field: ${unknownScore}`);
352
+ const normalizedScores = Object.fromEntries(BENCHMARK_QUALITY_FIELDS.map((field) => {
353
+ const score = scores[field] ?? null;
354
+ if (score !== null && (typeof score !== "number" || !Number.isFinite(score) || score < 0 || score > 5)) {
355
+ throw benchmarkError(`quality.scores.${field} must be between 0 and 5 or null`);
356
+ }
357
+ return [field, score];
358
+ }));
359
+ if (source === "UNKNOWN" && Object.values(normalizedScores).some((score) => score !== null)) {
360
+ throw benchmarkError("UNKNOWN quality must keep every score null");
361
+ }
362
+ return { source, scores: normalizedScores };
363
+ }
364
+
365
+ function assertStringArray(value, label) {
366
+ if (!Array.isArray(value)) throw benchmarkError(`${label} must be an array`);
367
+ for (const item of value) {
368
+ if (typeof item !== "string" || item.length === 0) {
369
+ throw benchmarkError(`${label} must contain only non-empty strings`);
370
+ }
371
+ }
372
+ return value;
373
+ }
374
+
375
+ // Every diagnostics field is nullable. Unavailable host telemetry stays null;
376
+ // it is never estimated from prompt size, file size, or elapsed time.
377
+ export function normalizeBenchmarkDiagnostics(value) {
378
+ if (value === undefined || value === null) return null;
379
+ const diagnostics = assertObject(value, "diagnostics");
380
+ const allowedKeys = new Set([
381
+ "executionProfile",
382
+ ...BENCHMARK_DIAGNOSTIC_COUNT_FIELDS,
383
+ "guideCount",
384
+ "guideIds",
385
+ "contextRefreshes",
386
+ "hostWarnings",
387
+ "terminationReason",
388
+ "flags",
389
+ ]);
390
+ const unknownKey = Object.keys(diagnostics).find((key) => !allowedKeys.has(key));
391
+ if (unknownKey) throw benchmarkError(`diagnostics contains unsupported field: ${unknownKey}`);
392
+ const executionProfile = diagnostics.executionProfile ?? null;
393
+ assertNullableProfile(executionProfile, "diagnostics.executionProfile");
394
+ const normalized = { executionProfile };
395
+ for (const field of BENCHMARK_DIAGNOSTIC_COUNT_FIELDS) {
396
+ normalized[field] = assertNullableNonNegativeInteger(diagnostics[field] ?? null, `diagnostics.${field}`);
397
+ }
398
+ normalized.guideCount = assertNullableNonNegativeInteger(diagnostics.guideCount ?? null, "diagnostics.guideCount");
399
+ normalized.guideIds = assertStringArray(diagnostics.guideIds ?? [], "diagnostics.guideIds");
400
+ normalized.hostWarnings = assertStringArray(diagnostics.hostWarnings ?? [], "diagnostics.hostWarnings");
401
+ normalized.terminationReason = assertString(diagnostics.terminationReason ?? null, "diagnostics.terminationReason", { nullable: true });
402
+ const flags = assertStringArray(diagnostics.flags ?? [], "diagnostics.flags");
403
+ const unknownFlag = flags.find((flag) => !BENCHMARK_RUNAWAY_SIGNALS.includes(flag));
404
+ if (unknownFlag) throw benchmarkError(`diagnostics.flags contains unsupported signal: ${unknownFlag}`);
405
+ normalized.flags = BENCHMARK_RUNAWAY_SIGNALS.filter((signal) => flags.includes(signal));
406
+ return normalized;
407
+ }
408
+
409
+ // Observational runaway-execution signals. Host-reported flags are preserved;
410
+ // deterministic signals are added only where the recorded diagnostics support
411
+ // them. A token outlier with no explanatory signal becomes UNKNOWN_TOKEN_SPIKE.
412
+ export function evaluateRunawaySignals(run, {
413
+ medianModelTurns = null,
414
+ medianToolCalls = null,
415
+ tokenOutlier = false,
416
+ } = {}) {
417
+ const diagnostics = normalizeBenchmarkDiagnostics(run?.diagnostics ?? null);
418
+ const signals = new Set(diagnostics?.flags ?? []);
419
+ const doubled = (value, median) => (
420
+ typeof value === "number"
421
+ && typeof median === "number"
422
+ && median > 0
423
+ && value > median * 2
424
+ );
425
+ if (doubled(diagnostics?.modelTurns ?? null, medianModelTurns)) signals.add("EXCESSIVE_MODEL_TURNS");
426
+ if (doubled(diagnostics?.toolCalls ?? null, medianToolCalls)) signals.add("EXCESSIVE_TOOL_CALLS");
427
+ const verificationCycles = diagnostics?.verificationCycles ?? run?.verificationCycles ?? null;
428
+ if (verificationCycles !== null && verificationCycles > 1) signals.add("EXCESSIVE_VERIFICATION_CYCLES");
429
+ if ((diagnostics?.contextRefreshes ?? null) !== null && diagnostics.contextRefreshes > 1) {
430
+ signals.add("REPEATED_CONTEXT_REFRESH");
431
+ }
432
+ if ((diagnostics?.retries ?? null) !== null && diagnostics.retries > 0) signals.add("UNEXPECTED_RETRY");
433
+ if ((diagnostics?.correctionCycles ?? null) !== null && diagnostics.correctionCycles > 1) {
434
+ signals.add("CORRECTION_LOOP");
435
+ }
436
+ if (tokenOutlier && signals.size === 0) signals.add("UNKNOWN_TOKEN_SPIKE");
437
+ return BENCHMARK_RUNAWAY_SIGNALS.filter((signal) => signals.has(signal));
438
+ }
439
+
440
+ function contextUsageForRun(run) {
441
+ return normalizeBenchmarkContextUsage(run.contextUsage, run.metadata?.resolvedProfile ?? null);
442
+ }
443
+
444
+ function measuredContextTokens(contextUsage) {
445
+ if (contextUsage.source !== "HOST_REPORTED") return null;
446
+ const values = BENCHMARK_CONTEXT_USAGE_ITEMS.map((item) => contextUsage.items[item]);
447
+ if (values.some((item) => item === null)) return null;
448
+ return values.reduce((sum, item) => sum + item, 0);
449
+ }
450
+
451
+ function assertBenchmarkMetadata(metadata, run) {
452
+ assertObject(metadata, "metadata");
453
+ assertScenarioId(metadata.scenarioId);
454
+ if (!BENCHMARK_MODES.includes(metadata.mode)) throw benchmarkError("metadata.mode is unsupported");
455
+ if (metadata.scenarioId !== run.scenarioId || metadata.mode !== run.mode) {
456
+ throw benchmarkError("benchmark metadata does not match the run identity");
457
+ }
458
+ if (metadata.benchmarkVersion !== run.benchmarkVersion) {
459
+ throw benchmarkError("benchmark metadata benchmarkVersion does not match the run");
460
+ }
461
+ assertString(metadata.environmentClass, "metadata.environmentClass");
462
+ for (const field of ["model", "provider", "projectRevision"]) {
463
+ assertString(metadata[field], `metadata.${field}`, { nullable: true });
464
+ }
465
+ assertString(metadata.promptSpecFingerprint, "metadata.promptSpecFingerprint");
466
+ assertString(metadata.requestedProfile, "metadata.requestedProfile", { nullable: true });
467
+ assertString(metadata.resolvedProfile, "metadata.resolvedProfile", { nullable: true });
468
+ normalizedModeProfile(run.mode, metadata.resolvedProfile);
469
+ if (metadata.requestedProfile !== PROFILE_BY_MODE[run.mode].requestedProfile) {
470
+ throw benchmarkError("metadata.requestedProfile does not match the benchmark mode");
471
+ }
472
+ assertNullableNonNegativeInteger(metadata.verificationCycles, "metadata.verificationCycles");
473
+ assertNullableNonNegativeInteger(metadata.comparableSteps, "metadata.comparableSteps");
474
+ if (metadata.verificationCycles !== run.verificationCycles || metadata.comparableSteps !== run.comparableSteps) {
475
+ throw benchmarkError("benchmark metadata does not match measured run values");
476
+ }
477
+ for (const field of ["nodeVersion", "os", "arch"]) {
478
+ if (metadata[field] !== undefined) assertString(metadata[field], `metadata.${field}`);
479
+ }
480
+ return metadata;
481
+ }
482
+
483
+ export function assertBenchmarkRun(value) {
484
+ const run = assertObject(value, "benchmark run");
485
+ if (run.schemaVersion !== 1) throw benchmarkError("benchmark run schemaVersion must be 1");
486
+ if (!SUPPORTED_BENCHMARK_VERSIONS.includes(run.benchmarkVersion)) {
487
+ throw benchmarkError(`benchmark run benchmarkVersion must be one of ${SUPPORTED_BENCHMARK_VERSIONS.join(", ")}`);
488
+ }
489
+ assertRunSetId(run.runSetId);
490
+ assertRunId(run.runId);
491
+ assertScenarioId(run.scenarioId);
492
+ if (!BENCHMARK_MODES.includes(run.mode)) throw benchmarkError("benchmark run mode is unsupported");
493
+ if (!Number.isInteger(run.runIndex) || run.runIndex < 1) throw benchmarkError("runIndex must be a positive integer");
494
+ assertTimestamp(run.recordedAt, "recordedAt");
495
+ const usage = normalizeBenchmarkUsage(run.usage);
496
+ assertNullableFiniteNumber(run.wallClockMs, "wallClockMs");
497
+ if (!BENCHMARK_VERIFICATION_RESULTS.includes(run.verification)) {
498
+ throw benchmarkError("verification is not a supported result");
499
+ }
500
+ assertNullableNonNegativeInteger(run.verificationCycles, "verificationCycles");
501
+ assertNullableNonNegativeInteger(run.comparableSteps, "comparableSteps");
502
+ assertBenchmarkMetadata(run.metadata, run);
503
+ if ("diagnostics" in run) normalizeBenchmarkDiagnostics(run.diagnostics);
504
+ normalizeBenchmarkContextUsage(run.contextUsage, run.metadata.resolvedProfile);
505
+ normalizeBenchmarkQuality(run.quality);
506
+ if (usage.model !== null && run.metadata.model !== usage.model) {
507
+ throw benchmarkError("metadata.model must match usage.model when reported");
508
+ }
509
+ if (usage.provider !== null && run.metadata.provider !== usage.provider) {
510
+ throw benchmarkError("metadata.provider must match usage.provider when reported");
511
+ }
512
+ return run;
513
+ }
514
+
515
+ export function createBenchmarkRun({
516
+ runSetId,
517
+ runId,
518
+ runIndex,
519
+ scenario,
520
+ mode,
521
+ recordedAt = new Date().toISOString(),
522
+ usage = {},
523
+ wallClockMs = null,
524
+ verification = "NOT_AVAILABLE",
525
+ verificationCycles = null,
526
+ comparableSteps = null,
527
+ diagnostics = undefined,
528
+ contextUsage = undefined,
529
+ quality = undefined,
530
+ metadata = {},
531
+ } = {}) {
532
+ assertBenchmarkScenario(scenario);
533
+ const normalizedUsage = normalizeBenchmarkUsage(usage);
534
+ const profile = PROFILE_BY_MODE[mode];
535
+ if (!profile) throw benchmarkError(`Unsupported benchmark mode: ${mode}`);
536
+ const resolvedProfile = metadata.resolvedProfile ?? profile.resolvedProfile;
537
+ normalizedModeProfile(mode, resolvedProfile);
538
+ const normalizedDiagnostics = normalizeBenchmarkDiagnostics(diagnostics);
539
+ const run = {
540
+ schemaVersion: 1,
541
+ benchmarkVersion: BENCHMARK_VERSION,
542
+ runSetId,
543
+ runId,
544
+ scenarioId: scenario.scenarioId,
545
+ mode,
546
+ runIndex,
547
+ recordedAt,
548
+ usage: normalizedUsage,
549
+ wallClockMs,
550
+ verification,
551
+ verificationCycles,
552
+ comparableSteps,
553
+ ...(normalizedDiagnostics === null ? {} : { diagnostics: normalizedDiagnostics }),
554
+ contextUsage: normalizeBenchmarkContextUsage(contextUsage, resolvedProfile),
555
+ quality: normalizeBenchmarkQuality(quality),
556
+ metadata: {
557
+ scenarioId: scenario.scenarioId,
558
+ mode,
559
+ model: metadata.model ?? normalizedUsage.model,
560
+ provider: metadata.provider ?? normalizedUsage.provider,
561
+ promptSpecFingerprint: metadata.promptSpecFingerprint,
562
+ projectRevision: metadata.projectRevision ?? null,
563
+ benchmarkVersion: BENCHMARK_VERSION,
564
+ environmentClass: metadata.environmentClass,
565
+ requestedProfile: profile.requestedProfile,
566
+ resolvedProfile,
567
+ verificationCycles,
568
+ comparableSteps,
569
+ ...(metadata.nodeVersion ? { nodeVersion: metadata.nodeVersion } : {}),
570
+ ...(metadata.os ? { os: metadata.os } : {}),
571
+ ...(metadata.arch ? { arch: metadata.arch } : {}),
572
+ },
573
+ };
574
+ return assertBenchmarkRun(run);
575
+ }
576
+
577
+ function sortedFinite(values) {
578
+ return values.filter((value) => typeof value === "number" && Number.isFinite(value)).sort((a, b) => a - b);
579
+ }
580
+
581
+ function percentileOf(sorted, fraction) {
582
+ const position = (sorted.length - 1) * fraction;
583
+ const lower = Math.floor(position);
584
+ const upper = Math.ceil(position);
585
+ if (lower === upper) return sorted[lower];
586
+ return sorted[lower] + ((sorted[upper] - sorted[lower]) * (position - lower));
587
+ }
588
+
589
+ function statistic(values) {
590
+ const usable = sortedFinite(values);
591
+ if (usable.length === 0) return { count: 0, average: null, p50: null, p95: null, minimum: null, maximum: null };
592
+ return {
593
+ count: usable.length,
594
+ average: Number((usable.reduce((sum, value) => sum + value, 0) / usable.length).toFixed(4)),
595
+ p50: Number(percentileOf(usable, 0.5).toFixed(4)),
596
+ p95: Number(percentileOf(usable, 0.95).toFixed(4)),
597
+ minimum: usable[0],
598
+ maximum: usable.at(-1),
599
+ };
600
+ }
601
+
602
+ // Benchmark methodology v2 favors robust statistics for skewed token
603
+ // distributions: median/IQR/MAD instead of average/stddev alone.
604
+ export function robustStatistic(values) {
605
+ const usable = sortedFinite(values);
606
+ if (usable.length === 0) {
607
+ return {
608
+ count: 0,
609
+ average: null,
610
+ minimum: null,
611
+ p25: null,
612
+ p50: null,
613
+ p75: null,
614
+ p90: null,
615
+ p95: null,
616
+ maximum: null,
617
+ iqr: null,
618
+ mad: null,
619
+ outlierCount: 0,
620
+ };
621
+ }
622
+ const q1 = percentileOf(usable, 0.25);
623
+ const median = percentileOf(usable, 0.5);
624
+ const q3 = percentileOf(usable, 0.75);
625
+ const iqr = q3 - q1;
626
+ const upperFence = q3 + 1.5 * iqr;
627
+ const deviations = usable.map((value) => Math.abs(value - median)).sort((a, b) => a - b);
628
+ return {
629
+ count: usable.length,
630
+ average: Number((usable.reduce((sum, value) => sum + value, 0) / usable.length).toFixed(4)),
631
+ minimum: usable[0],
632
+ p25: Number(q1.toFixed(4)),
633
+ p50: Number(median.toFixed(4)),
634
+ p75: Number(q3.toFixed(4)),
635
+ p90: Number(percentileOf(usable, 0.9).toFixed(4)),
636
+ p95: Number(percentileOf(usable, 0.95).toFixed(4)),
637
+ maximum: usable.at(-1),
638
+ iqr: Number(iqr.toFixed(4)),
639
+ mad: Number(percentileOf(deviations, 0.5).toFixed(4)),
640
+ outlierCount: usable.filter((value) => value > upperFence).length,
641
+ };
642
+ }
643
+
644
+ function trustedMeasurement(run) {
645
+ return ["PROVIDER_REPORTED", "HOST_REPORTED"].includes(run.usage.source)
646
+ && run.verification === "PASS"
647
+ && run.metadata.model !== null
648
+ && run.metadata.provider !== null
649
+ && run.metadata.promptSpecFingerprint !== null
650
+ && run.metadata.projectRevision !== null
651
+ && run.metadata.comparableSteps !== null
652
+ && run.metadata.comparableSteps > 0;
653
+ }
654
+
655
+ function comparablePair(left, right) {
656
+ if (!trustedMeasurement(left) || !trustedMeasurement(right)) return false;
657
+ const fields = [
658
+ "scenarioId",
659
+ "model",
660
+ "provider",
661
+ "promptSpecFingerprint",
662
+ "projectRevision",
663
+ "benchmarkVersion",
664
+ "environmentClass",
665
+ "nodeVersion",
666
+ "os",
667
+ "arch",
668
+ ];
669
+ return fields.every((field) => (left.metadata[field] ?? null) === (right.metadata[field] ?? null));
670
+ }
671
+
672
+ export function distributionDeltaPercent(baselineStats, candidateStats) {
673
+ if (!baselineStats || !candidateStats) return { p50: null, p95: null };
674
+ const p50Delta = (Number.isFinite(baselineStats.p50) && Number.isFinite(candidateStats.p50) && baselineStats.p50 > 0)
675
+ ? Number((((candidateStats.p50 - baselineStats.p50) / baselineStats.p50) * 100).toFixed(4))
676
+ : null;
677
+ const p95Delta = (Number.isFinite(baselineStats.p95) && Number.isFinite(candidateStats.p95) && baselineStats.p95 > 0)
678
+ ? Number((((candidateStats.p95 - baselineStats.p95) / baselineStats.p95) * 100).toFixed(4))
679
+ : null;
680
+ return { p50: p50Delta, p95: p95Delta };
681
+ }
682
+
683
+ function legacyComparisonForMode(directRuns, modeRuns) {
684
+ const directByIndex = new Map(directRuns.map((run) => [run.runIndex, run]));
685
+ const pairs = modeRuns
686
+ .map((run) => ({ variant: run, direct: directByIndex.get(run.runIndex) }))
687
+ .filter((pair) => pair.direct && comparablePair(pair.direct, pair.variant));
688
+ const tokenOverheads = pairs
689
+ .filter(({ direct, variant }) => Number.isFinite(direct.usage.totalTokens) && Number.isFinite(variant.usage.totalTokens) && direct.usage.totalTokens > 0)
690
+ .map(({ direct, variant }) => ((variant.usage.totalTokens - direct.usage.totalTokens) / direct.usage.totalTokens) * 100);
691
+ const timeOverheads = pairs
692
+ .filter(({ direct, variant }) => Number.isFinite(direct.wallClockMs) && Number.isFinite(variant.wallClockMs) && direct.wallClockMs > 0)
693
+ .map(({ direct, variant }) => ((variant.wallClockMs - direct.wallClockMs) / direct.wallClockMs) * 100);
694
+ const tokenStats = statistic(tokenOverheads);
695
+ const timeStats = statistic(timeOverheads);
696
+ const claimAllowed = tokenStats.count > 0 && timeStats.count > 0;
697
+ return {
698
+ comparablePairs: pairs.length,
699
+ tokenComparablePairs: tokenStats.count,
700
+ timeComparablePairs: timeStats.count,
701
+ tokenOverheadPercent: { p50: tokenStats.p50, p95: tokenStats.p95 },
702
+ timeOverheadPercent: { p50: timeStats.p50, p95: timeStats.p95 },
703
+ claimStatus: claimAllowed ? "OBSERVATIONAL" : "NOT_COMPARABLE",
704
+ claimAllowed,
705
+ reason: claimAllowed
706
+ ? "Trusted usage, actual timing, verification, and matching comparability metadata are present."
707
+ : "Efficiency claims require trusted usage, actual timing, PASS verification, positive comparable steps, and matching metadata.",
708
+ };
709
+ }
710
+
711
+ function comparisonForMode(directRuns, modeRuns) {
712
+ const directByIndex = new Map(directRuns.map((run) => [run.runIndex, run]));
713
+ const pairs = modeRuns
714
+ .map((run) => ({ variant: run, direct: directByIndex.get(run.runIndex) }))
715
+ .filter((pair) => pair.direct && comparablePair(pair.direct, pair.variant));
716
+
717
+ const validTokenPairs = pairs.filter(({ direct, variant }) => (
718
+ Number.isFinite(direct.usage?.totalTokens)
719
+ && Number.isFinite(variant.usage?.totalTokens)
720
+ && direct.usage.totalTokens > 0
721
+ ));
722
+ const validTimePairs = pairs.filter(({ direct, variant }) => (
723
+ Number.isFinite(direct.wallClockMs)
724
+ && Number.isFinite(variant.wallClockMs)
725
+ && direct.wallClockMs > 0
726
+ ));
727
+
728
+ const comparableDirectTokens = validTokenPairs.map(({ direct }) => direct.usage.totalTokens);
729
+ const comparableCandidateTokens = validTokenPairs.map(({ variant }) => variant.usage.totalTokens);
730
+
731
+ const comparableDirectStats = robustStatistic(comparableDirectTokens);
732
+ const comparableCandidateStats = robustStatistic(comparableCandidateTokens);
733
+
734
+ const distDelta = distributionDeltaPercent(comparableDirectStats, comparableCandidateStats);
735
+
736
+ const lowBaselineThreshold = (Number.isFinite(comparableDirectStats.p50) && comparableDirectStats.p50 > 0)
737
+ ? Number((comparableDirectStats.p50 * LOW_BASELINE_RATIO).toFixed(4))
738
+ : null;
739
+
740
+ const pairedRuns = validTokenPairs.map(({ direct, variant }) => {
741
+ const directTokens = direct.usage.totalTokens;
742
+ const candidateTokens = variant.usage.totalTokens;
743
+ const pairedOverhead = Number((((candidateTokens - directTokens) / directTokens) * 100).toFixed(4));
744
+ const absoluteDelta = candidateTokens - directTokens;
745
+ const baselineRegime = (lowBaselineThreshold !== null && directTokens < lowBaselineThreshold)
746
+ ? "LOW_BASELINE_TOKEN_REGIME"
747
+ : "NORMAL";
748
+ return {
749
+ runIndex: variant.runIndex,
750
+ directTokens,
751
+ candidateTokens,
752
+ absoluteDeltaTokens: absoluteDelta,
753
+ pairedOverheadPercent: pairedOverhead,
754
+ baselineRegime,
755
+ };
756
+ });
757
+
758
+ const tokenOverheads = validTokenPairs.map(({ direct, variant }) => (
759
+ ((variant.usage.totalTokens - direct.usage.totalTokens) / direct.usage.totalTokens) * 100
760
+ ));
761
+ const timeOverheads = validTimePairs.map(({ direct, variant }) => (
762
+ ((variant.wallClockMs - direct.wallClockMs) / direct.wallClockMs) * 100
763
+ ));
764
+
765
+ const tokenStats = statistic(tokenOverheads);
766
+ const timeStats = statistic(timeOverheads);
767
+ const claimAllowed = tokenStats.count > 0 && timeStats.count > 0;
768
+
769
+ const lowBaselinePairCount = pairedRuns.filter((p) => p.baselineRegime === "LOW_BASELINE_TOKEN_REGIME").length;
770
+
771
+ return {
772
+ comparablePairs: pairs.length,
773
+ tokenComparablePairs: tokenStats.count,
774
+ timeComparablePairs: timeStats.count,
775
+ tokenOverheadPercent: { p50: tokenStats.p50, p95: tokenStats.p95 },
776
+ pairedOverheadPercent: { p50: tokenStats.p50, p95: tokenStats.p95 },
777
+ distributionDeltaPercent: distDelta,
778
+ timeOverheadPercent: { p50: timeStats.p50, p95: timeStats.p95 },
779
+ pairedRatioDiagnostics: {
780
+ pairCount: pairs.length,
781
+ baselineMinimum: comparableDirectStats.minimum,
782
+ baselineP25: comparableDirectStats.p25,
783
+ baselineP50: comparableDirectStats.p50,
784
+ lowBaselineThreshold,
785
+ lowBaselinePairCount,
786
+ },
787
+ pairedRuns,
788
+ claimStatus: claimAllowed ? "OBSERVATIONAL" : "NOT_COMPARABLE",
789
+ claimAllowed,
790
+ reason: claimAllowed
791
+ ? "Trusted usage, actual timing, verification, and matching comparability metadata are present."
792
+ : "Efficiency claims require trusted usage, actual timing, PASS verification, positive comparable steps, and matching metadata.",
793
+ };
794
+ }
795
+
796
+ function contextUsageAggregate(runs, statisticFn = statistic) {
797
+ const contextUsages = runs.map(contextUsageForRun);
798
+ const totals = contextUsages.map(measuredContextTokens);
799
+ return {
800
+ sources: [...new Set(contextUsages.map((contextUsage) => contextUsage.source))].sort(),
801
+ profiles: [...new Set(contextUsages.map((contextUsage) => contextUsage.profile).filter(Boolean))].sort(),
802
+ measuredRuns: totals.filter((value) => value !== null).length,
803
+ totalTokens: statisticFn(totals),
804
+ items: Object.fromEntries(BENCHMARK_CONTEXT_USAGE_ITEMS.map((item) => [
805
+ item,
806
+ statisticFn(contextUsages.map((contextUsage) => contextUsage.items[item])),
807
+ ])),
808
+ };
809
+ }
810
+
811
+ function qualityAggregate(runs, statisticFn = statistic) {
812
+ const quality = runs.map((run) => normalizeBenchmarkQuality(run.quality));
813
+ return {
814
+ sources: [...new Set(quality.map((item) => item.source))].sort(),
815
+ scores: Object.fromEntries(BENCHMARK_QUALITY_FIELDS.map((field) => [
816
+ field,
817
+ statisticFn(quality.map((item) => item.scores[field])),
818
+ ])),
819
+ };
820
+ }
821
+
822
+ function contextInflationForScenario(balancedRuns, adaptiveRuns) {
823
+ const lightRuns = adaptiveRuns.filter((run) => run.metadata.resolvedProfile === "light");
824
+ const balancedByIndex = new Map(balancedRuns.map((run) => [run.runIndex, run]));
825
+ const pairs = lightRuns
826
+ .map((light) => ({
827
+ light,
828
+ balanced: balancedByIndex.get(light.runIndex),
829
+ }))
830
+ .map((pair) => ({
831
+ ...pair,
832
+ lightTotal: pair.light ? measuredContextTokens(contextUsageForRun(pair.light)) : null,
833
+ balancedTotal: pair.balanced ? measuredContextTokens(contextUsageForRun(pair.balanced)) : null,
834
+ }))
835
+ .filter((pair) => pair.light && pair.balanced && pair.lightTotal !== null && pair.balancedTotal !== null);
836
+ const inflatedPairs = pairs.filter((pair) => pair.lightTotal > pair.balancedTotal);
837
+ const status = lightRuns.length === 0
838
+ ? "NOT_COMPARABLE"
839
+ : pairs.length === 0
840
+ ? "NOT_COMPARABLE"
841
+ : inflatedPairs.length > 0 ? "CONTEXT_INFLATION" : "NOT_DETECTED";
842
+ return {
843
+ status,
844
+ comparablePairs: pairs.length,
845
+ inflatedPairs: inflatedPairs.length,
846
+ lightContextTokens: statistic(pairs.map((pair) => pair.lightTotal)),
847
+ balancedContextTokens: statistic(pairs.map((pair) => pair.balancedTotal)),
848
+ blocking: false,
849
+ reason: status === "CONTEXT_INFLATION"
850
+ ? "Host-reported LIGHT context exceeded the comparable BALANCED context in at least one repeated run."
851
+ : status === "NOT_DETECTED"
852
+ ? "Comparable host-reported LIGHT and BALANCED context values did not show inflation."
853
+ : lightRuns.length === 0
854
+ ? "The adaptive mode did not resolve to LIGHT for this scenario."
855
+ : "Context inflation requires complete HOST_REPORTED context items for matching LIGHT and BALANCED runs.",
856
+ };
857
+ }
858
+
859
+ // Deterministic benchmark-level outlier classification. The IQR rule is an
860
+ // analysis convention, not protocol truth; it never changes lifecycle state.
861
+ export function analyzeTokenOutliers(runsByMode) {
862
+ return {
863
+ policy: OUTLIER_POLICY,
864
+ minimumSamples: OUTLIER_MINIMUM_SAMPLES,
865
+ modes: Object.fromEntries(BENCHMARK_MODES.map((mode) => [
866
+ mode,
867
+ tokenOutlierAnalysisForMode(runsByMode[mode] ?? []),
868
+ ])),
869
+ };
870
+ }
871
+
872
+ function tokenOutlierAnalysisForMode(runs) {
873
+ const measured = runs.filter((run) => Number.isFinite(run.usage.totalTokens));
874
+ const notEnough = {
875
+ sampleCount: runs.length,
876
+ measuredCount: measured.length,
877
+ status: "NOT_ENOUGH_SAMPLES",
878
+ q1: null,
879
+ q3: null,
880
+ iqr: null,
881
+ median: null,
882
+ upperFence: null,
883
+ outliers: [],
884
+ };
885
+ if (measured.length < OUTLIER_MINIMUM_SAMPLES) return notEnough;
886
+ const stats = robustStatistic(measured.map((run) => run.usage.totalTokens));
887
+ const medianModelTurns = robustStatistic(measured.map((run) => run.diagnostics?.modelTurns ?? null)).p50;
888
+ const medianToolCalls = robustStatistic(measured.map((run) => run.diagnostics?.toolCalls ?? null)).p50;
889
+ const upperFence = stats.p75 + 1.5 * stats.iqr;
890
+ const outliers = measured
891
+ .filter((run) => run.usage.totalTokens > upperFence)
892
+ .map((run) => ({
893
+ runId: run.runId,
894
+ runIndex: run.runIndex,
895
+ totalTokens: run.usage.totalTokens,
896
+ scenarioMedianTokens: stats.p50,
897
+ ratioToMedian: stats.p50 > 0 ? Number((run.usage.totalTokens / stats.p50).toFixed(4)) : null,
898
+ reasons: ["TOKEN_IQR_OUTLIER"],
899
+ diagnosticSignals: evaluateRunawaySignals(run, { medianModelTurns, medianToolCalls, tokenOutlier: true }),
900
+ }))
901
+ .sort((left, right) => left.runIndex - right.runIndex);
902
+ return {
903
+ sampleCount: runs.length,
904
+ measuredCount: measured.length,
905
+ status: "MEASURED",
906
+ q1: stats.p25,
907
+ q3: stats.p75,
908
+ iqr: stats.iqr,
909
+ median: stats.p50,
910
+ upperFence: Number(upperFence.toFixed(4)),
911
+ outliers,
912
+ };
913
+ }
914
+
915
+ // Observational tail stability status; the thresholds are benchmark policy,
916
+ // never lifecycle policy.
917
+ export function classifyTailStatus({
918
+ sampleCount,
919
+ p95TokenOverheadPercent,
920
+ outlierCount = 0,
921
+ sampleMinimum = TAIL_SAMPLE_MINIMUM,
922
+ regressionPercent = LIGHT_EFFICIENCY_OBJECTIVES.p95TokenOverheadPercent,
923
+ } = {}) {
924
+ if (!Number.isInteger(sampleCount) || sampleCount < sampleMinimum) return "NOT_ENOUGH_SAMPLES";
925
+ if (p95TokenOverheadPercent === null || p95TokenOverheadPercent === undefined) return "NOT_ENOUGH_SAMPLES";
926
+ if (p95TokenOverheadPercent > regressionPercent) return "TAIL_REGRESSION";
927
+ if (outlierCount > 0) return "TAIL_WARNING";
928
+ return "TAIL_STABLE";
929
+ }
930
+
931
+ export function classifyDistributionTailStatus({
932
+ sampleCount,
933
+ distributionP95DeltaPercent,
934
+ sampleMinimum = TAIL_SAMPLE_MINIMUM,
935
+ regressionPercent = LIGHT_EFFICIENCY_OBJECTIVES.p95TokenOverheadPercent,
936
+ } = {}) {
937
+ if (!Number.isInteger(sampleCount) || sampleCount < sampleMinimum) return "NOT_ENOUGH_SAMPLES";
938
+ if (distributionP95DeltaPercent === null || distributionP95DeltaPercent === undefined) return "NOT_ENOUGH_SAMPLES";
939
+ if (distributionP95DeltaPercent > regressionPercent) return "TAIL_REGRESSION";
940
+ return "TAIL_ACCEPTABLE";
941
+ }
942
+
943
+ export function classifyCombinedTailStatus({
944
+ pairedStatus,
945
+ distributionStatus,
946
+ lowBaselinePairCount = 0,
947
+ sampleCount,
948
+ sampleMinimum = TAIL_SAMPLE_MINIMUM,
949
+ } = {}) {
950
+ if (!Number.isInteger(sampleCount) || sampleCount < sampleMinimum) return "TAIL_UNRESOLVED";
951
+ if (pairedStatus === "NOT_ENOUGH_SAMPLES" || distributionStatus === "NOT_ENOUGH_SAMPLES") return "TAIL_UNRESOLVED";
952
+ if (distributionStatus === "TAIL_REGRESSION") return "TAIL_DISTRIBUTION_REGRESSION";
953
+ if (pairedStatus === "TAIL_REGRESSION" && distributionStatus === "TAIL_ACCEPTABLE" && lowBaselinePairCount > 0) {
954
+ return "TAIL_PAIRED_RATIO_SENSITIVE";
955
+ }
956
+ if (pairedStatus === "TAIL_STABLE" && distributionStatus === "TAIL_ACCEPTABLE") return "TAIL_CONSISTENT";
957
+ if (pairedStatus === "TAIL_WARNING" && distributionStatus === "TAIL_ACCEPTABLE") return "TAIL_CONSISTENT";
958
+ if (pairedStatus === distributionStatus) return "TAIL_CONSISTENT";
959
+ return "TAIL_UNRESOLVED";
960
+ }
961
+
962
+ function diagnosticsAggregate(runs) {
963
+ return Object.fromEntries(BENCHMARK_DIAGNOSTIC_COUNT_FIELDS.map((field) => [
964
+ field,
965
+ robustStatistic(runs.map((run) => run.diagnostics?.[field] ?? null)),
966
+ ]));
967
+ }
968
+
969
+ function modeAggregateRobust(runs, { includeContextUsage = false, includeQuality = false } = {}) {
970
+ const verificationCount = runs.filter((run) => run.verification === "PASS").length;
971
+ const tokenPerStep = runs.map((run) => (
972
+ Number.isFinite(run.usage.totalTokens) && Number.isInteger(run.comparableSteps) && run.comparableSteps > 0
973
+ ? run.usage.totalTokens / run.comparableSteps
974
+ : null
975
+ ));
976
+ return {
977
+ runCount: runs.length,
978
+ verificationSuccessRate: runs.length > 0 ? Number((verificationCount / runs.length).toFixed(4)) : null,
979
+ usageSources: [...new Set(runs.map((run) => run.usage.source))].sort(),
980
+ totalTokens: robustStatistic(runs.map((run) => run.usage.totalTokens)),
981
+ wallClockMs: robustStatistic(runs.map((run) => run.wallClockMs)),
982
+ verificationCycles: robustStatistic(runs.map((run) => run.verificationCycles)),
983
+ comparableSteps: robustStatistic(runs.map((run) => run.comparableSteps)),
984
+ tokensPerComparableStep: robustStatistic(tokenPerStep),
985
+ diagnostics: diagnosticsAggregate(runs),
986
+ ...(includeContextUsage ? { contextUsage: contextUsageAggregate(runs, robustStatistic) } : {}),
987
+ ...(includeQuality ? { quality: qualityAggregate(runs, robustStatistic) } : {}),
988
+ };
989
+ }
990
+
991
+ function modeAggregate(runs, { includeContextUsage = false, includeQuality = false } = {}) {
992
+ const verificationCount = runs.filter((run) => run.verification === "PASS").length;
993
+ const comparableSteps = runs.map((run) => run.comparableSteps);
994
+ const tokenPerStep = runs.map((run) => (
995
+ Number.isFinite(run.usage.totalTokens) && Number.isInteger(run.comparableSteps) && run.comparableSteps > 0
996
+ ? run.usage.totalTokens / run.comparableSteps
997
+ : null
998
+ ));
999
+ return {
1000
+ runCount: runs.length,
1001
+ verificationSuccessRate: runs.length > 0 ? Number((verificationCount / runs.length).toFixed(4)) : null,
1002
+ usageSources: [...new Set(runs.map((run) => run.usage.source))].sort(),
1003
+ totalTokens: statistic(runs.map((run) => run.usage.totalTokens)),
1004
+ wallClockMs: statistic(runs.map((run) => run.wallClockMs)),
1005
+ verificationCycles: statistic(runs.map((run) => run.verificationCycles)),
1006
+ comparableSteps: statistic(comparableSteps),
1007
+ tokensPerComparableStep: statistic(tokenPerStep),
1008
+ ...(includeContextUsage ? { contextUsage: contextUsageAggregate(runs) } : {}),
1009
+ ...(includeQuality ? { quality: qualityAggregate(runs) } : {}),
1010
+ };
1011
+ }
1012
+
1013
+ function lightObjectivesFor(scenario, comparisons) {
1014
+ if (scenario.expectedProfile !== "light") return null;
1015
+ return {
1016
+ p50TokenOverheadPercent: LIGHT_EFFICIENCY_OBJECTIVES.p50TokenOverheadPercent,
1017
+ p95TokenOverheadPercent: LIGHT_EFFICIENCY_OBJECTIVES.p95TokenOverheadPercent,
1018
+ status: comparisons.forgeloopAdaptive?.claimAllowed ? "OBSERVATIONAL" : "NOT_VERIFIED",
1019
+ p50Pass: comparisons.forgeloopAdaptive?.tokenOverheadPercent.p50 === null
1020
+ ? null
1021
+ : comparisons.forgeloopAdaptive.tokenOverheadPercent.p50 <= LIGHT_EFFICIENCY_OBJECTIVES.p50TokenOverheadPercent,
1022
+ p95Pass: comparisons.forgeloopAdaptive?.tokenOverheadPercent.p95 === null
1023
+ ? null
1024
+ : comparisons.forgeloopAdaptive.tokenOverheadPercent.p95 <= LIGHT_EFFICIENCY_OBJECTIVES.p95TokenOverheadPercent,
1025
+ };
1026
+ }
1027
+
1028
+ export function aggregateBenchmarkRuns({ scenario, runs } = {}) {
1029
+ assertBenchmarkScenario(scenario);
1030
+ if (!Array.isArray(runs) || runs.length === 0) throw benchmarkError("runs must contain at least one benchmark run");
1031
+ for (const run of runs) assertBenchmarkRun(run);
1032
+ const runSetIds = new Set(runs.map((run) => run.runSetId));
1033
+ if (runSetIds.size !== 1) throw benchmarkError("all runs in an aggregate must belong to one run set");
1034
+ if (runs.some((run) => run.scenarioId !== scenario.scenarioId)) {
1035
+ throw benchmarkError("aggregate runs must belong to the supplied scenario");
1036
+ }
1037
+ const byMode = Object.fromEntries(BENCHMARK_MODES.map((mode) => [
1038
+ mode,
1039
+ runs.filter((run) => run.mode === mode).sort((left, right) => left.runIndex - right.runIndex),
1040
+ ]));
1041
+ const duplicateKeys = new Set();
1042
+ for (const run of runs) {
1043
+ const key = `${run.mode}:${run.runIndex}`;
1044
+ if (duplicateKeys.has(key)) throw benchmarkError(`duplicate benchmark run: ${key}`);
1045
+ duplicateKeys.add(key);
1046
+ }
1047
+ const directRuns = byMode.direct;
1048
+ const includeContextUsage = runs.some((run) => Object.prototype.hasOwnProperty.call(run, "contextUsage"));
1049
+ const includeQuality = runs.some((run) => Object.prototype.hasOwnProperty.call(run, "quality"));
1050
+ const legacy = runs.every((run) => run.benchmarkVersion === "1");
1051
+ if (legacy) {
1052
+ const comparisons = Object.fromEntries(BENCHMARK_MODES.map((mode) => [
1053
+ mode,
1054
+ mode === "direct" ? null : legacyComparisonForMode(directRuns, byMode[mode]),
1055
+ ]));
1056
+ const lightObjectives = lightObjectivesFor(scenario, comparisons);
1057
+ return {
1058
+ schemaVersion: 1,
1059
+ benchmarkVersion: "1",
1060
+ runSetId: runs[0].runSetId,
1061
+ scenarioId: scenario.scenarioId,
1062
+ expectedProfile: scenario.expectedProfile,
1063
+ modeAggregates: Object.fromEntries(BENCHMARK_MODES.map((mode) => [mode, modeAggregate(byMode[mode], { includeContextUsage, includeQuality })])),
1064
+ comparisons,
1065
+ lightObjectives,
1066
+ sourcePolicy: "PROVIDER_REPORTED_OR_HOST_REPORTED_ONLY",
1067
+ claimsAllowed: Object.values(comparisons).some((comparison) => comparison?.claimAllowed === true),
1068
+ generatedFromRunCount: runs.length,
1069
+ ...(includeContextUsage
1070
+ ? { contextInflation: contextInflationForScenario(byMode.forgeloopBalanced, byMode.forgeloopAdaptive) }
1071
+ : {}),
1072
+ };
1073
+ }
1074
+ const comparisons = Object.fromEntries(BENCHMARK_MODES.map((mode) => [
1075
+ mode,
1076
+ mode === "direct" ? null : comparisonForMode(directRuns, byMode[mode]),
1077
+ ]));
1078
+ const lightObjectives = lightObjectivesFor(scenario, comparisons);
1079
+ const outlierAnalysis = analyzeTokenOutliers(byMode);
1080
+ const comparisonsWithTail = Object.fromEntries(BENCHMARK_MODES.map((mode) => {
1081
+ const comparison = comparisons[mode];
1082
+ if (comparison === null) return [mode, null];
1083
+ const outlierCount = outlierAnalysis.modes[mode].outliers.length;
1084
+ const pairedStatus = classifyTailStatus({
1085
+ sampleCount: comparison.tokenComparablePairs,
1086
+ p95TokenOverheadPercent: comparison.tokenOverheadPercent.p95,
1087
+ outlierCount,
1088
+ });
1089
+ const distributionStatus = classifyDistributionTailStatus({
1090
+ sampleCount: comparison.tokenComparablePairs,
1091
+ distributionP95DeltaPercent: comparison.distributionDeltaPercent.p95,
1092
+ });
1093
+ const combinedInterpretation = classifyCombinedTailStatus({
1094
+ pairedStatus,
1095
+ distributionStatus,
1096
+ lowBaselinePairCount: comparison.pairedRatioDiagnostics?.lowBaselinePairCount ?? 0,
1097
+ sampleCount: comparison.tokenComparablePairs,
1098
+ });
1099
+ return [mode, {
1100
+ ...comparison,
1101
+ tail: {
1102
+ sampleMinimum: TAIL_SAMPLE_MINIMUM,
1103
+ sampleCount: comparison.tokenComparablePairs,
1104
+ p95TokenOverheadPercent: comparison.tokenOverheadPercent.p95,
1105
+ pairedOverheadP95Percent: comparison.pairedOverheadPercent.p95,
1106
+ distributionP95DeltaPercent: comparison.distributionDeltaPercent.p95,
1107
+ outlierCount,
1108
+ status: pairedStatus,
1109
+ pairedStatus,
1110
+ distributionStatus,
1111
+ combinedInterpretation,
1112
+ },
1113
+ }];
1114
+ }));
1115
+ return {
1116
+ schemaVersion: 1,
1117
+ benchmarkVersion: BENCHMARK_VERSION,
1118
+ runSetId: runs[0].runSetId,
1119
+ scenarioId: scenario.scenarioId,
1120
+ expectedProfile: scenario.expectedProfile,
1121
+ modeAggregates: Object.fromEntries(BENCHMARK_MODES.map((mode) => [mode, modeAggregateRobust(byMode[mode], { includeContextUsage, includeQuality })])),
1122
+ comparisons: comparisonsWithTail,
1123
+ lightObjectives,
1124
+ sourcePolicy: "PROVIDER_REPORTED_OR_HOST_REPORTED_ONLY",
1125
+ claimsAllowed: Object.values(comparisons).some((comparison) => comparison?.claimAllowed === true),
1126
+ generatedFromRunCount: runs.length,
1127
+ ...(includeContextUsage
1128
+ ? { contextInflation: contextInflationForScenario(byMode.forgeloopBalanced, byMode.forgeloopAdaptive) }
1129
+ : {}),
1130
+ outlierAnalysis,
1131
+ };
1132
+ }
1133
+
1134
+ export function benchmarkScenarioFingerprint(scenario) {
1135
+ assertBenchmarkScenario(scenario);
1136
+ return canonicalFingerprint({
1137
+ benchmarkVersion: scenario.benchmarkVersion,
1138
+ scenarioId: scenario.scenarioId,
1139
+ description: scenario.description,
1140
+ input: scenario.input,
1141
+ expectedProfile: scenario.expectedProfile,
1142
+ });
1143
+ }
1144
+
1145
+ export function benchmarkProfileForMode(mode) {
1146
+ if (!PROFILE_BY_MODE[mode]) throw benchmarkError(`Unsupported benchmark mode: ${mode}`);
1147
+ return { ...PROFILE_BY_MODE[mode] };
1148
+ }