@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,334 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
|
|
3
|
+
const installExperienceStage = 'Stage 137';
|
|
4
|
+
const installExperienceKind = 'hook-adapter-install-experience-score';
|
|
5
|
+
const expectedAdapters = ['claude', 'cursor', 'codex'];
|
|
6
|
+
|
|
7
|
+
export function runtimeInstallExperienceScore({ bootstrapMatrix = {}, entryAcceptance = {}, source = {} } = {}) {
|
|
8
|
+
const matrix = unwrapBootstrapMatrix(bootstrapMatrix);
|
|
9
|
+
const acceptance = unwrapEntryAcceptance(entryAcceptance);
|
|
10
|
+
const adapterRows = normalizeAdapterRows(matrix);
|
|
11
|
+
const acceptanceRows = normalizeAcceptanceRows(acceptance);
|
|
12
|
+
const adapterScores = expectedAdapters.map((adapter) => adapterInstallScore(adapter, adapterRows, acceptanceRows));
|
|
13
|
+
const naturalEntryScore = average(adapterScores.map((row) => row.natural_entry_score));
|
|
14
|
+
const adapterConsistencyScore = average(adapterScores.map((row) => row.adapter_consistency_score));
|
|
15
|
+
const manualSteps = manualStepsRemaining(adapterScores);
|
|
16
|
+
const docsFriction = docsFrictionFindings(adapterScores);
|
|
17
|
+
const blockers = installExperienceBlockers(matrix, adapterRows, acceptanceRows, adapterScores);
|
|
18
|
+
const core = {
|
|
19
|
+
version: 1,
|
|
20
|
+
stage: installExperienceStage,
|
|
21
|
+
score_kind: installExperienceKind,
|
|
22
|
+
source_bindings: sourceBindingSummary(source, matrix, acceptance),
|
|
23
|
+
input_summary: inputSummary(matrix, acceptance, adapterRows, acceptanceRows),
|
|
24
|
+
install_experience_score: Math.round((naturalEntryScore * 0.55) + (adapterConsistencyScore * 0.45)),
|
|
25
|
+
natural_entry_score: naturalEntryScore,
|
|
26
|
+
adapter_consistency_score: adapterConsistencyScore,
|
|
27
|
+
adapter_scores: adapterScores,
|
|
28
|
+
manual_steps_remaining: manualSteps,
|
|
29
|
+
docs_friction: docsFriction,
|
|
30
|
+
blockers,
|
|
31
|
+
install_experience_digest_basis: {
|
|
32
|
+
bootstrap_digest: matrix.matrix_digest || '',
|
|
33
|
+
entry_acceptance_digest: acceptance.acceptance_digest || '',
|
|
34
|
+
},
|
|
35
|
+
next_install_experience_bet: nextInstallExperienceBet(manualSteps, docsFriction, blockers),
|
|
36
|
+
boundary_assertions: runtimeInstallExperienceBoundaryAssertions(),
|
|
37
|
+
writes: false,
|
|
38
|
+
state_directory_created: false,
|
|
39
|
+
local_only: true,
|
|
40
|
+
deterministic: true,
|
|
41
|
+
};
|
|
42
|
+
const invariants = runtimeInstallExperienceInvariants(core);
|
|
43
|
+
const scorecard = {
|
|
44
|
+
...core,
|
|
45
|
+
ok: blockers.length === 0 && invariants.pass,
|
|
46
|
+
install_experience_invariants: invariants,
|
|
47
|
+
};
|
|
48
|
+
return {
|
|
49
|
+
...scorecard,
|
|
50
|
+
install_experience_digest: digestInstallExperience(runtimeInstallExperienceDigestPayload(scorecard)),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function runtimeInstallExperienceDigestPayload(scorecard) {
|
|
55
|
+
return {
|
|
56
|
+
stage: scorecard.stage,
|
|
57
|
+
score_kind: scorecard.score_kind,
|
|
58
|
+
source_bindings: scorecard.source_bindings,
|
|
59
|
+
input_summary: scorecard.input_summary,
|
|
60
|
+
install_experience_score: scorecard.install_experience_score,
|
|
61
|
+
natural_entry_score: scorecard.natural_entry_score,
|
|
62
|
+
adapter_consistency_score: scorecard.adapter_consistency_score,
|
|
63
|
+
adapter_scores: scorecard.adapter_scores,
|
|
64
|
+
manual_steps_remaining: scorecard.manual_steps_remaining,
|
|
65
|
+
docs_friction: scorecard.docs_friction,
|
|
66
|
+
blockers: scorecard.blockers,
|
|
67
|
+
install_experience_digest_basis: scorecard.install_experience_digest_basis,
|
|
68
|
+
next_install_experience_bet: scorecard.next_install_experience_bet,
|
|
69
|
+
boundary_assertions: scorecard.boundary_assertions,
|
|
70
|
+
install_experience_invariants: scorecard.install_experience_invariants,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function runtimeInstallExperienceBoundaryAssertions() {
|
|
75
|
+
return {
|
|
76
|
+
install_experience_artifact: false,
|
|
77
|
+
bootstrap_matrix_artifact: false,
|
|
78
|
+
entry_acceptance_artifact: false,
|
|
79
|
+
adapter_install: false,
|
|
80
|
+
adapter_execution: false,
|
|
81
|
+
hook_execution: false,
|
|
82
|
+
hook_registration: false,
|
|
83
|
+
manifest_write: false,
|
|
84
|
+
install_doc_write: false,
|
|
85
|
+
settings_write: false,
|
|
86
|
+
source_write: false,
|
|
87
|
+
transcript_write: false,
|
|
88
|
+
sidecar_write: false,
|
|
89
|
+
state_directory_created: false,
|
|
90
|
+
command_execution: false,
|
|
91
|
+
check_execution: false,
|
|
92
|
+
test_execution: false,
|
|
93
|
+
workflow_execution: false,
|
|
94
|
+
skill_execution: false,
|
|
95
|
+
runtime_action: false,
|
|
96
|
+
auto_execution: false,
|
|
97
|
+
platform_api: false,
|
|
98
|
+
external_network: false,
|
|
99
|
+
model_invocation: false,
|
|
100
|
+
subagent: false,
|
|
101
|
+
mcp: false,
|
|
102
|
+
daemon: false,
|
|
103
|
+
git: false,
|
|
104
|
+
git_write: false,
|
|
105
|
+
git_add: false,
|
|
106
|
+
commit: false,
|
|
107
|
+
pr: false,
|
|
108
|
+
push: false,
|
|
109
|
+
merge: false,
|
|
110
|
+
tag: false,
|
|
111
|
+
worktree: false,
|
|
112
|
+
business_source_write: false,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function runtimeInstallExperienceInvariants(scorecard) {
|
|
117
|
+
const adapters = (scorecard.adapter_scores || []).map((row) => row.adapter);
|
|
118
|
+
const missingAdapters = expectedAdapters.filter((adapter) => !adapters.includes(adapter));
|
|
119
|
+
const duplicateAdapters = adapters.filter((adapter, index, items) => items.indexOf(adapter) !== index);
|
|
120
|
+
const unsafeBoundaries = Object.entries(scorecard.boundary_assertions || {})
|
|
121
|
+
.filter(([, value]) => value !== false)
|
|
122
|
+
.map(([key]) => key);
|
|
123
|
+
const missingForbidden = Object.keys(runtimeInstallExperienceBoundaryAssertions())
|
|
124
|
+
.filter((key) => scorecard.boundary_assertions?.[key] !== false);
|
|
125
|
+
const scores = [scorecard.install_experience_score, scorecard.natural_entry_score, scorecard.adapter_consistency_score];
|
|
126
|
+
const findings = [
|
|
127
|
+
...(scorecard.stage === installExperienceStage ? [] : [`stage must be ${installExperienceStage}`]),
|
|
128
|
+
...(scorecard.score_kind === installExperienceKind ? [] : [`score_kind must be ${installExperienceKind}`]),
|
|
129
|
+
...(scorecard.source_bindings?.bootstrap_matrix_file ? [] : ['bootstrap matrix file binding is required']),
|
|
130
|
+
...(scorecard.source_bindings?.entry_acceptance_file ? [] : ['entry acceptance file binding is required']),
|
|
131
|
+
...(scorecard.input_summary?.bootstrap_stage === 'Stage 122' ? [] : ['bootstrap matrix must be Stage 122 evidence']),
|
|
132
|
+
...(scorecard.input_summary?.entry_acceptance_stage === 'Stage 131' ? [] : ['entry acceptance must be Stage 131 evidence']),
|
|
133
|
+
...(Array.isArray(scorecard.adapter_scores) && scorecard.adapter_scores.length === expectedAdapters.length ? [] : ['adapter_scores must cover claude, cursor, and codex']),
|
|
134
|
+
...(Array.isArray(scorecard.manual_steps_remaining) ? [] : ['manual_steps_remaining must be a list']),
|
|
135
|
+
...(Array.isArray(scorecard.docs_friction) ? [] : ['docs_friction must be a list']),
|
|
136
|
+
...scores.flatMap((score) => Number.isInteger(score) && score >= 0 && score <= 100 ? [] : [`score must be integer 0..100: ${score}`]),
|
|
137
|
+
...missingAdapters.map((adapter) => `missing adapter install score: ${adapter}`),
|
|
138
|
+
...duplicateAdapters.map((adapter) => `duplicate adapter install score: ${adapter}`),
|
|
139
|
+
...unsafeBoundaries.map((key) => `boundary assertion must remain false: ${key}`),
|
|
140
|
+
...missingForbidden.map((key) => `forbidden boundary missing or not false: ${key}`),
|
|
141
|
+
];
|
|
142
|
+
return {
|
|
143
|
+
pass: findings.length === 0,
|
|
144
|
+
checked: ['source_bindings', 'stage_122_bootstrap_matrix', 'stage_131_entry_acceptance', 'natural_entry_score', 'adapter_consistency_score', 'manual_steps_remaining', 'docs_friction', 'read_only_boundary_assertions'],
|
|
145
|
+
findings,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function digestInstallExperience(value) {
|
|
150
|
+
return crypto.createHash('sha256').update(stableStringify(value)).digest('hex');
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function unwrapBootstrapMatrix(input) {
|
|
154
|
+
return input.adapter_bootstrap_matrix || input.bootstrap_matrix || input;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function unwrapEntryAcceptance(input) {
|
|
158
|
+
return input.adapter_entry_acceptance || input.entry_acceptance || input;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function normalizeAdapterRows(matrix) {
|
|
162
|
+
const rows = Array.isArray(matrix.adapter_rows) ? matrix.adapter_rows : [];
|
|
163
|
+
return rows.map((row) => ({
|
|
164
|
+
adapter: stringValue(row.adapter),
|
|
165
|
+
pass: row.pass === true,
|
|
166
|
+
entry_file: stringValue(row.entry_file),
|
|
167
|
+
bootstrap_policy: objectValue(row.bootstrap_policy),
|
|
168
|
+
runtime_bridge: objectValue(row.runtime_bridge),
|
|
169
|
+
blockers: listValue(row.blockers).map(stringValue),
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function normalizeAcceptanceRows(acceptance) {
|
|
174
|
+
const singleAdapter = stringValue(acceptance.adapter);
|
|
175
|
+
if (singleAdapter) return [{
|
|
176
|
+
adapter: singleAdapter,
|
|
177
|
+
ok: acceptance.ok === true,
|
|
178
|
+
accepted: acceptance.accepted === true,
|
|
179
|
+
acceptance_score: numberValue(acceptance.acceptance_score),
|
|
180
|
+
gate_results: listValue(acceptance.gate_results),
|
|
181
|
+
blockers: listValue(acceptance.blockers).map(stringValue),
|
|
182
|
+
}];
|
|
183
|
+
return listValue(acceptance.adapter_acceptance_rows || acceptance.acceptance_rows).map((row) => ({
|
|
184
|
+
adapter: stringValue(row.adapter),
|
|
185
|
+
ok: row.ok === true,
|
|
186
|
+
accepted: row.accepted === true,
|
|
187
|
+
acceptance_score: numberValue(row.acceptance_score),
|
|
188
|
+
gate_results: listValue(row.gate_results),
|
|
189
|
+
blockers: listValue(row.blockers).map(stringValue),
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function adapterInstallScore(adapter, adapterRows, acceptanceRows) {
|
|
194
|
+
const bootstrap = adapterRows.find((row) => row.adapter === adapter);
|
|
195
|
+
const acceptance = acceptanceRows.find((row) => row.adapter === adapter);
|
|
196
|
+
const bootstrapScore = bootstrap?.pass ? 100 : bootstrap ? 55 : 0;
|
|
197
|
+
const acceptanceScore = acceptance ? clampScore(acceptance.acceptance_score || (acceptance.ok ? 100 : 45)) : 0;
|
|
198
|
+
const naturalEntryScore = Math.round((bootstrapScore * 0.45) + (acceptanceScore * 0.55));
|
|
199
|
+
const policySignals = [
|
|
200
|
+
bootstrap?.bootstrap_policy?.supported === true,
|
|
201
|
+
bootstrap?.bootstrap_policy?.injectsFullSkill === false,
|
|
202
|
+
bootstrap?.bootstrap_policy?.writesRuntimeState === false,
|
|
203
|
+
bootstrap?.bootstrap_policy?.autoRunsNextSkill === false,
|
|
204
|
+
bootstrap?.runtime_bridge?.canAutoExecuteSkill === false,
|
|
205
|
+
bootstrap?.runtime_bridge?.canCallSubagent === false,
|
|
206
|
+
bootstrap?.runtime_bridge?.canTouchGit === false,
|
|
207
|
+
acceptance?.ok === true,
|
|
208
|
+
];
|
|
209
|
+
const adapterConsistencyScore = Math.round((policySignals.filter(Boolean).length / policySignals.length) * 100);
|
|
210
|
+
return {
|
|
211
|
+
adapter,
|
|
212
|
+
bootstrap_pass: bootstrap?.pass === true,
|
|
213
|
+
entry_acceptance_present: Boolean(acceptance),
|
|
214
|
+
entry_acceptance_ok: acceptance?.ok === true,
|
|
215
|
+
entry_file: bootstrap?.entry_file || '',
|
|
216
|
+
natural_entry_score: naturalEntryScore,
|
|
217
|
+
adapter_consistency_score: adapterConsistencyScore,
|
|
218
|
+
manual_steps_remaining: adapterManualSteps(adapter, bootstrap, acceptance),
|
|
219
|
+
docs_friction: adapterDocsFriction(adapter, bootstrap, acceptance),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function adapterManualSteps(adapter, bootstrap, acceptance) {
|
|
224
|
+
return [
|
|
225
|
+
...(bootstrap ? [] : [`${adapter}: provide Stage 122 bootstrap matrix row`]),
|
|
226
|
+
...(bootstrap?.pass ? [] : [`${adapter}: fix adapter manifest/install-doc bootstrap blockers`]),
|
|
227
|
+
...(acceptance ? [] : [`${adapter}: capture one installed-entry transcript and run Stage 131 entry acceptance`]),
|
|
228
|
+
...(acceptance?.ok ? [] : [`${adapter}: make first installed-entry response visibly pass using-vibecoding lightweight routing`]),
|
|
229
|
+
];
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function adapterDocsFriction(adapter, bootstrap, acceptance) {
|
|
233
|
+
return [
|
|
234
|
+
...(bootstrap?.entry_file ? [] : [`${adapter}: installed entry file is not visible from adapter manifest`]),
|
|
235
|
+
...(bootstrap?.bootstrap_policy?.supported === true ? [] : [`${adapter}: sessionStartBootstrap support is not explicit`]),
|
|
236
|
+
...(acceptance ? [] : [`${adapter}: no local transcript evidence for installed first response`]),
|
|
237
|
+
].filter(Boolean);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
function manualStepsRemaining(adapterScores) {
|
|
241
|
+
return adapterScores.flatMap((row) => row.manual_steps_remaining);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function docsFrictionFindings(adapterScores) {
|
|
245
|
+
return adapterScores.flatMap((row) => row.docs_friction);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function installExperienceBlockers(matrix, adapterRows, acceptanceRows, adapterScores) {
|
|
249
|
+
return [
|
|
250
|
+
...(matrix.ok === true ? [] : ['Stage 122 bootstrap matrix is not passing']),
|
|
251
|
+
...(adapterRows.length >= expectedAdapters.length ? [] : ['Stage 122 bootstrap matrix does not cover all expected adapters']),
|
|
252
|
+
...(acceptanceRows.length > 0 ? [] : ['Stage 131 entry acceptance evidence is missing']),
|
|
253
|
+
...adapterScores.flatMap((row) => row.natural_entry_score >= 70 ? [] : [`${row.adapter}: natural entry score below 70`]),
|
|
254
|
+
];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function inputSummary(matrix, acceptance, adapterRows, acceptanceRows) {
|
|
258
|
+
return {
|
|
259
|
+
bootstrap_stage: stringValue(matrix.stage),
|
|
260
|
+
bootstrap_kind: stringValue(matrix.matrix_kind),
|
|
261
|
+
bootstrap_ok: matrix.ok === true,
|
|
262
|
+
bootstrap_adapter_count: adapterRows.length,
|
|
263
|
+
entry_acceptance_stage: stringValue(acceptance.stage),
|
|
264
|
+
entry_acceptance_kind: stringValue(acceptance.acceptance_kind),
|
|
265
|
+
entry_acceptance_ok: acceptance.ok === true,
|
|
266
|
+
entry_acceptance_adapter_count: acceptanceRows.length,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function sourceBindingSummary(source, matrix, acceptance) {
|
|
271
|
+
return {
|
|
272
|
+
bootstrap_matrix_file: stringValue(source.bootstrap_matrix_file),
|
|
273
|
+
bootstrap_matrix_digest: stringValue(source.bootstrap_matrix_digest || matrix.matrix_digest),
|
|
274
|
+
entry_acceptance_file: stringValue(source.entry_acceptance_file),
|
|
275
|
+
entry_acceptance_digest: stringValue(source.entry_acceptance_digest || acceptance.acceptance_digest),
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
function nextInstallExperienceBet(manualSteps, docsFriction, blockers) {
|
|
280
|
+
if (blockers.length > 0) return {
|
|
281
|
+
id: 'close-install-evidence-blockers',
|
|
282
|
+
target_stage: 'Stage 138',
|
|
283
|
+
action: 'Use the blockers as behavioral eval scenario seeds before changing hook or adapter behavior.',
|
|
284
|
+
};
|
|
285
|
+
if (manualSteps.length > 0 || docsFriction.length > 0) return {
|
|
286
|
+
id: 'reduce-install-docs-friction',
|
|
287
|
+
target_stage: 'Stage 138',
|
|
288
|
+
action: 'Turn remaining manual install evidence steps into explicit behavior scenarios without auto-running hooks.',
|
|
289
|
+
};
|
|
290
|
+
return {
|
|
291
|
+
id: 'preserve-natural-entry-contract',
|
|
292
|
+
target_stage: 'Stage 138',
|
|
293
|
+
action: 'Convert this install experience baseline into Superpowers-style behavioral eval scenarios.',
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
function average(values) {
|
|
298
|
+
const items = values.filter((value) => Number.isFinite(value));
|
|
299
|
+
if (items.length === 0) return 0;
|
|
300
|
+
return Math.round(items.reduce((sum, value) => sum + value, 0) / items.length);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
function clampScore(value) {
|
|
304
|
+
return Math.max(0, Math.min(100, Math.round(numberValue(value))));
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function numberValue(value) {
|
|
308
|
+
const number = Number(value);
|
|
309
|
+
return Number.isFinite(number) ? number : 0;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function objectValue(value) {
|
|
313
|
+
return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
function listValue(value) {
|
|
317
|
+
return Array.isArray(value) ? value : [];
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
function stringValue(value) {
|
|
321
|
+
return value === undefined || value === null ? '' : String(value);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
function stableStringify(value) {
|
|
325
|
+
return JSON.stringify(sortForJson(value));
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
function sortForJson(value) {
|
|
329
|
+
if (Array.isArray(value)) return value.map(sortForJson);
|
|
330
|
+
if (value && typeof value === 'object') {
|
|
331
|
+
return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, nested]) => [key, sortForJson(nested)]));
|
|
332
|
+
}
|
|
333
|
+
return value;
|
|
334
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
const installedMultiroundStage = 'Stage 27';
|
|
2
|
+
const installedMultiroundKind = 'installed-multiround-ux-close-loop-acceptance';
|
|
3
|
+
const installedMultiroundMarker = 'installed_multiround_close_loop';
|
|
4
|
+
const requiredPromptTurns = Object.freeze(['first_turn', 'continue_task', 'bug_debug', 'completion_closeout', 'review_feedback']);
|
|
5
|
+
|
|
6
|
+
export function runtimeInstalledMultiroundUxAcceptance(normalized = {}) {
|
|
7
|
+
const rawText = stringValue(normalized.raw_text);
|
|
8
|
+
const lower = rawText.toLowerCase();
|
|
9
|
+
const flags = objectValue(normalized.structured_flags);
|
|
10
|
+
const active = flags.installed_multiround === true
|
|
11
|
+
|| stringValue(normalized.transcript_kind).toLowerCase().includes('installed-multiround')
|
|
12
|
+
|| lower.includes(installedMultiroundMarker);
|
|
13
|
+
if (!active) return null;
|
|
14
|
+
|
|
15
|
+
const turnCoverage = promptTurnCoverage(lower);
|
|
16
|
+
const forbiddenClaims = forbiddenMultiroundClaims(normalized, lower);
|
|
17
|
+
const gateResults = [
|
|
18
|
+
gate('installed_multiround_prompt_coverage', requiredPromptTurns.every((turn) => turnCoverage[turn]), missingTurnFindings(turnCoverage)),
|
|
19
|
+
gate('visible_route_each_round', hasAll(lower, ['using-vibecoding', 'visible_route', 'next_manual_action']) && hasAny(lower, ['stop_condition', '停止条件', 'stop condition']), ['multi-round transcript must preserve using-vibecoding, visible_route, next_manual_action, and stop condition markers']),
|
|
20
|
+
gate('continue_task_plan_trace', hasAll(lower, ['continue_task']) && hasAny(lower, ['current todo', '当前 todo', 'plan trace', '计划']) && hasAny(lower, ['验证策略', 'validation strategy', 'verification strategy']), ['continue_task turn must show current TODO or plan trace and validation strategy before continuing']),
|
|
21
|
+
gate('bug_debug_reproduction_gate', hasAll(lower, ['bug_debug']) && hasAny(lower, ['reproduce', '复现', 'reproduction unavailable']) && hasAny(lower, ['root cause', '根因', '原因']), ['bug_debug turn must require reproduction or root-cause evidence before fix claims']),
|
|
22
|
+
gate('completion_closeout_evidence_gate', hasAll(lower, ['completion_closeout']) && hasAny(lower, ['completion_evidence.task_completion_summary', 'session --close', 'completion evidence']) && hasAny(lower, ['验证证据', 'validation evidence', 'evidence gap', '证据缺口']), ['completion_closeout turn must bind completion evidence summary, validation evidence, and evidence gaps']),
|
|
23
|
+
gate('review_feedback_gate_loop', hasAll(lower, ['review_feedback']) && hasAny(lower, ['feedback_category=blocking_bug', 'blocking_bug', 'design_concern', 'test_gap']) && hasAll(lower, ['affected_files', 'verification_plan']) && hasAny(lower, ['next_task_gate.blocked=true', 'next_task_blocked=true']), ['review_feedback turn must classify feedback, bind affected_files and verification_plan, and set next_task_gate.blocked=true when needed']),
|
|
24
|
+
gate('session_continuity_close_loop', hasAny(lower, ['session --checkpoint', 'session --handoff', 'session --resume']) && hasAny(lower, ['handoff', 'resume', '交接', '恢复']), ['multi-round transcript must keep checkpoint/handoff/resume continuity visible without executing the next skill']),
|
|
25
|
+
gate('no_multiround_execution_claims', forbiddenClaims.length === 0, forbiddenClaims),
|
|
26
|
+
];
|
|
27
|
+
const blockers = gateResults.filter((result) => !result.pass).flatMap((result) => result.findings.map((finding) => `${result.gate}: ${finding}`));
|
|
28
|
+
return {
|
|
29
|
+
version: 1,
|
|
30
|
+
stage: installedMultiroundStage,
|
|
31
|
+
acceptance_kind: installedMultiroundKind,
|
|
32
|
+
marker: installedMultiroundMarker,
|
|
33
|
+
prompt_turn_coverage: turnCoverage,
|
|
34
|
+
round_count: countUserIntentTurns(normalized.messages || []),
|
|
35
|
+
gate_results: gateResults,
|
|
36
|
+
accepted: blockers.length === 0,
|
|
37
|
+
blockers,
|
|
38
|
+
next_manual_action: blockers.length === 0
|
|
39
|
+
? 'continue with the next manually selected workflow step after reading the visible gate result'
|
|
40
|
+
: 'fix the installed multi-round transcript shape before claiming close-loop readiness',
|
|
41
|
+
boundary_assertions: boundaryAssertions(),
|
|
42
|
+
local_only: true,
|
|
43
|
+
deterministic: true,
|
|
44
|
+
writes: false,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function installedMultiroundUxGateResults(acceptance) {
|
|
49
|
+
return acceptance ? acceptance.gate_results : [];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function promptTurnCoverage(lower) {
|
|
53
|
+
return Object.fromEntries(requiredPromptTurns.map((turn) => [turn, lower.includes(turn)]));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function missingTurnFindings(coverage) {
|
|
57
|
+
return requiredPromptTurns.filter((turn) => !coverage[turn]).map((turn) => `missing installed prompt turn: ${turn}`);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function countUserIntentTurns(messages) {
|
|
61
|
+
return messages.filter((message) => message.role === 'user' || requiredPromptTurns.some((turn) => stringValue(message.text).toLowerCase().includes(turn))).length;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function forbiddenMultiroundClaims(normalized, lower) {
|
|
65
|
+
const flags = objectValue(normalized.structured_flags);
|
|
66
|
+
const flagged = [
|
|
67
|
+
['skill_executed', flags.skill_executed],
|
|
68
|
+
['subagent_called', flags.subagent_called],
|
|
69
|
+
['git_called', flags.git_called],
|
|
70
|
+
['platform_api_called', flags.platform_api_called],
|
|
71
|
+
['hook_executed', flags.hook_executed],
|
|
72
|
+
['state_written', flags.state_written],
|
|
73
|
+
['auto_repair', flags.auto_repair],
|
|
74
|
+
['reviewer_called', flags.reviewer_called],
|
|
75
|
+
].filter(([, value]) => value === true).map(([key]) => `structured flag must be false: ${key}`);
|
|
76
|
+
const actionText = [...(normalized.actions || []), ...(normalized.commands_run || [])].join('\n').toLowerCase();
|
|
77
|
+
const actionFindings = forbiddenPatterns(actionText).map((match) => `recorded action is forbidden in installed multi-round acceptance: ${match}`);
|
|
78
|
+
const textualFindings = forbiddenPatterns(lower)
|
|
79
|
+
.filter((match) => !isNegated(lower, match))
|
|
80
|
+
.map((match) => `transcript suggests forbidden multi-round execution: ${match}`)
|
|
81
|
+
.slice(0, 6);
|
|
82
|
+
return [...flagged, ...actionFindings, ...textualFindings];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function forbiddenPatterns(text) {
|
|
86
|
+
const source = stringValue(text);
|
|
87
|
+
const patterns = [/\bgit\s+(add|commit|push|merge|tag)\b/i, /\bgh\s+pr\b/i, /subagent\s+(call|dispatch|run|called|dispatched|ran)/i, /platform api/i, /auto[- ]?repair/i, /automatically repaired/i, /reviewer\s+(called|invoked|ran)/i, /ran tests/i, /tests passed/i, /\b--confirm\b/i, /\b--write\b/i, /\b--dispatch\b/i, /\b--auto-run\b/i];
|
|
88
|
+
return patterns.flatMap((pattern) => {
|
|
89
|
+
const match = source.match(pattern);
|
|
90
|
+
return match ? [match[0]] : [];
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function isNegated(text, match) {
|
|
95
|
+
const index = text.indexOf(match.toLowerCase());
|
|
96
|
+
if (index < 0) return false;
|
|
97
|
+
const window = text.slice(Math.max(0, index - 80), index + match.length + 24);
|
|
98
|
+
return /不|未|不会|无需|禁止|没有|no |without |does not|do not|must not|false/.test(window);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function gate(name, pass, findings = []) {
|
|
102
|
+
return { gate: name, pass: Boolean(pass), findings: pass ? [] : findings };
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function hasAll(text, markers) {
|
|
106
|
+
return markers.every((marker) => text.includes(marker.toLowerCase()));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function hasAny(text, markers) {
|
|
110
|
+
return markers.some((marker) => text.includes(marker.toLowerCase()));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function boundaryAssertions() {
|
|
114
|
+
return {
|
|
115
|
+
installed_multiround_acceptance_artifact: false,
|
|
116
|
+
transcript_write: false,
|
|
117
|
+
adapter_install: false,
|
|
118
|
+
adapter_execution: false,
|
|
119
|
+
hook_execution: false,
|
|
120
|
+
state_directory_created: false,
|
|
121
|
+
command_execution: false,
|
|
122
|
+
workflow_execution: false,
|
|
123
|
+
skill_execution: false,
|
|
124
|
+
runtime_action: false,
|
|
125
|
+
auto_execution: false,
|
|
126
|
+
repair_execution: false,
|
|
127
|
+
reviewer_invocation: false,
|
|
128
|
+
platform_api: false,
|
|
129
|
+
external_network: false,
|
|
130
|
+
model_invocation: false,
|
|
131
|
+
subagent: false,
|
|
132
|
+
mcp: false,
|
|
133
|
+
git: false,
|
|
134
|
+
git_write: false,
|
|
135
|
+
commit: false,
|
|
136
|
+
pr: false,
|
|
137
|
+
push: false,
|
|
138
|
+
merge: false,
|
|
139
|
+
business_source_write: false,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function objectValue(value) {
|
|
144
|
+
return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function stringValue(value) {
|
|
148
|
+
return value === undefined || value === null ? '' : String(value);
|
|
149
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
function names(text) {
|
|
2
|
+
return String(text).trim().split(/\s+/).filter(Boolean);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
function interactionDomain(functions, surfaceExports = '') {
|
|
6
|
+
return Object.freeze({
|
|
7
|
+
functions: Object.freeze(names(functions)),
|
|
8
|
+
surfaceExports: Object.freeze(names(surfaceExports)),
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const runtimeInteractionCommandDomains = Object.freeze({
|
|
13
|
+
entryWorkflow: interactionDomain(`
|
|
14
|
+
workflowReadinessEnvelope workflowCockpitEnvelope workflowReceiptEnvelope workflowStartEnvelope
|
|
15
|
+
progressiveEntryUxEnvelope workflowSequenceEnvelope workflowLoopContractEnvelope closeLoopDashboardEnvelope
|
|
16
|
+
humanFriendlyCloseLoopEnvelope humanFriendlyNextEvidenceEnvelope entryTriggerDisciplineEnvelope bootstrapAcceptanceEnvelope
|
|
17
|
+
onboardingBriefEnvelope adviceHubEnvelope entryAdviceEnvelope entryContractEnvelope
|
|
18
|
+
`, `
|
|
19
|
+
runBootstrap runOnboarding runAdvice runEntry humanFriendlyCloseLoopEnvelope humanFriendlyNextEvidenceEnvelope
|
|
20
|
+
workflowReadinessEnvelope workflowCockpitEnvelope workflowReceiptEnvelope workflowStartEnvelope progressiveEntryUxEnvelope
|
|
21
|
+
workflowSequenceEnvelope workflowLoopContractEnvelope entryTriggerDisciplineEnvelope closeLoopDashboardEnvelope
|
|
22
|
+
`),
|
|
23
|
+
methodology: interactionDomain(`
|
|
24
|
+
methodologyRouteEnvelope methodologyGateFilePath listMethodologyGateFiles methodologyGateSnapshotPath
|
|
25
|
+
methodologyWorkflowSource methodologyAutomationEvidence methodologyGatePayload methodologyEnvelope
|
|
26
|
+
validateMethodologyGateArtifact writeMethodologyGate methodologyAuditEnvelope methodologyCoverageSourceBundle
|
|
27
|
+
methodologyCoverageEnvelope
|
|
28
|
+
`, 'runMethodology methodologyGateFilePath validateMethodologyGateArtifact'),
|
|
29
|
+
completion: interactionDomain('', 'runCompletion completionEvidenceBundleEnvelope'),
|
|
30
|
+
learning: interactionDomain(`
|
|
31
|
+
learningObservationPayload learningObservationEnvelope validateLearningObservationArtifact writeLearningObservation
|
|
32
|
+
learningRunObservationPreviewEnvelope learningCandidateInstinctPayload learningCandidateInstinctEnvelope validateLearningCandidateInstinctArtifact
|
|
33
|
+
writeLearningCandidateInstinct learningPromotionPayload learningPromotionEnvelope validateLearningPromotionArtifact
|
|
34
|
+
writeLearningPromotion learningArtifactSummary learningArtifactAuditEnvelope learningAuditEnvelope learningAdviceObservationRefs
|
|
35
|
+
learningAdviceEnvelope experienceLearningPatternObservationRefs experienceLearningPatternEnvelope runLearning
|
|
36
|
+
`, 'runLearning'),
|
|
37
|
+
tokens: interactionDomain(`
|
|
38
|
+
tokenCompactionSnapshotPath tokenMetricsSnapshotPath tokenCompactorCatalogSnapshot tokenRootRelativeOutputFilePath
|
|
39
|
+
tokenCompactionPayload tokenCompactionEnvelope validateTokenCompactionArtifact writeTokenCompaction tokenProfileSnapshot
|
|
40
|
+
tokenProfileEnvelope tokenMetricsPayload tokenMetricsEnvelope validateTokenMetricsArtifact writeTokenMetrics tokenAdviceEnvelope
|
|
41
|
+
tokenRewritePreview tokenRewritePreviewEnvelope tokenAuditEnvelope
|
|
42
|
+
`, `
|
|
43
|
+
tokenAdviceEnvelope tokenAuditEnvelope tokenCompactionEnvelope tokenMetricsEnvelope tokenProfileEnvelope
|
|
44
|
+
tokenRewritePreviewEnvelope writeTokenCompaction writeTokenMetrics
|
|
45
|
+
`),
|
|
46
|
+
});
|