@kontourai/flow-agents 4.0.0 → 4.1.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/.github/workflows/ci.yml +8 -0
- package/CHANGELOG.md +27 -0
- package/CONTEXT.md +5 -0
- package/agents/tool-security-reviewer.json +1 -1
- package/build/src/cli/init.js +35 -3
- package/build/src/cli/kit.js +95 -2
- package/build/src/cli/pull-work-provider.js +7 -1
- package/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/build/src/cli/workflow.js +5 -1
- package/build/src/flow-kit/provision.d.ts +23 -0
- package/build/src/flow-kit/provision.js +99 -0
- package/build/src/flow-kit/validate.d.ts +52 -0
- package/build/src/flow-kit/validate.js +214 -9
- package/build/src/runtime-adapters.js +1 -1
- package/context/contracts/execution-contract.md +30 -1
- package/context/contracts/review-contract.md +4 -0
- package/context/contracts/trigger-guards.md +73 -0
- package/context/settings/backlog-provider-settings.json +1 -1
- package/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/base/build/package.json +1 -1
- package/dist/base/build/src/cli/init.js +35 -3
- package/dist/base/build/src/cli/kit.js +95 -2
- package/dist/base/build/src/cli/pull-work-provider.js +7 -1
- package/dist/base/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/base/build/src/cli/workflow.js +5 -1
- package/dist/base/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/base/build/src/flow-kit/provision.js +99 -0
- package/dist/base/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/base/build/src/flow-kit/validate.js +214 -9
- package/dist/base/build/src/runtime-adapters.js +1 -1
- package/dist/base/context/contracts/execution-contract.md +30 -1
- package/dist/base/context/contracts/review-contract.md +4 -0
- package/dist/base/context/contracts/trigger-guards.md +73 -0
- package/dist/base/context/settings/backlog-provider-settings.json +1 -1
- package/dist/base/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/base/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/base/docs/adr/index.md +1 -0
- package/dist/base/docs/architecture-engine-and-kits.md +17 -0
- package/dist/base/docs/context-map.md +3 -0
- package/dist/base/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/base/docs/decisions/index.md +1 -0
- package/dist/base/docs/developer-architecture.md +3 -3
- package/dist/base/docs/flow-kit-repository-contract.md +34 -3
- package/dist/base/docs/kit-authoring-guide.md +1 -1
- package/dist/base/docs/veritas-integration.md +12 -0
- package/dist/base/evals/ci/run-baseline.sh +4 -0
- package/dist/base/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/base/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/base/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/base/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/base/evals/static/test_package.sh +6 -0
- package/dist/base/evals/static/test_workflow_skills.sh +16 -0
- package/dist/base/install.sh +1 -1
- package/dist/base/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/base/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/base/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/base/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/base/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/base/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/base/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/base/kits/veritas-governance/docs/README.md +141 -10
- package/dist/base/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/base/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/base/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/base/kits/veritas-governance/kit.json +65 -0
- package/dist/base/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/base/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/base/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/base/schemas/workflow-waves.schema.json +347 -0
- package/dist/base/scripts/check-layer-boundary.mjs +98 -0
- package/dist/catalog.json +2 -0
- package/dist/claude-code/.claude/agents/tool-security-reviewer.md +2 -1
- package/dist/claude-code/.claude/skills/consult-standards/SKILL.md +73 -0
- package/dist/claude-code/.claude/skills/execute-plan/SKILL.md +4 -3
- package/dist/claude-code/.claude/skills/pull-work/SKILL.md +12 -0
- package/dist/claude-code/.claude/skills/review-work/SKILL.md +11 -0
- package/dist/claude-code/.claude/skills/standards-authoring/SKILL.md +87 -0
- package/dist/claude-code/build/package.json +1 -1
- package/dist/claude-code/build/src/cli/init.js +35 -3
- package/dist/claude-code/build/src/cli/kit.js +95 -2
- package/dist/claude-code/build/src/cli/pull-work-provider.js +7 -1
- package/dist/claude-code/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/claude-code/build/src/cli/workflow.js +5 -1
- package/dist/claude-code/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/claude-code/build/src/flow-kit/provision.js +99 -0
- package/dist/claude-code/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/claude-code/build/src/flow-kit/validate.js +214 -9
- package/dist/claude-code/build/src/runtime-adapters.js +1 -1
- package/dist/claude-code/context/contracts/execution-contract.md +30 -1
- package/dist/claude-code/context/contracts/review-contract.md +4 -0
- package/dist/claude-code/context/contracts/trigger-guards.md +73 -0
- package/dist/claude-code/context/settings/backlog-provider-settings.json +1 -1
- package/dist/claude-code/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/claude-code/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/claude-code/docs/adr/index.md +1 -0
- package/dist/claude-code/docs/architecture-engine-and-kits.md +17 -0
- package/dist/claude-code/docs/context-map.md +3 -0
- package/dist/claude-code/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/claude-code/docs/decisions/index.md +1 -0
- package/dist/claude-code/docs/developer-architecture.md +3 -3
- package/dist/claude-code/docs/flow-kit-repository-contract.md +34 -3
- package/dist/claude-code/docs/kit-authoring-guide.md +1 -1
- package/dist/claude-code/docs/veritas-integration.md +12 -0
- package/dist/claude-code/evals/ci/run-baseline.sh +4 -0
- package/dist/claude-code/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/claude-code/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/claude-code/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/claude-code/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/claude-code/evals/static/test_package.sh +6 -0
- package/dist/claude-code/evals/static/test_workflow_skills.sh +16 -0
- package/dist/claude-code/install.sh +1 -1
- package/dist/claude-code/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/claude-code/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/claude-code/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/claude-code/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/claude-code/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/claude-code/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/claude-code/kits/veritas-governance/docs/README.md +141 -10
- package/dist/claude-code/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/claude-code/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/claude-code/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/claude-code/kits/veritas-governance/kit.json +65 -0
- package/dist/claude-code/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/claude-code/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/claude-code/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/claude-code/schemas/workflow-waves.schema.json +347 -0
- package/dist/claude-code/scripts/check-layer-boundary.mjs +98 -0
- package/dist/codex/.agents/skills/builder-shape/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/consult-standards/SKILL.md +73 -0
- package/dist/codex/.agents/skills/deliver/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/design-probe/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/execute-plan/SKILL.md +4 -3
- package/dist/codex/.agents/skills/execute-plan/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/fix-bug/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/idea-to-backlog/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/plan-work/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/pull-work/SKILL.md +12 -0
- package/dist/codex/.agents/skills/pull-work/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/review-work/SKILL.md +11 -0
- package/dist/codex/.agents/skills/review-work/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/standards-authoring/SKILL.md +87 -0
- package/dist/codex/.agents/skills/tdd-workflow/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/verify-work/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.codex/agents/tool-security-reviewer.toml +1 -1
- package/dist/codex/build/package.json +1 -1
- package/dist/codex/build/src/cli/init.js +35 -3
- package/dist/codex/build/src/cli/kit.js +95 -2
- package/dist/codex/build/src/cli/pull-work-provider.js +7 -1
- package/dist/codex/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/codex/build/src/cli/workflow.js +5 -1
- package/dist/codex/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/codex/build/src/flow-kit/provision.js +99 -0
- package/dist/codex/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/codex/build/src/flow-kit/validate.js +214 -9
- package/dist/codex/build/src/runtime-adapters.js +1 -1
- package/dist/codex/context/contracts/execution-contract.md +30 -1
- package/dist/codex/context/contracts/review-contract.md +4 -0
- package/dist/codex/context/contracts/trigger-guards.md +73 -0
- package/dist/codex/context/settings/backlog-provider-settings.json +1 -1
- package/dist/codex/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/codex/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/codex/docs/adr/index.md +1 -0
- package/dist/codex/docs/architecture-engine-and-kits.md +17 -0
- package/dist/codex/docs/context-map.md +3 -0
- package/dist/codex/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/codex/docs/decisions/index.md +1 -0
- package/dist/codex/docs/developer-architecture.md +3 -3
- package/dist/codex/docs/flow-kit-repository-contract.md +34 -3
- package/dist/codex/docs/kit-authoring-guide.md +1 -1
- package/dist/codex/docs/veritas-integration.md +12 -0
- package/dist/codex/evals/ci/run-baseline.sh +4 -0
- package/dist/codex/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/codex/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/codex/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/codex/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/codex/evals/static/test_package.sh +6 -0
- package/dist/codex/evals/static/test_workflow_skills.sh +16 -0
- package/dist/codex/install.sh +1 -1
- package/dist/codex/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/codex/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/codex/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/codex/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/codex/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/codex/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/codex/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/codex/kits/veritas-governance/docs/README.md +141 -10
- package/dist/codex/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/codex/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/codex/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/codex/kits/veritas-governance/kit.json +65 -0
- package/dist/codex/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/codex/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/codex/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/codex/schemas/workflow-waves.schema.json +347 -0
- package/dist/codex/scripts/check-layer-boundary.mjs +98 -0
- package/dist/kiro/agents/tool-security-reviewer.json +1 -1
- package/dist/kiro/build/package.json +1 -1
- package/dist/kiro/build/src/cli/init.js +35 -3
- package/dist/kiro/build/src/cli/kit.js +95 -2
- package/dist/kiro/build/src/cli/pull-work-provider.js +7 -1
- package/dist/kiro/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/kiro/build/src/cli/workflow.js +5 -1
- package/dist/kiro/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/kiro/build/src/flow-kit/provision.js +99 -0
- package/dist/kiro/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/kiro/build/src/flow-kit/validate.js +214 -9
- package/dist/kiro/build/src/runtime-adapters.js +1 -1
- package/dist/kiro/context/contracts/execution-contract.md +30 -1
- package/dist/kiro/context/contracts/review-contract.md +4 -0
- package/dist/kiro/context/contracts/trigger-guards.md +73 -0
- package/dist/kiro/context/settings/backlog-provider-settings.json +1 -1
- package/dist/kiro/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/kiro/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/kiro/docs/adr/index.md +1 -0
- package/dist/kiro/docs/architecture-engine-and-kits.md +17 -0
- package/dist/kiro/docs/context-map.md +3 -0
- package/dist/kiro/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/kiro/docs/decisions/index.md +1 -0
- package/dist/kiro/docs/developer-architecture.md +3 -3
- package/dist/kiro/docs/flow-kit-repository-contract.md +34 -3
- package/dist/kiro/docs/kit-authoring-guide.md +1 -1
- package/dist/kiro/docs/veritas-integration.md +12 -0
- package/dist/kiro/evals/ci/run-baseline.sh +4 -0
- package/dist/kiro/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/kiro/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/kiro/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/kiro/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/kiro/evals/static/test_package.sh +6 -0
- package/dist/kiro/evals/static/test_workflow_skills.sh +16 -0
- package/dist/kiro/install.sh +1 -1
- package/dist/kiro/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/kiro/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/kiro/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/kiro/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/kiro/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/kiro/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/kiro/kits/veritas-governance/docs/README.md +141 -10
- package/dist/kiro/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/kiro/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/kiro/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/kiro/kits/veritas-governance/kit.json +65 -0
- package/dist/kiro/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/kiro/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/kiro/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/kiro/schemas/workflow-waves.schema.json +347 -0
- package/dist/kiro/scripts/check-layer-boundary.mjs +98 -0
- package/dist/opencode/.opencode/agents/tool-security-reviewer.md +2 -1
- package/dist/opencode/.opencode/skills/consult-standards/SKILL.md +73 -0
- package/dist/opencode/.opencode/skills/execute-plan/SKILL.md +4 -3
- package/dist/opencode/.opencode/skills/pull-work/SKILL.md +12 -0
- package/dist/opencode/.opencode/skills/review-work/SKILL.md +11 -0
- package/dist/opencode/.opencode/skills/standards-authoring/SKILL.md +87 -0
- package/dist/opencode/build/package.json +1 -1
- package/dist/opencode/build/src/cli/init.js +35 -3
- package/dist/opencode/build/src/cli/kit.js +95 -2
- package/dist/opencode/build/src/cli/pull-work-provider.js +7 -1
- package/dist/opencode/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/opencode/build/src/cli/workflow.js +5 -1
- package/dist/opencode/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/opencode/build/src/flow-kit/provision.js +99 -0
- package/dist/opencode/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/opencode/build/src/flow-kit/validate.js +214 -9
- package/dist/opencode/build/src/runtime-adapters.js +1 -1
- package/dist/opencode/context/contracts/execution-contract.md +30 -1
- package/dist/opencode/context/contracts/review-contract.md +4 -0
- package/dist/opencode/context/contracts/trigger-guards.md +73 -0
- package/dist/opencode/context/settings/backlog-provider-settings.json +1 -1
- package/dist/opencode/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/opencode/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/opencode/docs/adr/index.md +1 -0
- package/dist/opencode/docs/architecture-engine-and-kits.md +17 -0
- package/dist/opencode/docs/context-map.md +3 -0
- package/dist/opencode/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/opencode/docs/decisions/index.md +1 -0
- package/dist/opencode/docs/developer-architecture.md +3 -3
- package/dist/opencode/docs/flow-kit-repository-contract.md +34 -3
- package/dist/opencode/docs/kit-authoring-guide.md +1 -1
- package/dist/opencode/docs/veritas-integration.md +12 -0
- package/dist/opencode/evals/ci/run-baseline.sh +4 -0
- package/dist/opencode/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/opencode/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/opencode/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/opencode/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/opencode/evals/static/test_package.sh +6 -0
- package/dist/opencode/evals/static/test_workflow_skills.sh +16 -0
- package/dist/opencode/install.sh +1 -1
- package/dist/opencode/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/opencode/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/opencode/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/opencode/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/opencode/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/opencode/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/opencode/kits/veritas-governance/docs/README.md +141 -10
- package/dist/opencode/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/opencode/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/opencode/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/opencode/kits/veritas-governance/kit.json +65 -0
- package/dist/opencode/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/opencode/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/opencode/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/opencode/schemas/workflow-waves.schema.json +347 -0
- package/dist/opencode/scripts/check-layer-boundary.mjs +98 -0
- package/dist/pi/.pi/skills/consult-standards/SKILL.md +73 -0
- package/dist/pi/.pi/skills/execute-plan/SKILL.md +4 -3
- package/dist/pi/.pi/skills/pull-work/SKILL.md +12 -0
- package/dist/pi/.pi/skills/review-work/SKILL.md +11 -0
- package/dist/pi/.pi/skills/standards-authoring/SKILL.md +87 -0
- package/dist/pi/build/package.json +1 -1
- package/dist/pi/build/src/cli/init.js +35 -3
- package/dist/pi/build/src/cli/kit.js +95 -2
- package/dist/pi/build/src/cli/pull-work-provider.js +7 -1
- package/dist/pi/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/pi/build/src/cli/workflow.js +5 -1
- package/dist/pi/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/pi/build/src/flow-kit/provision.js +99 -0
- package/dist/pi/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/pi/build/src/flow-kit/validate.js +214 -9
- package/dist/pi/build/src/runtime-adapters.js +1 -1
- package/dist/pi/context/contracts/execution-contract.md +30 -1
- package/dist/pi/context/contracts/review-contract.md +4 -0
- package/dist/pi/context/contracts/trigger-guards.md +73 -0
- package/dist/pi/context/settings/backlog-provider-settings.json +1 -1
- package/dist/pi/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/pi/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/pi/docs/adr/index.md +1 -0
- package/dist/pi/docs/architecture-engine-and-kits.md +17 -0
- package/dist/pi/docs/context-map.md +3 -0
- package/dist/pi/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/pi/docs/decisions/index.md +1 -0
- package/dist/pi/docs/developer-architecture.md +3 -3
- package/dist/pi/docs/flow-kit-repository-contract.md +34 -3
- package/dist/pi/docs/kit-authoring-guide.md +1 -1
- package/dist/pi/docs/veritas-integration.md +12 -0
- package/dist/pi/evals/ci/run-baseline.sh +4 -0
- package/dist/pi/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/pi/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/pi/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/pi/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/pi/evals/static/test_package.sh +6 -0
- package/dist/pi/evals/static/test_workflow_skills.sh +16 -0
- package/dist/pi/install.sh +1 -1
- package/dist/pi/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/pi/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/pi/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/pi/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/pi/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/pi/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/pi/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/pi/kits/veritas-governance/docs/README.md +141 -10
- package/dist/pi/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/pi/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/pi/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/pi/kits/veritas-governance/kit.json +65 -0
- package/dist/pi/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/pi/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/pi/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/pi/schemas/workflow-waves.schema.json +347 -0
- package/dist/pi/scripts/check-layer-boundary.mjs +98 -0
- package/docs/adr/0023-kit-provisioning.md +47 -0
- package/docs/adr/index.md +1 -0
- package/docs/architecture-engine-and-kits.md +17 -0
- package/docs/context-map.md +3 -0
- package/docs/decisions/backlog-readiness-source.md +89 -0
- package/docs/decisions/index.md +1 -0
- package/docs/developer-architecture.md +3 -3
- package/docs/flow-kit-repository-contract.md +34 -3
- package/docs/kit-authoring-guide.md +1 -1
- package/docs/veritas-integration.md +12 -0
- package/evals/ci/run-baseline.sh +4 -0
- package/evals/integration/test_kit_provisioning.sh +112 -0
- package/evals/integration/test_pull_work_provider.sh +18 -0
- package/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/evals/integration/test_workflow_artifacts.sh +257 -0
- package/evals/static/test_package.sh +6 -0
- package/evals/static/test_workflow_skills.sh +16 -0
- package/kits/builder/flows/publish-learn.flow.json +9 -1
- package/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/kits/builder/skills/review-work/SKILL.md +11 -0
- package/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/kits/veritas-governance/docs/README.md +141 -10
- package/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/kits/veritas-governance/kit.json +65 -0
- package/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/package.json +2 -1
- package/schemas/backlog-provider-settings.schema.json +1 -1
- package/schemas/workflow-waves.schema.json +347 -0
- package/scripts/check-layer-boundary.mjs +98 -0
- package/src/cli/builder-flow-runtime.test.mjs +86 -0
- package/src/cli/flow-resolver-composition.test.mjs +20 -1
- package/src/cli/init.ts +31 -3
- package/src/cli/kit-metadata-security.test.mjs +163 -1
- package/src/cli/kit-provisioning.test.mjs +122 -0
- package/src/cli/kit.ts +83 -2
- package/src/cli/pull-work-provider.ts +7 -1
- package/src/cli/validate-waves.test.mjs +134 -0
- package/src/cli/validate-workflow-artifacts.ts +47 -0
- package/src/cli/workflow.ts +7 -1
- package/src/flow-kit/provision.ts +118 -0
- package/src/flow-kit/validate.ts +233 -10
- package/src/runtime-adapters.ts +1 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -uo pipefail
|
|
3
|
+
|
|
4
|
+
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
5
|
+
source "$ROOT/evals/lib/node.sh"
|
|
6
|
+
|
|
7
|
+
errors=0
|
|
8
|
+
TMP_DIR="$(mktemp -d)"
|
|
9
|
+
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
10
|
+
pass() { echo " ✓ $1"; }
|
|
11
|
+
fail() { echo " ✗ $1"; errors=$((errors + 1)); }
|
|
12
|
+
|
|
13
|
+
CLI="$ROOT/build/src/cli.js"
|
|
14
|
+
KIT="$TMP_DIR/fixture-kit"
|
|
15
|
+
mkdir -p "$KIT/flows" "$KIT/payload"
|
|
16
|
+
cp "$ROOT/kits/release-evidence/flows/release-evidence.flow.json" "$KIT/flows/review.flow.json"
|
|
17
|
+
printf 'alpha from kit\n' >"$KIT/payload/alpha.txt"
|
|
18
|
+
printf 'beta from kit\n' >"$KIT/payload/beta.txt"
|
|
19
|
+
cat >"$KIT/kit.json" <<'JSON'
|
|
20
|
+
{
|
|
21
|
+
"schema_version": "1.0",
|
|
22
|
+
"id": "fixture-kit",
|
|
23
|
+
"name": "Provision Fixture Kit",
|
|
24
|
+
"flows": [{"id":"release-evidence","path":"flows/review.flow.json"}],
|
|
25
|
+
"provisions": [
|
|
26
|
+
{"id":"fixture-kit.alpha","path":"payload/alpha.txt","target":"docs/alpha.txt"},
|
|
27
|
+
{"id":"fixture-kit.beta","path":"payload/beta.txt","target":"config/beta.txt","description":"fixture"}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
JSON
|
|
31
|
+
|
|
32
|
+
echo "=== Kit provisioning integration ==="
|
|
33
|
+
npm run build --silent >/dev/null || { fail "build failed"; exit 1; }
|
|
34
|
+
|
|
35
|
+
if node "$CLI" kit validate "$KIT" >"$TMP_DIR/validate.out" 2>&1; then
|
|
36
|
+
pass "kit validate accepts declared provisions"
|
|
37
|
+
else
|
|
38
|
+
fail "kit validate rejected valid provisions"; sed -n '1,80p' "$TMP_DIR/validate.out"
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
TARGET="$TMP_DIR/consumer"
|
|
42
|
+
mkdir -p "$TARGET"
|
|
43
|
+
if node "$CLI" kit provision "$KIT" --target "$TARGET" >"$TMP_DIR/provision.out" 2>&1 \
|
|
44
|
+
&& cmp -s "$KIT/payload/alpha.txt" "$TARGET/docs/alpha.txt" \
|
|
45
|
+
&& cmp -s "$KIT/payload/beta.txt" "$TARGET/config/beta.txt" \
|
|
46
|
+
&& node -e 'const m=require(process.argv[1]); if(m.schema_version!=="1.0"||m.kit_id!=="fixture-kit"||m.files.length!==2)process.exit(1)' "$TARGET/.kontourai/flow-agents/provisions/fixture-kit.json"; then
|
|
47
|
+
pass "provision copies exact content and writes the two-entry manifest"
|
|
48
|
+
else
|
|
49
|
+
fail "positive provision failed"; sed -n '1,100p' "$TMP_DIR/provision.out"
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
printf 'consumer-owned alpha\n' >"$TARGET/docs/alpha.txt"
|
|
53
|
+
printf 'changed source beta\n' >"$KIT/payload/beta.txt"
|
|
54
|
+
if node "$CLI" kit provision "$KIT" --target "$TARGET" >"$TMP_DIR/conflict.out" 2>&1; then
|
|
55
|
+
fail "create-only conflict unexpectedly succeeded"
|
|
56
|
+
elif [[ "$(cat "$TARGET/docs/alpha.txt")" == "consumer-owned alpha" ]] \
|
|
57
|
+
&& [[ "$(cat "$TARGET/config/beta.txt")" == "beta from kit" ]] \
|
|
58
|
+
&& rg -q 'docs/alpha.txt' "$TMP_DIR/conflict.out" \
|
|
59
|
+
&& rg -q 'config/beta.txt' "$TMP_DIR/conflict.out"; then
|
|
60
|
+
pass "conflict is nonzero, names all conflicts, and overwrites nothing"
|
|
61
|
+
else
|
|
62
|
+
fail "conflict handling was not atomic or diagnostic"; sed -n '1,100p' "$TMP_DIR/conflict.out"
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
if node "$CLI" kit provision "$KIT" --target "$TARGET" --force >"$TMP_DIR/force.out" 2>&1 \
|
|
66
|
+
&& cmp -s "$KIT/payload/alpha.txt" "$TARGET/docs/alpha.txt" \
|
|
67
|
+
&& cmp -s "$KIT/payload/beta.txt" "$TARGET/config/beta.txt"; then
|
|
68
|
+
pass "--force overwrites declared destinations"
|
|
69
|
+
else
|
|
70
|
+
fail "--force did not overwrite"; sed -n '1,100p' "$TMP_DIR/force.out"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
DRY="$TMP_DIR/dry-consumer"
|
|
74
|
+
mkdir -p "$DRY"
|
|
75
|
+
if node "$CLI" kit provision "$KIT" --target "$DRY" --dry-run >"$TMP_DIR/dry.out" 2>&1 \
|
|
76
|
+
&& [[ ! -e "$DRY/docs/alpha.txt" && ! -e "$DRY/.kontourai" ]] \
|
|
77
|
+
&& rg -q 'would provision' "$TMP_DIR/dry.out"; then
|
|
78
|
+
pass "--dry-run prints the plan and writes nothing"
|
|
79
|
+
else
|
|
80
|
+
fail "--dry-run wrote state or omitted its plan"; sed -n '1,100p' "$TMP_DIR/dry.out"
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
INVALID="$TMP_DIR/invalid-kit"
|
|
84
|
+
cp -R "$KIT" "$INVALID"
|
|
85
|
+
node -e 'const fs=require("fs"),p=process.argv[1],m=JSON.parse(fs.readFileSync(p));m.provisions[0].target="../escape.txt";m.provisions[1].target="/absolute.txt";fs.writeFileSync(p,JSON.stringify(m,null,2))' "$INVALID/kit.json"
|
|
86
|
+
if node "$CLI" kit validate "$INVALID" >"$TMP_DIR/invalid-validate.out" 2>&1; then
|
|
87
|
+
fail "kit validate accepted traversal and absolute targets"
|
|
88
|
+
elif node "$CLI" kit provision "$INVALID" --target "$DRY" >"$TMP_DIR/invalid-provision.out" 2>&1; then
|
|
89
|
+
fail "kit provision accepted an invalid kit"
|
|
90
|
+
elif rg -q 'traversal' "$TMP_DIR/invalid-validate.out" && rg -q 'must be relative' "$TMP_DIR/invalid-validate.out"; then
|
|
91
|
+
pass "validation and provisioning refuse traversal and absolute targets"
|
|
92
|
+
else
|
|
93
|
+
fail "unsafe target diagnostics were incomplete"; sed -n '1,100p' "$TMP_DIR/invalid-validate.out"
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
HOME_FIXTURE="$TMP_DIR/kit-home"
|
|
97
|
+
mkdir -p "$HOME_FIXTURE"
|
|
98
|
+
if node "$CLI" kit install "$KIT" --dest "$HOME_FIXTURE" >"$TMP_DIR/install.out" 2>&1 \
|
|
99
|
+
&& node "$CLI" kit activate --dest "$HOME_FIXTURE" --source-root "$ROOT" >"$TMP_DIR/activate.out" 2>&1 \
|
|
100
|
+
&& node -e 'const r=JSON.parse(require("fs").readFileSync(process.argv[1],"utf8"));if(!r.skipped_assets.some(x=>x.asset_class==="provisions"&&/not activated/.test(x.reason)))process.exit(1)' "$TMP_DIR/activate.out"; then
|
|
101
|
+
pass "codex-local activation explicitly skips provisions"
|
|
102
|
+
else
|
|
103
|
+
fail "activation did not report provisions as skipped"; sed -n '1,120p' "$TMP_DIR/activate.out"
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
echo ""
|
|
107
|
+
if [[ "$errors" -eq 0 ]]; then
|
|
108
|
+
echo "Kit provisioning integration passed."
|
|
109
|
+
exit 0
|
|
110
|
+
fi
|
|
111
|
+
echo "Kit provisioning integration failed with $errors error(s)."
|
|
112
|
+
exit 1
|
|
@@ -131,6 +131,24 @@ node "$SCRIPT" \
|
|
|
131
131
|
[[ "$(json_query "$TMPDIR_EVAL/unresolved.json" "items.11.dependency_impacts.0.impact_state")" == "unknown" ]] && pass "structured-only dependency impact state is unknown without resolved ref" || fail "structured-only dependency impact state is unknown without resolved ref"
|
|
132
132
|
[[ "$(json_query "$TMPDIR_EVAL/unresolved.json" "items.11.readiness.classification")" == "blocked" ]] && pass "structured-only blocker blocks without prose parsing" || fail "structured-only blocker blocks without prose parsing"
|
|
133
133
|
|
|
134
|
+
# Readiness Source Integrity (docs/decisions/backlog-readiness-source.md):
|
|
135
|
+
# reaching the issue-listing path while a BoardProvider is configured is a
|
|
136
|
+
# bypass of the canonical readiness source and must be loud, never silent.
|
|
137
|
+
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "warnings.0.code")" == "board_provider_bypassed" ]] && pass "issue-listing path with configured board surfaces board_provider_bypassed" || fail "issue-listing path with configured board surfaces board_provider_bypassed"
|
|
138
|
+
|
|
139
|
+
node -e '
|
|
140
|
+
const fs = require("fs");
|
|
141
|
+
const doc = JSON.parse(fs.readFileSync(process.argv[1], "utf8"));
|
|
142
|
+
const settings = doc.projects[0];
|
|
143
|
+
delete settings.board_provider;
|
|
144
|
+
fs.writeFileSync(process.argv[2], JSON.stringify(settings, null, 2));
|
|
145
|
+
' "$SETTINGS" "$TMPDIR_EVAL/boardless-settings.json"
|
|
146
|
+
node "$SCRIPT" \
|
|
147
|
+
--settings-json "$TMPDIR_EVAL/boardless-settings.json" \
|
|
148
|
+
--issues-json "$FIXTURE" \
|
|
149
|
+
> "$TMPDIR_EVAL/boardless.json"
|
|
150
|
+
[[ "$(json_query "$TMPDIR_EVAL/boardless.json" "warnings.length")" == "0" ]] && pass "issue-listing path without a configured board emits no bypass warning" || fail "issue-listing path without a configured board emits no bypass warning"
|
|
151
|
+
|
|
134
152
|
if [[ "$errors" -eq 0 ]]; then
|
|
135
153
|
echo "Pull work provider checks passed"
|
|
136
154
|
else
|
|
@@ -133,6 +133,72 @@ echo "--- exemption-issuance: gate blocks without a verified approval, passes wi
|
|
|
133
133
|
exemption_gate_case "$KIT/fixtures/exemption/approved.trust-bundle.json" "exemption-positive" 0
|
|
134
134
|
exemption_gate_case "$KIT/fixtures/exemption/not-approved.trust-bundle.json" "exemption-negative" 1
|
|
135
135
|
|
|
136
|
+
# --- standards-authoring flow (Slice 2 PR3): registration, gate shape, gate cases ---
|
|
137
|
+
# Agentless propose -> apply flow whose human-approval-gate blocks the `veritas init --apply`
|
|
138
|
+
# write until a human-authored standards-authoring-approval claim is verified. The kit only
|
|
139
|
+
# gates the sign-off; Veritas does the derivation and the write (no evaluation reimplemented).
|
|
140
|
+
AUTHORING_FLOWDEF="$KIT/flows/standards-authoring.flow.json"
|
|
141
|
+
if node -e "const f=require('$AUTHORING_FLOWDEF'); if(f.id!=='veritas-governance.standards-authoring') process.exit(1);" 2>/dev/null; then
|
|
142
|
+
pass "standards-authoring flow file has id veritas-governance.standards-authoring"
|
|
143
|
+
else
|
|
144
|
+
fail "standards-authoring flow file missing or has unexpected id"
|
|
145
|
+
fi
|
|
146
|
+
if rg -q '"id": *"veritas-governance\.standards-authoring"' "$KIT/kit.json" && rg -q '"path": *"flows/standards-authoring\.flow\.json"' "$KIT/kit.json"; then
|
|
147
|
+
pass "standards-authoring flow is registered in kit.json flows[]"
|
|
148
|
+
else
|
|
149
|
+
fail "standards-authoring flow is NOT registered in kit.json flows[]"
|
|
150
|
+
fi
|
|
151
|
+
if rg -q '"id": *"veritas-governance\.standards-authoring"' "$KIT/kit.json" && rg -q '"path": *"skills/standards-authoring/SKILL.md"' "$KIT/kit.json"; then
|
|
152
|
+
pass "standards-authoring skill is registered in kit.json skills[]"
|
|
153
|
+
else
|
|
154
|
+
fail "standards-authoring skill is NOT registered in kit.json skills[]"
|
|
155
|
+
fi
|
|
156
|
+
# Agentless invariant: the kit declares no flow_step_actions (would opt into Builder's
|
|
157
|
+
# producer-ownership contract and break the agentless gate flows).
|
|
158
|
+
if rg -q 'flow_step_actions' "$KIT/kit.json"; then
|
|
159
|
+
fail "kit.json declares flow_step_actions — veritas-governance flows are agentless"
|
|
160
|
+
else
|
|
161
|
+
pass "kit stays agentless (no flow_step_actions)"
|
|
162
|
+
fi
|
|
163
|
+
if node -e "
|
|
164
|
+
const f=require('$AUTHORING_FLOWDEF');
|
|
165
|
+
const g=f.gates['human-approval-gate'];
|
|
166
|
+
const bc=g.expects[0].bundle_claim;
|
|
167
|
+
if (g.expects[0].kind!=='trust.bundle') process.exit(1);
|
|
168
|
+
if (bc.claimType!=='standards-authoring-approval') process.exit(1);
|
|
169
|
+
if (bc.subjectType!=='repo-governance-change') process.exit(1);
|
|
170
|
+
if (JSON.stringify(bc.accepted_statuses)!=='[\"verified\"]') process.exit(1);
|
|
171
|
+
" 2>/dev/null; then
|
|
172
|
+
pass "standards-authoring gate expects[] kind is trust.bundle and pins claimType/subjectType/accepted_statuses exactly"
|
|
173
|
+
else
|
|
174
|
+
fail "standards-authoring gate expects[] shape does not match the pinned claim selector"
|
|
175
|
+
fi
|
|
176
|
+
# Positive/negative gate cases against the committed fixtures. $1 bundle, $2 label, $3 expect.
|
|
177
|
+
authoring_gate_case() {
|
|
178
|
+
local bundle="$1" label="$2" expect="$3"
|
|
179
|
+
local work="$TMP_DIR/$label"; mkdir -p "$work"; ( cd "$work" && node "$FLOW_CLI" init >/dev/null 2>&1 )
|
|
180
|
+
( cd "$work" && node "$FLOW_CLI" start "$AUTHORING_FLOWDEF" --run-id "$label" >/dev/null 2>&1 )
|
|
181
|
+
( cd "$work" && node "$FLOW_CLI" attach-evidence "$label" --gate human-approval-gate --file "$bundle" --bundle >"$work/attach.out" 2>&1 )
|
|
182
|
+
if ! rg -q 'kind: trust.bundle' "$work/attach.out"; then
|
|
183
|
+
fail "[$label] evidence did not attach as kind: trust.bundle"; sed -n '1,20p' "$work/attach.out"; return
|
|
184
|
+
fi
|
|
185
|
+
( cd "$work" && node "$FLOW_CLI" evaluate "$label" --gate human-approval-gate --exit-code >"$work/eval.out" 2>&1 )
|
|
186
|
+
local got=$?
|
|
187
|
+
if [[ "$got" == "$expect" ]]; then
|
|
188
|
+
pass "[$label] standards-authoring gate evaluate exit $got as expected"
|
|
189
|
+
else
|
|
190
|
+
fail "[$label] standards-authoring gate evaluate exit $got, expected $expect"; sed -n '1,20p' "$work/eval.out"
|
|
191
|
+
fi
|
|
192
|
+
}
|
|
193
|
+
authoring_gate_case "$KIT/fixtures/standards-authoring/approved.trust-bundle.json" "authoring-positive" 0
|
|
194
|
+
authoring_gate_case "$KIT/fixtures/standards-authoring/not-approved.trust-bundle.json" "authoring-negative" 1
|
|
195
|
+
# No-fork: the authoring skill wraps the veritas CLI; it must not vendor rule/claim evaluation.
|
|
196
|
+
if rg -q -i 'evaluateRepoStandards|evidence-check-runner\.mjs|class +[A-Za-z]*RuleEngine|repo-standards/default\.repo-standards\.json' "$KIT/skills/standards-authoring" "$KIT/flows/standards-authoring.flow.json" 2>/dev/null; then
|
|
197
|
+
fail "standards-authoring skill/flow appears to vendor Veritas evaluation logic (no-fork violated)"
|
|
198
|
+
else
|
|
199
|
+
pass "no-fork: standards-authoring wraps the veritas CLI, no vendored rule/claim engine"
|
|
200
|
+
fi
|
|
201
|
+
|
|
136
202
|
# --- exemption-issuance: issue-step DECLARED append semantics (AC4) --------------
|
|
137
203
|
# Seed a scratch delivery/DECLARED with main's real 2-entry array (inlined here, not read
|
|
138
204
|
# live from the repo, so this eval is not coupled to that file's future contents), then
|
|
@@ -364,6 +430,196 @@ else
|
|
|
364
430
|
echo " - SKIP live Veritas leg (set VERITAS_BIN + VERITAS_GOVERNED_REPO to enable); fixtures are captured real output"
|
|
365
431
|
fi
|
|
366
432
|
|
|
433
|
+
# --- Starter-standards provisioning (Slice 2 PR2): the kit scaffolds a runnable .veritas/ ---
|
|
434
|
+
# The kit declares its starter Repo Standards as provisions[]; `kit provision` copies them into
|
|
435
|
+
# a consumer repo. This asserts the scaffold lands and is well-formed; when a Veritas binary is
|
|
436
|
+
# available it further asserts `veritas readiness` runs end-to-end against the scaffolded repo.
|
|
437
|
+
echo "--- starter-standards provisioning ---"
|
|
438
|
+
FA_CLI="$ROOT/build/src/cli.js"
|
|
439
|
+
if [[ ! -f "$FA_CLI" ]]; then
|
|
440
|
+
fail "flow-agents CLI not built at build/src/cli.js (run npm run build)"
|
|
441
|
+
else
|
|
442
|
+
prov="$TMP_DIR/provisioned-repo"; mkdir -p "$prov"
|
|
443
|
+
if node "$FA_CLI" kit provision "$KIT" --target "$prov" >"$TMP_DIR/provision.out" 2>&1; then
|
|
444
|
+
pass "kit provision scaffolds starter standards into a consumer repo"
|
|
445
|
+
else
|
|
446
|
+
fail "kit provision failed"; sed -n '1,20p' "$TMP_DIR/provision.out"
|
|
447
|
+
fi
|
|
448
|
+
# Every declared provision target must land and (for JSON) parse.
|
|
449
|
+
starter_targets=(
|
|
450
|
+
".veritas/repo-map.json"
|
|
451
|
+
".veritas/repo-standards/default.repo-standards.json"
|
|
452
|
+
".veritas/authority/default.authority-settings.json"
|
|
453
|
+
".veritas/GOVERNANCE.md"
|
|
454
|
+
".veritas/README.md"
|
|
455
|
+
"veritas.claims.json"
|
|
456
|
+
)
|
|
457
|
+
for rel in "${starter_targets[@]}"; do
|
|
458
|
+
if [[ -f "$prov/$rel" ]]; then
|
|
459
|
+
if [[ "$rel" == *.json ]]; then
|
|
460
|
+
if node -e "JSON.parse(require('fs').readFileSync(process.argv[1],'utf8'))" "$prov/$rel" >/dev/null 2>&1; then
|
|
461
|
+
pass "scaffolded $rel is present and valid JSON"
|
|
462
|
+
else
|
|
463
|
+
fail "scaffolded $rel is not valid JSON"
|
|
464
|
+
fi
|
|
465
|
+
else
|
|
466
|
+
pass "scaffolded $rel is present"
|
|
467
|
+
fi
|
|
468
|
+
else
|
|
469
|
+
fail "expected scaffolded file missing: $rel"
|
|
470
|
+
fi
|
|
471
|
+
done
|
|
472
|
+
# The scaffold must reference the Veritas engine's OWN starter output, not reimplement it:
|
|
473
|
+
# every provision source lives under assets/, never in adapter/ or flows/ (no-fork already
|
|
474
|
+
# scopes there). Assert the declared sources exist inside the kit's assets tree.
|
|
475
|
+
if node -e "
|
|
476
|
+
const fs=require('fs'),path=require('path');
|
|
477
|
+
const kit=JSON.parse(fs.readFileSync(process.argv[1]+'/kit.json','utf8'));
|
|
478
|
+
const bad=(kit.provisions||[]).filter(p=>!p.path.startsWith('assets/')||!fs.existsSync(path.join(process.argv[1],p.path)));
|
|
479
|
+
if(bad.length){console.error('bad provisions:',bad.map(p=>p.id).join(','));process.exit(1)}
|
|
480
|
+
" "$KIT" >/dev/null 2>&1; then
|
|
481
|
+
pass "all starter provisions source from the kit's assets/ tree"
|
|
482
|
+
else
|
|
483
|
+
fail "a starter provision points outside assets/ or at a missing file"
|
|
484
|
+
fi
|
|
485
|
+
# Live: a Veritas binary must be able to run readiness against the scaffolded repo.
|
|
486
|
+
VBIN2="${VERITAS_BIN:-veritas}"
|
|
487
|
+
if command -v "$VBIN2" >/dev/null 2>&1 || [[ -x "$VBIN2" ]]; then
|
|
488
|
+
( cd "$prov" && git init -q && printf '{"name":"scaffold-eval","scripts":{"test":"node -e \"process.exit(0)\""}}\n' > package.json \
|
|
489
|
+
&& git add -A && git -c user.email=eval@local -c user.name=eval commit -qm scaffold ) >/dev/null 2>&1
|
|
490
|
+
if ( cd "$prov" && "$VBIN2" readiness --working-tree >/dev/null 2>&1 ); then :; fi
|
|
491
|
+
if ls "$prov/.kontourai/veritas/evidence/"*.json >/dev/null 2>&1; then
|
|
492
|
+
pass "veritas readiness runs end-to-end on the kit-scaffolded repo (evidence report produced)"
|
|
493
|
+
else
|
|
494
|
+
fail "veritas readiness produced no evidence report on the scaffolded repo"
|
|
495
|
+
fi
|
|
496
|
+
else
|
|
497
|
+
echo " - SKIP scaffold readiness leg (no Veritas binary; set VERITAS_BIN to enable)"
|
|
498
|
+
fi
|
|
499
|
+
fi
|
|
500
|
+
|
|
501
|
+
# --- Governance git-hook provisioning (Slice 3 PR / #648) --------------------------
|
|
502
|
+
# The kit ships the two governance git hooks as provisions[]; `kit provision` lands them
|
|
503
|
+
# (non-executable), and a documented chmod + core.hooksPath step activates them. This asserts
|
|
504
|
+
# the hook files land with the expected bodies and that, once activated, the pre-push hook fires.
|
|
505
|
+
echo "--- governance git-hook provisioning ---"
|
|
506
|
+
FA_CLI2="$ROOT/build/src/cli.js"
|
|
507
|
+
if [[ ! -f "$FA_CLI2" ]]; then
|
|
508
|
+
fail "flow-agents CLI not built at build/src/cli.js (run npm run build)"
|
|
509
|
+
else
|
|
510
|
+
hookrepo="$TMP_DIR/hook-provisioned-repo"; mkdir -p "$hookrepo"
|
|
511
|
+
( cd "$hookrepo" && git init -q && printf '{"name":"hook-eval","scripts":{"prepush":"echo PREPUSH-RAN"}}\n' > package.json )
|
|
512
|
+
if node "$FA_CLI2" kit provision "$KIT" --target "$hookrepo" >"$TMP_DIR/hookprov.out" 2>&1; then
|
|
513
|
+
pass "kit provision lands the governance git hooks"
|
|
514
|
+
else
|
|
515
|
+
fail "kit provision (hooks) failed"; sed -n '1,20p' "$TMP_DIR/hookprov.out"
|
|
516
|
+
fi
|
|
517
|
+
# Both hook files present, match the committed kit assets byte-for-byte, AND carry their
|
|
518
|
+
# defining command. The byte-match alone cannot catch a corrupted kit asset (a bad asset is
|
|
519
|
+
# copied verbatim and still matches itself), so a content assertion pins what each hook must do.
|
|
520
|
+
declare -A hook_must_contain=(
|
|
521
|
+
[pre-push]='npm run --if-present prepush'
|
|
522
|
+
[post-commit]='veritas readiness --changed-from HEAD~1 --changed-to HEAD'
|
|
523
|
+
)
|
|
524
|
+
for hook in pre-push post-commit; do
|
|
525
|
+
if [[ -f "$hookrepo/.githooks/$hook" ]]; then
|
|
526
|
+
if cmp -s "$hookrepo/.githooks/$hook" "$KIT/assets/starter-hooks/githooks/$hook"; then
|
|
527
|
+
pass "scaffolded .githooks/$hook matches the kit asset byte-for-byte"
|
|
528
|
+
else
|
|
529
|
+
fail "scaffolded .githooks/$hook differs from the kit asset"
|
|
530
|
+
fi
|
|
531
|
+
if grep -qF "${hook_must_contain[$hook]}" "$hookrepo/.githooks/$hook"; then
|
|
532
|
+
pass "scaffolded .githooks/$hook invokes its defining command (${hook_must_contain[$hook]})"
|
|
533
|
+
else
|
|
534
|
+
fail "scaffolded .githooks/$hook is missing its defining command (${hook_must_contain[$hook]}) — corrupted asset?"
|
|
535
|
+
fi
|
|
536
|
+
else
|
|
537
|
+
fail "expected git hook missing: .githooks/$hook"
|
|
538
|
+
fi
|
|
539
|
+
done
|
|
540
|
+
# Provisions land non-executable by design (the engine copy is agent-blind) — assert for BOTH.
|
|
541
|
+
for hook in pre-push post-commit; do
|
|
542
|
+
if [[ -x "$hookrepo/.githooks/$hook" ]]; then
|
|
543
|
+
fail "provisioned .githooks/$hook is already executable — provisioning should be agent-blind (no +x)"
|
|
544
|
+
else
|
|
545
|
+
pass "provisioned .githooks/$hook lands non-executable (agent-blind copy; activation is explicit)"
|
|
546
|
+
fi
|
|
547
|
+
done
|
|
548
|
+
( cd "$hookrepo" && chmod +x .githooks/pre-push .githooks/post-commit && git config core.hooksPath .githooks )
|
|
549
|
+
if [[ "$(cd "$hookrepo" && git config --get core.hooksPath)" == ".githooks" ]]; then
|
|
550
|
+
pass "activation sets core.hooksPath to .githooks"
|
|
551
|
+
else
|
|
552
|
+
fail "activation did not set core.hooksPath"
|
|
553
|
+
fi
|
|
554
|
+
# Prove GIT actually dispatches the hook via core.hooksPath — not just direct invocation. Push
|
|
555
|
+
# to a local bare remote; the pre-push hook (runs `npm run --if-present prepush`) fires through
|
|
556
|
+
# git's own hook machinery. Output captured to a file so pipefail + git's SIGPIPE can't interfere.
|
|
557
|
+
( cd "$hookrepo" && git -c user.email=eval@local -c user.name=eval commit -qm base --allow-empty ) >/dev/null 2>&1
|
|
558
|
+
bare="$TMP_DIR/hook-remote.git"; git init --bare -q "$bare"
|
|
559
|
+
( cd "$hookrepo" && git remote add origin "$bare" && git push -q origin HEAD:refs/heads/main ) >"$TMP_DIR/gitpush.out" 2>&1
|
|
560
|
+
if grep -qF PREPUSH-RAN "$TMP_DIR/gitpush.out"; then
|
|
561
|
+
pass "git dispatches the pre-push hook via core.hooksPath (real git push fires it)"
|
|
562
|
+
else
|
|
563
|
+
fail "git push did not fire the pre-push hook via core.hooksPath"; sed -n '1,12p' "$TMP_DIR/gitpush.out"
|
|
564
|
+
fi
|
|
565
|
+
# No-fork: hook assets live under assets/, and invoke the veritas CLI — they must not vendor
|
|
566
|
+
# rule/claim evaluation. (assets/ is outside the adapter/flows no-fork scope; assert explicitly.)
|
|
567
|
+
if rg -q -i 'evaluateRepoStandards|evidence-check-runner\.mjs|class +[A-Za-z]*RuleEngine' "$KIT/assets/starter-hooks" 2>/dev/null; then
|
|
568
|
+
fail "governance hook assets appear to vendor Veritas evaluation logic (no-fork violated)"
|
|
569
|
+
else
|
|
570
|
+
pass "no-fork: governance hooks invoke the veritas CLI only (no vendored rule/claim engine)"
|
|
571
|
+
fi
|
|
572
|
+
fi
|
|
573
|
+
|
|
574
|
+
# --- consult-standards skill (Slice 4 / #649): JIT guidance via `veritas explain` ---------
|
|
575
|
+
# A pull-based advisory skill telling an agent to run `veritas explain --file <path>` before
|
|
576
|
+
# editing. No MCP server; wraps the veritas CLI, reimplements no evaluation.
|
|
577
|
+
echo "--- consult-standards skill ---"
|
|
578
|
+
CONSULT_SKILL="$KIT/skills/consult-standards/SKILL.md"
|
|
579
|
+
if [[ -f "$CONSULT_SKILL" ]]; then
|
|
580
|
+
pass "consult-standards SKILL.md is present"
|
|
581
|
+
else
|
|
582
|
+
fail "consult-standards SKILL.md is missing"
|
|
583
|
+
fi
|
|
584
|
+
if rg -q '"id": *"veritas-governance\.consult-standards"' "$KIT/kit.json" && rg -q '"path": *"skills/consult-standards/SKILL.md"' "$KIT/kit.json"; then
|
|
585
|
+
pass "consult-standards skill is registered in kit.json skills[]"
|
|
586
|
+
else
|
|
587
|
+
fail "consult-standards skill is NOT registered in kit.json skills[]"
|
|
588
|
+
fi
|
|
589
|
+
# It must point agents at `veritas explain` (the JIT producer), not vendor evaluation.
|
|
590
|
+
if grep -qF 'veritas explain' "$CONSULT_SKILL"; then
|
|
591
|
+
pass "consult-standards points at the veritas explain CLI"
|
|
592
|
+
else
|
|
593
|
+
fail "consult-standards does not reference veritas explain"
|
|
594
|
+
fi
|
|
595
|
+
if rg -q -i 'evaluateRepoStandards|evidence-check-runner\.mjs|class +[A-Za-z]*RuleEngine' "$KIT/skills/consult-standards" 2>/dev/null; then
|
|
596
|
+
fail "consult-standards appears to vendor Veritas evaluation logic (no-fork violated)"
|
|
597
|
+
else
|
|
598
|
+
pass "no-fork: consult-standards wraps the veritas CLI, no vendored rule/claim engine"
|
|
599
|
+
fi
|
|
600
|
+
# No-MCP invariant (#649 / ADR 0011): the kit ships no MCP server CODE and declares no MCP
|
|
601
|
+
# dependency. Scoped to non-markdown files so the docs' explicit "no MCP server" prose (which
|
|
602
|
+
# names the concept precisely to say the kit avoids it) does not trip the check.
|
|
603
|
+
if rg -q -i 'modelcontextprotocol|new +McpServer|StdioServerTransport|createMcpServer' "$KIT" --glob '!*.md' 2>/dev/null; then
|
|
604
|
+
fail "kit ships MCP server code/dependency — #649 guidance is a skill, not an MCP server (ADR 0011)"
|
|
605
|
+
else
|
|
606
|
+
pass "no MCP server: JIT guidance is an agent-pull skill (ADR 0011)"
|
|
607
|
+
fi
|
|
608
|
+
# Live leg: with a Veritas binary, a scaffolded repo's `veritas explain --file` produces JIT context.
|
|
609
|
+
VBIN3="${VERITAS_BIN:-veritas}"
|
|
610
|
+
if command -v "$VBIN3" >/dev/null 2>&1 || [[ -x "$VBIN3" ]]; then
|
|
611
|
+
cs="$TMP_DIR/consult-repo"; mkdir -p "$cs"
|
|
612
|
+
( cd "$cs" && git init -q && printf '{"name":"consult-eval","scripts":{"test":"node -e \\"process.exit(0)\\""}}\n' > package.json && "$VBIN3" init >/dev/null 2>&1 )
|
|
613
|
+
explain_out="$( cd "$cs" && "$VBIN3" explain --file package.json 2>&1 )"
|
|
614
|
+
if printf '%s' "$explain_out" | grep -qF 'Veritas JIT Context'; then
|
|
615
|
+
pass "veritas explain --file produces JIT context on a governed repo (the guidance the skill invokes)"
|
|
616
|
+
else
|
|
617
|
+
fail "veritas explain --file did not produce JIT context"; printf '%s\n' "$explain_out" | sed -n '1,8p'
|
|
618
|
+
fi
|
|
619
|
+
else
|
|
620
|
+
echo " - SKIP consult-standards live leg (no Veritas binary; set VERITAS_BIN to enable)"
|
|
621
|
+
fi
|
|
622
|
+
|
|
367
623
|
echo ""
|
|
368
624
|
if [[ "$errors" -eq 0 ]]; then
|
|
369
625
|
echo "PASS: veritas-governance kit gate demo (positive passes, negative blocks)"
|