@kontourai/flow-agents 4.0.0 → 4.2.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 +34 -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/scripts/telemetry/lib/config.sh +29 -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/scripts/telemetry/lib/config.sh +29 -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_liveness_console_relay.sh +91 -1
- package/dist/base/evals/integration/test_liveness_heartbeat.sh +66 -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/base/scripts/hooks/claude-telemetry-hook.js +6 -0
- package/dist/base/scripts/hooks/lib/liveness-heartbeat.js +42 -1
- package/dist/base/scripts/hooks/lib/liveness-write.js +109 -9
- package/dist/base/scripts/liveness/relay.sh +23 -11
- package/dist/base/scripts/telemetry/lib/config.sh +29 -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/scripts/telemetry/lib/config.sh +29 -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_liveness_console_relay.sh +91 -1
- package/dist/claude-code/evals/integration/test_liveness_heartbeat.sh +66 -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/claude-code/scripts/hooks/claude-telemetry-hook.js +6 -0
- package/dist/claude-code/scripts/hooks/lib/liveness-heartbeat.js +42 -1
- package/dist/claude-code/scripts/hooks/lib/liveness-write.js +109 -9
- package/dist/claude-code/scripts/liveness/relay.sh +23 -11
- package/dist/claude-code/scripts/telemetry/lib/config.sh +29 -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/scripts/telemetry/lib/config.sh +29 -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_liveness_console_relay.sh +91 -1
- package/dist/codex/evals/integration/test_liveness_heartbeat.sh +66 -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/codex/scripts/hooks/claude-telemetry-hook.js +6 -0
- package/dist/codex/scripts/hooks/lib/liveness-heartbeat.js +42 -1
- package/dist/codex/scripts/hooks/lib/liveness-write.js +109 -9
- package/dist/codex/scripts/liveness/relay.sh +23 -11
- package/dist/codex/scripts/telemetry/lib/config.sh +29 -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/scripts/telemetry/lib/config.sh +29 -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_liveness_console_relay.sh +91 -1
- package/dist/kiro/evals/integration/test_liveness_heartbeat.sh +66 -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/kiro/scripts/hooks/claude-telemetry-hook.js +6 -0
- package/dist/kiro/scripts/hooks/lib/liveness-heartbeat.js +42 -1
- package/dist/kiro/scripts/hooks/lib/liveness-write.js +109 -9
- package/dist/kiro/scripts/liveness/relay.sh +23 -11
- package/dist/kiro/scripts/telemetry/lib/config.sh +29 -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/scripts/telemetry/lib/config.sh +29 -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_liveness_console_relay.sh +91 -1
- package/dist/opencode/evals/integration/test_liveness_heartbeat.sh +66 -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/opencode/scripts/hooks/claude-telemetry-hook.js +6 -0
- package/dist/opencode/scripts/hooks/lib/liveness-heartbeat.js +42 -1
- package/dist/opencode/scripts/hooks/lib/liveness-write.js +109 -9
- package/dist/opencode/scripts/liveness/relay.sh +23 -11
- package/dist/opencode/scripts/telemetry/lib/config.sh +29 -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/scripts/telemetry/lib/config.sh +29 -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_liveness_console_relay.sh +91 -1
- package/dist/pi/evals/integration/test_liveness_heartbeat.sh +66 -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/dist/pi/scripts/hooks/claude-telemetry-hook.js +6 -0
- package/dist/pi/scripts/hooks/lib/liveness-heartbeat.js +42 -1
- package/dist/pi/scripts/hooks/lib/liveness-write.js +109 -9
- package/dist/pi/scripts/liveness/relay.sh +23 -11
- package/dist/pi/scripts/telemetry/lib/config.sh +29 -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_liveness_console_relay.sh +91 -1
- package/evals/integration/test_liveness_heartbeat.sh +66 -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/scripts/hooks/claude-telemetry-hook.js +6 -0
- package/scripts/hooks/lib/liveness-heartbeat.js +42 -1
- package/scripts/hooks/lib/liveness-write.js +109 -9
- package/scripts/liveness/relay.sh +23 -11
- package/scripts/telemetry/lib/config.sh +29 -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
|
@@ -1271,6 +1271,263 @@ else
|
|
|
1271
1271
|
_fail "extra criteria failure did not mention criteria mismatch"
|
|
1272
1272
|
fi
|
|
1273
1273
|
|
|
1274
|
+
# --- waves.json (#663 slice 1): wave manifest + reconcile-against-manifest as data ---------
|
|
1275
|
+
# The manifest is additive: every earlier fixture directory in this file has no waves.json and
|
|
1276
|
+
# still validates — that is the "absent file changes nothing" half of AC1.
|
|
1277
|
+
|
|
1278
|
+
GOOD_WAVES="$TMPDIR_EVAL/good-waves"
|
|
1279
|
+
mkdir -p "$GOOD_WAVES"
|
|
1280
|
+
cat > "$GOOD_WAVES/waves.json" <<'JSON'
|
|
1281
|
+
{
|
|
1282
|
+
"schema_version": "1.0",
|
|
1283
|
+
"task_slug": "good-waves",
|
|
1284
|
+
"waves": [
|
|
1285
|
+
{
|
|
1286
|
+
"wave_id": "execute-wave-1",
|
|
1287
|
+
"step": "execute",
|
|
1288
|
+
"declared_at": "2026-07-16T00:00:00Z",
|
|
1289
|
+
"expected_workers": [
|
|
1290
|
+
{"worker_id": "worker-1", "task": "implement module a", "owned_files": ["src/a.ts"]},
|
|
1291
|
+
{"worker_id": "worker-2", "task": "implement module b"}
|
|
1292
|
+
],
|
|
1293
|
+
"worker_results": [
|
|
1294
|
+
{"worker_id": "worker-1", "status": "completed", "summary": "module a implemented", "recorded_at": "2026-07-16T01:00:00Z"},
|
|
1295
|
+
{"worker_id": "worker-2", "status": "failed", "summary": "module b tests failing", "recorded_at": "2026-07-16T01:00:00Z"}
|
|
1296
|
+
],
|
|
1297
|
+
"reconciliation": {
|
|
1298
|
+
"status": "complete",
|
|
1299
|
+
"expected_count": 2,
|
|
1300
|
+
"reported_count": 2,
|
|
1301
|
+
"summary": "2 of 2 reported; no workers not_reported",
|
|
1302
|
+
"reconciled_at": "2026-07-16T01:05:00Z"
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
]
|
|
1306
|
+
}
|
|
1307
|
+
JSON
|
|
1308
|
+
|
|
1309
|
+
if flow_agents_node "$VALIDATOR" "$GOOD_WAVES" >"$TMPDIR_EVAL/good-waves.out" 2>&1; then
|
|
1310
|
+
_pass "fully reported wave manifest passes (2 of 2 reported)"
|
|
1311
|
+
else
|
|
1312
|
+
_fail "fully reported wave manifest should pass: $(cat "$TMPDIR_EVAL/good-waves.out")"
|
|
1313
|
+
fi
|
|
1314
|
+
|
|
1315
|
+
# Scenario (issue #663 AC): 3 workers expected, one never lands a terminal record. The
|
|
1316
|
+
# reconciled manifest records worker-3 explicitly as not_reported with "2 of 3 reported" —
|
|
1317
|
+
# and that is VALID DATA (exit 0), not a hook block: slice 1 makes the drop visible, slice 2
|
|
1318
|
+
# (stop-goal-fit) decides whether to refuse. Silent absorption is what must fail, below.
|
|
1319
|
+
SCENARIO_WAVES="$TMPDIR_EVAL/scenario-waves"
|
|
1320
|
+
mkdir -p "$SCENARIO_WAVES"
|
|
1321
|
+
cat > "$SCENARIO_WAVES/waves.json" <<'JSON'
|
|
1322
|
+
{
|
|
1323
|
+
"schema_version": "1.0",
|
|
1324
|
+
"task_slug": "scenario-waves",
|
|
1325
|
+
"waves": [
|
|
1326
|
+
{
|
|
1327
|
+
"wave_id": "execute-wave-1",
|
|
1328
|
+
"step": "execute",
|
|
1329
|
+
"declared_at": "2026-07-16T00:00:00Z",
|
|
1330
|
+
"expected_workers": [
|
|
1331
|
+
{"worker_id": "worker-1", "task": "task one"},
|
|
1332
|
+
{"worker_id": "worker-2", "task": "task two"},
|
|
1333
|
+
{"worker_id": "worker-3", "task": "task three"}
|
|
1334
|
+
],
|
|
1335
|
+
"worker_results": [
|
|
1336
|
+
{"worker_id": "worker-1", "status": "completed", "summary": "done", "recorded_at": "2026-07-16T01:00:00Z"},
|
|
1337
|
+
{"worker_id": "worker-2", "status": "completed", "summary": "done", "recorded_at": "2026-07-16T01:00:00Z"},
|
|
1338
|
+
{"worker_id": "worker-3", "status": "not_reported", "summary": "no terminal report received by wave close; routed to re-dispatch", "recorded_at": "2026-07-16T01:05:00Z"}
|
|
1339
|
+
],
|
|
1340
|
+
"reconciliation": {
|
|
1341
|
+
"status": "incomplete",
|
|
1342
|
+
"expected_count": 3,
|
|
1343
|
+
"reported_count": 2,
|
|
1344
|
+
"summary": "2 of 3 reported; worker-3 not_reported",
|
|
1345
|
+
"reconciled_at": "2026-07-16T01:05:00Z"
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
]
|
|
1349
|
+
}
|
|
1350
|
+
JSON
|
|
1351
|
+
|
|
1352
|
+
if flow_agents_node "$VALIDATOR" "$SCENARIO_WAVES" >"$TMPDIR_EVAL/scenario-waves.out" 2>&1; then
|
|
1353
|
+
_pass "2-of-3 scenario with explicit not_reported worker validates as data (no silent drop, no block)"
|
|
1354
|
+
else
|
|
1355
|
+
_fail "2-of-3 not_reported scenario should validate as data: $(cat "$TMPDIR_EVAL/scenario-waves.out")"
|
|
1356
|
+
fi
|
|
1357
|
+
|
|
1358
|
+
# Silent drop: reconciliation claims complete 3-of-3 while worker-3 has NO terminal record.
|
|
1359
|
+
mkdir -p "$BAD/waves-silent-drop"
|
|
1360
|
+
cat > "$BAD/waves-silent-drop/waves.json" <<'JSON'
|
|
1361
|
+
{
|
|
1362
|
+
"schema_version": "1.0",
|
|
1363
|
+
"task_slug": "waves-silent-drop",
|
|
1364
|
+
"waves": [
|
|
1365
|
+
{
|
|
1366
|
+
"wave_id": "execute-wave-1",
|
|
1367
|
+
"step": "execute",
|
|
1368
|
+
"declared_at": "2026-07-16T00:00:00Z",
|
|
1369
|
+
"expected_workers": [
|
|
1370
|
+
{"worker_id": "worker-1", "task": "task one"},
|
|
1371
|
+
{"worker_id": "worker-2", "task": "task two"},
|
|
1372
|
+
{"worker_id": "worker-3", "task": "task three"}
|
|
1373
|
+
],
|
|
1374
|
+
"worker_results": [
|
|
1375
|
+
{"worker_id": "worker-1", "status": "completed", "summary": "done", "recorded_at": "2026-07-16T01:00:00Z"},
|
|
1376
|
+
{"worker_id": "worker-2", "status": "completed", "summary": "done", "recorded_at": "2026-07-16T01:00:00Z"}
|
|
1377
|
+
],
|
|
1378
|
+
"reconciliation": {
|
|
1379
|
+
"status": "complete",
|
|
1380
|
+
"expected_count": 3,
|
|
1381
|
+
"reported_count": 3,
|
|
1382
|
+
"summary": "3 of 3 reported",
|
|
1383
|
+
"reconciled_at": "2026-07-16T01:05:00Z"
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
]
|
|
1387
|
+
}
|
|
1388
|
+
JSON
|
|
1389
|
+
|
|
1390
|
+
if flow_agents_node "$VALIDATOR" "$BAD/waves-silent-drop" >"$TMPDIR_EVAL/waves-silent-drop.out" 2>&1; then
|
|
1391
|
+
_fail "silently dropped worker behind a complete claim should fail"
|
|
1392
|
+
elif rg -q 'worker worker-3 has no terminal status record' "$TMPDIR_EVAL/waves-silent-drop.out" \
|
|
1393
|
+
&& rg -q 'reported_count is 3 but 2 of 3 expected workers' "$TMPDIR_EVAL/waves-silent-drop.out" \
|
|
1394
|
+
&& rg -q 'complete requires every expected worker' "$TMPDIR_EVAL/waves-silent-drop.out"; then
|
|
1395
|
+
_pass "silently dropped worker fails with missing-record, count, and impossible-complete messages"
|
|
1396
|
+
else
|
|
1397
|
+
_fail "silent-drop failure did not name the dropped worker and count mismatch: $(cat "$TMPDIR_EVAL/waves-silent-drop.out")"
|
|
1398
|
+
fi
|
|
1399
|
+
|
|
1400
|
+
# A complete claim over an explicitly not_reported worker is still impossible.
|
|
1401
|
+
mkdir -p "$BAD/waves-complete-not-reported"
|
|
1402
|
+
cat > "$BAD/waves-complete-not-reported/waves.json" <<'JSON'
|
|
1403
|
+
{
|
|
1404
|
+
"schema_version": "1.0",
|
|
1405
|
+
"task_slug": "waves-complete-not-reported",
|
|
1406
|
+
"waves": [
|
|
1407
|
+
{
|
|
1408
|
+
"wave_id": "execute-wave-1",
|
|
1409
|
+
"step": "execute",
|
|
1410
|
+
"declared_at": "2026-07-16T00:00:00Z",
|
|
1411
|
+
"expected_workers": [
|
|
1412
|
+
{"worker_id": "worker-1", "task": "task one"},
|
|
1413
|
+
{"worker_id": "worker-2", "task": "task two"}
|
|
1414
|
+
],
|
|
1415
|
+
"worker_results": [
|
|
1416
|
+
{"worker_id": "worker-1", "status": "completed", "summary": "done", "recorded_at": "2026-07-16T01:00:00Z"},
|
|
1417
|
+
{"worker_id": "worker-2", "status": "not_reported", "summary": "never reported", "recorded_at": "2026-07-16T01:05:00Z"}
|
|
1418
|
+
],
|
|
1419
|
+
"reconciliation": {
|
|
1420
|
+
"status": "complete",
|
|
1421
|
+
"expected_count": 2,
|
|
1422
|
+
"reported_count": 1,
|
|
1423
|
+
"summary": "1 of 2 reported; worker-2 not_reported",
|
|
1424
|
+
"reconciled_at": "2026-07-16T01:05:00Z"
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
]
|
|
1428
|
+
}
|
|
1429
|
+
JSON
|
|
1430
|
+
|
|
1431
|
+
if flow_agents_node "$VALIDATOR" "$BAD/waves-complete-not-reported" >"$TMPDIR_EVAL/waves-complete-not-reported.out" 2>&1; then
|
|
1432
|
+
_fail "complete claim over a not_reported worker should fail"
|
|
1433
|
+
elif rg -q 'complete requires every expected worker' "$TMPDIR_EVAL/waves-complete-not-reported.out"; then
|
|
1434
|
+
_pass "complete claim over a not_reported worker fails with actionable message"
|
|
1435
|
+
else
|
|
1436
|
+
_fail "complete-over-not_reported failure did not mention the complete rule: $(cat "$TMPDIR_EVAL/waves-complete-not-reported.out")"
|
|
1437
|
+
fi
|
|
1438
|
+
|
|
1439
|
+
# Exactly one terminal record per worker.
|
|
1440
|
+
mkdir -p "$BAD/waves-duplicate-record"
|
|
1441
|
+
cat > "$BAD/waves-duplicate-record/waves.json" <<'JSON'
|
|
1442
|
+
{
|
|
1443
|
+
"schema_version": "1.0",
|
|
1444
|
+
"task_slug": "waves-duplicate-record",
|
|
1445
|
+
"waves": [
|
|
1446
|
+
{
|
|
1447
|
+
"wave_id": "execute-wave-1",
|
|
1448
|
+
"step": "execute",
|
|
1449
|
+
"declared_at": "2026-07-16T00:00:00Z",
|
|
1450
|
+
"expected_workers": [
|
|
1451
|
+
{"worker_id": "worker-1", "task": "task one"}
|
|
1452
|
+
],
|
|
1453
|
+
"worker_results": [
|
|
1454
|
+
{"worker_id": "worker-1", "status": "completed", "summary": "done", "recorded_at": "2026-07-16T01:00:00Z"},
|
|
1455
|
+
{"worker_id": "worker-1", "status": "failed", "summary": "also failed?", "recorded_at": "2026-07-16T01:01:00Z"}
|
|
1456
|
+
]
|
|
1457
|
+
}
|
|
1458
|
+
]
|
|
1459
|
+
}
|
|
1460
|
+
JSON
|
|
1461
|
+
|
|
1462
|
+
if flow_agents_node "$VALIDATOR" "$BAD/waves-duplicate-record" >"$TMPDIR_EVAL/waves-duplicate-record.out" 2>&1; then
|
|
1463
|
+
_fail "duplicate terminal record should fail"
|
|
1464
|
+
elif rg -q 'more than one terminal status record for worker worker-1' "$TMPDIR_EVAL/waves-duplicate-record.out"; then
|
|
1465
|
+
_pass "duplicate terminal record fails with actionable message"
|
|
1466
|
+
else
|
|
1467
|
+
_fail "duplicate-record failure did not name the worker: $(cat "$TMPDIR_EVAL/waves-duplicate-record.out")"
|
|
1468
|
+
fi
|
|
1469
|
+
|
|
1470
|
+
# Every reporter must be declared in the manifest before dispatch.
|
|
1471
|
+
mkdir -p "$BAD/waves-undeclared-reporter"
|
|
1472
|
+
cat > "$BAD/waves-undeclared-reporter/waves.json" <<'JSON'
|
|
1473
|
+
{
|
|
1474
|
+
"schema_version": "1.0",
|
|
1475
|
+
"task_slug": "waves-undeclared-reporter",
|
|
1476
|
+
"waves": [
|
|
1477
|
+
{
|
|
1478
|
+
"wave_id": "execute-wave-1",
|
|
1479
|
+
"step": "execute",
|
|
1480
|
+
"declared_at": "2026-07-16T00:00:00Z",
|
|
1481
|
+
"expected_workers": [
|
|
1482
|
+
{"worker_id": "worker-1", "task": "task one"}
|
|
1483
|
+
],
|
|
1484
|
+
"worker_results": [
|
|
1485
|
+
{"worker_id": "worker-1", "status": "completed", "summary": "done", "recorded_at": "2026-07-16T01:00:00Z"},
|
|
1486
|
+
{"worker_id": "worker-9", "status": "completed", "summary": "surprise", "recorded_at": "2026-07-16T01:00:00Z"}
|
|
1487
|
+
]
|
|
1488
|
+
}
|
|
1489
|
+
]
|
|
1490
|
+
}
|
|
1491
|
+
JSON
|
|
1492
|
+
|
|
1493
|
+
if flow_agents_node "$VALIDATOR" "$BAD/waves-undeclared-reporter" >"$TMPDIR_EVAL/waves-undeclared-reporter.out" 2>&1; then
|
|
1494
|
+
_fail "undeclared reporter should fail"
|
|
1495
|
+
elif rg -q 'worker worker-9 that is not declared in expected_workers' "$TMPDIR_EVAL/waves-undeclared-reporter.out"; then
|
|
1496
|
+
_pass "undeclared reporter fails with actionable message"
|
|
1497
|
+
else
|
|
1498
|
+
_fail "undeclared-reporter failure did not name the worker: $(cat "$TMPDIR_EVAL/waves-undeclared-reporter.out")"
|
|
1499
|
+
fi
|
|
1500
|
+
|
|
1501
|
+
# Terminal status vocabulary is schema-enforced.
|
|
1502
|
+
mkdir -p "$BAD/waves-bad-status"
|
|
1503
|
+
cat > "$BAD/waves-bad-status/waves.json" <<'JSON'
|
|
1504
|
+
{
|
|
1505
|
+
"schema_version": "1.0",
|
|
1506
|
+
"task_slug": "waves-bad-status",
|
|
1507
|
+
"waves": [
|
|
1508
|
+
{
|
|
1509
|
+
"wave_id": "execute-wave-1",
|
|
1510
|
+
"step": "execute",
|
|
1511
|
+
"declared_at": "2026-07-16T00:00:00Z",
|
|
1512
|
+
"expected_workers": [
|
|
1513
|
+
{"worker_id": "worker-1", "task": "task one"}
|
|
1514
|
+
],
|
|
1515
|
+
"worker_results": [
|
|
1516
|
+
{"worker_id": "worker-1", "status": "maybe-done", "summary": "unclear", "recorded_at": "2026-07-16T01:00:00Z"}
|
|
1517
|
+
]
|
|
1518
|
+
}
|
|
1519
|
+
]
|
|
1520
|
+
}
|
|
1521
|
+
JSON
|
|
1522
|
+
|
|
1523
|
+
if flow_agents_node "$VALIDATOR" "$BAD/waves-bad-status" >"$TMPDIR_EVAL/waves-bad-status.out" 2>&1; then
|
|
1524
|
+
_fail "unknown worker status should fail"
|
|
1525
|
+
elif rg -q 'status must be one of: completed, failed, blocked, not_reported' "$TMPDIR_EVAL/waves-bad-status.out"; then
|
|
1526
|
+
_pass "unknown worker status fails against the schema enum"
|
|
1527
|
+
else
|
|
1528
|
+
_fail "bad-status failure did not mention the status enum: $(cat "$TMPDIR_EVAL/waves-bad-status.out")"
|
|
1529
|
+
fi
|
|
1530
|
+
|
|
1274
1531
|
if [[ "$errors" -eq 0 ]]; then
|
|
1275
1532
|
echo "Workflow artifact integration passed."
|
|
1276
1533
|
exit 0
|
|
@@ -210,6 +210,12 @@ for (const gateId of ["verify-gate", "merge-ready-gate"]) {
|
|
|
210
210
|
for (const [reason, target] of Object.entries(expected)) if (gate.on_route_back?.[reason] !== target) throw new Error(`${gateId} ${reason} should route to ${target}`);
|
|
211
211
|
if (gate.route_back_policy?.on_exceeded !== "block") throw new Error(`${gateId} route_back_policy should block on exceeded attempts`);
|
|
212
212
|
}
|
|
213
|
+
// #695 item (a): pr-open must not be a one-way door — the composed publish-learn
|
|
214
|
+
// pr-open-gate declares the missing_evidence repair route back to verify.
|
|
215
|
+
const prOpenGate = publishLearn.gates?.["pr-open-gate"] || {};
|
|
216
|
+
if (prOpenGate.on_route_back?.missing_evidence !== "verify") throw new Error("pr-open-gate missing_evidence should route to verify");
|
|
217
|
+
if (prOpenGate.on_route_back?.default !== "verify") throw new Error("pr-open-gate default route-back should target verify");
|
|
218
|
+
if (prOpenGate.route_back_policy?.on_exceeded !== "block") throw new Error("pr-open-gate route_back_policy should block on exceeded attempts");
|
|
213
219
|
for (const stepId of ["pr-open", "merge-ready-ci", "learn"]) {
|
|
214
220
|
const step = (flow.steps || []).find((item) => item.id === stepId);
|
|
215
221
|
if (step?.uses_flow !== "builder.publish-learn") throw new Error(`${stepId} should compose builder.publish-learn`);
|
|
@@ -246,6 +246,19 @@ require_text "$PLANNING_CONTRACT" 'Stop-short risks' "planning contract defines
|
|
|
246
246
|
require_text "$PLANNING_CONTRACT" 'Source Evidence / Permalinks' "planning contract requires source evidence permalink expectations"
|
|
247
247
|
require_text "$EXECUTION_CONTRACT" 'Parallel Wave Rules' "execution contract defines parallel wave rules"
|
|
248
248
|
require_text "$EXECUTION_CONTRACT" 'modified files are recorded' "execution contract requires modified files"
|
|
249
|
+
require_text "$EXECUTION_CONTRACT" 'Wave Manifest And Reconciliation' "execution contract defines wave manifest reconciliation (#663)"
|
|
250
|
+
require_text "$EXECUTION_CONTRACT" 'N of M reported' "execution contract requires explicit N-of-M reconciliation language"
|
|
251
|
+
require_text "$EXECUTION_CONTRACT" 'not_reported' "execution contract records missing workers as not_reported"
|
|
252
|
+
require_text "$EXECUTION_CONTRACT" 'never silently absorb' "execution contract forbids silently absorbing missing workers"
|
|
253
|
+
require_text "$EXECUTE_PLAN" 'waves\.json' "execute-plan declares the wave manifest sidecar"
|
|
254
|
+
require_text "$EXECUTE_PLAN" 'N of M reported' "execute-plan reconciles waves with explicit N-of-M language"
|
|
255
|
+
require_text "$EXECUTE_PLAN" 'not_reported' "execute-plan records missing workers as not_reported"
|
|
256
|
+
require_text "$EXECUTE_PLAN" 'reconcile results against the wave manifest' "execute-plan collect step is reconcile-against-manifest"
|
|
257
|
+
require_text "$REVIEW_WORK" 'waves\.json' "review-work declares fan-out reviewer lanes in the wave manifest"
|
|
258
|
+
require_text "$REVIEW_WORK" 'N of M reported' "review-work reconciles reviewer lanes with explicit N-of-M language"
|
|
259
|
+
require_text "$REVIEW_WORK" 'not_reported' "review-work records missing reviewers as not_reported"
|
|
260
|
+
test -f "$ROOT/schemas/workflow-waves.schema.json" && pass "workflow waves schema exists" || fail "workflow waves schema exists"
|
|
261
|
+
require_text "$ROOT/src/cli/validate-workflow-artifacts.ts" 'waves\.json.*workflow-waves\.schema\.json' "validator registers waves.json against the waves schema"
|
|
249
262
|
require_text "$ARTIFACT_LIFECYCLE_DOC" 'current-state dashboard' "artifact lifecycle defines local current-state role"
|
|
250
263
|
require_text "$ARTIFACT_LIFECYCLE_DOC" 'Learning records are a routing surface' "artifact lifecycle defines learning routing semantics"
|
|
251
264
|
require_text "$ARTIFACT_LIFECYCLE_DOC" '14-30 days' "artifact lifecycle documents local retention window"
|
|
@@ -776,6 +789,9 @@ require_text "$BUILDER_BUILD_FLOW" 'probe_status' "Builder build flow names prob
|
|
|
776
789
|
require_text "$BUILDER_BUILD_FLOW" 'probe_artifact_ref' "Builder build flow names probe artifact ref"
|
|
777
790
|
require_text "$BUILDER_BUILD_FLOW" 'Stale broad continuation language after a merge is not sufficient' "Builder build flow blocks stale broad continuation"
|
|
778
791
|
require_text "$BUILDER_BUILD_FLOW" '"uses_flow": "builder.publish-learn"' "Builder build flow composes publish-learn extension"
|
|
792
|
+
require_text "$BUILDER_PUBLISH_LEARN_FLOW" '"on_route_back"' "Builder publish-learn flow declares route-back mappings (#695 item a)"
|
|
793
|
+
require_text "$BUILDER_PUBLISH_LEARN_FLOW" '"missing_evidence": "verify"' "Builder publish-learn pr-open-gate routes missing evidence to verify"
|
|
794
|
+
require_text "$BUILDER_PUBLISH_LEARN_FLOW" '"route_back_policy"' "Builder publish-learn pr-open-gate declares a route-back policy"
|
|
779
795
|
require_text "$BUILDER_PUBLISH_LEARN_FLOW" '"builder.pr-open.pull-request"' "Builder publish-learn flow exports PR-open evidence"
|
|
780
796
|
require_text "$BUILDER_PUBLISH_LEARN_FLOW" '"builder.merge-ready-ci.readiness"' "Builder publish-learn flow exports CI merge readiness evidence"
|
|
781
797
|
require_text "$BUILDER_PUBLISH_LEARN_FLOW" '"builder.learn.evidence"' "Builder publish-learn flow exports learning evidence"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "builder.publish-learn",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2",
|
|
4
4
|
"description": "Reusable delivery closeout extension: publish the verified change, confirm merge readiness from provider/CI evidence, and record learning feedback.",
|
|
5
5
|
"steps": [
|
|
6
6
|
{ "id": "pr-open", "next": "merge-ready-ci" },
|
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"gates": {
|
|
18
18
|
"pr-open-gate": {
|
|
19
19
|
"step": "pr-open",
|
|
20
|
+
"on_route_back": {
|
|
21
|
+
"missing_evidence": "verify",
|
|
22
|
+
"default": "verify"
|
|
23
|
+
},
|
|
24
|
+
"route_back_policy": {
|
|
25
|
+
"max_attempts": 3,
|
|
26
|
+
"on_exceeded": "block"
|
|
27
|
+
},
|
|
20
28
|
"expects": [
|
|
21
29
|
{
|
|
22
30
|
"id": "pull-request-opened",
|
|
@@ -11,7 +11,7 @@ Implement an approved plan while preserving scope, traceability, and recovery co
|
|
|
11
11
|
|
|
12
12
|
- **Role:** canonical Builder build-step producer and standalone execution primitive.
|
|
13
13
|
- **Binding:** `builder.build` step `execute`.
|
|
14
|
-
- **Produces:** the active session execution report (`<slug>--deliver.md`), `state.json`, and `implementation-scope` for an active matching run.
|
|
14
|
+
- **Produces:** the active session execution report (`<slug>--deliver.md`), `state.json`, the wave manifest (`waves.json`) for delegated waves, and `implementation-scope` for an active matching run.
|
|
15
15
|
- **Standalone no-run behavior:** execute the supplied plan and return execution evidence. Do not start a Builder run, record Builder evidence, or imply that an inactive Builder flow advanced.
|
|
16
16
|
|
|
17
17
|
## Model Routing
|
|
@@ -33,8 +33,8 @@ Use `RepositoryAdapter` for repository, target revision, worktree, and changed-f
|
|
|
33
33
|
|
|
34
34
|
1. Read the plan. Return it to `plan-work` when it lacks a Definition Of Done, stable acceptance criteria, task mapping, sandbox boundary, or usable execution scope.
|
|
35
35
|
2. Before delegation, compare the current target revision with the plan's base through `RepositoryAdapter`. Re-ground the plan when changed scope intersects its assumptions; record missing confirmation as `NOT_VERIFIED` rather than treating it as fresh.
|
|
36
|
-
3.
|
|
37
|
-
4. Run safe independent tasks concurrently and dependent tasks in order. Between waves, collect
|
|
36
|
+
3. Before dispatching a wave that delegates work, declare it in the session's wave manifest (`waves.json`, schema `schemas/workflow-waves.schema.json`): `wave_id`, owning step, and one `expected_workers` entry per worker, so the expected worker count (M) exists before any result arrives. Then give each worker its bounded task, owned files, relevant acceptance IDs, required evidence, sandbox/worktree constraints, rollback conditions, and plan reference.
|
|
37
|
+
4. Run safe independent tasks concurrently and dependent tasks in order. Between waves, reconcile results against the wave manifest — never collect from memory or prose. Every declared worker must land exactly one terminal status record (`completed`, `failed`, or `blocked`). Record each declared worker that has no terminal record as `not_reported` — never silently absorb a missing worker — then record the wave's `reconciliation` with an explicit "N of M reported" summary naming the `not_reported` workers (for example "2 of 3 reported; worker-3 not_reported"). Treat the wave as complete only when N equals M; an incomplete wave is visible data that routes to re-dispatch, a blocker, or an explicit accepted gap. After reconciliation, resolve conflicts and update the execution record with completed work, remaining work, changed files, and supported acceptance criteria.
|
|
38
38
|
5. For UI tasks, include the applicable frontend design guidance in the worker instruction.
|
|
39
39
|
6. When implementation completes, record scope integrity: changed files, accepted deviations, task-to-criterion traceability, evidence, and outstanding gaps. Hand off to report-only review and verification; do not treat implementation as verification.
|
|
40
40
|
7. Reconcile the execution report and `state.json` with the active session artifact directory.
|
|
@@ -49,6 +49,7 @@ The execution record must identify:
|
|
|
49
49
|
- each completed task and its supported `AC*` identifiers
|
|
50
50
|
- changed files and any scope deviation with approval or route-back reason
|
|
51
51
|
- worker evidence, conflicts, rollback notes, remaining work, and next action
|
|
52
|
+
- per-wave reconciliation against the manifest: "N of M reported" and any `not_reported` workers with their recovery route
|
|
52
53
|
- current revision comparison and re-grounding decision
|
|
53
54
|
|
|
54
55
|
## Active Builder Evidence
|
|
@@ -32,6 +32,18 @@ Select ready backlog work and prepare a bounded handoff without implementing it.
|
|
|
32
32
|
|
|
33
33
|
An optional GitHub adapter may implement these interfaces. Do not require GitHub issue numbers, labels, Projects, pull requests, `gh`, or provider-native dependency APIs.
|
|
34
34
|
|
|
35
|
+
### Readiness Source Integrity
|
|
36
|
+
|
|
37
|
+
A configured `BoardProvider` is the canonical Backlog Readiness Source
|
|
38
|
+
(`docs/decisions/backlog-readiness-source.md`). When the configured board
|
|
39
|
+
yields zero ready items or cannot be read, record the provider warning
|
|
40
|
+
(`zero_ready_items`, or the read failure) in the pull-work artifact and route
|
|
41
|
+
to triage/intake for an explicit readiness decision. Never silently
|
|
42
|
+
substitute `WorkItemProvider` issue-level listing for board-driven selection:
|
|
43
|
+
a deliberate issue-listing pass must carry the `board_provider_bypassed`
|
|
44
|
+
warning it received into the artifact, with the reason the board was
|
|
45
|
+
bypassed.
|
|
46
|
+
|
|
35
47
|
## Model Routing
|
|
36
48
|
|
|
37
49
|
For board scans, WIP assessment, dependency joins, and selection bookkeeping, resolve `delegate-mechanical` from `.datum/config.json`. If unavailable, inherit the session model and record the fallback.
|
|
@@ -58,6 +58,17 @@ fallback or escalation in the critique artifact.
|
|
|
58
58
|
security-policy changes.
|
|
59
59
|
- `tool-dependencies-updater` for dependency-manifest, lockfile, or dependency-tooling changes.
|
|
60
60
|
- A configured domain or policy reviewer when the repository requires one.
|
|
61
|
+
|
|
62
|
+
When review fans out to delegated reviewer lanes, declare the fan-out in the
|
|
63
|
+
session's wave manifest (`waves.json`, schema
|
|
64
|
+
`schemas/workflow-waves.schema.json`, step `review`) with one
|
|
65
|
+
`expected_workers` entry per reviewer lane before dispatch. Reconcile against
|
|
66
|
+
that manifest at collection — "N of M reported" — instead of collecting from
|
|
67
|
+
memory: every declared reviewer lands exactly one terminal status record;
|
|
68
|
+
record a reviewer that never reports as `not_reported` in the manifest —
|
|
69
|
+
never silently absorb it — and carry that lane into the critique as
|
|
70
|
+
`not_verified` with the missing report named. A missing reviewer is never a
|
|
71
|
+
clean lane.
|
|
61
72
|
3. Use repository-provided scanners and checks when applicable. Do not install
|
|
62
73
|
a scanner, silently substitute a different one, or mark an unavailable
|
|
63
74
|
required lane clean; record the lane as `NOT_VERIFIED` with the missing
|
|
@@ -19,22 +19,21 @@
|
|
|
19
19
|
// external-tool `fail`/`missing` (mirrors veritas/src/surface/readiness.mjs's own PRIVATE
|
|
20
20
|
// `readinessHasBlockingFailure` helper, and matches Surface's `buildTrustReport` weakest-link
|
|
21
21
|
// derivation, which downgrades a readiness claim to `rejected` on any rejected Require —
|
|
22
|
-
// tests/surface/readiness-derived-claim.test.mjs:256-278). It
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
// derives a non-`verified` status -> gate blocks.
|
|
22
|
+
// tests/surface/readiness-derived-claim.test.mjs:256-278). It does NOT treat Veritas's
|
|
23
|
+
// `promotion_allowed` flag as a safety signal: promotion_allowed is a workstream-routing hint
|
|
24
|
+
// from src/repo/routing.mjs `resolveWorkstream()` (file-pattern lane resolution) — it never
|
|
25
|
+
// reads policy_results, evidence checks, uncovered paths, or external tools, so it cannot
|
|
26
|
+
// account for blocking failures. The divergence this originally guarded against —
|
|
27
|
+
// kontourai/veritas#106 (https://github.com/kontourai/veritas/issues/106), Veritas's exported
|
|
28
|
+
// readinessVerdict/readinessSurfaceStatus honoring promotion_allowed before checking blocking
|
|
29
|
+
// failures — is FIXED: veritas src/surface/readiness.mjs now checks
|
|
30
|
+
// readinessHasBlockingFailure() before the promotion_allowed short-circuit (regression-tested
|
|
31
|
+
// in veritas tests/surface/readiness-verdict.test.mjs), so this adapter and Veritas's exported
|
|
32
|
+
// functions now agree. The adapter keeps its own derivation because kit code consumes the
|
|
33
|
+
// recorded artifact, not Veritas library exports; the record fields and blocking-failure
|
|
34
|
+
// semantics it reads are frozen in veritas docs/architecture/engine-surface-seam.md
|
|
35
|
+
// (flow-agents#646 Slice 1). Ready (no blocking failure) -> Surface derives `verified` -> gate
|
|
36
|
+
// passes. Not-ready -> Surface derives a non-`verified` status -> gate blocks.
|
|
38
37
|
//
|
|
39
38
|
// Usage: node readiness-to-trust-bundle.mjs --report <veritas-evidence-report.json> \
|
|
40
39
|
// --out <bundle.json> [--subject-id <id>]
|
|
@@ -54,10 +53,10 @@ function parseArgs(argv) {
|
|
|
54
53
|
return out;
|
|
55
54
|
}
|
|
56
55
|
|
|
57
|
-
// Mirrors veritas/src/surface/readiness.mjs's
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
56
|
+
// Mirrors veritas/src/surface/readiness.mjs's readinessHasBlockingFailure — reads Veritas's
|
|
57
|
+
// OWN recorded results; does not evaluate standards. Ignores promotion_allowed (a routing hint,
|
|
58
|
+
// not a safety signal — see header comment above); since veritas#106 was fixed, Veritas's own
|
|
59
|
+
// verdict functions (src/surface/readiness.mjs) apply this same blocking-failure-first semantics.
|
|
61
60
|
export function hasBlockingFailure(record) {
|
|
62
61
|
if (record.uncovered_path_result === "fail") return true;
|
|
63
62
|
if ((record.policy_results ?? []).some((r) => r.passed === false && r.enforcementLevel === "Require")) return true;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
set -eu
|
|
3
|
+
|
|
4
|
+
if [ "${VERITAS_HOOK_SKIP:-${AI_GUIDANCE_HOOK_SKIP:-0}}" = "1" ]; then
|
|
5
|
+
exit 0
|
|
6
|
+
fi
|
|
7
|
+
|
|
8
|
+
if git rev-parse --verify --quiet HEAD~1 >/dev/null; then
|
|
9
|
+
npm exec -- veritas readiness --changed-from HEAD~1 --changed-to HEAD
|
|
10
|
+
else
|
|
11
|
+
EMPTY_TREE="$(git hash-object -t tree /dev/null)"
|
|
12
|
+
npm exec -- veritas readiness --changed-from "$EMPTY_TREE" --changed-to HEAD
|
|
13
|
+
fi
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
set -eu
|
|
3
|
+
|
|
4
|
+
if [ "${VERITAS_HOOK_SKIP:-${AI_GUIDANCE_HOOK_SKIP:-0}}" = "1" ]; then
|
|
5
|
+
exit 0
|
|
6
|
+
fi
|
|
7
|
+
|
|
8
|
+
if [ ! -f package.json ]; then
|
|
9
|
+
echo "Veritas pre-push: package.json not found; skipping."
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
npm run --if-present prepush
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Veritas Governance
|
|
2
|
+
|
|
3
|
+
Protected Standards require authority-backed review. Do not modify without a fresh Veritas attestation:
|
|
4
|
+
- `.veritas/repo-map.json`
|
|
5
|
+
- `.veritas/repo-standards/`
|
|
6
|
+
- `.veritas/authority/`
|
|
7
|
+
|
|
8
|
+
Authority-backed attestations require an explicit human approval reference. Agents may prepare
|
|
9
|
+
`veritas attest ... --approval-ref <ref>` commands, but must not invent the reference or record
|
|
10
|
+
the attestation without a durable approval artifact from the human authority.
|
|
11
|
+
|
|
12
|
+
Standards Growth is additive. Developers and agents may propose:
|
|
13
|
+
- new work areas for new feature directories
|
|
14
|
+
- advisory requirements for new work areas
|
|
15
|
+
- clearer change guidance backed by evidence
|
|
16
|
+
|
|
17
|
+
Do not weaken or delete existing standards without the required authority.
|
|
18
|
+
|
|
19
|
+
Generated Evidence is output, not the source of standards:
|
|
20
|
+
- `.kontourai/veritas/evidence/`
|
|
21
|
+
- `.kontourai/veritas/standards-feedback-drafts/`
|
|
22
|
+
- `.kontourai/veritas/standards-feedback/`
|
|
23
|
+
- `.kontourai/veritas/repo-conformance/`
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Veritas Starter Kit
|
|
2
|
+
|
|
3
|
+
This repo was bootstrapped for `your-project` with a conservative starter kit for agent-guided development.
|
|
4
|
+
|
|
5
|
+
## Generated Files
|
|
6
|
+
|
|
7
|
+
- `.veritas/README.md`
|
|
8
|
+
- `.veritas/GOVERNANCE.md`
|
|
9
|
+
- `.veritas/repo-map.json`
|
|
10
|
+
- `.veritas/repo-standards/default.repo-standards.json`
|
|
11
|
+
- `.veritas/authority/default.authority-settings.json`
|
|
12
|
+
|
|
13
|
+
## Inferred Repo Shape
|
|
14
|
+
|
|
15
|
+
- Repo kind: `application`
|
|
16
|
+
- Source roots: `src/` (default)
|
|
17
|
+
- Tooling roots: `none`
|
|
18
|
+
- Test roots: `tests/` (default)
|
|
19
|
+
- GitHub workflows detected: `no`
|
|
20
|
+
- Matching scripts seen: `test`
|
|
21
|
+
|
|
22
|
+
## What To Do Next
|
|
23
|
+
|
|
24
|
+
1. Confirm the inferred source/test roots match the real repo layout.
|
|
25
|
+
2. Replace the suggested evidenceCheck if a stronger project health command exists.
|
|
26
|
+
3. Keep uncertain requirements in Observe or Guide until evidence shows they should be required.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## Suggested Commands
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx @kontourai/veritas readiness --working-tree
|
|
34
|
+
npx @kontourai/veritas readiness --check coverage --working-tree
|
|
35
|
+
npx @kontourai/veritas integrations codex status
|
|
36
|
+
npx @kontourai/veritas attest bootstrap --actor <authority-id> --approval-ref <human-approval-reference> --non-interactive
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If you prefer explicit paths:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx @kontourai/veritas readiness --check evidence \
|
|
43
|
+
--repo-map ./.veritas/repo-map.json \
|
|
44
|
+
--repo-standards ./.veritas/repo-standards/default.repo-standards.json \
|
|
45
|
+
package.json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Suggested Evidence Check
|
|
49
|
+
|
|
50
|
+
`npm run test`
|
|
51
|
+
|
|
52
|
+
## Work-Area Evidence Routing
|
|
53
|
+
|
|
54
|
+
This starter stays on the minimal single-check path by default. Work-area evidence routing can be added later if the repo grows multiple independently verified work areas.
|
|
55
|
+
|
|
56
|
+
## Why This Exists
|
|
57
|
+
|
|
58
|
+
The goal is to give developers and agents just-in-time repo guidance from day one, while keeping review and CI grounded in the same starter standards.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"id": "your-project-default",
|
|
4
|
+
"name": "your-project Default",
|
|
5
|
+
"description": "Conservative starter settings: observe first, learn from evidence, and only require what has earned trust.",
|
|
6
|
+
"defaults": {
|
|
7
|
+
"mode": "observe",
|
|
8
|
+
"new_rule_enforcement_level": "Observe"
|
|
9
|
+
},
|
|
10
|
+
"review_preferences": {
|
|
11
|
+
"human_signoff_required_for_stage_promotion": true,
|
|
12
|
+
"reviewer_confidence_scale": [
|
|
13
|
+
"low",
|
|
14
|
+
"medium",
|
|
15
|
+
"high"
|
|
16
|
+
],
|
|
17
|
+
"major_rewrite_definition": "A major rewrite replaces the main structure or requirement flow instead of making local edits.",
|
|
18
|
+
"attestation_approval_ref_policy": {
|
|
19
|
+
"mode": "reference-only",
|
|
20
|
+
"allowed_prefixes": []
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"promotion_preferences": {
|
|
24
|
+
"evidence_checks_required_before_require": [
|
|
25
|
+
"npm run test"
|
|
26
|
+
],
|
|
27
|
+
"warnings_block_in_ci": false,
|
|
28
|
+
"require_consistent_feedback_before_promotion": true
|
|
29
|
+
}
|
|
30
|
+
}
|