@hassangameryt/freeflow 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/{plugins/freeflow/.claude-plugin → .claude-plugin}/plugin.json +1 -1
- package/{plugins/freeflow/.codex-plugin → .codex-plugin}/plugin.json +1 -1
- package/README.md +25 -16
- package/assets/freeflow-plugin-icon.png +0 -0
- package/{plugins/freeflow/command-surface.json → command-surface.json} +10 -10
- package/evals/README.md +32 -0
- package/evals/fixtures/copy-conventions.md +31 -0
- package/evals/fixtures/output-router/README.md +12 -0
- package/evals/fixtures/output-router/failed-command-output.txt +9 -0
- package/evals/fixtures/output-router/large-router-manual.md +63 -0
- package/evals/fixtures/output-router/native-large-output.txt +40 -0
- package/evals/fixtures/output-router/noisy-test-output.txt +30 -0
- package/evals/fixtures/output-router/verification-output.txt +8 -0
- package/evals/fixtures/tiny-artifact-review-app/README.md +5 -0
- package/evals/fixtures/tiny-artifact-review-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/billing-webhook-api-draft.md +21 -0
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/failed-payment-grace-period.md +24 -0
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/immediate-downgrade.md +17 -0
- package/evals/fixtures/tiny-artifact-review-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/.freeflow-eval-setup.sh +15 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-commit-ambiguous-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-commit-app/.freeflow-eval-setup.sh +14 -0
- package/evals/fixtures/tiny-commit-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-app/docs/specs/settings-title.md +5 -0
- package/evals/fixtures/tiny-commit-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-commit-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-commit-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-commit-everything-app/.freeflow-eval-setup.sh +15 -0
- package/evals/fixtures/tiny-commit-everything-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-everything-app/docs/specs/settings-title.md +5 -0
- package/evals/fixtures/tiny-commit-everything-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-commit-everything-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-commit-everything-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-commit-staged-app/.freeflow-eval-setup.sh +15 -0
- package/evals/fixtures/tiny-commit-staged-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-staged-app/docs/specs/settings-title.md +5 -0
- package/evals/fixtures/tiny-commit-staged-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-commit-staged-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-commit-staged-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/.freeflow-eval-setup.sh +15 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/README.md +3 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/docs/billing-policy.md +3 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/docs/release-notes.md +3 -0
- package/evals/fixtures/tiny-commit-staged-mixed-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-dashboard-stale-app/README.md +11 -0
- package/evals/fixtures/tiny-dashboard-stale-app/src/api-client.ts +13 -0
- package/evals/fixtures/tiny-dashboard-stale-app/src/dashboard-data.ts +19 -0
- package/evals/fixtures/tiny-dashboard-stale-app/tests/dashboard-data.test.md +9 -0
- package/evals/fixtures/tiny-decision-destination-app/README.md +6 -0
- package/evals/fixtures/tiny-decision-destination-app/src/risk.ts +8 -0
- package/evals/fixtures/tiny-decision-destination-app/tests/risk.test.md +4 -0
- package/evals/fixtures/tiny-design-depth-app/README.md +15 -0
- package/evals/fixtures/tiny-design-depth-app/src/routes.ts +25 -0
- package/evals/fixtures/tiny-design-depth-app/src/sendEmail.ts +3 -0
- package/evals/fixtures/tiny-design-depth-app/src/sendSms.ts +3 -0
- package/evals/fixtures/tiny-design-depth-app/src/telemetry.ts +3 -0
- package/evals/fixtures/tiny-design-depth-app/tests/routes.test.md +12 -0
- package/evals/fixtures/tiny-eval-method-app/README.md +8 -0
- package/evals/fixtures/tiny-eval-method-app/evals/reports/review-pr-eval-result.md +5 -0
- package/evals/fixtures/tiny-eval-method-app/evals/reports/triage-question-failure.md +17 -0
- package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.diff +11 -0
- package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.md +3 -0
- package/evals/fixtures/tiny-eval-method-app/skills/review-pr/SKILL.md +10 -0
- package/evals/fixtures/tiny-eval-method-app/skills/triage-question/SKILL.md +10 -0
- package/evals/fixtures/tiny-execute-plan-app/README.md +5 -0
- package/evals/fixtures/tiny-execute-plan-app/checks/settings-and-billing-check.sh +5 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/immediate-downgrade-plan.md +11 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-plan.md +12 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-with-bad-check.md +15 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/unverified-billing-plan.md +9 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/specs/failed-payment-grace-period.md +9 -0
- package/evals/fixtures/tiny-execute-plan-app/docs/specs/settings-title.md +9 -0
- package/evals/fixtures/tiny-execute-plan-app/src/billing.ts +7 -0
- package/evals/fixtures/tiny-execute-plan-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-execute-plan-app/tests/billing.test.md +7 -0
- package/evals/fixtures/tiny-execute-plan-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-execute-review-loop-app/README.md +5 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/billing-policy.md +9 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/plans/settings-title-plan.md +12 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/review/previous-agent-summary.md +15 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/review/review-pass-1-non-pass.md +11 -0
- package/evals/fixtures/tiny-execute-review-loop-app/docs/specs/settings-title.md +9 -0
- package/evals/fixtures/tiny-execute-review-loop-app/src/billing.ts +7 -0
- package/evals/fixtures/tiny-execute-review-loop-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-execute-review-loop-app/tests/billing.test.md +7 -0
- package/evals/fixtures/tiny-execute-review-loop-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-flaky-session-app/README.md +10 -0
- package/evals/fixtures/tiny-flaky-session-app/src/session-timeout.ts +13 -0
- package/evals/fixtures/tiny-flaky-session-app/tests/session-timeout.test.md +8 -0
- package/evals/fixtures/tiny-handoff-app/README.md +5 -0
- package/evals/fixtures/tiny-handoff-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-handoff-app/docs/handoffs/old-agent-handoff.md +8 -0
- package/evals/fixtures/tiny-handoff-app/docs/plans/billing-retry-plan.md +11 -0
- package/evals/fixtures/tiny-handoff-app/src/billing.ts +7 -0
- package/evals/fixtures/tiny-handoff-report-app/README.md +3 -0
- package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.diff +1 -0
- package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.md +1 -0
- package/evals/fixtures/tiny-handoff-report-app/evals/scores/hof-003-score.txt +4 -0
- package/evals/fixtures/tiny-plan-app/README.md +5 -0
- package/evals/fixtures/tiny-plan-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-plan-app/docs/specs/failed-payment-grace-period.md +25 -0
- package/evals/fixtures/tiny-plan-app/src/billing.ts +17 -0
- package/evals/fixtures/tiny-plan-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-plan-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-plan-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-plan-strict-api-app/README.md +3 -0
- package/evals/fixtures/tiny-plan-strict-api-app/docs/billing-policy.md +5 -0
- package/evals/fixtures/tiny-plan-strict-api-app/docs/specs/billing-webhook-api.md +25 -0
- package/evals/fixtures/tiny-plan-strict-api-app/src/billing.ts +5 -0
- package/evals/fixtures/tiny-plan-strict-api-app/src/webhooks.ts +3 -0
- package/evals/fixtures/tiny-plan-strict-api-app/tests/billing-webhook.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/.freeflow/config.json +3 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/AGENTS.md +15 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/README.md +16 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/auth-review.md +15 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/copy-conventions.md +15 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/auth-middleware.ts +12 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/billing.ts +20 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/login-copy.ts +1 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/auth-middleware.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/copy.test.md +7 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/AGENTS.md +15 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/README.md +16 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/auth-review.md +15 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/copy-conventions.md +15 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/auth-middleware.ts +12 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/billing.ts +20 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/login-copy.ts +1 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/auth-middleware.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/copy.test.md +7 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/.freeflow/config.json +3 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/AGENTS.md +15 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/README.md +16 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/auth-review.md +15 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/copy-conventions.md +15 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/auth-middleware.ts +12 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/billing.ts +20 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/login-copy.ts +1 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/auth-middleware.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/copy.test.md +7 -0
- package/evals/fixtures/tiny-report-performance-app/README.md +11 -0
- package/evals/fixtures/tiny-report-performance-app/docs/performance.md +10 -0
- package/evals/fixtures/tiny-report-performance-app/src/report-summary.ts +29 -0
- package/evals/fixtures/tiny-report-performance-app/tests/report-performance.test.md +8 -0
- package/evals/fixtures/tiny-review-request-app/README.md +3 -0
- package/evals/fixtures/tiny-review-request-app/docs/billing-policy.md +5 -0
- package/evals/fixtures/tiny-review-request-app/docs/plans/billing-webhook-api.md +19 -0
- package/evals/fixtures/tiny-review-request-app/docs/review/previous-agent-summary.md +20 -0
- package/evals/fixtures/tiny-review-request-app/docs/specs/billing-webhook-api.md +25 -0
- package/evals/fixtures/tiny-review-request-app/src/billing.ts +11 -0
- package/evals/fixtures/tiny-review-request-app/src/webhooks.ts +19 -0
- package/evals/fixtures/tiny-review-request-app/tests/billing-webhook.test.md +8 -0
- package/evals/fixtures/tiny-review-work-app/README.md +5 -0
- package/evals/fixtures/tiny-review-work-app/docs/billing-policy.md +9 -0
- package/evals/fixtures/tiny-review-work-app/docs/plans/settings-title-plan.md +12 -0
- package/evals/fixtures/tiny-review-work-app/docs/review/previous-agent-summary.md +15 -0
- package/evals/fixtures/tiny-review-work-app/docs/specs/settings-title.md +9 -0
- package/evals/fixtures/tiny-review-work-app/src/billing.ts +7 -0
- package/evals/fixtures/tiny-review-work-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-review-work-app/tests/billing.test.md +7 -0
- package/evals/fixtures/tiny-review-work-app/tests/settings.test.md +5 -0
- package/evals/fixtures/tiny-saas-app/README.md +16 -0
- package/evals/fixtures/tiny-saas-app/docs/auth-review.md +15 -0
- package/evals/fixtures/tiny-saas-app/docs/billing-policy.md +10 -0
- package/evals/fixtures/tiny-saas-app/docs/copy-conventions.md +15 -0
- package/evals/fixtures/tiny-saas-app/docs/specs/settings-title.md +13 -0
- package/evals/fixtures/tiny-saas-app/src/auth-middleware.ts +12 -0
- package/evals/fixtures/tiny-saas-app/src/billing.ts +20 -0
- package/evals/fixtures/tiny-saas-app/src/login-copy.ts +1 -0
- package/evals/fixtures/tiny-saas-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-saas-app/tests/auth-middleware.test.md +8 -0
- package/evals/fixtures/tiny-saas-app/tests/billing.test.md +8 -0
- package/evals/fixtures/tiny-saas-app/tests/copy.test.md +7 -0
- package/evals/fixtures/tiny-setup-agents-app/AGENTS.md +6 -0
- package/evals/fixtures/tiny-setup-both-app/AGENTS.md +5 -0
- package/evals/fixtures/tiny-setup-both-app/CLAUDE.md +5 -0
- package/evals/fixtures/tiny-setup-claude-app/CLAUDE.md +6 -0
- package/evals/fixtures/tiny-setup-codex-rules-app/.codex/rules/shell.rules +5 -0
- package/evals/fixtures/tiny-setup-codex-rules-app/AGENTS.md +6 -0
- package/evals/fixtures/tiny-setup-conflict-app/AGENTS.md +6 -0
- package/evals/fixtures/tiny-setup-existing-block-app/AGENTS.md +14 -0
- package/evals/fixtures/tiny-setup-four-rules-app/CLAUDE.md +6 -0
- package/evals/fixtures/tiny-skill-dev-app/README.md +10 -0
- package/evals/fixtures/tiny-skill-dev-app/evals/prompts/review-pr-001.txt +8 -0
- package/evals/fixtures/tiny-skill-dev-app/evals/reports/review-pr-failure.md +17 -0
- package/evals/fixtures/tiny-skill-dev-app/skills/review-pr/SKILL.md +13 -0
- package/evals/fixtures/tiny-team-app/README.md +5 -0
- package/evals/fixtures/tiny-team-app/docs/product.md +6 -0
- package/evals/fixtures/tiny-team-app/src/teams.ts +9 -0
- package/evals/fixtures/tiny-team-app/src/users.ts +5 -0
- package/evals/fixtures/tiny-team-app/tests/teams.test.md +7 -0
- package/evals/fixtures/tiny-verify-app/README.md +5 -0
- package/evals/fixtures/tiny-verify-app/src/settings-nav.ts +1 -0
- package/evals/fixtures/tiny-verify-app/src/settings-page.ts +1 -0
- package/evals/fixtures/tiny-verify-app/tests/settings.test.md +7 -0
- package/evals/prompts/aon-001.txt +2 -0
- package/evals/prompts/byp-001.txt +2 -0
- package/evals/prompts/byp-002.txt +2 -0
- package/evals/prompts/cap-001.txt +3 -0
- package/evals/prompts/cap-002.txt +3 -0
- package/evals/prompts/cmd-001.txt +3 -0
- package/evals/prompts/cmd-002.txt +3 -0
- package/evals/prompts/cmd-003.txt +6 -0
- package/evals/prompts/cmd-004.txt +5 -0
- package/evals/prompts/cmd-005.txt +5 -0
- package/evals/prompts/cmd-006.txt +5 -0
- package/evals/prompts/cmd-007.txt +5 -0
- package/evals/prompts/cmd-008.txt +5 -0
- package/evals/prompts/cmd-009.txt +8 -0
- package/evals/prompts/cmd-010.txt +5 -0
- package/evals/prompts/cmd-011.txt +5 -0
- package/evals/prompts/cmd-012.txt +5 -0
- package/evals/prompts/cmd-013.txt +5 -0
- package/evals/prompts/cmd-014.txt +7 -0
- package/evals/prompts/cmd-015.txt +7 -0
- package/evals/prompts/cmd-016.txt +5 -0
- package/evals/prompts/cmt-001.txt +1 -0
- package/evals/prompts/cmt-002.txt +1 -0
- package/evals/prompts/cmt-003.txt +1 -0
- package/evals/prompts/cmt-004.txt +1 -0
- package/evals/prompts/cmt-005.txt +1 -0
- package/evals/prompts/dfd-001.txt +3 -0
- package/evals/prompts/dia-001.txt +3 -0
- package/evals/prompts/dia-002.txt +3 -0
- package/evals/prompts/dia-003.txt +3 -0
- package/evals/prompts/dis-001.txt +5 -0
- package/evals/prompts/dis-002.txt +5 -0
- package/evals/prompts/esk-001.txt +5 -0
- package/evals/prompts/esk-002.txt +5 -0
- package/evals/prompts/esk-003.txt +5 -0
- package/evals/prompts/grc-001.txt +3 -0
- package/evals/prompts/hof-001.txt +3 -0
- package/evals/prompts/hof-002.txt +1 -0
- package/evals/prompts/hof-003.txt +1 -0
- package/evals/prompts/hof-004.txt +1 -0
- package/evals/prompts/hof-005.txt +1 -0
- package/evals/prompts/ivg-001.txt +1 -0
- package/evals/prompts/ivg-002.txt +11 -0
- package/evals/prompts/ivg-003.txt +1 -0
- package/evals/prompts/ivg-004.txt +1 -0
- package/evals/prompts/mode-001.txt +3 -0
- package/evals/prompts/mode-002.txt +1 -0
- package/evals/prompts/mode-003.txt +3 -0
- package/evals/prompts/mode-004.txt +3 -0
- package/evals/prompts/mode-005.txt +3 -0
- package/evals/prompts/mode-006.txt +3 -0
- package/evals/prompts/mode-007.txt +3 -0
- package/evals/prompts/otr-001.txt +3 -0
- package/evals/prompts/otr-002.txt +3 -0
- package/evals/prompts/rar-001.txt +5 -0
- package/evals/prompts/rar-002.txt +3 -0
- package/evals/prompts/rar-003.txt +6 -0
- package/evals/prompts/rar-004.txt +15 -0
- package/evals/prompts/rar-005.txt +10 -0
- package/evals/prompts/rbr-001.txt +3 -0
- package/evals/prompts/rbr-002.txt +3 -0
- package/evals/prompts/rbr-003.txt +7 -0
- package/evals/prompts/rev-001.txt +3 -0
- package/evals/prompts/rev-002.txt +5 -0
- package/evals/prompts/rev-003.txt +6 -0
- package/evals/prompts/rev-004.txt +1 -0
- package/evals/prompts/rev-005.txt +15 -0
- package/evals/prompts/rev-006.txt +5 -0
- package/evals/prompts/stp-001.txt +1 -0
- package/evals/prompts/stp-002.txt +1 -0
- package/evals/prompts/stp-003.txt +1 -0
- package/evals/prompts/stp-004.txt +1 -0
- package/evals/prompts/stp-005.txt +1 -0
- package/evals/prompts/stp-006.txt +1 -0
- package/evals/prompts/stp-007.txt +1 -0
- package/evals/prompts/stp-008.txt +1 -0
- package/evals/prompts/stp-009.txt +1 -0
- package/evals/prompts/stp-010.txt +1 -0
- package/evals/prompts/stp-011.txt +1 -0
- package/evals/prompts/vfy-003.txt +1 -0
- package/evals/prompts/wpl-001.txt +3 -0
- package/evals/prompts/wpl-002.txt +5 -0
- package/evals/prompts/wpl-003.txt +3 -0
- package/evals/prompts/wpl-004.txt +5 -0
- package/evals/prompts/wpl-005.txt +1 -0
- package/evals/prompts/wrc-001.txt +10 -0
- package/evals/prompts/wrc-002.txt +3 -0
- package/evals/prompts/wsk-001.txt +6 -0
- package/evals/prompts/wsp-001.txt +5 -0
- package/evals/prompts/wsp-002.txt +15 -0
- package/evals/prompts/wsp-003.txt +3 -0
- package/evals/prompts/wsp-004.txt +15 -0
- package/evals/prompts/wsp-005.txt +5 -0
- package/evals/prompts/wsp-006.txt +12 -0
- package/evals/prompts/wsp-007.txt +9 -0
- package/evals/prompts/wsp-008.txt +13 -0
- package/evals/prompts/xpl-001.txt +1 -0
- package/evals/prompts/xpl-002.txt +3 -0
- package/evals/prompts/xpl-003.txt +3 -0
- package/evals/prompts/xpl-004.txt +3 -0
- package/evals/prompts/xpl-005.txt +5 -0
- package/evals/prompts/xpl-006.txt +3 -0
- package/evals/registries/adversarial-evals.json +39 -0
- package/evals/registries/fixture-evals.json +2513 -0
- package/evals/registries/handoff-evals.json +74 -0
- package/evals/registries/legacy-evals.json +147 -0
- package/evals/registries/skill-evidence.json +193 -0
- package/evals/registries/verify-work-evals.json +46 -0
- package/evals/reports/acceptance/v0.1-acceptance-report.md +130 -0
- package/evals/reports/by-command-surface/command-surface-1-report.md +45 -0
- package/evals/reports/by-command-surface/command-surface-10-report.md +76 -0
- package/evals/reports/by-command-surface/command-surface-11-report.md +77 -0
- package/evals/reports/by-command-surface/command-surface-12-report.md +91 -0
- package/evals/reports/by-command-surface/command-surface-13-report.md +64 -0
- package/evals/reports/by-command-surface/command-surface-14-report.md +66 -0
- package/evals/reports/by-command-surface/command-surface-15-report.md +124 -0
- package/evals/reports/by-command-surface/command-surface-16-report.md +39 -0
- package/evals/reports/by-command-surface/command-surface-2-report.md +80 -0
- package/evals/reports/by-command-surface/command-surface-3-report.md +86 -0
- package/evals/reports/by-command-surface/command-surface-4-report.md +76 -0
- package/evals/reports/by-command-surface/command-surface-5-report.md +80 -0
- package/evals/reports/by-command-surface/command-surface-6-report.md +74 -0
- package/evals/reports/by-command-surface/command-surface-7-report.md +84 -0
- package/evals/reports/by-command-surface/command-surface-8-report.md +79 -0
- package/evals/reports/by-command-surface/command-surface-9-report.md +79 -0
- package/evals/reports/by-command-surface/command-surface-matrix.md +91 -0
- package/evals/reports/by-skill/bypass-1-report.md +124 -0
- package/evals/reports/by-skill/capture-decisions-1-report.md +99 -0
- package/evals/reports/by-skill/capture-decisions-2-report.md +102 -0
- package/evals/reports/by-skill/commit-work-1-report.md +165 -0
- package/evals/reports/by-skill/commit-work-2-report.md +109 -0
- package/evals/reports/by-skill/design-for-depth-1-report.md +95 -0
- package/evals/reports/by-skill/diagnose-failure-1-report.md +91 -0
- package/evals/reports/by-skill/diagnose-failure-2-report.md +94 -0
- package/evals/reports/by-skill/discover-1-report.md +118 -0
- package/evals/reports/by-skill/evaluate-skill-2-report.md +71 -0
- package/evals/reports/by-skill/execute-plan-1-report.md +103 -0
- package/evals/reports/by-skill/execute-plan-2-report.md +112 -0
- package/evals/reports/by-skill/execute-plan-3-report.md +87 -0
- package/evals/reports/by-skill/grill-context-1-report.md +103 -0
- package/evals/reports/by-skill/handoff-1-report.md +123 -0
- package/evals/reports/by-skill/handoff-2-report.md +105 -0
- package/evals/reports/by-skill/handoff-3-report.md +100 -0
- package/evals/reports/by-skill/handoff-7-report.md +77 -0
- package/evals/reports/by-skill/interview-gate-1-report.md +63 -0
- package/evals/reports/by-skill/interview-gate-2-report.md +105 -0
- package/evals/reports/by-skill/mode-contract-1-report.md +74 -0
- package/evals/reports/by-skill/mode-contract-2-report.md +87 -0
- package/evals/reports/by-skill/mode-contract-3-report.md +65 -0
- package/evals/reports/by-skill/mode-contract-4-report.md +71 -0
- package/evals/reports/by-skill/mode-contract-5-report.md +70 -0
- package/evals/reports/by-skill/output-router-1-report.md +76 -0
- package/evals/reports/by-skill/output-router-2-report.md +65 -0
- package/evals/reports/by-skill/research-1-report.md +144 -0
- package/evals/reports/by-skill/research-brief-1-report.md +94 -0
- package/evals/reports/by-skill/research-brief-2-report.md +75 -0
- package/evals/reports/by-skill/review-artifact-1-report.md +91 -0
- package/evals/reports/by-skill/review-artifact-2-report.md +79 -0
- package/evals/reports/by-skill/review-artifact-3-report.md +120 -0
- package/evals/reports/by-skill/review-artifact-4-report.md +89 -0
- package/evals/reports/by-skill/review-artifact-5-report.md +66 -0
- package/evals/reports/by-skill/review-work-1-report.md +85 -0
- package/evals/reports/by-skill/review-work-2-report.md +87 -0
- package/evals/reports/by-skill/review-work-3-report.md +104 -0
- package/evals/reports/by-skill/review-work-4-report.md +108 -0
- package/evals/reports/by-skill/review-work-5-report.md +73 -0
- package/evals/reports/by-skill/review-work-6-report.md +66 -0
- package/evals/reports/by-skill/setup-freeflow-1-report.md +199 -0
- package/evals/reports/by-skill/setup-freeflow-2-report.md +105 -0
- package/evals/reports/by-skill/setup-freeflow-3-report.md +105 -0
- package/evals/reports/by-skill/setup-freeflow-4-report.md +88 -0
- package/evals/reports/by-skill/setup-freeflow-5-report.md +115 -0
- package/evals/reports/by-skill/skill-authoring-1-report.md +81 -0
- package/evals/reports/by-skill/verify-work-1-report.md +111 -0
- package/evals/reports/by-skill/verify-work-2-report.md +120 -0
- package/evals/reports/by-skill/workflow-1-report.md +65 -0
- package/evals/reports/by-skill/write-plan-1-report.md +123 -0
- package/evals/reports/by-skill/write-plan-2-report.md +98 -0
- package/evals/reports/by-skill/write-plan-3-report.md +110 -0
- package/evals/reports/by-skill/write-spec-1-report.md +88 -0
- package/evals/reports/by-skill/write-spec-2-report.md +89 -0
- package/evals/reports/by-skill/write-spec-3-report.md +90 -0
- package/evals/reports/by-skill/write-spec-4-report.md +167 -0
- package/evals/reports/harness/claude-harness-1-report.md +103 -0
- package/evals/reports/harness/eval-harness-1-report.md +91 -0
- package/evals/reports/iterations/iteration-1-report.md +71 -0
- package/evals/reports/iterations/iteration-2-report.md +78 -0
- package/evals/reports/iterations/iteration-3-report.md +118 -0
- package/evals/reports/iterations/iteration-4-report.md +131 -0
- package/evals/reports/iterations/iteration-5-report.md +149 -0
- package/evals/reports/iterations/iteration-6-report.md +136 -0
- package/evals/reports/runtime/always-on-runtime-1-report.md +107 -0
- package/evals/reports/runtime/context-mode-normalized-benchmark-1-report.md +52 -0
- package/evals/reports/runtime/context-mode-real-deep-baseline-1-report.md +410 -0
- package/evals/reports/runtime/context-mode-real-deep-final-slice-11-report.md +203 -0
- package/evals/reports/runtime/context-mode-real-deep-final-slice-11-review.md +51 -0
- package/evals/reports/runtime/context-saving-native-tools-baseline-1-report.md +99 -0
- package/evals/reports/runtime/eryx-python-compatibility-reprobe-1-report.md +166 -0
- package/evals/reports/runtime/eryx-python-proof-spike-1-report.md +96 -0
- package/evals/reports/runtime/eryx-python-proof-spike-2-report.md +151 -0
- package/evals/reports/runtime/eryx-python-script-derive-execution-1-report.md +233 -0
- package/evals/reports/runtime/jq-script-derive-execution-1-report.md +215 -0
- package/evals/reports/runtime/jq-wasm-proof-spike-1-report.md +67 -0
- package/evals/reports/runtime/output-router-benchmark-1-report.md +81 -0
- package/evals/reports/runtime/output-router-capture-derive-provider-eval-1-report.md +35 -0
- package/evals/reports/runtime/output-router-codex-large-index-sqlite-adhoc-report.md +150 -0
- package/evals/reports/runtime/output-router-codex-qa-benchmark-1-report.md +46 -0
- package/evals/reports/runtime/output-router-command-benchmark-1-report.md +62 -0
- package/evals/reports/runtime/output-router-index-benchmark-1-report.md +64 -0
- package/evals/reports/runtime/output-router-regression-1-report.md +81 -0
- package/evals/reports/runtime/output-router-transform-eval-1-report.md +28 -0
- package/evals/reports/runtime/pi-observed-routing-eval-1-report.md +44 -0
- package/evals/reports/runtime/quickjs-script-derive-execution-1-report.md +159 -0
- package/evals/reports/runtime/quickjs-wasi-proof-spike-1-report.md +55 -0
- package/evals/reports/runtime/render-format-row-protocol-1-report.md +58 -0
- package/evals/reports/runtime/script-sandbox-adapter-selection-review-1-report.md +84 -0
- package/evals/reports/runtime/script-sandbox-probe-resource-hardening-1-report.md +51 -0
- package/evals/reports/runtime/storage-policy-benchmark-1-report.md +176 -0
- package/evals/reports/runtime/vault-index-storage-spike-1-report.md +39 -0
- package/evals/reports/runtime/workflow-context-hook-1-report.md +82 -0
- package/evals/runbooks/adversarial-eval-runbook.md +28 -0
- package/evals/runbooks/fixture-eval-runbook.md +137 -0
- package/evals/runbooks/handoff-eval-runbook.md +22 -0
- package/evals/runbooks/verify-work-eval-runbook.md +27 -0
- package/evals/scripts/audit-command-surface.sh +160 -0
- package/evals/scripts/check-activation-contract.sh +121 -0
- package/evals/scripts/check-runtime-context-hook.sh +183 -0
- package/evals/scripts/grade-fixture-eval.sh +446 -0
- package/evals/scripts/run-claude-fixture-eval.sh +26 -0
- package/evals/scripts/run-codex-fixture-eval.sh +26 -0
- package/evals/scripts/run-eryx-python-proof-spike.js +559 -0
- package/evals/scripts/run-fixture-eval-by-id.sh +23 -0
- package/evals/scripts/run-fixture-eval.sh +464 -0
- package/evals/scripts/run-jq-wasm-proof-spike.js +299 -0
- package/evals/scripts/run-output-router-transform-eval.js +115 -0
- package/evals/scripts/run-pi-observed-routing-eval.js +478 -0
- package/evals/scripts/run-quickjs-wasi-proof-spike.js +339 -0
- package/evals/scripts/skill-evidence.sh +316 -0
- package/evals/scripts/validate-release-metadata.sh +486 -0
- package/evals/suites/v0.1-acceptance-suite.md +131 -0
- package/{plugins/freeflow/hooks → hooks}/freeflow-runtime-context.mjs +65 -14
- package/package.json +46 -13
- package/pi-extension/dist/host-producer-identification.js +186 -0
- package/pi-extension/dist/index.js +85 -0
- package/pi-extension/dist/mcp-config.js +30 -0
- package/pi-extension/dist/native-safety-net.js +209 -0
- package/pi-extension/dist/observed-tool-routing.js +114 -0
- package/pi-extension/dist/renderers.js +835 -0
- package/pi-extension/dist/router-tools.js +438 -0
- package/pi-extension/dist/runtime-context.js +288 -0
- package/pi-extension/dist/schemas.js +254 -0
- package/pi-extension/dist/status.js +449 -0
- package/pi-extension/dist/utils.js +467 -0
- package/pi-extension/src/host-producer-identification.ts +226 -0
- package/pi-extension/src/index.ts +121 -0
- package/pi-extension/src/mcp-config.ts +32 -0
- package/pi-extension/src/native-safety-net.ts +252 -0
- package/pi-extension/src/observed-tool-routing.ts +126 -0
- package/pi-extension/src/renderers.ts +917 -0
- package/pi-extension/src/router-tools.ts +478 -0
- package/pi-extension/src/runtime-context.ts +347 -0
- package/pi-extension/src/schemas.ts +259 -0
- package/pi-extension/src/status.ts +505 -0
- package/pi-extension/src/utils.ts +492 -0
- package/pi-extension/tsconfig.json +16 -0
- package/plugin-docs/README.md +40 -0
- package/plugin-docs/adr/0002-evals-before-hooks.md +17 -0
- package/{plugins/freeflow/docs → plugin-docs}/adr/0003-release-boundary.md +2 -2
- package/plugin-docs/adr/0004-discover-replaces-shallow-discovery-skills.md +26 -0
- package/plugin-docs/adr/README.md +10 -0
- package/plugin-docs/architecture.md +89 -0
- package/plugin-docs/output-router.md +396 -0
- package/plugin-docs/release-evidence.md +77 -0
- package/{plugins/freeflow/docs → plugin-docs}/skills.md +7 -7
- package/{plugins/freeflow/docs → plugin-docs}/workflow.md +4 -4
- package/router/dist/benchmarks/benchmark-harness.d.ts +32 -0
- package/router/dist/benchmarks/benchmark-harness.js +92 -0
- package/router/dist/benchmarks/benchmarks.d.ts +102 -0
- package/router/dist/benchmarks/benchmarks.js +880 -0
- package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +91 -0
- package/router/dist/benchmarks/codex-qa-benchmarks.js +461 -0
- package/router/dist/benchmarks/command-benchmarks.d.ts +128 -0
- package/router/dist/benchmarks/command-benchmarks.js +653 -0
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +74 -0
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +707 -0
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +124 -0
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +1295 -0
- package/router/dist/benchmarks/context-saving-baseline.d.ts +54 -0
- package/router/dist/benchmarks/context-saving-baseline.js +439 -0
- package/router/dist/benchmarks/index-benchmarks.d.ts +98 -0
- package/router/dist/benchmarks/index-benchmarks.js +762 -0
- package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +90 -0
- package/router/dist/benchmarks/storage-policy-benchmarks.js +538 -0
- package/router/dist/benchmarks/vault-index-benchmarks.d.ts +47 -0
- package/router/dist/benchmarks/vault-index-benchmarks.js +257 -0
- package/router/dist/config/config.d.ts +96 -0
- package/router/dist/config/config.js +453 -0
- package/router/dist/config/router-contract.d.ts +10 -0
- package/router/dist/config/router-contract.js +54 -0
- package/router/dist/config/schema.d.ts +18 -0
- package/router/dist/config/schema.js +600 -0
- package/router/dist/config/types.d.ts +521 -0
- package/router/dist/config/types.js +30 -0
- package/router/dist/evidence/bounded-evidence.d.ts +40 -0
- package/router/dist/evidence/bounded-evidence.js +310 -0
- package/router/dist/evidence/evidence-range-selector.d.ts +22 -0
- package/router/dist/evidence/evidence-range-selector.js +231 -0
- package/router/dist/evidence/evidence-search.d.ts +25 -0
- package/router/dist/evidence/evidence-search.js +466 -0
- package/router/dist/evidence/evidence.d.ts +38 -0
- package/router/dist/evidence/evidence.js +196 -0
- package/router/dist/evidence/failure-contracts.d.ts +27 -0
- package/router/dist/evidence/failure-contracts.js +160 -0
- package/router/dist/evidence/line-ranges.d.ts +22 -0
- package/router/dist/evidence/line-ranges.js +22 -0
- package/router/dist/experiments/local-index.d.ts +58 -0
- package/router/dist/experiments/local-index.js +562 -0
- package/router/dist/index.d.ts +30 -0
- package/router/dist/index.js +32 -0
- package/router/dist/processing/engine.d.ts +108 -0
- package/router/dist/processing/engine.js +435 -0
- package/router/dist/processing/reducers.d.ts +266 -0
- package/router/dist/processing/reducers.js +1495 -0
- package/router/dist/processing/renderers.d.ts +25 -0
- package/router/dist/processing/renderers.js +186 -0
- package/router/dist/processing/scripts.d.ts +78 -0
- package/router/dist/processing/scripts.js +333 -0
- package/router/dist/repo/repo-traversal.d.ts +18 -0
- package/router/dist/repo/repo-traversal.js +242 -0
- package/router/dist/routing/observed-reducers.d.ts +35 -0
- package/router/dist/routing/observed-reducers.js +647 -0
- package/router/dist/routing/observed-routing.d.ts +17 -0
- package/router/dist/routing/observed-routing.js +377 -0
- package/router/dist/routing/parsers.d.ts +16 -0
- package/router/dist/routing/parsers.js +473 -0
- package/router/dist/routing/run-filters.d.ts +56 -0
- package/router/dist/routing/run-filters.js +230 -0
- package/router/dist/routing/run-reducers.d.ts +30 -0
- package/router/dist/routing/run-reducers.js +110 -0
- package/router/dist/sandbox/adapter-roots.d.ts +38 -0
- package/router/dist/sandbox/adapter-roots.js +64 -0
- package/router/dist/sandbox/eryx-python-adapter.d.ts +9 -0
- package/router/dist/sandbox/eryx-python-adapter.js +797 -0
- package/router/dist/sandbox/jq-wasm-adapter.d.ts +9 -0
- package/router/dist/sandbox/jq-wasm-adapter.js +421 -0
- package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +9 -0
- package/router/dist/sandbox/quickjs-wasi-adapter.js +381 -0
- package/router/dist/sandbox/script-sandbox.d.ts +113 -0
- package/router/dist/sandbox/script-sandbox.js +303 -0
- package/router/dist/setup/script-transform-adapters.d.ts +28 -0
- package/router/dist/setup/script-transform-adapters.js +259 -0
- package/router/dist/tools/batch.d.ts +22 -0
- package/router/dist/tools/batch.js +509 -0
- package/router/dist/tools/run.d.ts +50 -0
- package/router/dist/tools/run.js +1219 -0
- package/router/dist/tools/search.d.ts +44 -0
- package/router/dist/tools/search.js +1205 -0
- package/router/dist/transform/engine.d.ts +143 -0
- package/router/dist/transform/engine.js +1955 -0
- package/router/dist/vault/vault-index.d.ts +106 -0
- package/router/dist/vault/vault-index.js +411 -0
- package/router/dist/vault/vault.d.ts +103 -0
- package/router/dist/vault/vault.js +635 -0
- package/{plugins/freeflow/skills → skills}/commit-work/SKILL.md +17 -16
- package/{plugins/freeflow/skills → skills}/commit-work/references/staging-decisions.md +3 -3
- package/skills/design-for-depth/SKILL.md +90 -0
- package/skills/design-for-depth/references/design-pressure-signals.md +265 -0
- package/skills/design-for-depth/references/software-design-philosophy.md +219 -0
- package/{plugins/freeflow/skills → skills}/diagnose-failure/SKILL.md +6 -1
- package/skills/discover/ARTIFACT-DESTINATIONS.md +58 -0
- package/skills/discover/CHECKPOINTS.md +74 -0
- package/skills/discover/SKILL.md +173 -0
- package/skills/execute-plan/SKILL.md +133 -0
- package/skills/execute-plan/references/execution-map.md +122 -0
- package/{plugins/freeflow/skills → skills}/mode-contract/SKILL.md +10 -5
- package/skills/output-router/SKILL.md +202 -0
- package/skills/output-router/references/safety-policy.md +40 -0
- package/{plugins/freeflow/skills → skills}/review-artifact/SKILL.md +37 -1
- package/{plugins/freeflow/skills → skills}/review-artifact/references/reviewer-prompt.md +14 -2
- package/skills/review-work/SKILL.md +101 -0
- package/{plugins/freeflow/skills → skills}/review-work/references/reviewer-prompt.md +8 -0
- package/skills/setup-freeflow/SKILL.md +106 -0
- package/{plugins/freeflow/skills → skills}/setup-freeflow/references/activation-contract.md +14 -8
- package/{plugins/freeflow/skills → skills}/setup-freeflow/references/host-setup.md +5 -3
- package/skills/setup-freeflow/references/output-router-setup.md +102 -0
- package/{plugins/freeflow/skills → skills}/verify-work/SKILL.md +3 -1
- package/{plugins/freeflow/skills → skills}/workflow/SKILL.md +23 -13
- package/{plugins/freeflow/skills → skills}/workflow/references/workflow-map.md +21 -20
- package/{plugins/freeflow/skills → skills}/write-plan/SKILL.md +9 -1
- package/{plugins/freeflow/skills → skills}/write-skill/SKILL.md +1 -1
- package/{plugins/freeflow/skills → skills}/write-spec/SKILL.md +9 -6
- package/plugins/freeflow/docs/README.md +0 -39
- package/plugins/freeflow/docs/adr/0002-evals-before-hooks.md +0 -17
- package/plugins/freeflow/docs/adr/README.md +0 -7
- package/plugins/freeflow/docs/architecture.md +0 -86
- package/plugins/freeflow/docs/release-evidence.md +0 -49
- package/plugins/freeflow/pi-extension/index.js +0 -250
- package/plugins/freeflow/skills/capture-decisions/SKILL.md +0 -95
- package/plugins/freeflow/skills/capture-decisions/references/destination-guide.md +0 -65
- package/plugins/freeflow/skills/execute-plan/SKILL.md +0 -67
- package/plugins/freeflow/skills/grill-context/SKILL.md +0 -79
- package/plugins/freeflow/skills/grill-context/references/approach-framing.md +0 -52
- package/plugins/freeflow/skills/research-brief/SKILL.md +0 -69
- package/plugins/freeflow/skills/review-work/SKILL.md +0 -73
- package/plugins/freeflow/skills/setup-freeflow/SKILL.md +0 -84
- /package/{plugins/freeflow/assets → assets}/freeflow-plugin-icon-transparent.png +0 -0
- /package/{plugins/freeflow/hooks → hooks}/hooks.json +0 -0
- /package/{plugins/freeflow/docs → plugin-docs}/adr/0001-three-modes.md +0 -0
- /package/{plugins/freeflow/skills → skills}/bypass/SKILL.md +0 -0
- /package/{plugins/freeflow/skills → skills}/diagnose-failure/references/feedback-loop-catalog.md +0 -0
- /package/{plugins/freeflow/skills → skills}/diagnose-failure/references/flaky-and-performance.md +0 -0
- /package/{plugins/freeflow/skills → skills}/evaluate-skill/SKILL.md +0 -0
- /package/{plugins/freeflow/skills → skills}/evaluate-skill/references/eval-patterns.md +0 -0
- /package/{plugins/freeflow/skills → skills}/evaluate-skill/references/grading-priority.md +0 -0
- /package/{plugins/freeflow/skills → skills}/handoff/SKILL.md +0 -0
- /package/{plugins/freeflow/skills → skills}/handoff/references/templates.md +0 -0
- /package/{plugins/freeflow/skills → skills}/interview-gate/SKILL.md +0 -0
- /package/{plugins/freeflow/skills → skills}/write-plan/references/plan-shapes.md +0 -0
- /package/{plugins/freeflow/skills → skills}/write-spec/references/artifact-standards.md +0 -0
- /package/{plugins/freeflow/skills → skills}/write-spec/references/spec-shapes.md +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Output Router Benchmark Report - Iteration 1
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-19
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Deterministic, CI-friendly tool benchmark for Freeflow Router retrieval behavior. The runner compares a native text-search proxy, a pre-hardening Freeflow-style proxy, and the improved Freeflow Router implementation. Optional external comparators are recorded as skipped rather than failed.
|
|
8
|
+
|
|
9
|
+
Reduction percentages compare routed/context bytes and approximate tokens against the raw source or direct output for that mode. Negative reduction means structured routing overhead is larger than the tiny raw output; native exact-search proxies can still be smaller than the router for simple lookups.
|
|
10
|
+
|
|
11
|
+
## Baseline Caveat
|
|
12
|
+
|
|
13
|
+
The pre-hardening Freeflow mode is a deterministic proxy for the old line-scoring behavior, not a checkout of an older runtime. It is useful for stable regression pressure, not historical performance archaeology.
|
|
14
|
+
|
|
15
|
+
## Command
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm run bench:router
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The CLI writes machine-readable JSON under `evals/runs/output-router/` by default. That JSON is generated run data; this Markdown file is the durable runtime report.
|
|
22
|
+
|
|
23
|
+
## Summary
|
|
24
|
+
|
|
25
|
+
- Iterations per mode: 3
|
|
26
|
+
- Fixtures: 7
|
|
27
|
+
- Improved Freeflow Router gated pass: 7/7
|
|
28
|
+
- Native baseline proxy pass: 3/7
|
|
29
|
+
- Pre-hardening Freeflow proxy pass: 2/7
|
|
30
|
+
- Generated false positives observed: 4/21 mode results
|
|
31
|
+
- Improved generated false positives: 0/7
|
|
32
|
+
- Improved weighted byte/token reduction: 98.54% / 98.54% (511618/127907 raw to 7473/1870 routed)
|
|
33
|
+
- Improved average byte/token reduction: -235.00% / -231.39%
|
|
34
|
+
- Improved median byte/token reduction: -105.94% / -105.77%
|
|
35
|
+
- Improved path/span/excerpt checks: 7/7 path, 7/7 span, 7/7 excerpt
|
|
36
|
+
- Sandbox failure fixed: yes
|
|
37
|
+
|
|
38
|
+
## Results
|
|
39
|
+
|
|
40
|
+
| fixture | mode | correctness | checks | path | lines | raw bytes/tokens | routed bytes/tokens | byte/token reduction | latency p50/p95 ms | recovery | notes |
|
|
41
|
+
| --- | --- | --- | --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- |
|
|
42
|
+
| exact-copied-text-block | native-baseline-proxy | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | target.md | 1-3 | 138/35 | 78/20 | 43.48%/42.86% | 0.28/5.15 | not-applicable | score=28.00 |
|
|
43
|
+
| exact-copied-text-block | pre-hardening-freeflow-proxy | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | target.md | 1-3 | 138/35 | 78/20 | 43.48%/42.86% | 0.24/0.26 | failed | score=28.00 |
|
|
44
|
+
| exact-copied-text-block | improved-freeflow-router | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | target.md | 1-3 | 138/35 | 903/226 | -554.35%/-545.71% | 0.80/2.55 | passed | Deterministic repo retrieval selected 1 candidate(s); top result target.md:1-3 (matched exact normalized query phrase in section chunk).; recovery=passed: Verified repo retrieve target.md:1-3. |
|
|
45
|
+
| markdown-heading-nearby-body | native-baseline-proxy | fail | path ✗ span ✗ excerpt ✗ gen-fp ✓ | decoy.md | 1-1 | 169/43 | 44/11 | 73.96%/74.42% | 0.18/0.22 | not-applicable | score=20.00 |
|
|
46
|
+
| markdown-heading-nearby-body | pre-hardening-freeflow-proxy | fail | path ✗ span ✗ excerpt ✗ gen-fp ✓ | decoy.md | 1-1 | 169/43 | 44/11 | 73.96%/74.42% | 0.17/0.27 | failed | score=20.00 |
|
|
47
|
+
| markdown-heading-nearby-body | improved-freeflow-router | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | target.md | 3-6 | 169/43 | 954/239 | -464.50%/-455.81% | 0.67/0.68 | passed | Deterministic repo retrieval selected 1 candidate(s); top result target.md:3-6 (BM25-style scored section chunk with 6/6 query-token coverage).; recovery=passed: Verified repo retrieve target.md:3-6. |
|
|
48
|
+
| generated-artifact-decoy | native-baseline-proxy | fail | path ✗ span ✓ excerpt ✓ gen-fp ✗ | graphify-out/graph.html | 1-3 | 310220/77555 | 310058/77515 | 0.05%/0.05% | 1.42/1.57 | not-applicable | score=140000.00 |
|
|
49
|
+
| generated-artifact-decoy | pre-hardening-freeflow-proxy | fail | path ✗ span ✓ excerpt ✓ gen-fp ✗ | graphify-out/graph.html | 1-3 | 310220/77555 | 310058/77515 | 0.05%/0.05% | 1.37/1.43 | failed | score=140000.00 |
|
|
50
|
+
| generated-artifact-decoy | improved-freeflow-router | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 3-9 | 310220/77555 | 1396/349 | 99.55%/99.55% | 1.09/1.24 | passed | Deterministic repo retrieval selected 1 candidate(s); top result docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md:3-9 (BM25-style scored section chunk with 7/7 query-token coverage).; recovery=passed: Verified repo retrieve docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md:3-9. |
|
|
51
|
+
| huge-single-line-decoy | native-baseline-proxy | fail | path ✗ span ✗ excerpt ✗ gen-fp ✗ | debug.log | 1-1 | 192091/48023 | 192013/48004 | 0.04%/0.04% | 0.41/0.46 | not-applicable | score=24000.00 |
|
|
52
|
+
| huge-single-line-decoy | pre-hardening-freeflow-proxy | fail | path ✗ span ✗ excerpt ✗ gen-fp ✗ | debug.log | 1-1 | 192091/48023 | 192013/48004 | 0.04%/0.04% | 0.43/0.57 | failed | score=24000.00 |
|
|
53
|
+
| huge-single-line-decoy | improved-freeflow-router | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | docs/router.md | 1-3 | 192091/48023 | 946/237 | 99.51%/99.51% | 0.73/0.81 | passed | Deterministic repo retrieval selected 1 candidate(s); top result docs/router.md:1-3 (BM25-style scored section chunk with 6/6 query-token coverage).; recovery=passed: Verified repo retrieve docs/router.md:1-3. |
|
|
54
|
+
| ambiguous-multi-file-query | native-baseline-proxy | fail | path ✗ span ✗ excerpt ✗ gen-fp ✓ | decoy.md | 1-1 | 8262/2066 | 8100/2025 | 1.96%/1.98% | 0.26/0.28 | not-applicable | score=3600.00 |
|
|
55
|
+
| ambiguous-multi-file-query | pre-hardening-freeflow-proxy | fail | path ✗ span ✗ excerpt ✗ gen-fp ✓ | decoy.md | 1-1 | 8262/2066 | 8100/2025 | 1.96%/1.98% | 0.26/0.30 | failed | score=3600.00 |
|
|
56
|
+
| ambiguous-multi-file-query | improved-freeflow-router | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | target.md | 1-3 | 8262/2066 | 947/237 | 88.54%/88.53% | 1.03/1.05 | passed | Deterministic repo retrieval selected 1 candidate(s); top result target.md:1-3 (BM25-style scored section chunk with 6/6 query-token coverage).; recovery=passed: Verified repo retrieve target.md:1-3. |
|
|
57
|
+
| vaulted-output-query | native-baseline-proxy | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | ffout_91e882b51880dd5b9bbbc3ac:stderr | 1-3 | 115/29 | 115/29 | 0.00%/0.00% | 0.01/0.07 | not-applicable | score=12.00 |
|
|
58
|
+
| vaulted-output-query | pre-hardening-freeflow-proxy | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | ffout_91e882b51880dd5b9bbbc3ac:stderr | 1-3 | 115/29 | 115/29 | 0.00%/0.00% | 0.00/0.01 | failed | score=12.00 |
|
|
59
|
+
| vaulted-output-query | improved-freeflow-router | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | ffout_91e882b51880dd5b9bbbc3ac:stderr | 1-3 | 115/29 | 1044/261 | -807.83%/-800.00% | 0.39/0.64 | passed | Deterministic lexical retrieval selected vaulted outputId=ffout_91e882b51880dd5b9bbbc3ac stream=stderr lines=1-3.; recovery=passed: Verified vault retrieve ffout_91e882b51880dd5b9bbbc3ac:stderr:1-3. |
|
|
60
|
+
| expand-narrow-evidence | native-baseline-proxy | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | target.md | 1-24 | 623/156 | 623/156 | 0.00%/0.00% | 0.06/0.08 | not-applicable | |
|
|
61
|
+
| expand-narrow-evidence | pre-hardening-freeflow-proxy | fail | path ✗ span ✓ excerpt ✗ gen-fp ✓ | decoy.md | 1-1 | 3824/956 | 3200/800 | 16.32%/16.32% | 0.17/0.18 | failed | score=800.00 |
|
|
62
|
+
| expand-narrow-evidence | improved-freeflow-router | pass | path ✓ span ✓ excerpt ✓ gen-fp ✓ | target.md | 1-24 | 623/156 | 1283/321 | -105.94%/-105.77% | 0.87/0.93 | passed | Expanded repo evidence ev_0ba9afec918a3334 to target.md:1-24.; recovery=passed: Verified repo retrieve target.md:1-24. |
|
|
63
|
+
|
|
64
|
+
## Not Yet Measured
|
|
65
|
+
|
|
66
|
+
- recall@3 / alternate candidates: not measured in this first deterministic runner.
|
|
67
|
+
- explanation quality: not measured beyond route reason capture.
|
|
68
|
+
- command-output parser benchmarks: deferred to the command benchmark track.
|
|
69
|
+
|
|
70
|
+
## Skipped External Comparators
|
|
71
|
+
|
|
72
|
+
- Graphify: Optional external comparator is not required for CI-friendly router benchmarks.
|
|
73
|
+
- Claude Context: Optional semantic/hybrid search comparator is skipped unless configured separately.
|
|
74
|
+
- RTK: Command-output comparator belongs to the later command benchmark track.
|
|
75
|
+
- Squeez: Session-efficiency comparator belongs to the later command/session benchmark track.
|
|
76
|
+
|
|
77
|
+
## Regression Status
|
|
78
|
+
|
|
79
|
+
Improved Freeflow Router passed all gated benchmark fixtures.
|
|
80
|
+
|
|
81
|
+
The generated-artifact decoy benchmark preserves the original Sandbox Permissions false-positive shape and records it as fixed when the improved router selects the docs target instead of `graphify-out/graph.html`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Output Router Capture/Derive/Provider Eval - Iteration 1
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-23
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Targeted deterministic eval for Slice 9 of the universal output capture/derive work. It compares direct/raw evidence shapes against explicit Freeflow routing for read-only provider capture, web-shaped capture, deterministic derive, and provider-summary tool choice.
|
|
8
|
+
|
|
9
|
+
This eval does not claim broad superiority. It verifies bounded evidence, exact recovery where promised, lineage, category-scoped provider summaries, and non-injection of invalid custom manifest text for these fixtures.
|
|
10
|
+
|
|
11
|
+
## Command
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm run build && node evals/scripts/run-output-router-capture-derive-eval.js
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Summary
|
|
18
|
+
|
|
19
|
+
- Fixtures: 4
|
|
20
|
+
- Objective gates passed: 14/14
|
|
21
|
+
- Direct host-tool capture: not evaluated and remains off by default.
|
|
22
|
+
- Mutating provider tools: not mediated by `freeflow_capture`.
|
|
23
|
+
|
|
24
|
+
## Results
|
|
25
|
+
|
|
26
|
+
| fixture | direct/raw baseline | Freeflow routed behavior | status | gates |
|
|
27
|
+
| --- | --- | --- | --- | --- |
|
|
28
|
+
| direct-readonly-provider-vs-freeflow-capture | 1268 raw bytes would enter context from direct provider output | 233 evidence bytes entered context; raw recovery=exact | pass | readOnlyCaptured ✓; boundedEvidence ✓; exactRecovery ✓ |
|
|
29
|
+
| web-shaped-capture-and-recovery | 1682 raw bytes from web-shaped output | 301 evidence bytes plus exact recovery | pass | webProducerCaptured ✓; boundedEvidence ✓; exactRecovery ✓ |
|
|
30
|
+
| long-log-manual-inspection-vs-freeflow-derive | 7729 raw log bytes for manual inspection | 176 filtered evidence bytes; countMatches=2; exact derived recovery | pass | manualBaselineWouldReadWholeLog ✓; filteredTargetFacts ✓; countMatches ✓; lineage ✓ |
|
|
31
|
+
| provider-summary-tool-choice-accuracy | Raw provider docs/manuals are not injected | 458 summary bytes; diagnostics category only; invalid custom guidance omitted | pass | compactSummary ✓; categoryScoped ✓; invalidCustomNotInjected ✓; mutationBoundaryPresent ✓ |
|
|
32
|
+
|
|
33
|
+
## Result
|
|
34
|
+
|
|
35
|
+
All targeted Slice 9 capture/derive/provider-summary gates passed for these deterministic fixtures.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Output Router Codex Large Repo Index/SQLite Ad Hoc Benchmark
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-18
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Ad hoc large-repo benchmark requested during Slice 8 follow-up. This is not an adoption decision and did not change product defaults.
|
|
8
|
+
|
|
9
|
+
Repository:
|
|
10
|
+
|
|
11
|
+
- URL: `https://github.com/openai/codex`
|
|
12
|
+
- Local path: `/tmp/freeflow-codex-large-benchmark/codex`
|
|
13
|
+
- Commit: `e12dd73`
|
|
14
|
+
- Git-tracked files: 5,118
|
|
15
|
+
- Working tree size after shallow clone: ~70 MB
|
|
16
|
+
|
|
17
|
+
Modes measured:
|
|
18
|
+
|
|
19
|
+
1. Existing `freeflow_retrieve` scanner default.
|
|
20
|
+
2. Slice 8 no-dependency experimental local index.
|
|
21
|
+
3. Improved no-dependency prototype with slimmer symbol/section index.
|
|
22
|
+
4. Python stdlib SQLite FTS5 ad hoc comparator.
|
|
23
|
+
5. SQLite FTS5 with deterministic reranking and tuned candidate limit.
|
|
24
|
+
6. Scanner-hardening changes derived from this benchmark.
|
|
25
|
+
|
|
26
|
+
SQLite/FTS used only Python standard-library `sqlite3` with FTS5 available. No npm/package dependency was added.
|
|
27
|
+
|
|
28
|
+
## Baseline Result
|
|
29
|
+
|
|
30
|
+
| mode | build/load | query p50 | query p95 | strict path pass | avg context bytes | notes |
|
|
31
|
+
| --- | ---: | ---: | ---: | ---: | ---: | --- |
|
|
32
|
+
| scanner default | none | 5,663 ms | 8,929 ms | 3/8 | 1,230 | live scan each query |
|
|
33
|
+
| Slice 8 no-dep local index | failed after 10,013 ms | n/a | n/a | n/a | n/a | `RangeError: Invalid string length` while serializing cache |
|
|
34
|
+
| SQLite FTS5 AND | 3,934 ms | 0.18 ms | 2.24 ms | 2/8 | 135 | very fast but low recall from strict AND query construction |
|
|
35
|
+
| SQLite FTS5 OR + camel split | 8,145 ms | 42.97 ms | 50.94 ms | 3/8 | 322 | same strict pass count as scanner, much faster query-only |
|
|
36
|
+
|
|
37
|
+
## Improvement Attempts
|
|
38
|
+
|
|
39
|
+
Changes tried in temp prototypes:
|
|
40
|
+
|
|
41
|
+
- no-dep index: remove duplicated line-window text; use symbol/Markdown chunks plus coarse blocks; store token counts and metadata only.
|
|
42
|
+
- no-dep ranking: camel/Pascal split, exact compound boosts, source/test path priors, symbol-definition boosts, path-intent boosts, phrase-sequence boosts, candidate prefiltering.
|
|
43
|
+
- SQLite: OR query for recall, ordered FTS candidate set, deterministic reranking with the same scoring features, candidate-limit tuning.
|
|
44
|
+
|
|
45
|
+
Best observed variants:
|
|
46
|
+
|
|
47
|
+
| mode | build/load | query p50 | query p95 | strict path pass | avg context bytes | cache/size | notes |
|
|
48
|
+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | --- |
|
|
49
|
+
| no-dep V1 slim | 42,496 ms | 23,814 ms | 42,197 ms | 5/8 | 1,397 | 169.5 MB JSON estimate | accuracy improved, speed unacceptable |
|
|
50
|
+
| no-dep V2 candidate prefilter | 73,755 ms | 1,973 ms | 2,933 ms | 5/8 | 1,542 | 156.4 MB JSON estimate | query faster, build/cache unacceptable |
|
|
51
|
+
| no-dep V3 symbol/section only | 41,048 ms | 1,484 ms | 2,720 ms | 5/8 | 1,413 | 97.5 MB JSON estimate | best no-dep profile, still heavy |
|
|
52
|
+
| SQLite FTS rerank limit=1000 | 1,936 ms | 137 ms | 287 ms | 5/8 | 1,128 | in-memory FTS | best overall prototype |
|
|
53
|
+
|
|
54
|
+
## Scanner Hardening Applied
|
|
55
|
+
|
|
56
|
+
Changes applied to the default scanner from this evidence:
|
|
57
|
+
|
|
58
|
+
- skip broad traversal of `generated/` directories while preserving explicit generated-path retrieval,
|
|
59
|
+
- add code symbol chunks for enum/struct/function/impl-style matches,
|
|
60
|
+
- split CamelCase/PascalCase/snake/path identifiers for scoring,
|
|
61
|
+
- preserve stopwords for exact phrase matching while keeping scoring stopword-filtered,
|
|
62
|
+
- add bounded symbol chunk evidence instead of narrow ±2-line snippets,
|
|
63
|
+
- add source/test path priors,
|
|
64
|
+
- add definition, path-intent, ordered-phrase, and complete-query-coverage boosts,
|
|
65
|
+
- use structural chunks first and line-window chunks only as a fallback for unstructured files.
|
|
66
|
+
|
|
67
|
+
Follow-up speed pass kept the same scanner result while reducing overhead:
|
|
68
|
+
|
|
69
|
+
- build BM25 stats only for chunks that pass the cheap `chunkMightMatch` prefilter,
|
|
70
|
+
- memoize token and phrase-sequence normalization per chunk,
|
|
71
|
+
- reuse tokenized chunk content for ordered-phrase scoring,
|
|
72
|
+
- read eligible repo text files with bounded concurrency while preserving deterministic traversal order,
|
|
73
|
+
- skip expensive identifier-splitting regexes for plain tokens without separators or case boundaries.
|
|
74
|
+
|
|
75
|
+
Measured scanner-hardening result on the same Codex repo/query set:
|
|
76
|
+
|
|
77
|
+
| mode | query p50 | query p95 | strict path+excerpt pass | avg context bytes | notes |
|
|
78
|
+
| --- | ---: | ---: | ---: | ---: | --- |
|
|
79
|
+
| scanner before hardening | 5,663 ms | 8,929 ms | 3/8 | 1,230 | baseline live scan |
|
|
80
|
+
| scanner after hardening | 8,776 ms | 12,668 ms | 5/8 | 2,178 | more accurate but slower and larger context |
|
|
81
|
+
| scanner after speed pass | 5,112 ms | 8,269 ms | 5/8 | 2,307 | accuracy kept; latency below baseline scanner p50/p95 |
|
|
82
|
+
| scanner after review-fix pass | 5,473 ms | 8,611 ms | 6/8 | 2,082 | restored regressed source-definition queries and kept MCP test-query improvement |
|
|
83
|
+
| scanner after deep-module cleanup rerun | 4,305 ms | 6,773 ms | 6/8 | 2,082 | final verification after `RepoTraversalPolicy`, exact line ranges, `EvidenceRangeSelector`, vault locking, command benchmark observation changes, and the post-review exact-phrase fixes |
|
|
84
|
+
| scanner after architecture-deepening report refresh | 4,272 ms | 6,679 ms | 6/8 | 2,082 | report-refresh verification after bounded evidence, BenchmarkHarness, EvidenceSearch, RouterContract, and experimental-index capsule slices |
|
|
85
|
+
|
|
86
|
+
Interpretation: scanner hardening produced a real accuracy gain (**+2/8 strict fixtures**) but initially regressed latency/context. The speed pass recovered the latency regression and kept the accuracy gain, although context remained larger because symbol chunks return fuller evidence. The later review-fix pass improved strict accuracy to **6/8** by constraining symbol complete-coverage boosts, preserving exact-phrase evidence ranges, adding Markdown preamble chunks, and tightening generated/media-path filtering while keeping scanner latency near the speed-pass result.
|
|
87
|
+
|
|
88
|
+
## Before/After Summary
|
|
89
|
+
|
|
90
|
+
Against scanner default:
|
|
91
|
+
|
|
92
|
+
- Scanner hardening plus the review-fix pass improved accuracy from **3/8** to **6/8**; the latest report-refresh rerun kept **6/8** and kept query p50 below the original scanner baseline (**5,663 ms → 4,272 ms**).
|
|
93
|
+
- Accuracy improved from **3/8** strict expected-path matches to **5/8** for no-dep V3, SQLite FTS rerank, and scanner hardening/speed pass, then to **6/8** for the default scanner after review fixes.
|
|
94
|
+
- SQLite FTS rerank query p50 improved from **5,663 ms** to **137 ms**: about **41× faster query-only**.
|
|
95
|
+
- SQLite FTS rerank query p95 improved from **8,929 ms** to **287 ms**: about **31× faster query-only**.
|
|
96
|
+
- Scanner total for eight baseline queries was about **47.6 s**; initial scanner-hardening total was about **78.1 s**; after the speed pass it was about **45.5 s**; after review fixes it was about **53.5 s** in the observed run; the latest report-refresh rerun was about **38.6 s** for the scanner rows.
|
|
97
|
+
- SQLite FTS rerank total was about **3.3 s including build**: about **14× faster end-to-end for this query batch** versus baseline scanner.
|
|
98
|
+
- SQLite FTS rerank context was slightly smaller than baseline scanner: **1,230 avg bytes → 1,128 avg bytes** (~8% lower). Scanner hardening increased context to **2,178-2,307 avg bytes** because symbol chunks return fuller evidence.
|
|
99
|
+
- No-dep V3 warm queries were faster than baseline scanner, but cold build/cache costs made it unattractive on this repo.
|
|
100
|
+
|
|
101
|
+
## Misses Remaining
|
|
102
|
+
|
|
103
|
+
The best strict result is now **6/8**. The repeated misses indicate ranking/query-intent problems, not just speed problems:
|
|
104
|
+
|
|
105
|
+
- Some broad queries legitimately have multiple plausible targets.
|
|
106
|
+
- Test/source intent is hard to infer from query text alone.
|
|
107
|
+
- Path-intent queries like `apply_patch prompt codex prompts lib` remain sensitive: current scanner evidence includes the expected excerpt, but strict path grading still fails because it selects the deeper implementation handler instead of the expected prompt source.
|
|
108
|
+
- FTS candidate generation and deterministic reranking need a more principled query classifier before automatic routing is safe.
|
|
109
|
+
|
|
110
|
+
## Interpretation
|
|
111
|
+
|
|
112
|
+
- The current no-dependency local index is **not ready for large repos**. It needs a more compact cache format and fewer or more targeted chunks before it is worth productizing.
|
|
113
|
+
- SQLite/FTS is **promising enough to keep as an optional benchmark/comparator**. It produced better strict accuracy than scanner and much better speed in this ad hoc run.
|
|
114
|
+
- SQLite/FTS is **not ready to become product behavior**. Accuracy is still mid, and adding SQLite/FTS has packaging/portability implications that need an explicit dependency decision.
|
|
115
|
+
- A future `hybrid:auto` could be valuable only after a proper benchmark shows reliable query classification, fallback behavior, and no accuracy regression.
|
|
116
|
+
|
|
117
|
+
## Decision
|
|
118
|
+
|
|
119
|
+
- Keep scanner as default for now, with the applied hardening guarded by tests.
|
|
120
|
+
- Keep no-dependency local index experimental; redesign its large-repo chunk/cache strategy before further adoption discussion.
|
|
121
|
+
- Do not add SQLite/FTS as a product dependency yet.
|
|
122
|
+
- Keep SQLite/FTS as an optional large-repo benchmark comparator candidate.
|
|
123
|
+
- Do not implement `hybrid:auto` yet; the evidence supports future research, not default behavior.
|
|
124
|
+
- Before further accuracy hardening, keep the speed-pass benchmark in the loop so ranking gains do not silently become latency regressions.
|
|
125
|
+
|
|
126
|
+
## Raw Evidence Pointers
|
|
127
|
+
|
|
128
|
+
Temporary files from this ad hoc run:
|
|
129
|
+
|
|
130
|
+
- `/tmp/freeflow-codex-large-benchmark/scanner-sqlite-results.json`
|
|
131
|
+
- `/tmp/freeflow-codex-large-benchmark/sqlite-results.json`
|
|
132
|
+
- `/tmp/freeflow-codex-large-benchmark/sqlite-or-results.json`
|
|
133
|
+
- `/tmp/freeflow-codex-large-benchmark/improved-index-results.json`
|
|
134
|
+
- `/tmp/freeflow-codex-large-benchmark/improved-index-v2-results.json`
|
|
135
|
+
- `/tmp/freeflow-codex-large-benchmark/improved-index-v3-results.json`
|
|
136
|
+
- `/tmp/freeflow-codex-large-benchmark/results-symbols-only.json`
|
|
137
|
+
- `/tmp/freeflow-codex-large-benchmark/scanner-sqlite-final-green-output.json`
|
|
138
|
+
- `/tmp/freeflow-codex-large-benchmark/scanner-sqlite-speed-pass-output.json`
|
|
139
|
+
- Post-review-fix rerun command: `node /tmp/freeflow-codex-large-benchmark/bench-scanner-sqlite.mjs` on 2026-06-18/19 session; observed scanner summary `pass=6/8`, `p50=5,473 ms`, `p95=8,611 ms`, `avgContextBytes=2,082`.
|
|
140
|
+
- Deep-module cleanup final verification command: `node /tmp/freeflow-codex-large-benchmark/bench-scanner-sqlite.mjs`; observed scanner summary `pass=6/8`, `p50=4,305 ms`, `p95=6,773 ms`, `avgContextBytes=2,082`.
|
|
141
|
+
- Architecture-deepening report-refresh command: `node /tmp/freeflow-codex-large-benchmark/bench-scanner-sqlite.mjs`; observed scanner summary `pass=6/8`, `p50=4,272 ms`, `p95=6,679 ms`, `avgContextBytes=2,082`, scanner row total about `38.6 s`.
|
|
142
|
+
- Latest report-refresh scanner rows:
|
|
143
|
+
- `sandbox-permissions-enum`: pass, `codex-rs/protocol/src/models.rs`, lines `47-66`, 1,759 context bytes.
|
|
144
|
+
- `mcp-tool-call-event`: pass, `codex-rs/analytics/src/analytics_client_tests.rs`, lines `4207-4211`, 1,409 context bytes.
|
|
145
|
+
- `approval-mode-cli-arg`: pass, `codex-rs/utils/cli/src/approval_mode_cli_arg.rs`, lines `9-28`, 1,845 context bytes.
|
|
146
|
+
- `turn-diff-tracker`: fail strict path, selected `codex-rs/core/src/tools/handlers/unified_exec_tests.rs`, lines `3-35`, excerpt complete, 2,350 context bytes.
|
|
147
|
+
- `model-provider-info`: pass, `codex-rs/ollama/src/lib.rs`, lines `63-79`, 1,467 context bytes.
|
|
148
|
+
- `network-proxy-spec`: pass, `codex-rs/core/src/config/network_proxy_spec.rs`, lines `24-31`, 1,296 context bytes.
|
|
149
|
+
- `codex-http-client`: pass, `codex-rs/codex-client/src/default_client.rs`, lines `21-50`, 1,794 context bytes.
|
|
150
|
+
- `apply-patch-prompt`: fail strict path, selected `codex-rs/core/src/tools/handlers/apply_patch.rs`, lines `330-409`, excerpt complete, 4,737 context bytes.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Codex Structured Q&A Macro Benchmark Report - Iteration 1
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-19
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Fast, deterministic Stage 1 macro benchmark for the Codex CLI agent-harness research corpus. The benchmark asks one structured Q&A question derived from the Sandbox Permissions pass and grades retrieval-backed answer quality, citation quality, evidence quality, context size, and latency.
|
|
8
|
+
|
|
9
|
+
The fixture uses existing Freeflow research docs as oracle scaffolding and includes a generated `graphify-out` decoy to preserve the original broad-retrieval failure shape. Upstream Codex source citation comparison is marked skipped until a source snapshot is explicitly supplied.
|
|
10
|
+
|
|
11
|
+
## Command
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm run bench:router:codex-qa
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The CLI writes machine-readable JSON under `evals/runs/output-router/` by default. That JSON is generated run data; this Markdown file is the durable runtime report.
|
|
18
|
+
|
|
19
|
+
## Summary
|
|
20
|
+
|
|
21
|
+
- Iterations per mode: 1
|
|
22
|
+
- Fixtures: 1
|
|
23
|
+
- Improved Freeflow Router gated pass: 1/1
|
|
24
|
+
- Native broad-search proxy pass: 0/1
|
|
25
|
+
- Sandbox failure fixed: yes
|
|
26
|
+
- Generated false positives observed: 1/2 mode results
|
|
27
|
+
- Improved answer/citation/evidence: 1/1 answer, 1/1 citation, 1/1 evidence
|
|
28
|
+
- Improved weighted byte/token reduction: 99.50% / 99.50% (580499/145125 raw to 2892/723 context)
|
|
29
|
+
|
|
30
|
+
## Results
|
|
31
|
+
|
|
32
|
+
| fixture | mode | correctness | checks | path | lines | raw bytes/tokens | context bytes/tokens | byte/token reduction | latency p50/p95 ms | proxy calls | answer | notes |
|
|
33
|
+
| --- | --- | --- | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | --- | --- |
|
|
34
|
+
|sandbox-permissions-structured-qa | native-broad-search-proxy | fail | answer ✗ citation ✗ evidence ✗ gen-fp ✗ | graphify-out/graph.html | 1-3 | 580499/145125 | 580058/145015 | 0.08%/0.08% | 11.67/11.67 | 1 | Sandbox Permissions evidence from graphify-out/graph.html:1-3 did not include enough plain-language definitions to answer. | lexical score=40000 |
|
|
35
|
+
|sandbox-permissions-structured-qa | improved-freeflow-router | pass | answer ✓ citation ✓ evidence ✓ gen-fp ✓ | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 1-28 | 580499/145125 | 2892/723 | 99.50%/99.50% | 3.66/3.66 | 2 | Sandbox Permissions are documented at docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md:1-28. UseDefault: run with the turn's normal sandbox. RequireEscalated: request unsandboxed execution. WithAdditionalPermissions: stay sandboxed but widen permissions for this one command. | Deterministic repo retrieval selected 1 candidate(s); top result docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md:3-17 (BM25-style scored section chunk with 14/14 query-token coverage).; Expanded repo evidence ev_178fc507730e20fc to docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md:1-28. |
|
|
36
|
+
|
|
37
|
+
## Fixture Questions
|
|
38
|
+
|
|
39
|
+
- sandbox-permissions-structured-qa: Find the Sandbox Permissions section, report file/lines, and explain UseDefault, RequireEscalated, and WithAdditionalPermissions.
|
|
40
|
+
- expected doc: `docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md`
|
|
41
|
+
- upstream source citation comparison: skipped-unavailable
|
|
42
|
+
|
|
43
|
+
## Skipped External Comparators
|
|
44
|
+
|
|
45
|
+
- Graphify: Skipped unless a fresh graph for the benchmark fixture is explicitly supplied.
|
|
46
|
+
- Claude Context: Skipped unless an index is configured and fresh for the benchmark fixture.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Output Router Command Benchmark Report - Iteration 1
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-19
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Deterministic, CI-friendly command-output benchmark for `freeflow_run`. The runner compares native direct output against the improved Freeflow command router and records optional RTK/Squeez comparators as skipped unless a caller supplies configured comparator hooks.
|
|
8
|
+
|
|
9
|
+
Reduction percentages compare routed/context bytes and approximate tokens against raw command output bytes for each fixture. Correctness is gated on execution status, exit code, exact key fact preservation, and Freeflow raw vault recovery.
|
|
10
|
+
|
|
11
|
+
## Command
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm run bench:router:commands
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The CLI writes machine-readable JSON under `evals/runs/output-router/` by default. That JSON is generated run data; this Markdown file is the durable runtime report.
|
|
18
|
+
|
|
19
|
+
## Summary
|
|
20
|
+
|
|
21
|
+
- Iterations per mode: 3
|
|
22
|
+
- Fixtures: 8
|
|
23
|
+
- Improved Freeflow run gated pass: 8/8
|
|
24
|
+
- Native baseline proxy pass: 8/8
|
|
25
|
+
- Improved exact fact preservation: 8/8
|
|
26
|
+
- Improved recovery pass: 8/8
|
|
27
|
+
- Improved weighted byte/token reduction: 85.03% / 85.02% (71893/17977 raw to 10760/2693 routed)
|
|
28
|
+
- Improved average byte/token reduction: -291.55% / -288.41%
|
|
29
|
+
- Improved median byte/token reduction: -451.81% / -444.90%
|
|
30
|
+
- Failed command facts preserved: yes
|
|
31
|
+
|
|
32
|
+
## Command Output Fixtures
|
|
33
|
+
|
|
34
|
+
| fixture | mode | correctness | checks | status/code | parser | raw bytes/tokens | routed bytes/tokens | byte/token reduction | latency p50/p95 ms | recovery | outputId | notes |
|
|
35
|
+
| --- | --- | --- | --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | --- |
|
|
36
|
+
| noisy-success | native-baseline-proxy | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | - | 2439/610 | 2439/610 | 0.00%/0.00% | 0.00/0.03 | not-applicable | - | |
|
|
37
|
+
| noisy-success | improved-freeflow-run | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | generic 0.35 exact | 2439/610 | 1095/274 | 55.10%/55.08% | 1.60/5.45 | passed | ffout_e3bdc8fdb3c6bda34cfdb163 | Large successful command output (2439 bytes, 81 lines) was vaulted; bounded important lines were returned instead of full output (parser=generic confidence=0.35 fidelity=exact).; recovery=passed: Verified exact combined output recovery for ffout_e3bdc8fdb3c6bda34cfdb163. |
|
|
38
|
+
| failed-stack-trace | native-baseline-proxy | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | failed/1 | - | 120/30 | 120/30 | 0.00%/0.00% | 0.00/0.00 | not-applicable | - | |
|
|
39
|
+
| failed-stack-trace | improved-freeflow-run | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | failed/1 | generic 0.35 exact | 120/30 | 956/239 | -696.67%/-696.67% | 1.29/1.69 | passed | ffout_7070abadf7eb9e9d6671c150 | Command failed or did not complete (executionStatus=failed exitCode=1); selected failure evidence was returned and raw output was vaulted before routing (parser=generic confidence=0.35 fidelity=exact).; recovery=passed: Verified exact combined output recovery for ffout_7070abadf7eb9e9d6671c150. |
|
|
40
|
+
| test-summary | native-baseline-proxy | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | failed/1 | - | 127/32 | 127/32 | 0.00%/0.00% | 0.00/0.00 | not-applicable | - | |
|
|
41
|
+
| test-summary | improved-freeflow-run | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | failed/1 | test-runner 0.92 exact | 127/32 | 1110/278 | -774.02%/-768.75% | 1.27/1.91 | passed | ffout_78debcd7489ddf0ac2d17210 | Command failed or did not complete (executionStatus=failed exitCode=1); selected failure evidence was returned and raw output was vaulted before routing (parser=test-runner confidence=0.92 fidelity=exact).; recovery=passed: Verified exact combined output recovery for ffout_78debcd7489ddf0ac2d17210. |
|
|
42
|
+
| diagnostics | native-baseline-proxy | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | failed/2 | - | 169/43 | 169/43 | 0.00%/0.00% | 0.00/0.00 | not-applicable | - | |
|
|
43
|
+
| diagnostics | improved-freeflow-run | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | failed/2 | typescript-lint 0.88 exact | 169/43 | 1366/342 | -708.28%/-695.35% | 1.12/1.13 | passed | ffout_694685d2e031abd0deca0b5c | Command failed or did not complete (executionStatus=failed exitCode=2); selected failure evidence was returned and raw output was vaulted before routing (parser=typescript-lint confidence=0.88 fidelity=exact).; recovery=passed: Verified exact combined output recovery for ffout_694685d2e031abd0deca0b5c. |
|
|
44
|
+
| git-output | native-baseline-proxy | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | - | 193/49 | 193/49 | 0.00%/0.00% | 0.00/0.00 | not-applicable | - | |
|
|
45
|
+
| git-output | improved-freeflow-run | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | git-status-diffstat 0.76 exact | 193/49 | 1065/267 | -451.81%/-444.90% | 1.04/1.34 | passed | ffout_b3241210e6a212f818865c01 | Large successful command output (193 bytes, 4 lines) was vaulted; bounded important lines were returned instead of full output (parser=git-status-diffstat confidence=0.76 fidelity=exact).; recovery=passed: Verified exact combined output recovery for ffout_b3241210e6a212f818865c01. |
|
|
46
|
+
| repetitive-log | native-baseline-proxy | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | - | 4365/1092 | 4365/1092 | 0.00%/0.00% | 0.00/0.00 | not-applicable | - | |
|
|
47
|
+
| repetitive-log | improved-freeflow-run | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | generic 0.35 exact | 4365/1092 | 1144/286 | 73.79%/73.81% | 1.23/1.24 | passed | ffout_a68393c538a09a60bb271f44 | Large successful command output (4365 bytes, 121 lines) was vaulted; bounded important lines were returned instead of full output (parser=generic confidence=0.35 fidelity=exact).; recovery=passed: Verified exact combined output recovery for ffout_a68393c538a09a60bb271f44. |
|
|
48
|
+
| huge-json-table | native-baseline-proxy | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | - | 60090/15023 | 60090/15023 | 0.00%/0.00% | 0.00/0.01 | not-applicable | - | |
|
|
49
|
+
| huge-json-table | improved-freeflow-run | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | generic 0.35 lossy | 60090/15023 | 2897/725 | 95.18%/95.17% | 1.62/1.80 | passed | ffout_264e9a7aceed6ad38635bc21 | Large successful command output (60090 bytes, 1 lines) was vaulted; bounded important lines were returned instead of full output (parser=generic confidence=0.35 fidelity=lossy).; recovery=passed: Verified exact combined output recovery for ffout_264e9a7aceed6ad38635bc21. |
|
|
50
|
+
| repeated-command-output | native-baseline-proxy | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | - | 4390/1098 | 4390/1098 | 0.00%/0.00% | 0.00/0.00 | not-applicable | - | Exact duplicate detection returns a compact note while current and prior raw outputs remain recoverable. |
|
|
51
|
+
| repeated-command-output | improved-freeflow-run | pass | status ✓ exit ✓ facts ✓ failed-exact ✓ | success/0 | duplicate-output 1.00 exact | 4390/1098 | 1127/282 | 74.33%/74.32% | 2.21/2.31 | passed | ffout_3142c5e358f7098c9be2225c | Exact duplicate command output matched previous outputId=ffout_857f56abd6351518d5393719 by exact output hash and command/cwd/status fingerprint (executionStatus=success exitCode=0); returning a compact duplicate note instead of re-injecting repeated output. Current raw output was vaulted as outputId=ffout_3142c5e358f7098c9be2225c.; Exact duplicate detection returns a compact note while current and prior raw outputs remain recoverable.; repeatedRuns=2; outputIds=ffout_ddd734b516d927ca72811bb3,ffout_3142c5e358f7098c9be2225c; recovery=passed: Verified exact combined output recovery for ffout_3142c5e358f7098c9be2225c. |
|
|
52
|
+
|
|
53
|
+
## Skipped Optional Command Compressors
|
|
54
|
+
|
|
55
|
+
- RTK: Optional command compressor comparator is skipped unless a caller supplies a configured comparator hook.
|
|
56
|
+
- Squeez: Optional session/output compressor comparator is skipped unless a caller supplies a configured comparator hook.
|
|
57
|
+
|
|
58
|
+
## Regression Status
|
|
59
|
+
|
|
60
|
+
Improved Freeflow command routing passed all gated command-output benchmark fixtures.
|
|
61
|
+
|
|
62
|
+
Failed command facts preserved: yes.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Output Router Index Benchmark Report - Iteration 1
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-28
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Repo Search Backend Benchmark for `freeflow_search`. The scanner remains the product default; this benchmark compares scanner-only retrieval, the no-dependency local lexical index, a conservative hybrid scanner+index path, and records whether an FTS5/BM25/trigram candidate is available.
|
|
8
|
+
|
|
9
|
+
The index cache is keyed by repo root and stores outside the repo by default. No external service, vector DB, or native dependency is required for the local lexical index.
|
|
10
|
+
|
|
11
|
+
## Command
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm run bench:router:index
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The CLI writes machine-readable JSON under `evals/runs/output-router/` by default. That JSON is generated run data; this Markdown file is the durable runtime report.
|
|
18
|
+
|
|
19
|
+
## Summary
|
|
20
|
+
|
|
21
|
+
- Fixtures: 3
|
|
22
|
+
- Scanner remains default: yes
|
|
23
|
+
- Index adopted by default: no
|
|
24
|
+
- Scanner pass: 3/3 (recall@3: 3/3)
|
|
25
|
+
- Index warm pass: 3/3 (recall@3: 3/3)
|
|
26
|
+
- FTS5/BM25/trigram pass: 3/3 (skipped: 0; recall@3: 3/3)
|
|
27
|
+
- Hybrid warm pass: 3/3 (recall@3: 3/3)
|
|
28
|
+
- FTS5/BM25/trigram candidate: available — Node node:sqlite is available and supports SQLite FTS5 trigram tokenization with bm25 ranking.
|
|
29
|
+
- Generated false positives: 0/18
|
|
30
|
+
- Cold build p50/p95: 0.56/0.60 ms
|
|
31
|
+
- Warm query p50/p95: 0.04/0.05 ms
|
|
32
|
+
- Stale refresh p50/p95: 0.60/0.77 ms
|
|
33
|
+
- Index warm context reduction: 99.54% (310411 raw bytes to 1441 context bytes)
|
|
34
|
+
|
|
35
|
+
## Results
|
|
36
|
+
|
|
37
|
+
| fixture | mode | correctness | checks | path | lines | candidates | raw/context bytes | context reduction | latency p50/p95 ms | build/query ms | index mode | notes |
|
|
38
|
+
| --- | --- | --- | --- | --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- |
|
|
39
|
+
| index-exact-copied-text | scanner-default | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md, decoy.md | 141/1201 | -751.77% | 1.84/8.82 | 0.00/0.49 | - | Deterministic repo retrieval selected 2 candidate(s); top result target.md:1-3 (matched exact normalized query phrase in section chunk). |
|
|
40
|
+
| index-exact-copied-text | index-cold | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md, decoy.md | 141/678 | -380.85% | 1.45/2.77 | 0.56/0.05 | cold-built | matched exact normalized query phrase in indexed section chunk; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-z1mRAH/f172de04b87566a9fe7f030c.json |
|
|
41
|
+
| index-exact-copied-text | index-warm | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md, decoy.md | 141/678 | -380.85% | 2.36/2.50 | 0.42/0.04 | warm-loaded | matched exact normalized query phrase in indexed section chunk; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-DDeXo1/dd4502aad39189e59f4c0d1c.json |
|
|
42
|
+
| index-exact-copied-text | index-stale-refresh | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md, decoy.md | 162/677 | -317.90% | 2.28/2.50 | 0.77/0.03 | stale-refreshed | matched exact normalized query phrase in indexed section chunk; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-6fTIT9/36a8bb3d60c28d09e4dfd81f.json; refresh=1 added |
|
|
43
|
+
| index-exact-copied-text | fts5-bm25-trigram | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md | 141/204 | -44.68% | 1.07/2.11 | 0.21/0.21 | - | SQLite FTS5 trigram MATCH with bm25 rank -0.000006 |
|
|
44
|
+
| index-exact-copied-text | hybrid-warm | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md, decoy.md | 141/169 | -19.86% | 1.88/1.91 | 0.32/0.42 | warm-loaded | selection=scanner-index-agree; scannerQueryMs=0.39; indexQueryMs=0.03 |
|
|
45
|
+
| index-generated-artifact-decoy | scanner-default | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 3-9 | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 310220/1394 | 99.55% | 1.82/1.86 | 0.00/0.45 | - | Deterministic repo retrieval selected 1 candidate(s); top result docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md:3-9 (BM25-style scored section chunk with 7/7 query-token coverage). |
|
|
46
|
+
| index-generated-artifact-decoy | index-cold | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 3-7 | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 310220/441 | 99.86% | 2.06/2.09 | 0.60/0.09 | cold-built | BM25-style indexed window chunk with 5/5 query-token coverage; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-KqjOyP/28f108bffdc59e8c6fc367d1.json |
|
|
47
|
+
| index-generated-artifact-decoy | index-warm | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 3-7 | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 310220/441 | 99.86% | 2.28/2.30 | 0.40/0.05 | warm-loaded | BM25-style indexed window chunk with 5/5 query-token coverage; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-3yJwOY/2c1e76270adc1a02188256db.json |
|
|
48
|
+
| index-generated-artifact-decoy | index-stale-refresh | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 3-7 | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 310241/441 | 99.86% | 2.77/3.02 | 0.60/0.04 | stale-refreshed | BM25-style indexed window chunk with 5/5 query-token coverage; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-vHpgJg/9242bdc233ce6203c5a6e6fe.json; refresh=1 added |
|
|
49
|
+
| index-generated-artifact-decoy | fts5-bm25-trigram | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 3-7 | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 310220/315 | 99.90% | 1.82/1.89 | 0.22/0.22 | - | SQLite FTS5 trigram MATCH with bm25 rank -0.000007 |
|
|
50
|
+
| index-generated-artifact-decoy | hybrid-warm | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 3-9 | docs/codex-cli-agent-harness/2026-06-12-pass-3-sandboxing-and-permissions.md | 310220/236 | 99.92% | 2.69/2.82 | 0.41/0.49 | warm-loaded | selection=scanner-index-agree; scannerQueryMs=0.44; indexQueryMs=0.05 |
|
|
51
|
+
| index-stale-refresh | scanner-default | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md | 50/873 | -1646.00% | 0.82/0.89 | 0.00/0.30 | - | Deterministic repo retrieval selected 1 candidate(s); top result target.md:1-3 (matched exact normalized query phrase in section chunk). |
|
|
52
|
+
| index-stale-refresh | index-cold | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md | 50/322 | -544.00% | 0.97/1.09 | 0.38/0.02 | cold-built | matched exact normalized query phrase in indexed section chunk; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-IgHl0y/da51d69855603b1095f746c9.json |
|
|
53
|
+
| index-stale-refresh | index-warm | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md | 50/322 | -544.00% | 1.09/1.09 | 0.23/0.02 | warm-loaded | matched exact normalized query phrase in indexed section chunk; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-QNBb5t/04e813a08b0f962846486858.json |
|
|
54
|
+
| index-stale-refresh | index-stale-refresh | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md | 50/322 | -544.00% | 1.29/1.94 | 0.54/0.03 | stale-refreshed | matched exact normalized query phrase in indexed section chunk; cachePath=/var/folders/2x/tsrlzqfx3ld_fn5bmr1_3l600000gn/T/freeflow-router-index-benchmark-cache-DvsbMu/ecaeda95e6acb158b7eca6cf.json; refresh=1 changed |
|
|
55
|
+
| index-stale-refresh | fts5-bm25-trigram | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md | 50/180 | -260.00% | 0.89/1.00 | 0.21/0.21 | - | SQLite FTS5 trigram MATCH with bm25 rank -0.000004 |
|
|
56
|
+
| index-stale-refresh | hybrid-warm | pass | path ✓ span ✓ excerpt ✓ recall@3 ✓ gen-fp ✓ | target.md | 1-3 | target.md | 50/169 | -238.00% | 1.38/1.42 | 0.23/0.26 | warm-loaded | selection=scanner-index-agree; scannerQueryMs=0.24; indexQueryMs=0.02 |
|
|
57
|
+
|
|
58
|
+
## Adoption Decision
|
|
59
|
+
|
|
60
|
+
Index adopted by default: no. This slice only records benchmark evidence; scanner behavior remains the default until a later adoption checkpoint explicitly approves otherwise.
|
|
61
|
+
|
|
62
|
+
## Regression Status
|
|
63
|
+
|
|
64
|
+
Warm experimental index, FTS5/BM25/trigram, and hybrid modes passed all gated fixtures without generated-artifact false positives.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Output Router Regression Eval Report - Iteration 1
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-16
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Added deterministic Freeflow Router regression fixtures and tests for output-routing behavior. Refactored the host-facing guidance into a real `output-router` skill, with the safety policy stored as a skill reference.
|
|
8
|
+
|
|
9
|
+
Fixtures live under:
|
|
10
|
+
|
|
11
|
+
- `evals/fixtures/output-router/`
|
|
12
|
+
|
|
13
|
+
Regression tests live in:
|
|
14
|
+
|
|
15
|
+
- `router/tests/regression-fixtures.test.js`
|
|
16
|
+
|
|
17
|
+
Runtime-facing skill files live in:
|
|
18
|
+
|
|
19
|
+
- `skills/output-router/SKILL.md`
|
|
20
|
+
- `skills/output-router/references/safety-policy.md`
|
|
21
|
+
|
|
22
|
+
## Failure Preserved
|
|
23
|
+
|
|
24
|
+
The router must not merely reduce output size. It must also preserve exact evidence and recovery paths.
|
|
25
|
+
|
|
26
|
+
The preserved failure modes are:
|
|
27
|
+
|
|
28
|
+
- broad repo queries dumping whole files instead of bounded evidence,
|
|
29
|
+
- `preserve: full` becoming a lossy summary over cap,
|
|
30
|
+
- noisy command output flooding context without raw recovery,
|
|
31
|
+
- failed-command output losing exact assertion/stack evidence,
|
|
32
|
+
- verification output paraphrasing completion evidence,
|
|
33
|
+
- native post-tool safety-net output being shortened without a visible Freeflow label and exact recovery path,
|
|
34
|
+
- ambiguous top-level `status` hiding the difference between tool success, command failure, and routing success.
|
|
35
|
+
|
|
36
|
+
## Deterministic Check
|
|
37
|
+
|
|
38
|
+
Added fixture-backed tests for:
|
|
39
|
+
|
|
40
|
+
- large docs targeted query,
|
|
41
|
+
- whole-artifact full-fidelity over-cap chunk behavior,
|
|
42
|
+
- noisy successful command reduction and raw vault recovery,
|
|
43
|
+
- failed command exact evidence and split statuses,
|
|
44
|
+
- verification summary exactness,
|
|
45
|
+
- Pi native safety-net labeling and exact raw tail recovery.
|
|
46
|
+
|
|
47
|
+
The tests assert token/byte reduction where expected, exact evidence preservation, vault recovery, and split status semantics.
|
|
48
|
+
|
|
49
|
+
## Result
|
|
50
|
+
|
|
51
|
+
`npm run test:router`: pass, 42 tests.
|
|
52
|
+
|
|
53
|
+
Actual Pi smoke also passed for both local-extension loading and installed package discovery using an isolated temporary `PI_CODING_AGENT_DIR` cache:
|
|
54
|
+
|
|
55
|
+
- `freeflow_retrieve` registration and execution through Pi.
|
|
56
|
+
- `freeflow_run` execution through Pi's command runner with configured routing thresholds.
|
|
57
|
+
- Native `read` post-tool safety-net routing with explicit `postToolRouting: safety-net`.
|
|
58
|
+
|
|
59
|
+
## Verification
|
|
60
|
+
|
|
61
|
+
Commands:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
npm run test:router
|
|
65
|
+
pi --no-session --no-extensions --no-skills --no-context-files --approve -e "$PWD/pi-extension/index.js" --tools freeflow_retrieve --mode json -p "Use the freeflow_retrieve tool exactly once with action=query, source.kind=repo, source.path='evals/fixtures/output-router/large-router-manual.md', query='OUTPUT_ROUTER_SKILL_DECISION_ANCHOR safety net', preserve=important. Then report the output path and whether the anchor appears."
|
|
66
|
+
PI_CODING_AGENT_DIR=/tmp/freeflow-pi-agent-cache-... pi install "$PWD" --approve
|
|
67
|
+
PI_CODING_AGENT_DIR=/tmp/freeflow-pi-agent-cache-... pi --no-session --no-context-files --approve --tools freeflow_retrieve --mode json -p "Use freeflow_retrieve..."
|
|
68
|
+
# plus temp-project Pi smoke for freeflow_run and native read safety-net routing through package discovery
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Supporting checks from the same implementation pass:
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
node --check pi-extension/index.js
|
|
75
|
+
npm pack --dry-run --json
|
|
76
|
+
rg -n "child_process|node:child_process|\bspawn\b|\bexecFile\b|\bexecSync\b" router pi-extension || true
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Recommendation
|
|
80
|
+
|
|
81
|
+
Keep these deterministic regression fixtures in the router test suite. Add model-based agent evals only after the deterministic runtime behavior is stable and a specific agent-selection failure is observed.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Output Router Transform Eval - Iteration 1
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-28
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Targeted deterministic eval for transformed-output routing. It compares direct/manual long-log inspection against explicit Freeflow transform operations.
|
|
8
|
+
|
|
9
|
+
## Command
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm run build && node evals/scripts/run-output-router-transform-eval.js
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Summary
|
|
16
|
+
|
|
17
|
+
- Fixtures: 1
|
|
18
|
+
- Objective gates passed: 4/4
|
|
19
|
+
|
|
20
|
+
## Results
|
|
21
|
+
|
|
22
|
+
| fixture | direct/raw baseline | Freeflow routed behavior | status | gates |
|
|
23
|
+
| --- | --- | --- | --- | --- |
|
|
24
|
+
| long-log-manual-inspection-vs-freeflow-transform | 7729 raw log bytes for manual inspection | 193 filtered evidence bytes; countMatches=2; exact transformed recovery | pass | manualBaselineWouldReadWholeLog ✓; filteredTargetFacts ✓; countMatches ✓; lineage ✓ |
|
|
25
|
+
|
|
26
|
+
## Result
|
|
27
|
+
|
|
28
|
+
All targeted transform gates passed for these deterministic fixtures.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Pi Observed Routing Eval - Iteration 1
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-24
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Targeted deterministic eval for the Pi-only observed output routing slice. It exercises Pi's `tool_result` path for configured MCP, web, fetch, and code-search producers after direct host execution.
|
|
8
|
+
|
|
9
|
+
This eval compares raw direct tool-output fixtures against the routed result returned to the agent. It verifies bounded output, exact critical fact preservation, persistence/recovery claims, metadata-only no-raw-recovery behavior, mutating MCP routing as metadata (not a gate), and Pi status capability reporting.
|
|
10
|
+
|
|
11
|
+
It does not claim Context Mode or cross-host superiority. Claude and Codex observed-routing adapters remain out of scope.
|
|
12
|
+
|
|
13
|
+
## Command
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
npm run build && node evals/scripts/run-pi-observed-routing-eval.js
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Summary
|
|
20
|
+
|
|
21
|
+
- Fixtures: 7
|
|
22
|
+
- Objective gates passed: 28/28
|
|
23
|
+
- Host: Pi only.
|
|
24
|
+
- Direct execution/permissions: owned by Pi; Freeflow routes only completed tool output.
|
|
25
|
+
- Persistence modes covered: exact and metadata-only.
|
|
26
|
+
- Overall byte reduction, excluding status-only fixtures: 82.2%.
|
|
27
|
+
|
|
28
|
+
## Results
|
|
29
|
+
|
|
30
|
+
Raw and routed columns are `bytes / lines / items-or-evidence-packets`. Reduction is calculated from raw bytes to routed-result bytes.
|
|
31
|
+
|
|
32
|
+
| fixture | producer | raw direct output | routed output | byte reduction | recoverability | status | gates |
|
|
33
|
+
| --- | --- | ---: | ---: | ---: | --- | --- | --- |
|
|
34
|
+
| mcp-github-search-exact | mcp:github:search_issues | 8589 / 36 / 4 | 1201 / 40 / 1 | 86.0% | exact | pass | routedByPiHook ✓; boundedOutput ✓; criticalFactsPreserved ✓; recoverabilityAccurate ✓ |
|
|
35
|
+
| mcp-github-create-mutating | mcp:github:create_issue | 2492 / 8 / 1 | 889 / 29 / 1 | 64.3% | exact | pass | routedByPiHook ✓; boundedOutput ✓; criticalFactsPreserved ✓; recoverabilityAccurate ✓ |
|
|
36
|
+
| mcp-gmail-search-metadata-only | mcp:gmail:search | 12097 / 4 / 1 | 832 / 13 / 1 | 93.1% | metadata_only | pass | routedByPiHook ✓; boundedOutput ✓; criticalFactsPreserved ✓; recoverabilityAccurate ✓ |
|
|
37
|
+
| pi-web-search-exact | web:web_search | 1752 / 29 / 4 | 1184 / 34 / 1 | 32.4% | exact | pass | routedByPiHook ✓; boundedOutput ✓; criticalFactsPreserved ✓; recoverabilityAccurate ✓ |
|
|
38
|
+
| pi-fetch-content-exact | fetch:fetch_content | 2631 / 6 / 1 | 853 / 25 / 1 | 67.6% | exact | pass | routedByPiHook ✓; boundedOutput ✓; criticalFactsPreserved ✓; recoverabilityAccurate ✓ |
|
|
39
|
+
| pi-code-search-exact | code_search:code_search | 8712 / 26 / 3 | 1490 / 36 / 1 | 82.9% | exact | pass | routedByPiHook ✓; boundedOutput ✓; criticalFactsPreserved ✓; recoverabilityAccurate ✓ |
|
|
40
|
+
| pi-capability-status | status | 0 / 0 / 0 | 4970 / 190 / 0 | n/a | n/a | pass | hostCapabilityReported ✓; persistenceModesReported ✓; unsupportedRedactedReported ✓; configuredProducerReported ✓ |
|
|
41
|
+
|
|
42
|
+
## Result
|
|
43
|
+
|
|
44
|
+
All targeted Pi observed-routing gates passed for these deterministic fixtures. Pi observed routing materially reduced large/noisy fixture output while preserving critical facts and truthful recovery behavior.
|