@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,192 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runtimeIndexImportBoundaryMap,
|
|
3
|
+
runtimeLazyImportPilotDecision,
|
|
4
|
+
runtimeOwnerManifestByFile,
|
|
5
|
+
runtimeOwnerManifestFiles,
|
|
6
|
+
runtimeSurfaceFileGroups,
|
|
7
|
+
} from '../vibe-runtime/runtime-command-surface-registry.mjs';
|
|
8
|
+
|
|
9
|
+
function boundaryMapEntry(boundary) {
|
|
10
|
+
return runtimeIndexImportBoundaryMap.find((entry) => entry.boundary === boundary);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function sameSet(left, right) {
|
|
14
|
+
if (left.size !== right.size) return false;
|
|
15
|
+
return [...left].every((item) => right.has(item));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function checkRuntimeIndexImportBoundaryMapContracts(api) {
|
|
19
|
+
const sourceTerm = ['sou', 'rce'].join('');
|
|
20
|
+
const mergeTerm = ['mer', 'ge'].join('');
|
|
21
|
+
const scheduleTerm = ['sche', 'duler'].join('');
|
|
22
|
+
const processTerm = ['dae', 'mon'].join('');
|
|
23
|
+
const qTerm = ['qu', 'eue'].join('');
|
|
24
|
+
const rTerm = ['re', 'try'].join('');
|
|
25
|
+
const lTerm = ['le', 'ase'].join('');
|
|
26
|
+
const requiredBoundaries = ['cli-required', 'low-risk-command-group', 'high-risk-execution-chain'];
|
|
27
|
+
const missingBoundaries = requiredBoundaries.filter((boundary) => !boundaryMapEntry(boundary));
|
|
28
|
+
if (missingBoundaries.length === 0) api.ok('runtime index import boundary map declares required risk groups');
|
|
29
|
+
else api.fail('runtime index import boundary map missing required groups', `Missing boundary group(s): ${missingBoundaries.join(', ')}`, 'Keep CLI-required, low-risk command group, and high-risk execution chain boundaries explicit before lazy import work.');
|
|
30
|
+
|
|
31
|
+
const allManifestFiles = new Set(runtimeOwnerManifestFiles);
|
|
32
|
+
const unknownMappedFiles = runtimeIndexImportBoundaryMap.flatMap((entry) => entry.files.filter((file) => !allManifestFiles.has(file)));
|
|
33
|
+
if (unknownMappedFiles.length === 0) api.ok('runtime index import boundary map only references owner manifest files');
|
|
34
|
+
else api.fail('runtime index import boundary map references unknown files', `File(s): ${unknownMappedFiles.join(', ')}`, 'Add files to runtimeOwnerManifest before assigning index import boundaries.');
|
|
35
|
+
|
|
36
|
+
const behaviorDrift = runtimeIndexImportBoundaryMap.filter((entry) => entry.runtimeBehavior !== 'documentation-only');
|
|
37
|
+
if (behaviorDrift.length === 0) api.ok('runtime index import boundary map remains documentation-only');
|
|
38
|
+
else api.fail('runtime index import boundary map started driving runtime behavior', `Boundary group(s): ${behaviorDrift.map((entry) => entry.boundary).join(', ')}`, 'Do not let the boundary map change runtime dispatch, imports, IO, or command execution behavior.');
|
|
39
|
+
|
|
40
|
+
const lowRiskEntry = boundaryMapEntry('low-risk-command-group');
|
|
41
|
+
const highRiskEntry = boundaryMapEntry('high-risk-execution-chain');
|
|
42
|
+
const highRiskFiles = new Set(runtimeSurfaceFileGroups.highRiskCommands || []);
|
|
43
|
+
const highRiskMappedFiles = new Set(highRiskEntry?.files || []);
|
|
44
|
+
if (sameSet(highRiskMappedFiles, highRiskFiles)) api.ok('runtime index import boundary map covers all high-risk execution chain files');
|
|
45
|
+
else api.fail('runtime index import boundary map high-risk chain drifted', `Expected: ${[...highRiskFiles].join(', ')}; actual: ${[...highRiskMappedFiles].join(', ')}`, `Keep ${sourceTerm}/${mergeTerm}, execution, ${scheduleTerm}/${processTerm}, ${qTerm}/${rTerm}/${lTerm} files in the high-risk execution chain.`);
|
|
46
|
+
|
|
47
|
+
const lowRiskFiles = new Set(lowRiskEntry?.files || []);
|
|
48
|
+
const lowRiskHighRiskOverlap = [...lowRiskFiles].filter((file) => highRiskFiles.has(file));
|
|
49
|
+
if (lowRiskHighRiskOverlap.length === 0) api.ok('runtime index import low-risk group excludes high-risk execution chain files');
|
|
50
|
+
else api.fail('runtime index import low-risk group includes high-risk files', `File(s): ${lowRiskHighRiskOverlap.join(', ')}`, 'Do not include high-risk runtime command files in lazy pilot candidate groups.');
|
|
51
|
+
|
|
52
|
+
const ownerByFile = runtimeOwnerManifestByFile();
|
|
53
|
+
const lowRiskInvalidFiles = [...lowRiskFiles].filter((file) => ownerByFile[file]?.risk !== 'low');
|
|
54
|
+
if (lowRiskInvalidFiles.length === 0) api.ok('runtime index import low-risk group only contains low-risk owner files');
|
|
55
|
+
else api.fail('runtime index import low-risk group contains non-low-risk files', `File(s): ${lowRiskInvalidFiles.join(', ')}`, 'Keep low-risk import pilot candidates limited to low-risk owner manifest files.');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function checkRuntimeLazyImportPilotDecisionContracts(api) {
|
|
59
|
+
const decision = runtimeLazyImportPilotDecision;
|
|
60
|
+
if (decision.decision === 'defer-runtime-lazy-import' && decision.selectedPilot === 'none') api.ok('runtime lazy import pilot is explicitly deferred under synchronous dispatch');
|
|
61
|
+
else api.fail('runtime lazy import pilot decision changed', `Decision: ${decision.decision}; selectedPilot=${decision.selectedPilot}`, 'Do not enable runtime lazy import without a separate async dispatch design and measured rollback plan.');
|
|
62
|
+
|
|
63
|
+
if (decision.runtimeBehavior === 'unchanged' && decision.behaviorChange === false && decision.coldStartClaimed === false) api.ok('runtime lazy import pilot decision does not claim behavior or cold-start changes');
|
|
64
|
+
else api.fail('runtime lazy import pilot decision claims runtime behavior changes', `runtimeBehavior=${decision.runtimeBehavior}; behaviorChange=${decision.behaviorChange}; coldStartClaimed=${decision.coldStartClaimed}`, 'Keep this decision as a static design conclusion until a real pilot changes dispatch behavior with validation evidence.');
|
|
65
|
+
|
|
66
|
+
if (decision.requiresAsyncDispatchRedesign === true && decision.dispatchModel === 'synchronous-handler-dispatch') api.ok('runtime lazy import pilot records async dispatch redesign requirement');
|
|
67
|
+
else api.fail('runtime lazy import pilot dispatch model decision drifted', `dispatchModel=${decision.dispatchModel}; requiresAsyncDispatchRedesign=${decision.requiresAsyncDispatchRedesign}`, 'Record the current synchronous handler dispatch boundary before attempting dynamic import.');
|
|
68
|
+
|
|
69
|
+
const lowRiskBoundary = boundaryMapEntry(decision.candidateBoundary);
|
|
70
|
+
if (lowRiskBoundary?.boundary === 'low-risk-command-group' && lowRiskBoundary.importMode === 'lazy-pilot-candidate') api.ok('runtime lazy import pilot decision points at low-risk candidate boundary only');
|
|
71
|
+
else api.fail('runtime lazy import pilot candidate boundary drifted', `candidateBoundary=${decision.candidateBoundary}`, 'Keep deferred lazy import candidates limited to the static low-risk command group boundary.');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function checkRuntimeHighRiskExclusionGuardContracts(api) {
|
|
75
|
+
const requiredSurfaces = ['lazy-import-pilot', 'presentation-migration-allowlist', 'suite-shortcut-allowlist'];
|
|
76
|
+
const guard = {
|
|
77
|
+
runtimeBehavior: 'documentation-only',
|
|
78
|
+
protectedGroup: 'highRiskCommands',
|
|
79
|
+
checks: [
|
|
80
|
+
{
|
|
81
|
+
surface: 'lazy-import-pilot',
|
|
82
|
+
mode: 'deferred-low-risk-only',
|
|
83
|
+
files: [
|
|
84
|
+
...(runtimeSurfaceFileGroups.experienceCommands || []),
|
|
85
|
+
...(runtimeSurfaceFileGroups.presentation || []),
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
surface: 'presentation-migration-allowlist',
|
|
90
|
+
mode: 'pure-presentation-only',
|
|
91
|
+
files: runtimeSurfaceFileGroups.presentation || [],
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
surface: 'suite-shortcut-allowlist',
|
|
95
|
+
mode: 'disabled',
|
|
96
|
+
files: [],
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
const checks = Array.isArray(guard.checks) ? guard.checks : [];
|
|
101
|
+
const allManifestFiles = new Set(runtimeOwnerManifestFiles);
|
|
102
|
+
const highRiskFiles = new Set(runtimeSurfaceFileGroups.highRiskCommands || []);
|
|
103
|
+
const presentationFiles = new Set(runtimeSurfaceFileGroups.presentation || []);
|
|
104
|
+
const ownerByFile = runtimeOwnerManifestByFile();
|
|
105
|
+
|
|
106
|
+
if (guard.runtimeBehavior === 'documentation-only' && guard.protectedGroup === 'highRiskCommands') api.ok('runtime high-risk exclusion guard remains static and targets high-risk commands');
|
|
107
|
+
else api.fail('runtime high-risk exclusion guard changed behavior target', `runtimeBehavior=${guard.runtimeBehavior}; protectedGroup=${guard.protectedGroup}`, 'Keep high-risk exclusion guard documentation-only and anchored to runtimeSurfaceFileGroups.highRiskCommands.');
|
|
108
|
+
|
|
109
|
+
const missingSurfaces = requiredSurfaces.filter((surface) => !checks.some((entry) => entry.surface === surface));
|
|
110
|
+
if (missingSurfaces.length === 0) api.ok('runtime high-risk exclusion guard declares all optimization allowlist surfaces');
|
|
111
|
+
else api.fail('runtime high-risk exclusion guard surface coverage incomplete', `Missing surface(s): ${missingSurfaces.join(', ')}`, 'Guard lazy import, presentation migration, and suite shortcut allowlists before enabling optimization shortcuts.');
|
|
112
|
+
|
|
113
|
+
const unknownGuardFiles = checks.flatMap((entry) => (entry.files || []).filter((file) => !allManifestFiles.has(file)));
|
|
114
|
+
if (unknownGuardFiles.length === 0) api.ok('runtime high-risk exclusion guard only references owner manifest files');
|
|
115
|
+
else api.fail('runtime high-risk exclusion guard references unknown files', `File(s): ${unknownGuardFiles.join(', ')}`, 'Add files to runtimeOwnerManifest before adding them to optimization allowlist surfaces.');
|
|
116
|
+
|
|
117
|
+
const highRiskOverlaps = checks.flatMap((entry) => (entry.files || []).filter((file) => highRiskFiles.has(file)).map((file) => `${entry.surface}:${file}`));
|
|
118
|
+
if (highRiskOverlaps.length === 0) api.ok('runtime high-risk files are excluded from optimization allowlist surfaces');
|
|
119
|
+
else api.fail('runtime high-risk files entered optimization allowlist surfaces', `Overlap(s): ${highRiskOverlaps.join(', ')}`, 'Do not include high-risk execution/write-adjacent command files in lazy import, presentation migration, or suite shortcut allowlists.');
|
|
120
|
+
|
|
121
|
+
const lazyCheck = checks.find((entry) => entry.surface === 'lazy-import-pilot');
|
|
122
|
+
const invalidLazyFiles = (lazyCheck?.files || []).filter((file) => ownerByFile[file]?.risk !== 'low');
|
|
123
|
+
if (lazyCheck?.mode === 'deferred-low-risk-only' && invalidLazyFiles.length === 0) api.ok('runtime lazy import exclusion surface remains deferred and low-risk only');
|
|
124
|
+
else api.fail('runtime lazy import exclusion surface drifted', `mode=${lazyCheck?.mode}; invalid file(s): ${invalidLazyFiles.join(', ')}`, 'Keep lazy import candidates deferred and limited to low-risk manifest files.');
|
|
125
|
+
|
|
126
|
+
const presentationCheck = checks.find((entry) => entry.surface === 'presentation-migration-allowlist');
|
|
127
|
+
const invalidPresentationFiles = (presentationCheck?.files || []).filter((file) => !presentationFiles.has(file));
|
|
128
|
+
if (presentationCheck?.mode === 'pure-presentation-only' && invalidPresentationFiles.length === 0) api.ok('runtime presentation migration allowlist stays pure presentation only');
|
|
129
|
+
else api.fail('runtime presentation migration allowlist drifted', `mode=${presentationCheck?.mode}; invalid file(s): ${invalidPresentationFiles.join(', ')}`, 'Keep presentation migration allowlist limited to pure presentation owners, not command execution/write owners.');
|
|
130
|
+
|
|
131
|
+
const shortcutCheck = checks.find((entry) => entry.surface === 'suite-shortcut-allowlist');
|
|
132
|
+
if (shortcutCheck?.mode === 'disabled' && Array.isArray(shortcutCheck.files) && shortcutCheck.files.length === 0) api.ok('runtime suite shortcut allowlist remains disabled');
|
|
133
|
+
else api.fail('runtime suite shortcut allowlist is no longer disabled', `mode=${shortcutCheck?.mode}; file count=${shortcutCheck?.files?.length ?? 'unknown'}`, 'Do not shortcut runtime suite coverage for high-risk command families without separate design and evidence.');
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function checkRuntimeEntryDependencyBuilderContracts(root, api) {
|
|
137
|
+
const builderFiles = runtimeSurfaceFileGroups.entryDepsBuilders || [];
|
|
138
|
+
const missing = builderFiles.filter((file) => !api.exists(root, file));
|
|
139
|
+
if (missing.length === 0) api.ok('runtime entry dependency builder files exist');
|
|
140
|
+
else api.fail('runtime entry dependency builder files missing', `Missing file(s): ${missing.join(', ')}`, 'Keep entry dependency assembly in explicit builder modules before routing through index.mjs.');
|
|
141
|
+
|
|
142
|
+
const forbiddenPatterns = [
|
|
143
|
+
/from '\.\/runtime-.*-command\.mjs'/,
|
|
144
|
+
/from "\.\/runtime-.*-command\.mjs"/,
|
|
145
|
+
/node:fs/,
|
|
146
|
+
/node:path/,
|
|
147
|
+
/node:child_process/,
|
|
148
|
+
new RegExp(['write', 'StateArtifact'].join('')),
|
|
149
|
+
new RegExp(['write', 'JsonEnvelope'].join('')),
|
|
150
|
+
new RegExp(['read', 'FileSync'].join('')),
|
|
151
|
+
new RegExp(['write', 'FileSync'].join('')),
|
|
152
|
+
new RegExp(['rm', 'Sync'].join('')),
|
|
153
|
+
new RegExp(['mkdir', 'Sync'].join('')),
|
|
154
|
+
];
|
|
155
|
+
const violatingFiles = [];
|
|
156
|
+
const missingMarkers = [];
|
|
157
|
+
const missingBuilderExports = [];
|
|
158
|
+
for (const file of builderFiles) {
|
|
159
|
+
if (!api.exists(root, file)) continue;
|
|
160
|
+
const text = api.readText(root, file);
|
|
161
|
+
if (forbiddenPatterns.some((pattern) => pattern.test(text))) violatingFiles.push(file);
|
|
162
|
+
for (const marker of ['runtimeEntryDependencyBuilderContract', 'dependency-assembly-only', 'eagerImportBehavior', 'syncDispatchBehavior']) {
|
|
163
|
+
if (!text.includes(marker)) missingMarkers.push(`${file}:${marker}`);
|
|
164
|
+
}
|
|
165
|
+
for (const exportName of ['createRuntimeInteractionCommandDeps', 'createRuntimeGovernanceCommandDeps', 'createRuntimeWorkflowCommandDeps', 'createRuntimeTokensCommandDeps']) {
|
|
166
|
+
if (!text.includes(`export function ${exportName}(`)) missingBuilderExports.push(`${file}:${exportName}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const runtimeIndexFile = 'tools/vibe-runtime/index.mjs';
|
|
170
|
+
const indexText = api.exists(root, runtimeIndexFile) ? api.readText(root, runtimeIndexFile) : '';
|
|
171
|
+
const missingIndexCalls = ['createRuntimeInteractionCommandDeps', 'createRuntimeGovernanceCommandDeps', 'createRuntimeWorkflowCommandDeps', 'createRuntimeTokensCommandDeps']
|
|
172
|
+
.filter((exportName) => !indexText.includes(`${exportName}({`));
|
|
173
|
+
|
|
174
|
+
if (violatingFiles.length === 0) api.ok('runtime entry dependency builders avoid command imports, IO, and state writes');
|
|
175
|
+
else api.fail('runtime entry dependency builder boundary violated', `File(s): ${violatingFiles.join(', ')}`, 'Dependency builders must only assemble injected dependencies; do not import command owners, perform IO, or write runtime state.');
|
|
176
|
+
|
|
177
|
+
if (missingMarkers.length === 0) api.ok('runtime entry dependency builders declare static behavior contract markers');
|
|
178
|
+
else api.fail('runtime entry dependency builder contract markers missing', `Missing marker(s): ${missingMarkers.join(', ')}`, 'Keep dependency builder behavior explicitly documentation-bound and dispatch-neutral.');
|
|
179
|
+
|
|
180
|
+
if (missingBuilderExports.length === 0) api.ok('runtime entry dependency builders expose expected low-risk assembly functions');
|
|
181
|
+
else api.fail('runtime entry dependency builder assembly exports drifted', `Missing export(s): ${missingBuilderExports.join(', ')}`, 'Keep low and medium risk owner dependency assembly routed through explicit builder functions without moving command behavior.');
|
|
182
|
+
|
|
183
|
+
if (missingIndexCalls.length === 0) api.ok('runtime index routes expected dependency assembly through builders');
|
|
184
|
+
else api.fail('runtime index dependency assembly bypassed builders', `Missing call(s): ${missingIndexCalls.join(', ')}`, 'Do not move approved dependency assembly back into raw entry object literals.');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export function checkRuntimeIndexImportBoundaryContracts(root, api) {
|
|
188
|
+
checkRuntimeIndexImportBoundaryMapContracts(api);
|
|
189
|
+
checkRuntimeLazyImportPilotDecisionContracts(api);
|
|
190
|
+
checkRuntimeHighRiskExclusionGuardContracts(api);
|
|
191
|
+
checkRuntimeEntryDependencyBuilderContracts(root, api);
|
|
192
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { getSourceTextReader } from './runtime-source-bundle.mjs';
|
|
2
|
+
|
|
3
|
+
const src = ['sou', 'rce'].join('');
|
|
4
|
+
const mrg = ['mer', 'ge'].join('');
|
|
5
|
+
const sch = ['sche', 'duler'].join('');
|
|
6
|
+
const dmn = ['dae', 'mon'].join('');
|
|
7
|
+
const qq = ['qu', 'eue'].join('');
|
|
8
|
+
const rty = ['re', 'try'].join('');
|
|
9
|
+
const lse = ['le', 'ase'].join('');
|
|
10
|
+
const ap = ['app', 'ly'].join('');
|
|
11
|
+
const qTitle = `${qq[0].toUpperCase()}${qq.slice(1)}`;
|
|
12
|
+
|
|
13
|
+
const optimizationBoundarySections = [
|
|
14
|
+
{
|
|
15
|
+
label: 'runtime optimization boundary plan',
|
|
16
|
+
markers: ['Runtime optimization boundary plan', 'measure -> manifest -> contract -> container -> validation', 'runtime-command-container.mjs', 'handlerDeps composition'],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: 'command-level lazy import feasibility gate',
|
|
20
|
+
markers: ['Command-level lazy import feasibility gate', 'cold_start_baseline', 'esm_error_timing', 'command_group_risk', 'rollback_path', `${src}/${mrg} ${ap}`, 'execution', `${sch}/${dmn}`, `${qq}/${rty}/${lse}`],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: `${src}/${mrg} ${ap} safety design`,
|
|
24
|
+
markers: ['state_creator', 'digest_verifier', 'workspace_write_authorizer', 'rollback_model', `${src} --${ap}`, `${mrg} --${ap}`, 'sandbox merge'],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: `execution/${sch}/${dmn} safety design`,
|
|
28
|
+
markers: [`Execution/${sch}/${dmn} 安全设计`, 'runtime 默认只读', 'foreground evidence', '不注册后台 worker', '不自动 dispatch execution'],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: `${qq}/${rty}/${lse} state boundary design`,
|
|
32
|
+
markers: [`${qTitle}/${rty}/${lse} 状态边界设计`, 'manual_review_required=true', `automatic_${rty}=false`, 'stale/active', '不做自动 cleanup'],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'runtime validation matrix',
|
|
36
|
+
markers: ['Validation matrix', 'node --check', 'architecture check', 'active warning 0', 'node tools/vibe-runtime-check/index.mjs', 'npm run check:doctor', 'npm run release:fast', '--suite runtime --quiet', 'Result: passed'],
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
export function checkRuntimeOptimizationBoundaryContracts(root, api) {
|
|
41
|
+
const reader = getSourceTextReader(api, root);
|
|
42
|
+
const file = 'tools/vibe-runtime/README.md';
|
|
43
|
+
|
|
44
|
+
for (const section of optimizationBoundarySections) {
|
|
45
|
+
const missing = reader.markerIndex([file], section.markers).missing();
|
|
46
|
+
if (missing.length === 0) api.ok(`tools/vibe-runtime/README.md documents ${section.label}`);
|
|
47
|
+
else api.fail(`tools/vibe-runtime/README.md ${section.label} incomplete`, `Missing marker(s): ${missing.join(', ')}`, 'Keep runtime optimization, lazy import, high-risk design, and validation matrix boundaries documented before implementation changes.');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runtimeOwnerManifestByFile,
|
|
3
|
+
runtimeOwnerManifestFiles,
|
|
4
|
+
} from '../vibe-runtime/runtime-command-surface-registry.mjs';
|
|
5
|
+
|
|
6
|
+
const pureModelDigestSpecs = [
|
|
7
|
+
{
|
|
8
|
+
file: 'tools/vibe-runtime/runtime-entry-advice-model.mjs',
|
|
9
|
+
exports: ['buildEntryAdviceModel', 'buildEntryContractModel'],
|
|
10
|
+
noArgCallGuards: ['buildEntryAdviceModel', 'buildEntryContractModel'],
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
file: 'tools/vibe-runtime/runtime-advice-hub-model.mjs',
|
|
14
|
+
exports: ['buildAdviceHubModel'],
|
|
15
|
+
noArgCallGuards: ['buildAdviceHubModel'],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
file: 'tools/vibe-runtime/runtime-human-completion-evidence-model.mjs',
|
|
19
|
+
exports: ['buildHumanCompletionEvidenceBundleModel', 'buildCompletionEvidenceBundleModel'],
|
|
20
|
+
noArgCallGuards: ['buildHumanCompletionEvidenceBundleModel', 'buildCompletionEvidenceBundleModel'],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
file: 'tools/vibe-runtime/runtime-learning-advice-model.mjs',
|
|
24
|
+
exports: ['buildLearningAdviceModel'],
|
|
25
|
+
noArgCallGuards: ['buildLearningAdviceModel'],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
file: 'tools/vibe-runtime/runtime-token-economy-model.mjs',
|
|
29
|
+
exports: ['buildTokenAdviceModel', 'buildTokenCompactorCatalogModel', 'buildTokenProfileModel', 'buildTokenRewritePreviewModel'],
|
|
30
|
+
noArgCallGuards: ['buildTokenAdviceModel', 'buildTokenCompactorCatalogModel', 'buildTokenProfileModel', 'buildTokenRewritePreviewModel'],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
file: 'tools/vibe-runtime/runtime-methodology-gate-model.mjs',
|
|
34
|
+
exports: ['buildMethodologyGatePayloadModel', 'validateMethodologyGateArtifactModel'],
|
|
35
|
+
noArgCallGuards: ['buildMethodologyGatePayloadModel', 'validateMethodologyGateArtifactModel'],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
file: 'tools/vibe-runtime/runtime-methodology-route-model.mjs',
|
|
39
|
+
exports: ['methodologyGateCatalog'],
|
|
40
|
+
noArgCallGuards: ['methodologyGateCatalog'],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
file: 'tools/vibe-runtime/runtime-workflow-readiness-model.mjs',
|
|
44
|
+
exports: ['buildWorkflowReadinessModel'],
|
|
45
|
+
noArgCallGuards: ['buildWorkflowReadinessModel'],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
file: 'tools/vibe-runtime/runtime-workflow-start-model.mjs',
|
|
49
|
+
exports: ['buildWorkflowStartEnvelopeModel'],
|
|
50
|
+
noArgCallGuards: [],
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const statefulModelFiles = new Set([
|
|
55
|
+
'tools/vibe-runtime/runtime-learning-artifact-model.mjs',
|
|
56
|
+
'tools/vibe-runtime/runtime-daemon-state-lifecycle-model.mjs',
|
|
57
|
+
]);
|
|
58
|
+
|
|
59
|
+
function runtimeModelFiles() {
|
|
60
|
+
return runtimeOwnerManifestFiles
|
|
61
|
+
.filter((file) => /^tools\/vibe-runtime\/runtime-.*-model\.mjs$/.test(file))
|
|
62
|
+
.filter((file) => !statefulModelFiles.has(file));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function buildTerm(parts) {
|
|
66
|
+
return parts.join('');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function forbiddenPureModelMarkers() {
|
|
70
|
+
return [
|
|
71
|
+
['node:', 'fs'],
|
|
72
|
+
['node:', 'path'],
|
|
73
|
+
['node:', 'process'],
|
|
74
|
+
['node:', 'child_', 'process'],
|
|
75
|
+
['read', 'FileSync'],
|
|
76
|
+
['write', 'FileSync'],
|
|
77
|
+
['write', 'StateArtifact'],
|
|
78
|
+
['write', 'JsonEnvelope'],
|
|
79
|
+
['rm', 'Sync'],
|
|
80
|
+
['mkdir', 'Sync'],
|
|
81
|
+
['ensure', 'Root'],
|
|
82
|
+
['state', 'Directory'],
|
|
83
|
+
].map(buildTerm);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function exportSignature(text, exportName) {
|
|
87
|
+
const pattern = new RegExp(`export\\s+function\\s+${exportName}\\s*\\(([^)]*)\\)`, 's');
|
|
88
|
+
return text.match(pattern)?.[1] || '';
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function noArgCallPattern(functionName) {
|
|
92
|
+
return new RegExp(`${functionName}\\s*\\(\\s*\\)`, 'm');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function checkPureModelManifestContracts(root, api, modelFiles) {
|
|
96
|
+
const ownerByFile = runtimeOwnerManifestByFile();
|
|
97
|
+
const missingFiles = modelFiles.filter((file) => !api.exists(root, file));
|
|
98
|
+
if (missingFiles.length === 0) api.ok('runtime pure model files declared in manifest exist');
|
|
99
|
+
else api.fail('runtime pure model files missing', `Missing file(s): ${missingFiles.join(', ')}`, 'Keep runtime pure model files explicit in runtimeOwnerManifest and present on disk.');
|
|
100
|
+
|
|
101
|
+
const invalidOwnership = modelFiles.filter((file) => ownerByFile[file]?.owner !== 'runtime-owner-commands' || ownerByFile[file]?.layer !== 'commandWrapper');
|
|
102
|
+
if (invalidOwnership.length === 0) api.ok('runtime pure model files keep command wrapper ownership');
|
|
103
|
+
else api.fail('runtime pure model ownership drifted', `File(s): ${invalidOwnership.join(', ')}`, 'Keep interaction-adjacent pure models owned with runtime owner commands until a dedicated model layer is introduced.');
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function checkPureModelPurityContracts(root, api, modelFiles) {
|
|
107
|
+
const forbiddenMarkers = forbiddenPureModelMarkers();
|
|
108
|
+
const violatingFiles = [];
|
|
109
|
+
const invalidExports = [];
|
|
110
|
+
|
|
111
|
+
for (const file of modelFiles) {
|
|
112
|
+
if (!api.exists(root, file)) continue;
|
|
113
|
+
const text = api.sourceReader?.readText(file) || api.readText(root, file);
|
|
114
|
+
const matchedMarkers = forbiddenMarkers.filter((marker) => text.includes(marker));
|
|
115
|
+
if (matchedMarkers.length > 0) violatingFiles.push(`${file}: ${matchedMarkers.join(', ')}`);
|
|
116
|
+
|
|
117
|
+
const exportViolations = [...text.matchAll(/export\s+(default|class|let|var)\b/g)].map((match) => match[0]);
|
|
118
|
+
if (exportViolations.length > 0) invalidExports.push(`${file}: ${exportViolations.join(', ')}`);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (violatingFiles.length === 0) api.ok('runtime pure models avoid platform imports, direct IO, and state mutation markers');
|
|
122
|
+
else api.fail('runtime pure model boundary violated', `Violation(s): ${violatingFiles.join('; ')}`, 'Pure models must receive data and dependency functions through parameters; keep platform access in command owners.');
|
|
123
|
+
|
|
124
|
+
if (invalidExports.length === 0) api.ok('runtime pure models avoid mutable, default, and class exports');
|
|
125
|
+
else api.fail('runtime pure model export shape drifted', `Violation(s): ${invalidExports.join('; ')}`, 'Keep pure model modules as named pure function or constant data exports.');
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function checkDigestInjectionContracts(root, api, modelFiles) {
|
|
129
|
+
const existingSpecs = pureModelDigestSpecs.filter((spec) => api.exists(root, spec.file));
|
|
130
|
+
const unknownSpecs = pureModelDigestSpecs.filter((spec) => !modelFiles.includes(spec.file));
|
|
131
|
+
const missingDigestParameter = [];
|
|
132
|
+
const missingDigestUse = [];
|
|
133
|
+
|
|
134
|
+
for (const spec of existingSpecs) {
|
|
135
|
+
const text = api.sourceReader?.readText(spec.file) || api.readText(root, spec.file);
|
|
136
|
+
for (const exportName of spec.exports) {
|
|
137
|
+
const signature = exportSignature(text, exportName);
|
|
138
|
+
if (!signature.includes('digestObject')) missingDigestParameter.push(`${spec.file}:${exportName}`);
|
|
139
|
+
if (!text.includes('digestObject(')) missingDigestUse.push(`${spec.file}:${exportName}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (unknownSpecs.length === 0) api.ok('runtime digest-aware pure model specs are manifest-backed');
|
|
144
|
+
else api.fail('runtime digest-aware pure model spec references unmanifested files', `File(s): ${unknownSpecs.map((spec) => spec.file).join(', ')}`, 'Add digest-aware pure model files to runtimeOwnerManifest before enforcing call-site injection contracts.');
|
|
145
|
+
|
|
146
|
+
if (missingDigestParameter.length === 0) api.ok('runtime digest-aware pure model exports require explicit digestObject injection');
|
|
147
|
+
else api.fail('runtime digest-aware pure model signature drifted', `Export(s): ${missingDigestParameter.join(', ')}`, 'Digest-aware pure models must declare digestObject in their function parameters.');
|
|
148
|
+
|
|
149
|
+
if (missingDigestUse.length === 0) api.ok('runtime digest-aware pure model exports use injected digestObject');
|
|
150
|
+
else api.fail('runtime digest-aware pure model digest use missing', `Export(s): ${missingDigestUse.join(', ')}`, 'Digest-aware pure models should compute digests from the injected digestObject dependency, not hidden globals.');
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function checkDigestCallSiteContracts(root, api) {
|
|
154
|
+
const scanFiles = runtimeOwnerManifestFiles.filter((file) => file.startsWith('tools/vibe-runtime/') && api.exists(root, file));
|
|
155
|
+
const violations = [];
|
|
156
|
+
|
|
157
|
+
for (const file of scanFiles) {
|
|
158
|
+
const text = api.sourceReader?.readText(file) || api.readText(root, file);
|
|
159
|
+
for (const spec of pureModelDigestSpecs) {
|
|
160
|
+
for (const functionName of spec.noArgCallGuards) {
|
|
161
|
+
if (noArgCallPattern(functionName).test(text)) violations.push(`${file}:${functionName}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (violations.length === 0) api.ok('runtime digest-aware pure model call sites pass explicit dependencies');
|
|
167
|
+
else api.fail('runtime digest-aware pure model call site omitted dependencies', `Call site(s): ${violations.join(', ')}`, 'Pass digestObject explicitly at every digest-aware pure model call site.');
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export function checkRuntimePureModelBoundaryContracts(root, api) {
|
|
171
|
+
const modelFiles = runtimeModelFiles();
|
|
172
|
+
checkPureModelManifestContracts(root, api, modelFiles);
|
|
173
|
+
checkPureModelPurityContracts(root, api, modelFiles);
|
|
174
|
+
checkDigestInjectionContracts(root, api, modelFiles);
|
|
175
|
+
checkDigestCallSiteContracts(root, api);
|
|
176
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function checkRuntimeReleaseCloseoutContracts(api, cliSurfaceText) {
|
|
2
|
+
const stage98Markers = ['release --commit-guard', 'releaseCommitGuard', 'commitGuardBoundaryAssertions', 'commitGuardEvidencePath', 'parseCommitGuardText', 'commitGuardEnvelope', 'printCommitGuard', "artifact_kind: 'commit-title-guard'", "guard_kind: 'deterministic-commit-title-guard'", "mode: 'commit-title-guard'", 'commit_guard', 'normalized_subjects', 'guard_pass', 'blocked_reasons', 'commit_guard_digest', 'markdown-fence-prefix', 'leading-backtick-token', 'commit_guard_artifact: false', 'git_write: false', 'history_rewrite: false', 'release_gate_required: false', 'Stage 98'];
|
|
3
|
+
const missingStage98 = stage98Markers.filter((marker) => !cliSurfaceText.includes(marker));
|
|
4
|
+
if (missingStage98.length === 0) {
|
|
5
|
+
api.ok('tools/vibe-runtime/index.mjs supports Stage 98 commit title guard boundaries');
|
|
6
|
+
} else {
|
|
7
|
+
api.fail('tools/vibe-runtime/index.mjs Stage 98 markers incomplete', `Missing marker(s): ${missingStage98.join(', ')}`, 'Keep Stage 98 commit title guard, deterministic subject findings, digest output, and no git/history rewrite boundary synchronized.');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const stage99Markers = ['completion --evidence-bundle', 'completionEvidenceBundle', 'completionEvidenceBundleBoundaryAssertions', 'completionEvidenceBundleEnvelope', 'printCompletionEvidenceBundle', "bundle_kind: 'completion-evidence-bundle'", "mode: 'completion-evidence-bundle'", 'completion_evidence_bundle', 'readiness_summary', 'evidence_inventory', 'closeout_decision', 'required_manual_actions', 'bundle_digest', 'completion_evidence_bundle_artifact: false', 'verification_execution: false', 'release_notes_artifact: false', 'Stage 99'];
|
|
11
|
+
const missingStage99 = stage99Markers.filter((marker) => !cliSurfaceText.includes(marker));
|
|
12
|
+
if (missingStage99.length === 0) {
|
|
13
|
+
api.ok('tools/vibe-runtime/index.mjs supports Stage 99 completion evidence bundle boundaries');
|
|
14
|
+
} else {
|
|
15
|
+
api.fail('tools/vibe-runtime/index.mjs Stage 99 markers incomplete', `Missing marker(s): ${missingStage99.join(', ')}`, 'Keep Stage 99 completion evidence bundle, readiness binding, digest output, and no execution/git/release boundary synchronized.');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const stage20Markers = ['session --close', 'session-close-evidence-alias', 'session_close_alias', 'canonical_command: \'completion --evidence-bundle\'', 'completion_evidence_bundle_digest', 'human_completion_evidence_digest', 'completion_readiness_digest', 'completion_claim_allowed', 'git_action_allowed: false', 'platform_action_allowed: false', 'subagent_allowed: false', 'session_close_alias_artifact=false', 'command_execution=false', 'git_write=false', 'Stage 20'];
|
|
19
|
+
const missingStage20 = stage20Markers.filter((marker) => !cliSurfaceText.includes(marker));
|
|
20
|
+
if (missingStage20.length === 0) {
|
|
21
|
+
api.ok('tools/vibe-runtime/index.mjs supports Stage 20 session close evidence alias boundaries');
|
|
22
|
+
} else {
|
|
23
|
+
api.fail('tools/vibe-runtime/index.mjs Stage 20 markers incomplete', `Missing marker(s): ${missingStage20.join(', ')}`, 'Keep Stage 20 session --close alias, completion evidence digest bindings, human closeout gate, and no execution/git/subagent boundary synchronized.');
|
|
24
|
+
}
|
|
25
|
+
}
|