@hassangameryt/freeflow 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +1 -1
- package/.claude-plugin/marketplace.json +4 -4
- package/{plugins/freeflow/.claude-plugin → .claude-plugin}/plugin.json +5 -2
- package/{plugins/freeflow/.codex-plugin → .codex-plugin}/plugin.json +8 -9
- package/README.md +194 -127
- package/assets/feedback-loop.png +0 -0
- package/assets/freeflow-plugin-icon.png +0 -0
- package/assets/freeflow_workflow_map.png +0 -0
- package/assets/workflow.png +0 -0
- package/command-surface.json +129 -0
- package/hooks/freeflow-runtime-context.mjs +419 -0
- package/hooks/tests/check-runtime-context-hook.sh +223 -0
- package/package.json +41 -22
- package/pi-extension/dist/index.js +269 -0
- 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 +295 -0
- package/pi-extension/src/integrations/mcp-config.ts +32 -0
- package/pi-extension/src/output-router/host-producer-identification.ts +256 -0
- package/pi-extension/src/output-router/native-safety-net.ts +248 -0
- package/pi-extension/src/output-router/observed-tool-routing.ts +134 -0
- package/pi-extension/src/output-router/renderers.ts +1108 -0
- package/pi-extension/src/output-router/router-tools.ts +579 -0
- package/pi-extension/src/output-router/schemas.ts +387 -0
- package/pi-extension/src/output-router/status.ts +791 -0
- package/pi-extension/src/output-router/utils.ts +554 -0
- 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 +4018 -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/pi-extension/tsconfig.json +16 -0
- package/{plugins/freeflow/router/dist → router/dist/benchmarks}/benchmark-harness.d.ts +16 -13
- package/router/dist/benchmarks/benchmark-harness.js +92 -0
- package/router/dist/benchmarks/benchmarks.d.ts +109 -0
- package/router/dist/benchmarks/benchmarks.js +979 -0
- package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +95 -0
- package/router/dist/benchmarks/codex-qa-benchmarks.js +500 -0
- package/router/dist/benchmarks/command-benchmarks.d.ts +143 -0
- package/router/dist/benchmarks/command-benchmarks.js +698 -0
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +82 -0
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +773 -0
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +132 -0
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +1380 -0
- package/router/dist/benchmarks/context-saving-baseline.d.ts +60 -0
- package/router/dist/benchmarks/context-saving-baseline.js +470 -0
- package/router/dist/benchmarks/index-benchmarks.d.ts +103 -0
- package/router/dist/benchmarks/index-benchmarks.js +862 -0
- package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +101 -0
- package/router/dist/benchmarks/storage-policy-benchmarks.js +618 -0
- package/router/dist/benchmarks/vault-index-benchmarks.d.ts +56 -0
- package/router/dist/benchmarks/vault-index-benchmarks.js +322 -0
- package/router/dist/config/config.d.ts +103 -0
- package/router/dist/config/config.js +632 -0
- package/{plugins/freeflow/router/dist → router/dist/config}/router-contract.d.ts +2 -2
- package/router/dist/config/router-contract.js +54 -0
- package/{plugins/freeflow/router/dist → router/dist/config}/schema.d.ts +19 -10
- package/router/dist/config/schema.js +648 -0
- package/router/dist/config/types.d.ts +573 -0
- package/router/dist/config/types.js +41 -0
- package/router/dist/evidence/bounded-evidence.d.ts +40 -0
- package/router/dist/evidence/bounded-evidence.js +323 -0
- package/router/dist/evidence/evidence-range-selector.d.ts +24 -0
- package/router/dist/evidence/evidence-range-selector.js +232 -0
- package/router/dist/evidence/evidence-search.d.ts +27 -0
- package/router/dist/evidence/evidence-search.js +490 -0
- package/{plugins/freeflow/router/dist → router/dist/evidence}/evidence.d.ts +18 -18
- package/router/dist/evidence/evidence.js +200 -0
- package/router/dist/evidence/failure-contracts.d.ts +37 -0
- package/router/dist/evidence/failure-contracts.js +166 -0
- package/router/dist/evidence/line-ranges.d.ts +24 -0
- package/router/dist/evidence/line-ranges.js +22 -0
- package/router/dist/experiments/local-index.d.ts +64 -0
- package/router/dist/experiments/local-index.js +581 -0
- package/router/dist/index.d.ts +30 -0
- package/router/dist/index.js +32 -0
- 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 +132 -0
- package/router/dist/processing/engine.js +533 -0
- package/router/dist/processing/reducers.d.ts +280 -0
- package/router/dist/processing/reducers.js +1673 -0
- package/router/dist/processing/renderers.d.ts +31 -0
- package/router/dist/processing/renderers.js +195 -0
- package/router/dist/processing/scripts.d.ts +91 -0
- package/router/dist/processing/scripts.js +386 -0
- package/{plugins/freeflow/router/dist → router/dist/repo}/repo-traversal.d.ts +9 -9
- package/router/dist/repo/repo-traversal.js +245 -0
- package/router/dist/routing/observed-reducers.d.ts +41 -0
- package/router/dist/routing/observed-reducers.js +661 -0
- package/router/dist/routing/observed-routing.d.ts +26 -0
- package/router/dist/routing/observed-routing.js +378 -0
- package/router/dist/routing/parsers.d.ts +16 -0
- package/router/dist/routing/parsers.js +521 -0
- package/router/dist/routing/run-filters.d.ts +60 -0
- package/router/dist/routing/run-filters.js +238 -0
- package/router/dist/routing/run-reducers.d.ts +49 -0
- package/router/dist/routing/run-reducers.js +122 -0
- package/router/dist/sandbox/adapter-roots.d.ts +46 -0
- package/router/dist/sandbox/adapter-roots.js +66 -0
- package/router/dist/sandbox/eryx-python-adapter.d.ts +13 -0
- package/router/dist/sandbox/eryx-python-adapter.js +868 -0
- package/router/dist/sandbox/jq-wasm-adapter.d.ts +9 -0
- package/router/dist/sandbox/jq-wasm-adapter.js +429 -0
- package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +13 -0
- package/router/dist/sandbox/quickjs-wasi-adapter.js +384 -0
- package/router/dist/sandbox/script-sandbox.d.ts +134 -0
- package/router/dist/sandbox/script-sandbox.js +337 -0
- package/router/dist/setup/script-transform-adapters.d.ts +32 -0
- package/router/dist/setup/script-transform-adapters.js +278 -0
- package/router/dist/tools/batch.d.ts +33 -0
- package/router/dist/tools/batch.js +586 -0
- package/router/dist/tools/run.d.ts +62 -0
- package/router/dist/tools/run.js +1304 -0
- package/router/dist/tools/search.d.ts +66 -0
- package/router/dist/tools/search.js +1364 -0
- package/router/dist/transform/engine.d.ts +168 -0
- package/router/dist/transform/engine.js +2072 -0
- package/router/dist/vault/vault-index.d.ts +125 -0
- package/router/dist/vault/vault-index.js +416 -0
- package/router/dist/vault/vault.d.ts +138 -0
- package/router/dist/vault/vault.js +630 -0
- package/runtime/interaction-contract.md +16 -0
- package/skills/bypass/SKILL.md +82 -0
- package/skills/commit-work/SKILL.md +106 -0
- package/skills/commit-work/references/staging-decisions.md +73 -0
- package/skills/decision-gate/SKILL.md +48 -0
- package/skills/design-for-depth/SKILL.md +106 -0
- package/skills/design-for-depth/references/design-pressure-signals.md +314 -0
- package/skills/design-for-depth/references/interface-design-loop.md +156 -0
- package/skills/design-for-depth/references/software-design-philosophy.md +248 -0
- package/skills/diagnose-failure/SKILL.md +105 -0
- package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +36 -0
- package/skills/diagnose-failure/references/flaky-and-performance.md +43 -0
- package/skills/discuss/SKILL.md +121 -0
- package/skills/discuss/references/checkpoints.md +66 -0
- package/skills/evaluate-skill/SKILL.md +105 -0
- 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 +92 -0
- package/skills/handoff/references/templates.md +141 -0
- 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 +82 -0
- package/skills/output-router/SKILL.md +206 -0
- package/skills/output-router/references/safety-policy.md +40 -0
- package/skills/release-work/SKILL.md +118 -0
- package/skills/release-work/references/release-evidence.md +78 -0
- package/skills/review-artifact/SKILL.md +126 -0
- package/skills/review-artifact/references/reviewer-prompt.md +148 -0
- package/skills/review-work/SKILL.md +126 -0
- package/skills/review-work/references/reviewer-prompt.md +134 -0
- package/skills/review-work/references/security-risk-lens.md +67 -0
- package/skills/setup-freeflow/SKILL.md +98 -0
- package/skills/setup-freeflow/references/activation-contract.md +120 -0
- package/skills/setup-freeflow/references/host-setup.md +72 -0
- package/skills/setup-freeflow/references/output-router-setup.md +110 -0
- 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 +85 -0
- 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 +91 -0
- 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 +123 -0
- package/skills/write-plan/references/plan-shapes.md +156 -0
- package/skills/write-skill/SKILL.md +119 -0
- 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 +104 -0
- package/skills/write-spec/references/artifact-standards.md +86 -0
- package/skills/write-spec/references/decision-records.md +77 -0
- package/skills/write-spec/references/spec-shapes.md +128 -0
- package/plugins/freeflow/command-surface.json +0 -77
- package/plugins/freeflow/docs/README.md +0 -40
- package/plugins/freeflow/docs/adr/0001-three-modes.md +0 -27
- package/plugins/freeflow/docs/adr/0002-evals-before-hooks.md +0 -17
- package/plugins/freeflow/docs/adr/0003-release-boundary.md +0 -21
- package/plugins/freeflow/docs/adr/0004-research-replaces-shallow-discovery-skills.md +0 -26
- package/plugins/freeflow/docs/adr/README.md +0 -8
- package/plugins/freeflow/docs/architecture.md +0 -86
- package/plugins/freeflow/docs/output-router.md +0 -212
- package/plugins/freeflow/docs/release-evidence.md +0 -69
- package/plugins/freeflow/docs/skills.md +0 -43
- package/plugins/freeflow/docs/workflow.md +0 -57
- package/plugins/freeflow/hooks/freeflow-runtime-context.mjs +0 -257
- package/plugins/freeflow/pi-extension/index.js +0 -1176
- package/plugins/freeflow/router/dist/benchmark-harness.js +0 -92
- package/plugins/freeflow/router/dist/benchmarks.d.ts +0 -102
- package/plugins/freeflow/router/dist/benchmarks.js +0 -880
- package/plugins/freeflow/router/dist/bounded-evidence.d.ts +0 -40
- package/plugins/freeflow/router/dist/bounded-evidence.js +0 -310
- package/plugins/freeflow/router/dist/codex-qa-benchmarks.d.ts +0 -91
- package/plugins/freeflow/router/dist/codex-qa-benchmarks.js +0 -461
- package/plugins/freeflow/router/dist/command-benchmarks.d.ts +0 -128
- package/plugins/freeflow/router/dist/command-benchmarks.js +0 -652
- package/plugins/freeflow/router/dist/config.d.ts +0 -22
- package/plugins/freeflow/router/dist/config.js +0 -114
- package/plugins/freeflow/router/dist/evidence-range-selector.d.ts +0 -22
- package/plugins/freeflow/router/dist/evidence-range-selector.js +0 -180
- package/plugins/freeflow/router/dist/evidence-search.d.ts +0 -25
- package/plugins/freeflow/router/dist/evidence-search.js +0 -450
- package/plugins/freeflow/router/dist/evidence.js +0 -196
- package/plugins/freeflow/router/dist/experimental-local-index.d.ts +0 -1
- package/plugins/freeflow/router/dist/experimental-local-index.js +0 -1
- package/plugins/freeflow/router/dist/experiments/local-index.d.ts +0 -58
- package/plugins/freeflow/router/dist/experiments/local-index.js +0 -562
- package/plugins/freeflow/router/dist/index-benchmarks.d.ts +0 -84
- package/plugins/freeflow/router/dist/index-benchmarks.js +0 -458
- package/plugins/freeflow/router/dist/index.d.ts +0 -12
- package/plugins/freeflow/router/dist/index.js +0 -12
- package/plugins/freeflow/router/dist/line-ranges.d.ts +0 -22
- package/plugins/freeflow/router/dist/line-ranges.js +0 -22
- package/plugins/freeflow/router/dist/parsers.d.ts +0 -16
- package/plugins/freeflow/router/dist/parsers.js +0 -473
- package/plugins/freeflow/router/dist/repo-traversal.js +0 -242
- package/plugins/freeflow/router/dist/retrieve.d.ts +0 -33
- package/plugins/freeflow/router/dist/retrieve.js +0 -855
- package/plugins/freeflow/router/dist/router-contract.js +0 -54
- package/plugins/freeflow/router/dist/run.d.ts +0 -26
- package/plugins/freeflow/router/dist/run.js +0 -356
- package/plugins/freeflow/router/dist/schema.js +0 -354
- package/plugins/freeflow/router/dist/types.d.ts +0 -234
- package/plugins/freeflow/router/dist/types.js +0 -9
- package/plugins/freeflow/router/dist/vault.d.ts +0 -80
- package/plugins/freeflow/router/dist/vault.js +0 -484
- package/plugins/freeflow/skills/bypass/SKILL.md +0 -68
- package/plugins/freeflow/skills/commit-work/SKILL.md +0 -98
- package/plugins/freeflow/skills/commit-work/references/staging-decisions.md +0 -51
- package/plugins/freeflow/skills/diagnose-failure/SKILL.md +0 -95
- package/plugins/freeflow/skills/diagnose-failure/references/feedback-loop-catalog.md +0 -25
- package/plugins/freeflow/skills/diagnose-failure/references/flaky-and-performance.md +0 -31
- package/plugins/freeflow/skills/evaluate-skill/SKILL.md +0 -96
- package/plugins/freeflow/skills/evaluate-skill/references/eval-patterns.md +0 -41
- package/plugins/freeflow/skills/evaluate-skill/references/grading-priority.md +0 -33
- package/plugins/freeflow/skills/execute-plan/SKILL.md +0 -132
- package/plugins/freeflow/skills/execute-plan/references/execution-map.md +0 -122
- package/plugins/freeflow/skills/handoff/SKILL.md +0 -66
- package/plugins/freeflow/skills/handoff/references/templates.md +0 -64
- package/plugins/freeflow/skills/interview-gate/SKILL.md +0 -90
- package/plugins/freeflow/skills/mode-contract/SKILL.md +0 -79
- package/plugins/freeflow/skills/output-router/SKILL.md +0 -69
- package/plugins/freeflow/skills/output-router/references/safety-policy.md +0 -33
- package/plugins/freeflow/skills/research/ARTIFACT-DESTINATIONS.md +0 -58
- package/plugins/freeflow/skills/research/CHECKPOINTS.md +0 -74
- package/plugins/freeflow/skills/research/LANGUAGE.md +0 -61
- package/plugins/freeflow/skills/research/SKILL.md +0 -128
- package/plugins/freeflow/skills/review-artifact/SKILL.md +0 -115
- package/plugins/freeflow/skills/review-artifact/references/reviewer-prompt.md +0 -56
- package/plugins/freeflow/skills/review-work/SKILL.md +0 -96
- package/plugins/freeflow/skills/review-work/references/reviewer-prompt.md +0 -97
- package/plugins/freeflow/skills/setup-freeflow/SKILL.md +0 -94
- package/plugins/freeflow/skills/setup-freeflow/references/activation-contract.md +0 -99
- package/plugins/freeflow/skills/setup-freeflow/references/host-setup.md +0 -35
- package/plugins/freeflow/skills/setup-freeflow/references/output-router-setup.md +0 -52
- package/plugins/freeflow/skills/verify-work/SKILL.md +0 -62
- package/plugins/freeflow/skills/workflow/SKILL.md +0 -95
- package/plugins/freeflow/skills/workflow/references/workflow-map.md +0 -102
- package/plugins/freeflow/skills/write-plan/SKILL.md +0 -88
- package/plugins/freeflow/skills/write-plan/references/plan-shapes.md +0 -70
- package/plugins/freeflow/skills/write-skill/SKILL.md +0 -88
- package/plugins/freeflow/skills/write-spec/SKILL.md +0 -90
- package/plugins/freeflow/skills/write-spec/references/artifact-standards.md +0 -67
- package/plugins/freeflow/skills/write-spec/references/spec-shapes.md +0 -69
- /package/{plugins/freeflow/assets → assets}/freeflow-plugin-icon-transparent.png +0 -0
- /package/{plugins/freeflow/hooks → hooks}/hooks.json +0 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: output-router
|
|
3
|
+
description: Use after the Workflow, Decision Gate, or Discuss route is clear when choosing between native tools and Freeflow routed tools, retrieving repo/local/vault evidence, transforming bounded evidence, handling unknown-size or broad output, running likely-large/noisy commands, recovering vaulted output, tuning outputRouter/observedRouting/scriptTransform after setup, or handling optional native read/bash safety-net routing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Output Router
|
|
7
|
+
|
|
8
|
+
Choose how evidence moves into context.
|
|
9
|
+
|
|
10
|
+
Freeflow tools are the safe first choice for unknown-size, exploratory, repo-wide, generated/log-adjacent, structured, or likely noisy output, including broad `rg`/`find`/`git`/help/docs scans. Native tools stay direct for known-small, exact, intentionally raw, or mutating work. A post-hoc cap such as `head`, `sed -n`, `tail`, or `wc` does not make a broad producer known-small.
|
|
11
|
+
|
|
12
|
+
Output Router does not classify the task. Workflow, Decision Gate, or Discuss decides whether to answer, ask, explore, plan, or stop. Output Router starts after that route is clear.
|
|
13
|
+
|
|
14
|
+
## First Decision
|
|
15
|
+
|
|
16
|
+
Ask what kind of data you need:
|
|
17
|
+
|
|
18
|
+
- Existing repo, explicit local, or vault data: use `freeflow_search`.
|
|
19
|
+
- New command or script-produced output: use `freeflow_run`.
|
|
20
|
+
- Several independent Freeflow operations: use `freeflow_batch`.
|
|
21
|
+
- Config/status/vault/script-adapter facts: use `freeflow_status`.
|
|
22
|
+
- Enabled MCP/web/fetch/code-search output: call the host tool directly; Pi observed routing runs after the host result when configured.
|
|
23
|
+
- Known whole file, intentionally exact shell behavior, cmux/Pi control probes, explicit fallback after a routed-source limitation, or edits: use native `read`, `bash`, `edit`, or `write`.
|
|
24
|
+
|
|
25
|
+
When unsure how much output will return, use Freeflow first. Bound the producer before using native tools; do not rely on trimming the output after a broad command runs.
|
|
26
|
+
|
|
27
|
+
## `freeflow_search`: Existing Data
|
|
28
|
+
|
|
29
|
+
Use `freeflow_search` for repo files, explicit external local files, and vaulted output that already exists.
|
|
30
|
+
|
|
31
|
+
Actions:
|
|
32
|
+
|
|
33
|
+
- `locate`: find likely paths/output ids first. Use before reading when you only need candidates.
|
|
34
|
+
- `query`: return the best focused evidence packets for a search question.
|
|
35
|
+
- `get`: user gave exact-ish text/code/snippet or asks “where is this?” Find the best match and return source coordinates plus matched content.
|
|
36
|
+
- `retrieve`: you already know the path/outputId and line range. Return those exact lines. Do not use this as search.
|
|
37
|
+
- `expand`: widen a previous evidence packet.
|
|
38
|
+
- `explain`: explain a previous routed decision or vault output/recoverability.
|
|
39
|
+
- `transform`: compute facts or deterministic subsets from repo/local/vault/file/output data.
|
|
40
|
+
|
|
41
|
+
Use `source.kind="repo"` for the current checkout. Use `source.kind="local"` for external local docs/files with an explicit absolute `root` and optional relative `path`; do not put local roots in shared config. Use `source.kind="vault"` for previous Freeflow outputs.
|
|
42
|
+
|
|
43
|
+
Vault search patterns:
|
|
44
|
+
|
|
45
|
+
- Unknown output id: `source.kind="vault"` without `outputId`, plus `query` and optional `filters`.
|
|
46
|
+
- Known output id and unknown line: `action="query"` or `get` with `source.outputId`.
|
|
47
|
+
- Known output id and known line range: `action="retrieve"` with `lineRange`.
|
|
48
|
+
- Metadata-only result: use `action="explain"`; do not claim raw recovery.
|
|
49
|
+
|
|
50
|
+
Use `preserve="full"` only when exact fidelity matters. It still means exact-under-caps, not unlimited context injection.
|
|
51
|
+
|
|
52
|
+
## `freeflow_search action=transform`: Processing Existing Data
|
|
53
|
+
|
|
54
|
+
Use transform when raw data is too large/structured and you need computed facts.
|
|
55
|
+
|
|
56
|
+
Good transform cases:
|
|
57
|
+
|
|
58
|
+
- logs: status counts, error rates, slow examples,
|
|
59
|
+
- JSON/CSV: counts, groupings, top values, extracted fields,
|
|
60
|
+
- test/build/typecheck output already in the vault,
|
|
61
|
+
- MCP/web/fetch/code-search payloads already routed into the vault,
|
|
62
|
+
- deterministic regex filtering, match counts, grouping, dedupe, topN, URL/citation extraction, line/size stats.
|
|
63
|
+
|
|
64
|
+
Prefer deterministic operations when enough:
|
|
65
|
+
|
|
66
|
+
- `regexFilter`, `countMatches`, `jsonExtract`, `groupByRegex`, `dedupe`, `topN`, `extractUrls`, `extractCitations`, `lineStats`, `sizeStats`.
|
|
67
|
+
|
|
68
|
+
Use scripts only when deterministic operations cannot express the fact:
|
|
69
|
+
|
|
70
|
+
- `operation.kind="script"` runs a sandboxed transform over vault sources.
|
|
71
|
+
- `script` without `operation` runs the processing-engine script path over repo/local/vault sources.
|
|
72
|
+
- Sandboxed scripts require `scriptTransform.enabled=true` and a proof-backed adapter.
|
|
73
|
+
- Raw script code is not persisted; metadata stores hashes/labels/limits.
|
|
74
|
+
- No sandboxed script path may silently fall back to host shell execution.
|
|
75
|
+
|
|
76
|
+
Unsafe unsandboxed processing is local-only, explicit per call, and only through the processing script policy. It must say `unsafe/unsandboxed`. Never put that opt-in in shared config.
|
|
77
|
+
|
|
78
|
+
## `freeflow_run`: New Output
|
|
79
|
+
|
|
80
|
+
Use `freeflow_run` when the producer creates new output and routed evidence is enough.
|
|
81
|
+
|
|
82
|
+
Base producers are mutually exclusive:
|
|
83
|
+
|
|
84
|
+
- `command`: shell command through the host-approved runner.
|
|
85
|
+
- `script`: sandboxed code-as-producer with no repo/home/env/network/vault access.
|
|
86
|
+
|
|
87
|
+
Use `command` for:
|
|
88
|
+
|
|
89
|
+
- tests, builds, lint, typecheck, CI-like checks,
|
|
90
|
+
- broad shell search with unknown output size,
|
|
91
|
+
- commands likely to print logs, JSON, status, or diagnostics,
|
|
92
|
+
- commands whose exact raw output may need recovery.
|
|
93
|
+
|
|
94
|
+
Use `script` for:
|
|
95
|
+
|
|
96
|
+
- generating data with code when no repo/home/env/network access is needed,
|
|
97
|
+
- safe code-as-producer execution through the same sandbox engine as transforms,
|
|
98
|
+
- stdout/stderr capture that should route like command output.
|
|
99
|
+
|
|
100
|
+
Do not use `freeflow_run script` when the code needs repo files, environment variables, network, package imports, or host filesystem access. Use a host command intentionally, or transform an explicitly captured source.
|
|
101
|
+
|
|
102
|
+
Run modifiers:
|
|
103
|
+
|
|
104
|
+
- `goal`: tell the router why the run exists, e.g. `verification`, `diagnosis`, `build`, `log analysis`.
|
|
105
|
+
- `filters`: deterministic line filtering over captured stdout/stderr/combined.
|
|
106
|
+
- `scriptFilter`: sandboxed script over already captured stdout/stderr/combined. It never reruns the base producer.
|
|
107
|
+
- `preserve="full"`: request exact output under caps with vault recovery over cap.
|
|
108
|
+
|
|
109
|
+
Run storage:
|
|
110
|
+
|
|
111
|
+
- Default `hybrid-dedupe` stores exact output when exactness-sensitive and metadata-only for small non-sensitive successes.
|
|
112
|
+
- Failures, verification/test/build/typecheck/diagnosis output, `preserve="full"`, filters, script filters, reducers, script producers, and large/noisy output are exactness-sensitive.
|
|
113
|
+
- Exact duplicates may store current metadata pointing to a previous exact `outputId`.
|
|
114
|
+
- Plain metadata-only records get rerun guidance, not exact recovery claims.
|
|
115
|
+
|
|
116
|
+
## `freeflow_batch`: Independent Freeflow Work
|
|
117
|
+
|
|
118
|
+
Use `freeflow_batch` when several Freeflow-owned `run` or `search` steps can happen independently.
|
|
119
|
+
|
|
120
|
+
Good batch cases:
|
|
121
|
+
|
|
122
|
+
- run several bounded searches in parallel,
|
|
123
|
+
- run independent checks and ask `queries[]` to extract facts from child evidence,
|
|
124
|
+
- gather multiple repo/local/vault facts without injecting every child result.
|
|
125
|
+
|
|
126
|
+
Do not use batch for:
|
|
127
|
+
|
|
128
|
+
- sequenced workflows,
|
|
129
|
+
- arbitrary external tool orchestration,
|
|
130
|
+
- mutating work,
|
|
131
|
+
- steps where one child needs another child’s output.
|
|
132
|
+
|
|
133
|
+
Child outputs remain in `details.result.steps`; exact child run output remains recoverable by child `outputId`.
|
|
134
|
+
|
|
135
|
+
## Native Tools
|
|
136
|
+
|
|
137
|
+
Use native tools when direct behavior is the point:
|
|
138
|
+
|
|
139
|
+
- `read`: known whole file or exact direct file content is intended.
|
|
140
|
+
- `bash`: expected-small exact shell behavior, host access, cmux/Pi control probes, or bounded producer behavior is intentionally needed.
|
|
141
|
+
- `edit` / `write`: mutations.
|
|
142
|
+
|
|
143
|
+
Native `bash`/`read` remain valid for known-small exact checks, cmux/Pi control probes, exact file reads, or explicit fallback after a routed-source limitation; name the limitation and keep the fallback narrow.
|
|
144
|
+
|
|
145
|
+
Do not run broad native commands just to see what comes back. `head`, `sed -n`, `tail`, `wc`, or similar output caps bound visible text, not producer scope or relevance. Likely-large native commands include repo-wide `rg`, `grep -R`, `find`, package scans, generated-artifact scans, docs/help scans, logs, broad `git diff/log`, full tests/builds/lints/typechecks, and one-off scripts with unknown output size.
|
|
146
|
+
|
|
147
|
+
If native read/bash safety net is enabled, large/noisy native output may be replaced with labeled Freeflow-routed output. It must include an `outputId` and recovery instructions. If safety-net routing fails, native output passes through with a warning.
|
|
148
|
+
|
|
149
|
+
## Observed Routing
|
|
150
|
+
|
|
151
|
+
For enabled Pi MCP/web/fetch/code-search producers, call the host tool directly. Freeflow observes the completed result after host execution.
|
|
152
|
+
|
|
153
|
+
Observed routing:
|
|
154
|
+
|
|
155
|
+
- is off by default,
|
|
156
|
+
- is explicit per producer/server,
|
|
157
|
+
- does not grant permissions or block host tools,
|
|
158
|
+
- can persist exact output, metadata-only, or nothing depending on config,
|
|
159
|
+
- fails open with original host output if routing fails.
|
|
160
|
+
|
|
161
|
+
Mutating MCP/tool calls still require normal workflow/interview judgment before the host call. Observed routing is not permission approval.
|
|
162
|
+
|
|
163
|
+
## Hard Rules
|
|
164
|
+
|
|
165
|
+
- Do not pretend routed output is native output.
|
|
166
|
+
- Do not silently shorten native output.
|
|
167
|
+
- Capture raw output before transforming it.
|
|
168
|
+
- Keep raw source recovery separate from transformed/reduced output recovery.
|
|
169
|
+
- Treat `preserve="full"` as exact fidelity under caps, not unlimited context injection.
|
|
170
|
+
- Preserve exact failure and verification evidence lines.
|
|
171
|
+
- Keep `toolStatus`, `execution.status`, and `routing.status` separate.
|
|
172
|
+
- Metadata-only records must never claim exact raw recovery.
|
|
173
|
+
- Freeflow mode changes guidance strength only. It must not enable `postToolRouting`.
|
|
174
|
+
- Do not write removed `capture` or `providers` config.
|
|
175
|
+
- Do not offer `redacted`; it is future-only.
|
|
176
|
+
|
|
177
|
+
## Recovery Pattern
|
|
178
|
+
|
|
179
|
+
For routed run/native/observed/transform output, recover exact text with:
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"action": "retrieve",
|
|
184
|
+
"source": { "kind": "vault", "outputId": "ffout_...", "stream": "stdout|stderr|combined|raw" },
|
|
185
|
+
"lineRange": { "start": 1, "end": 20 },
|
|
186
|
+
"preserve": "full"
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
When line numbers are unknown, use `query` or `get` first. Use `expand` when a returned evidence packet is too narrow. Use `explain` when recoverability is unclear.
|
|
191
|
+
|
|
192
|
+
## Config
|
|
193
|
+
|
|
194
|
+
Use `freeflow_status` to inspect effective config, vault writability/index state, script adapters, observed routing, and migration recommendations.
|
|
195
|
+
|
|
196
|
+
Use `../setup-freeflow/SKILL.md` for installation, invalid-config repair, or the initial optional-capabilities branch. After valid setup, Output Router owns explicit operational tuning requested through its capability surface.
|
|
197
|
+
|
|
198
|
+
Persist operational config only after an explicit tuning request or a previously accepted setup branch:
|
|
199
|
+
|
|
200
|
+
- `outputRouter`: `enabled`, `profile`, `postToolRouting`, `storagePolicy`, thresholds, vault root/retention, generated paths, noisy command hints.
|
|
201
|
+
- `outputRouter.observedRouting`: explicit MCP servers and web/fetch/codeSearch producer persistence.
|
|
202
|
+
- `outputRouter.scriptTransform`: enabled flag, languages, sandbox/network/limits/raw-script persistence.
|
|
203
|
+
|
|
204
|
+
Minimal setup stays only `defaultMode`. Missing optional sections mean built-in defaults.
|
|
205
|
+
|
|
206
|
+
Read [the safety policy](references/safety-policy.md) before changing routing policy, reviewing router behavior, or handling exactness-sensitive output.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Output Router Safety Policy
|
|
2
|
+
|
|
3
|
+
Reference-only policy for exactness-sensitive output routing. Pi runtime context does not load this whole file by default; the active `output-router` skill carries the compact rules. Read this file before changing routing policy, reviewing router behavior, or handling a new exactness-sensitive output class.
|
|
4
|
+
|
|
5
|
+
## Main Rule
|
|
6
|
+
|
|
7
|
+
Do not silently summarize, compress, or replace exactness-sensitive output.
|
|
8
|
+
|
|
9
|
+
Exactness-sensitive output includes:
|
|
10
|
+
|
|
11
|
+
- user-requested exact/full output,
|
|
12
|
+
- small native outputs where direct output is expected,
|
|
13
|
+
- verification output needed for completion claims,
|
|
14
|
+
- failure evidence needed for diagnosis,
|
|
15
|
+
- source-truth conflict evidence,
|
|
16
|
+
- security, privacy, billing, data-loss, permissions, or public API evidence,
|
|
17
|
+
- failed, timed-out, or cancelled run output,
|
|
18
|
+
- script-producer output,
|
|
19
|
+
- filtered, script-filtered, reduced, or transformed output where raw source matters,
|
|
20
|
+
- anything marked `preserve: full`.
|
|
21
|
+
|
|
22
|
+
## Required Behavior
|
|
23
|
+
|
|
24
|
+
- Capture raw evidence before transformation whenever output is routed.
|
|
25
|
+
- Label every transformed native or observed result as Freeflow-routed output.
|
|
26
|
+
- Include an `outputId` and exact recovery instructions when exact recovery exists.
|
|
27
|
+
- Preserve exact failure and verification evidence lines; do not paraphrase them.
|
|
28
|
+
- Pass small native outputs through unchanged unless explicit config and thresholds route them.
|
|
29
|
+
- For huge exactness-sensitive output, use vaulting and exact chunk retrieval instead of lossy summarization.
|
|
30
|
+
- If post-tool native safety-net routing fails, fail open: return the native output unchanged when possible and include a warning.
|
|
31
|
+
- Keep raw source recovery separate from transformed/reduced output recovery.
|
|
32
|
+
- Metadata-only records must never claim exact raw recovery. Duplicate metadata may point to a prior exact `outputId`; plain metadata-only records get rerun or explanation guidance.
|
|
33
|
+
|
|
34
|
+
## Non-Goals
|
|
35
|
+
|
|
36
|
+
- This policy does not enable post-tool routing by itself.
|
|
37
|
+
- This policy does not authorize model-assisted summarization inside the router runtime.
|
|
38
|
+
- This policy does not authorize unsandboxed script execution.
|
|
39
|
+
- This policy does not require Pi runtime context to inject the full reference every turn.
|
|
40
|
+
- This policy does not replace host permissions, sandboxing, approvals, or workflow/decision gates.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-work
|
|
3
|
+
description: Use when preparing, publishing, or verifying a versioned software release.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Release Work
|
|
7
|
+
|
|
8
|
+
Prepare or publish a traceable versioned artifact whose source, version, contents, and destination identity agree.
|
|
9
|
+
|
|
10
|
+
A commit is not a release. A tag does not prove which artifact was built. A successful local build does not prove registry contents. A published artifact is not a production deployment.
|
|
11
|
+
|
|
12
|
+
## Establish Authority And Source
|
|
13
|
+
|
|
14
|
+
Loading this skill, preparing release options, or approving a general implementation Plan does not authorize a version change, remote tag, release record, registry publication, deprecation, yank, or replacement. Execute only release stages explicitly requested or separately approved. Before editing, read the repository's release policy, versioning scheme, package metadata, changelog convention, release automation, supported branches, signing or provenance requirements, and latest published versions.
|
|
15
|
+
|
|
16
|
+
Use [Decision Gate](../decision-gate/SKILL.md) when the route depends on an unresolved choice about:
|
|
17
|
+
|
|
18
|
+
- whether to release and which channel or audience receives it;
|
|
19
|
+
- compatibility or breaking-change classification;
|
|
20
|
+
- version when policy and evidence do not decide it;
|
|
21
|
+
- credentials, registry, signing, provenance, or remote-tag behavior;
|
|
22
|
+
- yanking, deprecating, replacing, or republishing an artifact;
|
|
23
|
+
- release branches, history rewriting, or recovery from partial publication.
|
|
24
|
+
|
|
25
|
+
Do not impose semantic versioning when the project uses another scheme. Read [release evidence](references/release-evidence.md) when version, source, artifact, tag, publication, or recovery identity matters.
|
|
26
|
+
|
|
27
|
+
## Define The Release Contract
|
|
28
|
+
|
|
29
|
+
Before changing release state, establish:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
Release target and audience:
|
|
33
|
+
Source commit / branch:
|
|
34
|
+
Version and compatibility basis:
|
|
35
|
+
Artifacts and supported platforms:
|
|
36
|
+
Release notes / migration guidance:
|
|
37
|
+
Required checks and selected reviews:
|
|
38
|
+
Signing / provenance / checksums:
|
|
39
|
+
Publication destination and channel:
|
|
40
|
+
Failure and recovery behavior:
|
|
41
|
+
Post-publication verification:
|
|
42
|
+
Approved preparation and publication stages:
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Classify consumer-observable impact rather than diff size. A small change can be breaking; a large internal refactor may preserve compatibility.
|
|
46
|
+
|
|
47
|
+
When consumers must move before a contract can be removed, read [Migration Work](../migration-work/SKILL.md). An additive replacement release may precede migration; a breaking removal release must wait for the accepted migration and removal proof.
|
|
48
|
+
|
|
49
|
+
## Prepare The Release
|
|
50
|
+
|
|
51
|
+
For approved preparation work:
|
|
52
|
+
|
|
53
|
+
- confirm the intended source is a coherent, freshly verified checkpoint and any selected review is resolved;
|
|
54
|
+
- reconcile version declarations, lockfiles, generated metadata, and release notes through repository-supported tooling;
|
|
55
|
+
- write release notes for consumers: behavior, compatibility, migration, security impact, and known limitations—not a raw commit dump;
|
|
56
|
+
- run the canonical build or package process from the intended source state;
|
|
57
|
+
- inspect the exact artifacts that would be published;
|
|
58
|
+
- keep credentials and signing material out of prompts, logs, diffs, and artifacts.
|
|
59
|
+
|
|
60
|
+
Do not hand-edit generated artifacts or duplicate version truth when the repository has a canonical generator. Return required branch, commit, public-documentation, or migration work to [Workflow](../workflow/SKILL.md) unless it is included in the approved release scope.
|
|
61
|
+
|
|
62
|
+
## Preflight The Exact Release
|
|
63
|
+
|
|
64
|
+
Before any irreversible remote action, verify:
|
|
65
|
+
|
|
66
|
+
- source commit, branch, and working-tree expectations;
|
|
67
|
+
- version is valid, unused, and consistent with repository policy;
|
|
68
|
+
- required tests, builds, package or install checks, and compatibility checks;
|
|
69
|
+
- artifact contents, entry points, names, sizes, checksums, licenses, and provenance;
|
|
70
|
+
- release notes and migration guidance match observable consumer impact;
|
|
71
|
+
- tag, registry, channel, and release destination identity;
|
|
72
|
+
- credentials and permissions work without exposing secrets;
|
|
73
|
+
- retry behavior cannot create conflicting tags or duplicate releases.
|
|
74
|
+
|
|
75
|
+
Use [Verify Work](../verify-work/SKILL.md) to state what each check proves. A dry run proves only the boundaries it exercises; name signing, registry, propagation, or publication behavior that remains unverified.
|
|
76
|
+
|
|
77
|
+
## Publish Only The Approved Stage
|
|
78
|
+
|
|
79
|
+
Create remote tags, release records, or registry publications only when explicitly requested or approved for the inspected release contract.
|
|
80
|
+
|
|
81
|
+
Use the repository's canonical order. Stop when source, version, tag, artifact, signing mode, channel, or destination identity diverges.
|
|
82
|
+
|
|
83
|
+
Do not silently:
|
|
84
|
+
|
|
85
|
+
- overwrite an existing version;
|
|
86
|
+
- force-move a release tag;
|
|
87
|
+
- publish from a dirty or different source state;
|
|
88
|
+
- substitute a registry, channel, artifact, or signing mode;
|
|
89
|
+
- retry an ambiguous publication without inspecting remote state.
|
|
90
|
+
|
|
91
|
+
If publication partially fails or acknowledgement is lost, identify which external effects committed before choosing retry, repair, deprecation, replacement, or stop. Do not assume a network error means nothing was published.
|
|
92
|
+
|
|
93
|
+
## Verify From The Consumer Boundary
|
|
94
|
+
|
|
95
|
+
When publication is in scope, verify the actual public artifact when possible:
|
|
96
|
+
|
|
97
|
+
- tag resolves to the intended commit;
|
|
98
|
+
- published version, channel, and destinations are correct;
|
|
99
|
+
- checksums, signatures, provenance, and contents match the inspected artifact;
|
|
100
|
+
- a clean install, download, or launch path works for supported targets;
|
|
101
|
+
- release notes and migration links resolve;
|
|
102
|
+
- no unexpected artifact, credential, local configuration, or private file was published.
|
|
103
|
+
|
|
104
|
+
Do not call the release complete because the publish command exited successfully. Unavailable propagation or consumer evidence leaves the corresponding claim unverified.
|
|
105
|
+
|
|
106
|
+
## Report Completion Precisely
|
|
107
|
+
|
|
108
|
+
Report:
|
|
109
|
+
|
|
110
|
+
- approved release stage and status;
|
|
111
|
+
- version, source commit, tag, channel, and destinations;
|
|
112
|
+
- compatibility basis and migration guidance;
|
|
113
|
+
- checks, artifact identity, and selected-review status;
|
|
114
|
+
- publication and consumer-side verification;
|
|
115
|
+
- partial failures, recovery actions, and residual risk;
|
|
116
|
+
- any deferred commit, migration, launch, or documentation work.
|
|
117
|
+
|
|
118
|
+
A prepared release is not published. A published release is not deployed. Use [Launch Work](../launch-work/SKILL.md) only when production deployment or rollout is separately requested or approved.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Release Evidence
|
|
2
|
+
|
|
3
|
+
Read this when version, source, artifact, tag, publication, or recovery identity matters.
|
|
4
|
+
|
|
5
|
+
## Version Basis
|
|
6
|
+
|
|
7
|
+
Use the repository's declared scheme. For semantic versioning, classify consumer-observable impact:
|
|
8
|
+
|
|
9
|
+
- **Major:** supported consumers must change or accepted behavior is removed/incompatible.
|
|
10
|
+
- **Minor:** backward-compatible capability is added.
|
|
11
|
+
- **Patch:** backward-compatible defect correction.
|
|
12
|
+
|
|
13
|
+
Prerelease channels, date versions, train versions, and application builds may use different policy. Do not impose SemVer universally.
|
|
14
|
+
|
|
15
|
+
When compatibility is uncertain, inspect supported consumers and ask rather than selecting the smallest bump.
|
|
16
|
+
|
|
17
|
+
## Identity Chain
|
|
18
|
+
|
|
19
|
+
A trustworthy release can connect:
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
source commit
|
|
23
|
+
-> freshly verified release state
|
|
24
|
+
-> version metadata
|
|
25
|
+
-> build invocation and environment
|
|
26
|
+
-> artifact digest / signature / provenance
|
|
27
|
+
-> immutable tag or release record
|
|
28
|
+
-> registry or distribution entry
|
|
29
|
+
-> consumer-side install evidence
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Name missing links instead of implying reproducibility.
|
|
33
|
+
|
|
34
|
+
## Release Notes
|
|
35
|
+
|
|
36
|
+
Write for consumers:
|
|
37
|
+
|
|
38
|
+
- added or changed behavior;
|
|
39
|
+
- fixed user-visible defects;
|
|
40
|
+
- deprecated and removed contracts;
|
|
41
|
+
- security impact without unsafe disclosure;
|
|
42
|
+
- migration and compatibility requirements;
|
|
43
|
+
- known limitations and unsupported targets.
|
|
44
|
+
|
|
45
|
+
Commit history can support notes but does not replace curation.
|
|
46
|
+
|
|
47
|
+
## Artifact Inspection
|
|
48
|
+
|
|
49
|
+
Check as relevant:
|
|
50
|
+
|
|
51
|
+
- included and excluded files;
|
|
52
|
+
- executable entry points and permissions;
|
|
53
|
+
- generated code and source maps;
|
|
54
|
+
- dependency and lockfile state;
|
|
55
|
+
- licenses and notices;
|
|
56
|
+
- platform/architecture variants;
|
|
57
|
+
- debug, test, local config, credentials, and private files;
|
|
58
|
+
- deterministic digest or signed provenance.
|
|
59
|
+
|
|
60
|
+
Use the package manager or build system's dry-run/list command when available.
|
|
61
|
+
|
|
62
|
+
## Publication Failure Contract
|
|
63
|
+
|
|
64
|
+
Before publication, know:
|
|
65
|
+
|
|
66
|
+
- which step first creates irreversible remote state;
|
|
67
|
+
- whether a version/tag can be retried idempotently;
|
|
68
|
+
- how to detect a committed but unacknowledged publish;
|
|
69
|
+
- whether repair, deprecation, yank, or replacement is supported;
|
|
70
|
+
- who owns consumer communication.
|
|
71
|
+
|
|
72
|
+
Network failure after a remote commit is ambiguous. Inspect remote state before retrying.
|
|
73
|
+
|
|
74
|
+
## Consumer Verification
|
|
75
|
+
|
|
76
|
+
Prefer a clean environment that does not reuse the local checkout or cache unexpectedly.
|
|
77
|
+
|
|
78
|
+
Verify the actual public artifact by version or digest. A successful local build cannot prove registry contents, install metadata, signatures, or distribution propagation.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-artifact
|
|
3
|
+
description: Use when reviewing a Working Record, spec, PRD, issue, API contract, technical design, migration contract, plan, decision record, ADR, handoff, or other durable artifact for fitness to guide its intended use.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review Artifact
|
|
7
|
+
|
|
8
|
+
Judge whether an artifact is aligned, sufficient, and fit to guide its intended use.
|
|
9
|
+
|
|
10
|
+
## Choose The Review Role
|
|
11
|
+
|
|
12
|
+
Choose the role before reviewing:
|
|
13
|
+
|
|
14
|
+
- **Self-review:** you produced the artifact. Inspect it silently using the relevant boundary and lenses below. Correct clear local issues within existing authority. Create no formal review items, judgment, number, or cycle. Return unresolved material issues to [Workflow](../workflow/SKILL.md).
|
|
15
|
+
- **Independent review:** you did not produce the reviewed state. Inspect and report without editing. Use the formal item, judgment, and report method below. The receiving active agent adjudicates and routes the result.
|
|
16
|
+
|
|
17
|
+
Reading this skill does not create independence. If you produced the artifact, do not present your own judgment as independent review. Read [the reviewer prompt](references/reviewer-prompt.md) when preparing or performing a separately selected independent review.
|
|
18
|
+
|
|
19
|
+
## Establish The Boundary
|
|
20
|
+
|
|
21
|
+
Understand:
|
|
22
|
+
|
|
23
|
+
- artifact type, current state, and intended use;
|
|
24
|
+
- accepted outcome, requirements, and non-goals;
|
|
25
|
+
- owner decisions and unresolved questions;
|
|
26
|
+
- relevant code, tests, policies, ADRs, and established behavior;
|
|
27
|
+
- upstream and downstream artifacts;
|
|
28
|
+
- evidence gaps and prior review when applicable.
|
|
29
|
+
|
|
30
|
+
Review the complete current artifact, not only its summary, change description, or author's reasoning. Review upstream authority before dependent artifacts. If an upstream issue invalidates downstream assumptions, mark affected material contingent instead of generating exhaustive findings against an unresolved basis.
|
|
31
|
+
|
|
32
|
+
When reviewing a Working Record, read [Track Work](../track-work/SKILL.md), which owns its format and lifecycle.
|
|
33
|
+
|
|
34
|
+
## Judge The Artifact By Its Job
|
|
35
|
+
|
|
36
|
+
- **Working Record:** living task memory with accurate current state, recoverable slices and decisions, compact evidence pointers, and one next useful action.
|
|
37
|
+
- **Spec or durable content artifact:** accepted content, behavior, boundaries, evidence, and uncertainty needed for its stated use.
|
|
38
|
+
- **Plan:** an inspectable ordered strategy with scope, dependencies, assumptions, checks, and stop conditions.
|
|
39
|
+
- **Decision record or ADR:** decision, owner, alternatives, rationale, consequences, and revisit or supersession conditions.
|
|
40
|
+
- **Handoff:** a point-in-time continuation package that preserves what its recipient needs without replacing live task memory.
|
|
41
|
+
- **Other artifact:** its stated purpose without taking over another artifact's job.
|
|
42
|
+
|
|
43
|
+
## Review Proportionately
|
|
44
|
+
|
|
45
|
+
Apply only lenses that can materially change fitness:
|
|
46
|
+
|
|
47
|
+
- **Source alignment:** agrees with accepted requirements, owner decisions, and live facts.
|
|
48
|
+
- **Fitness and sufficiency:** contains enough for its intended use without pretending every future question is settled.
|
|
49
|
+
- **Decision clarity:** required, tentative, open, deferred, and superseded information cannot be confused.
|
|
50
|
+
- **Evidence and acceptance:** load-bearing claims and acceptance conditions have suitable supporting or falsifying mechanisms.
|
|
51
|
+
- **Behavior and failure contract:** consequential states, forbidden outcomes, observers, and recovery are explicit where required.
|
|
52
|
+
- **Dependency integrity:** upstream and downstream artifacts remain consistent; provisional work is identified honestly.
|
|
53
|
+
- **Scope and minimality:** avoids speculative design, unnecessary process, and hypothetical completeness.
|
|
54
|
+
- **Clarity and continuity:** a future reader can use it without transcript memory or volatile copied context.
|
|
55
|
+
|
|
56
|
+
A pass is valid. Do not invent items, require exhaustive edge cases, report wording or filename preferences, reopen intentional deferrals, or demand evidence needed only for a later boundary.
|
|
57
|
+
|
|
58
|
+
## Classify Independent Review Items
|
|
59
|
+
|
|
60
|
+
- **Blocking Issue:** a supported defect, inconsistency, omission, or risk that must be resolved before the artifact guides its intended use.
|
|
61
|
+
- **Non-blocking Issue:** a real issue that can be deferred safely for this boundary.
|
|
62
|
+
- **Question:** material intent, requirements, or an owner decision is unclear.
|
|
63
|
+
- **Needs evidence:** a load-bearing claim or condition cannot be established.
|
|
64
|
+
- **Improvement:** a materially useful enhancement not required by this boundary. It does not affect judgment or authorize revision.
|
|
65
|
+
|
|
66
|
+
A Blocking Issue must name the exact location, violated source truth or artifact responsibility, evidence, concrete consequence for intended use, and smallest safe revision or owning activity to re-enter.
|
|
67
|
+
|
|
68
|
+
1. **Blocking:** one or more Blocking Issues exist.
|
|
69
|
+
2. **Inconclusive:** no Blocking Issue exists, but a material Question or Needs evidence item prevents judgment.
|
|
70
|
+
3. **Non-blocking:** only Non-blocking Issues remain.
|
|
71
|
+
4. **Pass:** no Issues or material Unresolved items remain. Improvements may still be reported.
|
|
72
|
+
|
|
73
|
+
Pass, Non-blocking, Inconclusive, and Blocking are all valid review exits. A review ends with its report; it does not remain active until the artifact passes.
|
|
74
|
+
|
|
75
|
+
## Adjudicate And Route
|
|
76
|
+
|
|
77
|
+
After independent review, the receiving active agent adjudicates each item against the artifact, source truth, and evidence:
|
|
78
|
+
|
|
79
|
+
- **Accepted:** supported and applicable.
|
|
80
|
+
- **Rejected:** unsupported, stale, resolved, duplicate, preference-only, outside the artifact's job, or based on a source misread.
|
|
81
|
+
- **Open:** a question or evidence gap prevents acceptance or rejection.
|
|
82
|
+
|
|
83
|
+
Confirm whether each accepted Issue is Blocking or Non-blocking, then derive the adjudicated judgment. Do not accept the reviewer's overall judgment separately.
|
|
84
|
+
|
|
85
|
+
Route from the adjudicated result:
|
|
86
|
+
|
|
87
|
+
- **Pass:** use the artifact for its intended purpose.
|
|
88
|
+
- **Non-blocking:** use it with explicit deferrals.
|
|
89
|
+
- **Inconclusive:** gather the missing evidence or decision.
|
|
90
|
+
- **Blocking:** do not use the artifact across the blocked boundary; re-enter its narrowest owner, defer, or stop.
|
|
91
|
+
|
|
92
|
+
Review findings are evidence, not commands. They do not authorize revision. Accepted revisions leave review and return to the artifact's owning skill; they may remain in the same [Track Work](../track-work/SKILL.md) slice while its intended result stays coherent.
|
|
93
|
+
|
|
94
|
+
When revision authority is not already explicit, ask once for either:
|
|
95
|
+
|
|
96
|
+
- the accepted revisions plus one warranted focused follow-up review; or
|
|
97
|
+
- the accepted revisions alone when direct source evidence can settle the changed boundary.
|
|
98
|
+
|
|
99
|
+
Then wait for the user's response. Do not revise or dispatch a follow-up from the request, and do not ask again when existing authority already covers the bounded revision or review.
|
|
100
|
+
|
|
101
|
+
Run a follow-up only when the changed boundary or affected dependencies still need independent judgment and that dispatch is authorized. Do not revise source truth, accepted intent, or owner decisions merely to satisfy a reviewer or obtain Pass.
|
|
102
|
+
|
|
103
|
+
## Limit The Review Cycle
|
|
104
|
+
|
|
105
|
+
For one independently reviewed artifact state and intended-use boundary:
|
|
106
|
+
|
|
107
|
+
1. Review 1 is the normal broad review.
|
|
108
|
+
2. Review 2, when needed and authorized, focuses on accepted revisions, affected dependencies, and remaining risk.
|
|
109
|
+
3. Review 3 is exceptional, authorized separately, and final for that cycle.
|
|
110
|
+
|
|
111
|
+
The budget is a cap, not dispatch authority. Do not request Review 4. At the cap, adjudicate and return control to Workflow; the artifact may be used, remain blocked, re-enter its owner, defer, or stop.
|
|
112
|
+
|
|
113
|
+
After Review 2 is adjudicated Blocking, stop before proposing another revision or Review 3. Classify its relationship to the prior revision:
|
|
114
|
+
|
|
115
|
+
- If the blocker repeats, extends, invalidates, or exposes another consequence of the prior revision, or its cause remains unsupported, read [Diagnose Failure](../diagnose-failure/SKILL.md) and diagnose the shared cause before another revision.
|
|
116
|
+
- If it is an independent clear local defect with a supported cause, return directly to the artifact's owner and state why diagnosis is unnecessary.
|
|
117
|
+
|
|
118
|
+
A reviewer judgment alone does not trigger diagnosis; active-agent adjudication and evidence do. Review 3 is final judgment after the cause and revision boundary are understood, not a third attempt to discover the cause through revisions. Workflow may later establish a new cycle only for a materially new artifact state and intended-use boundary; local edits, a different reviewer, or renamed scope do not reset it.
|
|
119
|
+
|
|
120
|
+
## Report
|
|
121
|
+
|
|
122
|
+
For self-review, report no formal review result. Correct clear local issues and surface only unresolved material issues that change fitness or route.
|
|
123
|
+
|
|
124
|
+
For independent review, use the structured output in [the reviewer prompt](references/reviewer-prompt.md). The receiving agent reports the reviewer and adjudicated judgments, each material item's Accepted, Rejected, or Open outcome and reason, affected dependencies, remaining open items, and authorized or proposed next route.
|
|
125
|
+
|
|
126
|
+
Omit empty groups. Support material judgments and adjudication with source or evidence rather than confidence.
|