@hassangameryt/freeflow 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +6 -2
- package/.codex-plugin/plugin.json +9 -9
- package/README.md +190 -127
- package/assets/feedback-loop.png +0 -0
- package/assets/freeflow_workflow_map.png +0 -0
- package/assets/workflow.png +0 -0
- package/{skills → capabilities}/output-router/SKILL.md +21 -17
- package/{skills → capabilities}/output-router/references/safety-policy.md +1 -1
- package/capabilities/output-router/references/setup.md +110 -0
- package/command-surface.json +62 -7
- package/hooks/freeflow-runtime-context.mjs +572 -154
- package/hooks/hooks.json +26 -1
- package/hooks/tests/check-runtime-context-hook.sh +375 -0
- package/package.json +24 -24
- package/pi-extension/dist/index.js +264 -80
- package/pi-extension/dist/integrations/mcp-config.js +29 -0
- package/pi-extension/dist/output-router/host-producer-identification.js +232 -0
- package/pi-extension/dist/output-router/native-safety-net.js +216 -0
- package/pi-extension/dist/output-router/observed-tool-routing.js +122 -0
- package/pi-extension/dist/output-router/renderers.js +1023 -0
- package/pi-extension/dist/output-router/router-tools.js +554 -0
- package/pi-extension/dist/output-router/schemas.js +383 -0
- package/pi-extension/dist/output-router/status.js +744 -0
- package/pi-extension/dist/output-router/utils.js +502 -0
- package/pi-extension/dist/runtime/runtime-context.js +798 -0
- package/pi-extension/dist/settings/settings-tui.js +314 -0
- package/pi-extension/dist/settings/settings-ui.js +1487 -0
- package/pi-extension/freeflow/index.js +1 -0
- package/pi-extension/src/index.ts +230 -56
- package/pi-extension/src/{host-producer-identification.ts → output-router/host-producer-identification.ts} +37 -7
- package/pi-extension/src/{native-safety-net.ts → output-router/native-safety-net.ts} +8 -12
- package/pi-extension/src/{observed-tool-routing.ts → output-router/observed-tool-routing.ts} +19 -11
- package/pi-extension/src/{renderers.ts → output-router/renderers.ts} +246 -55
- package/pi-extension/src/{router-tools.ts → output-router/router-tools.ts} +130 -29
- package/pi-extension/src/{schemas.ts → output-router/schemas.ts} +171 -43
- package/pi-extension/src/output-router/status.ts +791 -0
- package/pi-extension/src/{utils.ts → output-router/utils.ts} +80 -18
- package/pi-extension/src/runtime/runtime-context.ts +895 -0
- package/pi-extension/src/settings/settings-tui.ts +408 -0
- package/pi-extension/src/settings/settings-ui.ts +1730 -0
- package/pi-extension/tests/integration/pi-extension.test.js +4020 -0
- package/pi-extension/tests/output-router/observed-producers.test.js +132 -0
- package/pi-extension/tests/output-router/search.test.js +722 -0
- package/pi-extension/tests/settings/settings-tui.test.js +243 -0
- package/router/dist/benchmarks/benchmark-harness.d.ts +16 -13
- package/router/dist/benchmarks/benchmark-harness.js +62 -62
- package/router/dist/benchmarks/benchmarks.d.ts +80 -73
- package/router/dist/benchmarks/benchmarks.js +860 -761
- package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +71 -67
- package/router/dist/benchmarks/codex-qa-benchmarks.js +429 -390
- package/router/dist/benchmarks/command-benchmarks.d.ts +107 -92
- package/router/dist/benchmarks/command-benchmarks.js +616 -571
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +64 -56
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +679 -613
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +103 -95
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +1188 -1103
- package/router/dist/benchmarks/context-saving-baseline.d.ts +47 -41
- package/router/dist/benchmarks/context-saving-baseline.js +405 -374
- package/router/dist/benchmarks/index-benchmarks.d.ts +74 -69
- package/router/dist/benchmarks/index-benchmarks.js +761 -661
- package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +80 -69
- package/router/dist/benchmarks/storage-policy-benchmarks.js +549 -469
- package/router/dist/benchmarks/vault-index-benchmarks.d.ts +43 -34
- package/router/dist/benchmarks/vault-index-benchmarks.js +294 -229
- package/router/dist/config/config.d.ts +62 -55
- package/router/dist/config/config.js +552 -373
- package/router/dist/config/router-contract.d.ts +2 -2
- package/router/dist/config/router-contract.js +38 -38
- package/router/dist/config/schema.d.ts +19 -10
- package/router/dist/config/schema.js +586 -538
- package/router/dist/config/types.d.ts +413 -361
- package/router/dist/config/types.js +19 -8
- package/router/dist/evidence/bounded-evidence.d.ts +26 -26
- package/router/dist/evidence/bounded-evidence.js +265 -252
- package/router/dist/evidence/evidence-range-selector.d.ts +16 -14
- package/router/dist/evidence/evidence-range-selector.js +192 -191
- package/router/dist/evidence/evidence-search.d.ts +18 -16
- package/router/dist/evidence/evidence-search.js +401 -377
- package/router/dist/evidence/evidence.d.ts +17 -17
- package/router/dist/evidence/evidence.js +163 -159
- package/router/dist/evidence/failure-contracts.d.ts +25 -15
- package/router/dist/evidence/failure-contracts.js +132 -126
- package/router/dist/evidence/line-ranges.d.ts +17 -15
- package/router/dist/evidence/line-ranges.js +18 -18
- package/router/dist/experiments/local-index.d.ts +47 -41
- package/router/dist/experiments/local-index.js +477 -458
- package/router/dist/local/local-traversal.d.ts +18 -0
- package/router/dist/local/local-traversal.js +334 -0
- package/router/dist/processing/engine.d.ts +94 -70
- package/router/dist/processing/engine.js +462 -364
- package/router/dist/processing/reducers.d.ts +208 -194
- package/router/dist/processing/reducers.js +1434 -1256
- package/router/dist/processing/renderers.d.ts +24 -18
- package/router/dist/processing/renderers.js +161 -152
- package/router/dist/processing/scripts.d.ts +80 -67
- package/router/dist/processing/scripts.js +343 -290
- package/router/dist/repo/repo-traversal.d.ts +9 -9
- package/router/dist/repo/repo-traversal.js +205 -202
- package/router/dist/routing/observed-reducers.d.ts +25 -19
- package/router/dist/routing/observed-reducers.js +559 -545
- package/router/dist/routing/observed-routing.d.ts +23 -14
- package/router/dist/routing/observed-routing.js +319 -318
- package/router/dist/routing/parsers.d.ts +10 -10
- package/router/dist/routing/parsers.js +454 -406
- package/router/dist/routing/run-filters.d.ts +45 -41
- package/router/dist/routing/run-filters.js +215 -207
- package/router/dist/routing/run-reducers.d.ts +45 -26
- package/router/dist/routing/run-reducers.js +102 -90
- package/router/dist/sandbox/adapter-roots.d.ts +34 -26
- package/router/dist/sandbox/adapter-roots.js +43 -41
- package/router/dist/sandbox/eryx-python-adapter.d.ts +9 -5
- package/router/dist/sandbox/eryx-python-adapter.js +659 -588
- package/router/dist/sandbox/jq-wasm-adapter.d.ts +3 -3
- package/router/dist/sandbox/jq-wasm-adapter.js +319 -311
- package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +9 -5
- package/router/dist/sandbox/quickjs-wasi-adapter.js +336 -333
- package/router/dist/sandbox/script-sandbox.d.ts +105 -84
- package/router/dist/sandbox/script-sandbox.js +294 -260
- package/router/dist/setup/script-transform-adapters.d.ts +23 -19
- package/router/dist/setup/script-transform-adapters.js +223 -204
- package/router/dist/tools/batch.d.ts +27 -16
- package/router/dist/tools/batch.js +493 -416
- package/router/dist/tools/run.d.ts +47 -35
- package/router/dist/tools/run.js +1172 -1087
- package/router/dist/tools/search.d.ts +53 -31
- package/router/dist/tools/search.js +1224 -1065
- package/router/dist/transform/engine.d.ts +121 -96
- package/router/dist/transform/engine.js +1853 -1736
- package/router/dist/vault/vault-index.d.ts +97 -78
- package/router/dist/vault/vault-index.js +347 -342
- package/router/dist/vault/vault.d.ts +109 -74
- package/router/dist/vault/vault.js +528 -533
- package/runtime/interaction-contract.md +16 -0
- package/skills/bypass/SKILL.md +52 -38
- package/skills/commit-work/SKILL.md +54 -46
- package/skills/commit-work/references/staging-decisions.md +46 -24
- package/skills/decision-gate/SKILL.md +48 -0
- package/skills/design-for-depth/SKILL.md +75 -59
- package/skills/design-for-depth/references/design-pressure-signals.md +56 -7
- package/skills/design-for-depth/references/interface-design-loop.md +156 -0
- package/skills/design-for-depth/references/software-design-philosophy.md +32 -3
- package/skills/diagnose-failure/SKILL.md +65 -60
- package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +36 -0
- package/skills/diagnose-failure/references/flaky-and-performance.md +30 -18
- package/skills/discuss/SKILL.md +121 -0
- package/skills/discuss/references/checkpoints.md +66 -0
- package/skills/evaluate-skill/SKILL.md +62 -53
- package/skills/evaluate-skill/references/definition-schema.md +345 -0
- package/skills/evaluate-skill/references/evaluation-design.md +86 -0
- package/skills/evaluate-skill/references/execution-and-evidence.md +85 -0
- package/skills/evaluate-skill/references/review-and-revision.md +51 -0
- package/skills/evaluate-skill/scripts/lib/definitions.mjs +296 -0
- package/skills/evaluate-skill/scripts/lib/evidence.mjs +46 -0
- package/skills/evaluate-skill/scripts/lib/grade-comparison.mjs +60 -0
- package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +148 -0
- package/skills/evaluate-skill/scripts/lib/grade-support.mjs +126 -0
- package/skills/evaluate-skill/scripts/lib/grade-workspace.mjs +192 -0
- package/skills/evaluate-skill/scripts/lib/grade.mjs +56 -0
- package/skills/evaluate-skill/scripts/lib/pi.mjs +489 -0
- package/skills/evaluate-skill/scripts/lib/process.mjs +79 -0
- package/skills/evaluate-skill/scripts/lib/rpc.mjs +444 -0
- package/skills/evaluate-skill/scripts/lib/runner.mjs +346 -0
- package/skills/evaluate-skill/scripts/lib/sandbox.mjs +409 -0
- package/skills/evaluate-skill/scripts/lib/view.mjs +337 -0
- package/skills/evaluate-skill/scripts/pi-guard.mjs +164 -0
- package/skills/evaluate-skill/scripts/skill-eval.mjs +101 -0
- package/skills/execute-work/SKILL.md +99 -0
- package/skills/execute-work/references/code-practices.md +78 -0
- package/skills/execute-work/references/execution-loop.md +77 -0
- package/skills/finish-branch/SKILL.md +117 -0
- package/skills/finish-branch/references/integration-options.md +80 -0
- package/skills/handoff/SKILL.md +65 -39
- package/skills/handoff/references/templates.md +104 -27
- package/skills/launch-work/SKILL.md +116 -0
- package/skills/launch-work/references/launch-readiness.md +85 -0
- package/skills/migration-work/SKILL.md +115 -0
- package/skills/migration-work/references/migration-lifecycle.md +82 -0
- package/skills/mode-contract/SKILL.md +72 -52
- package/skills/release-work/SKILL.md +118 -0
- package/skills/release-work/references/release-evidence.md +78 -0
- package/skills/review-artifact/SKILL.md +77 -69
- package/skills/review-artifact/references/reviewer-prompt.md +133 -42
- package/skills/review-work/SKILL.md +82 -57
- package/skills/review-work/references/reviewer-prompt.md +97 -60
- package/skills/review-work/references/security-risk-lens.md +67 -0
- package/skills/setup-freeflow/SKILL.md +54 -68
- package/skills/setup-freeflow/references/activation-contract.md +84 -69
- package/skills/setup-freeflow/references/host-setup.md +50 -17
- package/skills/simplify-code/SKILL.md +80 -0
- package/skills/simplify-code/references/simplification-patterns.md +70 -0
- package/skills/tdd/SKILL.md +96 -0
- package/skills/tdd/references/test-design.md +96 -0
- package/skills/track-work/SKILL.md +84 -0
- package/skills/track-work/references/working-record-schema.md +378 -0
- package/skills/verify-work/SKILL.md +59 -38
- package/skills/verify-work/references/browser-runtime-evidence.md +55 -0
- package/skills/verify-work/references/integration-evidence.md +51 -0
- package/skills/verify-work/references/performance-evidence.md +57 -0
- package/skills/workflow/SKILL.md +53 -59
- package/skills/workflow/references/domain-skill-composition.md +57 -0
- package/skills/workflow/references/workflow-loop.md +92 -0
- package/skills/write-plan/SKILL.md +85 -58
- package/skills/write-plan/references/plan-shapes.md +132 -46
- package/skills/write-skill/SKILL.md +82 -51
- package/skills/write-skill/references/activation-boundaries.md +62 -0
- package/skills/write-skill/references/agent-first-instructions.md +87 -0
- package/skills/write-skill/references/progressive-disclosure.md +63 -0
- package/skills/write-skill/scripts/lib/skill-author.mjs +653 -0
- package/skills/write-skill/scripts/skill-author.mjs +104 -0
- package/skills/write-spec/SKILL.md +65 -54
- package/skills/write-spec/references/artifact-standards.md +60 -41
- package/skills/write-spec/references/decision-records.md +77 -0
- package/skills/write-spec/references/spec-shapes.md +119 -60
- package/evals/README.md +0 -32
- package/evals/fixtures/copy-conventions.md +0 -31
- package/evals/fixtures/output-router/README.md +0 -12
- package/evals/fixtures/output-router/failed-command-output.txt +0 -9
- package/evals/fixtures/output-router/large-router-manual.md +0 -63
- package/evals/fixtures/output-router/native-large-output.txt +0 -40
- package/evals/fixtures/output-router/noisy-test-output.txt +0 -30
- package/evals/fixtures/output-router/verification-output.txt +0 -8
- package/evals/fixtures/tiny-artifact-review-app/README.md +0 -5
- package/evals/fixtures/tiny-artifact-review-app/docs/billing-policy.md +0 -10
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/billing-webhook-api-draft.md +0 -21
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/failed-payment-grace-period.md +0 -24
- package/evals/fixtures/tiny-artifact-review-app/docs/specs/immediate-downgrade.md +0 -17
- package/evals/fixtures/tiny-artifact-review-app/tests/billing.test.md +0 -8
- package/evals/fixtures/tiny-commit-ambiguous-app/.freeflow-eval-setup.sh +0 -15
- package/evals/fixtures/tiny-commit-ambiguous-app/README.md +0 -3
- package/evals/fixtures/tiny-commit-ambiguous-app/src/billing.ts +0 -5
- package/evals/fixtures/tiny-commit-ambiguous-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-commit-ambiguous-app/tests/settings.test.md +0 -5
- package/evals/fixtures/tiny-commit-app/.freeflow-eval-setup.sh +0 -14
- package/evals/fixtures/tiny-commit-app/README.md +0 -3
- package/evals/fixtures/tiny-commit-app/docs/specs/settings-title.md +0 -5
- package/evals/fixtures/tiny-commit-app/src/billing.ts +0 -5
- package/evals/fixtures/tiny-commit-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-commit-app/tests/settings.test.md +0 -5
- package/evals/fixtures/tiny-commit-everything-app/.freeflow-eval-setup.sh +0 -15
- package/evals/fixtures/tiny-commit-everything-app/README.md +0 -3
- package/evals/fixtures/tiny-commit-everything-app/docs/specs/settings-title.md +0 -5
- package/evals/fixtures/tiny-commit-everything-app/src/billing.ts +0 -5
- package/evals/fixtures/tiny-commit-everything-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-commit-everything-app/tests/settings.test.md +0 -5
- package/evals/fixtures/tiny-commit-staged-app/.freeflow-eval-setup.sh +0 -15
- package/evals/fixtures/tiny-commit-staged-app/README.md +0 -3
- package/evals/fixtures/tiny-commit-staged-app/docs/specs/settings-title.md +0 -5
- package/evals/fixtures/tiny-commit-staged-app/src/billing.ts +0 -5
- package/evals/fixtures/tiny-commit-staged-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-commit-staged-app/tests/settings.test.md +0 -5
- package/evals/fixtures/tiny-commit-staged-mixed-app/.freeflow-eval-setup.sh +0 -15
- package/evals/fixtures/tiny-commit-staged-mixed-app/README.md +0 -3
- package/evals/fixtures/tiny-commit-staged-mixed-app/docs/billing-policy.md +0 -3
- package/evals/fixtures/tiny-commit-staged-mixed-app/docs/release-notes.md +0 -3
- package/evals/fixtures/tiny-commit-staged-mixed-app/src/billing.ts +0 -5
- package/evals/fixtures/tiny-dashboard-stale-app/README.md +0 -11
- package/evals/fixtures/tiny-dashboard-stale-app/src/api-client.ts +0 -13
- package/evals/fixtures/tiny-dashboard-stale-app/src/dashboard-data.ts +0 -19
- package/evals/fixtures/tiny-dashboard-stale-app/tests/dashboard-data.test.md +0 -9
- package/evals/fixtures/tiny-decision-destination-app/README.md +0 -6
- package/evals/fixtures/tiny-decision-destination-app/src/risk.ts +0 -8
- package/evals/fixtures/tiny-decision-destination-app/tests/risk.test.md +0 -4
- package/evals/fixtures/tiny-design-depth-app/README.md +0 -15
- package/evals/fixtures/tiny-design-depth-app/src/routes.ts +0 -25
- package/evals/fixtures/tiny-design-depth-app/src/sendEmail.ts +0 -3
- package/evals/fixtures/tiny-design-depth-app/src/sendSms.ts +0 -3
- package/evals/fixtures/tiny-design-depth-app/src/telemetry.ts +0 -3
- package/evals/fixtures/tiny-design-depth-app/tests/routes.test.md +0 -12
- package/evals/fixtures/tiny-eval-method-app/README.md +0 -8
- package/evals/fixtures/tiny-eval-method-app/evals/reports/review-pr-eval-result.md +0 -5
- package/evals/fixtures/tiny-eval-method-app/evals/reports/triage-question-failure.md +0 -17
- package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.diff +0 -11
- package/evals/fixtures/tiny-eval-method-app/evals/runs/review-pr-with-skill-output.md +0 -3
- package/evals/fixtures/tiny-eval-method-app/skills/review-pr/SKILL.md +0 -10
- package/evals/fixtures/tiny-eval-method-app/skills/triage-question/SKILL.md +0 -10
- package/evals/fixtures/tiny-execute-plan-app/README.md +0 -5
- package/evals/fixtures/tiny-execute-plan-app/checks/settings-and-billing-check.sh +0 -5
- package/evals/fixtures/tiny-execute-plan-app/docs/billing-policy.md +0 -10
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/immediate-downgrade-plan.md +0 -11
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-plan.md +0 -12
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/settings-title-with-bad-check.md +0 -15
- package/evals/fixtures/tiny-execute-plan-app/docs/plans/unverified-billing-plan.md +0 -9
- package/evals/fixtures/tiny-execute-plan-app/docs/specs/failed-payment-grace-period.md +0 -9
- package/evals/fixtures/tiny-execute-plan-app/docs/specs/settings-title.md +0 -9
- package/evals/fixtures/tiny-execute-plan-app/src/billing.ts +0 -7
- package/evals/fixtures/tiny-execute-plan-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-execute-plan-app/tests/billing.test.md +0 -7
- package/evals/fixtures/tiny-execute-plan-app/tests/settings.test.md +0 -5
- package/evals/fixtures/tiny-execute-review-loop-app/README.md +0 -5
- package/evals/fixtures/tiny-execute-review-loop-app/docs/billing-policy.md +0 -9
- package/evals/fixtures/tiny-execute-review-loop-app/docs/plans/settings-title-plan.md +0 -12
- package/evals/fixtures/tiny-execute-review-loop-app/docs/review/previous-agent-summary.md +0 -15
- package/evals/fixtures/tiny-execute-review-loop-app/docs/review/review-pass-1-non-pass.md +0 -11
- package/evals/fixtures/tiny-execute-review-loop-app/docs/specs/settings-title.md +0 -9
- package/evals/fixtures/tiny-execute-review-loop-app/src/billing.ts +0 -7
- package/evals/fixtures/tiny-execute-review-loop-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-execute-review-loop-app/tests/billing.test.md +0 -7
- package/evals/fixtures/tiny-execute-review-loop-app/tests/settings.test.md +0 -5
- package/evals/fixtures/tiny-flaky-session-app/README.md +0 -10
- package/evals/fixtures/tiny-flaky-session-app/src/session-timeout.ts +0 -13
- package/evals/fixtures/tiny-flaky-session-app/tests/session-timeout.test.md +0 -8
- package/evals/fixtures/tiny-handoff-app/README.md +0 -5
- package/evals/fixtures/tiny-handoff-app/docs/billing-policy.md +0 -10
- package/evals/fixtures/tiny-handoff-app/docs/handoffs/old-agent-handoff.md +0 -8
- package/evals/fixtures/tiny-handoff-app/docs/plans/billing-retry-plan.md +0 -11
- package/evals/fixtures/tiny-handoff-app/src/billing.ts +0 -7
- package/evals/fixtures/tiny-handoff-report-app/README.md +0 -3
- package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.diff +0 -1
- package/evals/fixtures/tiny-handoff-report-app/evals/runs/handoff-3/hof-003/with-skill-output.md +0 -1
- package/evals/fixtures/tiny-handoff-report-app/evals/scores/hof-003-score.txt +0 -4
- package/evals/fixtures/tiny-plan-app/README.md +0 -5
- package/evals/fixtures/tiny-plan-app/docs/billing-policy.md +0 -10
- package/evals/fixtures/tiny-plan-app/docs/specs/failed-payment-grace-period.md +0 -25
- package/evals/fixtures/tiny-plan-app/src/billing.ts +0 -17
- package/evals/fixtures/tiny-plan-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-plan-app/tests/billing.test.md +0 -8
- package/evals/fixtures/tiny-plan-app/tests/settings.test.md +0 -5
- package/evals/fixtures/tiny-plan-strict-api-app/README.md +0 -3
- package/evals/fixtures/tiny-plan-strict-api-app/docs/billing-policy.md +0 -5
- package/evals/fixtures/tiny-plan-strict-api-app/docs/specs/billing-webhook-api.md +0 -25
- package/evals/fixtures/tiny-plan-strict-api-app/src/billing.ts +0 -5
- package/evals/fixtures/tiny-plan-strict-api-app/src/webhooks.ts +0 -3
- package/evals/fixtures/tiny-plan-strict-api-app/tests/billing-webhook.test.md +0 -8
- package/evals/fixtures/tiny-post-setup-invalid-config-app/.freeflow/config.json +0 -3
- package/evals/fixtures/tiny-post-setup-invalid-config-app/AGENTS.md +0 -15
- package/evals/fixtures/tiny-post-setup-invalid-config-app/README.md +0 -16
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/auth-review.md +0 -15
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/billing-policy.md +0 -10
- package/evals/fixtures/tiny-post-setup-invalid-config-app/docs/copy-conventions.md +0 -15
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/auth-middleware.ts +0 -12
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/billing.ts +0 -20
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/login-copy.ts +0 -1
- package/evals/fixtures/tiny-post-setup-invalid-config-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/auth-middleware.test.md +0 -8
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/billing.test.md +0 -8
- package/evals/fixtures/tiny-post-setup-invalid-config-app/tests/copy.test.md +0 -7
- package/evals/fixtures/tiny-post-setup-missing-config-app/AGENTS.md +0 -15
- package/evals/fixtures/tiny-post-setup-missing-config-app/README.md +0 -16
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/auth-review.md +0 -15
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/billing-policy.md +0 -10
- package/evals/fixtures/tiny-post-setup-missing-config-app/docs/copy-conventions.md +0 -15
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/auth-middleware.ts +0 -12
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/billing.ts +0 -20
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/login-copy.ts +0 -1
- package/evals/fixtures/tiny-post-setup-missing-config-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/auth-middleware.test.md +0 -8
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/billing.test.md +0 -8
- package/evals/fixtures/tiny-post-setup-missing-config-app/tests/copy.test.md +0 -7
- package/evals/fixtures/tiny-post-setup-source-conflict-app/.freeflow/config.json +0 -3
- package/evals/fixtures/tiny-post-setup-source-conflict-app/AGENTS.md +0 -15
- package/evals/fixtures/tiny-post-setup-source-conflict-app/README.md +0 -16
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/auth-review.md +0 -15
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/billing-policy.md +0 -10
- package/evals/fixtures/tiny-post-setup-source-conflict-app/docs/copy-conventions.md +0 -15
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/auth-middleware.ts +0 -12
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/billing.ts +0 -20
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/login-copy.ts +0 -1
- package/evals/fixtures/tiny-post-setup-source-conflict-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/auth-middleware.test.md +0 -8
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/billing.test.md +0 -8
- package/evals/fixtures/tiny-post-setup-source-conflict-app/tests/copy.test.md +0 -7
- package/evals/fixtures/tiny-report-performance-app/README.md +0 -11
- package/evals/fixtures/tiny-report-performance-app/docs/performance.md +0 -10
- package/evals/fixtures/tiny-report-performance-app/src/report-summary.ts +0 -29
- package/evals/fixtures/tiny-report-performance-app/tests/report-performance.test.md +0 -8
- package/evals/fixtures/tiny-review-request-app/README.md +0 -3
- package/evals/fixtures/tiny-review-request-app/docs/billing-policy.md +0 -5
- package/evals/fixtures/tiny-review-request-app/docs/plans/billing-webhook-api.md +0 -19
- package/evals/fixtures/tiny-review-request-app/docs/review/previous-agent-summary.md +0 -20
- package/evals/fixtures/tiny-review-request-app/docs/specs/billing-webhook-api.md +0 -25
- package/evals/fixtures/tiny-review-request-app/src/billing.ts +0 -11
- package/evals/fixtures/tiny-review-request-app/src/webhooks.ts +0 -19
- package/evals/fixtures/tiny-review-request-app/tests/billing-webhook.test.md +0 -8
- package/evals/fixtures/tiny-review-work-app/README.md +0 -5
- package/evals/fixtures/tiny-review-work-app/docs/billing-policy.md +0 -9
- package/evals/fixtures/tiny-review-work-app/docs/plans/settings-title-plan.md +0 -12
- package/evals/fixtures/tiny-review-work-app/docs/review/previous-agent-summary.md +0 -15
- package/evals/fixtures/tiny-review-work-app/docs/specs/settings-title.md +0 -9
- package/evals/fixtures/tiny-review-work-app/src/billing.ts +0 -7
- package/evals/fixtures/tiny-review-work-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-review-work-app/tests/billing.test.md +0 -7
- package/evals/fixtures/tiny-review-work-app/tests/settings.test.md +0 -5
- package/evals/fixtures/tiny-saas-app/README.md +0 -16
- package/evals/fixtures/tiny-saas-app/docs/auth-review.md +0 -15
- package/evals/fixtures/tiny-saas-app/docs/billing-policy.md +0 -10
- package/evals/fixtures/tiny-saas-app/docs/copy-conventions.md +0 -15
- package/evals/fixtures/tiny-saas-app/docs/specs/settings-title.md +0 -13
- package/evals/fixtures/tiny-saas-app/src/auth-middleware.ts +0 -12
- package/evals/fixtures/tiny-saas-app/src/billing.ts +0 -20
- package/evals/fixtures/tiny-saas-app/src/login-copy.ts +0 -1
- package/evals/fixtures/tiny-saas-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-saas-app/tests/auth-middleware.test.md +0 -8
- package/evals/fixtures/tiny-saas-app/tests/billing.test.md +0 -8
- package/evals/fixtures/tiny-saas-app/tests/copy.test.md +0 -7
- package/evals/fixtures/tiny-setup-agents-app/AGENTS.md +0 -6
- package/evals/fixtures/tiny-setup-both-app/AGENTS.md +0 -5
- package/evals/fixtures/tiny-setup-both-app/CLAUDE.md +0 -5
- package/evals/fixtures/tiny-setup-claude-app/CLAUDE.md +0 -6
- package/evals/fixtures/tiny-setup-codex-rules-app/.codex/rules/shell.rules +0 -5
- package/evals/fixtures/tiny-setup-codex-rules-app/AGENTS.md +0 -6
- package/evals/fixtures/tiny-setup-conflict-app/AGENTS.md +0 -6
- package/evals/fixtures/tiny-setup-existing-block-app/AGENTS.md +0 -14
- package/evals/fixtures/tiny-setup-four-rules-app/CLAUDE.md +0 -6
- package/evals/fixtures/tiny-skill-dev-app/README.md +0 -10
- package/evals/fixtures/tiny-skill-dev-app/evals/prompts/review-pr-001.txt +0 -8
- package/evals/fixtures/tiny-skill-dev-app/evals/reports/review-pr-failure.md +0 -17
- package/evals/fixtures/tiny-skill-dev-app/skills/review-pr/SKILL.md +0 -13
- package/evals/fixtures/tiny-team-app/README.md +0 -5
- package/evals/fixtures/tiny-team-app/docs/product.md +0 -6
- package/evals/fixtures/tiny-team-app/src/teams.ts +0 -9
- package/evals/fixtures/tiny-team-app/src/users.ts +0 -5
- package/evals/fixtures/tiny-team-app/tests/teams.test.md +0 -7
- package/evals/fixtures/tiny-verify-app/README.md +0 -5
- package/evals/fixtures/tiny-verify-app/src/settings-nav.ts +0 -1
- package/evals/fixtures/tiny-verify-app/src/settings-page.ts +0 -1
- package/evals/fixtures/tiny-verify-app/tests/settings.test.md +0 -7
- package/evals/prompts/aon-001.txt +0 -2
- package/evals/prompts/byp-001.txt +0 -2
- package/evals/prompts/byp-002.txt +0 -2
- package/evals/prompts/cap-001.txt +0 -3
- package/evals/prompts/cap-002.txt +0 -3
- package/evals/prompts/cmd-001.txt +0 -3
- package/evals/prompts/cmd-002.txt +0 -3
- package/evals/prompts/cmd-003.txt +0 -6
- package/evals/prompts/cmd-004.txt +0 -5
- package/evals/prompts/cmd-005.txt +0 -5
- package/evals/prompts/cmd-006.txt +0 -5
- package/evals/prompts/cmd-007.txt +0 -5
- package/evals/prompts/cmd-008.txt +0 -5
- package/evals/prompts/cmd-009.txt +0 -8
- package/evals/prompts/cmd-010.txt +0 -5
- package/evals/prompts/cmd-011.txt +0 -5
- package/evals/prompts/cmd-012.txt +0 -5
- package/evals/prompts/cmd-013.txt +0 -5
- package/evals/prompts/cmd-014.txt +0 -7
- package/evals/prompts/cmd-015.txt +0 -7
- package/evals/prompts/cmd-016.txt +0 -5
- package/evals/prompts/cmt-001.txt +0 -1
- package/evals/prompts/cmt-002.txt +0 -1
- package/evals/prompts/cmt-003.txt +0 -1
- package/evals/prompts/cmt-004.txt +0 -1
- package/evals/prompts/cmt-005.txt +0 -1
- package/evals/prompts/dfd-001.txt +0 -3
- package/evals/prompts/dia-001.txt +0 -3
- package/evals/prompts/dia-002.txt +0 -3
- package/evals/prompts/dia-003.txt +0 -3
- package/evals/prompts/dis-001.txt +0 -5
- package/evals/prompts/dis-002.txt +0 -5
- package/evals/prompts/esk-001.txt +0 -5
- package/evals/prompts/esk-002.txt +0 -5
- package/evals/prompts/esk-003.txt +0 -5
- package/evals/prompts/grc-001.txt +0 -3
- package/evals/prompts/hof-001.txt +0 -3
- package/evals/prompts/hof-002.txt +0 -1
- package/evals/prompts/hof-003.txt +0 -1
- package/evals/prompts/hof-004.txt +0 -1
- package/evals/prompts/hof-005.txt +0 -1
- package/evals/prompts/ivg-001.txt +0 -1
- package/evals/prompts/ivg-002.txt +0 -11
- package/evals/prompts/ivg-003.txt +0 -1
- package/evals/prompts/ivg-004.txt +0 -1
- package/evals/prompts/mode-001.txt +0 -3
- package/evals/prompts/mode-002.txt +0 -1
- package/evals/prompts/mode-003.txt +0 -3
- package/evals/prompts/mode-004.txt +0 -3
- package/evals/prompts/mode-005.txt +0 -3
- package/evals/prompts/mode-006.txt +0 -3
- package/evals/prompts/mode-007.txt +0 -3
- package/evals/prompts/otr-001.txt +0 -3
- package/evals/prompts/otr-002.txt +0 -3
- package/evals/prompts/rar-001.txt +0 -5
- package/evals/prompts/rar-002.txt +0 -3
- package/evals/prompts/rar-003.txt +0 -6
- package/evals/prompts/rar-004.txt +0 -15
- package/evals/prompts/rar-005.txt +0 -10
- package/evals/prompts/rbr-001.txt +0 -3
- package/evals/prompts/rbr-002.txt +0 -3
- package/evals/prompts/rbr-003.txt +0 -7
- package/evals/prompts/rev-001.txt +0 -3
- package/evals/prompts/rev-002.txt +0 -5
- package/evals/prompts/rev-003.txt +0 -6
- package/evals/prompts/rev-004.txt +0 -1
- package/evals/prompts/rev-005.txt +0 -15
- package/evals/prompts/rev-006.txt +0 -5
- package/evals/prompts/stp-001.txt +0 -1
- package/evals/prompts/stp-002.txt +0 -1
- package/evals/prompts/stp-003.txt +0 -1
- package/evals/prompts/stp-004.txt +0 -1
- package/evals/prompts/stp-005.txt +0 -1
- package/evals/prompts/stp-006.txt +0 -1
- package/evals/prompts/stp-007.txt +0 -1
- package/evals/prompts/stp-008.txt +0 -1
- package/evals/prompts/stp-009.txt +0 -1
- package/evals/prompts/stp-010.txt +0 -1
- package/evals/prompts/stp-011.txt +0 -1
- package/evals/prompts/vfy-003.txt +0 -1
- package/evals/prompts/wpl-001.txt +0 -3
- package/evals/prompts/wpl-002.txt +0 -5
- package/evals/prompts/wpl-003.txt +0 -3
- package/evals/prompts/wpl-004.txt +0 -5
- package/evals/prompts/wpl-005.txt +0 -1
- package/evals/prompts/wrc-001.txt +0 -10
- package/evals/prompts/wrc-002.txt +0 -3
- package/evals/prompts/wsk-001.txt +0 -6
- package/evals/prompts/wsp-001.txt +0 -5
- package/evals/prompts/wsp-002.txt +0 -15
- package/evals/prompts/wsp-003.txt +0 -3
- package/evals/prompts/wsp-004.txt +0 -15
- package/evals/prompts/wsp-005.txt +0 -5
- package/evals/prompts/wsp-006.txt +0 -12
- package/evals/prompts/wsp-007.txt +0 -9
- package/evals/prompts/wsp-008.txt +0 -13
- package/evals/prompts/xpl-001.txt +0 -1
- package/evals/prompts/xpl-002.txt +0 -3
- package/evals/prompts/xpl-003.txt +0 -3
- package/evals/prompts/xpl-004.txt +0 -3
- package/evals/prompts/xpl-005.txt +0 -5
- package/evals/prompts/xpl-006.txt +0 -3
- package/evals/registries/adversarial-evals.json +0 -39
- package/evals/registries/fixture-evals.json +0 -2513
- package/evals/registries/handoff-evals.json +0 -74
- package/evals/registries/legacy-evals.json +0 -147
- package/evals/registries/skill-evidence.json +0 -193
- package/evals/registries/verify-work-evals.json +0 -46
- package/evals/reports/acceptance/v0.1-acceptance-report.md +0 -130
- package/evals/reports/by-command-surface/command-surface-1-report.md +0 -45
- package/evals/reports/by-command-surface/command-surface-10-report.md +0 -76
- package/evals/reports/by-command-surface/command-surface-11-report.md +0 -77
- package/evals/reports/by-command-surface/command-surface-12-report.md +0 -91
- package/evals/reports/by-command-surface/command-surface-13-report.md +0 -64
- package/evals/reports/by-command-surface/command-surface-14-report.md +0 -66
- package/evals/reports/by-command-surface/command-surface-15-report.md +0 -124
- package/evals/reports/by-command-surface/command-surface-16-report.md +0 -39
- package/evals/reports/by-command-surface/command-surface-2-report.md +0 -80
- package/evals/reports/by-command-surface/command-surface-3-report.md +0 -86
- package/evals/reports/by-command-surface/command-surface-4-report.md +0 -76
- package/evals/reports/by-command-surface/command-surface-5-report.md +0 -80
- package/evals/reports/by-command-surface/command-surface-6-report.md +0 -74
- package/evals/reports/by-command-surface/command-surface-7-report.md +0 -84
- package/evals/reports/by-command-surface/command-surface-8-report.md +0 -79
- package/evals/reports/by-command-surface/command-surface-9-report.md +0 -79
- package/evals/reports/by-command-surface/command-surface-matrix.md +0 -91
- package/evals/reports/by-skill/bypass-1-report.md +0 -124
- package/evals/reports/by-skill/capture-decisions-1-report.md +0 -99
- package/evals/reports/by-skill/capture-decisions-2-report.md +0 -102
- package/evals/reports/by-skill/commit-work-1-report.md +0 -165
- package/evals/reports/by-skill/commit-work-2-report.md +0 -109
- package/evals/reports/by-skill/design-for-depth-1-report.md +0 -95
- package/evals/reports/by-skill/diagnose-failure-1-report.md +0 -91
- package/evals/reports/by-skill/diagnose-failure-2-report.md +0 -94
- package/evals/reports/by-skill/discover-1-report.md +0 -118
- package/evals/reports/by-skill/evaluate-skill-2-report.md +0 -71
- package/evals/reports/by-skill/execute-plan-1-report.md +0 -103
- package/evals/reports/by-skill/execute-plan-2-report.md +0 -112
- package/evals/reports/by-skill/execute-plan-3-report.md +0 -87
- package/evals/reports/by-skill/grill-context-1-report.md +0 -103
- package/evals/reports/by-skill/handoff-1-report.md +0 -123
- package/evals/reports/by-skill/handoff-2-report.md +0 -105
- package/evals/reports/by-skill/handoff-3-report.md +0 -100
- package/evals/reports/by-skill/handoff-7-report.md +0 -77
- package/evals/reports/by-skill/interview-gate-1-report.md +0 -63
- package/evals/reports/by-skill/interview-gate-2-report.md +0 -105
- package/evals/reports/by-skill/mode-contract-1-report.md +0 -74
- package/evals/reports/by-skill/mode-contract-2-report.md +0 -87
- package/evals/reports/by-skill/mode-contract-3-report.md +0 -65
- package/evals/reports/by-skill/mode-contract-4-report.md +0 -71
- package/evals/reports/by-skill/mode-contract-5-report.md +0 -70
- package/evals/reports/by-skill/output-router-1-report.md +0 -76
- package/evals/reports/by-skill/output-router-2-report.md +0 -65
- package/evals/reports/by-skill/research-1-report.md +0 -144
- package/evals/reports/by-skill/research-brief-1-report.md +0 -94
- package/evals/reports/by-skill/research-brief-2-report.md +0 -75
- package/evals/reports/by-skill/review-artifact-1-report.md +0 -91
- package/evals/reports/by-skill/review-artifact-2-report.md +0 -79
- package/evals/reports/by-skill/review-artifact-3-report.md +0 -120
- package/evals/reports/by-skill/review-artifact-4-report.md +0 -89
- package/evals/reports/by-skill/review-artifact-5-report.md +0 -66
- package/evals/reports/by-skill/review-work-1-report.md +0 -85
- package/evals/reports/by-skill/review-work-2-report.md +0 -87
- package/evals/reports/by-skill/review-work-3-report.md +0 -104
- package/evals/reports/by-skill/review-work-4-report.md +0 -108
- package/evals/reports/by-skill/review-work-5-report.md +0 -73
- package/evals/reports/by-skill/review-work-6-report.md +0 -66
- package/evals/reports/by-skill/setup-freeflow-1-report.md +0 -199
- package/evals/reports/by-skill/setup-freeflow-2-report.md +0 -105
- package/evals/reports/by-skill/setup-freeflow-3-report.md +0 -105
- package/evals/reports/by-skill/setup-freeflow-4-report.md +0 -88
- package/evals/reports/by-skill/setup-freeflow-5-report.md +0 -115
- package/evals/reports/by-skill/skill-authoring-1-report.md +0 -81
- package/evals/reports/by-skill/verify-work-1-report.md +0 -111
- package/evals/reports/by-skill/verify-work-2-report.md +0 -120
- package/evals/reports/by-skill/workflow-1-report.md +0 -65
- package/evals/reports/by-skill/write-plan-1-report.md +0 -123
- package/evals/reports/by-skill/write-plan-2-report.md +0 -98
- package/evals/reports/by-skill/write-plan-3-report.md +0 -110
- package/evals/reports/by-skill/write-spec-1-report.md +0 -88
- package/evals/reports/by-skill/write-spec-2-report.md +0 -89
- package/evals/reports/by-skill/write-spec-3-report.md +0 -90
- package/evals/reports/by-skill/write-spec-4-report.md +0 -167
- package/evals/reports/harness/claude-harness-1-report.md +0 -103
- package/evals/reports/harness/eval-harness-1-report.md +0 -91
- package/evals/reports/iterations/iteration-1-report.md +0 -71
- package/evals/reports/iterations/iteration-2-report.md +0 -78
- package/evals/reports/iterations/iteration-3-report.md +0 -118
- package/evals/reports/iterations/iteration-4-report.md +0 -131
- package/evals/reports/iterations/iteration-5-report.md +0 -149
- package/evals/reports/iterations/iteration-6-report.md +0 -136
- package/evals/reports/runtime/always-on-runtime-1-report.md +0 -107
- package/evals/reports/runtime/context-mode-normalized-benchmark-1-report.md +0 -52
- package/evals/reports/runtime/context-mode-real-deep-baseline-1-report.md +0 -410
- package/evals/reports/runtime/context-mode-real-deep-final-slice-11-report.md +0 -203
- package/evals/reports/runtime/context-mode-real-deep-final-slice-11-review.md +0 -51
- package/evals/reports/runtime/context-saving-native-tools-baseline-1-report.md +0 -99
- package/evals/reports/runtime/eryx-python-compatibility-reprobe-1-report.md +0 -166
- package/evals/reports/runtime/eryx-python-proof-spike-1-report.md +0 -96
- package/evals/reports/runtime/eryx-python-proof-spike-2-report.md +0 -151
- package/evals/reports/runtime/eryx-python-script-derive-execution-1-report.md +0 -233
- package/evals/reports/runtime/jq-script-derive-execution-1-report.md +0 -215
- package/evals/reports/runtime/jq-wasm-proof-spike-1-report.md +0 -67
- package/evals/reports/runtime/output-router-benchmark-1-report.md +0 -81
- package/evals/reports/runtime/output-router-capture-derive-provider-eval-1-report.md +0 -35
- package/evals/reports/runtime/output-router-codex-large-index-sqlite-adhoc-report.md +0 -150
- package/evals/reports/runtime/output-router-codex-qa-benchmark-1-report.md +0 -46
- package/evals/reports/runtime/output-router-command-benchmark-1-report.md +0 -62
- package/evals/reports/runtime/output-router-index-benchmark-1-report.md +0 -64
- package/evals/reports/runtime/output-router-regression-1-report.md +0 -81
- package/evals/reports/runtime/output-router-transform-eval-1-report.md +0 -28
- package/evals/reports/runtime/pi-observed-routing-eval-1-report.md +0 -44
- package/evals/reports/runtime/quickjs-script-derive-execution-1-report.md +0 -159
- package/evals/reports/runtime/quickjs-wasi-proof-spike-1-report.md +0 -55
- package/evals/reports/runtime/render-format-row-protocol-1-report.md +0 -58
- package/evals/reports/runtime/script-sandbox-adapter-selection-review-1-report.md +0 -84
- package/evals/reports/runtime/script-sandbox-probe-resource-hardening-1-report.md +0 -51
- package/evals/reports/runtime/storage-policy-benchmark-1-report.md +0 -176
- package/evals/reports/runtime/vault-index-storage-spike-1-report.md +0 -39
- package/evals/reports/runtime/workflow-context-hook-1-report.md +0 -82
- package/evals/runbooks/adversarial-eval-runbook.md +0 -28
- package/evals/runbooks/fixture-eval-runbook.md +0 -137
- package/evals/runbooks/handoff-eval-runbook.md +0 -22
- package/evals/runbooks/verify-work-eval-runbook.md +0 -27
- package/evals/scripts/audit-command-surface.sh +0 -160
- package/evals/scripts/check-activation-contract.sh +0 -121
- package/evals/scripts/check-runtime-context-hook.sh +0 -183
- package/evals/scripts/grade-fixture-eval.sh +0 -446
- package/evals/scripts/run-claude-fixture-eval.sh +0 -26
- package/evals/scripts/run-codex-fixture-eval.sh +0 -26
- package/evals/scripts/run-eryx-python-proof-spike.js +0 -559
- package/evals/scripts/run-fixture-eval-by-id.sh +0 -23
- package/evals/scripts/run-fixture-eval.sh +0 -464
- package/evals/scripts/run-jq-wasm-proof-spike.js +0 -299
- package/evals/scripts/run-output-router-transform-eval.js +0 -115
- package/evals/scripts/run-pi-observed-routing-eval.js +0 -478
- package/evals/scripts/run-quickjs-wasi-proof-spike.js +0 -339
- package/evals/scripts/skill-evidence.sh +0 -316
- package/evals/scripts/validate-release-metadata.sh +0 -486
- package/evals/suites/v0.1-acceptance-suite.md +0 -131
- package/pi-extension/dist/host-producer-identification.js +0 -186
- package/pi-extension/dist/mcp-config.js +0 -30
- package/pi-extension/dist/native-safety-net.js +0 -209
- package/pi-extension/dist/observed-tool-routing.js +0 -114
- package/pi-extension/dist/renderers.js +0 -835
- package/pi-extension/dist/router-tools.js +0 -438
- package/pi-extension/dist/runtime-context.js +0 -288
- package/pi-extension/dist/schemas.js +0 -254
- package/pi-extension/dist/status.js +0 -449
- package/pi-extension/dist/utils.js +0 -467
- package/pi-extension/src/runtime-context.ts +0 -347
- package/pi-extension/src/status.ts +0 -505
- package/plugin-docs/README.md +0 -40
- package/plugin-docs/adr/0001-three-modes.md +0 -27
- package/plugin-docs/adr/0002-evals-before-hooks.md +0 -17
- package/plugin-docs/adr/0003-release-boundary.md +0 -21
- package/plugin-docs/adr/0004-discover-replaces-shallow-discovery-skills.md +0 -26
- package/plugin-docs/adr/README.md +0 -10
- package/plugin-docs/architecture.md +0 -89
- package/plugin-docs/output-router.md +0 -396
- package/plugin-docs/release-evidence.md +0 -77
- package/plugin-docs/skills.md +0 -44
- package/plugin-docs/workflow.md +0 -57
- package/skills/diagnose-failure/references/feedback-loop-catalog.md +0 -25
- package/skills/discover/ARTIFACT-DESTINATIONS.md +0 -58
- package/skills/discover/CHECKPOINTS.md +0 -74
- package/skills/discover/SKILL.md +0 -173
- package/skills/evaluate-skill/references/eval-patterns.md +0 -41
- package/skills/evaluate-skill/references/grading-priority.md +0 -33
- package/skills/execute-plan/SKILL.md +0 -133
- package/skills/execute-plan/references/execution-map.md +0 -122
- package/skills/interview-gate/SKILL.md +0 -90
- package/skills/setup-freeflow/references/output-router-setup.md +0 -102
- package/skills/workflow/references/workflow-map.md +0 -104
- /package/pi-extension/src/{mcp-config.ts → integrations/mcp-config.ts} +0 -0
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# QuickJS Script Derive Execution Report 1
|
|
2
|
-
|
|
3
|
-
> **Date:** 2026-06-24
|
|
4
|
-
> **Status:** Passed QuickJS-only execution smoke
|
|
5
|
-
> **Scope:** Partial Slice 17 execution engine. JavaScript can execute only through an explicitly registered/provided QuickJS adapter; script derive remains disabled by default.
|
|
6
|
-
|
|
7
|
-
## What Changed
|
|
8
|
-
|
|
9
|
-
- Added dependency-free QuickJS adapter support in router core.
|
|
10
|
-
- Adapter loading is explicit. The Pi adapter discovers QuickJS only when `FREEFLOW_QUICKJS_WASI_ROOT` points to an installed `quickjs-wasi` package root.
|
|
11
|
-
- No `package.json` dependency was added.
|
|
12
|
-
- No runtime artifact is downloaded by Freeflow.
|
|
13
|
-
- Python remains unavailable.
|
|
14
|
-
- jq remains proof-backed but not product-enabled in this slice.
|
|
15
|
-
|
|
16
|
-
## Execution Boundary
|
|
17
|
-
|
|
18
|
-
QuickJS exposes only these host APIs to guest JavaScript:
|
|
19
|
-
|
|
20
|
-
- `readText(alias)` — reads copied vault-source input by alias.
|
|
21
|
-
- `writeText(text)` — writes to captured stdout.
|
|
22
|
-
- `console.log(...)` — writes bounded stdout.
|
|
23
|
-
- `console.error(...)` — writes bounded stderr.
|
|
24
|
-
|
|
25
|
-
The adapter does not expose `process`, `require`, host filesystem APIs, `fetch`, package loading, repo paths, vault paths, or home paths.
|
|
26
|
-
|
|
27
|
-
## Verification Evidence
|
|
28
|
-
|
|
29
|
-
### Product-path smoke
|
|
30
|
-
|
|
31
|
-
A local smoke used the temp-installed package root:
|
|
32
|
-
|
|
33
|
-
```text
|
|
34
|
-
/tmp/freeflow-sandbox-candidates-xVAJBl/node_modules/quickjs-wasi
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
It executed `freeflowDerive` with:
|
|
38
|
-
|
|
39
|
-
- `scriptDerive.enabled=true`,
|
|
40
|
-
- `languages=["javascript"]`,
|
|
41
|
-
- `network="off"`,
|
|
42
|
-
- one vault source alias `log`,
|
|
43
|
-
- a JavaScript script that filtered source lines containing `ERROR`.
|
|
44
|
-
|
|
45
|
-
Result excerpt:
|
|
46
|
-
|
|
47
|
-
```json
|
|
48
|
-
{
|
|
49
|
-
"toolStatus": "ok",
|
|
50
|
-
"outputId": "ffout_1b9511127021d96d579578b7",
|
|
51
|
-
"summary": "Script derive javascript completed with 10 stdout bytes and 0 stderr bytes.",
|
|
52
|
-
"operation": {
|
|
53
|
-
"kind": "script",
|
|
54
|
-
"language": "javascript",
|
|
55
|
-
"codeSha256": "sha256_c5834b4ad4d0974718d47258aa6bf8fc633d08c45433f65a936b15986076226b"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
DERIVED="ERROR beta"
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Raw script text was not persisted in the routed result; the operation records only `codeSha256`.
|
|
62
|
-
|
|
63
|
-
### Output cap regression smoke
|
|
64
|
-
|
|
65
|
-
A real QuickJS product-path smoke used a configured adapter proof cap of `4096` bytes and a per-call `limits.maxOutputBytes=10` with:
|
|
66
|
-
|
|
67
|
-
```js
|
|
68
|
-
writeText('x'.repeat(100));
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Result excerpt:
|
|
72
|
-
|
|
73
|
-
```json
|
|
74
|
-
{
|
|
75
|
-
"toolStatus": "ok",
|
|
76
|
-
"failure": {
|
|
77
|
-
"kind": "derive_execution_failure",
|
|
78
|
-
"message": "Script derive javascript failed. QuickJS execution exceeded maxOutputBytes. stdoutBytes=10 stderrBytes=0."
|
|
79
|
-
},
|
|
80
|
-
"deriveExecution": {
|
|
81
|
-
"status": "failed",
|
|
82
|
-
"failureKind": "derive_execution_failure"
|
|
83
|
-
},
|
|
84
|
-
"persistence": {
|
|
85
|
-
"status": "not_persisted",
|
|
86
|
-
"recoverability": "none"
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
This confirms truncated output is not persisted as a successful exact result.
|
|
92
|
-
|
|
93
|
-
### Pi status smoke
|
|
94
|
-
|
|
95
|
-
With `FREEFLOW_QUICKJS_WASI_ROOT=/tmp/freeflow-sandbox-candidates-xVAJBl/node_modules/quickjs-wasi`, `buildFreeflowStatusReport` reports:
|
|
96
|
-
|
|
97
|
-
```json
|
|
98
|
-
{
|
|
99
|
-
"enabled": false,
|
|
100
|
-
"adapterAvailable": true,
|
|
101
|
-
"adapterStatus": "available",
|
|
102
|
-
"availableLanguages": ["javascript"],
|
|
103
|
-
"registeredAdapters": [{ "id": "quickjs-wasi", "version": "3.0.1", "languages": ["javascript"] }],
|
|
104
|
-
"executionStatus": "disabled"
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
This proves explicit adapter discovery does not enable script execution while `scriptDerive.enabled` remains false.
|
|
109
|
-
|
|
110
|
-
### Targeted tests
|
|
111
|
-
|
|
112
|
-
```text
|
|
113
|
-
npm run build:router && node --test router/tests/derive.test.js router/tests/script-sandbox.test.js
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Result:
|
|
117
|
-
|
|
118
|
-
```text
|
|
119
|
-
29 targeted tests passed
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Coverage added:
|
|
123
|
-
|
|
124
|
-
- script derive remains disabled by default,
|
|
125
|
-
- source resolution still returns adapter unavailable without a registered adapter,
|
|
126
|
-
- a proof-backed registered adapter can execute and persist exact derived stdout,
|
|
127
|
-
- adapter timeout/failure returns structured `derive_execution_failure`,
|
|
128
|
-
- output-limit failures return structured `derive_execution_failure` without exact recovery,
|
|
129
|
-
- proof fixture coverage remains complete,
|
|
130
|
-
- invalid `FREEFLOW_QUICKJS_WASI_ROOT` fails closed as adapter unavailable.
|
|
131
|
-
|
|
132
|
-
### Full router suite
|
|
133
|
-
|
|
134
|
-
```text
|
|
135
|
-
npm run test:router
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Result:
|
|
139
|
-
|
|
140
|
-
```text
|
|
141
|
-
273 tests passed
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## Current Availability
|
|
145
|
-
|
|
146
|
-
| Language | Status |
|
|
147
|
-
| --- | --- |
|
|
148
|
-
| JavaScript | Product execution path implemented for explicitly registered/provided QuickJS adapter roots; disabled by default. |
|
|
149
|
-
| Python | Unavailable. Eryx candidate blocked before proofs. |
|
|
150
|
-
| jq | Proof-backed candidate only; not product-enabled in this slice. |
|
|
151
|
-
|
|
152
|
-
## Remaining Gates
|
|
153
|
-
|
|
154
|
-
Before public docs can present script derive as generally available:
|
|
155
|
-
|
|
156
|
-
1. Add durable setup/config UX for optional adapter installation if desired.
|
|
157
|
-
2. Run full router suite and focused review for this implementation slice.
|
|
158
|
-
3. Decide whether to product-enable jq after separate security review of the Worker-boundary large-output caveat.
|
|
159
|
-
4. Find or fix a Python WASM candidate.
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# QuickJS WASI Sandbox Proof Spike Report
|
|
2
|
-
|
|
3
|
-
> **Date:** 2026-06-24
|
|
4
|
-
> **Status:** Passed proof spike for JavaScript candidate
|
|
5
|
-
> **Scope:** Proof-only evaluation. No Freeflow script execution path is enabled.
|
|
6
|
-
|
|
7
|
-
## Candidate
|
|
8
|
-
|
|
9
|
-
- Package: `quickjs-wasi@3.0.1`
|
|
10
|
-
- License: MIT
|
|
11
|
-
- Package root: `/tmp/freeflow-sandbox-candidates-xVAJBl/node_modules/quickjs-wasi`
|
|
12
|
-
- WASM bytes: 1587119
|
|
13
|
-
- WASM SHA-256: `66629761271fe05c63622c15c7169e2d386985db43cb3917fca4bd43caffdc84`
|
|
14
|
-
- Timeout: 250ms
|
|
15
|
-
- Memory limit: 8388608 bytes
|
|
16
|
-
- Output cap: 4096 bytes
|
|
17
|
-
|
|
18
|
-
## Positive API Probe
|
|
19
|
-
|
|
20
|
-
- Status: success
|
|
21
|
-
- Output: `INFO setup\nERROR target\n`
|
|
22
|
-
- Error: none
|
|
23
|
-
|
|
24
|
-
## Required Proof Results
|
|
25
|
-
|
|
26
|
-
| Proof | Result | Evidence |
|
|
27
|
-
| --- | --- | --- |
|
|
28
|
-
| env_access_denied | pass | ambient environment was not exposed; status=success; durationMs=2; outputBytes=0; stdoutBytes=0; stderrBytes=0; truncated=false |
|
|
29
|
-
| home_access_denied | pass | home/secret paths were not exposed; status=success; durationMs=1; outputBytes=14; stdoutBytes=14; stderrBytes=0; truncated=false |
|
|
30
|
-
| repo_access_denied | pass | repo files were not exposed; status=success; durationMs=3; outputBytes=14; stdoutBytes=14; stderrBytes=0; truncated=false |
|
|
31
|
-
| vault_access_denied | pass | vault records were not exposed; status=success; durationMs=2; outputBytes=14; stdoutBytes=14; stderrBytes=0; truncated=false |
|
|
32
|
-
| network_access_denied | pass | network/fetch capability was absent; status=success; durationMs=2; outputBytes=17; stdoutBytes=17; stderrBytes=0; truncated=false |
|
|
33
|
-
| input_read_only | pass | input mutation was not possible through host filesystem APIs; status=success; durationMs=1; outputBytes=14; stdoutBytes=14; stderrBytes=0; truncated=false |
|
|
34
|
-
| output_escape_denied | pass | output symlink/file escape was not possible through host filesystem APIs; status=success; durationMs=2; outputBytes=14; stdoutBytes=14; stderrBytes=0; truncated=false |
|
|
35
|
-
| stdout_stderr_bounded | pass | stdout and stderr flood capture was truncated within the cap; status=timed_out; durationMs=253; outputBytes=4096; stdoutBytes=2076; stderrBytes=2020; truncated=true; error=interrupted |
|
|
36
|
-
| timeout_enforced | pass | infinite loop was interrupted by runtime timeout; status=timed_out; durationMs=251; outputBytes=0; stdoutBytes=0; stderrBytes=0; truncated=false; error=interrupted |
|
|
37
|
-
|
|
38
|
-
## Notes
|
|
39
|
-
|
|
40
|
-
- This proof runner uses a temporary installed `quickjs-wasi` package root passed explicitly by the caller.
|
|
41
|
-
- It does not add repo dependencies and does not wire the adapter into `freeflow_derive` execution.
|
|
42
|
-
- Passing this spike only supports JavaScript adapter feasibility; Python and jq remain unavailable until their own proof slices pass.
|
|
43
|
-
- Before product execution, this must still go through implementation/security review and source-plan update.
|
|
44
|
-
|
|
45
|
-
## Required Proof Set
|
|
46
|
-
|
|
47
|
-
- env_access_denied
|
|
48
|
-
- home_access_denied
|
|
49
|
-
- repo_access_denied
|
|
50
|
-
- vault_access_denied
|
|
51
|
-
- network_access_denied
|
|
52
|
-
- input_read_only
|
|
53
|
-
- output_escape_denied
|
|
54
|
-
- stdout_stderr_bounded
|
|
55
|
-
- timeout_enforced
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# Render Format Row Protocol Benchmark 1
|
|
2
|
-
|
|
3
|
-
Date: 2026-06-27
|
|
4
|
-
|
|
5
|
-
Purpose: decide whether Pi model-visible Freeflow output should move from compact prose to a deterministic row protocol before continuing later runtime slices.
|
|
6
|
-
|
|
7
|
-
Committed regression benchmark: `router/tests/benchmarks/render-format-benchmark.test.js` gates bytes, visible fact preservation, per-sample validity, row shape, and visible recovery rows for future renderer changes.
|
|
8
|
-
|
|
9
|
-
Scope:
|
|
10
|
-
|
|
11
|
-
- `freeflow_run`
|
|
12
|
-
- `freeflow_retrieve`
|
|
13
|
-
- `freeflow_derive`
|
|
14
|
-
- `freeflow_batch`
|
|
15
|
-
|
|
16
|
-
Gate:
|
|
17
|
-
|
|
18
|
-
- Use bytes, not tokenizer-specific counts.
|
|
19
|
-
- A candidate renderer is valid only when every sample preserves at least the current visible fact coverage.
|
|
20
|
-
- `details.result` JSON remains unchanged.
|
|
21
|
-
- TUI rendering remains human-readable.
|
|
22
|
-
|
|
23
|
-
Best valid candidate selected: `line:shortHeader`.
|
|
24
|
-
|
|
25
|
-
| renderer | bytes | visible facts | valid samples | byte change |
|
|
26
|
-
| --- | ---: | ---: | ---: | ---: |
|
|
27
|
-
| current compact prose | 14,049 | 41/50 | 14/14 | baseline |
|
|
28
|
-
| line:noRecovery | 8,331 | 41/50 | 14/14 | 40.70% saved |
|
|
29
|
-
| line:shortHeader | 10,600 | 41/50 | 14/14 | 24.55% saved |
|
|
30
|
-
| jsonMin | 67,456 | 50/50 | 14/14 | 380.15% larger |
|
|
31
|
-
|
|
32
|
-
Decision:
|
|
33
|
-
|
|
34
|
-
Use a readable row protocol with short recovery rows, not `noRecovery`, because Freeflow should keep recovery visible while reducing model-visible bytes.
|
|
35
|
-
|
|
36
|
-
Selected row shape examples:
|
|
37
|
-
|
|
38
|
-
```text
|
|
39
|
-
freeflow_run|success|exit=0|route=routed|parser=test-output|raw=ffout_...
|
|
40
|
-
s|test-output summary...
|
|
41
|
-
p|stdout:1-4
|
|
42
|
-
>|tests: 4 failed, 108 passed, (112)
|
|
43
|
-
rec|vault|ffout_...|stdout|1-4
|
|
44
|
-
details|details.result
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
```text
|
|
48
|
-
freeflow_batch|routed|steps=3|ok=3|failed=0|c=3
|
|
49
|
-
q|answered|failed test files and counts|...
|
|
50
|
-
step|1|tests|run|ok|...
|
|
51
|
-
details|details.result steps+queries
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Notes:
|
|
55
|
-
|
|
56
|
-
- TSV was also viable, but line protocol was chosen for readability and easier visual inspection.
|
|
57
|
-
- Minified JSON preserves the most facts but is much larger, confirming JSON is unsuitable for model-visible output.
|
|
58
|
-
- The `line:noRecovery` variant saved more bytes, but was rejected because recovery visibility is part of Freeflow's product value.
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# Script Sandbox Adapter Selection Review 1
|
|
2
|
-
|
|
3
|
-
> **Date:** 2026-06-24
|
|
4
|
-
> **Status:** Conditional pass for adapter-family selection; execution remains blocked
|
|
5
|
-
> **Scope:** Artifact/security gate after JavaScript, Python, and jq sandbox proof spikes. No Freeflow script execution path is enabled.
|
|
6
|
-
|
|
7
|
-
## Decision Summary
|
|
8
|
-
|
|
9
|
-
Select the optional pinned **WASM/WASI adapter family** as the current script-sandbox direction.
|
|
10
|
-
|
|
11
|
-
Proof-backed partial candidates:
|
|
12
|
-
|
|
13
|
-
| Language | Candidate | Gate result | Current availability decision |
|
|
14
|
-
| --- | --- | --- | --- |
|
|
15
|
-
| JavaScript | `quickjs-wasi@3.0.1` | Required proof fixtures passed 9/9. | Candidate can proceed to adapter implementation planning after owner approval for optional package addition. |
|
|
16
|
-
| jq | `jq-wasm@1.2.0-jq-1.8.2` | Required proof fixtures passed 9/9 using Worker termination and bounded Worker-to-host output. | Candidate can proceed to adapter implementation planning after owner approval for optional package addition and security review of the in-Worker large-output caveat. |
|
|
17
|
-
| Python | `@bsull/eryx@0.5.0` | Blocked before Python execution by package/transitive compatibility. Proofs not run. | Unavailable. Do not add dependency until a compatible Eryx set or alternate Python WASM candidate passes proofs. |
|
|
18
|
-
|
|
19
|
-
This is not approval to wire execution into `freeflow_derive`. Slice 17 remains blocked until the owner explicitly approves the runtime package additions and the implementation/security review accepts the adapter boundaries.
|
|
20
|
-
|
|
21
|
-
## Source Evidence
|
|
22
|
-
|
|
23
|
-
- JavaScript proof report: `evals/reports/runtime/quickjs-wasi-proof-spike-1-report.md`
|
|
24
|
-
- `quickjs-wasi@3.0.1`
|
|
25
|
-
- proofs passed 9/9
|
|
26
|
-
- no repo dependency added
|
|
27
|
-
- no script execution path enabled
|
|
28
|
-
- Python proof report: `evals/reports/runtime/eryx-python-proof-spike-1-report.md`
|
|
29
|
-
- `@bsull/eryx@0.5.0`
|
|
30
|
-
- failed before Python execution because `@bytecodealliance/preview2-shim/filesystem` did not export `_setFileData`
|
|
31
|
-
- proofs not run
|
|
32
|
-
- jq proof report: `evals/reports/runtime/jq-wasm-proof-spike-1-report.md`
|
|
33
|
-
- `jq-wasm@1.2.0-jq-1.8.2`
|
|
34
|
-
- proofs passed 9/9
|
|
35
|
-
- timeout proof uses Worker termination
|
|
36
|
-
- output proof caps stdout/stderr before Worker result crosses to host
|
|
37
|
-
- residual caveat: jq can generate large in-Worker strings before wrapper truncation
|
|
38
|
-
|
|
39
|
-
## Security Review Notes
|
|
40
|
-
|
|
41
|
-
### Accepted Direction
|
|
42
|
-
|
|
43
|
-
- Keep the public surface as `freeflow_derive operation.kind="script"` only.
|
|
44
|
-
- Keep script derive disabled by default.
|
|
45
|
-
- Keep no unsandboxed fallback.
|
|
46
|
-
- Keep runtime packages optional and pinned; Freeflow core should not add heavyweight runtime dependencies silently.
|
|
47
|
-
- Keep JavaScript, Python, and jq as the target language set. JavaScript and jq can become partial availability states, not a narrowed product direction.
|
|
48
|
-
|
|
49
|
-
### Required Before Execution Implementation
|
|
50
|
-
|
|
51
|
-
Before Slice 17 can enable any real adapter execution, the owner must decide:
|
|
52
|
-
|
|
53
|
-
1. Whether to add optional pinned adapter package support for `quickjs-wasi`.
|
|
54
|
-
2. Whether to add optional pinned adapter package support for `jq-wasm`.
|
|
55
|
-
3. Whether `jq-wasm`'s Worker boundary is acceptable even though jq can allocate large strings inside the Worker before wrapper truncation.
|
|
56
|
-
4. Whether Slice 17 should implement JavaScript first, jq first, or JavaScript and jq in one execution slice.
|
|
57
|
-
|
|
58
|
-
### Must Remain Blocked
|
|
59
|
-
|
|
60
|
-
- Python script derive remains unavailable.
|
|
61
|
-
- `@bsull/eryx` must not be added as a dependency yet.
|
|
62
|
-
- No script code may execute through Freeflow until an approved adapter implementation passes the proof-backed availability checks inside product code.
|
|
63
|
-
- No runtime artifacts may be downloaded during script execution.
|
|
64
|
-
- Raw script text must not be persisted.
|
|
65
|
-
|
|
66
|
-
## Recommended Slice 17 Entry
|
|
67
|
-
|
|
68
|
-
If the owner approves dependency/security decisions, execute Slice 17 as a narrow partial-availability implementation:
|
|
69
|
-
|
|
70
|
-
1. Add optional adapter discovery for approved package roots or installed optional dependencies.
|
|
71
|
-
2. Register only proof-backed languages.
|
|
72
|
-
3. Keep unsupported languages returning structured unavailable.
|
|
73
|
-
4. Preserve current disabled-by-default behavior.
|
|
74
|
-
5. Implement one adapter at a time unless the owner explicitly approves bundling JavaScript and jq.
|
|
75
|
-
6. Re-run adversarial proofs against the actual product adapter, not only the proof runner.
|
|
76
|
-
7. Keep exact recovery false for truncated script output.
|
|
77
|
-
|
|
78
|
-
## Current Gate State
|
|
79
|
-
|
|
80
|
-
- Adapter family selected: WASM/WASI with optional pinned adapters.
|
|
81
|
-
- JavaScript: proof-backed candidate, not product-enabled.
|
|
82
|
-
- jq: proof-backed candidate with security caveat, not product-enabled.
|
|
83
|
-
- Python: unavailable.
|
|
84
|
-
- Slice 17: still blocked pending explicit owner dependency/security approval.
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Script Sandbox Probe Resource Hardening Report 1
|
|
2
|
-
|
|
3
|
-
> **Date:** 2026-06-24
|
|
4
|
-
> **Status:** Passed targeted verification
|
|
5
|
-
> **Scope:** Follow-up hardening after QuickJS and jq script-derive execution slices.
|
|
6
|
-
|
|
7
|
-
## Trigger
|
|
8
|
-
|
|
9
|
-
During implementation and proof smokes, repeated full router suites plus sandbox proof runs caused high local CPU load. The jq adapter caveat also exposed a related risk: output is capped before crossing the Worker boundary, but jq can still allocate inside the Worker before wrapper truncation.
|
|
10
|
-
|
|
11
|
-
## Root Cause / Risk
|
|
12
|
-
|
|
13
|
-
Two resource costs were unnecessarily high:
|
|
14
|
-
|
|
15
|
-
1. The shared `stdout_stderr_bounded` proof fixtures used runaway loop counts (`1000000` for JavaScript/Python and `100000` for jq). The adapters stop or truncate, but the fixture text encouraged far more output generation than needed to prove cap enforcement.
|
|
16
|
-
2. Adapter proof probes could rerun repeatedly in the same Pi process. `freeflow_status` and script adapter selection both need proof-backed availability, but repeating adversarial proofs for the same adapter binary/hash and probe limits wastes CPU.
|
|
17
|
-
|
|
18
|
-
## Changes
|
|
19
|
-
|
|
20
|
-
- Reduced `stdout_stderr_bounded` proof fixture loops to `1000` iterations for JavaScript, Python, and jq.
|
|
21
|
-
- This still exceeds normal proof output caps.
|
|
22
|
-
- It avoids multi-megabyte raw jq stdout/stderr generation during proof runs.
|
|
23
|
-
- Lowered jq probe timeout from `500ms` to `250ms`.
|
|
24
|
-
- Product execution still uses configured/per-call script limits.
|
|
25
|
-
- The proof only needs to show the adapter can terminate runaway jq execution.
|
|
26
|
-
- Added per-process proof-result caches:
|
|
27
|
-
- QuickJS cache key: package version, WASM hash, probe timeout, probe output cap, network mode.
|
|
28
|
-
- jq cache key: package version, entrypoint hash, probe timeout, probe output cap, network mode.
|
|
29
|
-
- Added a regression test that rejects future `stdout_stderr_bounded` fixtures containing five-or-more-digit loop counts.
|
|
30
|
-
- Fixed a flaky Pi status test that assumed the default user vault index was empty. The default vault is user-global, so tests now assert the index shape rather than `entryCount === 0`.
|
|
31
|
-
|
|
32
|
-
## Preserved Safety Properties
|
|
33
|
-
|
|
34
|
-
- Script derive remains disabled by default.
|
|
35
|
-
- No unsandboxed fallback was added.
|
|
36
|
-
- Adapter availability still requires every required proof to pass.
|
|
37
|
-
- Caches are keyed by adapter content hash and probe limits, not just package root strings.
|
|
38
|
-
- Output-limit failures remain structured failures with no exact recovery.
|
|
39
|
-
- Python remains unavailable.
|
|
40
|
-
|
|
41
|
-
## Verification
|
|
42
|
-
|
|
43
|
-
Targeted check passed:
|
|
44
|
-
|
|
45
|
-
```text
|
|
46
|
-
npm run build && node --test router/tests/script-sandbox.test.js router/tests/derive.test.js router/tests/pi-extension.test.js
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Result: 62/62 targeted tests passed.
|
|
50
|
-
|
|
51
|
-
Additional note: the earlier temporary optional adapter package roots under `/tmp/freeflow-sandbox-candidates-xVAJBl` had been cleaned up before this follow-up, so this report does not claim a fresh real QuickJS/jq package-root smoke after hardening. The product execution smokes from the immediately preceding QuickJS and jq reports remain the adapter proof/execution evidence; this slice reduces repeat probe cost and guards against runaway fixture sizes.
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
# Storage Policy Benchmark Report - Iteration 1
|
|
2
|
-
|
|
3
|
-
Date: 2026-06-28
|
|
4
|
-
|
|
5
|
-
## Scope
|
|
6
|
-
|
|
7
|
-
Benchmark-only experiment for Freeflow vault storage policies. This report does not change runtime defaults or repo config. It compares exact storage, threshold storage, hybrid metadata/exact storage, and duplicate-output dedupe using deterministic command-output fixtures.
|
|
8
|
-
|
|
9
|
-
## Summary
|
|
10
|
-
|
|
11
|
-
- Fixtures: 9
|
|
12
|
-
- Policies: 5
|
|
13
|
-
- Safe candidates for further evaluation: store-everything, metadata-small-exact-large-hybrid, duplicate-output-dedupe, hybrid-dedupe
|
|
14
|
-
- Disqualified by exact-recovery safety: threshold-exact
|
|
15
|
-
- Runtime default changed: no
|
|
16
|
-
|
|
17
|
-
## Policy Results
|
|
18
|
-
|
|
19
|
-
| Policy | Exact-sensitive recovery | Storage bytes | Index bytes | Exact stored bytes | Storage reduction | Token-surface reduction | Privacy surface | Metadata-only | Duplicate metadata | Latency p50/p95 | Notes |
|
|
20
|
-
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- |
|
|
21
|
-
| Store everything exactly | 8/8 | 490785 | 185735 | 121022 | 0.00% | 0.00% | 100.00% | 0 | 0 | 1.58/2.76 | |
|
|
22
|
-
| Threshold exact storage | 0/8 | 466984 | 185391 | 120120 | 0.75% | 0.75% | 99.25% | 14 | 0 | 1.21/1.78 | disqualified: exactness-sensitive failure/verification output would lose exact recovery threshold-only policy is unsafe without an exactness-sensitive override |
|
|
23
|
-
| Metadata-small / exact-large hybrid | 8/8 | 483256 | 186749 | 120884 | 0.11% | 0.12% | 99.89% | 6 | 0 | 1.32/1.74 | hybrid preserved exact recovery for sensitive fixtures while reducing exact raw storage |
|
|
24
|
-
| Duplicate output dedupe | 8/8 | 172791 | 66691 | 30335 | 74.93% | 74.93% | 25.07% | 12 | 12 | 1.04/1.43 | duplicates kept metadata pointers to prior exact output |
|
|
25
|
-
| Hybrid exactness + duplicate dedupe | 8/8 | 168371 | 66134 | 30299 | 74.96% | 74.96% | 25.04% | 14 | 8 | 1.02/1.35 | hybrid+dedupe preserved exact-sensitive recovery while metadata-only small output and duplicate pointers reduced exact raw storage |
|
|
26
|
-
|
|
27
|
-
## Candidate Notes
|
|
28
|
-
|
|
29
|
-
### Store everything exactly
|
|
30
|
-
|
|
31
|
-
Current baseline: every command output is vaulted exactly, so recovery is maximally useful and storage/privacy surface is largest.
|
|
32
|
-
|
|
33
|
-
- Exactness-sensitive recovery: pass
|
|
34
|
-
- Metadata-only recovery labeled: yes
|
|
35
|
-
- Repeated outputs deduped: no
|
|
36
|
-
|
|
37
|
-
| Fixture | Iteration | Record | Recovery | Exact bytes | Notes |
|
|
38
|
-
| --- | ---: | --- | --- | ---: | --- |
|
|
39
|
-
| small-success | 1 | command/exact | exact | 3 | exact combined recovery passed |
|
|
40
|
-
| small-failure | 1 | command/exact | exact | 104 | exact combined recovery passed |
|
|
41
|
-
| verification-output | 1 | command/exact | exact | 52 | exact combined recovery passed |
|
|
42
|
-
| large-log | 1 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
43
|
-
| large-log-repeat | 1 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
44
|
-
| repeated-failure-a | 1 | command/exact | exact | 113 | exact combined recovery passed |
|
|
45
|
-
| repeated-failure-b | 1 | command/exact | exact | 113 | exact combined recovery passed |
|
|
46
|
-
| repeat-a | 1 | command/exact | exact | 33 | exact combined recovery passed |
|
|
47
|
-
| repeat-b | 1 | command/exact | exact | 33 | exact combined recovery passed |
|
|
48
|
-
| small-success | 2 | command/exact | exact | 3 | exact combined recovery passed |
|
|
49
|
-
| small-failure | 2 | command/exact | exact | 104 | exact combined recovery passed |
|
|
50
|
-
| verification-output | 2 | command/exact | exact | 52 | exact combined recovery passed |
|
|
51
|
-
| large-log | 2 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
52
|
-
| large-log-repeat | 2 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
53
|
-
| repeated-failure-a | 2 | command/exact | exact | 113 | exact combined recovery passed |
|
|
54
|
-
| repeated-failure-b | 2 | command/exact | exact | 113 | exact combined recovery passed |
|
|
55
|
-
| repeat-a | 2 | command/exact | exact | 33 | exact combined recovery passed |
|
|
56
|
-
| repeat-b | 2 | command/exact | exact | 33 | exact combined recovery passed |
|
|
57
|
-
|
|
58
|
-
### Threshold exact storage
|
|
59
|
-
|
|
60
|
-
Exact storage only when combined output is at least 8192 bytes; smaller outputs are metadata-only. This intentionally tests whether a threshold alone would drop exact failure/verification recovery.
|
|
61
|
-
|
|
62
|
-
- Exactness-sensitive recovery: fail
|
|
63
|
-
- Metadata-only recovery labeled: yes
|
|
64
|
-
- Repeated outputs deduped: no
|
|
65
|
-
|
|
66
|
-
| Fixture | Iteration | Record | Recovery | Exact bytes | Notes |
|
|
67
|
-
| --- | ---: | --- | --- | ---: | --- |
|
|
68
|
-
| small-success | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
69
|
-
| small-failure | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
70
|
-
| verification-output | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
71
|
-
| large-log | 1 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
72
|
-
| large-log-repeat | 1 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
73
|
-
| repeated-failure-a | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
74
|
-
| repeated-failure-b | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
75
|
-
| repeat-a | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
76
|
-
| repeat-b | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
77
|
-
| small-success | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
78
|
-
| small-failure | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
79
|
-
| verification-output | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
80
|
-
| large-log | 2 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
81
|
-
| large-log-repeat | 2 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
82
|
-
| repeated-failure-a | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
83
|
-
| repeated-failure-b | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
84
|
-
| repeat-a | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
85
|
-
| repeat-b | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
86
|
-
|
|
87
|
-
### Metadata-small / exact-large hybrid
|
|
88
|
-
|
|
89
|
-
Small non-sensitive outputs become metadata-only; exactness-sensitive or >= 8192 byte outputs remain exactly recoverable.
|
|
90
|
-
|
|
91
|
-
- Exactness-sensitive recovery: pass
|
|
92
|
-
- Metadata-only recovery labeled: yes
|
|
93
|
-
- Repeated outputs deduped: no
|
|
94
|
-
|
|
95
|
-
| Fixture | Iteration | Record | Recovery | Exact bytes | Notes |
|
|
96
|
-
| --- | ---: | --- | --- | ---: | --- |
|
|
97
|
-
| small-success | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
98
|
-
| small-failure | 1 | command/exact | exact | 104 | exact combined recovery passed |
|
|
99
|
-
| verification-output | 1 | command/exact | exact | 52 | exact combined recovery passed |
|
|
100
|
-
| large-log | 1 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
101
|
-
| large-log-repeat | 1 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
102
|
-
| repeated-failure-a | 1 | command/exact | exact | 113 | exact combined recovery passed |
|
|
103
|
-
| repeated-failure-b | 1 | command/exact | exact | 113 | exact combined recovery passed |
|
|
104
|
-
| repeat-a | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
105
|
-
| repeat-b | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
106
|
-
| small-success | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
107
|
-
| small-failure | 2 | command/exact | exact | 104 | exact combined recovery passed |
|
|
108
|
-
| verification-output | 2 | command/exact | exact | 52 | exact combined recovery passed |
|
|
109
|
-
| large-log | 2 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
110
|
-
| large-log-repeat | 2 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
111
|
-
| repeated-failure-a | 2 | command/exact | exact | 113 | exact combined recovery passed |
|
|
112
|
-
| repeated-failure-b | 2 | command/exact | exact | 113 | exact combined recovery passed |
|
|
113
|
-
| repeat-a | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
114
|
-
| repeat-b | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
115
|
-
|
|
116
|
-
### Duplicate output dedupe
|
|
117
|
-
|
|
118
|
-
First occurrence is stored exactly; exact duplicates become metadata-only records that point at the prior exact output.
|
|
119
|
-
|
|
120
|
-
- Exactness-sensitive recovery: pass
|
|
121
|
-
- Metadata-only recovery labeled: yes
|
|
122
|
-
- Repeated outputs deduped: yes
|
|
123
|
-
|
|
124
|
-
| Fixture | Iteration | Record | Recovery | Exact bytes | Notes |
|
|
125
|
-
| --- | ---: | --- | --- | ---: | --- |
|
|
126
|
-
| small-success | 1 | command/exact | exact | 3 | exact combined recovery passed |
|
|
127
|
-
| small-failure | 1 | command/exact | exact | 104 | exact combined recovery passed |
|
|
128
|
-
| verification-output | 1 | command/exact | exact | 52 | exact combined recovery passed |
|
|
129
|
-
| large-log | 1 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
130
|
-
| large-log-repeat | 1 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_a7c4a56fb1bc488dc03fa0ef |
|
|
131
|
-
| repeated-failure-a | 1 | command/exact | exact | 113 | exact combined recovery passed |
|
|
132
|
-
| repeated-failure-b | 1 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_8e9758900243b59ade59cc2b |
|
|
133
|
-
| repeat-a | 1 | command/exact | exact | 33 | exact combined recovery passed |
|
|
134
|
-
| repeat-b | 1 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_a29dfa4bd5a569d730e6cee3 |
|
|
135
|
-
| small-success | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_4e210a9b34da56ca40514bd6 |
|
|
136
|
-
| small-failure | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_a4991d68dddc508bd8043e65 |
|
|
137
|
-
| verification-output | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_57eddf9b12365d59cb7ba3ce |
|
|
138
|
-
| large-log | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_a7c4a56fb1bc488dc03fa0ef |
|
|
139
|
-
| large-log-repeat | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_a7c4a56fb1bc488dc03fa0ef |
|
|
140
|
-
| repeated-failure-a | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_8e9758900243b59ade59cc2b |
|
|
141
|
-
| repeated-failure-b | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_8e9758900243b59ade59cc2b |
|
|
142
|
-
| repeat-a | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_a29dfa4bd5a569d730e6cee3 |
|
|
143
|
-
| repeat-b | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_a29dfa4bd5a569d730e6cee3 |
|
|
144
|
-
|
|
145
|
-
### Hybrid exactness + duplicate dedupe
|
|
146
|
-
|
|
147
|
-
Exactness-sensitive or >= 8192 byte outputs stay exactly recoverable; exact duplicates of those outputs become metadata pointers; small non-sensitive outputs are metadata-only.
|
|
148
|
-
|
|
149
|
-
- Exactness-sensitive recovery: pass
|
|
150
|
-
- Metadata-only recovery labeled: yes
|
|
151
|
-
- Repeated outputs deduped: yes
|
|
152
|
-
|
|
153
|
-
| Fixture | Iteration | Record | Recovery | Exact bytes | Notes |
|
|
154
|
-
| --- | ---: | --- | --- | ---: | --- |
|
|
155
|
-
| small-success | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
156
|
-
| small-failure | 1 | command/exact | exact | 104 | exact combined recovery passed |
|
|
157
|
-
| verification-output | 1 | command/exact | exact | 52 | exact combined recovery passed |
|
|
158
|
-
| large-log | 1 | command/exact | exact | 30030 | exact combined recovery passed |
|
|
159
|
-
| large-log-repeat | 1 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_5153e748859b1faf49211433 |
|
|
160
|
-
| repeated-failure-a | 1 | command/exact | exact | 113 | exact combined recovery passed |
|
|
161
|
-
| repeated-failure-b | 1 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_78ba156d8ff23576c596ff12 |
|
|
162
|
-
| repeat-a | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
163
|
-
| repeat-b | 1 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
164
|
-
| small-success | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
165
|
-
| small-failure | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_97633d780c13e9c3385a6196 |
|
|
166
|
-
| verification-output | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_1e58e267e9ad6f288c56c3d7 |
|
|
167
|
-
| large-log | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_5153e748859b1faf49211433 |
|
|
168
|
-
| large-log-repeat | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_5153e748859b1faf49211433 |
|
|
169
|
-
| repeated-failure-a | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_78ba156d8ff23576c596ff12 |
|
|
170
|
-
| repeated-failure-b | 2 | metadata/metadata_only | duplicate-ref | 0 | metadata duplicate points to exact outputId=ffout_78ba156d8ff23576c596ff12 |
|
|
171
|
-
| repeat-a | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
172
|
-
| repeat-b | 2 | metadata/metadata_only | metadata-only | 0 | metadata-only record intentionally has no raw exact recovery |
|
|
173
|
-
|
|
174
|
-
## Decision Boundary
|
|
175
|
-
|
|
176
|
-
This benchmark intentionally stops before changing defaults. Any storage default change still needs a product/safety decision because metadata-only storage changes exact recovery semantics and privacy surface.
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Vault Index Storage Spike Report - Iteration 1
|
|
2
|
-
|
|
3
|
-
Date: 2026-06-24
|
|
4
|
-
|
|
5
|
-
## Scope
|
|
6
|
-
|
|
7
|
-
Slice 11/12 storage-interface and write-path spike for the Freeflow vault index. The benchmark checks that a fresh index starts empty, persisted appends become queryable incrementally through automatic write-through indexing, metadata-only records do not index raw content, and the selected storage engine stays hidden behind the vault-index interface.
|
|
8
|
-
|
|
9
|
-
## Command
|
|
10
|
-
|
|
11
|
-
```sh
|
|
12
|
-
npm run bench:router:vault-index
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Summary
|
|
16
|
-
|
|
17
|
-
- Fixtures per iteration: 3
|
|
18
|
-
- Iterations: 3
|
|
19
|
-
- Selected engine: local-json-sidecar
|
|
20
|
-
- Selected reason: Portable deterministic sidecar files satisfy automatic incremental write-through semantics without adding a native dependency.
|
|
21
|
-
- Local sidecar passed: yes
|
|
22
|
-
- Scanner baseline passed: yes
|
|
23
|
-
- SQLite FTS status: not-run
|
|
24
|
-
- Local append p50/p95: 1.34/3.31 ms
|
|
25
|
-
- Local query p50/p95: 0.34/5.16 ms
|
|
26
|
-
- Scan query p50/p95: 0.20/0.38 ms
|
|
27
|
-
- Local query result reduction: -8.32%
|
|
28
|
-
|
|
29
|
-
## Candidates
|
|
30
|
-
|
|
31
|
-
| candidate | status | adopted | append p50/p95 ms | query p50/p95 ms | raw/result bytes | reduction | checks | notes |
|
|
32
|
-
| --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- |
|
|
33
|
-
| local-json-sidecar | pass | yes | 1.34/3.31 | 0.34/5.16 | 15681/16986 | -8.32% | fresh index starts empty; each persisted append is queryable immediately; metadata-only raw content is not indexed; no native dependency | Selected for the Slice 11 interface and exercised through the Slice 12 write path because it is portable and dependency-free. |
|
|
34
|
-
| vault-session-scan-baseline | pass | no | - | 0.20/0.38 | - | - | finds fixture evidence by reading vault records directly | Baseline remains source-truth fallback but query cost grows with vaulted text. |
|
|
35
|
-
| sqlite-fts | not-run | no | - | - | - | - | not introduced during Slice 11 | Deferred: adding a native dependency or relying on experimental runtime SQLite needs explicit owner approval. |
|
|
36
|
-
|
|
37
|
-
## Decision
|
|
38
|
-
|
|
39
|
-
Use the deterministic local JSON sidecar behind the vault-index interface for the next slices. Do not adopt SQLite/FTS in this slice because introducing a native dependency or relying on experimental runtime SQLite needs separate owner approval. The vault remains source truth; the index is a rebuildable sidecar.
|