@hassangameryt/freeflow 0.3.0 → 0.5.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 (692) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +6 -2
  3. package/.codex-plugin/plugin.json +9 -9
  4. package/README.md +190 -127
  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/{skills → capabilities}/output-router/SKILL.md +21 -17
  9. package/{skills → capabilities}/output-router/references/safety-policy.md +1 -1
  10. package/capabilities/output-router/references/setup.md +110 -0
  11. package/command-surface.json +62 -7
  12. package/hooks/freeflow-runtime-context.mjs +572 -154
  13. package/hooks/hooks.json +26 -1
  14. package/hooks/tests/check-runtime-context-hook.sh +375 -0
  15. package/package.json +24 -24
  16. package/pi-extension/dist/index.js +264 -80
  17. package/pi-extension/dist/integrations/mcp-config.js +29 -0
  18. package/pi-extension/dist/output-router/host-producer-identification.js +232 -0
  19. package/pi-extension/dist/output-router/native-safety-net.js +216 -0
  20. package/pi-extension/dist/output-router/observed-tool-routing.js +122 -0
  21. package/pi-extension/dist/output-router/renderers.js +1023 -0
  22. package/pi-extension/dist/output-router/router-tools.js +554 -0
  23. package/pi-extension/dist/output-router/schemas.js +383 -0
  24. package/pi-extension/dist/output-router/status.js +744 -0
  25. package/pi-extension/dist/output-router/utils.js +502 -0
  26. package/pi-extension/dist/runtime/runtime-context.js +798 -0
  27. package/pi-extension/dist/settings/settings-tui.js +314 -0
  28. package/pi-extension/dist/settings/settings-ui.js +1487 -0
  29. package/pi-extension/freeflow/index.js +1 -0
  30. package/pi-extension/src/index.ts +230 -56
  31. package/pi-extension/src/{host-producer-identification.ts → output-router/host-producer-identification.ts} +37 -7
  32. package/pi-extension/src/{native-safety-net.ts → output-router/native-safety-net.ts} +8 -12
  33. package/pi-extension/src/{observed-tool-routing.ts → output-router/observed-tool-routing.ts} +19 -11
  34. package/pi-extension/src/{renderers.ts → output-router/renderers.ts} +246 -55
  35. package/pi-extension/src/{router-tools.ts → output-router/router-tools.ts} +130 -29
  36. package/pi-extension/src/{schemas.ts → output-router/schemas.ts} +171 -43
  37. package/pi-extension/src/output-router/status.ts +791 -0
  38. package/pi-extension/src/{utils.ts → output-router/utils.ts} +80 -18
  39. package/pi-extension/src/runtime/runtime-context.ts +895 -0
  40. package/pi-extension/src/settings/settings-tui.ts +408 -0
  41. package/pi-extension/src/settings/settings-ui.ts +1730 -0
  42. package/pi-extension/tests/integration/pi-extension.test.js +4020 -0
  43. package/pi-extension/tests/output-router/observed-producers.test.js +132 -0
  44. package/pi-extension/tests/output-router/search.test.js +722 -0
  45. package/pi-extension/tests/settings/settings-tui.test.js +243 -0
  46. package/router/dist/benchmarks/benchmark-harness.d.ts +16 -13
  47. package/router/dist/benchmarks/benchmark-harness.js +62 -62
  48. package/router/dist/benchmarks/benchmarks.d.ts +80 -73
  49. package/router/dist/benchmarks/benchmarks.js +860 -761
  50. package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +71 -67
  51. package/router/dist/benchmarks/codex-qa-benchmarks.js +429 -390
  52. package/router/dist/benchmarks/command-benchmarks.d.ts +107 -92
  53. package/router/dist/benchmarks/command-benchmarks.js +616 -571
  54. package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +64 -56
  55. package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +679 -613
  56. package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +103 -95
  57. package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +1188 -1103
  58. package/router/dist/benchmarks/context-saving-baseline.d.ts +47 -41
  59. package/router/dist/benchmarks/context-saving-baseline.js +405 -374
  60. package/router/dist/benchmarks/index-benchmarks.d.ts +74 -69
  61. package/router/dist/benchmarks/index-benchmarks.js +761 -661
  62. package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +80 -69
  63. package/router/dist/benchmarks/storage-policy-benchmarks.js +549 -469
  64. package/router/dist/benchmarks/vault-index-benchmarks.d.ts +43 -34
  65. package/router/dist/benchmarks/vault-index-benchmarks.js +294 -229
  66. package/router/dist/config/config.d.ts +62 -55
  67. package/router/dist/config/config.js +552 -373
  68. package/router/dist/config/router-contract.d.ts +2 -2
  69. package/router/dist/config/router-contract.js +38 -38
  70. package/router/dist/config/schema.d.ts +19 -10
  71. package/router/dist/config/schema.js +586 -538
  72. package/router/dist/config/types.d.ts +413 -361
  73. package/router/dist/config/types.js +19 -8
  74. package/router/dist/evidence/bounded-evidence.d.ts +26 -26
  75. package/router/dist/evidence/bounded-evidence.js +265 -252
  76. package/router/dist/evidence/evidence-range-selector.d.ts +16 -14
  77. package/router/dist/evidence/evidence-range-selector.js +192 -191
  78. package/router/dist/evidence/evidence-search.d.ts +18 -16
  79. package/router/dist/evidence/evidence-search.js +401 -377
  80. package/router/dist/evidence/evidence.d.ts +17 -17
  81. package/router/dist/evidence/evidence.js +163 -159
  82. package/router/dist/evidence/failure-contracts.d.ts +25 -15
  83. package/router/dist/evidence/failure-contracts.js +132 -126
  84. package/router/dist/evidence/line-ranges.d.ts +17 -15
  85. package/router/dist/evidence/line-ranges.js +18 -18
  86. package/router/dist/experiments/local-index.d.ts +47 -41
  87. package/router/dist/experiments/local-index.js +477 -458
  88. package/router/dist/local/local-traversal.d.ts +18 -0
  89. package/router/dist/local/local-traversal.js +334 -0
  90. package/router/dist/processing/engine.d.ts +94 -70
  91. package/router/dist/processing/engine.js +462 -364
  92. package/router/dist/processing/reducers.d.ts +208 -194
  93. package/router/dist/processing/reducers.js +1434 -1256
  94. package/router/dist/processing/renderers.d.ts +24 -18
  95. package/router/dist/processing/renderers.js +161 -152
  96. package/router/dist/processing/scripts.d.ts +80 -67
  97. package/router/dist/processing/scripts.js +343 -290
  98. package/router/dist/repo/repo-traversal.d.ts +9 -9
  99. package/router/dist/repo/repo-traversal.js +205 -202
  100. package/router/dist/routing/observed-reducers.d.ts +25 -19
  101. package/router/dist/routing/observed-reducers.js +559 -545
  102. package/router/dist/routing/observed-routing.d.ts +23 -14
  103. package/router/dist/routing/observed-routing.js +319 -318
  104. package/router/dist/routing/parsers.d.ts +10 -10
  105. package/router/dist/routing/parsers.js +454 -406
  106. package/router/dist/routing/run-filters.d.ts +45 -41
  107. package/router/dist/routing/run-filters.js +215 -207
  108. package/router/dist/routing/run-reducers.d.ts +45 -26
  109. package/router/dist/routing/run-reducers.js +102 -90
  110. package/router/dist/sandbox/adapter-roots.d.ts +34 -26
  111. package/router/dist/sandbox/adapter-roots.js +43 -41
  112. package/router/dist/sandbox/eryx-python-adapter.d.ts +9 -5
  113. package/router/dist/sandbox/eryx-python-adapter.js +659 -588
  114. package/router/dist/sandbox/jq-wasm-adapter.d.ts +3 -3
  115. package/router/dist/sandbox/jq-wasm-adapter.js +319 -311
  116. package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +9 -5
  117. package/router/dist/sandbox/quickjs-wasi-adapter.js +336 -333
  118. package/router/dist/sandbox/script-sandbox.d.ts +105 -84
  119. package/router/dist/sandbox/script-sandbox.js +294 -260
  120. package/router/dist/setup/script-transform-adapters.d.ts +23 -19
  121. package/router/dist/setup/script-transform-adapters.js +223 -204
  122. package/router/dist/tools/batch.d.ts +27 -16
  123. package/router/dist/tools/batch.js +493 -416
  124. package/router/dist/tools/run.d.ts +47 -35
  125. package/router/dist/tools/run.js +1172 -1087
  126. package/router/dist/tools/search.d.ts +53 -31
  127. package/router/dist/tools/search.js +1224 -1065
  128. package/router/dist/transform/engine.d.ts +121 -96
  129. package/router/dist/transform/engine.js +1853 -1736
  130. package/router/dist/vault/vault-index.d.ts +97 -78
  131. package/router/dist/vault/vault-index.js +347 -342
  132. package/router/dist/vault/vault.d.ts +109 -74
  133. package/router/dist/vault/vault.js +528 -533
  134. package/runtime/interaction-contract.md +16 -0
  135. package/skills/bypass/SKILL.md +52 -38
  136. package/skills/commit-work/SKILL.md +54 -46
  137. package/skills/commit-work/references/staging-decisions.md +46 -24
  138. package/skills/decision-gate/SKILL.md +48 -0
  139. package/skills/design-for-depth/SKILL.md +75 -59
  140. package/skills/design-for-depth/references/design-pressure-signals.md +56 -7
  141. package/skills/design-for-depth/references/interface-design-loop.md +156 -0
  142. package/skills/design-for-depth/references/software-design-philosophy.md +32 -3
  143. package/skills/diagnose-failure/SKILL.md +65 -60
  144. package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +36 -0
  145. package/skills/diagnose-failure/references/flaky-and-performance.md +30 -18
  146. package/skills/discuss/SKILL.md +121 -0
  147. package/skills/discuss/references/checkpoints.md +66 -0
  148. package/skills/evaluate-skill/SKILL.md +62 -53
  149. package/skills/evaluate-skill/references/definition-schema.md +345 -0
  150. package/skills/evaluate-skill/references/evaluation-design.md +86 -0
  151. package/skills/evaluate-skill/references/execution-and-evidence.md +85 -0
  152. package/skills/evaluate-skill/references/review-and-revision.md +51 -0
  153. package/skills/evaluate-skill/scripts/lib/definitions.mjs +296 -0
  154. package/skills/evaluate-skill/scripts/lib/evidence.mjs +46 -0
  155. package/skills/evaluate-skill/scripts/lib/grade-comparison.mjs +60 -0
  156. package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +148 -0
  157. package/skills/evaluate-skill/scripts/lib/grade-support.mjs +126 -0
  158. package/skills/evaluate-skill/scripts/lib/grade-workspace.mjs +192 -0
  159. package/skills/evaluate-skill/scripts/lib/grade.mjs +56 -0
  160. package/skills/evaluate-skill/scripts/lib/pi.mjs +489 -0
  161. package/skills/evaluate-skill/scripts/lib/process.mjs +79 -0
  162. package/skills/evaluate-skill/scripts/lib/rpc.mjs +444 -0
  163. package/skills/evaluate-skill/scripts/lib/runner.mjs +346 -0
  164. package/skills/evaluate-skill/scripts/lib/sandbox.mjs +409 -0
  165. package/skills/evaluate-skill/scripts/lib/view.mjs +337 -0
  166. package/skills/evaluate-skill/scripts/pi-guard.mjs +164 -0
  167. package/skills/evaluate-skill/scripts/skill-eval.mjs +101 -0
  168. package/skills/execute-work/SKILL.md +99 -0
  169. package/skills/execute-work/references/code-practices.md +78 -0
  170. package/skills/execute-work/references/execution-loop.md +77 -0
  171. package/skills/finish-branch/SKILL.md +117 -0
  172. package/skills/finish-branch/references/integration-options.md +80 -0
  173. package/skills/handoff/SKILL.md +65 -39
  174. package/skills/handoff/references/templates.md +104 -27
  175. package/skills/launch-work/SKILL.md +116 -0
  176. package/skills/launch-work/references/launch-readiness.md +85 -0
  177. package/skills/migration-work/SKILL.md +115 -0
  178. package/skills/migration-work/references/migration-lifecycle.md +82 -0
  179. package/skills/mode-contract/SKILL.md +72 -52
  180. package/skills/release-work/SKILL.md +118 -0
  181. package/skills/release-work/references/release-evidence.md +78 -0
  182. package/skills/review-artifact/SKILL.md +77 -69
  183. package/skills/review-artifact/references/reviewer-prompt.md +133 -42
  184. package/skills/review-work/SKILL.md +82 -57
  185. package/skills/review-work/references/reviewer-prompt.md +97 -60
  186. package/skills/review-work/references/security-risk-lens.md +67 -0
  187. package/skills/setup-freeflow/SKILL.md +54 -68
  188. package/skills/setup-freeflow/references/activation-contract.md +84 -69
  189. package/skills/setup-freeflow/references/host-setup.md +50 -17
  190. package/skills/simplify-code/SKILL.md +80 -0
  191. package/skills/simplify-code/references/simplification-patterns.md +70 -0
  192. package/skills/tdd/SKILL.md +96 -0
  193. package/skills/tdd/references/test-design.md +96 -0
  194. package/skills/track-work/SKILL.md +84 -0
  195. package/skills/track-work/references/working-record-schema.md +378 -0
  196. package/skills/verify-work/SKILL.md +59 -38
  197. package/skills/verify-work/references/browser-runtime-evidence.md +55 -0
  198. package/skills/verify-work/references/integration-evidence.md +51 -0
  199. package/skills/verify-work/references/performance-evidence.md +57 -0
  200. package/skills/workflow/SKILL.md +53 -59
  201. package/skills/workflow/references/domain-skill-composition.md +57 -0
  202. package/skills/workflow/references/workflow-loop.md +92 -0
  203. package/skills/write-plan/SKILL.md +85 -58
  204. package/skills/write-plan/references/plan-shapes.md +132 -46
  205. package/skills/write-skill/SKILL.md +82 -51
  206. package/skills/write-skill/references/activation-boundaries.md +62 -0
  207. package/skills/write-skill/references/agent-first-instructions.md +87 -0
  208. package/skills/write-skill/references/progressive-disclosure.md +63 -0
  209. package/skills/write-skill/scripts/lib/skill-author.mjs +653 -0
  210. package/skills/write-skill/scripts/skill-author.mjs +104 -0
  211. package/skills/write-spec/SKILL.md +65 -54
  212. package/skills/write-spec/references/artifact-standards.md +60 -41
  213. package/skills/write-spec/references/decision-records.md +77 -0
  214. package/skills/write-spec/references/spec-shapes.md +119 -60
  215. package/evals/README.md +0 -32
  216. package/evals/fixtures/copy-conventions.md +0 -31
  217. package/evals/fixtures/output-router/README.md +0 -12
  218. package/evals/fixtures/output-router/failed-command-output.txt +0 -9
  219. package/evals/fixtures/output-router/large-router-manual.md +0 -63
  220. package/evals/fixtures/output-router/native-large-output.txt +0 -40
  221. package/evals/fixtures/output-router/noisy-test-output.txt +0 -30
  222. package/evals/fixtures/output-router/verification-output.txt +0 -8
  223. package/evals/fixtures/tiny-artifact-review-app/README.md +0 -5
  224. package/evals/fixtures/tiny-artifact-review-app/docs/billing-policy.md +0 -10
  225. package/evals/fixtures/tiny-artifact-review-app/docs/specs/billing-webhook-api-draft.md +0 -21
  226. package/evals/fixtures/tiny-artifact-review-app/docs/specs/failed-payment-grace-period.md +0 -24
  227. package/evals/fixtures/tiny-artifact-review-app/docs/specs/immediate-downgrade.md +0 -17
  228. package/evals/fixtures/tiny-artifact-review-app/tests/billing.test.md +0 -8
  229. package/evals/fixtures/tiny-commit-ambiguous-app/.freeflow-eval-setup.sh +0 -15
  230. package/evals/fixtures/tiny-commit-ambiguous-app/README.md +0 -3
  231. package/evals/fixtures/tiny-commit-ambiguous-app/src/billing.ts +0 -5
  232. package/evals/fixtures/tiny-commit-ambiguous-app/src/settings-page.ts +0 -1
  233. package/evals/fixtures/tiny-commit-ambiguous-app/tests/settings.test.md +0 -5
  234. package/evals/fixtures/tiny-commit-app/.freeflow-eval-setup.sh +0 -14
  235. package/evals/fixtures/tiny-commit-app/README.md +0 -3
  236. package/evals/fixtures/tiny-commit-app/docs/specs/settings-title.md +0 -5
  237. package/evals/fixtures/tiny-commit-app/src/billing.ts +0 -5
  238. package/evals/fixtures/tiny-commit-app/src/settings-page.ts +0 -1
  239. package/evals/fixtures/tiny-commit-app/tests/settings.test.md +0 -5
  240. package/evals/fixtures/tiny-commit-everything-app/.freeflow-eval-setup.sh +0 -15
  241. package/evals/fixtures/tiny-commit-everything-app/README.md +0 -3
  242. package/evals/fixtures/tiny-commit-everything-app/docs/specs/settings-title.md +0 -5
  243. package/evals/fixtures/tiny-commit-everything-app/src/billing.ts +0 -5
  244. package/evals/fixtures/tiny-commit-everything-app/src/settings-page.ts +0 -1
  245. package/evals/fixtures/tiny-commit-everything-app/tests/settings.test.md +0 -5
  246. package/evals/fixtures/tiny-commit-staged-app/.freeflow-eval-setup.sh +0 -15
  247. package/evals/fixtures/tiny-commit-staged-app/README.md +0 -3
  248. package/evals/fixtures/tiny-commit-staged-app/docs/specs/settings-title.md +0 -5
  249. package/evals/fixtures/tiny-commit-staged-app/src/billing.ts +0 -5
  250. package/evals/fixtures/tiny-commit-staged-app/src/settings-page.ts +0 -1
  251. package/evals/fixtures/tiny-commit-staged-app/tests/settings.test.md +0 -5
  252. package/evals/fixtures/tiny-commit-staged-mixed-app/.freeflow-eval-setup.sh +0 -15
  253. package/evals/fixtures/tiny-commit-staged-mixed-app/README.md +0 -3
  254. package/evals/fixtures/tiny-commit-staged-mixed-app/docs/billing-policy.md +0 -3
  255. package/evals/fixtures/tiny-commit-staged-mixed-app/docs/release-notes.md +0 -3
  256. package/evals/fixtures/tiny-commit-staged-mixed-app/src/billing.ts +0 -5
  257. package/evals/fixtures/tiny-dashboard-stale-app/README.md +0 -11
  258. package/evals/fixtures/tiny-dashboard-stale-app/src/api-client.ts +0 -13
  259. package/evals/fixtures/tiny-dashboard-stale-app/src/dashboard-data.ts +0 -19
  260. package/evals/fixtures/tiny-dashboard-stale-app/tests/dashboard-data.test.md +0 -9
  261. package/evals/fixtures/tiny-decision-destination-app/README.md +0 -6
  262. package/evals/fixtures/tiny-decision-destination-app/src/risk.ts +0 -8
  263. package/evals/fixtures/tiny-decision-destination-app/tests/risk.test.md +0 -4
  264. package/evals/fixtures/tiny-design-depth-app/README.md +0 -15
  265. package/evals/fixtures/tiny-design-depth-app/src/routes.ts +0 -25
  266. package/evals/fixtures/tiny-design-depth-app/src/sendEmail.ts +0 -3
  267. package/evals/fixtures/tiny-design-depth-app/src/sendSms.ts +0 -3
  268. package/evals/fixtures/tiny-design-depth-app/src/telemetry.ts +0 -3
  269. package/evals/fixtures/tiny-design-depth-app/tests/routes.test.md +0 -12
  270. package/evals/fixtures/tiny-eval-method-app/README.md +0 -8
  271. package/evals/fixtures/tiny-eval-method-app/evals/reports/review-pr-eval-result.md +0 -5
  272. package/evals/fixtures/tiny-eval-method-app/evals/reports/triage-question-failure.md +0 -17
  273. package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.diff +0 -11
  274. package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.md +0 -3
  275. package/evals/fixtures/tiny-eval-method-app/skills/review-pr/SKILL.md +0 -10
  276. package/evals/fixtures/tiny-eval-method-app/skills/triage-question/SKILL.md +0 -10
  277. package/evals/fixtures/tiny-execute-plan-app/README.md +0 -5
  278. package/evals/fixtures/tiny-execute-plan-app/checks/settings-and-billing-check.sh +0 -5
  279. package/evals/fixtures/tiny-execute-plan-app/docs/billing-policy.md +0 -10
  280. package/evals/fixtures/tiny-execute-plan-app/docs/plans/immediate-downgrade-plan.md +0 -11
  281. package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-plan.md +0 -12
  282. package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-with-bad-check.md +0 -15
  283. package/evals/fixtures/tiny-execute-plan-app/docs/plans/unverified-billing-plan.md +0 -9
  284. package/evals/fixtures/tiny-execute-plan-app/docs/specs/failed-payment-grace-period.md +0 -9
  285. package/evals/fixtures/tiny-execute-plan-app/docs/specs/settings-title.md +0 -9
  286. package/evals/fixtures/tiny-execute-plan-app/src/billing.ts +0 -7
  287. package/evals/fixtures/tiny-execute-plan-app/src/settings-page.ts +0 -1
  288. package/evals/fixtures/tiny-execute-plan-app/tests/billing.test.md +0 -7
  289. package/evals/fixtures/tiny-execute-plan-app/tests/settings.test.md +0 -5
  290. package/evals/fixtures/tiny-execute-review-loop-app/README.md +0 -5
  291. package/evals/fixtures/tiny-execute-review-loop-app/docs/billing-policy.md +0 -9
  292. package/evals/fixtures/tiny-execute-review-loop-app/docs/plans/settings-title-plan.md +0 -12
  293. package/evals/fixtures/tiny-execute-review-loop-app/docs/review/previous-agent-summary.md +0 -15
  294. package/evals/fixtures/tiny-execute-review-loop-app/docs/review/review-pass-1-non-pass.md +0 -11
  295. package/evals/fixtures/tiny-execute-review-loop-app/docs/specs/settings-title.md +0 -9
  296. package/evals/fixtures/tiny-execute-review-loop-app/src/billing.ts +0 -7
  297. package/evals/fixtures/tiny-execute-review-loop-app/src/settings-page.ts +0 -1
  298. package/evals/fixtures/tiny-execute-review-loop-app/tests/billing.test.md +0 -7
  299. package/evals/fixtures/tiny-execute-review-loop-app/tests/settings.test.md +0 -5
  300. package/evals/fixtures/tiny-flaky-session-app/README.md +0 -10
  301. package/evals/fixtures/tiny-flaky-session-app/src/session-timeout.ts +0 -13
  302. package/evals/fixtures/tiny-flaky-session-app/tests/session-timeout.test.md +0 -8
  303. package/evals/fixtures/tiny-handoff-app/README.md +0 -5
  304. package/evals/fixtures/tiny-handoff-app/docs/billing-policy.md +0 -10
  305. package/evals/fixtures/tiny-handoff-app/docs/handoffs/old-agent-handoff.md +0 -8
  306. package/evals/fixtures/tiny-handoff-app/docs/plans/billing-retry-plan.md +0 -11
  307. package/evals/fixtures/tiny-handoff-app/src/billing.ts +0 -7
  308. package/evals/fixtures/tiny-handoff-report-app/README.md +0 -3
  309. package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.diff +0 -1
  310. package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.md +0 -1
  311. package/evals/fixtures/tiny-handoff-report-app/evals/scores/hof-003-score.txt +0 -4
  312. package/evals/fixtures/tiny-plan-app/README.md +0 -5
  313. package/evals/fixtures/tiny-plan-app/docs/billing-policy.md +0 -10
  314. package/evals/fixtures/tiny-plan-app/docs/specs/failed-payment-grace-period.md +0 -25
  315. package/evals/fixtures/tiny-plan-app/src/billing.ts +0 -17
  316. package/evals/fixtures/tiny-plan-app/src/settings-page.ts +0 -1
  317. package/evals/fixtures/tiny-plan-app/tests/billing.test.md +0 -8
  318. package/evals/fixtures/tiny-plan-app/tests/settings.test.md +0 -5
  319. package/evals/fixtures/tiny-plan-strict-api-app/README.md +0 -3
  320. package/evals/fixtures/tiny-plan-strict-api-app/docs/billing-policy.md +0 -5
  321. package/evals/fixtures/tiny-plan-strict-api-app/docs/specs/billing-webhook-api.md +0 -25
  322. package/evals/fixtures/tiny-plan-strict-api-app/src/billing.ts +0 -5
  323. package/evals/fixtures/tiny-plan-strict-api-app/src/webhooks.ts +0 -3
  324. package/evals/fixtures/tiny-plan-strict-api-app/tests/billing-webhook.test.md +0 -8
  325. package/evals/fixtures/tiny-post-setup-invalid-config-app/.freeflow/config.json +0 -3
  326. package/evals/fixtures/tiny-post-setup-invalid-config-app/AGENTS.md +0 -15
  327. package/evals/fixtures/tiny-post-setup-invalid-config-app/README.md +0 -16
  328. package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/auth-review.md +0 -15
  329. package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/billing-policy.md +0 -10
  330. package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/copy-conventions.md +0 -15
  331. package/evals/fixtures/tiny-post-setup-invalid-config-app/src/auth-middleware.ts +0 -12
  332. package/evals/fixtures/tiny-post-setup-invalid-config-app/src/billing.ts +0 -20
  333. package/evals/fixtures/tiny-post-setup-invalid-config-app/src/login-copy.ts +0 -1
  334. package/evals/fixtures/tiny-post-setup-invalid-config-app/src/settings-page.ts +0 -1
  335. package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/auth-middleware.test.md +0 -8
  336. package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/billing.test.md +0 -8
  337. package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/copy.test.md +0 -7
  338. package/evals/fixtures/tiny-post-setup-missing-config-app/AGENTS.md +0 -15
  339. package/evals/fixtures/tiny-post-setup-missing-config-app/README.md +0 -16
  340. package/evals/fixtures/tiny-post-setup-missing-config-app/docs/auth-review.md +0 -15
  341. package/evals/fixtures/tiny-post-setup-missing-config-app/docs/billing-policy.md +0 -10
  342. package/evals/fixtures/tiny-post-setup-missing-config-app/docs/copy-conventions.md +0 -15
  343. package/evals/fixtures/tiny-post-setup-missing-config-app/src/auth-middleware.ts +0 -12
  344. package/evals/fixtures/tiny-post-setup-missing-config-app/src/billing.ts +0 -20
  345. package/evals/fixtures/tiny-post-setup-missing-config-app/src/login-copy.ts +0 -1
  346. package/evals/fixtures/tiny-post-setup-missing-config-app/src/settings-page.ts +0 -1
  347. package/evals/fixtures/tiny-post-setup-missing-config-app/tests/auth-middleware.test.md +0 -8
  348. package/evals/fixtures/tiny-post-setup-missing-config-app/tests/billing.test.md +0 -8
  349. package/evals/fixtures/tiny-post-setup-missing-config-app/tests/copy.test.md +0 -7
  350. package/evals/fixtures/tiny-post-setup-source-conflict-app/.freeflow/config.json +0 -3
  351. package/evals/fixtures/tiny-post-setup-source-conflict-app/AGENTS.md +0 -15
  352. package/evals/fixtures/tiny-post-setup-source-conflict-app/README.md +0 -16
  353. package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/auth-review.md +0 -15
  354. package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/billing-policy.md +0 -10
  355. package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/copy-conventions.md +0 -15
  356. package/evals/fixtures/tiny-post-setup-source-conflict-app/src/auth-middleware.ts +0 -12
  357. package/evals/fixtures/tiny-post-setup-source-conflict-app/src/billing.ts +0 -20
  358. package/evals/fixtures/tiny-post-setup-source-conflict-app/src/login-copy.ts +0 -1
  359. package/evals/fixtures/tiny-post-setup-source-conflict-app/src/settings-page.ts +0 -1
  360. package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/auth-middleware.test.md +0 -8
  361. package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/billing.test.md +0 -8
  362. package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/copy.test.md +0 -7
  363. package/evals/fixtures/tiny-report-performance-app/README.md +0 -11
  364. package/evals/fixtures/tiny-report-performance-app/docs/performance.md +0 -10
  365. package/evals/fixtures/tiny-report-performance-app/src/report-summary.ts +0 -29
  366. package/evals/fixtures/tiny-report-performance-app/tests/report-performance.test.md +0 -8
  367. package/evals/fixtures/tiny-review-request-app/README.md +0 -3
  368. package/evals/fixtures/tiny-review-request-app/docs/billing-policy.md +0 -5
  369. package/evals/fixtures/tiny-review-request-app/docs/plans/billing-webhook-api.md +0 -19
  370. package/evals/fixtures/tiny-review-request-app/docs/review/previous-agent-summary.md +0 -20
  371. package/evals/fixtures/tiny-review-request-app/docs/specs/billing-webhook-api.md +0 -25
  372. package/evals/fixtures/tiny-review-request-app/src/billing.ts +0 -11
  373. package/evals/fixtures/tiny-review-request-app/src/webhooks.ts +0 -19
  374. package/evals/fixtures/tiny-review-request-app/tests/billing-webhook.test.md +0 -8
  375. package/evals/fixtures/tiny-review-work-app/README.md +0 -5
  376. package/evals/fixtures/tiny-review-work-app/docs/billing-policy.md +0 -9
  377. package/evals/fixtures/tiny-review-work-app/docs/plans/settings-title-plan.md +0 -12
  378. package/evals/fixtures/tiny-review-work-app/docs/review/previous-agent-summary.md +0 -15
  379. package/evals/fixtures/tiny-review-work-app/docs/specs/settings-title.md +0 -9
  380. package/evals/fixtures/tiny-review-work-app/src/billing.ts +0 -7
  381. package/evals/fixtures/tiny-review-work-app/src/settings-page.ts +0 -1
  382. package/evals/fixtures/tiny-review-work-app/tests/billing.test.md +0 -7
  383. package/evals/fixtures/tiny-review-work-app/tests/settings.test.md +0 -5
  384. package/evals/fixtures/tiny-saas-app/README.md +0 -16
  385. package/evals/fixtures/tiny-saas-app/docs/auth-review.md +0 -15
  386. package/evals/fixtures/tiny-saas-app/docs/billing-policy.md +0 -10
  387. package/evals/fixtures/tiny-saas-app/docs/copy-conventions.md +0 -15
  388. package/evals/fixtures/tiny-saas-app/docs/specs/settings-title.md +0 -13
  389. package/evals/fixtures/tiny-saas-app/src/auth-middleware.ts +0 -12
  390. package/evals/fixtures/tiny-saas-app/src/billing.ts +0 -20
  391. package/evals/fixtures/tiny-saas-app/src/login-copy.ts +0 -1
  392. package/evals/fixtures/tiny-saas-app/src/settings-page.ts +0 -1
  393. package/evals/fixtures/tiny-saas-app/tests/auth-middleware.test.md +0 -8
  394. package/evals/fixtures/tiny-saas-app/tests/billing.test.md +0 -8
  395. package/evals/fixtures/tiny-saas-app/tests/copy.test.md +0 -7
  396. package/evals/fixtures/tiny-setup-agents-app/AGENTS.md +0 -6
  397. package/evals/fixtures/tiny-setup-both-app/AGENTS.md +0 -5
  398. package/evals/fixtures/tiny-setup-both-app/CLAUDE.md +0 -5
  399. package/evals/fixtures/tiny-setup-claude-app/CLAUDE.md +0 -6
  400. package/evals/fixtures/tiny-setup-codex-rules-app/.codex/rules/shell.rules +0 -5
  401. package/evals/fixtures/tiny-setup-codex-rules-app/AGENTS.md +0 -6
  402. package/evals/fixtures/tiny-setup-conflict-app/AGENTS.md +0 -6
  403. package/evals/fixtures/tiny-setup-existing-block-app/AGENTS.md +0 -14
  404. package/evals/fixtures/tiny-setup-four-rules-app/CLAUDE.md +0 -6
  405. package/evals/fixtures/tiny-skill-dev-app/README.md +0 -10
  406. package/evals/fixtures/tiny-skill-dev-app/evals/prompts/review-pr-001.txt +0 -8
  407. package/evals/fixtures/tiny-skill-dev-app/evals/reports/review-pr-failure.md +0 -17
  408. package/evals/fixtures/tiny-skill-dev-app/skills/review-pr/SKILL.md +0 -13
  409. package/evals/fixtures/tiny-team-app/README.md +0 -5
  410. package/evals/fixtures/tiny-team-app/docs/product.md +0 -6
  411. package/evals/fixtures/tiny-team-app/src/teams.ts +0 -9
  412. package/evals/fixtures/tiny-team-app/src/users.ts +0 -5
  413. package/evals/fixtures/tiny-team-app/tests/teams.test.md +0 -7
  414. package/evals/fixtures/tiny-verify-app/README.md +0 -5
  415. package/evals/fixtures/tiny-verify-app/src/settings-nav.ts +0 -1
  416. package/evals/fixtures/tiny-verify-app/src/settings-page.ts +0 -1
  417. package/evals/fixtures/tiny-verify-app/tests/settings.test.md +0 -7
  418. package/evals/prompts/aon-001.txt +0 -2
  419. package/evals/prompts/byp-001.txt +0 -2
  420. package/evals/prompts/byp-002.txt +0 -2
  421. package/evals/prompts/cap-001.txt +0 -3
  422. package/evals/prompts/cap-002.txt +0 -3
  423. package/evals/prompts/cmd-001.txt +0 -3
  424. package/evals/prompts/cmd-002.txt +0 -3
  425. package/evals/prompts/cmd-003.txt +0 -6
  426. package/evals/prompts/cmd-004.txt +0 -5
  427. package/evals/prompts/cmd-005.txt +0 -5
  428. package/evals/prompts/cmd-006.txt +0 -5
  429. package/evals/prompts/cmd-007.txt +0 -5
  430. package/evals/prompts/cmd-008.txt +0 -5
  431. package/evals/prompts/cmd-009.txt +0 -8
  432. package/evals/prompts/cmd-010.txt +0 -5
  433. package/evals/prompts/cmd-011.txt +0 -5
  434. package/evals/prompts/cmd-012.txt +0 -5
  435. package/evals/prompts/cmd-013.txt +0 -5
  436. package/evals/prompts/cmd-014.txt +0 -7
  437. package/evals/prompts/cmd-015.txt +0 -7
  438. package/evals/prompts/cmd-016.txt +0 -5
  439. package/evals/prompts/cmt-001.txt +0 -1
  440. package/evals/prompts/cmt-002.txt +0 -1
  441. package/evals/prompts/cmt-003.txt +0 -1
  442. package/evals/prompts/cmt-004.txt +0 -1
  443. package/evals/prompts/cmt-005.txt +0 -1
  444. package/evals/prompts/dfd-001.txt +0 -3
  445. package/evals/prompts/dia-001.txt +0 -3
  446. package/evals/prompts/dia-002.txt +0 -3
  447. package/evals/prompts/dia-003.txt +0 -3
  448. package/evals/prompts/dis-001.txt +0 -5
  449. package/evals/prompts/dis-002.txt +0 -5
  450. package/evals/prompts/esk-001.txt +0 -5
  451. package/evals/prompts/esk-002.txt +0 -5
  452. package/evals/prompts/esk-003.txt +0 -5
  453. package/evals/prompts/grc-001.txt +0 -3
  454. package/evals/prompts/hof-001.txt +0 -3
  455. package/evals/prompts/hof-002.txt +0 -1
  456. package/evals/prompts/hof-003.txt +0 -1
  457. package/evals/prompts/hof-004.txt +0 -1
  458. package/evals/prompts/hof-005.txt +0 -1
  459. package/evals/prompts/ivg-001.txt +0 -1
  460. package/evals/prompts/ivg-002.txt +0 -11
  461. package/evals/prompts/ivg-003.txt +0 -1
  462. package/evals/prompts/ivg-004.txt +0 -1
  463. package/evals/prompts/mode-001.txt +0 -3
  464. package/evals/prompts/mode-002.txt +0 -1
  465. package/evals/prompts/mode-003.txt +0 -3
  466. package/evals/prompts/mode-004.txt +0 -3
  467. package/evals/prompts/mode-005.txt +0 -3
  468. package/evals/prompts/mode-006.txt +0 -3
  469. package/evals/prompts/mode-007.txt +0 -3
  470. package/evals/prompts/otr-001.txt +0 -3
  471. package/evals/prompts/otr-002.txt +0 -3
  472. package/evals/prompts/rar-001.txt +0 -5
  473. package/evals/prompts/rar-002.txt +0 -3
  474. package/evals/prompts/rar-003.txt +0 -6
  475. package/evals/prompts/rar-004.txt +0 -15
  476. package/evals/prompts/rar-005.txt +0 -10
  477. package/evals/prompts/rbr-001.txt +0 -3
  478. package/evals/prompts/rbr-002.txt +0 -3
  479. package/evals/prompts/rbr-003.txt +0 -7
  480. package/evals/prompts/rev-001.txt +0 -3
  481. package/evals/prompts/rev-002.txt +0 -5
  482. package/evals/prompts/rev-003.txt +0 -6
  483. package/evals/prompts/rev-004.txt +0 -1
  484. package/evals/prompts/rev-005.txt +0 -15
  485. package/evals/prompts/rev-006.txt +0 -5
  486. package/evals/prompts/stp-001.txt +0 -1
  487. package/evals/prompts/stp-002.txt +0 -1
  488. package/evals/prompts/stp-003.txt +0 -1
  489. package/evals/prompts/stp-004.txt +0 -1
  490. package/evals/prompts/stp-005.txt +0 -1
  491. package/evals/prompts/stp-006.txt +0 -1
  492. package/evals/prompts/stp-007.txt +0 -1
  493. package/evals/prompts/stp-008.txt +0 -1
  494. package/evals/prompts/stp-009.txt +0 -1
  495. package/evals/prompts/stp-010.txt +0 -1
  496. package/evals/prompts/stp-011.txt +0 -1
  497. package/evals/prompts/vfy-003.txt +0 -1
  498. package/evals/prompts/wpl-001.txt +0 -3
  499. package/evals/prompts/wpl-002.txt +0 -5
  500. package/evals/prompts/wpl-003.txt +0 -3
  501. package/evals/prompts/wpl-004.txt +0 -5
  502. package/evals/prompts/wpl-005.txt +0 -1
  503. package/evals/prompts/wrc-001.txt +0 -10
  504. package/evals/prompts/wrc-002.txt +0 -3
  505. package/evals/prompts/wsk-001.txt +0 -6
  506. package/evals/prompts/wsp-001.txt +0 -5
  507. package/evals/prompts/wsp-002.txt +0 -15
  508. package/evals/prompts/wsp-003.txt +0 -3
  509. package/evals/prompts/wsp-004.txt +0 -15
  510. package/evals/prompts/wsp-005.txt +0 -5
  511. package/evals/prompts/wsp-006.txt +0 -12
  512. package/evals/prompts/wsp-007.txt +0 -9
  513. package/evals/prompts/wsp-008.txt +0 -13
  514. package/evals/prompts/xpl-001.txt +0 -1
  515. package/evals/prompts/xpl-002.txt +0 -3
  516. package/evals/prompts/xpl-003.txt +0 -3
  517. package/evals/prompts/xpl-004.txt +0 -3
  518. package/evals/prompts/xpl-005.txt +0 -5
  519. package/evals/prompts/xpl-006.txt +0 -3
  520. package/evals/registries/adversarial-evals.json +0 -39
  521. package/evals/registries/fixture-evals.json +0 -2513
  522. package/evals/registries/handoff-evals.json +0 -74
  523. package/evals/registries/legacy-evals.json +0 -147
  524. package/evals/registries/skill-evidence.json +0 -193
  525. package/evals/registries/verify-work-evals.json +0 -46
  526. package/evals/reports/acceptance/v0.1-acceptance-report.md +0 -130
  527. package/evals/reports/by-command-surface/command-surface-1-report.md +0 -45
  528. package/evals/reports/by-command-surface/command-surface-10-report.md +0 -76
  529. package/evals/reports/by-command-surface/command-surface-11-report.md +0 -77
  530. package/evals/reports/by-command-surface/command-surface-12-report.md +0 -91
  531. package/evals/reports/by-command-surface/command-surface-13-report.md +0 -64
  532. package/evals/reports/by-command-surface/command-surface-14-report.md +0 -66
  533. package/evals/reports/by-command-surface/command-surface-15-report.md +0 -124
  534. package/evals/reports/by-command-surface/command-surface-16-report.md +0 -39
  535. package/evals/reports/by-command-surface/command-surface-2-report.md +0 -80
  536. package/evals/reports/by-command-surface/command-surface-3-report.md +0 -86
  537. package/evals/reports/by-command-surface/command-surface-4-report.md +0 -76
  538. package/evals/reports/by-command-surface/command-surface-5-report.md +0 -80
  539. package/evals/reports/by-command-surface/command-surface-6-report.md +0 -74
  540. package/evals/reports/by-command-surface/command-surface-7-report.md +0 -84
  541. package/evals/reports/by-command-surface/command-surface-8-report.md +0 -79
  542. package/evals/reports/by-command-surface/command-surface-9-report.md +0 -79
  543. package/evals/reports/by-command-surface/command-surface-matrix.md +0 -91
  544. package/evals/reports/by-skill/bypass-1-report.md +0 -124
  545. package/evals/reports/by-skill/capture-decisions-1-report.md +0 -99
  546. package/evals/reports/by-skill/capture-decisions-2-report.md +0 -102
  547. package/evals/reports/by-skill/commit-work-1-report.md +0 -165
  548. package/evals/reports/by-skill/commit-work-2-report.md +0 -109
  549. package/evals/reports/by-skill/design-for-depth-1-report.md +0 -95
  550. package/evals/reports/by-skill/diagnose-failure-1-report.md +0 -91
  551. package/evals/reports/by-skill/diagnose-failure-2-report.md +0 -94
  552. package/evals/reports/by-skill/discover-1-report.md +0 -118
  553. package/evals/reports/by-skill/evaluate-skill-2-report.md +0 -71
  554. package/evals/reports/by-skill/execute-plan-1-report.md +0 -103
  555. package/evals/reports/by-skill/execute-plan-2-report.md +0 -112
  556. package/evals/reports/by-skill/execute-plan-3-report.md +0 -87
  557. package/evals/reports/by-skill/grill-context-1-report.md +0 -103
  558. package/evals/reports/by-skill/handoff-1-report.md +0 -123
  559. package/evals/reports/by-skill/handoff-2-report.md +0 -105
  560. package/evals/reports/by-skill/handoff-3-report.md +0 -100
  561. package/evals/reports/by-skill/handoff-7-report.md +0 -77
  562. package/evals/reports/by-skill/interview-gate-1-report.md +0 -63
  563. package/evals/reports/by-skill/interview-gate-2-report.md +0 -105
  564. package/evals/reports/by-skill/mode-contract-1-report.md +0 -74
  565. package/evals/reports/by-skill/mode-contract-2-report.md +0 -87
  566. package/evals/reports/by-skill/mode-contract-3-report.md +0 -65
  567. package/evals/reports/by-skill/mode-contract-4-report.md +0 -71
  568. package/evals/reports/by-skill/mode-contract-5-report.md +0 -70
  569. package/evals/reports/by-skill/output-router-1-report.md +0 -76
  570. package/evals/reports/by-skill/output-router-2-report.md +0 -65
  571. package/evals/reports/by-skill/research-1-report.md +0 -144
  572. package/evals/reports/by-skill/research-brief-1-report.md +0 -94
  573. package/evals/reports/by-skill/research-brief-2-report.md +0 -75
  574. package/evals/reports/by-skill/review-artifact-1-report.md +0 -91
  575. package/evals/reports/by-skill/review-artifact-2-report.md +0 -79
  576. package/evals/reports/by-skill/review-artifact-3-report.md +0 -120
  577. package/evals/reports/by-skill/review-artifact-4-report.md +0 -89
  578. package/evals/reports/by-skill/review-artifact-5-report.md +0 -66
  579. package/evals/reports/by-skill/review-work-1-report.md +0 -85
  580. package/evals/reports/by-skill/review-work-2-report.md +0 -87
  581. package/evals/reports/by-skill/review-work-3-report.md +0 -104
  582. package/evals/reports/by-skill/review-work-4-report.md +0 -108
  583. package/evals/reports/by-skill/review-work-5-report.md +0 -73
  584. package/evals/reports/by-skill/review-work-6-report.md +0 -66
  585. package/evals/reports/by-skill/setup-freeflow-1-report.md +0 -199
  586. package/evals/reports/by-skill/setup-freeflow-2-report.md +0 -105
  587. package/evals/reports/by-skill/setup-freeflow-3-report.md +0 -105
  588. package/evals/reports/by-skill/setup-freeflow-4-report.md +0 -88
  589. package/evals/reports/by-skill/setup-freeflow-5-report.md +0 -115
  590. package/evals/reports/by-skill/skill-authoring-1-report.md +0 -81
  591. package/evals/reports/by-skill/verify-work-1-report.md +0 -111
  592. package/evals/reports/by-skill/verify-work-2-report.md +0 -120
  593. package/evals/reports/by-skill/workflow-1-report.md +0 -65
  594. package/evals/reports/by-skill/write-plan-1-report.md +0 -123
  595. package/evals/reports/by-skill/write-plan-2-report.md +0 -98
  596. package/evals/reports/by-skill/write-plan-3-report.md +0 -110
  597. package/evals/reports/by-skill/write-spec-1-report.md +0 -88
  598. package/evals/reports/by-skill/write-spec-2-report.md +0 -89
  599. package/evals/reports/by-skill/write-spec-3-report.md +0 -90
  600. package/evals/reports/by-skill/write-spec-4-report.md +0 -167
  601. package/evals/reports/harness/claude-harness-1-report.md +0 -103
  602. package/evals/reports/harness/eval-harness-1-report.md +0 -91
  603. package/evals/reports/iterations/iteration-1-report.md +0 -71
  604. package/evals/reports/iterations/iteration-2-report.md +0 -78
  605. package/evals/reports/iterations/iteration-3-report.md +0 -118
  606. package/evals/reports/iterations/iteration-4-report.md +0 -131
  607. package/evals/reports/iterations/iteration-5-report.md +0 -149
  608. package/evals/reports/iterations/iteration-6-report.md +0 -136
  609. package/evals/reports/runtime/always-on-runtime-1-report.md +0 -107
  610. package/evals/reports/runtime/context-mode-normalized-benchmark-1-report.md +0 -52
  611. package/evals/reports/runtime/context-mode-real-deep-baseline-1-report.md +0 -410
  612. package/evals/reports/runtime/context-mode-real-deep-final-slice-11-report.md +0 -203
  613. package/evals/reports/runtime/context-mode-real-deep-final-slice-11-review.md +0 -51
  614. package/evals/reports/runtime/context-saving-native-tools-baseline-1-report.md +0 -99
  615. package/evals/reports/runtime/eryx-python-compatibility-reprobe-1-report.md +0 -166
  616. package/evals/reports/runtime/eryx-python-proof-spike-1-report.md +0 -96
  617. package/evals/reports/runtime/eryx-python-proof-spike-2-report.md +0 -151
  618. package/evals/reports/runtime/eryx-python-script-derive-execution-1-report.md +0 -233
  619. package/evals/reports/runtime/jq-script-derive-execution-1-report.md +0 -215
  620. package/evals/reports/runtime/jq-wasm-proof-spike-1-report.md +0 -67
  621. package/evals/reports/runtime/output-router-benchmark-1-report.md +0 -81
  622. package/evals/reports/runtime/output-router-capture-derive-provider-eval-1-report.md +0 -35
  623. package/evals/reports/runtime/output-router-codex-large-index-sqlite-adhoc-report.md +0 -150
  624. package/evals/reports/runtime/output-router-codex-qa-benchmark-1-report.md +0 -46
  625. package/evals/reports/runtime/output-router-command-benchmark-1-report.md +0 -62
  626. package/evals/reports/runtime/output-router-index-benchmark-1-report.md +0 -64
  627. package/evals/reports/runtime/output-router-regression-1-report.md +0 -81
  628. package/evals/reports/runtime/output-router-transform-eval-1-report.md +0 -28
  629. package/evals/reports/runtime/pi-observed-routing-eval-1-report.md +0 -44
  630. package/evals/reports/runtime/quickjs-script-derive-execution-1-report.md +0 -159
  631. package/evals/reports/runtime/quickjs-wasi-proof-spike-1-report.md +0 -55
  632. package/evals/reports/runtime/render-format-row-protocol-1-report.md +0 -58
  633. package/evals/reports/runtime/script-sandbox-adapter-selection-review-1-report.md +0 -84
  634. package/evals/reports/runtime/script-sandbox-probe-resource-hardening-1-report.md +0 -51
  635. package/evals/reports/runtime/storage-policy-benchmark-1-report.md +0 -176
  636. package/evals/reports/runtime/vault-index-storage-spike-1-report.md +0 -39
  637. package/evals/reports/runtime/workflow-context-hook-1-report.md +0 -82
  638. package/evals/runbooks/adversarial-eval-runbook.md +0 -28
  639. package/evals/runbooks/fixture-eval-runbook.md +0 -137
  640. package/evals/runbooks/handoff-eval-runbook.md +0 -22
  641. package/evals/runbooks/verify-work-eval-runbook.md +0 -27
  642. package/evals/scripts/audit-command-surface.sh +0 -160
  643. package/evals/scripts/check-activation-contract.sh +0 -121
  644. package/evals/scripts/check-runtime-context-hook.sh +0 -183
  645. package/evals/scripts/grade-fixture-eval.sh +0 -446
  646. package/evals/scripts/run-claude-fixture-eval.sh +0 -26
  647. package/evals/scripts/run-codex-fixture-eval.sh +0 -26
  648. package/evals/scripts/run-eryx-python-proof-spike.js +0 -559
  649. package/evals/scripts/run-fixture-eval-by-id.sh +0 -23
  650. package/evals/scripts/run-fixture-eval.sh +0 -464
  651. package/evals/scripts/run-jq-wasm-proof-spike.js +0 -299
  652. package/evals/scripts/run-output-router-transform-eval.js +0 -115
  653. package/evals/scripts/run-pi-observed-routing-eval.js +0 -478
  654. package/evals/scripts/run-quickjs-wasi-proof-spike.js +0 -339
  655. package/evals/scripts/skill-evidence.sh +0 -316
  656. package/evals/scripts/validate-release-metadata.sh +0 -486
  657. package/evals/suites/v0.1-acceptance-suite.md +0 -131
  658. package/pi-extension/dist/host-producer-identification.js +0 -186
  659. package/pi-extension/dist/mcp-config.js +0 -30
  660. package/pi-extension/dist/native-safety-net.js +0 -209
  661. package/pi-extension/dist/observed-tool-routing.js +0 -114
  662. package/pi-extension/dist/renderers.js +0 -835
  663. package/pi-extension/dist/router-tools.js +0 -438
  664. package/pi-extension/dist/runtime-context.js +0 -288
  665. package/pi-extension/dist/schemas.js +0 -254
  666. package/pi-extension/dist/status.js +0 -449
  667. package/pi-extension/dist/utils.js +0 -467
  668. package/pi-extension/src/runtime-context.ts +0 -347
  669. package/pi-extension/src/status.ts +0 -505
  670. package/plugin-docs/README.md +0 -40
  671. package/plugin-docs/adr/0001-three-modes.md +0 -27
  672. package/plugin-docs/adr/0002-evals-before-hooks.md +0 -17
  673. package/plugin-docs/adr/0003-release-boundary.md +0 -21
  674. package/plugin-docs/adr/0004-discover-replaces-shallow-discovery-skills.md +0 -26
  675. package/plugin-docs/adr/README.md +0 -10
  676. package/plugin-docs/architecture.md +0 -89
  677. package/plugin-docs/output-router.md +0 -396
  678. package/plugin-docs/release-evidence.md +0 -77
  679. package/plugin-docs/skills.md +0 -44
  680. package/plugin-docs/workflow.md +0 -57
  681. package/skills/diagnose-failure/references/feedback-loop-catalog.md +0 -25
  682. package/skills/discover/ARTIFACT-DESTINATIONS.md +0 -58
  683. package/skills/discover/CHECKPOINTS.md +0 -74
  684. package/skills/discover/SKILL.md +0 -173
  685. package/skills/evaluate-skill/references/eval-patterns.md +0 -41
  686. package/skills/evaluate-skill/references/grading-priority.md +0 -33
  687. package/skills/execute-plan/SKILL.md +0 -133
  688. package/skills/execute-plan/references/execution-map.md +0 -122
  689. package/skills/interview-gate/SKILL.md +0 -90
  690. package/skills/setup-freeflow/references/output-router-setup.md +0 -102
  691. package/skills/workflow/references/workflow-map.md +0 -104
  692. /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
  }