@hassangameryt/freeflow 0.3.0 → 0.4.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 (690) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +5 -2
  3. package/.codex-plugin/plugin.json +8 -9
  4. package/README.md +190 -128
  5. package/assets/feedback-loop.png +0 -0
  6. package/assets/freeflow_workflow_map.png +0 -0
  7. package/assets/workflow.png +0 -0
  8. package/command-surface.json +51 -7
  9. package/hooks/freeflow-runtime-context.mjs +264 -136
  10. package/hooks/tests/check-runtime-context-hook.sh +223 -0
  11. package/package.json +23 -24
  12. package/pi-extension/dist/index.js +264 -80
  13. package/pi-extension/dist/integrations/mcp-config.js +29 -0
  14. package/pi-extension/dist/output-router/host-producer-identification.js +232 -0
  15. package/pi-extension/dist/output-router/native-safety-net.js +216 -0
  16. package/pi-extension/dist/output-router/observed-tool-routing.js +122 -0
  17. package/pi-extension/dist/output-router/renderers.js +1023 -0
  18. package/pi-extension/dist/output-router/router-tools.js +554 -0
  19. package/pi-extension/dist/output-router/schemas.js +383 -0
  20. package/pi-extension/dist/output-router/status.js +744 -0
  21. package/pi-extension/dist/output-router/utils.js +502 -0
  22. package/pi-extension/dist/runtime/runtime-context.js +798 -0
  23. package/pi-extension/dist/settings/settings-tui.js +314 -0
  24. package/pi-extension/dist/settings/settings-ui.js +1487 -0
  25. package/pi-extension/freeflow/index.js +1 -0
  26. package/pi-extension/src/index.ts +230 -56
  27. package/pi-extension/src/{host-producer-identification.ts → output-router/host-producer-identification.ts} +37 -7
  28. package/pi-extension/src/{native-safety-net.ts → output-router/native-safety-net.ts} +7 -11
  29. package/pi-extension/src/{observed-tool-routing.ts → output-router/observed-tool-routing.ts} +19 -11
  30. package/pi-extension/src/{renderers.ts → output-router/renderers.ts} +246 -55
  31. package/pi-extension/src/{router-tools.ts → output-router/router-tools.ts} +130 -29
  32. package/pi-extension/src/{schemas.ts → output-router/schemas.ts} +171 -43
  33. package/pi-extension/src/output-router/status.ts +791 -0
  34. package/pi-extension/src/{utils.ts → output-router/utils.ts} +80 -18
  35. package/pi-extension/src/runtime/runtime-context.ts +895 -0
  36. package/pi-extension/src/settings/settings-tui.ts +408 -0
  37. package/pi-extension/src/settings/settings-ui.ts +1730 -0
  38. package/pi-extension/tests/integration/pi-extension.test.js +4018 -0
  39. package/pi-extension/tests/output-router/observed-producers.test.js +132 -0
  40. package/pi-extension/tests/output-router/search.test.js +722 -0
  41. package/pi-extension/tests/settings/settings-tui.test.js +243 -0
  42. package/router/dist/benchmarks/benchmark-harness.d.ts +16 -13
  43. package/router/dist/benchmarks/benchmark-harness.js +62 -62
  44. package/router/dist/benchmarks/benchmarks.d.ts +80 -73
  45. package/router/dist/benchmarks/benchmarks.js +860 -761
  46. package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +71 -67
  47. package/router/dist/benchmarks/codex-qa-benchmarks.js +429 -390
  48. package/router/dist/benchmarks/command-benchmarks.d.ts +107 -92
  49. package/router/dist/benchmarks/command-benchmarks.js +616 -571
  50. package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +64 -56
  51. package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +679 -613
  52. package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +103 -95
  53. package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +1188 -1103
  54. package/router/dist/benchmarks/context-saving-baseline.d.ts +47 -41
  55. package/router/dist/benchmarks/context-saving-baseline.js +405 -374
  56. package/router/dist/benchmarks/index-benchmarks.d.ts +74 -69
  57. package/router/dist/benchmarks/index-benchmarks.js +761 -661
  58. package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +80 -69
  59. package/router/dist/benchmarks/storage-policy-benchmarks.js +549 -469
  60. package/router/dist/benchmarks/vault-index-benchmarks.d.ts +43 -34
  61. package/router/dist/benchmarks/vault-index-benchmarks.js +294 -229
  62. package/router/dist/config/config.d.ts +61 -54
  63. package/router/dist/config/config.js +551 -372
  64. package/router/dist/config/router-contract.d.ts +2 -2
  65. package/router/dist/config/router-contract.js +38 -38
  66. package/router/dist/config/schema.d.ts +19 -10
  67. package/router/dist/config/schema.js +586 -538
  68. package/router/dist/config/types.d.ts +413 -361
  69. package/router/dist/config/types.js +19 -8
  70. package/router/dist/evidence/bounded-evidence.d.ts +26 -26
  71. package/router/dist/evidence/bounded-evidence.js +265 -252
  72. package/router/dist/evidence/evidence-range-selector.d.ts +16 -14
  73. package/router/dist/evidence/evidence-range-selector.js +192 -191
  74. package/router/dist/evidence/evidence-search.d.ts +18 -16
  75. package/router/dist/evidence/evidence-search.js +401 -377
  76. package/router/dist/evidence/evidence.d.ts +17 -17
  77. package/router/dist/evidence/evidence.js +163 -159
  78. package/router/dist/evidence/failure-contracts.d.ts +25 -15
  79. package/router/dist/evidence/failure-contracts.js +132 -126
  80. package/router/dist/evidence/line-ranges.d.ts +17 -15
  81. package/router/dist/evidence/line-ranges.js +18 -18
  82. package/router/dist/experiments/local-index.d.ts +47 -41
  83. package/router/dist/experiments/local-index.js +477 -458
  84. package/router/dist/local/local-traversal.d.ts +18 -0
  85. package/router/dist/local/local-traversal.js +334 -0
  86. package/router/dist/processing/engine.d.ts +94 -70
  87. package/router/dist/processing/engine.js +462 -364
  88. package/router/dist/processing/reducers.d.ts +208 -194
  89. package/router/dist/processing/reducers.js +1434 -1256
  90. package/router/dist/processing/renderers.d.ts +24 -18
  91. package/router/dist/processing/renderers.js +161 -152
  92. package/router/dist/processing/scripts.d.ts +80 -67
  93. package/router/dist/processing/scripts.js +343 -290
  94. package/router/dist/repo/repo-traversal.d.ts +9 -9
  95. package/router/dist/repo/repo-traversal.js +205 -202
  96. package/router/dist/routing/observed-reducers.d.ts +25 -19
  97. package/router/dist/routing/observed-reducers.js +559 -545
  98. package/router/dist/routing/observed-routing.d.ts +23 -14
  99. package/router/dist/routing/observed-routing.js +319 -318
  100. package/router/dist/routing/parsers.d.ts +10 -10
  101. package/router/dist/routing/parsers.js +454 -406
  102. package/router/dist/routing/run-filters.d.ts +45 -41
  103. package/router/dist/routing/run-filters.js +215 -207
  104. package/router/dist/routing/run-reducers.d.ts +45 -26
  105. package/router/dist/routing/run-reducers.js +102 -90
  106. package/router/dist/sandbox/adapter-roots.d.ts +34 -26
  107. package/router/dist/sandbox/adapter-roots.js +43 -41
  108. package/router/dist/sandbox/eryx-python-adapter.d.ts +9 -5
  109. package/router/dist/sandbox/eryx-python-adapter.js +659 -588
  110. package/router/dist/sandbox/jq-wasm-adapter.d.ts +3 -3
  111. package/router/dist/sandbox/jq-wasm-adapter.js +319 -311
  112. package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +9 -5
  113. package/router/dist/sandbox/quickjs-wasi-adapter.js +336 -333
  114. package/router/dist/sandbox/script-sandbox.d.ts +105 -84
  115. package/router/dist/sandbox/script-sandbox.js +294 -260
  116. package/router/dist/setup/script-transform-adapters.d.ts +23 -19
  117. package/router/dist/setup/script-transform-adapters.js +223 -204
  118. package/router/dist/tools/batch.d.ts +27 -16
  119. package/router/dist/tools/batch.js +493 -416
  120. package/router/dist/tools/run.d.ts +47 -35
  121. package/router/dist/tools/run.js +1171 -1086
  122. package/router/dist/tools/search.d.ts +53 -31
  123. package/router/dist/tools/search.js +1224 -1065
  124. package/router/dist/transform/engine.d.ts +121 -96
  125. package/router/dist/transform/engine.js +1853 -1736
  126. package/router/dist/vault/vault-index.d.ts +97 -78
  127. package/router/dist/vault/vault-index.js +347 -342
  128. package/router/dist/vault/vault.d.ts +109 -74
  129. package/router/dist/vault/vault.js +528 -533
  130. package/runtime/interaction-contract.md +16 -0
  131. package/skills/bypass/SKILL.md +52 -38
  132. package/skills/commit-work/SKILL.md +54 -46
  133. package/skills/commit-work/references/staging-decisions.md +46 -24
  134. package/skills/decision-gate/SKILL.md +48 -0
  135. package/skills/design-for-depth/SKILL.md +75 -59
  136. package/skills/design-for-depth/references/design-pressure-signals.md +56 -7
  137. package/skills/design-for-depth/references/interface-design-loop.md +156 -0
  138. package/skills/design-for-depth/references/software-design-philosophy.md +32 -3
  139. package/skills/diagnose-failure/SKILL.md +65 -60
  140. package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +36 -0
  141. package/skills/diagnose-failure/references/flaky-and-performance.md +30 -18
  142. package/skills/discuss/SKILL.md +121 -0
  143. package/skills/discuss/references/checkpoints.md +66 -0
  144. package/skills/evaluate-skill/SKILL.md +62 -53
  145. package/skills/evaluate-skill/references/definition-schema.md +345 -0
  146. package/skills/evaluate-skill/references/evaluation-design.md +86 -0
  147. package/skills/evaluate-skill/references/execution-and-evidence.md +85 -0
  148. package/skills/evaluate-skill/references/review-and-revision.md +51 -0
  149. package/skills/evaluate-skill/scripts/lib/definitions.mjs +296 -0
  150. package/skills/evaluate-skill/scripts/lib/evidence.mjs +46 -0
  151. package/skills/evaluate-skill/scripts/lib/grade-comparison.mjs +60 -0
  152. package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +148 -0
  153. package/skills/evaluate-skill/scripts/lib/grade-support.mjs +126 -0
  154. package/skills/evaluate-skill/scripts/lib/grade-workspace.mjs +192 -0
  155. package/skills/evaluate-skill/scripts/lib/grade.mjs +56 -0
  156. package/skills/evaluate-skill/scripts/lib/pi.mjs +489 -0
  157. package/skills/evaluate-skill/scripts/lib/process.mjs +79 -0
  158. package/skills/evaluate-skill/scripts/lib/rpc.mjs +444 -0
  159. package/skills/evaluate-skill/scripts/lib/runner.mjs +346 -0
  160. package/skills/evaluate-skill/scripts/lib/sandbox.mjs +409 -0
  161. package/skills/evaluate-skill/scripts/lib/view.mjs +337 -0
  162. package/skills/evaluate-skill/scripts/pi-guard.mjs +164 -0
  163. package/skills/evaluate-skill/scripts/skill-eval.mjs +101 -0
  164. package/skills/execute-work/SKILL.md +99 -0
  165. package/skills/execute-work/references/code-practices.md +78 -0
  166. package/skills/execute-work/references/execution-loop.md +77 -0
  167. package/skills/finish-branch/SKILL.md +117 -0
  168. package/skills/finish-branch/references/integration-options.md +80 -0
  169. package/skills/handoff/SKILL.md +65 -39
  170. package/skills/handoff/references/templates.md +104 -27
  171. package/skills/launch-work/SKILL.md +116 -0
  172. package/skills/launch-work/references/launch-readiness.md +85 -0
  173. package/skills/migration-work/SKILL.md +115 -0
  174. package/skills/migration-work/references/migration-lifecycle.md +82 -0
  175. package/skills/mode-contract/SKILL.md +50 -52
  176. package/skills/output-router/SKILL.md +21 -17
  177. package/skills/output-router/references/safety-policy.md +1 -1
  178. package/skills/release-work/SKILL.md +118 -0
  179. package/skills/release-work/references/release-evidence.md +78 -0
  180. package/skills/review-artifact/SKILL.md +77 -69
  181. package/skills/review-artifact/references/reviewer-prompt.md +133 -42
  182. package/skills/review-work/SKILL.md +82 -57
  183. package/skills/review-work/references/reviewer-prompt.md +97 -60
  184. package/skills/review-work/references/security-risk-lens.md +67 -0
  185. package/skills/setup-freeflow/SKILL.md +58 -66
  186. package/skills/setup-freeflow/references/activation-contract.md +89 -69
  187. package/skills/setup-freeflow/references/host-setup.md +54 -17
  188. package/skills/setup-freeflow/references/output-router-setup.md +62 -54
  189. package/skills/simplify-code/SKILL.md +80 -0
  190. package/skills/simplify-code/references/simplification-patterns.md +70 -0
  191. package/skills/tdd/SKILL.md +96 -0
  192. package/skills/tdd/references/test-design.md +96 -0
  193. package/skills/track-work/SKILL.md +84 -0
  194. package/skills/track-work/references/working-record-schema.md +378 -0
  195. package/skills/verify-work/SKILL.md +59 -38
  196. package/skills/verify-work/references/browser-runtime-evidence.md +55 -0
  197. package/skills/verify-work/references/integration-evidence.md +51 -0
  198. package/skills/verify-work/references/performance-evidence.md +57 -0
  199. package/skills/workflow/SKILL.md +53 -59
  200. package/skills/workflow/references/domain-skill-composition.md +57 -0
  201. package/skills/workflow/references/workflow-loop.md +92 -0
  202. package/skills/write-plan/SKILL.md +85 -58
  203. package/skills/write-plan/references/plan-shapes.md +132 -46
  204. package/skills/write-skill/SKILL.md +82 -51
  205. package/skills/write-skill/references/activation-boundaries.md +62 -0
  206. package/skills/write-skill/references/agent-first-instructions.md +87 -0
  207. package/skills/write-skill/references/progressive-disclosure.md +63 -0
  208. package/skills/write-skill/scripts/lib/skill-author.mjs +653 -0
  209. package/skills/write-skill/scripts/skill-author.mjs +104 -0
  210. package/skills/write-spec/SKILL.md +65 -54
  211. package/skills/write-spec/references/artifact-standards.md +60 -41
  212. package/skills/write-spec/references/decision-records.md +77 -0
  213. package/skills/write-spec/references/spec-shapes.md +119 -60
  214. package/evals/README.md +0 -32
  215. package/evals/fixtures/copy-conventions.md +0 -31
  216. package/evals/fixtures/output-router/README.md +0 -12
  217. package/evals/fixtures/output-router/failed-command-output.txt +0 -9
  218. package/evals/fixtures/output-router/large-router-manual.md +0 -63
  219. package/evals/fixtures/output-router/native-large-output.txt +0 -40
  220. package/evals/fixtures/output-router/noisy-test-output.txt +0 -30
  221. package/evals/fixtures/output-router/verification-output.txt +0 -8
  222. package/evals/fixtures/tiny-artifact-review-app/README.md +0 -5
  223. package/evals/fixtures/tiny-artifact-review-app/docs/billing-policy.md +0 -10
  224. package/evals/fixtures/tiny-artifact-review-app/docs/specs/billing-webhook-api-draft.md +0 -21
  225. package/evals/fixtures/tiny-artifact-review-app/docs/specs/failed-payment-grace-period.md +0 -24
  226. package/evals/fixtures/tiny-artifact-review-app/docs/specs/immediate-downgrade.md +0 -17
  227. package/evals/fixtures/tiny-artifact-review-app/tests/billing.test.md +0 -8
  228. package/evals/fixtures/tiny-commit-ambiguous-app/.freeflow-eval-setup.sh +0 -15
  229. package/evals/fixtures/tiny-commit-ambiguous-app/README.md +0 -3
  230. package/evals/fixtures/tiny-commit-ambiguous-app/src/billing.ts +0 -5
  231. package/evals/fixtures/tiny-commit-ambiguous-app/src/settings-page.ts +0 -1
  232. package/evals/fixtures/tiny-commit-ambiguous-app/tests/settings.test.md +0 -5
  233. package/evals/fixtures/tiny-commit-app/.freeflow-eval-setup.sh +0 -14
  234. package/evals/fixtures/tiny-commit-app/README.md +0 -3
  235. package/evals/fixtures/tiny-commit-app/docs/specs/settings-title.md +0 -5
  236. package/evals/fixtures/tiny-commit-app/src/billing.ts +0 -5
  237. package/evals/fixtures/tiny-commit-app/src/settings-page.ts +0 -1
  238. package/evals/fixtures/tiny-commit-app/tests/settings.test.md +0 -5
  239. package/evals/fixtures/tiny-commit-everything-app/.freeflow-eval-setup.sh +0 -15
  240. package/evals/fixtures/tiny-commit-everything-app/README.md +0 -3
  241. package/evals/fixtures/tiny-commit-everything-app/docs/specs/settings-title.md +0 -5
  242. package/evals/fixtures/tiny-commit-everything-app/src/billing.ts +0 -5
  243. package/evals/fixtures/tiny-commit-everything-app/src/settings-page.ts +0 -1
  244. package/evals/fixtures/tiny-commit-everything-app/tests/settings.test.md +0 -5
  245. package/evals/fixtures/tiny-commit-staged-app/.freeflow-eval-setup.sh +0 -15
  246. package/evals/fixtures/tiny-commit-staged-app/README.md +0 -3
  247. package/evals/fixtures/tiny-commit-staged-app/docs/specs/settings-title.md +0 -5
  248. package/evals/fixtures/tiny-commit-staged-app/src/billing.ts +0 -5
  249. package/evals/fixtures/tiny-commit-staged-app/src/settings-page.ts +0 -1
  250. package/evals/fixtures/tiny-commit-staged-app/tests/settings.test.md +0 -5
  251. package/evals/fixtures/tiny-commit-staged-mixed-app/.freeflow-eval-setup.sh +0 -15
  252. package/evals/fixtures/tiny-commit-staged-mixed-app/README.md +0 -3
  253. package/evals/fixtures/tiny-commit-staged-mixed-app/docs/billing-policy.md +0 -3
  254. package/evals/fixtures/tiny-commit-staged-mixed-app/docs/release-notes.md +0 -3
  255. package/evals/fixtures/tiny-commit-staged-mixed-app/src/billing.ts +0 -5
  256. package/evals/fixtures/tiny-dashboard-stale-app/README.md +0 -11
  257. package/evals/fixtures/tiny-dashboard-stale-app/src/api-client.ts +0 -13
  258. package/evals/fixtures/tiny-dashboard-stale-app/src/dashboard-data.ts +0 -19
  259. package/evals/fixtures/tiny-dashboard-stale-app/tests/dashboard-data.test.md +0 -9
  260. package/evals/fixtures/tiny-decision-destination-app/README.md +0 -6
  261. package/evals/fixtures/tiny-decision-destination-app/src/risk.ts +0 -8
  262. package/evals/fixtures/tiny-decision-destination-app/tests/risk.test.md +0 -4
  263. package/evals/fixtures/tiny-design-depth-app/README.md +0 -15
  264. package/evals/fixtures/tiny-design-depth-app/src/routes.ts +0 -25
  265. package/evals/fixtures/tiny-design-depth-app/src/sendEmail.ts +0 -3
  266. package/evals/fixtures/tiny-design-depth-app/src/sendSms.ts +0 -3
  267. package/evals/fixtures/tiny-design-depth-app/src/telemetry.ts +0 -3
  268. package/evals/fixtures/tiny-design-depth-app/tests/routes.test.md +0 -12
  269. package/evals/fixtures/tiny-eval-method-app/README.md +0 -8
  270. package/evals/fixtures/tiny-eval-method-app/evals/reports/review-pr-eval-result.md +0 -5
  271. package/evals/fixtures/tiny-eval-method-app/evals/reports/triage-question-failure.md +0 -17
  272. package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.diff +0 -11
  273. package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.md +0 -3
  274. package/evals/fixtures/tiny-eval-method-app/skills/review-pr/SKILL.md +0 -10
  275. package/evals/fixtures/tiny-eval-method-app/skills/triage-question/SKILL.md +0 -10
  276. package/evals/fixtures/tiny-execute-plan-app/README.md +0 -5
  277. package/evals/fixtures/tiny-execute-plan-app/checks/settings-and-billing-check.sh +0 -5
  278. package/evals/fixtures/tiny-execute-plan-app/docs/billing-policy.md +0 -10
  279. package/evals/fixtures/tiny-execute-plan-app/docs/plans/immediate-downgrade-plan.md +0 -11
  280. package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-plan.md +0 -12
  281. package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-with-bad-check.md +0 -15
  282. package/evals/fixtures/tiny-execute-plan-app/docs/plans/unverified-billing-plan.md +0 -9
  283. package/evals/fixtures/tiny-execute-plan-app/docs/specs/failed-payment-grace-period.md +0 -9
  284. package/evals/fixtures/tiny-execute-plan-app/docs/specs/settings-title.md +0 -9
  285. package/evals/fixtures/tiny-execute-plan-app/src/billing.ts +0 -7
  286. package/evals/fixtures/tiny-execute-plan-app/src/settings-page.ts +0 -1
  287. package/evals/fixtures/tiny-execute-plan-app/tests/billing.test.md +0 -7
  288. package/evals/fixtures/tiny-execute-plan-app/tests/settings.test.md +0 -5
  289. package/evals/fixtures/tiny-execute-review-loop-app/README.md +0 -5
  290. package/evals/fixtures/tiny-execute-review-loop-app/docs/billing-policy.md +0 -9
  291. package/evals/fixtures/tiny-execute-review-loop-app/docs/plans/settings-title-plan.md +0 -12
  292. package/evals/fixtures/tiny-execute-review-loop-app/docs/review/previous-agent-summary.md +0 -15
  293. package/evals/fixtures/tiny-execute-review-loop-app/docs/review/review-pass-1-non-pass.md +0 -11
  294. package/evals/fixtures/tiny-execute-review-loop-app/docs/specs/settings-title.md +0 -9
  295. package/evals/fixtures/tiny-execute-review-loop-app/src/billing.ts +0 -7
  296. package/evals/fixtures/tiny-execute-review-loop-app/src/settings-page.ts +0 -1
  297. package/evals/fixtures/tiny-execute-review-loop-app/tests/billing.test.md +0 -7
  298. package/evals/fixtures/tiny-execute-review-loop-app/tests/settings.test.md +0 -5
  299. package/evals/fixtures/tiny-flaky-session-app/README.md +0 -10
  300. package/evals/fixtures/tiny-flaky-session-app/src/session-timeout.ts +0 -13
  301. package/evals/fixtures/tiny-flaky-session-app/tests/session-timeout.test.md +0 -8
  302. package/evals/fixtures/tiny-handoff-app/README.md +0 -5
  303. package/evals/fixtures/tiny-handoff-app/docs/billing-policy.md +0 -10
  304. package/evals/fixtures/tiny-handoff-app/docs/handoffs/old-agent-handoff.md +0 -8
  305. package/evals/fixtures/tiny-handoff-app/docs/plans/billing-retry-plan.md +0 -11
  306. package/evals/fixtures/tiny-handoff-app/src/billing.ts +0 -7
  307. package/evals/fixtures/tiny-handoff-report-app/README.md +0 -3
  308. package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.diff +0 -1
  309. package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.md +0 -1
  310. package/evals/fixtures/tiny-handoff-report-app/evals/scores/hof-003-score.txt +0 -4
  311. package/evals/fixtures/tiny-plan-app/README.md +0 -5
  312. package/evals/fixtures/tiny-plan-app/docs/billing-policy.md +0 -10
  313. package/evals/fixtures/tiny-plan-app/docs/specs/failed-payment-grace-period.md +0 -25
  314. package/evals/fixtures/tiny-plan-app/src/billing.ts +0 -17
  315. package/evals/fixtures/tiny-plan-app/src/settings-page.ts +0 -1
  316. package/evals/fixtures/tiny-plan-app/tests/billing.test.md +0 -8
  317. package/evals/fixtures/tiny-plan-app/tests/settings.test.md +0 -5
  318. package/evals/fixtures/tiny-plan-strict-api-app/README.md +0 -3
  319. package/evals/fixtures/tiny-plan-strict-api-app/docs/billing-policy.md +0 -5
  320. package/evals/fixtures/tiny-plan-strict-api-app/docs/specs/billing-webhook-api.md +0 -25
  321. package/evals/fixtures/tiny-plan-strict-api-app/src/billing.ts +0 -5
  322. package/evals/fixtures/tiny-plan-strict-api-app/src/webhooks.ts +0 -3
  323. package/evals/fixtures/tiny-plan-strict-api-app/tests/billing-webhook.test.md +0 -8
  324. package/evals/fixtures/tiny-post-setup-invalid-config-app/.freeflow/config.json +0 -3
  325. package/evals/fixtures/tiny-post-setup-invalid-config-app/AGENTS.md +0 -15
  326. package/evals/fixtures/tiny-post-setup-invalid-config-app/README.md +0 -16
  327. package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/auth-review.md +0 -15
  328. package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/billing-policy.md +0 -10
  329. package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/copy-conventions.md +0 -15
  330. package/evals/fixtures/tiny-post-setup-invalid-config-app/src/auth-middleware.ts +0 -12
  331. package/evals/fixtures/tiny-post-setup-invalid-config-app/src/billing.ts +0 -20
  332. package/evals/fixtures/tiny-post-setup-invalid-config-app/src/login-copy.ts +0 -1
  333. package/evals/fixtures/tiny-post-setup-invalid-config-app/src/settings-page.ts +0 -1
  334. package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/auth-middleware.test.md +0 -8
  335. package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/billing.test.md +0 -8
  336. package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/copy.test.md +0 -7
  337. package/evals/fixtures/tiny-post-setup-missing-config-app/AGENTS.md +0 -15
  338. package/evals/fixtures/tiny-post-setup-missing-config-app/README.md +0 -16
  339. package/evals/fixtures/tiny-post-setup-missing-config-app/docs/auth-review.md +0 -15
  340. package/evals/fixtures/tiny-post-setup-missing-config-app/docs/billing-policy.md +0 -10
  341. package/evals/fixtures/tiny-post-setup-missing-config-app/docs/copy-conventions.md +0 -15
  342. package/evals/fixtures/tiny-post-setup-missing-config-app/src/auth-middleware.ts +0 -12
  343. package/evals/fixtures/tiny-post-setup-missing-config-app/src/billing.ts +0 -20
  344. package/evals/fixtures/tiny-post-setup-missing-config-app/src/login-copy.ts +0 -1
  345. package/evals/fixtures/tiny-post-setup-missing-config-app/src/settings-page.ts +0 -1
  346. package/evals/fixtures/tiny-post-setup-missing-config-app/tests/auth-middleware.test.md +0 -8
  347. package/evals/fixtures/tiny-post-setup-missing-config-app/tests/billing.test.md +0 -8
  348. package/evals/fixtures/tiny-post-setup-missing-config-app/tests/copy.test.md +0 -7
  349. package/evals/fixtures/tiny-post-setup-source-conflict-app/.freeflow/config.json +0 -3
  350. package/evals/fixtures/tiny-post-setup-source-conflict-app/AGENTS.md +0 -15
  351. package/evals/fixtures/tiny-post-setup-source-conflict-app/README.md +0 -16
  352. package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/auth-review.md +0 -15
  353. package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/billing-policy.md +0 -10
  354. package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/copy-conventions.md +0 -15
  355. package/evals/fixtures/tiny-post-setup-source-conflict-app/src/auth-middleware.ts +0 -12
  356. package/evals/fixtures/tiny-post-setup-source-conflict-app/src/billing.ts +0 -20
  357. package/evals/fixtures/tiny-post-setup-source-conflict-app/src/login-copy.ts +0 -1
  358. package/evals/fixtures/tiny-post-setup-source-conflict-app/src/settings-page.ts +0 -1
  359. package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/auth-middleware.test.md +0 -8
  360. package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/billing.test.md +0 -8
  361. package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/copy.test.md +0 -7
  362. package/evals/fixtures/tiny-report-performance-app/README.md +0 -11
  363. package/evals/fixtures/tiny-report-performance-app/docs/performance.md +0 -10
  364. package/evals/fixtures/tiny-report-performance-app/src/report-summary.ts +0 -29
  365. package/evals/fixtures/tiny-report-performance-app/tests/report-performance.test.md +0 -8
  366. package/evals/fixtures/tiny-review-request-app/README.md +0 -3
  367. package/evals/fixtures/tiny-review-request-app/docs/billing-policy.md +0 -5
  368. package/evals/fixtures/tiny-review-request-app/docs/plans/billing-webhook-api.md +0 -19
  369. package/evals/fixtures/tiny-review-request-app/docs/review/previous-agent-summary.md +0 -20
  370. package/evals/fixtures/tiny-review-request-app/docs/specs/billing-webhook-api.md +0 -25
  371. package/evals/fixtures/tiny-review-request-app/src/billing.ts +0 -11
  372. package/evals/fixtures/tiny-review-request-app/src/webhooks.ts +0 -19
  373. package/evals/fixtures/tiny-review-request-app/tests/billing-webhook.test.md +0 -8
  374. package/evals/fixtures/tiny-review-work-app/README.md +0 -5
  375. package/evals/fixtures/tiny-review-work-app/docs/billing-policy.md +0 -9
  376. package/evals/fixtures/tiny-review-work-app/docs/plans/settings-title-plan.md +0 -12
  377. package/evals/fixtures/tiny-review-work-app/docs/review/previous-agent-summary.md +0 -15
  378. package/evals/fixtures/tiny-review-work-app/docs/specs/settings-title.md +0 -9
  379. package/evals/fixtures/tiny-review-work-app/src/billing.ts +0 -7
  380. package/evals/fixtures/tiny-review-work-app/src/settings-page.ts +0 -1
  381. package/evals/fixtures/tiny-review-work-app/tests/billing.test.md +0 -7
  382. package/evals/fixtures/tiny-review-work-app/tests/settings.test.md +0 -5
  383. package/evals/fixtures/tiny-saas-app/README.md +0 -16
  384. package/evals/fixtures/tiny-saas-app/docs/auth-review.md +0 -15
  385. package/evals/fixtures/tiny-saas-app/docs/billing-policy.md +0 -10
  386. package/evals/fixtures/tiny-saas-app/docs/copy-conventions.md +0 -15
  387. package/evals/fixtures/tiny-saas-app/docs/specs/settings-title.md +0 -13
  388. package/evals/fixtures/tiny-saas-app/src/auth-middleware.ts +0 -12
  389. package/evals/fixtures/tiny-saas-app/src/billing.ts +0 -20
  390. package/evals/fixtures/tiny-saas-app/src/login-copy.ts +0 -1
  391. package/evals/fixtures/tiny-saas-app/src/settings-page.ts +0 -1
  392. package/evals/fixtures/tiny-saas-app/tests/auth-middleware.test.md +0 -8
  393. package/evals/fixtures/tiny-saas-app/tests/billing.test.md +0 -8
  394. package/evals/fixtures/tiny-saas-app/tests/copy.test.md +0 -7
  395. package/evals/fixtures/tiny-setup-agents-app/AGENTS.md +0 -6
  396. package/evals/fixtures/tiny-setup-both-app/AGENTS.md +0 -5
  397. package/evals/fixtures/tiny-setup-both-app/CLAUDE.md +0 -5
  398. package/evals/fixtures/tiny-setup-claude-app/CLAUDE.md +0 -6
  399. package/evals/fixtures/tiny-setup-codex-rules-app/.codex/rules/shell.rules +0 -5
  400. package/evals/fixtures/tiny-setup-codex-rules-app/AGENTS.md +0 -6
  401. package/evals/fixtures/tiny-setup-conflict-app/AGENTS.md +0 -6
  402. package/evals/fixtures/tiny-setup-existing-block-app/AGENTS.md +0 -14
  403. package/evals/fixtures/tiny-setup-four-rules-app/CLAUDE.md +0 -6
  404. package/evals/fixtures/tiny-skill-dev-app/README.md +0 -10
  405. package/evals/fixtures/tiny-skill-dev-app/evals/prompts/review-pr-001.txt +0 -8
  406. package/evals/fixtures/tiny-skill-dev-app/evals/reports/review-pr-failure.md +0 -17
  407. package/evals/fixtures/tiny-skill-dev-app/skills/review-pr/SKILL.md +0 -13
  408. package/evals/fixtures/tiny-team-app/README.md +0 -5
  409. package/evals/fixtures/tiny-team-app/docs/product.md +0 -6
  410. package/evals/fixtures/tiny-team-app/src/teams.ts +0 -9
  411. package/evals/fixtures/tiny-team-app/src/users.ts +0 -5
  412. package/evals/fixtures/tiny-team-app/tests/teams.test.md +0 -7
  413. package/evals/fixtures/tiny-verify-app/README.md +0 -5
  414. package/evals/fixtures/tiny-verify-app/src/settings-nav.ts +0 -1
  415. package/evals/fixtures/tiny-verify-app/src/settings-page.ts +0 -1
  416. package/evals/fixtures/tiny-verify-app/tests/settings.test.md +0 -7
  417. package/evals/prompts/aon-001.txt +0 -2
  418. package/evals/prompts/byp-001.txt +0 -2
  419. package/evals/prompts/byp-002.txt +0 -2
  420. package/evals/prompts/cap-001.txt +0 -3
  421. package/evals/prompts/cap-002.txt +0 -3
  422. package/evals/prompts/cmd-001.txt +0 -3
  423. package/evals/prompts/cmd-002.txt +0 -3
  424. package/evals/prompts/cmd-003.txt +0 -6
  425. package/evals/prompts/cmd-004.txt +0 -5
  426. package/evals/prompts/cmd-005.txt +0 -5
  427. package/evals/prompts/cmd-006.txt +0 -5
  428. package/evals/prompts/cmd-007.txt +0 -5
  429. package/evals/prompts/cmd-008.txt +0 -5
  430. package/evals/prompts/cmd-009.txt +0 -8
  431. package/evals/prompts/cmd-010.txt +0 -5
  432. package/evals/prompts/cmd-011.txt +0 -5
  433. package/evals/prompts/cmd-012.txt +0 -5
  434. package/evals/prompts/cmd-013.txt +0 -5
  435. package/evals/prompts/cmd-014.txt +0 -7
  436. package/evals/prompts/cmd-015.txt +0 -7
  437. package/evals/prompts/cmd-016.txt +0 -5
  438. package/evals/prompts/cmt-001.txt +0 -1
  439. package/evals/prompts/cmt-002.txt +0 -1
  440. package/evals/prompts/cmt-003.txt +0 -1
  441. package/evals/prompts/cmt-004.txt +0 -1
  442. package/evals/prompts/cmt-005.txt +0 -1
  443. package/evals/prompts/dfd-001.txt +0 -3
  444. package/evals/prompts/dia-001.txt +0 -3
  445. package/evals/prompts/dia-002.txt +0 -3
  446. package/evals/prompts/dia-003.txt +0 -3
  447. package/evals/prompts/dis-001.txt +0 -5
  448. package/evals/prompts/dis-002.txt +0 -5
  449. package/evals/prompts/esk-001.txt +0 -5
  450. package/evals/prompts/esk-002.txt +0 -5
  451. package/evals/prompts/esk-003.txt +0 -5
  452. package/evals/prompts/grc-001.txt +0 -3
  453. package/evals/prompts/hof-001.txt +0 -3
  454. package/evals/prompts/hof-002.txt +0 -1
  455. package/evals/prompts/hof-003.txt +0 -1
  456. package/evals/prompts/hof-004.txt +0 -1
  457. package/evals/prompts/hof-005.txt +0 -1
  458. package/evals/prompts/ivg-001.txt +0 -1
  459. package/evals/prompts/ivg-002.txt +0 -11
  460. package/evals/prompts/ivg-003.txt +0 -1
  461. package/evals/prompts/ivg-004.txt +0 -1
  462. package/evals/prompts/mode-001.txt +0 -3
  463. package/evals/prompts/mode-002.txt +0 -1
  464. package/evals/prompts/mode-003.txt +0 -3
  465. package/evals/prompts/mode-004.txt +0 -3
  466. package/evals/prompts/mode-005.txt +0 -3
  467. package/evals/prompts/mode-006.txt +0 -3
  468. package/evals/prompts/mode-007.txt +0 -3
  469. package/evals/prompts/otr-001.txt +0 -3
  470. package/evals/prompts/otr-002.txt +0 -3
  471. package/evals/prompts/rar-001.txt +0 -5
  472. package/evals/prompts/rar-002.txt +0 -3
  473. package/evals/prompts/rar-003.txt +0 -6
  474. package/evals/prompts/rar-004.txt +0 -15
  475. package/evals/prompts/rar-005.txt +0 -10
  476. package/evals/prompts/rbr-001.txt +0 -3
  477. package/evals/prompts/rbr-002.txt +0 -3
  478. package/evals/prompts/rbr-003.txt +0 -7
  479. package/evals/prompts/rev-001.txt +0 -3
  480. package/evals/prompts/rev-002.txt +0 -5
  481. package/evals/prompts/rev-003.txt +0 -6
  482. package/evals/prompts/rev-004.txt +0 -1
  483. package/evals/prompts/rev-005.txt +0 -15
  484. package/evals/prompts/rev-006.txt +0 -5
  485. package/evals/prompts/stp-001.txt +0 -1
  486. package/evals/prompts/stp-002.txt +0 -1
  487. package/evals/prompts/stp-003.txt +0 -1
  488. package/evals/prompts/stp-004.txt +0 -1
  489. package/evals/prompts/stp-005.txt +0 -1
  490. package/evals/prompts/stp-006.txt +0 -1
  491. package/evals/prompts/stp-007.txt +0 -1
  492. package/evals/prompts/stp-008.txt +0 -1
  493. package/evals/prompts/stp-009.txt +0 -1
  494. package/evals/prompts/stp-010.txt +0 -1
  495. package/evals/prompts/stp-011.txt +0 -1
  496. package/evals/prompts/vfy-003.txt +0 -1
  497. package/evals/prompts/wpl-001.txt +0 -3
  498. package/evals/prompts/wpl-002.txt +0 -5
  499. package/evals/prompts/wpl-003.txt +0 -3
  500. package/evals/prompts/wpl-004.txt +0 -5
  501. package/evals/prompts/wpl-005.txt +0 -1
  502. package/evals/prompts/wrc-001.txt +0 -10
  503. package/evals/prompts/wrc-002.txt +0 -3
  504. package/evals/prompts/wsk-001.txt +0 -6
  505. package/evals/prompts/wsp-001.txt +0 -5
  506. package/evals/prompts/wsp-002.txt +0 -15
  507. package/evals/prompts/wsp-003.txt +0 -3
  508. package/evals/prompts/wsp-004.txt +0 -15
  509. package/evals/prompts/wsp-005.txt +0 -5
  510. package/evals/prompts/wsp-006.txt +0 -12
  511. package/evals/prompts/wsp-007.txt +0 -9
  512. package/evals/prompts/wsp-008.txt +0 -13
  513. package/evals/prompts/xpl-001.txt +0 -1
  514. package/evals/prompts/xpl-002.txt +0 -3
  515. package/evals/prompts/xpl-003.txt +0 -3
  516. package/evals/prompts/xpl-004.txt +0 -3
  517. package/evals/prompts/xpl-005.txt +0 -5
  518. package/evals/prompts/xpl-006.txt +0 -3
  519. package/evals/registries/adversarial-evals.json +0 -39
  520. package/evals/registries/fixture-evals.json +0 -2513
  521. package/evals/registries/handoff-evals.json +0 -74
  522. package/evals/registries/legacy-evals.json +0 -147
  523. package/evals/registries/skill-evidence.json +0 -193
  524. package/evals/registries/verify-work-evals.json +0 -46
  525. package/evals/reports/acceptance/v0.1-acceptance-report.md +0 -130
  526. package/evals/reports/by-command-surface/command-surface-1-report.md +0 -45
  527. package/evals/reports/by-command-surface/command-surface-10-report.md +0 -76
  528. package/evals/reports/by-command-surface/command-surface-11-report.md +0 -77
  529. package/evals/reports/by-command-surface/command-surface-12-report.md +0 -91
  530. package/evals/reports/by-command-surface/command-surface-13-report.md +0 -64
  531. package/evals/reports/by-command-surface/command-surface-14-report.md +0 -66
  532. package/evals/reports/by-command-surface/command-surface-15-report.md +0 -124
  533. package/evals/reports/by-command-surface/command-surface-16-report.md +0 -39
  534. package/evals/reports/by-command-surface/command-surface-2-report.md +0 -80
  535. package/evals/reports/by-command-surface/command-surface-3-report.md +0 -86
  536. package/evals/reports/by-command-surface/command-surface-4-report.md +0 -76
  537. package/evals/reports/by-command-surface/command-surface-5-report.md +0 -80
  538. package/evals/reports/by-command-surface/command-surface-6-report.md +0 -74
  539. package/evals/reports/by-command-surface/command-surface-7-report.md +0 -84
  540. package/evals/reports/by-command-surface/command-surface-8-report.md +0 -79
  541. package/evals/reports/by-command-surface/command-surface-9-report.md +0 -79
  542. package/evals/reports/by-command-surface/command-surface-matrix.md +0 -91
  543. package/evals/reports/by-skill/bypass-1-report.md +0 -124
  544. package/evals/reports/by-skill/capture-decisions-1-report.md +0 -99
  545. package/evals/reports/by-skill/capture-decisions-2-report.md +0 -102
  546. package/evals/reports/by-skill/commit-work-1-report.md +0 -165
  547. package/evals/reports/by-skill/commit-work-2-report.md +0 -109
  548. package/evals/reports/by-skill/design-for-depth-1-report.md +0 -95
  549. package/evals/reports/by-skill/diagnose-failure-1-report.md +0 -91
  550. package/evals/reports/by-skill/diagnose-failure-2-report.md +0 -94
  551. package/evals/reports/by-skill/discover-1-report.md +0 -118
  552. package/evals/reports/by-skill/evaluate-skill-2-report.md +0 -71
  553. package/evals/reports/by-skill/execute-plan-1-report.md +0 -103
  554. package/evals/reports/by-skill/execute-plan-2-report.md +0 -112
  555. package/evals/reports/by-skill/execute-plan-3-report.md +0 -87
  556. package/evals/reports/by-skill/grill-context-1-report.md +0 -103
  557. package/evals/reports/by-skill/handoff-1-report.md +0 -123
  558. package/evals/reports/by-skill/handoff-2-report.md +0 -105
  559. package/evals/reports/by-skill/handoff-3-report.md +0 -100
  560. package/evals/reports/by-skill/handoff-7-report.md +0 -77
  561. package/evals/reports/by-skill/interview-gate-1-report.md +0 -63
  562. package/evals/reports/by-skill/interview-gate-2-report.md +0 -105
  563. package/evals/reports/by-skill/mode-contract-1-report.md +0 -74
  564. package/evals/reports/by-skill/mode-contract-2-report.md +0 -87
  565. package/evals/reports/by-skill/mode-contract-3-report.md +0 -65
  566. package/evals/reports/by-skill/mode-contract-4-report.md +0 -71
  567. package/evals/reports/by-skill/mode-contract-5-report.md +0 -70
  568. package/evals/reports/by-skill/output-router-1-report.md +0 -76
  569. package/evals/reports/by-skill/output-router-2-report.md +0 -65
  570. package/evals/reports/by-skill/research-1-report.md +0 -144
  571. package/evals/reports/by-skill/research-brief-1-report.md +0 -94
  572. package/evals/reports/by-skill/research-brief-2-report.md +0 -75
  573. package/evals/reports/by-skill/review-artifact-1-report.md +0 -91
  574. package/evals/reports/by-skill/review-artifact-2-report.md +0 -79
  575. package/evals/reports/by-skill/review-artifact-3-report.md +0 -120
  576. package/evals/reports/by-skill/review-artifact-4-report.md +0 -89
  577. package/evals/reports/by-skill/review-artifact-5-report.md +0 -66
  578. package/evals/reports/by-skill/review-work-1-report.md +0 -85
  579. package/evals/reports/by-skill/review-work-2-report.md +0 -87
  580. package/evals/reports/by-skill/review-work-3-report.md +0 -104
  581. package/evals/reports/by-skill/review-work-4-report.md +0 -108
  582. package/evals/reports/by-skill/review-work-5-report.md +0 -73
  583. package/evals/reports/by-skill/review-work-6-report.md +0 -66
  584. package/evals/reports/by-skill/setup-freeflow-1-report.md +0 -199
  585. package/evals/reports/by-skill/setup-freeflow-2-report.md +0 -105
  586. package/evals/reports/by-skill/setup-freeflow-3-report.md +0 -105
  587. package/evals/reports/by-skill/setup-freeflow-4-report.md +0 -88
  588. package/evals/reports/by-skill/setup-freeflow-5-report.md +0 -115
  589. package/evals/reports/by-skill/skill-authoring-1-report.md +0 -81
  590. package/evals/reports/by-skill/verify-work-1-report.md +0 -111
  591. package/evals/reports/by-skill/verify-work-2-report.md +0 -120
  592. package/evals/reports/by-skill/workflow-1-report.md +0 -65
  593. package/evals/reports/by-skill/write-plan-1-report.md +0 -123
  594. package/evals/reports/by-skill/write-plan-2-report.md +0 -98
  595. package/evals/reports/by-skill/write-plan-3-report.md +0 -110
  596. package/evals/reports/by-skill/write-spec-1-report.md +0 -88
  597. package/evals/reports/by-skill/write-spec-2-report.md +0 -89
  598. package/evals/reports/by-skill/write-spec-3-report.md +0 -90
  599. package/evals/reports/by-skill/write-spec-4-report.md +0 -167
  600. package/evals/reports/harness/claude-harness-1-report.md +0 -103
  601. package/evals/reports/harness/eval-harness-1-report.md +0 -91
  602. package/evals/reports/iterations/iteration-1-report.md +0 -71
  603. package/evals/reports/iterations/iteration-2-report.md +0 -78
  604. package/evals/reports/iterations/iteration-3-report.md +0 -118
  605. package/evals/reports/iterations/iteration-4-report.md +0 -131
  606. package/evals/reports/iterations/iteration-5-report.md +0 -149
  607. package/evals/reports/iterations/iteration-6-report.md +0 -136
  608. package/evals/reports/runtime/always-on-runtime-1-report.md +0 -107
  609. package/evals/reports/runtime/context-mode-normalized-benchmark-1-report.md +0 -52
  610. package/evals/reports/runtime/context-mode-real-deep-baseline-1-report.md +0 -410
  611. package/evals/reports/runtime/context-mode-real-deep-final-slice-11-report.md +0 -203
  612. package/evals/reports/runtime/context-mode-real-deep-final-slice-11-review.md +0 -51
  613. package/evals/reports/runtime/context-saving-native-tools-baseline-1-report.md +0 -99
  614. package/evals/reports/runtime/eryx-python-compatibility-reprobe-1-report.md +0 -166
  615. package/evals/reports/runtime/eryx-python-proof-spike-1-report.md +0 -96
  616. package/evals/reports/runtime/eryx-python-proof-spike-2-report.md +0 -151
  617. package/evals/reports/runtime/eryx-python-script-derive-execution-1-report.md +0 -233
  618. package/evals/reports/runtime/jq-script-derive-execution-1-report.md +0 -215
  619. package/evals/reports/runtime/jq-wasm-proof-spike-1-report.md +0 -67
  620. package/evals/reports/runtime/output-router-benchmark-1-report.md +0 -81
  621. package/evals/reports/runtime/output-router-capture-derive-provider-eval-1-report.md +0 -35
  622. package/evals/reports/runtime/output-router-codex-large-index-sqlite-adhoc-report.md +0 -150
  623. package/evals/reports/runtime/output-router-codex-qa-benchmark-1-report.md +0 -46
  624. package/evals/reports/runtime/output-router-command-benchmark-1-report.md +0 -62
  625. package/evals/reports/runtime/output-router-index-benchmark-1-report.md +0 -64
  626. package/evals/reports/runtime/output-router-regression-1-report.md +0 -81
  627. package/evals/reports/runtime/output-router-transform-eval-1-report.md +0 -28
  628. package/evals/reports/runtime/pi-observed-routing-eval-1-report.md +0 -44
  629. package/evals/reports/runtime/quickjs-script-derive-execution-1-report.md +0 -159
  630. package/evals/reports/runtime/quickjs-wasi-proof-spike-1-report.md +0 -55
  631. package/evals/reports/runtime/render-format-row-protocol-1-report.md +0 -58
  632. package/evals/reports/runtime/script-sandbox-adapter-selection-review-1-report.md +0 -84
  633. package/evals/reports/runtime/script-sandbox-probe-resource-hardening-1-report.md +0 -51
  634. package/evals/reports/runtime/storage-policy-benchmark-1-report.md +0 -176
  635. package/evals/reports/runtime/vault-index-storage-spike-1-report.md +0 -39
  636. package/evals/reports/runtime/workflow-context-hook-1-report.md +0 -82
  637. package/evals/runbooks/adversarial-eval-runbook.md +0 -28
  638. package/evals/runbooks/fixture-eval-runbook.md +0 -137
  639. package/evals/runbooks/handoff-eval-runbook.md +0 -22
  640. package/evals/runbooks/verify-work-eval-runbook.md +0 -27
  641. package/evals/scripts/audit-command-surface.sh +0 -160
  642. package/evals/scripts/check-activation-contract.sh +0 -121
  643. package/evals/scripts/check-runtime-context-hook.sh +0 -183
  644. package/evals/scripts/grade-fixture-eval.sh +0 -446
  645. package/evals/scripts/run-claude-fixture-eval.sh +0 -26
  646. package/evals/scripts/run-codex-fixture-eval.sh +0 -26
  647. package/evals/scripts/run-eryx-python-proof-spike.js +0 -559
  648. package/evals/scripts/run-fixture-eval-by-id.sh +0 -23
  649. package/evals/scripts/run-fixture-eval.sh +0 -464
  650. package/evals/scripts/run-jq-wasm-proof-spike.js +0 -299
  651. package/evals/scripts/run-output-router-transform-eval.js +0 -115
  652. package/evals/scripts/run-pi-observed-routing-eval.js +0 -478
  653. package/evals/scripts/run-quickjs-wasi-proof-spike.js +0 -339
  654. package/evals/scripts/skill-evidence.sh +0 -316
  655. package/evals/scripts/validate-release-metadata.sh +0 -486
  656. package/evals/suites/v0.1-acceptance-suite.md +0 -131
  657. package/pi-extension/dist/host-producer-identification.js +0 -186
  658. package/pi-extension/dist/mcp-config.js +0 -30
  659. package/pi-extension/dist/native-safety-net.js +0 -209
  660. package/pi-extension/dist/observed-tool-routing.js +0 -114
  661. package/pi-extension/dist/renderers.js +0 -835
  662. package/pi-extension/dist/router-tools.js +0 -438
  663. package/pi-extension/dist/runtime-context.js +0 -288
  664. package/pi-extension/dist/schemas.js +0 -254
  665. package/pi-extension/dist/status.js +0 -449
  666. package/pi-extension/dist/utils.js +0 -467
  667. package/pi-extension/src/runtime-context.ts +0 -347
  668. package/pi-extension/src/status.ts +0 -505
  669. package/plugin-docs/README.md +0 -40
  670. package/plugin-docs/adr/0001-three-modes.md +0 -27
  671. package/plugin-docs/adr/0002-evals-before-hooks.md +0 -17
  672. package/plugin-docs/adr/0003-release-boundary.md +0 -21
  673. package/plugin-docs/adr/0004-discover-replaces-shallow-discovery-skills.md +0 -26
  674. package/plugin-docs/adr/README.md +0 -10
  675. package/plugin-docs/architecture.md +0 -89
  676. package/plugin-docs/output-router.md +0 -396
  677. package/plugin-docs/release-evidence.md +0 -77
  678. package/plugin-docs/skills.md +0 -44
  679. package/plugin-docs/workflow.md +0 -57
  680. package/skills/diagnose-failure/references/feedback-loop-catalog.md +0 -25
  681. package/skills/discover/ARTIFACT-DESTINATIONS.md +0 -58
  682. package/skills/discover/CHECKPOINTS.md +0 -74
  683. package/skills/discover/SKILL.md +0 -173
  684. package/skills/evaluate-skill/references/eval-patterns.md +0 -41
  685. package/skills/evaluate-skill/references/grading-priority.md +0 -33
  686. package/skills/execute-plan/SKILL.md +0 -133
  687. package/skills/execute-plan/references/execution-map.md +0 -122
  688. package/skills/interview-gate/SKILL.md +0 -90
  689. package/skills/workflow/references/workflow-map.md +0 -104
  690. /package/pi-extension/src/{mcp-config.ts → integrations/mcp-config.ts} +0 -0
@@ -3,7 +3,15 @@ import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
3
3
  import { tmpdir } from "node:os";
4
4
  import { join, resolve } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
- import { approximateTokens, defaultJsonRunReportPath, escapeMarkdownTableCell as escapeTable, formatPercent, parseBenchmarkCliArgs, reductionPercent, writeBenchmarkReportPair, } from "./benchmark-harness.js";
6
+ import {
7
+ approximateTokens,
8
+ defaultJsonRunReportPath,
9
+ escapeMarkdownTableCell as escapeTable,
10
+ formatPercent,
11
+ parseBenchmarkCliArgs,
12
+ reductionPercent,
13
+ writeBenchmarkReportPair,
14
+ } from "./benchmark-harness.js";
7
15
  import { freeflowTransform } from "../transform/engine.js";
8
16
  import { freeflowSearch } from "../tools/search.js";
9
17
  import { freeflowRun } from "../tools/run.js";
@@ -18,422 +26,445 @@ Parser decisions stay structured in details.result while model-visible text can
18
26
  Batch intermediates should be stored without flooding the model context.
19
27
  `;
20
28
  const COMMAND_STDOUT = [
21
- "FAIL packages/auth/auth.test.ts",
22
- " ● refresh token keeps AUTH_TOKEN scoped",
23
- " Expected AUTH_TOKEN to be redacted before logging",
24
- "PASS packages/router/run.test.ts",
25
- "PASS packages/router/search.test.ts",
26
- "Tests: 1 failed, 24 passed, 25 total",
27
- "Snapshots: 0 total",
28
- "Time: 4.21 s",
29
- "Ran all test suites.",
29
+ "FAIL packages/auth/auth.test.ts",
30
+ " ● refresh token keeps AUTH_TOKEN scoped",
31
+ " Expected AUTH_TOKEN to be redacted before logging",
32
+ "PASS packages/router/run.test.ts",
33
+ "PASS packages/router/search.test.ts",
34
+ "Tests: 1 failed, 24 passed, 25 total",
35
+ "Snapshots: 0 total",
36
+ "Time: 4.21 s",
37
+ "Ran all test suites.",
30
38
  ].join("\n");
31
39
  const COMMAND_STDERR = [
32
- "Error: ROUTER_BENCH_FAILED",
33
- " at refreshToken (packages/auth/auth.ts:42:11)",
34
- " at main (packages/auth/auth.test.ts:8:3)",
40
+ "Error: ROUTER_BENCH_FAILED",
41
+ " at refreshToken (packages/auth/auth.ts:42:11)",
42
+ " at main (packages/auth/auth.test.ts:8:3)",
35
43
  ].join("\n");
36
44
  const GUARDED_FIXTURES = [
37
- {
38
- path: "router/tests/run.test.js",
39
- behaviors: [
40
- "freeflowRun parser/recovery behavior",
41
- "duplicate output compaction",
42
- "exact failure and verification evidence preservation",
43
- ],
44
- },
45
- {
46
- path: "router/tests/tools/search.test.js",
47
- behaviors: [
48
- "exact repo path/range retrieval",
49
- "exact vault line retrieval",
50
- "vault-wide query/locate",
51
- "repo/vault expand and explain behavior",
52
- ],
53
- },
54
- {
55
- path: "router/tests/transform/engine.test.js",
56
- behaviors: [
57
- "deterministic transform operations",
58
- "transformed-output lineage and exact recovery",
59
- "structured failures for invalid operations and missing sources",
60
- ],
61
- },
62
- {
63
- path: "router/tests/tools/batch.test.js",
64
- behaviors: [
65
- "batch accepts public run/search step kinds",
66
- "batch rejects legacy retrieve/transform step kinds",
67
- "query aggregation from child evidence handles",
68
- ],
69
- },
70
- {
71
- path: "router/tests/pi-extension.test.js",
72
- behaviors: [
73
- "public Pi tool schemas",
74
- "content/details result contract",
75
- "compact and expanded TUI renderers",
76
- ],
77
- },
78
- {
79
- path: "router/tests/pi/pi-extension-search.test.js",
80
- behaviors: [
81
- "search action=transform disabled-by-default behavior",
82
- "adapter-unavailable behavior",
83
- "proof-backed adapter execution path",
84
- ],
85
- },
86
- {
87
- path: "router/tests/regression-fixtures.test.js",
88
- behaviors: [
89
- "generated decoy avoidance",
90
- "huge-line bounded evidence",
91
- "exact phrase and source-prior retrieval regressions",
92
- ],
93
- },
94
- {
95
- path: "router/tests/vault-index.test.js",
96
- behaviors: [
97
- "command/native/observed/transformed vault record indexing",
98
- "metadata-only indexing without raw recovery claims",
99
- "retention and degraded-index behavior",
100
- ],
101
- },
45
+ {
46
+ path: "router/tests/run.test.js",
47
+ behaviors: [
48
+ "freeflowRun parser/recovery behavior",
49
+ "duplicate output compaction",
50
+ "exact failure and verification evidence preservation",
51
+ ],
52
+ },
53
+ {
54
+ path: "router/tests/tools/search.test.js",
55
+ behaviors: [
56
+ "exact repo path/range retrieval",
57
+ "exact vault line retrieval",
58
+ "vault-wide query/locate",
59
+ "repo/vault expand and explain behavior",
60
+ ],
61
+ },
62
+ {
63
+ path: "router/tests/transform/engine.test.js",
64
+ behaviors: [
65
+ "deterministic transform operations",
66
+ "transformed-output lineage and exact recovery",
67
+ "structured failures for invalid operations and missing sources",
68
+ ],
69
+ },
70
+ {
71
+ path: "router/tests/tools/batch.test.js",
72
+ behaviors: [
73
+ "batch accepts public run/search step kinds",
74
+ "batch rejects legacy retrieve/transform step kinds",
75
+ "query aggregation from child evidence handles",
76
+ ],
77
+ },
78
+ {
79
+ path: "router/tests/pi-extension.test.js",
80
+ behaviors: ["public Pi tool schemas", "content/details result contract", "compact and expanded TUI renderers"],
81
+ },
82
+ {
83
+ path: "router/tests/pi/pi-extension-search.test.js",
84
+ behaviors: [
85
+ "search action=transform disabled-by-default behavior",
86
+ "adapter-unavailable behavior",
87
+ "proof-backed adapter execution path",
88
+ ],
89
+ },
90
+ {
91
+ path: "router/tests/regression-fixtures.test.js",
92
+ behaviors: [
93
+ "generated decoy avoidance",
94
+ "huge-line bounded evidence",
95
+ "exact phrase and source-prior retrieval regressions",
96
+ ],
97
+ },
98
+ {
99
+ path: "router/tests/vault-index.test.js",
100
+ behaviors: [
101
+ "command/native/observed/transformed vault record indexing",
102
+ "metadata-only indexing without raw recovery claims",
103
+ "retention and degraded-index behavior",
104
+ ],
105
+ },
102
106
  ];
103
107
  export async function runContextSavingBaseline(options = {}) {
104
- const root = await createTempDir("freeflow-context-saving-baseline-");
105
- const repoRoot = join(root.path, "repo");
106
- const vaultRoot = join(root.path, "vault");
107
- const sessionId = "context-saving-baseline";
108
- try {
109
- await mkdir(join(repoRoot, "plugin-docs"), { recursive: true });
110
- await writeFile(join(repoRoot, "plugin-docs/output-router.md"), REPO_DOC_TEXT, "utf8");
111
- const commandRawBytes = byteLength(`${COMMAND_STDOUT}\n${COMMAND_STDERR}\n`);
112
- const runResult = await freeflowRun({
113
- command: "npm test -- --runInBand",
114
- sessionId,
115
- vaultRoot,
116
- preserve: "important",
117
- goal: "baseline model-visible output size",
118
- }, {
119
- async run() {
120
- return {
121
- stdout: `${COMMAND_STDOUT}\n`,
122
- stderr: `${COMMAND_STDERR}\n`,
123
- combined: `STDOUT:\n${COMMAND_STDOUT}\n\nSTDERR:\n${COMMAND_STDERR}\n`,
124
- executionStatus: "failed",
125
- exitCode: 1,
126
- durationMs: 4210,
127
- };
128
- },
129
- });
130
- const outputId = typeof runResult.outputId === "string" ? runResult.outputId : "";
131
- const observations = [];
132
- observations.push(makeObservation({
133
- id: "run-failed-test-output",
134
- title: "freeflow_run failed test output",
135
- tool: "freeflow_run",
136
- action: "run",
137
- rawBytes: commandRawBytes,
138
- result: runResult,
139
- requiredFacts: ["ROUTER_BENCH_FAILED", "failed", "ffout_"],
140
- notes: ["Current Pi model-visible text is the full pretty-printed routed result JSON."],
141
- }));
142
- const repoQueryResult = await freeflowSearch({
143
- action: "query",
144
- source: { kind: "repo", root: repoRoot },
145
- query: "Exact recovery outputId line ranges parser decisions",
146
- topK: 1,
147
- preserve: "important",
148
- });
149
- observations.push(makeObservation({
150
- id: "search-repo-query",
151
- title: "freeflow_search repo query",
152
- tool: "freeflow_search",
153
- action: "query repo",
154
- rawBytes: byteLength(REPO_DOC_TEXT),
155
- result: repoQueryResult,
156
- requiredFacts: ["outputId", "line ranges", "details.result"],
157
- }));
158
- const repoExactResult = await freeflowSearch({
159
- action: "retrieve",
160
- source: { kind: "repo", root: repoRoot, path: "plugin-docs/output-router.md" },
161
- lineRange: { start: 3, end: 5 },
162
- preserve: "full",
163
- });
164
- observations.push(makeObservation({
165
- id: "search-repo-exact-range",
166
- title: "freeflow_search exact repo range",
167
- tool: "freeflow_search",
168
- action: "retrieve repo range",
169
- rawBytes: byteLength(REPO_DOC_TEXT),
170
- result: repoExactResult,
171
- requiredFacts: ["stdout", "stderr", "line ranges"],
172
- notes: ["This guards the existing public advanced path/range recovery behavior."],
173
- }));
174
- if (outputId) {
175
- const vaultQueryResult = await freeflowSearch({
176
- action: "query",
177
- source: { kind: "vault", root: vaultRoot, sessionId, outputId, stream: "combined" },
178
- query: "ROUTER_BENCH_FAILED",
179
- topK: 1,
180
- preserve: "important",
181
- });
182
- observations.push(makeObservation({
183
- id: "search-vault-query",
184
- title: "freeflow_search vault query",
185
- tool: "freeflow_search",
186
- action: "query vault",
187
- rawBytes: commandRawBytes,
188
- result: vaultQueryResult,
189
- requiredFacts: ["ROUTER_BENCH_FAILED", outputId],
190
- }));
191
- const transformResult = await freeflowTransform({
192
- source: { kind: "vault", outputId, stream: "combined" },
193
- operation: { kind: "regexFilter", pattern: "AUTH_TOKEN|ROUTER_BENCH_FAILED|Tests:", maxMatches: 10 },
194
- sessionId,
195
- vaultRoot,
196
- preserve: "important",
197
- });
198
- observations.push(makeObservation({
199
- id: "transform-regex-filter",
200
- title: "freeflow_search action=transform regexFilter",
201
- tool: "freeflow_search action=transform",
202
- action: "regexFilter vault",
203
- rawBytes: commandRawBytes,
204
- result: transformResult,
205
- requiredFacts: ["AUTH_TOKEN", "ROUTER_BENCH_FAILED", "regexFilter"],
206
- }));
207
- }
208
- return {
209
- generatedAt: options.generatedAt ?? new Date().toISOString(),
210
- summary: summarizeObservations(observations),
211
- observations,
212
- guardrails: GUARDED_FIXTURES,
213
- notes: [
214
- "This is a Slice 0 baseline for current Freeflow-owned tools before compact-output redesign.",
215
- "Model-visible bytes use the current Pi routedToolText shape: JSON.stringify(result, null, 2).",
216
- "Details payload bytes use the current Pi details shape: { result } with the same structured result.",
217
- "Negative reduction means the current routed JSON is larger than the raw fixture bytes; this is expected baseline evidence for compact-output work.",
218
- ],
219
- };
220
- }
221
- finally {
222
- await root.cleanup();
108
+ const root = await createTempDir("freeflow-context-saving-baseline-");
109
+ const repoRoot = join(root.path, "repo");
110
+ const vaultRoot = join(root.path, "vault");
111
+ const sessionId = "context-saving-baseline";
112
+ try {
113
+ await mkdir(join(repoRoot, "plugin-docs"), { recursive: true });
114
+ await writeFile(join(repoRoot, "plugin-docs/output-router.md"), REPO_DOC_TEXT, "utf8");
115
+ const commandRawBytes = byteLength(`${COMMAND_STDOUT}\n${COMMAND_STDERR}\n`);
116
+ const runResult = await freeflowRun(
117
+ {
118
+ command: "npm test -- --runInBand",
119
+ sessionId,
120
+ vaultRoot,
121
+ preserve: "important",
122
+ goal: "baseline model-visible output size",
123
+ },
124
+ {
125
+ async run() {
126
+ return {
127
+ stdout: `${COMMAND_STDOUT}\n`,
128
+ stderr: `${COMMAND_STDERR}\n`,
129
+ combined: `STDOUT:\n${COMMAND_STDOUT}\n\nSTDERR:\n${COMMAND_STDERR}\n`,
130
+ executionStatus: "failed",
131
+ exitCode: 1,
132
+ durationMs: 4210,
133
+ };
134
+ },
135
+ },
136
+ );
137
+ const outputId = typeof runResult.outputId === "string" ? runResult.outputId : "";
138
+ const observations = [];
139
+ observations.push(
140
+ makeObservation({
141
+ id: "run-failed-test-output",
142
+ title: "freeflow_run failed test output",
143
+ tool: "freeflow_run",
144
+ action: "run",
145
+ rawBytes: commandRawBytes,
146
+ result: runResult,
147
+ requiredFacts: ["ROUTER_BENCH_FAILED", "failed", "ffout_"],
148
+ notes: ["Current Pi model-visible text is the full pretty-printed routed result JSON."],
149
+ }),
150
+ );
151
+ const repoQueryResult = await freeflowSearch({
152
+ action: "query",
153
+ source: { kind: "repo", root: repoRoot },
154
+ query: "Exact recovery outputId line ranges parser decisions",
155
+ topK: 1,
156
+ preserve: "important",
157
+ });
158
+ observations.push(
159
+ makeObservation({
160
+ id: "search-repo-query",
161
+ title: "freeflow_search repo query",
162
+ tool: "freeflow_search",
163
+ action: "query repo",
164
+ rawBytes: byteLength(REPO_DOC_TEXT),
165
+ result: repoQueryResult,
166
+ requiredFacts: ["outputId", "line ranges", "details.result"],
167
+ }),
168
+ );
169
+ const repoExactResult = await freeflowSearch({
170
+ action: "retrieve",
171
+ source: { kind: "repo", root: repoRoot, path: "plugin-docs/output-router.md" },
172
+ lineRange: { start: 3, end: 5 },
173
+ preserve: "full",
174
+ });
175
+ observations.push(
176
+ makeObservation({
177
+ id: "search-repo-exact-range",
178
+ title: "freeflow_search exact repo range",
179
+ tool: "freeflow_search",
180
+ action: "retrieve repo range",
181
+ rawBytes: byteLength(REPO_DOC_TEXT),
182
+ result: repoExactResult,
183
+ requiredFacts: ["stdout", "stderr", "line ranges"],
184
+ notes: ["This guards the existing public advanced path/range recovery behavior."],
185
+ }),
186
+ );
187
+ if (outputId) {
188
+ const vaultQueryResult = await freeflowSearch({
189
+ action: "query",
190
+ source: { kind: "vault", root: vaultRoot, sessionId, outputId, stream: "combined" },
191
+ query: "ROUTER_BENCH_FAILED",
192
+ topK: 1,
193
+ preserve: "important",
194
+ });
195
+ observations.push(
196
+ makeObservation({
197
+ id: "search-vault-query",
198
+ title: "freeflow_search vault query",
199
+ tool: "freeflow_search",
200
+ action: "query vault",
201
+ rawBytes: commandRawBytes,
202
+ result: vaultQueryResult,
203
+ requiredFacts: ["ROUTER_BENCH_FAILED", outputId],
204
+ }),
205
+ );
206
+ const transformResult = await freeflowTransform({
207
+ source: { kind: "vault", outputId, stream: "combined" },
208
+ operation: { kind: "regexFilter", pattern: "AUTH_TOKEN|ROUTER_BENCH_FAILED|Tests:", maxMatches: 10 },
209
+ sessionId,
210
+ vaultRoot,
211
+ preserve: "important",
212
+ });
213
+ observations.push(
214
+ makeObservation({
215
+ id: "transform-regex-filter",
216
+ title: "freeflow_search action=transform regexFilter",
217
+ tool: "freeflow_search action=transform",
218
+ action: "regexFilter vault",
219
+ rawBytes: commandRawBytes,
220
+ result: transformResult,
221
+ requiredFacts: ["AUTH_TOKEN", "ROUTER_BENCH_FAILED", "regexFilter"],
222
+ }),
223
+ );
223
224
  }
225
+ return {
226
+ generatedAt: options.generatedAt ?? new Date().toISOString(),
227
+ summary: summarizeObservations(observations),
228
+ observations,
229
+ guardrails: GUARDED_FIXTURES,
230
+ notes: [
231
+ "This is a Slice 0 baseline for current Freeflow-owned tools before compact-output redesign.",
232
+ "Model-visible bytes use the current Pi routedToolText shape: JSON.stringify(result, null, 2).",
233
+ "Details payload bytes use the current Pi details shape: { result } with the same structured result.",
234
+ "Negative reduction means the current routed JSON is larger than the raw fixture bytes; this is expected baseline evidence for compact-output work.",
235
+ ],
236
+ };
237
+ } finally {
238
+ await root.cleanup();
239
+ }
224
240
  }
225
241
  export function renderContextSavingBaselineReport(report) {
226
- const date = report.generatedAt.slice(0, 10);
227
- const lines = [
228
- "# Freeflow Context-Saving Native Tools Baseline Report - Slice 0",
229
- "",
230
- `Date: ${date}`,
231
- "",
232
- "## Scope",
233
- "",
234
- "Baseline current model-visible output sizes for representative `freeflow_run`, `freeflow_search`, and `freeflow_search action=transform` results before the compact-output redesign.",
235
- "",
236
- "The baseline intentionally measures current Pi tool text as pretty-printed routed result JSON. Later slices should reduce model-visible bytes while keeping details and exact recovery available.",
237
- "",
238
- "## Summary",
239
- "",
240
- `- Fixtures measured: ${report.summary.fixtures}`,
241
- `- Facts preserved: ${report.summary.factsPreserved}/${report.summary.fixtures}`,
242
- `- Recovery available: ${report.summary.recoveryAvailable}/${report.summary.fixtures}`,
243
- `- Raw bytes: ${report.summary.totalRawBytes}`,
244
- `- Model-visible bytes: ${report.summary.totalModelVisibleBytes}`,
245
- `- Details payload bytes: ${report.summary.totalDetailsPayloadBytes}`,
246
- `- Approx raw tokens: ${report.summary.totalRawTokensApprox}`,
247
- `- Approx model-visible tokens: ${report.summary.totalModelVisibleTokensApprox}`,
248
- `- Weighted model-visible reduction vs raw: ${formatPercent(report.summary.weightedModelVisibleReductionPercent)}`,
249
- "",
250
- "## Measurements",
251
- "",
252
- "| Fixture | Tool | Action | Raw bytes | Model-visible bytes | Details bytes | Reduction vs raw | Facts | Recovery | Status |",
253
- "| --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | --- |",
254
- ];
255
- for (const observation of report.observations) {
256
- lines.push(`| ${escapeTable(observation.id)} | ${observation.tool} | ${escapeTable(observation.action)} | ${observation.rawBytes} | ${observation.modelVisibleBytes} | ${observation.detailsPayloadBytes} | ${formatPercent(observation.modelVisibleReductionPercent)} | ${observation.factsPreserved ? "yes" : "no"} | ${observation.recoveryAvailable ? "yes" : "no"} | ${escapeTable(observation.status)} |`);
242
+ const date = report.generatedAt.slice(0, 10);
243
+ const lines = [
244
+ "# Freeflow Context-Saving Native Tools Baseline Report - Slice 0",
245
+ "",
246
+ `Date: ${date}`,
247
+ "",
248
+ "## Scope",
249
+ "",
250
+ "Baseline current model-visible output sizes for representative `freeflow_run`, `freeflow_search`, and `freeflow_search action=transform` results before the compact-output redesign.",
251
+ "",
252
+ "The baseline intentionally measures current Pi tool text as pretty-printed routed result JSON. Later slices should reduce model-visible bytes while keeping details and exact recovery available.",
253
+ "",
254
+ "## Summary",
255
+ "",
256
+ `- Fixtures measured: ${report.summary.fixtures}`,
257
+ `- Facts preserved: ${report.summary.factsPreserved}/${report.summary.fixtures}`,
258
+ `- Recovery available: ${report.summary.recoveryAvailable}/${report.summary.fixtures}`,
259
+ `- Raw bytes: ${report.summary.totalRawBytes}`,
260
+ `- Model-visible bytes: ${report.summary.totalModelVisibleBytes}`,
261
+ `- Details payload bytes: ${report.summary.totalDetailsPayloadBytes}`,
262
+ `- Approx raw tokens: ${report.summary.totalRawTokensApprox}`,
263
+ `- Approx model-visible tokens: ${report.summary.totalModelVisibleTokensApprox}`,
264
+ `- Weighted model-visible reduction vs raw: ${formatPercent(report.summary.weightedModelVisibleReductionPercent)}`,
265
+ "",
266
+ "## Measurements",
267
+ "",
268
+ "| Fixture | Tool | Action | Raw bytes | Model-visible bytes | Details bytes | Reduction vs raw | Facts | Recovery | Status |",
269
+ "| --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | --- |",
270
+ ];
271
+ for (const observation of report.observations) {
272
+ lines.push(
273
+ `| ${escapeTable(observation.id)} | ${observation.tool} | ${escapeTable(observation.action)} | ${observation.rawBytes} | ${observation.modelVisibleBytes} | ${observation.detailsPayloadBytes} | ${formatPercent(observation.modelVisibleReductionPercent)} | ${observation.factsPreserved ? "yes" : "no"} | ${observation.recoveryAvailable ? "yes" : "no"} | ${escapeTable(observation.status)} |`,
274
+ );
275
+ }
276
+ lines.push("", "## Recovery And Evidence Handles", "");
277
+ for (const observation of report.observations) {
278
+ lines.push(`### ${observation.id}`);
279
+ if (observation.outputId) {
280
+ lines.push(`- outputId: \`${observation.outputId}\``);
257
281
  }
258
- lines.push("", "## Recovery And Evidence Handles", "");
259
- for (const observation of report.observations) {
260
- lines.push(`### ${observation.id}`);
261
- if (observation.outputId) {
262
- lines.push(`- outputId: \`${observation.outputId}\``);
263
- }
264
- lines.push(`- recovery: ${observation.recoveryHint || "none"}`);
265
- if (observation.evidenceLocations.length > 0) {
266
- lines.push(`- evidence: ${observation.evidenceLocations.map((item) => `\`${item}\``).join(", ")}`);
267
- }
268
- for (const note of observation.notes) {
269
- lines.push(`- note: ${note}`);
270
- }
271
- lines.push("");
282
+ lines.push(`- recovery: ${observation.recoveryHint || "none"}`);
283
+ if (observation.evidenceLocations.length > 0) {
284
+ lines.push(`- evidence: ${observation.evidenceLocations.map((item) => `\`${item}\``).join(", ")}`);
272
285
  }
273
- lines.push("## Guardrail Inventory", "");
274
- lines.push("Existing tests/fixtures that must remain stable during the redesign:", "");
275
- for (const guardrail of report.guardrails) {
276
- lines.push(`- \`${guardrail.path}\``);
277
- for (const behavior of guardrail.behaviors) {
278
- lines.push(` - ${behavior}`);
279
- }
286
+ for (const note of observation.notes) {
287
+ lines.push(`- note: ${note}`);
280
288
  }
281
- lines.push("", "## Notes", "");
282
- for (const note of report.notes) {
283
- lines.push(`- ${note}`);
289
+ lines.push("");
290
+ }
291
+ lines.push("## Guardrail Inventory", "");
292
+ lines.push("Existing tests/fixtures that must remain stable during the redesign:", "");
293
+ for (const guardrail of report.guardrails) {
294
+ lines.push(`- \`${guardrail.path}\``);
295
+ for (const behavior of guardrail.behaviors) {
296
+ lines.push(` - ${behavior}`);
284
297
  }
285
- return `${lines.join("\n")}\n`;
298
+ }
299
+ lines.push("", "## Notes", "");
300
+ for (const note of report.notes) {
301
+ lines.push(`- ${note}`);
302
+ }
303
+ return `${lines.join("\n")}\n`;
286
304
  }
287
305
  export async function writeContextSavingBaselineReport(report, markdownReportPath, options = {}) {
288
- return writeBenchmarkReportPair({
289
- report,
290
- markdownReportPath,
291
- jsonReportPath: options.jsonReportPath,
292
- renderMarkdown: renderContextSavingBaselineReport,
293
- });
306
+ return writeBenchmarkReportPair({
307
+ report,
308
+ markdownReportPath,
309
+ jsonReportPath: options.jsonReportPath,
310
+ renderMarkdown: renderContextSavingBaselineReport,
311
+ });
294
312
  }
295
313
  function makeObservation(input) {
296
- const modelVisibleText = currentPiModelVisibleText(input.result);
297
- const detailsPayloadText = JSON.stringify({ result: input.result }, null, 2);
298
- const modelVisibleBytes = byteLength(modelVisibleText);
299
- const detailsPayloadBytes = byteLength(detailsPayloadText);
300
- const evidenceLocations = resultEvidenceLocations(input.result);
301
- const recoveryHint = resultRecoveryHint(input.result);
302
- const outputId = resultOutputId(input.result);
303
- const observation = {
304
- id: input.id,
305
- title: input.title,
306
- tool: input.tool,
307
- action: input.action,
308
- rawBytes: input.rawBytes,
309
- modelVisibleBytes,
310
- detailsPayloadBytes,
311
- rawTokensApprox: approximateTokens(input.rawBytes),
312
- modelVisibleTokensApprox: approximateTokens(modelVisibleBytes),
313
- detailsPayloadTokensApprox: approximateTokens(detailsPayloadBytes),
314
- modelVisibleReductionPercent: reductionPercent(input.rawBytes, modelVisibleBytes),
315
- factsPreserved: input.requiredFacts.every((fact) => modelVisibleText.includes(fact) || detailsPayloadText.includes(fact)),
316
- recoveryAvailable: Boolean(recoveryHint || outputId || evidenceLocations.length > 0),
317
- recoveryHint,
318
- status: resultStatus(input.result),
319
- evidenceLocations,
320
- notes: input.notes ?? [],
321
- };
322
- if (outputId) {
323
- observation.outputId = outputId;
324
- }
325
- return observation;
314
+ const modelVisibleText = currentPiModelVisibleText(input.result);
315
+ const detailsPayloadText = JSON.stringify({ result: input.result }, null, 2);
316
+ const modelVisibleBytes = byteLength(modelVisibleText);
317
+ const detailsPayloadBytes = byteLength(detailsPayloadText);
318
+ const evidenceLocations = resultEvidenceLocations(input.result);
319
+ const recoveryHint = resultRecoveryHint(input.result);
320
+ const outputId = resultOutputId(input.result);
321
+ const observation = {
322
+ id: input.id,
323
+ title: input.title,
324
+ tool: input.tool,
325
+ action: input.action,
326
+ rawBytes: input.rawBytes,
327
+ modelVisibleBytes,
328
+ detailsPayloadBytes,
329
+ rawTokensApprox: approximateTokens(input.rawBytes),
330
+ modelVisibleTokensApprox: approximateTokens(modelVisibleBytes),
331
+ detailsPayloadTokensApprox: approximateTokens(detailsPayloadBytes),
332
+ modelVisibleReductionPercent: reductionPercent(input.rawBytes, modelVisibleBytes),
333
+ factsPreserved: input.requiredFacts.every(
334
+ (fact) => modelVisibleText.includes(fact) || detailsPayloadText.includes(fact),
335
+ ),
336
+ recoveryAvailable: Boolean(recoveryHint || outputId || evidenceLocations.length > 0),
337
+ recoveryHint,
338
+ status: resultStatus(input.result),
339
+ evidenceLocations,
340
+ notes: input.notes ?? [],
341
+ };
342
+ if (outputId) {
343
+ observation.outputId = outputId;
344
+ }
345
+ return observation;
326
346
  }
327
347
  function summarizeObservations(observations) {
328
- const totalRawBytes = observations.reduce((sum, observation) => sum + observation.rawBytes, 0);
329
- const totalModelVisibleBytes = observations.reduce((sum, observation) => sum + observation.modelVisibleBytes, 0);
330
- const totalDetailsPayloadBytes = observations.reduce((sum, observation) => sum + observation.detailsPayloadBytes, 0);
331
- return {
332
- fixtures: observations.length,
333
- factsPreserved: observations.filter((observation) => observation.factsPreserved).length,
334
- recoveryAvailable: observations.filter((observation) => observation.recoveryAvailable).length,
335
- totalRawBytes,
336
- totalModelVisibleBytes,
337
- totalDetailsPayloadBytes,
338
- totalRawTokensApprox: approximateTokens(totalRawBytes),
339
- totalModelVisibleTokensApprox: approximateTokens(totalModelVisibleBytes),
340
- totalDetailsPayloadTokensApprox: approximateTokens(totalDetailsPayloadBytes),
341
- weightedModelVisibleReductionPercent: reductionPercent(totalRawBytes, totalModelVisibleBytes),
342
- };
348
+ const totalRawBytes = observations.reduce((sum, observation) => sum + observation.rawBytes, 0);
349
+ const totalModelVisibleBytes = observations.reduce((sum, observation) => sum + observation.modelVisibleBytes, 0);
350
+ const totalDetailsPayloadBytes = observations.reduce((sum, observation) => sum + observation.detailsPayloadBytes, 0);
351
+ return {
352
+ fixtures: observations.length,
353
+ factsPreserved: observations.filter((observation) => observation.factsPreserved).length,
354
+ recoveryAvailable: observations.filter((observation) => observation.recoveryAvailable).length,
355
+ totalRawBytes,
356
+ totalModelVisibleBytes,
357
+ totalDetailsPayloadBytes,
358
+ totalRawTokensApprox: approximateTokens(totalRawBytes),
359
+ totalModelVisibleTokensApprox: approximateTokens(totalModelVisibleBytes),
360
+ totalDetailsPayloadTokensApprox: approximateTokens(totalDetailsPayloadBytes),
361
+ weightedModelVisibleReductionPercent: reductionPercent(totalRawBytes, totalModelVisibleBytes),
362
+ };
343
363
  }
344
364
  function currentPiModelVisibleText(result) {
345
- return JSON.stringify(result, null, 2);
365
+ return JSON.stringify(result, null, 2);
346
366
  }
347
367
  function resultStatus(result) {
348
- const value = asRecord(result);
349
- if (!value) {
350
- return "unknown";
351
- }
352
- const statuses = [
353
- stringAt(value, "toolStatus"),
354
- stringAt(asRecord(value.execution), "status"),
355
- stringAt(asRecord(value.routing), "status"),
356
- ].filter((status) => Boolean(status));
357
- return statuses.join("/") || "unknown";
368
+ const value = asRecord(result);
369
+ if (!value) {
370
+ return "unknown";
371
+ }
372
+ const statuses = [
373
+ stringAt(value, "toolStatus"),
374
+ stringAt(asRecord(value.execution), "status"),
375
+ stringAt(asRecord(value.routing), "status"),
376
+ ].filter((status) => Boolean(status));
377
+ return statuses.join("/") || "unknown";
358
378
  }
359
379
  function resultOutputId(result) {
360
- const value = asRecord(result);
361
- const outputId = stringAt(value, "outputId");
362
- if (outputId) {
363
- return outputId;
364
- }
365
- return stringAt(asRecord(value?.recovery), "outputId") ?? "";
380
+ const value = asRecord(result);
381
+ const outputId = stringAt(value, "outputId");
382
+ if (outputId) {
383
+ return outputId;
384
+ }
385
+ return stringAt(asRecord(value?.recovery), "outputId") ?? "";
366
386
  }
367
387
  function resultRecoveryHint(result) {
368
- const value = asRecord(result);
369
- return stringAt(asRecord(value?.recovery), "how") ?? "";
388
+ const value = asRecord(result);
389
+ return stringAt(asRecord(value?.recovery), "how") ?? "";
370
390
  }
371
391
  function resultEvidenceLocations(result) {
372
- const value = asRecord(result);
373
- const locations = [];
374
- const evidence = Array.isArray(value?.evidence) ? value.evidence : [];
375
- for (const packet of evidence) {
376
- const record = asRecord(packet);
377
- if (!record) {
378
- continue;
379
- }
380
- const path = stringAt(record, "path") ?? stringAt(asRecord(record.source), "path") ?? stringAt(asRecord(record.source), "outputId") ?? "evidence";
381
- const lines = stringAt(record, "lines");
382
- locations.push(lines ? `${path}:${lines}` : path);
392
+ const value = asRecord(result);
393
+ const locations = [];
394
+ const evidence = Array.isArray(value?.evidence) ? value.evidence : [];
395
+ for (const packet of evidence) {
396
+ const record = asRecord(packet);
397
+ if (!record) {
398
+ continue;
383
399
  }
384
- const importantLines = Array.isArray(value?.importantLines) ? value.importantLines : [];
385
- for (const line of importantLines) {
386
- const record = asRecord(line);
387
- if (!record) {
388
- continue;
389
- }
390
- const stream = stringAt(record, "stream") ?? "stream";
391
- const linesValue = stringAt(record, "lines") ?? "?";
392
- locations.push(`${stream}:${linesValue}`);
400
+ const path =
401
+ stringAt(record, "path") ??
402
+ stringAt(asRecord(record.source), "path") ??
403
+ stringAt(asRecord(record.source), "outputId") ??
404
+ "evidence";
405
+ const lines = stringAt(record, "lines");
406
+ locations.push(lines ? `${path}:${lines}` : path);
407
+ }
408
+ const importantLines = Array.isArray(value?.importantLines) ? value.importantLines : [];
409
+ for (const line of importantLines) {
410
+ const record = asRecord(line);
411
+ if (!record) {
412
+ continue;
393
413
  }
394
- return locations;
414
+ const stream = stringAt(record, "stream") ?? "stream";
415
+ const linesValue = stringAt(record, "lines") ?? "?";
416
+ locations.push(`${stream}:${linesValue}`);
417
+ }
418
+ return locations;
395
419
  }
396
420
  function stringAt(record, key) {
397
- const value = record?.[key];
398
- return typeof value === "string" ? value : undefined;
421
+ const value = record?.[key];
422
+ return typeof value === "string" ? value : undefined;
399
423
  }
400
424
  function asRecord(value) {
401
- if (value && typeof value === "object" && !Array.isArray(value)) {
402
- return value;
403
- }
404
- return undefined;
425
+ if (value && typeof value === "object" && !Array.isArray(value)) {
426
+ return value;
427
+ }
428
+ return undefined;
405
429
  }
406
430
  async function createTempDir(prefix) {
407
- const path = await mkdtemp(resolve(tmpdir(), prefix));
408
- return {
409
- path,
410
- cleanup: async () => {
411
- await rm(path, { recursive: true, force: true });
412
- },
413
- };
431
+ const path = await mkdtemp(resolve(tmpdir(), prefix));
432
+ return {
433
+ path,
434
+ cleanup: async () => {
435
+ await rm(path, { recursive: true, force: true });
436
+ },
437
+ };
414
438
  }
415
439
  function byteLength(value) {
416
- return Buffer.byteLength(value, "utf8");
440
+ return Buffer.byteLength(value, "utf8");
417
441
  }
418
442
  function defaultReportPath() {
419
- return resolve(process.cwd(), "evals/reports/runtime/context-saving-native-tools-baseline-1-report.md");
443
+ return resolve(process.cwd(), "router/evals/reports/context-saving-native-tools-baseline-1-report.md");
420
444
  }
421
445
  async function runCli() {
422
- const { reportPath, jsonReportPath } = parseBenchmarkCliArgs(process.argv.slice(2), { reportPath: defaultReportPath() });
423
- const report = await runContextSavingBaseline();
424
- const reports = await writeContextSavingBaselineReport(report, reportPath, {
425
- jsonReportPath: jsonReportPath === undefined ? defaultJsonRunReportPath(reportPath) : jsonReportPath,
426
- });
427
- const shortId = createHash("sha256").update(JSON.stringify(report.summary)).digest("hex").slice(0, 8);
428
- console.log(`Freeflow context-saving baseline ${shortId}: ${report.summary.factsPreserved}/${report.summary.fixtures} facts preserved, ${report.summary.recoveryAvailable}/${report.summary.fixtures} recoverable`);
429
- console.log(`Markdown report: ${reports.markdown}`);
430
- if (reports.json) {
431
- console.log(`JSON run data: ${reports.json}`);
432
- }
433
- if (report.summary.factsPreserved !== report.summary.fixtures || report.summary.recoveryAvailable !== report.summary.fixtures) {
434
- process.exitCode = 1;
435
- }
446
+ const { reportPath, jsonReportPath } = parseBenchmarkCliArgs(process.argv.slice(2), {
447
+ reportPath: defaultReportPath(),
448
+ });
449
+ const report = await runContextSavingBaseline();
450
+ const reports = await writeContextSavingBaselineReport(report, reportPath, {
451
+ jsonReportPath: jsonReportPath === undefined ? defaultJsonRunReportPath(reportPath) : jsonReportPath,
452
+ });
453
+ const shortId = createHash("sha256").update(JSON.stringify(report.summary)).digest("hex").slice(0, 8);
454
+ console.log(
455
+ `Freeflow context-saving baseline ${shortId}: ${report.summary.factsPreserved}/${report.summary.fixtures} facts preserved, ${report.summary.recoveryAvailable}/${report.summary.fixtures} recoverable`,
456
+ );
457
+ console.log(`Markdown report: ${reports.markdown}`);
458
+ if (reports.json) {
459
+ console.log(`JSON run data: ${reports.json}`);
460
+ }
461
+ if (
462
+ report.summary.factsPreserved !== report.summary.fixtures ||
463
+ report.summary.recoveryAvailable !== report.summary.fixtures
464
+ ) {
465
+ process.exitCode = 1;
466
+ }
436
467
  }
437
468
  if (process.argv[1] && fileURLToPath(import.meta.url) === resolve(process.argv[1])) {
438
- await runCli();
469
+ await runCli();
439
470
  }