@jtf19/vibecoding-kit 0.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/AGENTS.md +84 -0
- package/CHANGELOG.md +28 -0
- package/CLAUDE.md +137 -0
- package/CODE_OF_CONDUCT.md +30 -0
- package/CONTRIBUTING.md +69 -0
- package/LICENSE +67 -0
- package/README.md +162 -0
- package/SECURITY.md +34 -0
- package/adapters/claude/install.md +70 -0
- package/adapters/claude/plugin.json +38 -0
- package/adapters/claude/settings.example.json +15 -0
- package/adapters/codex/hooks.example.json +15 -0
- package/adapters/codex/install.md +72 -0
- package/adapters/codex/plugin.json +58 -0
- package/adapters/cursor/hooks.example.json +17 -0
- package/adapters/cursor/install.md +72 -0
- package/adapters/cursor/plugin.json +42 -0
- package/adapters/opencode/install.md +95 -0
- package/adapters/opencode/plugin.js +56 -0
- package/adapters/opencode/plugin.json +58 -0
- package/adapters/pi/extension.ts +56 -0
- package/adapters/pi/install.md +95 -0
- package/adapters/pi/plugin.json +58 -0
- package/bin/vibe-cli-usage.mjs +43 -0
- package/bin/vibe.mjs +120 -0
- package/docs/acceptance-checklist.md +1226 -0
- package/docs/architecture-debt-burndown.md +537 -0
- package/docs/architecture.md +77 -0
- package/docs/ci-evidence-onboarding.md +143 -0
- package/docs/development.md +71 -0
- package/docs/evidence-authoring.md +188 -0
- package/docs/golden-path.md +179 -0
- package/docs/install-acceptance-checklist.md +90 -0
- package/docs/install-claude.md +41 -0
- package/docs/install-codex.md +41 -0
- package/docs/install-cursor.md +41 -0
- package/docs/install-experience-roadmap.md +394 -0
- package/docs/install.md +119 -0
- package/docs/maintainer-guide.md +197 -0
- package/docs/phase-1-implementation.md +848 -0
- package/docs/phase-2-roadmap.md +142 -0
- package/docs/quick-recipes.md +115 -0
- package/docs/readiness-interpretation.md +105 -0
- package/docs/readiness-troubleshooting.md +209 -0
- package/docs/release-check-reference.md +63 -0
- package/docs/release-guide.md +481 -0
- package/docs/release-notes.md +75 -0
- package/docs/runtime-contract.md +1010 -0
- package/docs/runtime-maintainer-validation.md +212 -0
- package/docs/runtime-roadmap.md +2265 -0
- package/docs/skill-authoring-guide.md +150 -0
- package/docs/submodule-guide.md +131 -0
- package/docs/team-adoption.md +113 -0
- package/docs/user-guide.md +108 -0
- package/docs/vibecoding-fork-analysis.md +398 -0
- package/docs/workflow-chaining.md +539 -0
- package/examples/ci/README.md +61 -0
- package/examples/ci/ci-evidence-input.example.json +56 -0
- package/examples/ci/generate-diff-coverage.mjs +90 -0
- package/examples/ci/generate-test-evidence.mjs +82 -0
- package/examples/ci/github-actions-readiness.yml +108 -0
- package/examples/claude-project/README.md +57 -0
- package/examples/codex-project/README.md +57 -0
- package/examples/cursor-project/README.md +57 -0
- package/examples/full-chain/README.md +63 -0
- package/examples/full-chain/architecture-design.md +128 -0
- package/examples/full-chain/commit-readiness.json +31 -0
- package/examples/full-chain/delivery-traceability.yaml +32 -0
- package/examples/full-chain/diff-coverage.json +73 -0
- package/examples/full-chain/evidence.json +20 -0
- package/examples/full-chain/implementation-plan.md +54 -0
- package/examples/full-chain/product-acceptance.md +86 -0
- package/examples/full-chain/product-discovery.md +84 -0
- package/examples/full-chain/product-spec.md +88 -0
- package/examples/full-chain/scenario-acceptance.yaml +32 -0
- package/examples/full-chain/test-evidence.json +29 -0
- package/examples/full-chain/ui-design-contract.md +87 -0
- package/examples/golden-path/README.md +84 -0
- package/examples/golden-path/diff-coverage.json +66 -0
- package/examples/golden-path/implementation-plan.md +62 -0
- package/examples/golden-path/product-spec.md +96 -0
- package/examples/golden-path/test-evidence.json +29 -0
- package/examples/runtime-fixtures/architecture-design.md +128 -0
- package/examples/runtime-fixtures/commit-readiness.json +31 -0
- package/examples/runtime-fixtures/delivery-traceability.yaml +32 -0
- package/examples/runtime-fixtures/diff-coverage.json +73 -0
- package/examples/runtime-fixtures/evidence.json +20 -0
- package/examples/runtime-fixtures/implementation-plan.md +54 -0
- package/examples/runtime-fixtures/negative/commit-readiness-boundary-escalated.json +27 -0
- package/examples/runtime-fixtures/negative/delivery-traceability-bad-ref.yaml +32 -0
- package/examples/runtime-fixtures/negative/diff-coverage-changed-file-without-task-ref.json +40 -0
- package/examples/runtime-fixtures/negative/diff-coverage-operation-mismatch.json +38 -0
- package/examples/runtime-fixtures/negative/diff-coverage-required-task-missing.json +24 -0
- package/examples/runtime-fixtures/negative/diff-coverage-unexpected-file.json +20 -0
- package/examples/runtime-fixtures/negative/test-evidence-missing-output-digest.json +23 -0
- package/examples/runtime-fixtures/negative/test-evidence-risky-task-missing.json +29 -0
- package/examples/runtime-fixtures/product-acceptance.md +86 -0
- package/examples/runtime-fixtures/product-discovery.md +84 -0
- package/examples/runtime-fixtures/product-spec.md +88 -0
- package/examples/runtime-fixtures/scenario-acceptance.yaml +32 -0
- package/examples/runtime-fixtures/test-evidence.json +29 -0
- package/examples/runtime-fixtures/ui-design-contract.md +87 -0
- package/hooks/post-tool-compact/README.md +47 -0
- package/hooks/session-start/README.md +112 -0
- package/hooks/session-start/session-start-state-boundary-contract.mjs +161 -0
- package/hooks/session-start/session-start.md +29 -0
- package/hooks/session-start/session-start.mjs +49 -0
- package/hooks/workflow-handoff/README.md +44 -0
- package/hooks/workflow-handoff/workflow-handoff.md +11 -0
- package/package.json +72 -0
- package/skills/using-vibecoding/SKILL.md +396 -0
- package/skills/vibe-brainstorming/SKILL.md +98 -0
- package/skills/vibe-context-compact/SKILL.md +95 -0
- package/skills/vibe-debugging/SKILL.md +87 -0
- package/skills/vibe-dispatching-parallel-work/SKILL.md +144 -0
- package/skills/vibe-executing-plans/SKILL.md +114 -0
- package/skills/vibe-finishing-a-development-branch/SKILL.md +110 -0
- package/skills/vibe-implementation/SKILL.md +84 -0
- package/skills/vibe-planning/SKILL.md +102 -0
- package/skills/vibe-product-acceptance/SKILL.md +106 -0
- package/skills/vibe-product-discovery/SKILL.md +107 -0
- package/skills/vibe-product-spec/SKILL.md +105 -0
- package/skills/vibe-receiving-code-review/SKILL.md +110 -0
- package/skills/vibe-requesting-code-review/SKILL.md +106 -0
- package/skills/vibe-review/SKILL.md +106 -0
- package/skills/vibe-subagent-driven-development/SKILL.md +198 -0
- package/skills/vibe-systematic-debugging/SKILL.md +106 -0
- package/skills/vibe-test-driven-development/SKILL.md +112 -0
- package/skills/vibe-ui-design/SKILL.md +107 -0
- package/skills/vibe-verification/SKILL.md +84 -0
- package/skills/vibe-verification-before-completion/SKILL.md +170 -0
- package/skills/vibe-workspace-isolation/SKILL.md +158 -0
- package/skills/vibe-writing-plans/SKILL.md +137 -0
- package/skills/vibe-writing-skills/SKILL.md +118 -0
- package/templates/AGENTS.md +88 -0
- package/templates/CLAUDE.md +88 -0
- package/templates/VIBE-CODING.md +157 -0
- package/templates/architecture-design.md +139 -0
- package/templates/delivery-traceability.yaml +52 -0
- package/templates/evidence/README.md +117 -0
- package/templates/evidence/diff-coverage.json +34 -0
- package/templates/evidence/test-evidence.json +29 -0
- package/templates/implementation-plan.md +73 -0
- package/templates/product-acceptance.md +84 -0
- package/templates/product-discovery.md +81 -0
- package/templates/product-spec.md +84 -0
- package/templates/scenario-acceptance.yaml +37 -0
- package/templates/ui-design-contract.md +86 -0
- package/tools/vibe-architecture-check/README.md +66 -0
- package/tools/vibe-architecture-check/index.mjs +691 -0
- package/tools/vibe-compact/README.md +65 -0
- package/tools/vibe-compact/compact-contract.mjs +63 -0
- package/tools/vibe-compact/index.mjs +111 -0
- package/tools/vibe-doctor/README.md +200 -0
- package/tools/vibe-doctor/index.mjs +1721 -0
- package/tools/vibe-init/README.md +231 -0
- package/tools/vibe-init/index.mjs +369 -0
- package/tools/vibe-init/init-cli-args.mjs +100 -0
- package/tools/vibe-init/init-entry-merge-model.mjs +33 -0
- package/tools/vibe-init/init-install-manifest-model.mjs +137 -0
- package/tools/vibe-init/init-installed-agent-experience-contract.mjs +172 -0
- package/tools/vibe-init/init-platform-model.mjs +11 -0
- package/tools/vibe-init/init-presentation.mjs +149 -0
- package/tools/vibe-lifecycle/README.md +37 -0
- package/tools/vibe-lifecycle/index.mjs +365 -0
- package/tools/vibe-lifecycle/lifecycle-cli-args.mjs +104 -0
- package/tools/vibe-lifecycle/lifecycle-summary-model.mjs +67 -0
- package/tools/vibe-lifecycle/lifecycle-uninstall-plan-model.mjs +11 -0
- package/tools/vibe-plugin-pack/README.md +105 -0
- package/tools/vibe-plugin-pack/index.mjs +302 -0
- package/tools/vibe-plugin-pack/plugin-pack-cli.mjs +39 -0
- package/tools/vibe-plugin-pack/plugin-pack-manifest.mjs +37 -0
- package/tools/vibe-profile/index.mjs +212 -0
- package/tools/vibe-release-check/README.md +123 -0
- package/tools/vibe-release-check/command-manifest/release-check-base-commands.mjs +23 -0
- package/tools/vibe-release-check/command-manifest/release-check-closeout-commands.mjs +16 -0
- package/tools/vibe-release-check/command-manifest/release-check-command-metadata.mjs +32 -0
- package/tools/vibe-release-check/command-manifest/release-check-completion-commands.mjs +41 -0
- package/tools/vibe-release-check/command-manifest/release-check-full-chain-commands.mjs +12 -0
- package/tools/vibe-release-check/command-manifest/release-check-golden-path-commands.mjs +12 -0
- package/tools/vibe-release-check/command-manifest/release-check-install-commands.mjs +26 -0
- package/tools/vibe-release-check/command-manifest/release-check-learning-smoke-commands.mjs +21 -0
- package/tools/vibe-release-check/command-manifest/release-check-methodology-commands.mjs +27 -0
- package/tools/vibe-release-check/command-manifest/release-check-runtime-smoke-commands.mjs +116 -0
- package/tools/vibe-release-check/command-manifest/release-check-token-smoke-commands.mjs +21 -0
- package/tools/vibe-release-check/index.mjs +223 -0
- package/tools/vibe-release-check/release-check-behavior-smoke.mjs +177 -0
- package/tools/vibe-release-check/release-check-cli.mjs +37 -0
- package/tools/vibe-release-check/release-check-command-manifest.mjs +49 -0
- package/tools/vibe-release-check/release-check-completion-fixtures.mjs +151 -0
- package/tools/vibe-release-check/release-check-completion-suite.mjs +110 -0
- package/tools/vibe-release-check/release-check-dispatch.mjs +116 -0
- package/tools/vibe-release-check/release-check-full-chain-suite.mjs +55 -0
- package/tools/vibe-release-check/release-check-golden-path-suite.mjs +85 -0
- package/tools/vibe-release-check/release-check-install-marker-specs.mjs +133 -0
- package/tools/vibe-release-check/release-check-install-suite.mjs +112 -0
- package/tools/vibe-release-check/release-check-json-assertion-helpers.mjs +157 -0
- package/tools/vibe-release-check/release-check-json-markers.mjs +33 -0
- package/tools/vibe-release-check/release-check-learning-fixture-specs.mjs +199 -0
- package/tools/vibe-release-check/release-check-learning-suite.mjs +249 -0
- package/tools/vibe-release-check/release-check-live-behavior-smoke-fixture.mjs +406 -0
- package/tools/vibe-release-check/release-check-methodology-suite.mjs +108 -0
- package/tools/vibe-release-check/release-check-package-boundary-smoke.mjs +111 -0
- package/tools/vibe-release-check/release-check-platform-transcript-smoke-fixture.mjs +150 -0
- package/tools/vibe-release-check/release-check-readonly-marker-data.mjs +1 -0
- package/tools/vibe-release-check/release-check-readonly-marker-smoke-specs.mjs +170 -0
- package/tools/vibe-release-check/release-check-run-summary.mjs +67 -0
- package/tools/vibe-release-check/release-check-runtime-automation-fixtures.mjs +1 -0
- package/tools/vibe-release-check/release-check-runtime-automation-governance-reply-trace-smoke-helpers.mjs +224 -0
- package/tools/vibe-release-check/release-check-runtime-automation-governance-smoke-specs.mjs +215 -0
- package/tools/vibe-release-check/release-check-runtime-automation-governance-suite.mjs +5 -0
- package/tools/vibe-release-check/release-check-runtime-automation-methodology-smoke-specs.mjs +157 -0
- package/tools/vibe-release-check/release-check-runtime-automation-methodology-suite.mjs +130 -0
- package/tools/vibe-release-check/release-check-runtime-automation-platform-smoke-helpers.mjs +306 -0
- package/tools/vibe-release-check/release-check-runtime-automation-platform-suite.mjs +30 -0
- package/tools/vibe-release-check/release-check-runtime-automation-smoke-fixtures.mjs +53 -0
- package/tools/vibe-release-check/release-check-runtime-automation-source-candidate-smoke-helpers.mjs +506 -0
- package/tools/vibe-release-check/release-check-runtime-automation-source-suite.mjs +5 -0
- package/tools/vibe-release-check/release-check-runtime-automation-subagents-lifecycle-smoke-helpers.mjs +305 -0
- package/tools/vibe-release-check/release-check-runtime-automation-subagents-suite.mjs +25 -0
- package/tools/vibe-release-check/release-check-runtime-automation-suite.mjs +25 -0
- package/tools/vibe-release-check/release-check-runtime-daemon-bounded-run-smoke-helpers.mjs +243 -0
- package/tools/vibe-release-check/release-check-runtime-daemon-suite.mjs +5 -0
- package/tools/vibe-release-check/release-check-runtime-dispatch-fixtures.mjs +129 -0
- package/tools/vibe-release-check/release-check-runtime-dispatch-suite.mjs +5 -0
- package/tools/vibe-release-check/release-check-runtime-execution-approval-smoke-helpers.mjs +274 -0
- package/tools/vibe-release-check/release-check-runtime-execution-approval-suite.mjs +5 -0
- package/tools/vibe-release-check/release-check-runtime-execution-base-suite.mjs +388 -0
- package/tools/vibe-release-check/release-check-runtime-execution-recovery-suite.mjs +412 -0
- package/tools/vibe-release-check/release-check-runtime-execution-scheduler-suite.mjs +261 -0
- package/tools/vibe-release-check/release-check-runtime-execution-suite.mjs +11 -0
- package/tools/vibe-release-check/release-check-runtime-flow-smoke.mjs +347 -0
- package/tools/vibe-release-check/release-check-runtime-handoff-fixture-specs.mjs +211 -0
- package/tools/vibe-release-check/release-check-runtime-handoff-fixtures.mjs +11 -0
- package/tools/vibe-release-check/release-check-runtime-handoff-smoke-specs.mjs +86 -0
- package/tools/vibe-release-check/release-check-runtime-handoff-suite.mjs +316 -0
- package/tools/vibe-release-check/release-check-runtime-ledger-fixture-specs.mjs +9 -0
- package/tools/vibe-release-check/release-check-runtime-ledger-fixtures.mjs +51 -0
- package/tools/vibe-release-check/release-check-runtime-ledger-suite.mjs +24 -0
- package/tools/vibe-release-check/release-check-runtime-scheduler-fixture-specs.mjs +129 -0
- package/tools/vibe-release-check/release-check-runtime-scheduler-fixtures.mjs +10 -0
- package/tools/vibe-release-check/release-check-runtime-sdd-suite.mjs +535 -0
- package/tools/vibe-release-check/release-check-runtime-smoke-harness.mjs +140 -0
- package/tools/vibe-release-check/release-check-runtime-surface-expectations.mjs +106 -0
- package/tools/vibe-release-check/release-check-runtime-surface-smoke.mjs +112 -0
- package/tools/vibe-release-check/release-check-runtime-task-artifact-suite.mjs +105 -0
- package/tools/vibe-release-check/release-check-runtime-task-fixture-specs.mjs +270 -0
- package/tools/vibe-release-check/release-check-runtime-task-fixtures.mjs +19 -0
- package/tools/vibe-release-check/release-check-runtime.mjs +53 -0
- package/tools/vibe-release-check/release-check-stage103-118-fixtures.mjs +214 -0
- package/tools/vibe-release-check/release-check-stage103-118-smoke-specs.mjs +97 -0
- package/tools/vibe-release-check/release-check-stage103-118-smoke.mjs +861 -0
- package/tools/vibe-release-check/release-check-stage11-smoke.mjs +66 -0
- package/tools/vibe-release-check/release-check-stage119-120-fixture-specs.mjs +119 -0
- package/tools/vibe-release-check/release-check-stage119-120-smoke.mjs +325 -0
- package/tools/vibe-release-check/release-check-stage12-smoke.mjs +59 -0
- package/tools/vibe-release-check/release-check-stage121-136-fixture-specs.mjs +26 -0
- package/tools/vibe-release-check/release-check-stage121-136-fixtures.mjs +591 -0
- package/tools/vibe-release-check/release-check-stage121-136-smoke.mjs +917 -0
- package/tools/vibe-release-check/release-check-stage13-smoke.mjs +78 -0
- package/tools/vibe-release-check/release-check-stage137-140-smoke.mjs +534 -0
- package/tools/vibe-release-check/release-check-stage14-smoke.mjs +101 -0
- package/tools/vibe-release-check/release-check-stage141-148-smoke.mjs +1143 -0
- package/tools/vibe-release-check/release-check-stage15-smoke.mjs +132 -0
- package/tools/vibe-release-check/release-check-stage50-53-smoke.mjs +429 -0
- package/tools/vibe-release-check/release-check-subagent-adapter-bridge-smoke.mjs +162 -0
- package/tools/vibe-release-check/release-check-suite-plan-smoke.mjs +86 -0
- package/tools/vibe-release-check/release-check-suites.mjs +164 -0
- package/tools/vibe-release-check/release-check-test-run-smoke.mjs +59 -0
- package/tools/vibe-release-check/release-check-timing.mjs +98 -0
- package/tools/vibe-release-check/release-check-token-suite.mjs +260 -0
- package/tools/vibe-release-check/release-check-workflow-entry-suite.mjs +195 -0
- package/tools/vibe-release-check/release-check-workflow-governance-fixtures.mjs +138 -0
- package/tools/vibe-release-check/release-check-workflow-governance-smoke-suite.mjs +768 -0
- package/tools/vibe-release-check/release-check-workflow-ux-smoke.mjs +456 -0
- package/tools/vibe-runtime/README.md +2637 -0
- package/tools/vibe-runtime/index.mjs +3117 -0
- package/tools/vibe-runtime/runtime-adapter-bootstrap-matrix.mjs +264 -0
- package/tools/vibe-runtime/runtime-adapter-entry-acceptance.mjs +310 -0
- package/tools/vibe-runtime/runtime-adapter-packaging-consistency-command.mjs +131 -0
- package/tools/vibe-runtime/runtime-adapter-packaging-consistency.mjs +253 -0
- package/tools/vibe-runtime/runtime-advice-hub-model.mjs +175 -0
- package/tools/vibe-runtime/runtime-agent-session-start-contract.mjs +138 -0
- package/tools/vibe-runtime/runtime-artifact-ref-validation.mjs +281 -0
- package/tools/vibe-runtime/runtime-automatic-verification-gate-contract.mjs +134 -0
- package/tools/vibe-runtime/runtime-automation-boundary-text.mjs +7 -0
- package/tools/vibe-runtime/runtime-automation-command.mjs +367 -0
- package/tools/vibe-runtime/runtime-automation-plan-model.mjs +239 -0
- package/tools/vibe-runtime/runtime-automation-policy-model.mjs +175 -0
- package/tools/vibe-runtime/runtime-automation-readiness.mjs +347 -0
- package/tools/vibe-runtime/runtime-autopilot-lab-profile-contract.mjs +223 -0
- package/tools/vibe-runtime/runtime-behavioral-evaluation-contract.mjs +529 -0
- package/tools/vibe-runtime/runtime-behavioral-negative-gate-matrix.mjs +274 -0
- package/tools/vibe-runtime/runtime-bounded-attempt-policy-model.mjs +13 -0
- package/tools/vibe-runtime/runtime-bounded-foreground-command-executor-contract.mjs +288 -0
- package/tools/vibe-runtime/runtime-capability-registry.mjs +250 -0
- package/tools/vibe-runtime/runtime-cli-args.mjs +550 -0
- package/tools/vibe-runtime/runtime-cli-command-specs.mjs +63 -0
- package/tools/vibe-runtime/runtime-cli-dispatch.mjs +21 -0
- package/tools/vibe-runtime/runtime-cli-evidence-option-specs.mjs +193 -0
- package/tools/vibe-runtime/runtime-cli-evidence-options.mjs +28 -0
- package/tools/vibe-runtime/runtime-cli-from-options.mjs +222 -0
- package/tools/vibe-runtime/runtime-cli-low-risk-option-specs.mjs +128 -0
- package/tools/vibe-runtime/runtime-cli-main.mjs +32 -0
- package/tools/vibe-runtime/runtime-cli-option-default-families.mjs +454 -0
- package/tools/vibe-runtime/runtime-cli-option-defaults.mjs +33 -0
- package/tools/vibe-runtime/runtime-cli-option-handlers.mjs +82 -0
- package/tools/vibe-runtime/runtime-cli-usage.mjs +316 -0
- package/tools/vibe-runtime/runtime-cli-value-options.mjs +74 -0
- package/tools/vibe-runtime/runtime-close-loop-dashboard.mjs +283 -0
- package/tools/vibe-runtime/runtime-closeout-parity-contract.mjs +214 -0
- package/tools/vibe-runtime/runtime-command-container.mjs +26 -0
- package/tools/vibe-runtime/runtime-command-surface-registry.mjs +383 -0
- package/tools/vibe-runtime/runtime-command-wrapper-deps.mjs +13 -0
- package/tools/vibe-runtime/runtime-commit-readiness-envelope.mjs +281 -0
- package/tools/vibe-runtime/runtime-completion-boundary-text.mjs +7 -0
- package/tools/vibe-runtime/runtime-completion-bundle-contract.mjs +71 -0
- package/tools/vibe-runtime/runtime-completion-chain-assembly.mjs +48 -0
- package/tools/vibe-runtime/runtime-completion-command.mjs +50 -0
- package/tools/vibe-runtime/runtime-completion-evidence-bundle.mjs +269 -0
- package/tools/vibe-runtime/runtime-completion-evidence-descriptors.mjs +156 -0
- package/tools/vibe-runtime/runtime-completion-local-evidence-gates.mjs +164 -0
- package/tools/vibe-runtime/runtime-completion-presentation.mjs +71 -0
- package/tools/vibe-runtime/runtime-completion-readiness-summary.mjs +159 -0
- package/tools/vibe-runtime/runtime-confirmed-one-shot-plan.mjs +300 -0
- package/tools/vibe-runtime/runtime-context-budget-entry-defaults-command.mjs +77 -0
- package/tools/vibe-runtime/runtime-context-budget-entry-defaults.mjs +341 -0
- package/tools/vibe-runtime/runtime-contract-marker-registry.mjs +13 -0
- package/tools/vibe-runtime/runtime-contributor-guardrail-command.mjs +78 -0
- package/tools/vibe-runtime/runtime-contributor-guardrail-evidence.mjs +319 -0
- package/tools/vibe-runtime/runtime-control-plane-command.mjs +237 -0
- package/tools/vibe-runtime/runtime-control-plane-evals-artifacts.mjs +123 -0
- package/tools/vibe-runtime/runtime-control-plane-evals-boundary-model.mjs +75 -0
- package/tools/vibe-runtime/runtime-control-plane-evals-cases.mjs +547 -0
- package/tools/vibe-runtime/runtime-control-plane-evals-command.mjs +527 -0
- package/tools/vibe-runtime/runtime-control-plane-evals-report-validation.mjs +209 -0
- package/tools/vibe-runtime/runtime-control-plane-planner-artifacts.mjs +457 -0
- package/tools/vibe-runtime/runtime-control-plane-planning-command.mjs +563 -0
- package/tools/vibe-runtime/runtime-control-plane-planning-input.mjs +99 -0
- package/tools/vibe-runtime/runtime-control-plane-planning-listing.mjs +48 -0
- package/tools/vibe-runtime/runtime-control-plane-planning-presentation.mjs +246 -0
- package/tools/vibe-runtime/runtime-control-plane-planning-validation.mjs +529 -0
- package/tools/vibe-runtime/runtime-control-plane-readonly-command.mjs +537 -0
- package/tools/vibe-runtime/runtime-control-plane-readonly-deps.mjs +146 -0
- package/tools/vibe-runtime/runtime-control-plane-release-evidence.mjs +525 -0
- package/tools/vibe-runtime/runtime-control-plane-release-gates.mjs +369 -0
- package/tools/vibe-runtime/runtime-control-plane-router-planning-model.mjs +152 -0
- package/tools/vibe-runtime/runtime-control-plane-routing-artifacts.mjs +588 -0
- package/tools/vibe-runtime/runtime-controlled-change-delivery-contract.mjs +165 -0
- package/tools/vibe-runtime/runtime-controlled-execution-gate-contract.mjs +141 -0
- package/tools/vibe-runtime/runtime-controlled-long-running-automation-contract.mjs +184 -0
- package/tools/vibe-runtime/runtime-controlled-subagent-orchestration-contract.mjs +169 -0
- package/tools/vibe-runtime/runtime-daemon-command.mjs +166 -0
- package/tools/vibe-runtime/runtime-daemon-state-lifecycle-model.mjs +359 -0
- package/tools/vibe-runtime/runtime-delivery-methodology-command.mjs +17 -0
- package/tools/vibe-runtime/runtime-delivery-methodology-gates.mjs +277 -0
- package/tools/vibe-runtime/runtime-diff-coverage-envelope.mjs +301 -0
- package/tools/vibe-runtime/runtime-dispatch-command.mjs +484 -0
- package/tools/vibe-runtime/runtime-dispatch-readonly-artifacts.mjs +406 -0
- package/tools/vibe-runtime/runtime-dispatch-state-lifecycle-model.mjs +199 -0
- package/tools/vibe-runtime/runtime-durable-state-recovery-contract.mjs +172 -0
- package/tools/vibe-runtime/runtime-entry-advice-model.mjs +201 -0
- package/tools/vibe-runtime/runtime-entry-deps-builder.mjs +54 -0
- package/tools/vibe-runtime/runtime-entry-presentation.mjs +82 -0
- package/tools/vibe-runtime/runtime-entry-summary-model.mjs +343 -0
- package/tools/vibe-runtime/runtime-entry-trigger-discipline.mjs +341 -0
- package/tools/vibe-runtime/runtime-entry-trigger-tightening-command.mjs +79 -0
- package/tools/vibe-runtime/runtime-entry-trigger-tightening.mjs +357 -0
- package/tools/vibe-runtime/runtime-eval-catalog-model.mjs +101 -0
- package/tools/vibe-runtime/runtime-eval-transcript-fixtures.mjs +218 -0
- package/tools/vibe-runtime/runtime-evidence-intake-envelope.mjs +278 -0
- package/tools/vibe-runtime/runtime-evidence-repair-model.mjs +180 -0
- package/tools/vibe-runtime/runtime-executable-plan-contract.mjs +428 -0
- package/tools/vibe-runtime/runtime-execution-approval-lifecycle-models.mjs +278 -0
- package/tools/vibe-runtime/runtime-execution-candidate-approval-artifacts.mjs +227 -0
- package/tools/vibe-runtime/runtime-execution-command.mjs +544 -0
- package/tools/vibe-runtime/runtime-execution-enabled-bridge-model.mjs +113 -0
- package/tools/vibe-runtime/runtime-execution-enabled-closeout-boundary.mjs +89 -0
- package/tools/vibe-runtime/runtime-execution-enabled-preflight-model.mjs +185 -0
- package/tools/vibe-runtime/runtime-execution-enabled-profile-contract.mjs +127 -0
- package/tools/vibe-runtime/runtime-execution-enabled-run-envelope.mjs +153 -0
- package/tools/vibe-runtime/runtime-execution-evidence-binder.mjs +537 -0
- package/tools/vibe-runtime/runtime-execution-plan-artifacts.mjs +136 -0
- package/tools/vibe-runtime/runtime-execution-policy-artifacts.mjs +377 -0
- package/tools/vibe-runtime/runtime-execution-presentation.mjs +174 -0
- package/tools/vibe-runtime/runtime-execution-readonly-artifacts.mjs +228 -0
- package/tools/vibe-runtime/runtime-execution-run-preflight-artifacts.mjs +265 -0
- package/tools/vibe-runtime/runtime-execution-safety-artifacts.mjs +131 -0
- package/tools/vibe-runtime/runtime-execution-state-write-lifecycle-model.mjs +99 -0
- package/tools/vibe-runtime/runtime-experience-friction-matrix.mjs +395 -0
- package/tools/vibe-runtime/runtime-experience-learning-pattern.mjs +354 -0
- package/tools/vibe-runtime/runtime-experience-regression-dashboard.mjs +398 -0
- package/tools/vibe-runtime/runtime-experience-upgrade-command.mjs +92 -0
- package/tools/vibe-runtime/runtime-experience-upgrade-prioritizer.mjs +451 -0
- package/tools/vibe-runtime/runtime-foreground-worker-plan.mjs +275 -0
- package/tools/vibe-runtime/runtime-git-diff-read-model.mjs +322 -0
- package/tools/vibe-runtime/runtime-governance-attestation.mjs +304 -0
- package/tools/vibe-runtime/runtime-governance-command.mjs +609 -0
- package/tools/vibe-runtime/runtime-governance-convergence-reports.mjs +601 -0
- package/tools/vibe-runtime/runtime-governance-pr-models.mjs +551 -0
- package/tools/vibe-runtime/runtime-governance-presentation.mjs +67 -0
- package/tools/vibe-runtime/runtime-governance-route-model.mjs +194 -0
- package/tools/vibe-runtime/runtime-governance-surface-reports.mjs +495 -0
- package/tools/vibe-runtime/runtime-hooks-boundary-model.mjs +356 -0
- package/tools/vibe-runtime/runtime-hooks-command.mjs +286 -0
- package/tools/vibe-runtime/runtime-human-completion-evidence-model.mjs +220 -0
- package/tools/vibe-runtime/runtime-human-friendly-aliases.mjs +250 -0
- package/tools/vibe-runtime/runtime-implementation-methodology-command.mjs +17 -0
- package/tools/vibe-runtime/runtime-implementation-methodology-gates.mjs +164 -0
- package/tools/vibe-runtime/runtime-implementation-task-registry.mjs +334 -0
- package/tools/vibe-runtime/runtime-install-experience-command.mjs +120 -0
- package/tools/vibe-runtime/runtime-install-experience-score.mjs +334 -0
- package/tools/vibe-runtime/runtime-installed-multiround-ux-acceptance.mjs +149 -0
- package/tools/vibe-runtime/runtime-interaction-command-domain-registry.mjs +46 -0
- package/tools/vibe-runtime/runtime-interaction-command.mjs +648 -0
- package/tools/vibe-runtime/runtime-interaction-completion-command.mjs +220 -0
- package/tools/vibe-runtime/runtime-interaction-entry-command.mjs +130 -0
- package/tools/vibe-runtime/runtime-interaction-workflow-envelopes.mjs +412 -0
- package/tools/vibe-runtime/runtime-learning-advice-model.mjs +157 -0
- package/tools/vibe-runtime/runtime-learning-artifact-model.mjs +509 -0
- package/tools/vibe-runtime/runtime-learning-audit-model.mjs +106 -0
- package/tools/vibe-runtime/runtime-learning-interaction-command.mjs +220 -0
- package/tools/vibe-runtime/runtime-learning-observation-model.mjs +124 -0
- package/tools/vibe-runtime/runtime-learning-presentation.mjs +84 -0
- package/tools/vibe-runtime/runtime-learning-run-preview-model.mjs +184 -0
- package/tools/vibe-runtime/runtime-lease-command.mjs +95 -0
- package/tools/vibe-runtime/runtime-lease-state-lifecycle-model.mjs +247 -0
- package/tools/vibe-runtime/runtime-list-presentation.mjs +7 -0
- package/tools/vibe-runtime/runtime-live-behavior-transcript-model.mjs +164 -0
- package/tools/vibe-runtime/runtime-local-behavior-eval-contracts-command.mjs +76 -0
- package/tools/vibe-runtime/runtime-local-behavior-eval-contracts.mjs +382 -0
- package/tools/vibe-runtime/runtime-local-commit-automation-gate.mjs +254 -0
- package/tools/vibe-runtime/runtime-local-json-input.mjs +32 -0
- package/tools/vibe-runtime/runtime-methodology-coverage-map.mjs +398 -0
- package/tools/vibe-runtime/runtime-methodology-coverage-marker-specs.mjs +61 -0
- package/tools/vibe-runtime/runtime-methodology-coverage-presentation.mjs +26 -0
- package/tools/vibe-runtime/runtime-methodology-gate-model.mjs +154 -0
- package/tools/vibe-runtime/runtime-methodology-gate-output-envelope.mjs +4 -0
- package/tools/vibe-runtime/runtime-methodology-interaction-command.mjs +147 -0
- package/tools/vibe-runtime/runtime-methodology-presentation.mjs +76 -0
- package/tools/vibe-runtime/runtime-methodology-route-model.mjs +93 -0
- package/tools/vibe-runtime/runtime-next-action-console.mjs +388 -0
- package/tools/vibe-runtime/runtime-next-action-evidence-prompts-command.mjs +84 -0
- package/tools/vibe-runtime/runtime-next-action-evidence-prompts.mjs +327 -0
- package/tools/vibe-runtime/runtime-observability-command.mjs +96 -0
- package/tools/vibe-runtime/runtime-observability-presentation.mjs +30 -0
- package/tools/vibe-runtime/runtime-observability-readiness-model.mjs +204 -0
- package/tools/vibe-runtime/runtime-patch-queue-contract.mjs +151 -0
- package/tools/vibe-runtime/runtime-plan-action-manifest.mjs +334 -0
- package/tools/vibe-runtime/runtime-planner-route-model.mjs +75 -0
- package/tools/vibe-runtime/runtime-platform-acceptance-command.mjs +216 -0
- package/tools/vibe-runtime/runtime-platform-capability-artifacts.mjs +156 -0
- package/tools/vibe-runtime/runtime-platform-capability-model.mjs +105 -0
- package/tools/vibe-runtime/runtime-platform-command.mjs +329 -0
- package/tools/vibe-runtime/runtime-platform-presentation.mjs +78 -0
- package/tools/vibe-runtime/runtime-platform-session-artifacts.mjs +857 -0
- package/tools/vibe-runtime/runtime-platform-transcript-example-pack.mjs +293 -0
- package/tools/vibe-runtime/runtime-platform-transcript-intake-model.mjs +247 -0
- package/tools/vibe-runtime/runtime-platform-transcript-replay-model.mjs +371 -0
- package/tools/vibe-runtime/runtime-policy-catalog.mjs +54 -0
- package/tools/vibe-runtime/runtime-product-methodology-command.mjs +17 -0
- package/tools/vibe-runtime/runtime-product-methodology-gates.mjs +316 -0
- package/tools/vibe-runtime/runtime-progressive-entry-ux.mjs +237 -0
- package/tools/vibe-runtime/runtime-queue-command.mjs +98 -0
- package/tools/vibe-runtime/runtime-queue-state-lifecycle-model.mjs +318 -0
- package/tools/vibe-runtime/runtime-readiness-gate-split.mjs +196 -0
- package/tools/vibe-runtime/runtime-readonly-local-json-output-envelope.mjs +24 -0
- package/tools/vibe-runtime/runtime-recovery-classification-models.mjs +412 -0
- package/tools/vibe-runtime/runtime-recovery-command.mjs +107 -0
- package/tools/vibe-runtime/runtime-recovery-presentation.mjs +65 -0
- package/tools/vibe-runtime/runtime-recovery-state-lifecycle-model.mjs +419 -0
- package/tools/vibe-runtime/runtime-release-command-deps.mjs +4 -0
- package/tools/vibe-runtime/runtime-release-command.mjs +225 -0
- package/tools/vibe-runtime/runtime-release-state-lifecycle-model.mjs +48 -0
- package/tools/vibe-runtime/runtime-reply-artifact-lifecycle-model.mjs +84 -0
- package/tools/vibe-runtime/runtime-reply-command.mjs +488 -0
- package/tools/vibe-runtime/runtime-retry-command.mjs +223 -0
- package/tools/vibe-runtime/runtime-retry-run-gate-model.mjs +151 -0
- package/tools/vibe-runtime/runtime-review-envelope.mjs +449 -0
- package/tools/vibe-runtime/runtime-review-feedback-gate.mjs +160 -0
- package/tools/vibe-runtime/runtime-runbook-executor-preview-contract.mjs +361 -0
- package/tools/vibe-runtime/runtime-scheduler-command.mjs +8 -0
- package/tools/vibe-runtime/runtime-scheduler-risk-artifacts.mjs +775 -0
- package/tools/vibe-runtime/runtime-scheduler-state-lifecycle-model.mjs +53 -0
- package/tools/vibe-runtime/runtime-sdd-consumption-command.mjs +386 -0
- package/tools/vibe-runtime/runtime-sdd-evidence-chain-model.mjs +200 -0
- package/tools/vibe-runtime/runtime-sdd-handoff-chain-model.mjs +168 -0
- package/tools/vibe-runtime/runtime-sdd-implementer-artifact-model.mjs +90 -0
- package/tools/vibe-runtime/runtime-sdd-loop-command.mjs +659 -0
- package/tools/vibe-runtime/runtime-sdd-plan-preflight-model.mjs +121 -0
- package/tools/vibe-runtime/runtime-sdd-review-package-command.mjs +197 -0
- package/tools/vibe-runtime/runtime-sdd-review-package-model.mjs +183 -0
- package/tools/vibe-runtime/runtime-sdd-task-brief-model.mjs +144 -0
- package/tools/vibe-runtime/runtime-self-test-gate-profile.mjs +225 -0
- package/tools/vibe-runtime/runtime-sequential-stage-runbook.mjs +406 -0
- package/tools/vibe-runtime/runtime-session-checkpoint-model.mjs +217 -0
- package/tools/vibe-runtime/runtime-session-skill-command.mjs +241 -0
- package/tools/vibe-runtime/runtime-session-start-example-command.mjs +122 -0
- package/tools/vibe-runtime/runtime-session-start-example-pack.mjs +290 -0
- package/tools/vibe-runtime/runtime-session-start-shape-acceptance.mjs +344 -0
- package/tools/vibe-runtime/runtime-skill-contract-schema.mjs +221 -0
- package/tools/vibe-runtime/runtime-skill-route-registry.mjs +47 -0
- package/tools/vibe-runtime/runtime-skill-runtime-traceability-map.mjs +268 -0
- package/tools/vibe-runtime/runtime-source-merge-apply-boundary-model.mjs +130 -0
- package/tools/vibe-runtime/runtime-source-merge-artifacts.mjs +920 -0
- package/tools/vibe-runtime/runtime-source-merge-command.mjs +160 -0
- package/tools/vibe-runtime/runtime-source-merge-entry-command.mjs +153 -0
- package/tools/vibe-runtime/runtime-source-patch-plan-model.mjs +119 -0
- package/tools/vibe-runtime/runtime-stage-scriptlet.mjs +430 -0
- package/tools/vibe-runtime/runtime-staged-commit-readiness.mjs +469 -0
- package/tools/vibe-runtime/runtime-state-directory-model.mjs +7 -0
- package/tools/vibe-runtime/runtime-state-io.mjs +41 -0
- package/tools/vibe-runtime/runtime-state-paths.mjs +231 -0
- package/tools/vibe-runtime/runtime-state-presence-model.mjs +6 -0
- package/tools/vibe-runtime/runtime-state-risk-paths.mjs +70 -0
- package/tools/vibe-runtime/runtime-subagent-adapter-dispatch-command.mjs +266 -0
- package/tools/vibe-runtime/runtime-subagent-boundary-contracts.mjs +118 -0
- package/tools/vibe-runtime/runtime-subagent-permission-command.mjs +78 -0
- package/tools/vibe-runtime/runtime-subagent-permission-gate-model.mjs +131 -0
- package/tools/vibe-runtime/runtime-subagent-permission-visibility.mjs +294 -0
- package/tools/vibe-runtime/runtime-subagents-artifact-specs.mjs +257 -0
- package/tools/vibe-runtime/runtime-subagents-command.mjs +10 -0
- package/tools/vibe-runtime/runtime-subagents-eligibility-model.mjs +340 -0
- package/tools/vibe-runtime/runtime-subagents-platform-session-proxies.mjs +54 -0
- package/tools/vibe-runtime/runtime-subagents-presentation.mjs +91 -0
- package/tools/vibe-runtime/runtime-subagents-risk-artifacts.mjs +853 -0
- package/tools/vibe-runtime/runtime-subagents-stage-artifact-model.mjs +538 -0
- package/tools/vibe-runtime/runtime-subagents-tail-routing-model.mjs +48 -0
- package/tools/vibe-runtime/runtime-suite-plan-model.mjs +194 -0
- package/tools/vibe-runtime/runtime-superpowers-comparison-matrix.mjs +399 -0
- package/tools/vibe-runtime/runtime-superpowers-gap-matrix.mjs +307 -0
- package/tools/vibe-runtime/runtime-superpowers-parity-command.mjs +102 -0
- package/tools/vibe-runtime/runtime-superpowers-parity-profile-contract.mjs +183 -0
- package/tools/vibe-runtime/runtime-superpowers-parity-scorecard.mjs +460 -0
- package/tools/vibe-runtime/runtime-superpowers-regression-guard.mjs +270 -0
- package/tools/vibe-runtime/runtime-superpowers-style-eval-pack.mjs +367 -0
- package/tools/vibe-runtime/runtime-task-commit-gates.mjs +62 -0
- package/tools/vibe-runtime/runtime-task-commit-readiness.mjs +66 -0
- package/tools/vibe-runtime/runtime-task-commit-sidecar.mjs +65 -0
- package/tools/vibe-runtime/runtime-tdd-trace-contract.mjs +277 -0
- package/tools/vibe-runtime/runtime-test-evidence-model.mjs +196 -0
- package/tools/vibe-runtime/runtime-test-run-command-deps.mjs +7 -0
- package/tools/vibe-runtime/runtime-test-run-command.mjs +108 -0
- package/tools/vibe-runtime/runtime-token-economy-model.mjs +336 -0
- package/tools/vibe-runtime/runtime-token-interaction-command.mjs +381 -0
- package/tools/vibe-runtime/runtime-token-savior-budget.mjs +370 -0
- package/tools/vibe-runtime/runtime-tokens-command-deps.mjs +17 -0
- package/tools/vibe-runtime/runtime-tokens-command.mjs +117 -0
- package/tools/vibe-runtime/runtime-tokens-presentation.mjs +45 -0
- package/tools/vibe-runtime/runtime-trace-command.mjs +283 -0
- package/tools/vibe-runtime/runtime-trace-source-registry.mjs +132 -0
- package/tools/vibe-runtime/runtime-verification-gate-chain-model.mjs +131 -0
- package/tools/vibe-runtime/runtime-verification-repair-loop-plan.mjs +188 -0
- package/tools/vibe-runtime/runtime-workflow-alias-boundary-text.mjs +7 -0
- package/tools/vibe-runtime/runtime-workflow-alias-interaction-command.mjs +145 -0
- package/tools/vibe-runtime/runtime-workflow-command-deps.mjs +41 -0
- package/tools/vibe-runtime/runtime-workflow-command.mjs +191 -0
- package/tools/vibe-runtime/runtime-workflow-discipline-summary.mjs +164 -0
- package/tools/vibe-runtime/runtime-workflow-entry-envelopes.mjs +156 -0
- package/tools/vibe-runtime/runtime-workflow-ledger-command.mjs +239 -0
- package/tools/vibe-runtime/runtime-workflow-ledger-state-lifecycle-model.mjs +46 -0
- package/tools/vibe-runtime/runtime-workflow-loop-contract.mjs +259 -0
- package/tools/vibe-runtime/runtime-workflow-next-step-gate-model.mjs +106 -0
- package/tools/vibe-runtime/runtime-workflow-presentation.mjs +355 -0
- package/tools/vibe-runtime/runtime-workflow-readiness-model.mjs +176 -0
- package/tools/vibe-runtime/runtime-workflow-run-plan-model.mjs +207 -0
- package/tools/vibe-runtime/runtime-workflow-start-model.mjs +229 -0
- package/tools/vibe-runtime/runtime-workflow-state-artifacts.mjs +381 -0
- package/tools/vibe-runtime/runtime-workflow-state-helpers.mjs +456 -0
- package/tools/vibe-runtime/runtime-workflow-state-summary.mjs +65 -0
- package/tools/vibe-runtime/runtime-workflow-state-validation.mjs +104 -0
- package/tools/vibe-runtime/runtime-workflow-ux-model.mjs +205 -0
- package/tools/vibe-runtime/runtime-workspace-boundary-text.mjs +7 -0
- package/tools/vibe-runtime/runtime-workspace-isolation-command.mjs +295 -0
- package/tools/vibe-runtime/state-core-paths.mjs +113 -0
- package/tools/vibe-runtime/state-extension-paths.mjs +198 -0
- package/tools/vibe-runtime/state-safe-paths.mjs +2 -0
- package/tools/vibe-runtime-check/README.md +110 -0
- package/tools/vibe-runtime-check/architecture-tool-contracts.mjs +150 -0
- package/tools/vibe-runtime-check/index.mjs +186 -0
- package/tools/vibe-runtime-check/install-summary-adoption-contracts.mjs +115 -0
- package/tools/vibe-runtime-check/marker-contract-core.mjs +20 -0
- package/tools/vibe-runtime-check/product-artifact-contracts.mjs +24 -0
- package/tools/vibe-runtime-check/release-check-install-placement-contracts.mjs +166 -0
- package/tools/vibe-runtime-check/release-runtime-suite-layer-contracts.mjs +137 -0
- package/tools/vibe-runtime-check/runtime-architecture-manifest-drift-contracts.mjs +128 -0
- package/tools/vibe-runtime-check/runtime-automation-readiness-contracts.mjs +404 -0
- package/tools/vibe-runtime-check/runtime-capability-registry-contracts.mjs +299 -0
- package/tools/vibe-runtime-check/runtime-check-diagnostics-presentation.mjs +71 -0
- package/tools/vibe-runtime-check/runtime-cli-surface-contracts.mjs +156 -0
- package/tools/vibe-runtime-check/runtime-close-loop-contracts.mjs +163 -0
- package/tools/vibe-runtime-check/runtime-contract-delivery-registry.mjs +19 -0
- package/tools/vibe-runtime-check/runtime-contract-implementation-registry.mjs +23 -0
- package/tools/vibe-runtime-check/runtime-contract-local-evidence-registry.mjs +43 -0
- package/tools/vibe-runtime-check/runtime-contract-product-registry.mjs +83 -0
- package/tools/vibe-runtime-check/runtime-contract-registry.mjs +19 -0
- package/tools/vibe-runtime-check/runtime-control-plane-contracts.mjs +14 -0
- package/tools/vibe-runtime-check/runtime-doc-contract-marker-specs.mjs +349 -0
- package/tools/vibe-runtime-check/runtime-doc-contracts.mjs +24 -0
- package/tools/vibe-runtime-check/runtime-doc-marker-contracts.mjs +25 -0
- package/tools/vibe-runtime-check/runtime-entry-size-contracts.mjs +477 -0
- package/tools/vibe-runtime-check/runtime-experience-cli-contract-specs.mjs +98 -0
- package/tools/vibe-runtime-check/runtime-experience-cli-contracts.mjs +12 -0
- package/tools/vibe-runtime-check/runtime-experience-contracts.mjs +187 -0
- package/tools/vibe-runtime-check/runtime-governance-learning-token-contract-specs.mjs +92 -0
- package/tools/vibe-runtime-check/runtime-governance-learning-token-contracts.mjs +12 -0
- package/tools/vibe-runtime-check/runtime-high-risk-boundary-contracts.mjs +35 -0
- package/tools/vibe-runtime-check/runtime-high-risk-boundary-matrix.mjs +75 -0
- package/tools/vibe-runtime-check/runtime-index-import-boundary-contracts.mjs +192 -0
- package/tools/vibe-runtime-check/runtime-optimization-boundary-contracts.mjs +49 -0
- package/tools/vibe-runtime-check/runtime-pure-model-boundary-contracts.mjs +176 -0
- package/tools/vibe-runtime-check/runtime-release-closeout-contracts.mjs +25 -0
- package/tools/vibe-runtime-check/runtime-roadmap-marker-specs.mjs +559 -0
- package/tools/vibe-runtime-check/runtime-source-bundle.mjs +119 -0
- package/tools/vibe-runtime-check/runtime-tool-readme-contracts.mjs +93 -0
- package/tools/vibe-runtime-check/runtime-tool-readme-marker-specs.mjs +952 -0
- package/tools/vibe-runtime-check/workflow-skill-contracts.mjs +129 -0
- package/tools/vibe-runtime-check/workflow-skill-route-registry-contracts.mjs +106 -0
- package/tools/vibe-runtime-check/workflow-ux-contracts.mjs +46 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import process from 'node:process';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
|
|
7
|
+
import { assertJsonPathMarkers } from './release-check-json-markers.mjs';
|
|
8
|
+
import { attachCommandResult, releaseCheckSummaryPayload } from './release-check-run-summary.mjs';
|
|
9
|
+
|
|
10
|
+
export const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
11
|
+
export const baseTmpRoot = path.join(repoRoot, '.tmp');
|
|
12
|
+
export const releaseCheckRunId = `release-check-${process.pid}-${Date.now().toString(36)}`;
|
|
13
|
+
export const tmpRoot = path.join(baseTmpRoot, releaseCheckRunId);
|
|
14
|
+
export const releaseCheckCommandResults = [];
|
|
15
|
+
|
|
16
|
+
export function formatCommand(command, args) {
|
|
17
|
+
return [command, ...args].join(' ');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function writeCommandOutput(result) {
|
|
21
|
+
if (result.stdout) process.stdout.write(result.stdout);
|
|
22
|
+
if (result.stderr) process.stderr.write(result.stderr);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function removeTmp() {
|
|
26
|
+
fs.rmSync(tmpRoot, { recursive: true, force: true });
|
|
27
|
+
try {
|
|
28
|
+
fs.rmdirSync(baseTmpRoot);
|
|
29
|
+
} catch {
|
|
30
|
+
// Keep .tmp when another release-check run or suite-owned fixture still exists.
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function suiteTmpTarget(name) {
|
|
35
|
+
const normalized = String(name || '').trim();
|
|
36
|
+
if (!normalized || normalized.includes('/') || normalized.includes('\\') || normalized.includes('..')) {
|
|
37
|
+
throw new Error(`Invalid release-check suite tmp target: ${name}`);
|
|
38
|
+
}
|
|
39
|
+
const target = `.tmp/${normalized}`;
|
|
40
|
+
return { target, absoluteTarget: path.join(repoRoot, target) };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function withSuiteTmp(name, options = {}, fn) {
|
|
44
|
+
const targetInfo = suiteTmpTarget(name);
|
|
45
|
+
fs.rmSync(targetInfo.absoluteTarget, { recursive: true, force: true });
|
|
46
|
+
try {
|
|
47
|
+
fs.mkdirSync(targetInfo.absoluteTarget, { recursive: true });
|
|
48
|
+
return fn(targetInfo);
|
|
49
|
+
} finally {
|
|
50
|
+
if (!options.keepTmp) fs.rmSync(targetInfo.absoluteTarget, { recursive: true, force: true });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function writeReleaseCheckRunSummary(summary = {}) {
|
|
55
|
+
fs.mkdirSync(tmpRoot, { recursive: true });
|
|
56
|
+
const payload = releaseCheckSummaryPayload({
|
|
57
|
+
summaryId: releaseCheckRunId,
|
|
58
|
+
summary,
|
|
59
|
+
commands: releaseCheckCommandResults,
|
|
60
|
+
});
|
|
61
|
+
const file = path.join(tmpRoot, 'release-check-run-summary.json');
|
|
62
|
+
fs.writeFileSync(file, `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
|
|
63
|
+
return file;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function assertOutputIncludes(result, expected, label) {
|
|
67
|
+
const output = `${result.stdout || ''}${result.stderr || ''}`;
|
|
68
|
+
const missing = expected.filter((marker) => !output.includes(marker));
|
|
69
|
+
if (missing.length > 0) {
|
|
70
|
+
throw new Error(`${label} output missing marker(s): ${missing.join(', ')}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function parseJsonOutput(result, label) {
|
|
75
|
+
try {
|
|
76
|
+
return JSON.parse(result.stdout || '');
|
|
77
|
+
} catch (error) {
|
|
78
|
+
throw new Error(`${label} output is not valid JSON: ${error.message}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function runCheckNotIgnored(paths, options) {
|
|
83
|
+
const display = `git check-ignore -v ${paths.join(' ')}`;
|
|
84
|
+
if (!options.quiet) console.log(`\n$ ${display}`);
|
|
85
|
+
|
|
86
|
+
const startedAt = Date.now();
|
|
87
|
+
const result = spawnSync('git', ['check-ignore', '-v', ...paths], {
|
|
88
|
+
cwd: repoRoot,
|
|
89
|
+
encoding: 'utf8',
|
|
90
|
+
shell: process.platform === 'win32',
|
|
91
|
+
});
|
|
92
|
+
attachCommandResult(releaseCheckCommandResults, display, result, startedAt, result.status !== 0);
|
|
93
|
+
|
|
94
|
+
if (!options.quiet) writeCommandOutput(result);
|
|
95
|
+
|
|
96
|
+
if (result.status === 0) {
|
|
97
|
+
if (options.quiet) writeCommandOutput(result);
|
|
98
|
+
throw new Error(`fork path is ignored: ${paths.join(', ')}`);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (options.quiet) console.log(`[ok] ${display}`);
|
|
102
|
+
else console.log('[ok] fork paths are not ignored');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function run(command, args, settings = {}, options = { quiet: false }) {
|
|
106
|
+
const display = formatCommand(command, args);
|
|
107
|
+
if (!options.quiet) console.log(`\n$ ${display}`);
|
|
108
|
+
|
|
109
|
+
const startedAt = Date.now();
|
|
110
|
+
const result = spawnSync(command, args, {
|
|
111
|
+
cwd: repoRoot,
|
|
112
|
+
encoding: 'utf8',
|
|
113
|
+
shell: process.platform === 'win32',
|
|
114
|
+
env: settings.env ? { ...process.env, ...settings.env } : process.env,
|
|
115
|
+
});
|
|
116
|
+
attachCommandResult(releaseCheckCommandResults, display, result, startedAt, result.status !== 0 && settings.allowFailure);
|
|
117
|
+
|
|
118
|
+
if (!options.quiet) writeCommandOutput(result);
|
|
119
|
+
|
|
120
|
+
if (result.status !== 0 && !settings.allowFailure) {
|
|
121
|
+
if (options.quiet) {
|
|
122
|
+
console.error(`\n$ ${display}`);
|
|
123
|
+
writeCommandOutput(result);
|
|
124
|
+
}
|
|
125
|
+
throw new Error(`Command failed: ${display}`);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (result.status !== 0 && settings.allowFailure) {
|
|
129
|
+
if (settings.expectOutput) assertOutputIncludes(result, settings.expectOutput, display);
|
|
130
|
+
if (settings.expectJsonMarkers) assertJsonPathMarkers(parseJsonOutput(result, display), settings.expectJsonMarkers, display);
|
|
131
|
+
if (options.quiet) console.log(`[ok] ${display} returned non-zero; accepted for this check`);
|
|
132
|
+
else console.log('[info] command returned non-zero; accepted for this check');
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (options.quiet) console.log(`[ok] ${display}`);
|
|
137
|
+
if (settings.expectOutput) assertOutputIncludes(result, settings.expectOutput, display);
|
|
138
|
+
if (settings.expectJsonMarkers) assertJsonPathMarkers(parseJsonOutput(result, display), settings.expectJsonMarkers, display);
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
const runtimeSurfaceCapabilityExpectations = [
|
|
2
|
+
{ group: 'automation', stage: 'Stage 103', message: 'runtime surface missing Stage 103 automation capability group' },
|
|
3
|
+
{ group: 'workflow', stage: 'Stage 104', commands: ['workflow --loop-contract'], message: 'runtime surface missing Stage 104 workflow loop contract capability group' },
|
|
4
|
+
{ group: 'methodology', stage: 'Stage 105', commands: ['planner --action-manifest'], message: 'runtime surface missing Stage 105 plan action manifest capability group' },
|
|
5
|
+
{ group: 'verification', stage: 'Stage 106', commands: ['verification --self-test-profile'], message: 'runtime surface missing Stage 106 self-test profile capability group' },
|
|
6
|
+
{ group: 'release', stage: 'Stage 107', commands: ['release --commit-readiness'], message: 'runtime surface missing Stage 107 commit readiness capability group' },
|
|
7
|
+
{ group: 'automation', stage: 'Stage 108', commands: ['automation --one-shot-plan'], message: 'runtime surface missing Stage 108 confirmed one-shot plan capability group' },
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
const runtimeSurfaceInventoryExpectations = [
|
|
11
|
+
{ stage: 'Stage 99', command: 'completion --evidence-bundle', message: 'runtime surface missing Stage 99 inventory item' },
|
|
12
|
+
{ stage: 'Stage 100', command: 'governance --surface', message: 'runtime surface missing Stage 100 inventory item' },
|
|
13
|
+
{ stage: 'Stage 101', capability: 'runtime capability registry', message: 'runtime surface missing Stage 101 registry inventory item' },
|
|
14
|
+
{ stage: 'Stage 102', command: 'governance --surface --drift-guard', message: 'runtime surface missing Stage 102 drift guard inventory item' },
|
|
15
|
+
{ stage: 'Stage 103', command: 'automation --readiness', message: 'runtime surface missing Stage 103 automation readiness inventory item' },
|
|
16
|
+
{ stage: 'Stage 104', command: 'workflow --loop-contract', message: 'runtime surface missing Stage 104 workflow loop contract inventory item' },
|
|
17
|
+
{ stage: 'Stage 105', command: 'planner --action-manifest', message: 'runtime surface missing Stage 105 plan action manifest inventory item' },
|
|
18
|
+
{ stage: 'Stage 106', command: 'verification --self-test-profile', message: 'runtime surface missing Stage 106 self-test profile inventory item' },
|
|
19
|
+
{ stage: 'Stage 107', command: 'release --commit-readiness', message: 'runtime surface missing Stage 107 commit readiness inventory item' },
|
|
20
|
+
{ stage: 'Stage 108', command: 'automation --one-shot-plan', message: 'runtime surface missing Stage 108 confirmed one-shot plan inventory item' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const runtimeSurfaceStage113148Expectations = [
|
|
24
|
+
{ group: 'verification', stage: 'Stage 113', commands: ['verification --tdd-trace'], inventoryCommand: 'verification --tdd-trace', message: 'runtime surface missing Stage 113 TDD trace' },
|
|
25
|
+
{ group: 'workflow', stage: 'Stage 114', commands: ['workflow --close-loop', 'workflow --next-evidence'], inventoryCommands: ['workflow --close-loop', 'workflow --next-evidence'], message: 'runtime surface missing Stage 114 human-friendly alias' },
|
|
26
|
+
{ group: 'governance', stage: 'Stage 115', commands: ['governance --superpowers-gap'], inventoryCommand: 'governance --superpowers-gap', message: 'runtime surface missing Stage 115 Superpowers gap matrix' },
|
|
27
|
+
{ group: 'workflow', stage: 'Stage 116', commands: ['workflow --entry-ux'], inventoryCommand: 'workflow --entry-ux', message: 'runtime surface missing Stage 116 progressive entry UX' },
|
|
28
|
+
{ group: 'planner', stage: 'Stage 117', commands: ['planner --executable-plan'], inventoryCommand: 'planner --executable-plan', message: 'runtime surface missing Stage 117 executable plan quality' },
|
|
29
|
+
{ group: 'automation', stage: 'Stage 118', commands: ['automation --stage-runbook'], inventoryCommand: 'automation --stage-runbook', message: 'runtime surface missing Stage 118 sequential stage runbook' },
|
|
30
|
+
{ group: 'verification', stage: 'Stage 119', commands: ['verification --execution-evidence'], inventoryCommand: 'verification --execution-evidence', message: 'runtime surface missing Stage 119 execution evidence' },
|
|
31
|
+
{ group: 'release', stage: 'Stage 120', commands: ['release --staged-commit-readiness'], inventoryCommand: 'release --staged-commit-readiness', message: 'runtime surface missing Stage 120 staged commit readiness' },
|
|
32
|
+
{ group: 'evals', stage: 'Stage 121', commands: ['evals --behavior-contract'], inventoryCommand: 'evals --behavior-contract', message: 'runtime surface missing Stage 121 behavioral evaluation contract' },
|
|
33
|
+
{ group: 'platforms', stage: 'Stage 122', commands: ['platforms --bootstrap-matrix'], inventoryCommand: 'platforms --bootstrap-matrix', message: 'runtime surface missing Stage 122 adapter bootstrap matrix' },
|
|
34
|
+
{ group: 'governance', stage: 'Stage 123', commands: ['governance --traceability-map'], inventoryCommand: 'governance --traceability-map', message: 'runtime surface missing Stage 123 skill-to-runtime traceability' },
|
|
35
|
+
{ group: 'completion', stage: 'Stage 124', commands: ['completion --evidence-bundle'], inventoryCommand: 'completion --evidence-bundle', message: 'runtime surface missing Stage 124 human completion evidence' },
|
|
36
|
+
{ group: 'governance', stage: 'Stage 126', commands: ['governance --experience-friction'], inventoryCommand: 'governance --experience-friction', message: 'runtime surface missing Stage 126 experience friction' },
|
|
37
|
+
{ group: 'workflow', stage: 'Stage 127', commands: ['workflow --next-action-console'], inventoryCommand: 'workflow --next-action-console', message: 'runtime surface missing Stage 127 next action console' },
|
|
38
|
+
{ group: 'tokens', stage: 'Stage 128', commands: ['tokens --savior-budget'], inventoryCommand: 'tokens --savior-budget', message: 'runtime surface missing Stage 128 Token Savior budget' },
|
|
39
|
+
{ group: 'learning', stage: 'Stage 129', commands: ['learning --experience-pattern'], inventoryCommand: 'learning --experience-pattern', message: 'runtime surface missing Stage 129 ECC learning experience pattern' },
|
|
40
|
+
{ group: 'automation', stage: 'Stage 130', commands: ['automation --stage-scriptlet'], inventoryCommand: 'automation --stage-scriptlet', message: 'runtime surface missing Stage 130 copy-ready stage scriptlet' },
|
|
41
|
+
{ group: 'platforms', stage: 'Stage 131', commands: ['platforms --entry-acceptance'], inventoryCommand: 'platforms --entry-acceptance', message: 'runtime surface missing Stage 131 adapter entry acceptance' },
|
|
42
|
+
{ group: 'governance', stage: 'Stage 132', commands: ['governance --experience-dashboard'], inventoryCommand: 'governance --experience-dashboard', message: 'runtime surface missing Stage 132 experience regression dashboard' },
|
|
43
|
+
{ group: 'governance', stage: 'Stage 133', commands: ['governance --superpowers-comparison'], inventoryCommand: 'governance --superpowers-comparison', message: 'runtime surface missing Stage 133 Superpowers comparison' },
|
|
44
|
+
{ group: 'methodology', stage: 'Stage 136', commands: ['methodology --coverage-map'], inventoryCommand: 'methodology --coverage-map', message: 'runtime surface missing Stage 136 methodology coverage' },
|
|
45
|
+
{ group: 'governance', stage: 'Stage 139', commands: ['governance --experience-upgrades'], inventoryCommand: 'governance --experience-upgrades', message: 'runtime surface missing Stage 139 experience upgrade prioritizer' },
|
|
46
|
+
{ group: 'governance', stage: 'Stage 140', commands: ['governance --superpowers-parity-scorecard'], inventoryCommand: 'governance --superpowers-parity-scorecard', message: 'runtime surface missing Stage 140 Superpowers parity scorecard' },
|
|
47
|
+
{ group: 'tokens', stage: 'Stage 144', commands: ['tokens --entry-defaults'], inventoryCommand: 'tokens --entry-defaults', message: 'runtime surface missing Stage 144 context budget entry defaults' },
|
|
48
|
+
{ group: 'evals', stage: 'Stage 145', commands: ['evals --local-behavior-contracts'], inventoryCommand: 'evals --local-behavior-contracts', message: 'runtime surface missing Stage 145 local behavior eval contracts' },
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
function hasCapabilityGroup(runtimeSurface, expectation) {
|
|
52
|
+
return runtimeSurface?.capability_groups?.some((group) => {
|
|
53
|
+
if (group.group !== expectation.group) return false;
|
|
54
|
+
if (expectation.stage && !group.stages.includes(expectation.stage)) return false;
|
|
55
|
+
return (expectation.commands || []).every((command) => group.commands.includes(command));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function hasStageInventory(runtimeSurface, expectation) {
|
|
60
|
+
return runtimeSurface?.stage_inventory?.some((item) => {
|
|
61
|
+
if (item.stage !== expectation.stage) return false;
|
|
62
|
+
if (expectation.command && item.command !== expectation.command) return false;
|
|
63
|
+
if (expectation.capability && item.capability !== expectation.capability) return false;
|
|
64
|
+
return true;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function expectationInventoryCommands(expectation) {
|
|
69
|
+
if (expectation.inventoryCommands) return expectation.inventoryCommands;
|
|
70
|
+
if (expectation.inventoryCommand) return [expectation.inventoryCommand];
|
|
71
|
+
if (expectation.command) return [expectation.command];
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function assertNoDuplicateStageCommands(expectations, label) {
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
for (const expectation of expectations) {
|
|
78
|
+
for (const command of expectationInventoryCommands(expectation)) {
|
|
79
|
+
const key = `${expectation.stage}::${command}`;
|
|
80
|
+
if (seen.has(key)) throw new Error(`runtime surface expectation duplicate ${label}: ${key}`);
|
|
81
|
+
seen.add(key);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function assertRuntimeSurfaceExpectationModel() {
|
|
87
|
+
assertNoDuplicateStageCommands(runtimeSurfaceInventoryExpectations, 'inventory');
|
|
88
|
+
assertNoDuplicateStageCommands(runtimeSurfaceStage113148Expectations, 'stage inventory');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function assertRuntimeSurfaceExpectations(runtimeSurface) {
|
|
92
|
+
assertRuntimeSurfaceExpectationModel();
|
|
93
|
+
for (const expectation of runtimeSurfaceCapabilityExpectations) {
|
|
94
|
+
if (!hasCapabilityGroup(runtimeSurface, expectation)) throw new Error(expectation.message);
|
|
95
|
+
}
|
|
96
|
+
for (const expectation of runtimeSurfaceInventoryExpectations) {
|
|
97
|
+
if (!hasStageInventory(runtimeSurface, expectation)) throw new Error(expectation.message);
|
|
98
|
+
}
|
|
99
|
+
for (const expectation of runtimeSurfaceStage113148Expectations) {
|
|
100
|
+
if (!hasCapabilityGroup(runtimeSurface, expectation)) throw new Error(`${expectation.message} capability group`);
|
|
101
|
+
const commands = expectation.inventoryCommands || [expectation.inventoryCommand];
|
|
102
|
+
for (const command of commands) {
|
|
103
|
+
if (!hasStageInventory(runtimeSurface, { stage: expectation.stage, command })) throw new Error(`${expectation.message} inventory item`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import {
|
|
4
|
+
assertJsonMarkers,
|
|
5
|
+
parseJsonOutput,
|
|
6
|
+
repoRoot,
|
|
7
|
+
run,
|
|
8
|
+
} from './release-check-runtime.mjs';
|
|
9
|
+
import { assertRuntimeSurfaceExpectations } from './release-check-runtime-surface-expectations.mjs';
|
|
10
|
+
|
|
11
|
+
export function runRuntimeSurfaceSmoke(options) {
|
|
12
|
+
const target = '.tmp/vibe-runtime-surface';
|
|
13
|
+
const absoluteTarget = path.join(repoRoot, target);
|
|
14
|
+
fs.rmSync(absoluteTarget, { recursive: true, force: true });
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
fs.mkdirSync(absoluteTarget, { recursive: true });
|
|
18
|
+
const surface = parseJsonOutput(run('node', ['tools/vibe-runtime/index.mjs', 'governance', '--surface', '--json', '--root', target], {}, options), 'governance --surface --json');
|
|
19
|
+
assertJsonMarkers([
|
|
20
|
+
['command', surface.command, 'governance'],
|
|
21
|
+
['mode', surface.mode, 'runtime-capability-surface'],
|
|
22
|
+
['ok', surface.ok, true],
|
|
23
|
+
['runtime_surface.stage', surface.runtime_surface?.stage, 'Stage 100'],
|
|
24
|
+
['runtime_surface.surface_kind', surface.runtime_surface?.surface_kind, 'runtime-capability-surface'],
|
|
25
|
+
['runtime_surface.registry_stage', surface.runtime_surface?.registry_stage, 'Stage 101'],
|
|
26
|
+
['runtime_surface.registry_kind', surface.runtime_surface?.registry_kind, 'runtime-capability-registry'],
|
|
27
|
+
['runtime_surface.registry_version', surface.runtime_surface?.registry_version, 47],
|
|
28
|
+
['runtime_surface.registry_invariants.pass', surface.runtime_surface?.registry_invariants?.pass, true],
|
|
29
|
+
['runtime_surface.writes', surface.runtime_surface?.writes, false],
|
|
30
|
+
['runtime_surface.state_directory_created', surface.runtime_surface?.state_directory_created, false],
|
|
31
|
+
['runtime_surface.boundary_assertions.runtime_surface_artifact', surface.runtime_surface?.boundary_assertions?.runtime_surface_artifact, false],
|
|
32
|
+
['runtime_surface.boundary_assertions.capability_registry_artifact', surface.runtime_surface?.boundary_assertions?.capability_registry_artifact, false],
|
|
33
|
+
['runtime_surface.boundary_assertions.command_execution', surface.runtime_surface?.boundary_assertions?.command_execution, false],
|
|
34
|
+
['runtime_surface.boundary_assertions.workflow_execution', surface.runtime_surface?.boundary_assertions?.workflow_execution, false],
|
|
35
|
+
['runtime_surface.boundary_assertions.verification_execution', surface.runtime_surface?.boundary_assertions?.verification_execution, false],
|
|
36
|
+
['runtime_surface.boundary_assertions.git', surface.runtime_surface?.boundary_assertions?.git, false],
|
|
37
|
+
['runtime_surface.boundary_assertions.push', surface.runtime_surface?.boundary_assertions?.push, false],
|
|
38
|
+
['runtime_surface.boundary_assertions.pr', surface.runtime_surface?.boundary_assertions?.pr, false],
|
|
39
|
+
['runtime_surface.boundary_assertions.merge', surface.runtime_surface?.boundary_assertions?.merge, false],
|
|
40
|
+
['safety.stage', surface.safety?.stage, 'Stage 100'],
|
|
41
|
+
['safety.registry_stage', surface.safety?.registry_stage, 'Stage 101'],
|
|
42
|
+
['safety.runtime_surface_artifact', surface.safety?.runtime_surface_artifact, false],
|
|
43
|
+
['safety.capability_registry_artifact', surface.safety?.capability_registry_artifact, false],
|
|
44
|
+
['safety.platform_api', surface.safety?.platform_api, false],
|
|
45
|
+
], 'governance --surface --json');
|
|
46
|
+
if (!surface.runtime_surface?.surface_digest) throw new Error('runtime surface missing surface_digest');
|
|
47
|
+
if (!surface.runtime_surface?.registry_digest) throw new Error('runtime surface missing registry_digest');
|
|
48
|
+
if (!surface.runtime_surface?.registry_invariants?.checked?.includes('capability_groups')) throw new Error('runtime surface registry invariants missing capability_groups check');
|
|
49
|
+
assertRuntimeSurfaceExpectations(surface.runtime_surface);
|
|
50
|
+
if (!surface.runtime_surface?.capability_groups?.some((group) => group.group === 'completion')) throw new Error('runtime surface missing completion capability group');
|
|
51
|
+
if (!surface.runtime_surface?.capability_groups?.some((group) => group.group === 'governance' && group.stages.includes('Stage 101'))) throw new Error('runtime surface missing Stage 101 governance capability group');
|
|
52
|
+
if (!surface.runtime_surface?.closeout_chain?.some((item) => item.command.includes('release --commit-guard'))) throw new Error('runtime surface closeout chain missing commit guard');
|
|
53
|
+
if (fs.existsSync(path.join(absoluteTarget, '.vibecoding-state'))) throw new Error('governance --surface JSON output created unexpected state directory');
|
|
54
|
+
|
|
55
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'governance', '--surface', '--root', target], {
|
|
56
|
+
expectOutput: ['Vibecoding Runtime Capability Surface', 'Stage: Stage 100; Surface: runtime-capability-surface', 'Capability groups:', 'Registry: Stage 101; runtime-capability-registry; pass=true', 'Closeout chain:', 'Boundary: writes=false; runtime_surface_artifact=false; capability_registry_artifact=false', 'Registry digest:'],
|
|
57
|
+
}, options);
|
|
58
|
+
if (fs.existsSync(path.join(absoluteTarget, '.vibecoding-state'))) throw new Error('governance --surface text output created unexpected state directory');
|
|
59
|
+
|
|
60
|
+
for (const forbidden of ['--confirm', '--preview', '--write', '--preflight', '--dispatch', '--dispatch-intent', '--run', '--once', '--scan']) {
|
|
61
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'governance', '--surface', forbidden, '--root', target], {
|
|
62
|
+
allowFailure: true,
|
|
63
|
+
expectOutput: ['governance --surface is read-only'],
|
|
64
|
+
}, options);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'governance', '--surface', '--intent', 'closeout', '--root', target], {
|
|
68
|
+
allowFailure: true,
|
|
69
|
+
expectOutput: ['governance --surface does not accept --intent'],
|
|
70
|
+
}, options);
|
|
71
|
+
|
|
72
|
+
const driftGuard = parseJsonOutput(run('node', ['tools/vibe-runtime/index.mjs', 'governance', '--surface', '--drift-guard', '--json', '--root', target], {}, options), 'governance --surface --drift-guard --json');
|
|
73
|
+
assertJsonMarkers([
|
|
74
|
+
['command', driftGuard.command, 'governance'],
|
|
75
|
+
['mode', driftGuard.mode, 'runtime-capability-registry-drift-guard'],
|
|
76
|
+
['ok', driftGuard.ok, true],
|
|
77
|
+
['runtime_registry_drift_guard.stage', driftGuard.runtime_registry_drift_guard?.stage, 'Stage 102'],
|
|
78
|
+
['runtime_registry_drift_guard.guard_kind', driftGuard.runtime_registry_drift_guard?.guard_kind, 'runtime-capability-registry-drift-guard'],
|
|
79
|
+
['runtime_registry_drift_guard.registry_stage', driftGuard.runtime_registry_drift_guard?.registry_stage, 'Stage 101'],
|
|
80
|
+
['runtime_registry_drift_guard.surface_stage', driftGuard.runtime_registry_drift_guard?.surface_stage, 'Stage 100'],
|
|
81
|
+
['runtime_registry_drift_guard.guard_pass', driftGuard.runtime_registry_drift_guard?.guard_pass, true],
|
|
82
|
+
['runtime_registry_drift_guard.writes', driftGuard.runtime_registry_drift_guard?.writes, false],
|
|
83
|
+
['runtime_registry_drift_guard.state_directory_created', driftGuard.runtime_registry_drift_guard?.state_directory_created, false],
|
|
84
|
+
['runtime_registry_drift_guard.boundary_assertions.runtime_registry_drift_guard_artifact', driftGuard.runtime_registry_drift_guard?.boundary_assertions?.runtime_registry_drift_guard_artifact, false],
|
|
85
|
+
['runtime_registry_drift_guard.boundary_assertions.command_execution', driftGuard.runtime_registry_drift_guard?.boundary_assertions?.command_execution, false],
|
|
86
|
+
['runtime_registry_drift_guard.boundary_assertions.workflow_execution', driftGuard.runtime_registry_drift_guard?.boundary_assertions?.workflow_execution, false],
|
|
87
|
+
['runtime_registry_drift_guard.boundary_assertions.verification_execution', driftGuard.runtime_registry_drift_guard?.boundary_assertions?.verification_execution, false],
|
|
88
|
+
['safety.stage', driftGuard.safety?.stage, 'Stage 102'],
|
|
89
|
+
['safety.registry_stage', driftGuard.safety?.registry_stage, 'Stage 101'],
|
|
90
|
+
['safety.surface_stage', driftGuard.safety?.surface_stage, 'Stage 100'],
|
|
91
|
+
['safety.runtime_registry_drift_guard_artifact', driftGuard.safety?.runtime_registry_drift_guard_artifact, false],
|
|
92
|
+
], 'governance --surface --drift-guard --json');
|
|
93
|
+
if (!driftGuard.runtime_registry_drift_guard?.drift_guard_digest) throw new Error('runtime registry drift guard missing drift_guard_digest');
|
|
94
|
+
if (!driftGuard.runtime_registry_drift_guard?.checked?.includes('doc_marker_expectations')) throw new Error('runtime registry drift guard missing doc marker expectation check');
|
|
95
|
+
if (!driftGuard.runtime_registry_drift_guard?.doc_marker_expectations?.some((item) => item.file === 'tools/vibe-release-check/index.mjs')) throw new Error('runtime registry drift guard missing release-check marker expectation');
|
|
96
|
+
if (fs.existsSync(path.join(absoluteTarget, '.vibecoding-state'))) throw new Error('governance --surface --drift-guard JSON output created unexpected state directory');
|
|
97
|
+
|
|
98
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'governance', '--surface', '--drift-guard', '--root', target], {
|
|
99
|
+
expectOutput: ['Vibecoding Runtime Capability Registry Drift Guard', 'Stage: Stage 102; Guard: runtime-capability-registry-drift-guard; pass=true', 'Registry: Stage 101; runtime-capability-registry', 'Surface: Stage 100; runtime-capability-surface', 'Boundary: writes=false; runtime_registry_drift_guard_artifact=false', 'Drift guard digest:'],
|
|
100
|
+
}, options);
|
|
101
|
+
if (fs.existsSync(path.join(absoluteTarget, '.vibecoding-state'))) throw new Error('governance --surface --drift-guard text output created unexpected state directory');
|
|
102
|
+
|
|
103
|
+
for (const forbidden of ['--confirm', '--preview', '--write', '--preflight', '--dispatch', '--dispatch-intent', '--run', '--once', '--scan']) {
|
|
104
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'governance', '--surface', '--drift-guard', forbidden, '--root', target], {
|
|
105
|
+
allowFailure: true,
|
|
106
|
+
expectOutput: ['governance --surface is read-only'],
|
|
107
|
+
}, options);
|
|
108
|
+
}
|
|
109
|
+
} finally {
|
|
110
|
+
if (!options.keepTmp) fs.rmSync(absoluteTarget, { recursive: true, force: true });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import {
|
|
4
|
+
assertJsonMarkers,
|
|
5
|
+
assertOutputIncludes,
|
|
6
|
+
parseJsonOutput,
|
|
7
|
+
repoRoot,
|
|
8
|
+
run,
|
|
9
|
+
} from './release-check-runtime.mjs';
|
|
10
|
+
|
|
11
|
+
export function runRuntimeTaskArtifactSmoke(context, options) {
|
|
12
|
+
const {
|
|
13
|
+
target,
|
|
14
|
+
absoluteTarget,
|
|
15
|
+
jsonHandoffFile,
|
|
16
|
+
artifactFiles,
|
|
17
|
+
taskArtifactFiles,
|
|
18
|
+
} = context;
|
|
19
|
+
|
|
20
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'artifacts', '--dry-run', '--root', target], {
|
|
21
|
+
expectOutput: ['Vibecoding Runtime Artifacts', 'Mode: dry-run', '--- .vibecoding-state/task-brief.md ---', '# Runtime Task Brief', 'Goal', 'Workflow reason', 'Key decisions', '--- .vibecoding-state/review-gate.md ---', '# Runtime Review Gate', 'Review focus', 'Risk gate', 'Evidence gate', '--- .vibecoding-state/evidence.md ---', '# Runtime Evidence', 'Goal under verification', 'Evidence gaps to fill', 'Acceptance to verify', 'Decisions requiring evidence', 'Action: artifacts were previewed. No files were written.'],
|
|
22
|
+
}, options);
|
|
23
|
+
for (const file of artifactFiles) {
|
|
24
|
+
if (fs.existsSync(file)) throw new Error(`artifacts --dry-run wrote unexpected file: ${file}`);
|
|
25
|
+
}
|
|
26
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'tasks', '--dry-run', '--root', target], {
|
|
27
|
+
expectOutput: ['Vibecoding Runtime Task Artifacts', 'Mode: dry-run', '--- .vibecoding-state/tasks/task-1/brief.md ---', '# Runtime Task Brief: release check task artifact smoke', 'Task identity', 'Readiness: ready', 'Dependencies', 'Dependency readiness', '--- .vibecoding-state/tasks/task-1/report.md ---', '# Runtime Task Report: release check task artifact smoke', 'Verification evidence', '--- .vibecoding-state/tasks/task-1/review-gate.md ---', '# Runtime Task Review Gate: release check task artifact smoke', 'Review state', 'Status: not_started', 'Spec compliance gate', '--- .vibecoding-state/tasks/task-1/evidence.md ---', '# Runtime Task Evidence: release check task artifact smoke', 'Evidence gaps to fill', '--- .vibecoding-state/tasks/task-5/brief.md ---', 'Readiness: waiting', 'Blocked by: task-1', '--- .vibecoding-state/tasks/task.alpha_1/review-gate.md ---', 'Status: waived', 'user accepted documented review risk', 'Action: task artifacts were previewed. No files were written.'],
|
|
28
|
+
}, options);
|
|
29
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'tasks', '--dry-run', '--task', 'task.alpha_1', '--root', target], {
|
|
30
|
+
expectOutput: ['Vibecoding Runtime Task Artifacts', 'Mode: dry-run', 'Task filter: task.alpha_1', 'Tasks selected: 1 of 6', '--- .vibecoding-state/tasks/task.alpha_1/review-gate.md ---', 'Status: waived', 'user accepted documented review risk', 'Action: task artifacts were previewed. No files were written.'],
|
|
31
|
+
}, options);
|
|
32
|
+
const taskFilterJson = parseJsonOutput(run('node', ['tools/vibe-runtime/index.mjs', 'tasks', '--dry-run', '--task', 'task.alpha_1', '--json', '--root', target], {}, options), 'tasks --dry-run --task --json');
|
|
33
|
+
assertJsonMarkers([
|
|
34
|
+
['schema_version', taskFilterJson.schema_version, 1],
|
|
35
|
+
['command', taskFilterJson.command, 'tasks'],
|
|
36
|
+
['mode', taskFilterJson.mode, 'dry-run'],
|
|
37
|
+
['summary.total_tasks', taskFilterJson.summary?.total_tasks, 6],
|
|
38
|
+
['summary.selected_count', taskFilterJson.summary?.selected_count, 1],
|
|
39
|
+
['summary.selected_task_ids.0', taskFilterJson.summary?.selected_task_ids?.[0], 'task.alpha_1'],
|
|
40
|
+
['tasks.0.id', taskFilterJson.tasks?.[0]?.id, 'task.alpha_1'],
|
|
41
|
+
['tasks.0.readiness', taskFilterJson.tasks?.[0]?.readiness, 'completed'],
|
|
42
|
+
['tasks.0.artifact_paths.review-gate.md', taskFilterJson.tasks?.[0]?.artifact_paths?.['review-gate.md'], '.vibecoding-state/tasks/task.alpha_1/review-gate.md'],
|
|
43
|
+
], 'tasks --dry-run --task --json');
|
|
44
|
+
const dependencyFilterJson = parseJsonOutput(run('node', ['tools/vibe-runtime/index.mjs', 'tasks', '--dry-run', '--task', 'task-2', '--json', '--root', target], {}, options), 'tasks --dry-run --task dependency --json');
|
|
45
|
+
assertJsonMarkers([
|
|
46
|
+
['summary.selected_count', dependencyFilterJson.summary?.selected_count, 1],
|
|
47
|
+
['summary.selected_task_ids.0', dependencyFilterJson.summary?.selected_task_ids?.[0], 'task-2'],
|
|
48
|
+
['tasks.0.id', dependencyFilterJson.tasks?.[0]?.id, 'task-2'],
|
|
49
|
+
['tasks.0.readiness', dependencyFilterJson.tasks?.[0]?.readiness, 'ready'],
|
|
50
|
+
['tasks.0.blocked_by.length', dependencyFilterJson.tasks?.[0]?.blocked_by?.length, 0],
|
|
51
|
+
], 'tasks --dry-run --task dependency --json');
|
|
52
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'tasks', '--dry-run', '--task', 'missing-task', '--root', target], {
|
|
53
|
+
allowFailure: true,
|
|
54
|
+
expectOutput: ['Task not found in workflow state: missing-task'],
|
|
55
|
+
}, options);
|
|
56
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'tasks', '--dry-run', '--task', 'CON', '--root', target], {
|
|
57
|
+
allowFailure: true,
|
|
58
|
+
expectOutput: ['Invalid task id: CON'],
|
|
59
|
+
}, options);
|
|
60
|
+
for (const file of taskArtifactFiles) {
|
|
61
|
+
if (fs.existsSync(file)) throw new Error(`tasks --dry-run wrote unexpected file: ${file}`);
|
|
62
|
+
}
|
|
63
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'artifacts', '--write', '--root', target], {
|
|
64
|
+
expectOutput: ['Vibecoding Runtime Artifacts', 'Mode: write', 'task-brief.md', 'review-gate.md', 'evidence.md', 'Action: artifacts were written. No next skill was executed.'],
|
|
65
|
+
}, options);
|
|
66
|
+
for (const file of artifactFiles) {
|
|
67
|
+
if (!fs.existsSync(file)) throw new Error(`artifacts --write did not create expected file: ${file}`);
|
|
68
|
+
}
|
|
69
|
+
const [taskBriefFile, reviewGateFile, evidenceFile] = artifactFiles;
|
|
70
|
+
assertOutputIncludes({ stdout: fs.readFileSync(taskBriefFile, 'utf8') }, ['# Runtime Task Brief', 'Goal', 'release check JSON handoff', 'Workflow reason', 'Key decisions', 'JSON handoff is supported', 'Missing fields are shown as not recorded'], taskBriefFile);
|
|
71
|
+
assertOutputIncludes({ stdout: fs.readFileSync(reviewGateFile, 'utf8') }, ['# Runtime Review Gate', 'Review focus', 'Key decisions to verify', 'JSON handoff is supported', 'Risk gate', 'Evidence gate'], reviewGateFile);
|
|
72
|
+
assertOutputIncludes({ stdout: fs.readFileSync(evidenceFile, 'utf8') }, ['# Runtime Evidence', 'Goal under verification', 'release check JSON handoff', 'Evidence gaps to fill', 'Acceptance to verify', 'Decisions requiring evidence', 'JSON handoff is supported'], evidenceFile);
|
|
73
|
+
|
|
74
|
+
const taskFilterTarget = '.tmp/vibe-runtime-task-filter-ledger';
|
|
75
|
+
const absoluteTaskFilterTarget = path.join(repoRoot, taskFilterTarget);
|
|
76
|
+
fs.rmSync(absoluteTaskFilterTarget, { recursive: true, force: true });
|
|
77
|
+
fs.mkdirSync(absoluteTaskFilterTarget, { recursive: true });
|
|
78
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'record-handoff', '--from-file', jsonHandoffFile, '--root', taskFilterTarget], {}, options);
|
|
79
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'tasks', '--write', '--task', 'task.alpha_1', '--root', taskFilterTarget], {
|
|
80
|
+
expectOutput: ['Vibecoding Runtime Task Artifacts', 'Mode: write', 'Task filter: task.alpha_1', 'Tasks selected: 1 of 6', 'brief.md', 'report.md', 'review-gate.md', 'evidence.md', 'Action: task artifacts were written. No next skill was executed.'],
|
|
81
|
+
}, options);
|
|
82
|
+
const selectedTaskFilterFile = path.join(absoluteTaskFilterTarget, '.vibecoding-state', 'tasks', 'task.alpha_1', 'review-gate.md');
|
|
83
|
+
const unselectedTaskFilterFile = path.join(absoluteTaskFilterTarget, '.vibecoding-state', 'tasks', 'task-1', 'review-gate.md');
|
|
84
|
+
if (!fs.existsSync(selectedTaskFilterFile)) throw new Error(`tasks --write --task did not create selected task file: ${selectedTaskFilterFile}`);
|
|
85
|
+
if (fs.existsSync(unselectedTaskFilterFile)) throw new Error(`tasks --write --task created unselected task file: ${unselectedTaskFilterFile}`);
|
|
86
|
+
fs.rmSync(absoluteTaskFilterTarget, { recursive: true, force: true });
|
|
87
|
+
|
|
88
|
+
run('node', ['tools/vibe-runtime/index.mjs', 'tasks', '--write', '--root', target], {
|
|
89
|
+
expectOutput: ['Vibecoding Runtime Task Artifacts', 'Mode: write', 'brief.md', 'report.md', 'review-gate.md', 'evidence.md', 'Action: task artifacts were written. No next skill was executed.'],
|
|
90
|
+
}, options);
|
|
91
|
+
for (const file of taskArtifactFiles) {
|
|
92
|
+
if (!fs.existsSync(file)) throw new Error(`tasks --write did not create expected file: ${file}`);
|
|
93
|
+
}
|
|
94
|
+
const [taskLevelBriefFile, taskLevelReportFile, taskLevelReviewGateFile, taskLevelEvidenceFile] = taskArtifactFiles;
|
|
95
|
+
const waitingTaskBriefFile = path.join(absoluteTarget, '.vibecoding-state', 'tasks', 'task-5', 'brief.md');
|
|
96
|
+
const waivedReviewGateFile = path.join(absoluteTarget, '.vibecoding-state', 'tasks', 'task.alpha_1', 'review-gate.md');
|
|
97
|
+
const needsFixReviewGateFile = path.join(absoluteTarget, '.vibecoding-state', 'tasks', 'task-4', 'review-gate.md');
|
|
98
|
+
assertOutputIncludes({ stdout: fs.readFileSync(taskLevelBriefFile, 'utf8') }, ['# Runtime Task Brief: release check task artifact smoke', 'Task identity', 'task-1', 'Readiness: ready', 'Blocked by: not recorded', 'Dependencies', 'Dependency readiness', 'task artifacts can be previewed and written', 'No next skill, subagent, git, worktree, or verification command was executed.'], taskLevelBriefFile);
|
|
99
|
+
assertOutputIncludes({ stdout: fs.readFileSync(waitingTaskBriefFile, 'utf8') }, ['# Runtime Task Brief: release check waiting dependency smoke', 'Readiness: waiting', 'Blocked by: task-1', 'Dependencies', 'task-1', 'Dependency readiness'], waitingTaskBriefFile);
|
|
100
|
+
assertOutputIncludes({ stdout: fs.readFileSync(taskLevelReportFile, 'utf8') }, ['# Runtime Task Report: release check task artifact smoke', 'Claimed outcome', 'not recorded', 'Verification evidence', 'release-check', 'No implementation was executed.'], taskLevelReportFile);
|
|
101
|
+
assertOutputIncludes({ stdout: fs.readFileSync(taskLevelReviewGateFile, 'utf8') }, ['# Runtime Task Review Gate: release check task artifact smoke', 'Review state', 'Status: not_started', 'Waiver: not recorded', 'Spec compliance gate', 'Risk gate', 'Evidence gate', 'No reviewer or subagent was invoked.'], taskLevelReviewGateFile);
|
|
102
|
+
assertOutputIncludes({ stdout: fs.readFileSync(needsFixReviewGateFile, 'utf8') }, ['# Runtime Task Review Gate: release check needs fix review smoke', 'Status: needs_fix', 'fix required before finishing', 'important feedback remains'], needsFixReviewGateFile);
|
|
103
|
+
assertOutputIncludes({ stdout: fs.readFileSync(waivedReviewGateFile, 'utf8') }, ['# Runtime Task Review Gate: release check waived review smoke', 'Status: waived', 'user accepted documented review risk', 'waived review risk'], waivedReviewGateFile);
|
|
104
|
+
assertOutputIncludes({ stdout: fs.readFileSync(taskLevelEvidenceFile, 'utf8') }, ['# Runtime Task Evidence: release check task artifact smoke', 'Existing evidence', 'Acceptance to verify', 'Evidence gaps to fill', 'No verification command was executed.'], taskLevelEvidenceFile);
|
|
105
|
+
}
|