@kontourai/flow-agents 0.1.1
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/.githooks/pre-push +11 -0
- package/.github/workflows/ci.yml +210 -0
- package/.github/workflows/docs-pages.yml +52 -0
- package/.github/workflows/publish-npm.yml +104 -0
- package/AGENTS.md +26 -0
- package/CHANGELOG.md +66 -0
- package/CODE_OF_CONDUCT.md +25 -0
- package/CONTEXT.md +300 -0
- package/CONTRIBUTING.md +44 -0
- package/LICENSE +201 -0
- package/README.md +129 -0
- package/SECURITY.md +33 -0
- package/agent-cards/dev.json +19 -0
- package/agents/dev.json +127 -0
- package/agents/tool-code-reviewer.json +61 -0
- package/agents/tool-dependencies-updater.json +118 -0
- package/agents/tool-explore-config.json +92 -0
- package/agents/tool-explore-deps.json +92 -0
- package/agents/tool-explore-entry.json +92 -0
- package/agents/tool-explore-patterns.json +92 -0
- package/agents/tool-explore-structure.json +92 -0
- package/agents/tool-explore-tests.json +92 -0
- package/agents/tool-planner.json +57 -0
- package/agents/tool-playwright.json +145 -0
- package/agents/tool-security-reviewer.json +56 -0
- package/agents/tool-verifier.json +61 -0
- package/agents/tool-worker.json +58 -0
- package/build/src/cli/console-learning-projection.js +123 -0
- package/build/src/cli/docs-preview.js +39 -0
- package/build/src/cli/effective-backlog-settings.js +102 -0
- package/build/src/cli/export-bookmarks.js +38 -0
- package/build/src/cli/fixture-retirement-audit.js +140 -0
- package/build/src/cli/flow-kit.js +138 -0
- package/build/src/cli/import-bookmarks.js +50 -0
- package/build/src/cli/init.js +239 -0
- package/build/src/cli/instinct-cli.js +93 -0
- package/build/src/cli/promote-workflow-artifact.js +63 -0
- package/build/src/cli/publish-change-helper.js +154 -0
- package/build/src/cli/pull-work-provider.js +469 -0
- package/build/src/cli/runtime-adapter.js +23 -0
- package/build/src/cli/telemetry-doctor.js +221 -0
- package/build/src/cli/usage-feedback.js +443 -0
- package/build/src/cli/validate-hook-influence.js +152 -0
- package/build/src/cli/validate-source-tree.js +31 -0
- package/build/src/cli/validate-workflow-artifacts.js +486 -0
- package/build/src/cli/veritas-governance.js +262 -0
- package/build/src/cli/workflow-artifact-cleanup-audit.js +272 -0
- package/build/src/cli/workflow-sidecar.js +816 -0
- package/build/src/cli.js +89 -0
- package/build/src/flow-kit/validate.js +75 -0
- package/build/src/lib/args.js +45 -0
- package/build/src/lib/fs.js +62 -0
- package/build/src/lib/workflow-learning-projection.js +334 -0
- package/build/src/runtime-adapters.js +146 -0
- package/build/src/tools/build-universal-bundles.js +397 -0
- package/build/src/tools/common.js +56 -0
- package/build/src/tools/filter-installed-packs.js +132 -0
- package/build/src/tools/generate-context-map.js +198 -0
- package/build/src/tools/validate-package.js +64 -0
- package/build/src/tools/validate-source-tree.js +622 -0
- package/console.telemetry.json +176 -0
- package/context/base-rules.md +17 -0
- package/context/code-review-standards.md +62 -0
- package/context/coding-standards.md +42 -0
- package/context/common/orchestrators.md +12 -0
- package/context/common/subagents.md +28 -0
- package/context/contracts/artifact-contract.md +182 -0
- package/context/contracts/builder-kit-workflow-state-contract.md +319 -0
- package/context/contracts/delivery-contract.md +69 -0
- package/context/contracts/execution-contract.md +53 -0
- package/context/contracts/governance-adapter-contract.md +67 -0
- package/context/contracts/planning-contract.md +85 -0
- package/context/contracts/review-contract.md +104 -0
- package/context/contracts/sandbox-policy.md +52 -0
- package/context/contracts/verification-contract.md +134 -0
- package/context/contracts/work-item-contract.md +215 -0
- package/context/deferred/demo-mode.md +33 -0
- package/context/deferred/languages/go.md +31 -0
- package/context/deferred/languages/python.md +31 -0
- package/context/deferred/languages/typescript.md +34 -0
- package/context/deferred/parallelization.md +35 -0
- package/context/deferred/worktree-isolation.md +24 -0
- package/context/development-workflow.md +50 -0
- package/context/scripts/context-budget/budget-scan.sh +166 -0
- package/context/scripts/detect-tools.sh +3 -0
- package/context/scripts/discover-agents.sh +28 -0
- package/context/scripts/git-status.sh +49 -0
- package/context/scripts/hooks/config-protection.js +79 -0
- package/context/scripts/hooks/desktop-notify.sh +39 -0
- package/context/scripts/hooks/governance-audit.sh +135 -0
- package/context/scripts/hooks/lib/audit-transport.sh +40 -0
- package/context/scripts/hooks/lib/hook-flags.js +49 -0
- package/context/scripts/hooks/lib/patterns.sh +57 -0
- package/context/scripts/hooks/lib/resolve-formatter.js +80 -0
- package/context/scripts/hooks/post-edit-accumulator.js +66 -0
- package/context/scripts/hooks/pre-commit-quality.js +194 -0
- package/context/scripts/hooks/quality-gate.js +93 -0
- package/context/scripts/hooks/report-only-guard.js +21 -0
- package/context/scripts/hooks/run-hook.js +136 -0
- package/context/scripts/hooks/stop-format-typecheck.js +141 -0
- package/context/scripts/hooks/stop-goal-fit.js +337 -0
- package/context/scripts/hooks/workflow-steering.js +250 -0
- package/context/scripts/telemetry/console-presets.sh +14 -0
- package/context/scripts/telemetry/install-console-config.sh +214 -0
- package/context/scripts/telemetry/lib/config.sh +85 -0
- package/context/scripts/telemetry/lib/enrich.sh +115 -0
- package/context/scripts/telemetry/lib/redact.sh +22 -0
- package/context/scripts/telemetry/lib/session.sh +63 -0
- package/context/scripts/telemetry/lib/transport.sh +183 -0
- package/context/scripts/telemetry/lib/usage.sh +29 -0
- package/context/scripts/telemetry/sync-agents.sh +173 -0
- package/context/scripts/telemetry/telemetry.conf +23 -0
- package/context/scripts/telemetry/telemetry.sh +387 -0
- package/context/scripts/validate-package.sh +89 -0
- package/context/settings/backlog-provider-settings.json +54 -0
- package/context/templates/core/identity.md +26 -0
- package/context/templates/core/user.md +15 -0
- package/docs/_config.yml +15 -0
- package/docs/_layouts/default.html +87 -0
- package/docs/adr/0001-flow-agents-consumes-flow.md +77 -0
- package/docs/adr/0002-flow-kits-as-extension-unit.md +13 -0
- package/docs/adr/0003-flow-agents-coordinates-kits-and-adapters.md +13 -0
- package/docs/adr/0004-gates-expect-surface-claims.md +15 -0
- package/docs/adr/0005-kubernetes-inspired-resource-contracts.md +48 -0
- package/docs/adr/0006-typescript-first-source-policy.md +98 -0
- package/docs/agent-system-guidebook.md +391 -0
- package/docs/agent-usage-feedback-loop.md +351 -0
- package/docs/assets/favicon.svg +13 -0
- package/docs/assets/og-image.png +0 -0
- package/docs/assets/site.css +774 -0
- package/docs/assets/site.js +139 -0
- package/docs/configurable-workflow-routing.md +174 -0
- package/docs/context-map.md +145 -0
- package/docs/developer-architecture.md +145 -0
- package/docs/developer-hook-setup.md +61 -0
- package/docs/fixture-ownership.md +44 -0
- package/docs/flow-kit-repository-contract.md +180 -0
- package/docs/index.md +129 -0
- package/docs/kontour-resource-contract.md +358 -0
- package/docs/migrations.md +64 -0
- package/docs/north-star.md +322 -0
- package/docs/operating-layers.md +110 -0
- package/docs/repository-structure.md +132 -0
- package/docs/sandbox-policy.md +56 -0
- package/docs/skills-map.md +203 -0
- package/docs/standards-register.md +96 -0
- package/docs/veritas-integration.md +165 -0
- package/docs/work-item-adapters.md +72 -0
- package/docs/workflow-artifact-lifecycle.md +141 -0
- package/docs/workflow-eval-strategy.md +295 -0
- package/docs/workflow-shared-contracts.md +51 -0
- package/docs/workflow-usage-guide.md +443 -0
- package/evals/ARCHITECTURE.md +143 -0
- package/evals/CONVENTIONS.md +58 -0
- package/evals/README.md +128 -0
- package/evals/acceptance/run.sh +29 -0
- package/evals/acceptance/test_claude_harness.sh +242 -0
- package/evals/acceptance/test_codex_harness.sh +108 -0
- package/evals/acceptance/test_kiro_harness.sh +128 -0
- package/evals/cases/dev/404.html +97 -0
- package/evals/cases/dev/code-review.yaml +44 -0
- package/evals/cases/dev/dashboard.html +300 -0
- package/evals/cases/dev/deliver.yaml +66 -0
- package/evals/cases/dev/dependency-update.yaml +16 -0
- package/evals/cases/dev/explore.yaml +20 -0
- package/evals/cases/dev/index.html +370 -0
- package/evals/cases/dev/package-lock.json +28 -0
- package/evals/cases/dev/package.json +16 -0
- package/evals/cases/dev/plan-work.yaml +20 -0
- package/evals/cases/dev/promptfooconfig.yaml +666 -0
- package/evals/cases/dev/search-first.yaml +20 -0
- package/evals/cases/dev/tdd-workflow.yaml +48 -0
- package/evals/cases/dev/verify-work.yaml +44 -0
- package/evals/cases/dev/workflow.yaml +34 -0
- package/evals/ci/run-baseline.sh +283 -0
- package/evals/fixtures/backlog-provider-settings/global-default.json +44 -0
- package/evals/fixtures/backlog-provider-settings/project-override.json +53 -0
- package/evals/fixtures/builder-kit-workflow-state/baseline-freshness-resolution-hint.json +139 -0
- package/evals/fixtures/builder-kit-workflow-state/direct-primitive-stop.json +59 -0
- package/evals/fixtures/builder-kit-workflow-state/empty-board-route-shape.json +55 -0
- package/evals/fixtures/builder-kit-workflow-state/happy-path.json +71 -0
- package/evals/fixtures/builder-kit-workflow-state/mid-work-resume.json +80 -0
- package/evals/fixtures/builder-kit-workflow-state/missing-prestep-recovery.json +65 -0
- package/evals/fixtures/builder-kit-workflow-state/product-build-chaining.json +60 -0
- package/evals/fixtures/builder-kit-workflow-state/stale-continuation-requires-new-probe.json +57 -0
- package/evals/fixtures/console-learning-projection/artifacts/console-learning-correction/learning.json +50 -0
- package/evals/fixtures/console-learning-projection/artifacts/console-learning-open-route/learning.json +41 -0
- package/evals/fixtures/flow-kit-repository/invalid-absolute-path/kit.json +8 -0
- package/evals/fixtures/flow-kit-repository/invalid-asset-section/flows/review.flow.json +6 -0
- package/evals/fixtures/flow-kit-repository/invalid-asset-section/kit.json +11 -0
- package/evals/fixtures/flow-kit-repository/invalid-duplicate-flow/flows/review.flow.json +6 -0
- package/evals/fixtures/flow-kit-repository/invalid-duplicate-flow/kit.json +9 -0
- package/evals/fixtures/flow-kit-repository/invalid-id/flows/review.flow.json +6 -0
- package/evals/fixtures/flow-kit-repository/invalid-id/kit.json +8 -0
- package/evals/fixtures/flow-kit-repository/invalid-malformed-json/kit.json +8 -0
- package/evals/fixtures/flow-kit-repository/invalid-missing-flow/kit.json +8 -0
- package/evals/fixtures/flow-kit-repository/invalid-missing-id/flows/review.flow.json +6 -0
- package/evals/fixtures/flow-kit-repository/invalid-missing-id/kit.json +7 -0
- package/evals/fixtures/flow-kit-repository/invalid-missing-schema-version/flows/review.flow.json +6 -0
- package/evals/fixtures/flow-kit-repository/invalid-missing-schema-version/kit.json +7 -0
- package/evals/fixtures/flow-kit-repository/invalid-name/flows/review.flow.json +6 -0
- package/evals/fixtures/flow-kit-repository/invalid-name/kit.json +8 -0
- package/evals/fixtures/flow-kit-repository/invalid-schema-version/flows/review.flow.json +6 -0
- package/evals/fixtures/flow-kit-repository/invalid-schema-version/kit.json +8 -0
- package/evals/fixtures/flow-kit-repository/invalid-traversal/kit.json +8 -0
- package/evals/fixtures/flow-kit-repository/mixed-runtime-kit/adapters/example.json +3 -0
- package/evals/fixtures/flow-kit-repository/mixed-runtime-kit/assets/example.txt +1 -0
- package/evals/fixtures/flow-kit-repository/mixed-runtime-kit/docs/README.md +3 -0
- package/evals/fixtures/flow-kit-repository/mixed-runtime-kit/flows/runtime.flow.json +26 -0
- package/evals/fixtures/flow-kit-repository/mixed-runtime-kit/kit-evals/example.json +3 -0
- package/evals/fixtures/flow-kit-repository/mixed-runtime-kit/kit-skills/mixed/SKILL.md +3 -0
- package/evals/fixtures/flow-kit-repository/mixed-runtime-kit/kit.json +44 -0
- package/evals/fixtures/flow-kit-repository/valid-local-kit/docs/README.md +3 -0
- package/evals/fixtures/flow-kit-repository/valid-local-kit/flows/review.flow.json +26 -0
- package/evals/fixtures/flow-kit-repository/valid-local-kit/kit.json +20 -0
- package/evals/fixtures/hook-influence/cases.json +336 -0
- package/evals/fixtures/pull-work-provider/github-issues.json +170 -0
- package/evals/fixtures/pull-work-wip-shepherding/global-wip-informs.json +43 -0
- package/evals/fixtures/pull-work-wip-shepherding/personal-wip-blocks.json +42 -0
- package/evals/fixtures/surface-trust/accepted-claim-trust-report.json +31 -0
- package/evals/fixtures/surface-trust/artifact-absent.json +19 -0
- package/evals/fixtures/surface-trust/integrity-mismatch-trust-report.json +32 -0
- package/evals/fixtures/surface-trust/missing-authority-trust-report.json +27 -0
- package/evals/fixtures/surface-trust/provider-absent.json +19 -0
- package/evals/fixtures/surface-trust/rejected-claim-trust-report.json +30 -0
- package/evals/fixtures/surface-trust/stale-claim-trust-snapshot.json +31 -0
- package/evals/fixtures/usage-feedback/sample-full.jsonl +11 -0
- package/evals/fixtures/usage-feedback/sample-outcomes.jsonl +1 -0
- package/evals/fixtures/veritas-governance-adapter/fake-veritas-pass.sh +18 -0
- package/evals/fixtures/veritas-governance-adapter/fake-veritas-secret-fail.sh +10 -0
- package/evals/fixtures/veritas-governance-adapter/fake-veritas-unconfigured.sh +4 -0
- package/evals/integration/test_bundle_install.sh +541 -0
- package/evals/integration/test_console_learning_projection.sh +192 -0
- package/evals/integration/test_context_map.sh +65 -0
- package/evals/integration/test_effective_backlog_settings.sh +58 -0
- package/evals/integration/test_fixture_retirement_audit.sh +58 -0
- package/evals/integration/test_flow_agents_statusline.sh +93 -0
- package/evals/integration/test_flow_kit_repository.sh +90 -0
- package/evals/integration/test_goal_fit_hook.sh +482 -0
- package/evals/integration/test_hook_category_behaviors.sh +190 -0
- package/evals/integration/test_hook_influence_cases.sh +69 -0
- package/evals/integration/test_local_flow_kit_install.sh +145 -0
- package/evals/integration/test_publish_change_helper.sh +176 -0
- package/evals/integration/test_pull_work_provider.sh +140 -0
- package/evals/integration/test_runtime_adapter_activation.sh +106 -0
- package/evals/integration/test_telemetry.sh +485 -0
- package/evals/integration/test_telemetry_doctor.sh +193 -0
- package/evals/integration/test_usage_feedback_dashboard.sh +169 -0
- package/evals/integration/test_usage_feedback_global.sh +117 -0
- package/evals/integration/test_usage_feedback_import.sh +227 -0
- package/evals/integration/test_usage_feedback_outcomes.sh +165 -0
- package/evals/integration/test_usage_feedback_report.sh +263 -0
- package/evals/integration/test_veritas_governance_adapter.sh +235 -0
- package/evals/integration/test_workflow_artifact_cleanup_audit.sh +287 -0
- package/evals/integration/test_workflow_artifacts.sh +1247 -0
- package/evals/integration/test_workflow_sidecar_writer.sh +2112 -0
- package/evals/integration/test_workflow_steering_hook.sh +337 -0
- package/evals/lib/assertions/delegated-to.js +40 -0
- package/evals/lib/assertions/max-tool-calls.js +15 -0
- package/evals/lib/assertions/no-write-tools.js +27 -0
- package/evals/lib/assertions/pass-at-k.js +39 -0
- package/evals/lib/assertions/telemetry-utils.js +105 -0
- package/evals/lib/assertions/tool-called.js +39 -0
- package/evals/lib/assertions/verify-after-fix.js +61 -0
- package/evals/lib/claude-judge.sh +40 -0
- package/evals/lib/claude-provider.sh +74 -0
- package/evals/lib/codex-judge.sh +39 -0
- package/evals/lib/codex-provider.sh +81 -0
- package/evals/lib/eval-dev.sh +5 -0
- package/evals/lib/eval-judge.sh +22 -0
- package/evals/lib/eval-provider.sh +26 -0
- package/evals/lib/eval-report.sh +73 -0
- package/evals/lib/kiro-dev.sh +4 -0
- package/evals/lib/kiro-judge.sh +17 -0
- package/evals/lib/kiro-provider.sh +62 -0
- package/evals/lib/node.sh +111 -0
- package/evals/promptfooconfig.yaml +70 -0
- package/evals/run.sh +309 -0
- package/evals/static/test_evidence_refs.sh +141 -0
- package/evals/static/test_package.sh +407 -0
- package/evals/static/test_repo_hooks.sh +68 -0
- package/evals/static/test_universal_bundles.sh +274 -0
- package/evals/static/test_workflow_skills.sh +1207 -0
- package/install.sh +64 -0
- package/integrations/veritas/flow-agents.adapter.json +138 -0
- package/integrations/veritas/flow-agents.authority-settings.json +26 -0
- package/integrations/veritas/flow-agents.repo-standards.json +82 -0
- package/kits/builder/flows/build.flow.json +218 -0
- package/kits/builder/flows/shape.flow.json +127 -0
- package/kits/builder/kit.json +19 -0
- package/kits/catalog.json +11 -0
- package/package.json +130 -0
- package/packaging/README.md +60 -0
- package/packaging/manifest.json +173 -0
- package/packaging/packs.json +69 -0
- package/powers/dependency-checker/POWER.md +20 -0
- package/powers/dependency-checker/mcp.json +20 -0
- package/powers/playwright/POWER.md +25 -0
- package/powers/playwright/mcp.json +12 -0
- package/prompts/code-audit.md +123 -0
- package/prompts/kcommit.md +88 -0
- package/schemas/backlog-provider-settings.schema.json +138 -0
- package/schemas/workflow-acceptance.schema.json +216 -0
- package/schemas/workflow-critique.schema.json +113 -0
- package/schemas/workflow-evidence.schema.json +357 -0
- package/schemas/workflow-handoff.schema.json +52 -0
- package/schemas/workflow-learning.schema.json +223 -0
- package/schemas/workflow-release.schema.json +172 -0
- package/schemas/workflow-state.schema.json +80 -0
- package/scripts/README.md +111 -0
- package/scripts/build-universal-bundles.js +3 -0
- package/scripts/check-content-boundary.cjs +99 -0
- package/scripts/context-budget/budget-scan.sh +166 -0
- package/scripts/detect-tools.sh +3 -0
- package/scripts/discover-agents.sh +28 -0
- package/scripts/effective-backlog-settings.js +2 -0
- package/scripts/filter-installed-packs.js +2 -0
- package/scripts/flow-kit.js +2 -0
- package/scripts/generate-context-map.js +2 -0
- package/scripts/git-status.sh +49 -0
- package/scripts/hooks/claude-hook-adapter.js +174 -0
- package/scripts/hooks/claude-telemetry-hook.js +115 -0
- package/scripts/hooks/codex-hook-adapter.js +176 -0
- package/scripts/hooks/codex-telemetry-hook.js +95 -0
- package/scripts/hooks/config-protection.js +79 -0
- package/scripts/hooks/desktop-notify.sh +39 -0
- package/scripts/hooks/governance-audit.sh +135 -0
- package/scripts/hooks/lib/audit-transport.sh +40 -0
- package/scripts/hooks/lib/hook-flags.js +49 -0
- package/scripts/hooks/lib/patterns.sh +57 -0
- package/scripts/hooks/lib/resolve-formatter.js +80 -0
- package/scripts/hooks/post-edit-accumulator.js +66 -0
- package/scripts/hooks/pre-commit-quality.js +194 -0
- package/scripts/hooks/quality-gate.js +93 -0
- package/scripts/hooks/report-only-guard.js +21 -0
- package/scripts/hooks/run-hook.js +136 -0
- package/scripts/hooks/stop-format-typecheck.js +141 -0
- package/scripts/hooks/stop-goal-fit.js +337 -0
- package/scripts/hooks/workflow-steering.js +250 -0
- package/scripts/install-codex-home.sh +106 -0
- package/scripts/package.json +3 -0
- package/scripts/promote-workflow-artifact.js +2 -0
- package/scripts/publish-change-helper.js +2 -0
- package/scripts/pull-work-provider.js +2 -0
- package/scripts/setup-repo-hooks.sh +8 -0
- package/scripts/statusline/flow-agents-statusline.js +157 -0
- package/scripts/telemetry/console-presets.sh +14 -0
- package/scripts/telemetry/install-console-config.sh +214 -0
- package/scripts/telemetry/lib/config.sh +85 -0
- package/scripts/telemetry/lib/enrich.sh +115 -0
- package/scripts/telemetry/lib/redact.sh +22 -0
- package/scripts/telemetry/lib/session.sh +63 -0
- package/scripts/telemetry/lib/transport.sh +183 -0
- package/scripts/telemetry/lib/usage.sh +29 -0
- package/scripts/telemetry/sync-agents.sh +173 -0
- package/scripts/telemetry/telemetry.conf +23 -0
- package/scripts/telemetry/telemetry.sh +387 -0
- package/scripts/usage-feedback.js +2 -0
- package/scripts/validate-hook-influence-cases.js +2 -0
- package/scripts/validate-package.sh +89 -0
- package/scripts/validate-source-tree.js +9 -0
- package/skills/agentic-engineering/SKILL.md +62 -0
- package/skills/browser-test/SKILL.md +51 -0
- package/skills/builder-shape/SKILL.md +76 -0
- package/skills/context-budget/SKILL.md +40 -0
- package/skills/deliver/SKILL.md +241 -0
- package/skills/dependency-update/SKILL.md +68 -0
- package/skills/design-probe/SKILL.md +107 -0
- package/skills/eval-rebuild/SKILL.md +39 -0
- package/skills/evidence-gate/SKILL.md +186 -0
- package/skills/execute-plan/SKILL.md +110 -0
- package/skills/explore/SKILL.md +137 -0
- package/skills/feedback-loop/SKILL.md +87 -0
- package/skills/fix-bug/SKILL.md +133 -0
- package/skills/frontend-design/SKILL.md +80 -0
- package/skills/github-cli/SKILL.md +63 -0
- package/skills/idea-to-backlog/SKILL.md +267 -0
- package/skills/knowledge-capture/SKILL.md +55 -0
- package/skills/learning-review/SKILL.md +115 -0
- package/skills/pickup-probe/SKILL.md +114 -0
- package/skills/plan-work/SKILL.md +176 -0
- package/skills/pull-work/SKILL.md +309 -0
- package/skills/release-readiness/SKILL.md +121 -0
- package/skills/review-work/SKILL.md +161 -0
- package/skills/search-first/SKILL.md +66 -0
- package/skills/tdd-workflow/SKILL.md +140 -0
- package/skills/verify-work/SKILL.md +109 -0
- package/src/cli/console-learning-projection.ts +140 -0
- package/src/cli/effective-backlog-settings.ts +99 -0
- package/src/cli/fixture-retirement-audit.ts +154 -0
- package/src/cli/flow-kit.ts +139 -0
- package/src/cli/init.ts +248 -0
- package/src/cli/promote-workflow-artifact.ts +64 -0
- package/src/cli/publish-change-helper.ts +143 -0
- package/src/cli/pull-work-provider.ts +481 -0
- package/src/cli/runtime-adapter.ts +24 -0
- package/src/cli/telemetry-doctor.ts +243 -0
- package/src/cli/usage-feedback.ts +418 -0
- package/src/cli/validate-hook-influence.ts +119 -0
- package/src/cli/validate-source-tree.ts +30 -0
- package/src/cli/validate-workflow-artifacts.ts +411 -0
- package/src/cli/veritas-governance.ts +322 -0
- package/src/cli/workflow-artifact-cleanup-audit.ts +281 -0
- package/src/cli/workflow-sidecar.ts +676 -0
- package/src/cli.ts +95 -0
- package/src/flow-kit/validate.ts +74 -0
- package/src/lib/args.ts +43 -0
- package/src/lib/fs.ts +62 -0
- package/src/lib/workflow-learning-projection.ts +491 -0
- package/src/runtime-adapters.ts +154 -0
- package/src/tools/build-universal-bundles.ts +366 -0
- package/src/tools/common.ts +61 -0
- package/src/tools/filter-installed-packs.ts +129 -0
- package/src/tools/generate-context-map.ts +199 -0
- package/src/tools/validate-package.ts +57 -0
- package/src/tools/validate-source-tree.ts +488 -0
- package/tsconfig.json +19 -0
- package/veritas.claims.json +6 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Review Contract
|
|
2
|
+
|
|
3
|
+
Review is report-only critique. It asks whether the changed code is maintainable, secure, consistent with project standards, and structurally sound before verification proves behavior.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Review and verification are separate gates:
|
|
8
|
+
|
|
9
|
+
- Review answers: should this implementation be changed before we trust it?
|
|
10
|
+
- Verification answers: what evidence proves the accepted behavior works?
|
|
11
|
+
|
|
12
|
+
Keep review findings in the configured critique artifact/sink; in the local sidecar workflow this is materialized as `critique.json`. Keep behavior evidence in `evidence.json`.
|
|
13
|
+
|
|
14
|
+
Review is not a canonical `state.phase` value. Machine-readable workflow state must use the canonical lifecycle phase vocabulary from the artifact contract, while review-work records its verdicts and findings through the critique artifact/sink.
|
|
15
|
+
|
|
16
|
+
## Required Inputs
|
|
17
|
+
|
|
18
|
+
- session artifact path when available
|
|
19
|
+
- plan artifact path or implementation summary
|
|
20
|
+
- modified files
|
|
21
|
+
- relevant project standards, including `context/code-review-standards.md` when present
|
|
22
|
+
- risk triggers such as auth, user input, database queries, filesystem operations, API endpoints, cryptography, payments, migrations, CI, deployment, or public contracts
|
|
23
|
+
|
|
24
|
+
## Review Lanes And Trigger Rules
|
|
25
|
+
|
|
26
|
+
Run each required lane as report-only critique. A lane is required when modified
|
|
27
|
+
files, the plan, or the implementation behavior match its triggers. When trigger
|
|
28
|
+
detection is uncertain for a substantial change, run the relevant lane or record
|
|
29
|
+
that lane as `not_verified` with the reason.
|
|
30
|
+
|
|
31
|
+
| Lane | Triggers | Expected reviewer or delegate |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| Code | Source code, tests, scripts, generated-code inputs, public contracts, or implementation logic changed. | `tool-code-reviewer` |
|
|
34
|
+
| Security | Authentication, authorization, user input, query params, headers, templates, serialization, database queries, filesystem paths, uploads, downloads, archives, generated files, API endpoints, webhooks, external API calls, network operations, cryptography, tokens, secrets, payments, billing, CI, deployment, or feature flags changed. | `tool-security-reviewer` |
|
|
35
|
+
| Dependency | Package manifests, dependency manifests, lockfiles, dependency tooling, package manager config, container base-image dependency declarations, or dependency update policy changed. Examples include `package.json`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `requirements.txt`, `pyproject.toml`, `poetry.lock`, `Pipfile.lock`, `Cargo.toml`, `Cargo.lock`, `go.mod`, `go.sum`, `pom.xml`, `build.gradle`, `Gemfile.lock`, `composer.lock`, and NuGet lock files. | `tool-dependencies-updater` or configured repo dependency reviewer |
|
|
36
|
+
| Architecture/standards | Module boundaries, ownership boundaries, shared abstractions, schemas, API compatibility, data flow, migrations, platform conventions, documented decisions, project standards, or cross-cutting behavior changed. | `tool-code-reviewer` plus configured architecture/domain reviewer when present |
|
|
37
|
+
| IaC/policy | Infrastructure as code, policy as code, cloud/deployment config, Terraform, OpenTofu, CloudFormation, Kubernetes manifests, Helm charts, Dockerfiles, Compose files, GitHub Actions, CI/CD permissions, IAM, OPA/Rego, Sentinel, or environment provisioning changed. | `tool-security-reviewer`, configured IaC/policy reviewer, or repo-local read-only scanner |
|
|
38
|
+
|
|
39
|
+
IaC/policy scanner guidance is vendor-neutral. Acceptable scanner classes include
|
|
40
|
+
Checkov, tfsec, Trivy, Semgrep, and project-configured policy scanners, but no
|
|
41
|
+
single vendor is required by this contract. Reviewers may reference native
|
|
42
|
+
scanner output or SARIF when available, but missing scanner tooling must be
|
|
43
|
+
recorded as `not_verified`; do not install new scanners or silently pass the
|
|
44
|
+
lane during review.
|
|
45
|
+
|
|
46
|
+
## Reviewers
|
|
47
|
+
|
|
48
|
+
Run the relevant report-only reviewers:
|
|
49
|
+
|
|
50
|
+
- `tool-code-reviewer` for code quality, maintainability, correctness, project standards, and architecture/standards fit
|
|
51
|
+
- `tool-security-reviewer` when security or IaC/policy triggers are present
|
|
52
|
+
- `tool-dependencies-updater` when dependency manifests, package manifests, package manager configuration, or lockfiles change
|
|
53
|
+
- an architecture, domain, IaC/policy, dependency, or standards reviewer when configured by the project or requested by the user
|
|
54
|
+
|
|
55
|
+
All reviewers are read-only reporters. They may inspect files, run read-only analysis commands, and write review artifacts under the workflow artifact directory. They must not modify source files, apply patches, or run autofixes.
|
|
56
|
+
|
|
57
|
+
## Review Scope
|
|
58
|
+
|
|
59
|
+
Attempt relevant perspectives and record findings:
|
|
60
|
+
|
|
61
|
+
- Code quality: readability, naming, function/file size, error handling, duplication, maintainability
|
|
62
|
+
- Correctness risks: edge cases, unintended behavior, unsafe assumptions, missing tests
|
|
63
|
+
- Standards fit: project conventions, local architecture, public contracts, documented decisions
|
|
64
|
+
- Security: secrets, injection, XSS, path traversal, auth/authz, unsafe external calls, vulnerable dependencies
|
|
65
|
+
- Architecture: ownership boundaries, coupling, data flow, schema or API compatibility, migration risk
|
|
66
|
+
|
|
67
|
+
If a perspective is required but cannot be reviewed, record it as `not_verified` with the reason.
|
|
68
|
+
|
|
69
|
+
## Verdicts
|
|
70
|
+
|
|
71
|
+
- `pass`: no open findings that block delivery
|
|
72
|
+
- `comment`: non-blocking findings or suggestions only
|
|
73
|
+
- `fail`: at least one open critical/high finding, or a medium finding that requires code changes before delivery
|
|
74
|
+
- `not_verified`: required review evidence could not be collected
|
|
75
|
+
|
|
76
|
+
## Structured Critique Sidecar
|
|
77
|
+
|
|
78
|
+
When review runs as part of a workflow, write or update the configured critique artifact/sink. For the current local sidecar materialization, write or update `critique.json` beside the workflow artifacts using `schemas/workflow-critique.schema.json`.
|
|
79
|
+
|
|
80
|
+
Prefer the sidecar writer when available:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm run workflow:sidecar -- record-critique .flow-agents/<slug> \
|
|
84
|
+
--id code-review \
|
|
85
|
+
--reviewer tool-code-reviewer \
|
|
86
|
+
--verdict pass \
|
|
87
|
+
--summary "Code review passed."
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
For Markdown reviewer reports, import them when possible:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm run workflow:sidecar -- import-critique .flow-agents/<slug> \
|
|
94
|
+
.flow-agents/<slug>/<slug>--code-review.md \
|
|
95
|
+
--reviewer tool-code-reviewer
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Gate Rules
|
|
99
|
+
|
|
100
|
+
- Critical or high findings block delivery until fixed, accepted by the user, deferred with explicit rationale, or marked false positive.
|
|
101
|
+
- Security critical/high findings block delivery unless the user explicitly accepts the risk.
|
|
102
|
+
- Medium findings that require code changes route through an execution fix pass.
|
|
103
|
+
- Any code change after review requires another clean review and verification pass.
|
|
104
|
+
- Do not mark critique `pass` while open findings remain.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Sandbox Policy Contract
|
|
2
|
+
|
|
3
|
+
Workflow artifacts must name the execution boundary required for the work. The sandbox mode is a planning and delegation contract, not a substitute for the runtime permission model.
|
|
4
|
+
|
|
5
|
+
## Canonical Modes
|
|
6
|
+
|
|
7
|
+
Use exactly one of these values when recording `sandbox_mode`:
|
|
8
|
+
|
|
9
|
+
- `local-read-only`: inspect files, configs, logs, docs, and command output without mutating files or external systems.
|
|
10
|
+
- `local-edit`: edit files in the active workspace and run local validation with low conflict and rollback risk.
|
|
11
|
+
- `worktree`: use an isolated branch/worktree for parallel work, broad refactors, generated artifacts, or work likely to outlive the current session.
|
|
12
|
+
- `container`: use a disposable local environment for untrusted dependencies, destructive tools, or build steps that may pollute host state.
|
|
13
|
+
- `cloud-sandbox`: use scoped cloud accounts, projects, stacks, or preview environments with explicit owner, budget risk, and teardown.
|
|
14
|
+
- `privileged-integration`: access sensitive data, mutate external systems, send messages, deploy, approve releases, or use elevated local permissions.
|
|
15
|
+
|
|
16
|
+
## Required Artifact Fields
|
|
17
|
+
|
|
18
|
+
Plans, execution summaries, and handoffs should record:
|
|
19
|
+
|
|
20
|
+
- `sandbox_mode`
|
|
21
|
+
- `scope`
|
|
22
|
+
- `owner`
|
|
23
|
+
- `approval`
|
|
24
|
+
- `rollback`
|
|
25
|
+
- `evidence`
|
|
26
|
+
|
|
27
|
+
The Markdown form may use a Definition Of Done bullet. Structured sidecars should use the same vocabulary when a schema supports the field.
|
|
28
|
+
|
|
29
|
+
## Selection Rules
|
|
30
|
+
|
|
31
|
+
- Start discovery, planning, and code review at `local-read-only`.
|
|
32
|
+
- Use `local-edit` only when the active workspace is the intended edit surface.
|
|
33
|
+
- Prefer `worktree` for parallel agents, overlapping ownership, broad shared-file edits, or long-running work.
|
|
34
|
+
- Prefer `container` for risky dependency installation, generated-code experiments, or destructive commands.
|
|
35
|
+
- Use `cloud-sandbox` for cloud experimentation before touching shared or production-like resources.
|
|
36
|
+
- Use `privileged-integration` only with explicit approval, target, expected effect, rollback, and post-action verification.
|
|
37
|
+
|
|
38
|
+
## Escalation Rules
|
|
39
|
+
|
|
40
|
+
- Upgrade the mode when the work becomes riskier than planned.
|
|
41
|
+
- Stop for approval when the required mode is `privileged-integration` or when cloud, destructive, or externally mutating behavior was not already authorized.
|
|
42
|
+
- Downgrade only when the artifact records why the stronger boundary is no longer required.
|
|
43
|
+
- Do not hide sandbox blockers in a final summary. Record the blocker and route back to planning or user approval.
|
|
44
|
+
|
|
45
|
+
## Evidence Expectations
|
|
46
|
+
|
|
47
|
+
- `local-read-only`: sources read and checks attempted.
|
|
48
|
+
- `local-edit`: modified files and validation commands.
|
|
49
|
+
- `worktree`: worktree path, branch, owner, merge plan, and cleanup plan.
|
|
50
|
+
- `container`: image/context, mounted paths, command evidence, and copied outputs.
|
|
51
|
+
- `cloud-sandbox`: account/project, region, permissions, cost risk, teardown evidence.
|
|
52
|
+
- `privileged-integration`: approval reason, target, action result, rollback status, and post-action verification.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Verification Contract
|
|
2
|
+
|
|
3
|
+
Verification is report-only. It proves whether the implementation satisfies the plan, the Definition Of Done, and the original user outcome.
|
|
4
|
+
|
|
5
|
+
## Required Inputs
|
|
6
|
+
|
|
7
|
+
- session artifact path when available
|
|
8
|
+
- plan artifact path or acceptance criteria
|
|
9
|
+
- Definition Of Done and stop-short risks
|
|
10
|
+
- modified files
|
|
11
|
+
- build, test, lint, browser, or runtime commands from the plan, AGENTS.md, or project conventions
|
|
12
|
+
|
|
13
|
+
## Report-Only Rule
|
|
14
|
+
|
|
15
|
+
Verifiers and reviewers do not modify source code. They may run commands, inspect files, take screenshots, and write verification artifacts. They must not apply fixes, formatting, lint autofixes, or patches.
|
|
16
|
+
|
|
17
|
+
## Verification Phases
|
|
18
|
+
|
|
19
|
+
Attempt relevant phases and record evidence:
|
|
20
|
+
|
|
21
|
+
- Build: compile or bundle the project
|
|
22
|
+
- Types: run detected static type checks
|
|
23
|
+
- Lint: run detected lint or quality checks
|
|
24
|
+
- Tests: run affected or full tests, with coverage when available
|
|
25
|
+
- Security: scan for secrets, debug artifacts, and dependency issues when relevant
|
|
26
|
+
- Diff review: inspect changed files against acceptance criteria
|
|
27
|
+
- Browser or visual checks: use screenshots, accessibility checks, and interaction tests for UI changes
|
|
28
|
+
- Provider checks: collect CI, status, review, mergeability, deployment, policy, or equivalent ChangeProvider evidence after publish-change when release confidence depends on the provider
|
|
29
|
+
|
|
30
|
+
If a tool or environment is unavailable, mark that phase `NOT_VERIFIED` with the reason. Do not skip silently.
|
|
31
|
+
|
|
32
|
+
Provider-check gaps are risk-based:
|
|
33
|
+
|
|
34
|
+
- Docs-only changes may use `SKIP` / `skip` for missing provider checks only when the report names the skipped check, explains why local docs evidence is enough, and the repository does not require the missing check.
|
|
35
|
+
- Runtime, schema, package, hook, security, migration, release, infrastructure, or deployment changes require provider check evidence or equivalent proof. If that proof is missing, mark the provider check and any affected acceptance/release item `NOT_VERIFIED`; release-readiness must hold rather than treating the gap as pass.
|
|
36
|
+
- Provider API failure, unknown mergeability, missing required review, or absent CI is not a clean pass for risky changes.
|
|
37
|
+
|
|
38
|
+
## Verdicts
|
|
39
|
+
|
|
40
|
+
- `PASS`: all required criteria are satisfied with evidence, and no required phase failed or remains unaccepted.
|
|
41
|
+
- `FAIL`: at least one acceptance criterion, required check, or Goal Fit item failed.
|
|
42
|
+
- `NOT_VERIFIED`: required evidence could not be collected.
|
|
43
|
+
- `PARTIAL`: only for legacy reports where some criteria pass and some fail or remain unverified; route it like a non-pass.
|
|
44
|
+
|
|
45
|
+
## Required Report Shape
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
## Verification Report
|
|
49
|
+
|
|
50
|
+
Build: [PASS/FAIL/NOT_VERIFIED/SKIP] <command, exit code, or reason>
|
|
51
|
+
Types: [PASS/FAIL/NOT_VERIFIED/SKIP] <command, result, or reason>
|
|
52
|
+
Lint: [PASS/FAIL/NOT_VERIFIED/SKIP] <command, result, or reason>
|
|
53
|
+
Tests: [PASS/FAIL/NOT_VERIFIED/SKIP] <command, result, coverage, or reason>
|
|
54
|
+
Security: [PASS/FAIL/NOT_VERIFIED/SKIP] <findings or reason>
|
|
55
|
+
Provider: [PASS/FAIL/NOT_VERIFIED/SKIP] <provider checks, change ref, or risk-based skip reason>
|
|
56
|
+
Diff: [PASS/FAIL/NOT_VERIFIED] <changed files reviewed>
|
|
57
|
+
|
|
58
|
+
### Acceptance Criteria
|
|
59
|
+
- [PASS/FAIL/NOT_VERIFIED] <criterion> - <evidence or gap>
|
|
60
|
+
|
|
61
|
+
### Goal Fit
|
|
62
|
+
- [PASS/FAIL/NOT_VERIFIED] User outcome - <evidence or gap>
|
|
63
|
+
- [PASS/FAIL/NOT_VERIFIED] User-facing workflow - <docs, commands, UI, screenshots, or gap>
|
|
64
|
+
- [PASS/FAIL/NOT_VERIFIED] Durable docs target - <updated, deferred, not needed, or gap>
|
|
65
|
+
- [PASS/FAIL/NOT_VERIFIED] Stop-short risks - <resolved, accepted, or still open>
|
|
66
|
+
|
|
67
|
+
### Verdict: PASS | PARTIAL | FAIL | NOT_VERIFIED
|
|
68
|
+
<summary>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Structured Evidence Sidecar
|
|
72
|
+
|
|
73
|
+
When verification runs as part of a workflow, write or update `evidence.json` beside the workflow artifacts using `schemas/workflow-evidence.schema.json`.
|
|
74
|
+
|
|
75
|
+
Use the sidecar writer when available:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npm run workflow:sidecar -- record-evidence .flow-agents/<slug> \
|
|
79
|
+
--verdict pass \
|
|
80
|
+
--check-json '{"id":"tests","kind":"test","status":"pass","summary":"Relevant checks passed."}'
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Map phases to check kinds:
|
|
84
|
+
|
|
85
|
+
- Build -> `build`
|
|
86
|
+
- Types -> `types`
|
|
87
|
+
- Lint -> `lint`
|
|
88
|
+
- Tests -> `test`
|
|
89
|
+
- Security -> `security`
|
|
90
|
+
- Diff -> `diff`
|
|
91
|
+
- Browser or visual checks -> `browser`
|
|
92
|
+
- Runtime checks -> `runtime`
|
|
93
|
+
- External policy or governance checks -> `policy` or `external`
|
|
94
|
+
- Provider checks from publish-change or release surfaces -> `external`
|
|
95
|
+
|
|
96
|
+
Use lowercase statuses: `pass`, `fail`, `not_verified`, or `skip`. Set the top-level `verdict` to `pass`, `partial`, `fail`, or `not_verified`. Include `not_verified_gaps` for any missing required evidence.
|
|
97
|
+
|
|
98
|
+
Modified files are part of verification scope. If changed-file scope is unavailable, mark diff/scope integrity `NOT_VERIFIED` instead of inferring from memory. Optional governance providers such as Veritas may use the same modified-file scope as input or as an integrity reference, but their native reports should remain external evidence referenced from `evidence.json`.
|
|
99
|
+
|
|
100
|
+
When evidence has a native standard artifact, include `standard_refs` on the relevant check instead of flattening that artifact into prose:
|
|
101
|
+
|
|
102
|
+
- SARIF for static analysis, code review, security, and policy findings
|
|
103
|
+
- OpenTelemetry logs or traces for runtime, tool, model, workflow, and production-like event evidence
|
|
104
|
+
- JUnit or TAP for test runner output
|
|
105
|
+
- Veritas for optional policy/proof-lane evidence owned by Veritas
|
|
106
|
+
|
|
107
|
+
Use `external_evidence` for evidence stored outside the artifact directory, with `system`, `ref`, optional `summary`, and optional `standard`.
|
|
108
|
+
|
|
109
|
+
External governance evidence follows `context/contracts/governance-adapter-contract.md`. Veritas is optional: when present, reference its native artifact with `standard: "veritas"`; when absent, do not invent a pass.
|
|
110
|
+
|
|
111
|
+
Published change evidence follows `context/contracts/work-item-contract.md`. Record ChangeProvider evidence as provider-neutral refs: `work_item_ref`, `board_ref`, `change_ref`, provider checks, closing-reference checks, and evidence refs. GitHub pull requests are the first adapter example, not required core terminology.
|
|
112
|
+
|
|
113
|
+
Update `acceptance.json` when acceptance criteria move from `pending` to `pass`, `fail`, `not_verified`, or `accepted_gap`.
|
|
114
|
+
|
|
115
|
+
## Final-State Reconciliation
|
|
116
|
+
|
|
117
|
+
Verifier-local mismatch notes are pre-orchestration observations. They are useful for catching stale Markdown or sidecars, but they are not the terminal source of truth after the orchestrator updates final sidecars.
|
|
118
|
+
|
|
119
|
+
Before a clean terminal verdict:
|
|
120
|
+
|
|
121
|
+
- read the final `acceptance.json`, `evidence.json`, and `release.json` when present
|
|
122
|
+
- ensure Markdown summaries and sidecars no longer silently contradict each other
|
|
123
|
+
- record final sidecar validation evidence or mark the mismatch `NOT_VERIFIED`
|
|
124
|
+
- supersede earlier mismatch notes only by naming the final reconciled sidecars and evidence
|
|
125
|
+
|
|
126
|
+
If final sidecars still disagree with the Markdown artifact, return `NOT_VERIFIED` or `FAIL` according to the affected acceptance criteria.
|
|
127
|
+
|
|
128
|
+
## Verdict Rules
|
|
129
|
+
|
|
130
|
+
- Every acceptance criterion gets a status.
|
|
131
|
+
- Evidence is mandatory for PASS.
|
|
132
|
+
- `NOT_VERIFIED` is honest uncertainty, not failure disguised as success.
|
|
133
|
+
- A technically green build is not enough for PASS when the user still cannot run, inspect, understand, or act on the result.
|
|
134
|
+
- The orchestrator routes FAIL, PARTIAL, and unaccepted NOT_VERIFIED back through execution or to an explicit user decision.
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# Work Item Contract
|
|
2
|
+
|
|
3
|
+
This contract defines the provider-neutral vocabulary for selecting, planning, and handing off backlog work. It is the source shape for provider-backed workflows such as `pull-work`; provider-specific adapters map into this model without making GitHub, Jira, Linear, or any other provider the generic language.
|
|
4
|
+
|
|
5
|
+
## Provider Roles
|
|
6
|
+
|
|
7
|
+
- `WorkItemProvider`: supplies issue-like records that represent requested work, defects, chores, or decisions.
|
|
8
|
+
- `BoardProvider`: supplies project, board, milestone, sprint, or queue membership and the fields used to order or route work.
|
|
9
|
+
- `ChangeProvider`: supplies branch, review, merge request, pull request, changeset, release, or deploy records that represent a published implementation.
|
|
10
|
+
|
|
11
|
+
A single external system can implement both roles. For example, GitHub Issues is a `WorkItemProvider`, while GitHub Projects is a `BoardProvider`.
|
|
12
|
+
|
|
13
|
+
## Work Item Shape
|
|
14
|
+
|
|
15
|
+
Every provider-backed work item should preserve the stable fields below when the provider can supply them.
|
|
16
|
+
|
|
17
|
+
| Field | Required | Description |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| `id` | yes | Stable provider identifier, such as an issue number, opaque item id, or provider-qualified id. |
|
|
20
|
+
| `title` | yes | Human-readable summary. |
|
|
21
|
+
| `body` | optional | Main description, problem statement, or request body. |
|
|
22
|
+
| `status` | optional | Provider-neutral lifecycle state or mapped board status, such as `todo`, `ready`, `in_progress`, `blocked`, `review`, `verification`, or `done`. |
|
|
23
|
+
| `labels` / `tags` | optional | Provider labels, tags, components, or categories used for filtering and triage. |
|
|
24
|
+
| `priority` | optional | Provider priority value mapped without changing meaning, such as `P0`, `P1`, or `high`. |
|
|
25
|
+
| `size` | optional | Estimated implementation size, complexity, or effort. |
|
|
26
|
+
| `risk` | optional | Delivery, technical, product, security, migration, or coordination risk. |
|
|
27
|
+
| `blockers` | optional | Blocking work items, decisions, external dependencies, or explicit blocked reasons. |
|
|
28
|
+
| `related_links` | optional | URLs or provider references for related issues, discussions, docs, designs, incidents, and decisions. |
|
|
29
|
+
| `source_provider` | yes | Provider identity and source location, including provider kind, owner or workspace, repository or project, and canonical URL when available. |
|
|
30
|
+
| `project_membership` / `board_membership` | optional | Board, project, milestone, sprint, queue, column, or status-field membership supplied by a `BoardProvider`. |
|
|
31
|
+
| `pr_links` | optional | Pull requests, merge requests, or changesets associated with the work item. |
|
|
32
|
+
| `artifact_refs` | optional | Workflow artifacts, sidecars, evidence, plans, reviews, handoffs, or durable docs that trace the work. |
|
|
33
|
+
|
|
34
|
+
Provider-specific fields may be carried as adapter metadata, but generic workflow skills should make selection and handoff decisions from the neutral shape above.
|
|
35
|
+
|
|
36
|
+
## Planning Base And Drift
|
|
37
|
+
|
|
38
|
+
Executable work items should record the source revision that shaped their scope. This lets pickup Probe compare the current repository against the assumptions used when the work entered the backlog.
|
|
39
|
+
|
|
40
|
+
Recommended fields:
|
|
41
|
+
|
|
42
|
+
| Field | Required | Description |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| `planned_base_ref` | recommended | Branch or ref used when shaping the work item, usually `main`. |
|
|
45
|
+
| `planned_base_sha` | recommended | Exact commit SHA of `planned_base_ref` at shaping time. |
|
|
46
|
+
| `planned_at` | recommended | Timestamp when the work item was shaped or last materially re-shaped. |
|
|
47
|
+
| `planning_artifact_ref` | recommended | Idea-to-backlog, design, ADR, or plan artifact that produced the work item. |
|
|
48
|
+
| `planning_scope_refs` | optional | Key docs, contracts, schemas, files, or packages considered during shaping. |
|
|
49
|
+
| `dependency_refs` | optional | Issues, changes, releases, or commits assumed complete, pending, or blocking during shaping. |
|
|
50
|
+
|
|
51
|
+
`pull-work` and pickup Probe should compare `planned_base_sha` with the current target ref before planning implementation. At minimum, record:
|
|
52
|
+
|
|
53
|
+
- current target ref and SHA
|
|
54
|
+
- files, docs, contracts, or schemas changed since `planned_base_sha` when they overlap `planning_scope_refs` or likely execution scope
|
|
55
|
+
- dependency issue/change state that has moved since shaping
|
|
56
|
+
- whether drift is material to scope, acceptance criteria, dependencies, or risk
|
|
57
|
+
|
|
58
|
+
Pickup Probe drift outcomes:
|
|
59
|
+
|
|
60
|
+
| Outcome | Meaning |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `no_material_drift` | The work item is still aligned with current main and dependencies. |
|
|
63
|
+
| `scope_drift` | Current code/docs changed the intended scope or acceptance criteria; ask for alignment or route back to shaping. |
|
|
64
|
+
| `dependency_drift` | Assumed blockers, prerequisites, or related changes moved; refresh dependency assumptions before planning. |
|
|
65
|
+
| `contract_drift` | Relevant docs, contracts, schemas, or provider policies changed; re-check the work item against the current contract. |
|
|
66
|
+
| `conflict_risk` | Changed files or active work overlap likely execution scope; require worktree, rebase, sequencing, or coordination before planning. |
|
|
67
|
+
|
|
68
|
+
If a legacy work item lacks `planned_base_sha`, pickup Probe should record the gap and use current main plus provider history as the best available baseline instead of inventing certainty.
|
|
69
|
+
|
|
70
|
+
## Publish Change Shape
|
|
71
|
+
|
|
72
|
+
`publish-change` is the provider-neutral step between clean local evidence and release readiness. It publishes the verified diff to a `ChangeProvider`, records the provider result, and collects provider checks without making any one provider's terms core workflow vocabulary.
|
|
73
|
+
|
|
74
|
+
### References
|
|
75
|
+
|
|
76
|
+
Use typed references instead of provider-specific nouns in core artifacts:
|
|
77
|
+
|
|
78
|
+
| Ref | Description |
|
|
79
|
+
| --- | --- |
|
|
80
|
+
| `work_item_ref` | Provider-backed work request, defect, task, or decision selected for the workflow. |
|
|
81
|
+
| `board_ref` | Project, board, queue, milestone, sprint, or planning surface that contextualizes the work item. |
|
|
82
|
+
| `change_ref` | Published implementation record such as a pull request, merge request, changeset, review request, release proposal, or deploy request. |
|
|
83
|
+
| `evidence_ref` | Workflow evidence, CI/check run, test report, review artifact, governance report, or provider-native proof linked to the change. |
|
|
84
|
+
|
|
85
|
+
### PublishChangeResult
|
|
86
|
+
|
|
87
|
+
A publish-change result should preserve:
|
|
88
|
+
|
|
89
|
+
| Field | Required | Description |
|
|
90
|
+
| --- | --- | --- |
|
|
91
|
+
| `provider` | yes | Stable provider id and adapter version when known. |
|
|
92
|
+
| `status` | yes | `published`, `updated`, `skipped`, `failed`, or `not_verified`. |
|
|
93
|
+
| `work_item_refs` | optional | Work items the change intends to address. |
|
|
94
|
+
| `board_refs` | optional | Board or project records affected by the change. |
|
|
95
|
+
| `change_ref` | optional | Provider change identity, canonical URL, branch, target, and state. Required unless status is `skipped`, `failed`, or `not_verified`. |
|
|
96
|
+
| `closing_reference_check` | optional | Whether the provider recognized references that will close or resolve work items. |
|
|
97
|
+
| `provider_checks` | optional | Provider-native checks such as CI, required review, policy, mergeability, status, or deployment gates. |
|
|
98
|
+
| `evidence_refs` | optional | Local sidecars, standard evidence artifacts, provider checks, and external evidence records used for release readiness. |
|
|
99
|
+
| `summary` | yes | Human-readable outcome and next action. |
|
|
100
|
+
|
|
101
|
+
### ClosingReferenceCheck
|
|
102
|
+
|
|
103
|
+
Closing-reference recognition is provider behavior. Core workflow artifacts should record the neutral result:
|
|
104
|
+
|
|
105
|
+
| Field | Required | Description |
|
|
106
|
+
| --- | --- | --- |
|
|
107
|
+
| `expected_work_item_refs` | yes | Work items the change is expected to close, resolve, or complete. |
|
|
108
|
+
| `recognized_work_item_refs` | yes | Work items the provider reports as recognized by the change record. |
|
|
109
|
+
| `missing_work_item_refs` | yes | Expected refs not recognized by the provider. |
|
|
110
|
+
| `status` | yes | `pass`, `fail`, `not_verified`, or `skip`. |
|
|
111
|
+
| `evidence_refs` | optional | Provider API response, rendered body, check output, or dry-run fixture supporting the result. |
|
|
112
|
+
|
|
113
|
+
If closing behavior matters and expected refs are missing, publish-change must return `fail` or `not_verified`; do not hide it as a successful publish.
|
|
114
|
+
|
|
115
|
+
### Provider Checks
|
|
116
|
+
|
|
117
|
+
Provider checks are external facts used by evidence-gate and release-readiness. Examples include CI checks, required status checks, branch protection, mergeability, required review, deployment checks, and external policy checks. Record them as provider-neutral check records with status `pass`, `fail`, `not_verified`, or `skip`, plus evidence refs.
|
|
118
|
+
|
|
119
|
+
Missing provider checks are risk-sensitive:
|
|
120
|
+
|
|
121
|
+
- Docs-only changes may pass with an explicit `skip` when the skipped provider check is not required by the repository and the artifact records why local review is enough.
|
|
122
|
+
- Runtime, schema, package, hook, security, migration, release, or infrastructure changes require provider check evidence or an explicit `not_verified` / release `hold`.
|
|
123
|
+
- A provider being unavailable is not a pass. Record `not_verified` unless the workflow explicitly chooses a low-risk no-provider path.
|
|
124
|
+
|
|
125
|
+
## Capability Flags
|
|
126
|
+
|
|
127
|
+
Adapters must describe provider capabilities explicitly so workflows can avoid assuming unavailable fields.
|
|
128
|
+
|
|
129
|
+
| Capability | Meaning |
|
|
130
|
+
| --- | --- |
|
|
131
|
+
| `issues` | Provider can list or read issue-like work items. |
|
|
132
|
+
| `projects_boards` | Provider can list or read project, board, queue, sprint, or milestone membership. |
|
|
133
|
+
| `status_fields` | Provider exposes lifecycle, column, state, or status field values. |
|
|
134
|
+
| `custom_fields` | Provider exposes typed project or work item fields beyond the base shape. |
|
|
135
|
+
| `dependencies` | Provider exposes blocked-by, blocks, parent-child, or linked-dependency relationships. |
|
|
136
|
+
| `labels` | Provider exposes labels, tags, components, or categories. |
|
|
137
|
+
| `milestones` | Provider exposes milestones, releases, iterations, or equivalent delivery targets. |
|
|
138
|
+
| `assignees` | Provider exposes owner or assignee information. |
|
|
139
|
+
| `pr_links` | Provider exposes pull request, merge request, changeset, or branch links. |
|
|
140
|
+
| `comments` | Provider exposes discussion comments or activity entries. |
|
|
141
|
+
| `change_records` | Provider exposes branch, pull request, merge request, changeset, release, deploy, or review records. |
|
|
142
|
+
| `closing_references` | Provider reports whether change text or metadata will close, resolve, or complete linked work items. |
|
|
143
|
+
| `checks` | Provider exposes CI, status, review, mergeability, policy, deployment, or equivalent checks. |
|
|
144
|
+
|
|
145
|
+
Capabilities are descriptive, not discovery settings. Provider settings and configured-provider discovery are separate implementation concerns.
|
|
146
|
+
|
|
147
|
+
## Status Guidance
|
|
148
|
+
|
|
149
|
+
Adapters may keep the provider's original status in metadata, but workflow-facing status should be mapped to a small neutral category when possible:
|
|
150
|
+
|
|
151
|
+
- `todo`: known work that is not ready or started.
|
|
152
|
+
- `ready`: scoped work that can be selected.
|
|
153
|
+
- `in_progress`: work currently owned or being implemented.
|
|
154
|
+
- `blocked`: work waiting on another item, decision, access, or external event.
|
|
155
|
+
- `review`: work waiting for human or automated critique.
|
|
156
|
+
- `verification`: work waiting for validation, evidence, or CI.
|
|
157
|
+
- `done`: accepted, closed, merged, released, or otherwise complete according to the provider.
|
|
158
|
+
|
|
159
|
+
When a provider has more detail than these categories, carry it in `project_membership`, `board_membership`, or adapter metadata rather than expanding the generic status vocabulary.
|
|
160
|
+
|
|
161
|
+
## GitHub Mapping
|
|
162
|
+
|
|
163
|
+
GitHub is the first concrete mapping for this contract, not the generic vocabulary.
|
|
164
|
+
|
|
165
|
+
### GitHub Issues as `WorkItemProvider`
|
|
166
|
+
|
|
167
|
+
| Work item field | GitHub Issues source |
|
|
168
|
+
| --- | --- |
|
|
169
|
+
| `id` | Repository-qualified issue number or node id. |
|
|
170
|
+
| `title` | Issue title. |
|
|
171
|
+
| `body` | Issue body. |
|
|
172
|
+
| `status` | Issue state plus mapped project status when available. |
|
|
173
|
+
| `labels` / `tags` | Issue labels. |
|
|
174
|
+
| `priority`, `size`, `risk` | Labels or GitHub Projects custom fields when present. |
|
|
175
|
+
| `blockers` | Linked issues, task lists, project fields, or issue body references marked as blocked/blocking. |
|
|
176
|
+
| `related_links` | Issue links, closing references, discussions, docs, and cross-references. |
|
|
177
|
+
| `source_provider` | `github`, repository owner/name, issue number, node id, and issue URL. |
|
|
178
|
+
| `pr_links` | Linked pull requests, closing PRs, branches, or manually referenced PR URLs. |
|
|
179
|
+
| `artifact_refs` | `.flow-agents/<slug>/` artifacts, plan/review/evidence links, and promoted docs referenced from the issue or workflow. |
|
|
180
|
+
|
|
181
|
+
### GitHub Projects as `BoardProvider`
|
|
182
|
+
|
|
183
|
+
| Board field | GitHub Projects source |
|
|
184
|
+
| --- | --- |
|
|
185
|
+
| `project_membership` / `board_membership` | Organization or repository project, project item id, view or board name when known, status field, milestone, iteration, and custom fields. |
|
|
186
|
+
| `status` | Mapped project status field when it is more workflow-relevant than issue open/closed state. |
|
|
187
|
+
| `priority`, `size`, `risk` | Project custom fields or labels when those fields are configured. |
|
|
188
|
+
| `blockers` | Project dependency fields, linked issues, or custom blocked fields when configured. |
|
|
189
|
+
| `related_links` | Project item URL, project URL, milestone URL, and linked provider references. |
|
|
190
|
+
|
|
191
|
+
GitHub capability flags should reflect what the current token and project configuration can actually read. Do not treat unavailable project fields as empty truth; record them as not available or `NOT_VERIFIED` in workflow evidence when they affect selection.
|
|
192
|
+
|
|
193
|
+
### GitHub Pull Requests as `ChangeProvider`
|
|
194
|
+
|
|
195
|
+
| Publish/change field | GitHub source |
|
|
196
|
+
| --- | --- |
|
|
197
|
+
| `change_ref` | Pull request number, node id, head branch, base branch, URL, merge state, and review state. |
|
|
198
|
+
| `work_item_refs` | Issues linked in the pull request body, branch, commits, manually supplied metadata, or GraphQL closing issue references. |
|
|
199
|
+
| `closing_reference_check` | Provider-recognized closing issues from GitHub, compared with expected issue refs. |
|
|
200
|
+
| `provider_checks` | Check runs, status checks, required reviews, branch protection, mergeability, and deployment checks visible to the token. |
|
|
201
|
+
| `evidence_refs` | Workflow sidecars, verification summaries, CI URLs, check run URLs, review artifacts, and release-readiness records linked from the pull request. |
|
|
202
|
+
|
|
203
|
+
GitHub is the first adapter/example for publish-change. Core workflow text should still say `change_ref`, `provider_checks`, and `closing_reference_check` unless it is inside a GitHub mapping or example.
|
|
204
|
+
|
|
205
|
+
## Artifact References
|
|
206
|
+
|
|
207
|
+
Workflow artifacts should be linked by stable path or URL and should preserve traceability to source work items:
|
|
208
|
+
|
|
209
|
+
- pull-work artifacts that capture board snapshots and selection rationale
|
|
210
|
+
- plan artifacts and `acceptance.json`
|
|
211
|
+
- execution handoffs and modified-file evidence
|
|
212
|
+
- review, verification, evidence, release, and learning sidecars
|
|
213
|
+
- promoted durable docs or release notes
|
|
214
|
+
|
|
215
|
+
`artifact_refs` should not replace provider state. They connect agent workflow evidence back to the provider-backed work item.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Demo Mode
|
|
2
|
+
|
|
3
|
+
Speed over polish. For customer demos, workshops, and prototypes.
|
|
4
|
+
|
|
5
|
+
## When to Activate
|
|
6
|
+
- User says "demo", "prototype", "workshop", "spike", "proof of concept", or "POC"
|
|
7
|
+
- Explicitly requested: "use demo mode"
|
|
8
|
+
|
|
9
|
+
## Relaxed Quality Gates
|
|
10
|
+
- Skip TDD — write tests only for critical paths if time allows
|
|
11
|
+
- Skip code review — no tool-verifier pass required
|
|
12
|
+
- Minimal validation — "it runs and looks right" is sufficient
|
|
13
|
+
- Skip linting/formatting enforcement
|
|
14
|
+
|
|
15
|
+
## Quick-Start Patterns
|
|
16
|
+
|
|
17
|
+
| Language | Stack | Command |
|
|
18
|
+
|----------|-------|---------|
|
|
19
|
+
| TypeScript | Vite + React | `npm create vite@latest -- --template react-ts` |
|
|
20
|
+
| Python | FastAPI | `pip install fastapi uvicorn && uvicorn main:app --reload` |
|
|
21
|
+
| Go | net/http | Standard library, no framework needed |
|
|
22
|
+
| Java | Spring Boot | `spring init --dependencies=web,devtools` |
|
|
23
|
+
|
|
24
|
+
## Guidelines
|
|
25
|
+
- **Visual-first validation** — use Playwright screenshots over unit tests for UI work
|
|
26
|
+
- **Framework scaffolding** — prefer `create-*` CLIs and official templates over manual setup
|
|
27
|
+
- **Hardcoded config is fine** — no need for env vars or config files in demos
|
|
28
|
+
- **Skip abstractions** — inline logic, skip interfaces/factories, keep it flat
|
|
29
|
+
- **Copy-paste is acceptable** — DRY doesn't apply to throwaway code
|
|
30
|
+
|
|
31
|
+
## ⚠️ Boundary
|
|
32
|
+
|
|
33
|
+
Demo-mode artifacts MUST NOT be committed to production branches. Use a `demo/` or `spike/` branch prefix. If demo code needs to become production code, run the full development workflow from step 0.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Go Rules
|
|
2
|
+
|
|
3
|
+
Loaded on-demand when working in Go projects.
|
|
4
|
+
|
|
5
|
+
## Error Handling
|
|
6
|
+
- Check every error — no `_` for error returns unless explicitly justified
|
|
7
|
+
- Wrap errors with context: `fmt.Errorf("doing X: %w", err)`
|
|
8
|
+
- Use `errors.Is` / `errors.As` for comparison — never string matching
|
|
9
|
+
- Sentinel errors as package-level `var` for expected conditions
|
|
10
|
+
- Return errors, don't panic — reserve `panic` for truly unrecoverable states
|
|
11
|
+
|
|
12
|
+
## Testing
|
|
13
|
+
- Table-driven tests as the default pattern
|
|
14
|
+
- Use `testify/assert` or `testify/require` for readable assertions
|
|
15
|
+
- `t.Helper()` in test helper functions
|
|
16
|
+
- `t.Parallel()` for independent tests
|
|
17
|
+
- Benchmarks (`Benchmark*`) for performance-sensitive code
|
|
18
|
+
|
|
19
|
+
## Tooling
|
|
20
|
+
- `go vet` + `golangci-lint` with default linters enabled
|
|
21
|
+
- `gofmt` / `goimports` for formatting (non-negotiable)
|
|
22
|
+
- `go mod tidy` before every commit
|
|
23
|
+
|
|
24
|
+
## Patterns
|
|
25
|
+
- Accept interfaces, return structs
|
|
26
|
+
- `context.Context` as first parameter for cancellation and deadlines
|
|
27
|
+
- Prefer small interfaces (1-3 methods) for testability
|
|
28
|
+
- Use `sync.Once` for lazy initialization, not `init()`
|
|
29
|
+
- Channel direction in function signatures: `chan<-` or `<-chan`
|
|
30
|
+
- Prefer `slog` (Go 1.21+) for structured logging
|
|
31
|
+
- Embed structs for composition, not inheritance
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Python Rules
|
|
2
|
+
|
|
3
|
+
Loaded on-demand when working in Python projects.
|
|
4
|
+
|
|
5
|
+
## Types
|
|
6
|
+
- Type hints on all function signatures — no untyped public APIs
|
|
7
|
+
- Use `from __future__ import annotations` for forward references
|
|
8
|
+
- `typing.Protocol` for structural subtyping over ABC where possible
|
|
9
|
+
|
|
10
|
+
## Validation
|
|
11
|
+
- Pydantic for runtime validation of external inputs (API payloads, config, env vars)
|
|
12
|
+
- Dataclasses or attrs for internal data structures (no plain dicts for structured data)
|
|
13
|
+
|
|
14
|
+
## Testing
|
|
15
|
+
- pytest as the test framework — no unittest
|
|
16
|
+
- Co-locate tests in `tests/` mirroring `src/` structure
|
|
17
|
+
- Use fixtures over setup/teardown methods
|
|
18
|
+
- `pytest-cov` for coverage reporting
|
|
19
|
+
|
|
20
|
+
## Tooling
|
|
21
|
+
- Ruff for linting and formatting (replaces flake8 + black + isort)
|
|
22
|
+
- `pyproject.toml` as the single config file
|
|
23
|
+
- Type checking with mypy or pyright in strict mode
|
|
24
|
+
|
|
25
|
+
## Patterns
|
|
26
|
+
- Use `async/await` where I/O bound (httpx, database, file ops)
|
|
27
|
+
- Prefer `pathlib.Path` over `os.path`
|
|
28
|
+
- Use context managers (`with`) for resource cleanup
|
|
29
|
+
- Prefer `enum.Enum` over string constants
|
|
30
|
+
- Use `logging` module with structured output — no `print()` in library code
|
|
31
|
+
- Virtual environments always — never install to system Python
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# TypeScript Rules
|
|
2
|
+
|
|
3
|
+
Loaded on-demand when working in TypeScript projects.
|
|
4
|
+
|
|
5
|
+
## Compiler
|
|
6
|
+
- `strict: true` always — no exceptions
|
|
7
|
+
- Target ES2022+ unless browser compat requires lower
|
|
8
|
+
|
|
9
|
+
## Types
|
|
10
|
+
- Prefer `type` over `interface` for unions and intersections
|
|
11
|
+
- `interface` for object shapes that may be extended
|
|
12
|
+
- No `any` without a `// eslint-disable` comment explaining why
|
|
13
|
+
- Use `unknown` for untyped external data, narrow with type guards
|
|
14
|
+
- Prefer `const` and `readonly` — mutability must be intentional
|
|
15
|
+
|
|
16
|
+
## Validation
|
|
17
|
+
- Use Zod for runtime validation of external inputs (API payloads, env vars, config)
|
|
18
|
+
- Infer types from Zod schemas (`z.infer<typeof schema>`) — single source of truth
|
|
19
|
+
|
|
20
|
+
## Testing
|
|
21
|
+
- Jest or Vitest (prefer Vitest for new projects)
|
|
22
|
+
- Co-locate test files: `foo.ts` → `foo.test.ts`
|
|
23
|
+
- Mock external dependencies, not internal modules
|
|
24
|
+
|
|
25
|
+
## Tooling
|
|
26
|
+
- ESLint + Prettier (or Biome as a single tool)
|
|
27
|
+
- `@typescript-eslint/strict` ruleset as baseline
|
|
28
|
+
- Format on save, lint on commit
|
|
29
|
+
|
|
30
|
+
## Patterns
|
|
31
|
+
- Prefer `async/await` over raw Promises
|
|
32
|
+
- Use discriminated unions for state machines
|
|
33
|
+
- Barrel exports (`index.ts`) only at package boundaries, not within modules
|
|
34
|
+
- Prefer named exports over default exports
|