mandrel 1.57.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/README.md +954 -0
- package/.agents/docs/SDLC.md +1420 -0
- package/.agents/docs/agentrc-reference.json +278 -0
- package/.agents/docs/configuration.md +1040 -0
- package/.agents/docs/workflows.md +59 -0
- package/.agents/instructions.md +384 -0
- package/.agents/personas/architect.md +107 -0
- package/.agents/personas/devops-engineer.md +36 -0
- package/.agents/personas/engineer-mobile.md +119 -0
- package/.agents/personas/engineer-web.md +110 -0
- package/.agents/personas/engineer.md +90 -0
- package/.agents/personas/product.md +88 -0
- package/.agents/personas/project-manager.md +110 -0
- package/.agents/personas/qa-engineer.md +91 -0
- package/.agents/personas/refactorer.md +110 -0
- package/.agents/personas/security-engineer.md +112 -0
- package/.agents/personas/sre.md +86 -0
- package/.agents/personas/technical-writer.md +100 -0
- package/.agents/personas/ux-designer.md +95 -0
- package/.agents/rules/api-conventions.md +75 -0
- package/.agents/rules/changelog-style.md +238 -0
- package/.agents/rules/gherkin-standards.md +146 -0
- package/.agents/rules/git-conventions.md +146 -0
- package/.agents/rules/orchestration-error-handling.md +35 -0
- package/.agents/rules/security-baseline.md +92 -0
- package/.agents/rules/shell-conventions.md +70 -0
- package/.agents/rules/test-seams.md +59 -0
- package/.agents/rules/testing-standards.md +177 -0
- package/.agents/runtime-deps.json +18 -0
- package/.agents/schemas/acceptance-eval-verdict.schema.json +93 -0
- package/.agents/schemas/agentrc.schema.json +1583 -0
- package/.agents/schemas/audit-results.schema.json +69 -0
- package/.agents/schemas/audit-rules.json +134 -0
- package/.agents/schemas/audit-rules.schema.json +69 -0
- package/.agents/schemas/baselines/baseline-envelope.schema.json +44 -0
- package/.agents/schemas/baselines/bundle-size.schema.json +47 -0
- package/.agents/schemas/baselines/coverage.schema.json +50 -0
- package/.agents/schemas/baselines/crap.schema.json +52 -0
- package/.agents/schemas/baselines/duplication.schema.json +62 -0
- package/.agents/schemas/baselines/lighthouse.schema.json +59 -0
- package/.agents/schemas/baselines/lint.schema.json +47 -0
- package/.agents/schemas/baselines/maintainability.schema.json +71 -0
- package/.agents/schemas/baselines/mutation.schema.json +52 -0
- package/.agents/schemas/crap-baseline.schema.json +57 -0
- package/.agents/schemas/crap-report.schema.json +102 -0
- package/.agents/schemas/dispatch-manifest.json +232 -0
- package/.agents/schemas/epic-perf-report.schema.json +89 -0
- package/.agents/schemas/epic-spec.schema.json +183 -0
- package/.agents/schemas/friction-event.schema.json +56 -0
- package/.agents/schemas/lifecycle/README.md +18 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.failed.schema.json +13 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.ok.schema.json +13 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.skipped.schema.json +13 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/acceptance.reconcile.waived.schema.json +13 -0
- package/.agents/schemas/lifecycle/checkpoint.written.schema.json +13 -0
- package/.agents/schemas/lifecycle/close-validate.end.schema.json +18 -0
- package/.agents/schemas/lifecycle/close-validate.start.schema.json +13 -0
- package/.agents/schemas/lifecycle/code-review.end.schema.json +30 -0
- package/.agents/schemas/lifecycle/code-review.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.automerge.end.schema.json +14 -0
- package/.agents/schemas/lifecycle/epic.automerge.start.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.blocked.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.cleanup.end.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.cleanup.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.close.end.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.complete.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.finalize.end.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.finalize.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.merge.armed.schema.json +13 -0
- package/.agents/schemas/lifecycle/epic.merge.blocked.schema.json +14 -0
- package/.agents/schemas/lifecycle/epic.merge.confirmed.schema.json +17 -0
- package/.agents/schemas/lifecycle/epic.merge.ready.schema.json +15 -0
- package/.agents/schemas/lifecycle/epic.plan.end.schema.json +18 -0
- package/.agents/schemas/lifecycle/epic.plan.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.snapshot.end.schema.json +16 -0
- package/.agents/schemas/lifecycle/epic.snapshot.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/epic.watch.end.schema.json +28 -0
- package/.agents/schemas/lifecycle/epic.watch.start.schema.json +16 -0
- package/.agents/schemas/lifecycle/intervention.recorded.schema.json +15 -0
- package/.agents/schemas/lifecycle/ledger-record.schema.json +59 -0
- package/.agents/schemas/lifecycle/notification.emitted.schema.json +18 -0
- package/.agents/schemas/lifecycle/pr.created.schema.json +14 -0
- package/.agents/schemas/lifecycle/retro.end.schema.json +16 -0
- package/.agents/schemas/lifecycle/retro.start.schema.json +12 -0
- package/.agents/schemas/lifecycle/story.blocked.schema.json +13 -0
- package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +17 -0
- package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +15 -0
- package/.agents/schemas/lifecycle/story.heartbeat.schema.json +20 -0
- package/.agents/schemas/lifecycle/story.merged.schema.json +13 -0
- package/.agents/schemas/mi-report.schema.json +58 -0
- package/.agents/schemas/model-attribution.schema.json +49 -0
- package/.agents/schemas/qa-finding.schema.json +133 -0
- package/.agents/schemas/qa-ledger.schema.json +89 -0
- package/.agents/schemas/risk-verdict.schema.json +53 -0
- package/.agents/schemas/signal-event.schema.json +58 -0
- package/.agents/schemas/skill.schema.json +31 -0
- package/.agents/schemas/skills-index.schema.json +81 -0
- package/.agents/schemas/story-perf-summary.schema.json +73 -0
- package/.agents/schemas/validation-evidence.schema.json +78 -0
- package/.agents/scripts/README.md +93 -0
- package/.agents/scripts/acceptance-eval.js +284 -0
- package/.agents/scripts/acceptance-spec-reconciler.js +556 -0
- package/.agents/scripts/agents-bootstrap-github.js +634 -0
- package/.agents/scripts/analyze-execution.js +369 -0
- package/.agents/scripts/assert-branch.js +83 -0
- package/.agents/scripts/audit-labels-bootstrap.js +253 -0
- package/.agents/scripts/audit-to-stories.js +257 -0
- package/.agents/scripts/bootstrap.js +1378 -0
- package/.agents/scripts/check-baselines.js +81 -0
- package/.agents/scripts/check-dead-exports.js +311 -0
- package/.agents/scripts/check-doc-links.js +401 -0
- package/.agents/scripts/check-gherkin-placeholders.js +663 -0
- package/.agents/scripts/check-lifecycle-doc-drift.js +402 -0
- package/.agents/scripts/check-lifecycle-lint.js +379 -0
- package/.agents/scripts/check-prepush-recovery.js +90 -0
- package/.agents/scripts/check-windows-git-perf.js +138 -0
- package/.agents/scripts/cleanup-repo-test-temp.js +67 -0
- package/.agents/scripts/coverage-capture.js +112 -0
- package/.agents/scripts/detect-merges.js +111 -0
- package/.agents/scripts/diagnose-friction.js +257 -0
- package/.agents/scripts/diagnose.js +240 -0
- package/.agents/scripts/dispatcher.js +295 -0
- package/.agents/scripts/drain-pending-cleanup.js +147 -0
- package/.agents/scripts/epic-audit-prepare.js +419 -0
- package/.agents/scripts/epic-audit-recheck.js +241 -0
- package/.agents/scripts/epic-deliver-note-intervention.js +192 -0
- package/.agents/scripts/epic-deliver-preflight.js +407 -0
- package/.agents/scripts/epic-deliver-prepare.js +383 -0
- package/.agents/scripts/epic-execute-record-wave.js +463 -0
- package/.agents/scripts/epic-plan-clarity.js +201 -0
- package/.agents/scripts/epic-plan-decompose.js +79 -0
- package/.agents/scripts/epic-plan-healthcheck.js +363 -0
- package/.agents/scripts/epic-plan-spec-validate.js +111 -0
- package/.agents/scripts/epic-plan-spec.js +198 -0
- package/.agents/scripts/epic-reconcile.js +637 -0
- package/.agents/scripts/evidence-gate.js +235 -0
- package/.agents/scripts/generate-config-docs.js +516 -0
- package/.agents/scripts/generate-lifecycle-docs.js +224 -0
- package/.agents/scripts/generate-skills-index.js +252 -0
- package/.agents/scripts/generate-workflows-doc.js +168 -0
- package/.agents/scripts/git-cleanup.js +124 -0
- package/.agents/scripts/git-pr-quality-gate.js +203 -0
- package/.agents/scripts/git-rebase-and-resolve.js +234 -0
- package/.agents/scripts/hierarchy-gate.js +176 -0
- package/.agents/scripts/hydrate-context.js +179 -0
- package/.agents/scripts/install-matrix-assert.js +282 -0
- package/.agents/scripts/lib/Graph.js +326 -0
- package/.agents/scripts/lib/ITicketingProvider.js +349 -0
- package/.agents/scripts/lib/Logger.js +194 -0
- package/.agents/scripts/lib/audit-suite/cli.js +64 -0
- package/.agents/scripts/lib/audit-suite/findings.js +164 -0
- package/.agents/scripts/lib/audit-suite/frontmatter-lint.js +32 -0
- package/.agents/scripts/lib/audit-suite/frontmatter.js +110 -0
- package/.agents/scripts/lib/audit-suite/index.js +22 -0
- package/.agents/scripts/lib/audit-suite/runner.js +233 -0
- package/.agents/scripts/lib/audit-suite/selector.js +235 -0
- package/.agents/scripts/lib/audit-suite/substitutions.js +124 -0
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +49 -0
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +130 -0
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +114 -0
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +93 -0
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +265 -0
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +246 -0
- package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +160 -0
- package/.agents/scripts/lib/auto-refresh-baselines.js +308 -0
- package/.agents/scripts/lib/baseline-loader.js +0 -0
- package/.agents/scripts/lib/baseline-schema-registry.js +69 -0
- package/.agents/scripts/lib/baseline-snapshot.js +716 -0
- package/.agents/scripts/lib/baselines/component-matcher.js +21 -0
- package/.agents/scripts/lib/baselines/components.js +126 -0
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +203 -0
- package/.agents/scripts/lib/baselines/duplication-scanner.js +220 -0
- package/.agents/scripts/lib/baselines/env-overrides.js +129 -0
- package/.agents/scripts/lib/baselines/envelope.js +368 -0
- package/.agents/scripts/lib/baselines/exit-codes.js +89 -0
- package/.agents/scripts/lib/baselines/git-base.js +0 -0
- package/.agents/scripts/lib/baselines/kernel.js +111 -0
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +220 -0
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +157 -0
- package/.agents/scripts/lib/baselines/kinds/coverage.js +194 -0
- package/.agents/scripts/lib/baselines/kinds/crap.js +555 -0
- package/.agents/scripts/lib/baselines/kinds/duplication.js +197 -0
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +185 -0
- package/.agents/scripts/lib/baselines/kinds/lint.js +172 -0
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +340 -0
- package/.agents/scripts/lib/baselines/kinds/mutation.js +153 -0
- package/.agents/scripts/lib/baselines/path-canon.js +279 -0
- package/.agents/scripts/lib/baselines/preview-gates.js +298 -0
- package/.agents/scripts/lib/baselines/reader.js +321 -0
- package/.agents/scripts/lib/baselines/refresh-service.js +733 -0
- package/.agents/scripts/lib/baselines/scope.js +291 -0
- package/.agents/scripts/lib/baselines/writer.js +312 -0
- package/.agents/scripts/lib/bdd-runner-detect.js +417 -0
- package/.agents/scripts/lib/bdd-scenario-scanner.js +310 -0
- package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +202 -0
- package/.agents/scripts/lib/bootstrap/branch-protection.js +222 -0
- package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +171 -0
- package/.agents/scripts/lib/bootstrap/commit-push.js +146 -0
- package/.agents/scripts/lib/bootstrap/gh-list.js +153 -0
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +306 -0
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +89 -0
- package/.agents/scripts/lib/bootstrap/install-ledger.js +174 -0
- package/.agents/scripts/lib/bootstrap/manifest.js +272 -0
- package/.agents/scripts/lib/bootstrap/merge-methods.js +108 -0
- package/.agents/scripts/lib/bootstrap/preflight.js +195 -0
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +801 -0
- package/.agents/scripts/lib/bootstrap/prompt.js +480 -0
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +370 -0
- package/.agents/scripts/lib/bootstrap/summary.js +75 -0
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +256 -0
- package/.agents/scripts/lib/branch-name-guard.js +98 -0
- package/.agents/scripts/lib/c8-cli-path.js +21 -0
- package/.agents/scripts/lib/changed-files.js +184 -0
- package/.agents/scripts/lib/checks/baseline-drift-main-checkout.js +104 -0
- package/.agents/scripts/lib/checks/core-bare-clean.js +48 -0
- package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +54 -0
- package/.agents/scripts/lib/checks/index.js +288 -0
- package/.agents/scripts/lib/checks/push-hook-parity.js +106 -0
- package/.agents/scripts/lib/checks/stale-origin-epic.js +49 -0
- package/.agents/scripts/lib/checks/state.js +558 -0
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +186 -0
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +182 -0
- package/.agents/scripts/lib/checks/windows-coverage-noise-floor.js +92 -0
- package/.agents/scripts/lib/checks/worktree-bootstrap-env.js +81 -0
- package/.agents/scripts/lib/checks/worktree-residue-biome.js +55 -0
- package/.agents/scripts/lib/cli/parse-numeric.js +60 -0
- package/.agents/scripts/lib/cli/standard-args.js +351 -0
- package/.agents/scripts/lib/cli-args.js +286 -0
- package/.agents/scripts/lib/cli-utils.js +69 -0
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +44 -0
- package/.agents/scripts/lib/close-validation/projections/inputs.js +86 -0
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +286 -0
- package/.agents/scripts/lib/close-validation.js +897 -0
- package/.agents/scripts/lib/codebase-snapshot.js +513 -0
- package/.agents/scripts/lib/command-header.js +33 -0
- package/.agents/scripts/lib/config/acceptance-eval.js +95 -0
- package/.agents/scripts/lib/config/baselines.js +60 -0
- package/.agents/scripts/lib/config/ci.js +30 -0
- package/.agents/scripts/lib/config/commands.js +36 -0
- package/.agents/scripts/lib/config/defaults.js +119 -0
- package/.agents/scripts/lib/config/explain.js +348 -0
- package/.agents/scripts/lib/config/gates/bundle-size.schema.js +23 -0
- package/.agents/scripts/lib/config/gates/coverage.schema.js +18 -0
- package/.agents/scripts/lib/config/gates/crap.schema.js +33 -0
- package/.agents/scripts/lib/config/gates/duplication.schema.js +26 -0
- package/.agents/scripts/lib/config/gates/index.js +36 -0
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +23 -0
- package/.agents/scripts/lib/config/gates/lint.schema.js +9 -0
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +20 -0
- package/.agents/scripts/lib/config/gates/mutation.schema.js +12 -0
- package/.agents/scripts/lib/config/gates/shared.js +117 -0
- package/.agents/scripts/lib/config/github.js +122 -0
- package/.agents/scripts/lib/config/lifecycle.js +40 -0
- package/.agents/scripts/lib/config/limits.js +211 -0
- package/.agents/scripts/lib/config/paths.js +73 -0
- package/.agents/scripts/lib/config/preflight.js +58 -0
- package/.agents/scripts/lib/config/quality.js +665 -0
- package/.agents/scripts/lib/config/retro.js +77 -0
- package/.agents/scripts/lib/config/runners.js +105 -0
- package/.agents/scripts/lib/config/runtime.js +167 -0
- package/.agents/scripts/lib/config/shared.js +46 -0
- package/.agents/scripts/lib/config/sync-agentrc.js +243 -0
- package/.agents/scripts/lib/config/temp-paths.js +373 -0
- package/.agents/scripts/lib/config/validate-orchestration.js +81 -0
- package/.agents/scripts/lib/config/worktree-isolation.js +80 -0
- package/.agents/scripts/lib/config-resolver.js +298 -0
- package/.agents/scripts/lib/config-schema-shared.js +32 -0
- package/.agents/scripts/lib/config-schema.js +20 -0
- package/.agents/scripts/lib/config-settings-schema-delivery.js +332 -0
- package/.agents/scripts/lib/config-settings-schema-quality.js +165 -0
- package/.agents/scripts/lib/config-settings-schema.js +420 -0
- package/.agents/scripts/lib/coverage-baseline.js +352 -0
- package/.agents/scripts/lib/coverage-capture.js +195 -0
- package/.agents/scripts/lib/coverage-utils.js +239 -0
- package/.agents/scripts/lib/cpu-pool.js +223 -0
- package/.agents/scripts/lib/crap-engine.js +119 -0
- package/.agents/scripts/lib/crap-utils.js +479 -0
- package/.agents/scripts/lib/degraded-mode.js +69 -0
- package/.agents/scripts/lib/dependency-parser.js +129 -0
- package/.agents/scripts/lib/duplicate-search.js +189 -0
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +70 -0
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +197 -0
- package/.agents/scripts/lib/dynamic-workflow/capability.js +396 -0
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +80 -0
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +72 -0
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +90 -0
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +43 -0
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +83 -0
- package/.agents/scripts/lib/env-loader.js +52 -0
- package/.agents/scripts/lib/epic-merge-lock.js +239 -0
- package/.agents/scripts/lib/epic-plan-clarity.js +142 -0
- package/.agents/scripts/lib/epic-plan-ideation.js +228 -0
- package/.agents/scripts/lib/error-redactor.js +125 -0
- package/.agents/scripts/lib/errors/index.js +67 -0
- package/.agents/scripts/lib/feedback-loop/audit-results-graduator.js +230 -0
- package/.agents/scripts/lib/feedback-loop/code-review-graduator.js +207 -0
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +421 -0
- package/.agents/scripts/lib/feedback-loop/memory-freshness.js +480 -0
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +229 -0
- package/.agents/scripts/lib/findings/classify-finding.js +195 -0
- package/.agents/scripts/lib/findings/promote-finding.js +353 -0
- package/.agents/scripts/lib/findings/route-finding.js +283 -0
- package/.agents/scripts/lib/findings/semantic-issue-search.js +179 -0
- package/.agents/scripts/lib/findings/severity.js +102 -0
- package/.agents/scripts/lib/gates/baseline-store.js +106 -0
- package/.agents/scripts/lib/gates/friction.js +43 -0
- package/.agents/scripts/lib/gh-exec.js +553 -0
- package/.agents/scripts/lib/git/cached-fetch.js +0 -0
- package/.agents/scripts/lib/git/sync-from-base.js +162 -0
- package/.agents/scripts/lib/git-branch-cleanup.js +213 -0
- package/.agents/scripts/lib/git-branch-lifecycle.js +353 -0
- package/.agents/scripts/lib/git-merge-orchestrator.js +261 -0
- package/.agents/scripts/lib/git-utils.js +363 -0
- package/.agents/scripts/lib/github-url.js +29 -0
- package/.agents/scripts/lib/install-cmd-parser.js +51 -0
- package/.agents/scripts/lib/issue-link-parser.js +74 -0
- package/.agents/scripts/lib/json-utils.js +60 -0
- package/.agents/scripts/lib/label-constants.js +169 -0
- package/.agents/scripts/lib/label-taxonomy.js +200 -0
- package/.agents/scripts/lib/maintainability-engine.js +164 -0
- package/.agents/scripts/lib/maintainability-utils.js +343 -0
- package/.agents/scripts/lib/mandrel-catalog.js +170 -0
- package/.agents/scripts/lib/mutation/baseline-snapshot.js +238 -0
- package/.agents/scripts/lib/mutation/config-detector.js +119 -0
- package/.agents/scripts/lib/mutation/stryker-runner.js +306 -0
- package/.agents/scripts/lib/mutation/survivor-report.js +160 -0
- package/.agents/scripts/lib/notifications/notifier.js +75 -0
- package/.agents/scripts/lib/observability/active-story-env.js +182 -0
- package/.agents/scripts/lib/observability/baseline-refresh-rate.js +221 -0
- package/.agents/scripts/lib/observability/perf-aggregator.js +887 -0
- package/.agents/scripts/lib/observability/perf-report-readers.js +319 -0
- package/.agents/scripts/lib/observability/perf-report-render.js +182 -0
- package/.agents/scripts/lib/observability/signals-writer.js +296 -0
- package/.agents/scripts/lib/observability/source-classifier.js +103 -0
- package/.agents/scripts/lib/observability/tool-trace-hook.js +417 -0
- package/.agents/scripts/lib/onboard/detect-stack.js +300 -0
- package/.agents/scripts/lib/onboard/scaffold-docs.js +128 -0
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +173 -0
- package/.agents/scripts/lib/orchestration/cascade-grouping.js +275 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +131 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +80 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +132 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +142 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +149 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +158 -0
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +56 -0
- package/.agents/scripts/lib/orchestration/code-review.js +652 -0
- package/.agents/scripts/lib/orchestration/column-sync.js +286 -0
- package/.agents/scripts/lib/orchestration/context-envelope.js +280 -0
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +581 -0
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +88 -0
- package/.agents/scripts/lib/orchestration/detectors-phase.js +188 -0
- package/.agents/scripts/lib/orchestration/dispatch-engine.js +144 -0
- package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +206 -0
- package/.agents/scripts/lib/orchestration/doc-reader.js +94 -0
- package/.agents/scripts/lib/orchestration/epic-cleanup.js +473 -0
- package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +310 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/cli.js +167 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +151 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +74 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +78 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +72 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +155 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +321 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +75 -0
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +86 -0
- package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +235 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/authoring-context.js +197 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/cli-args.js +48 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +94 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +414 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +55 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/risk-verdict.js +105 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +235 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +120 -0
- package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +118 -0
- package/.agents/scripts/lib/orchestration/epic-run-state-store.js +295 -0
- package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +186 -0
- package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +50 -0
- package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +146 -0
- package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +110 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +392 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +217 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +235 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter.js +69 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +32 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +291 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +175 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +37 -0
- package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +127 -0
- package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +400 -0
- package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +285 -0
- package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +66 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +797 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +619 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +335 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +230 -0
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +363 -0
- package/.agents/scripts/lib/orchestration/error-journal.js +139 -0
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +31 -0
- package/.agents/scripts/lib/orchestration/file-assumptions.js +506 -0
- package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +116 -0
- package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +241 -0
- package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +489 -0
- package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +88 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +219 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +309 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +99 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +123 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +57 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +114 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +426 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +84 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +365 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +72 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +69 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +214 -0
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +137 -0
- package/.agents/scripts/lib/orchestration/label-transitions.js +43 -0
- package/.agents/scripts/lib/orchestration/lifecycle/bus.js +309 -0
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +147 -0
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +155 -0
- package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +226 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +69 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +378 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +248 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +527 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +259 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +278 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +355 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +647 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +331 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +140 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +421 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +168 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +668 -0
- package/.agents/scripts/lib/orchestration/lifecycle/trace-logger.js +322 -0
- package/.agents/scripts/lib/orchestration/lint-baseline-service.js +114 -0
- package/.agents/scripts/lib/orchestration/manifest-builder.js +216 -0
- package/.agents/scripts/lib/orchestration/model-attribution.js +390 -0
- package/.agents/scripts/lib/orchestration/parked-follow-ons.js +147 -0
- package/.agents/scripts/lib/orchestration/phase-runner.js +87 -0
- package/.agents/scripts/lib/orchestration/plan-review-routing.js +63 -0
- package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +86 -0
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +212 -0
- package/.agents/scripts/lib/orchestration/planning-context-budget.js +213 -0
- package/.agents/scripts/lib/orchestration/planning-risk.js +155 -0
- package/.agents/scripts/lib/orchestration/planning-state-manager.js +318 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +56 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +33 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/notification.js +78 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/temp-cleanup.js +68 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +118 -0
- package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +396 -0
- package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +205 -0
- package/.agents/scripts/lib/orchestration/pr-base-guard.js +47 -0
- package/.agents/scripts/lib/orchestration/preflight-cache.js +164 -0
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +202 -0
- package/.agents/scripts/lib/orchestration/reconciler.js +137 -0
- package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +152 -0
- package/.agents/scripts/lib/orchestration/recut.js +56 -0
- package/.agents/scripts/lib/orchestration/resolves-token.js +127 -0
- package/.agents/scripts/lib/orchestration/retro/phases/checks.js +94 -0
- package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +448 -0
- package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +335 -0
- package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +133 -0
- package/.agents/scripts/lib/orchestration/retro-heuristics.js +57 -0
- package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +275 -0
- package/.agents/scripts/lib/orchestration/retro-proposals.js +395 -0
- package/.agents/scripts/lib/orchestration/retro-runner.js +171 -0
- package/.agents/scripts/lib/orchestration/review-depth.js +93 -0
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +363 -0
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +205 -0
- package/.agents/scripts/lib/orchestration/review-providers/native.js +805 -0
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +73 -0
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +396 -0
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +373 -0
- package/.agents/scripts/lib/orchestration/review-providers/types.js +89 -0
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +107 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +159 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +194 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +81 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +190 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +70 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +106 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +42 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +73 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +225 -0
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +315 -0
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +149 -0
- package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +110 -0
- package/.agents/scripts/lib/orchestration/spec-freshness.js +320 -0
- package/.agents/scripts/lib/orchestration/spec-renderer.js +456 -0
- package/.agents/scripts/lib/orchestration/spec-section-validator.js +80 -0
- package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +797 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +163 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +152 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +387 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +266 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +48 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +67 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +161 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +117 -0
- package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +86 -0
- package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +147 -0
- package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +142 -0
- package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +62 -0
- package/.agents/scripts/lib/orchestration/story-close/format-autofix-scoped.js +221 -0
- package/.agents/scripts/lib/orchestration/story-close/format-autofix-shared.js +123 -0
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +216 -0
- package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +636 -0
- package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +198 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +105 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/close.js +222 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +220 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +291 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +234 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +110 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +86 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +112 -0
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +157 -0
- package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +434 -0
- package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +290 -0
- package/.agents/scripts/lib/orchestration/story-close-recovery.js +643 -0
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +67 -0
- package/.agents/scripts/lib/orchestration/task-body-validator.js +391 -0
- package/.agents/scripts/lib/orchestration/ticket-lease.js +358 -0
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +783 -0
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +367 -0
- package/.agents/scripts/lib/orchestration/ticket-validator.js +691 -0
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +723 -0
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +474 -0
- package/.agents/scripts/lib/orchestration/ticketing/state.js +559 -0
- package/.agents/scripts/lib/orchestration/ticketing.js +55 -0
- package/.agents/scripts/lib/orchestration/wave-marker.js +28 -0
- package/.agents/scripts/lib/orchestration/wave-record-io.js +277 -0
- package/.agents/scripts/lib/orchestration/wave-record-notifications.js +189 -0
- package/.agents/scripts/lib/orchestration/wave-record-projection.js +423 -0
- package/.agents/scripts/lib/path-security.js +25 -0
- package/.agents/scripts/lib/plan-phase-cleanup.js +125 -0
- package/.agents/scripts/lib/preflight-runner.js +196 -0
- package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +95 -0
- package/.agents/scripts/lib/presentation/manifest-builder.js +245 -0
- package/.agents/scripts/lib/presentation/manifest-formatter.js +243 -0
- package/.agents/scripts/lib/presentation/manifest-helpers.js +213 -0
- package/.agents/scripts/lib/presentation/manifest-persistence.js +262 -0
- package/.agents/scripts/lib/presentation/manifest-procedures.js +55 -0
- package/.agents/scripts/lib/presentation/manifest-render-waves.js +252 -0
- package/.agents/scripts/lib/presentation/manifest-renderer.js +188 -0
- package/.agents/scripts/lib/presentation/manifest-story-views.js +119 -0
- package/.agents/scripts/lib/provider-factory.js +80 -0
- package/.agents/scripts/lib/push-epic-retry.js +209 -0
- package/.agents/scripts/lib/qa/console-allowlist.js +151 -0
- package/.agents/scripts/lib/qa/coverage-report.js +181 -0
- package/.agents/scripts/lib/qa/coverage-verdict.js +296 -0
- package/.agents/scripts/lib/qa/propose-missing-test.js +95 -0
- package/.agents/scripts/lib/qa/qa-context-hydrator.js +296 -0
- package/.agents/scripts/lib/qa/qa-session.js +197 -0
- package/.agents/scripts/lib/qa/redact-evidence.js +245 -0
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +190 -0
- package/.agents/scripts/lib/qa/resolve-selection.js +373 -0
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +100 -0
- package/.agents/scripts/lib/runtime-deps/manifest.js +96 -0
- package/.agents/scripts/lib/runtime-deps/preflight.js +78 -0
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +202 -0
- package/.agents/scripts/lib/signals/detectors/common.js +36 -0
- package/.agents/scripts/lib/signals/detectors/hotspot.js +298 -0
- package/.agents/scripts/lib/signals/detectors/index.js +14 -0
- package/.agents/scripts/lib/signals/detectors/retry.js +289 -0
- package/.agents/scripts/lib/signals/detectors/rework.js +204 -0
- package/.agents/scripts/lib/signals/index.js +39 -0
- package/.agents/scripts/lib/signals/read.js +268 -0
- package/.agents/scripts/lib/signals/schema.js +225 -0
- package/.agents/scripts/lib/signals/span-tree.js +290 -0
- package/.agents/scripts/lib/signals/write.js +19 -0
- package/.agents/scripts/lib/single-story/confirm-merge.js +201 -0
- package/.agents/scripts/lib/single-story/story-merged-notify.js +126 -0
- package/.agents/scripts/lib/single-story-sweep/protection.js +274 -0
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +169 -0
- package/.agents/scripts/lib/single-story-sweep.js +329 -0
- package/.agents/scripts/lib/skills/parse-skill.js +202 -0
- package/.agents/scripts/lib/skills/walk-skill-files.js +56 -0
- package/.agents/scripts/lib/spec/index.js +36 -0
- package/.agents/scripts/lib/spec/loader.js +425 -0
- package/.agents/scripts/lib/spec/state.js +217 -0
- package/.agents/scripts/lib/story-body/story-body.js +743 -0
- package/.agents/scripts/lib/story-init/blocker-validator.js +68 -0
- package/.agents/scripts/lib/story-init/branch-initializer.js +422 -0
- package/.agents/scripts/lib/story-init/context-resolver.js +92 -0
- package/.agents/scripts/lib/story-init/donor-precheck.js +207 -0
- package/.agents/scripts/lib/story-init/hierarchy-tracer.js +36 -0
- package/.agents/scripts/lib/story-init/state-transitioner.js +80 -0
- package/.agents/scripts/lib/story-init/task-graph-builder.js +114 -0
- package/.agents/scripts/lib/story-init/transition-summary.js +34 -0
- package/.agents/scripts/lib/story-lifecycle.js +186 -0
- package/.agents/scripts/lib/story-plan.js +246 -0
- package/.agents/scripts/lib/task-utils.js +26 -0
- package/.agents/scripts/lib/templates/decomposer-prompts.js +168 -0
- package/.agents/scripts/lib/test-env.js +30 -0
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +52 -0
- package/.agents/scripts/lib/test-isolate/list-files.js +90 -0
- package/.agents/scripts/lib/test-isolate/parse-tap.js +75 -0
- package/.agents/scripts/lib/test-isolate/runner.js +483 -0
- package/.agents/scripts/lib/test-profile/parse-tap.js +136 -0
- package/.agents/scripts/lib/test-profile/render-report.js +45 -0
- package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +35 -0
- package/.agents/scripts/lib/test-tiers.js +94 -0
- package/.agents/scripts/lib/util/concurrent-map.js +59 -0
- package/.agents/scripts/lib/util/phase-timer-state.js +72 -0
- package/.agents/scripts/lib/util/phase-timer.js +163 -0
- package/.agents/scripts/lib/util/poll-loop.js +86 -0
- package/.agents/scripts/lib/util/with-timeout.js +32 -0
- package/.agents/scripts/lib/validation-evidence.js +323 -0
- package/.agents/scripts/lib/wave-runner/tick.js +665 -0
- package/.agents/scripts/lib/wave-runner/wave-checkpoint.js +91 -0
- package/.agents/scripts/lib/wave-runner/wave-runner-error.js +19 -0
- package/.agents/scripts/lib/workers/crap-worker.js +197 -0
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +137 -0
- package/.agents/scripts/lib/workers/maintainability-worker.js +79 -0
- package/.agents/scripts/lib/workspace-provisioner.js +189 -0
- package/.agents/scripts/lib/worktree/bootstrapper.js +48 -0
- package/.agents/scripts/lib/worktree/inspector.js +140 -0
- package/.agents/scripts/lib/worktree/lifecycle/creation.js +118 -0
- package/.agents/scripts/lib/worktree/lifecycle/drift-detection.js +62 -0
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +276 -0
- package/.agents/scripts/lib/worktree/lifecycle/gc.js +49 -0
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +178 -0
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +264 -0
- package/.agents/scripts/lib/worktree/lifecycle/precheck.js +100 -0
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +588 -0
- package/.agents/scripts/lib/worktree/lifecycle/registry-sync.js +124 -0
- package/.agents/scripts/lib/worktree/lifecycle/shared.js +26 -0
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +40 -0
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +349 -0
- package/.agents/scripts/lib/worktree-manager.js +243 -0
- package/.agents/scripts/lifecycle-diff.js +206 -0
- package/.agents/scripts/lifecycle-emit-story-dispatch.js +194 -0
- package/.agents/scripts/lifecycle-emit.js +479 -0
- package/.agents/scripts/lint-baseline.js +507 -0
- package/.agents/scripts/lint-label-vocabulary.js +237 -0
- package/.agents/scripts/loc-delta.js +205 -0
- package/.agents/scripts/notify.js +307 -0
- package/.agents/scripts/package.json +3 -0
- package/.agents/scripts/post-structured-comment.js +127 -0
- package/.agents/scripts/pr-watch-with-update.js +152 -0
- package/.agents/scripts/providers/github/auth.js +65 -0
- package/.agents/scripts/providers/github/board-add.js +63 -0
- package/.agents/scripts/providers/github/branch-protection.js +186 -0
- package/.agents/scripts/providers/github/cache.js +72 -0
- package/.agents/scripts/providers/github/comments.js +131 -0
- package/.agents/scripts/providers/github/compose.js +111 -0
- package/.agents/scripts/providers/github/errors.js +242 -0
- package/.agents/scripts/providers/github/issues.js +242 -0
- package/.agents/scripts/providers/github/labels.js +179 -0
- package/.agents/scripts/providers/github/mappers.js +126 -0
- package/.agents/scripts/providers/github/merge-methods.js +82 -0
- package/.agents/scripts/providers/github/project-board.js +47 -0
- package/.agents/scripts/providers/github/projects-v2-graphql.js +472 -0
- package/.agents/scripts/providers/github/prs.js +103 -0
- package/.agents/scripts/providers/github/request-helpers.js +110 -0
- package/.agents/scripts/providers/github/sub-issues.js +369 -0
- package/.agents/scripts/providers/github/tickets.js +381 -0
- package/.agents/scripts/providers/github/transient-retry.js +62 -0
- package/.agents/scripts/providers/github.js +157 -0
- package/.agents/scripts/quality-preview.js +327 -0
- package/.agents/scripts/quality-watch.js +223 -0
- package/.agents/scripts/render-manifest.js +143 -0
- package/.agents/scripts/resync-status-column.js +176 -0
- package/.agents/scripts/retro-run.js +167 -0
- package/.agents/scripts/run-audit-suite.js +97 -0
- package/.agents/scripts/run-coverage.js +103 -0
- package/.agents/scripts/run-lint.js +94 -0
- package/.agents/scripts/run-test-profile.js +126 -0
- package/.agents/scripts/run-tests.js +185 -0
- package/.agents/scripts/run-verify.js +56 -0
- package/.agents/scripts/select-audits.js +155 -0
- package/.agents/scripts/signals-view.js +294 -0
- package/.agents/scripts/single-story-close.js +83 -0
- package/.agents/scripts/single-story-confirm-merge.js +183 -0
- package/.agents/scripts/single-story-init.js +692 -0
- package/.agents/scripts/stories-wave-tick.js +415 -0
- package/.agents/scripts/story-close.js +246 -0
- package/.agents/scripts/story-deliver-prepare.js +267 -0
- package/.agents/scripts/story-init.js +516 -0
- package/.agents/scripts/story-phase.js +327 -0
- package/.agents/scripts/story-plan.js +284 -0
- package/.agents/scripts/sync-agentrc.js +71 -0
- package/.agents/scripts/sync-branch-from-base.js +138 -0
- package/.agents/scripts/sync-claude-commands.js +151 -0
- package/.agents/scripts/test-isolate.js +222 -0
- package/.agents/scripts/test-wrapper.js +108 -0
- package/.agents/scripts/update-coverage-baseline.js +129 -0
- package/.agents/scripts/update-crap-baseline.js +177 -0
- package/.agents/scripts/update-duplication-baseline.js +134 -0
- package/.agents/scripts/update-maintainability-baseline.js +183 -0
- package/.agents/scripts/update-mutation-baseline.js +189 -0
- package/.agents/scripts/update-ticket-state.js +107 -0
- package/.agents/scripts/validate-docs-freshness.js +259 -0
- package/.agents/scripts/validate-skills.js +278 -0
- package/.agents/scripts/wave-tick.js +335 -0
- package/.agents/skills/core/analyze-execution/SKILL.md +98 -0
- package/.agents/skills/core/api-and-interface-design/SKILL.md +327 -0
- package/.agents/skills/core/baseline-refresh/SKILL.md +181 -0
- package/.agents/skills/core/browser-testing-with-devtools/SKILL.md +352 -0
- package/.agents/skills/core/ci-cd-and-automation/SKILL.md +274 -0
- package/.agents/skills/core/ci-cd-and-automation/examples.md +211 -0
- package/.agents/skills/core/code-review-and-quality/SKILL.md +421 -0
- package/.agents/skills/core/code-simplification/SKILL.md +389 -0
- package/.agents/skills/core/context-engineering/SKILL.md +309 -0
- package/.agents/skills/core/context-engineering/examples.md +58 -0
- package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +338 -0
- package/.agents/skills/core/deprecation-and-migration/SKILL.md +250 -0
- package/.agents/skills/core/diagnose-friction/SKILL.md +79 -0
- package/.agents/skills/core/documentation-and-adrs/SKILL.md +323 -0
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +145 -0
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +425 -0
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +393 -0
- package/.agents/skills/core/frontend-ui-engineering/SKILL.md +357 -0
- package/.agents/skills/core/git-workflow-and-versioning/SKILL.md +352 -0
- package/.agents/skills/core/hydrate-context/SKILL.md +118 -0
- package/.agents/skills/core/idea-refinement/SKILL.md +317 -0
- package/.agents/skills/core/idea-refinement/examples.md +437 -0
- package/.agents/skills/core/idea-refinement/frameworks.md +135 -0
- package/.agents/skills/core/idea-refinement/refinement-criteria.md +155 -0
- package/.agents/skills/core/idea-refinement/scripts/idea-refine.sh +15 -0
- package/.agents/skills/core/incremental-implementation/SKILL.md +271 -0
- package/.agents/skills/core/introducing-a-baseline-gate/SKILL.md +213 -0
- package/.agents/skills/core/knowledge-transfer/SKILL.md +175 -0
- package/.agents/skills/core/mutation-survivor-remediation/SKILL.md +117 -0
- package/.agents/skills/core/performance-optimization/SKILL.md +314 -0
- package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +277 -0
- package/.agents/skills/core/property-based-testing/SKILL.md +148 -0
- package/.agents/skills/core/qa-coverage-mapping/SKILL.md +105 -0
- package/.agents/skills/core/refactoring-discipline/SKILL.md +111 -0
- package/.agents/skills/core/scope-triage/SKILL.md +127 -0
- package/.agents/skills/core/security-and-hardening/SKILL.md +400 -0
- package/.agents/skills/core/shipping-and-launch/SKILL.md +328 -0
- package/.agents/skills/core/spec-driven-development/SKILL.md +252 -0
- package/.agents/skills/core/test-driven-development/SKILL.md +475 -0
- package/.agents/skills/core/using-agent-skills/SKILL.md +232 -0
- package/.agents/skills/skills.index.json +596 -0
- package/.agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md +31 -0
- package/.agents/skills/stack/architecture/structured-output-zod/SKILL.md +51 -0
- package/.agents/skills/stack/architecture/subagent-orchestration/SKILL.md +48 -0
- package/.agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md +31 -0
- package/.agents/skills/stack/backend/cloudflare-hono-architect/examples/route-template.ts +33 -0
- package/.agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md +31 -0
- package/.agents/skills/stack/backend/cloudflare-workers/SKILL.md +51 -0
- package/.agents/skills/stack/backend/highlevel-crm/SKILL.md +54 -0
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md +29 -0
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/examples/schema-template.ts +30 -0
- package/.agents/skills/stack/backend/stripe-integration/SKILL.md +57 -0
- package/.agents/skills/stack/backend/stripe-integration/scripts/listen-stripe.sh +9 -0
- package/.agents/skills/stack/backend/turso-sqlite/SKILL.md +48 -0
- package/.agents/skills/stack/frontend/astro/SKILL.md +62 -0
- package/.agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md +30 -0
- package/.agents/skills/stack/frontend/expo-react-native-developer/SKILL.md +29 -0
- package/.agents/skills/stack/frontend/google-analytics-v4/SKILL.md +50 -0
- package/.agents/skills/stack/frontend/tailwind-v4/SKILL.md +58 -0
- package/.agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md +34 -0
- package/.agents/skills/stack/qa/audit-accessibility/SKILL.md +51 -0
- package/.agents/skills/stack/qa/gherkin-authoring/SKILL.md +257 -0
- package/.agents/skills/stack/qa/gherkin-authoring/examples/invoice-issue.feature +41 -0
- package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +199 -0
- package/.agents/skills/stack/qa/playwright/SKILL.md +50 -0
- package/.agents/skills/stack/qa/playwright-bdd/SKILL.md +188 -0
- package/.agents/skills/stack/qa/qa-explore-driving/SKILL.md +142 -0
- package/.agents/skills/stack/qa/qa-harness/SKILL.md +220 -0
- package/.agents/skills/stack/qa/vitest/SKILL.md +51 -0
- package/.agents/skills/stack/security/backend-security-patterns/SKILL.md +68 -0
- package/.agents/starter-agentrc.json +22 -0
- package/.agents/templates/agent-protocol.md +72 -0
- package/.agents/templates/docs/architecture.md +30 -0
- package/.agents/templates/docs/decisions.md +24 -0
- package/.agents/templates/epic-from-idea.md +21 -0
- package/.agents/templates/single-story-body.md +17 -0
- package/.agents/workflows/agents-update.md +415 -0
- package/.agents/workflows/audit-architecture.md +312 -0
- package/.agents/workflows/audit-clean-code.md +179 -0
- package/.agents/workflows/audit-dependencies.md +91 -0
- package/.agents/workflows/audit-devops.md +110 -0
- package/.agents/workflows/audit-lighthouse.md +260 -0
- package/.agents/workflows/audit-performance.md +161 -0
- package/.agents/workflows/audit-privacy.md +104 -0
- package/.agents/workflows/audit-quality.md +191 -0
- package/.agents/workflows/audit-security.md +156 -0
- package/.agents/workflows/audit-seo.md +118 -0
- package/.agents/workflows/audit-sre.md +139 -0
- package/.agents/workflows/audit-to-stories.md +257 -0
- package/.agents/workflows/audit-ux-ui.md +102 -0
- package/.agents/workflows/epic-deliver.md +864 -0
- package/.agents/workflows/epic-plan.md +998 -0
- package/.agents/workflows/explain.md +118 -0
- package/.agents/workflows/git-cleanup.md +250 -0
- package/.agents/workflows/git-commit-all.md +15 -0
- package/.agents/workflows/git-merge-pr.md +377 -0
- package/.agents/workflows/git-pr-all.md +278 -0
- package/.agents/workflows/git-push.md +60 -0
- package/.agents/workflows/helpers/_merge-conflict-template.md +54 -0
- package/.agents/workflows/helpers/acceptance-self-eval.md +74 -0
- package/.agents/workflows/helpers/agents-sync-config.md +129 -0
- package/.agents/workflows/helpers/code-quality-guardrails.md +101 -0
- package/.agents/workflows/helpers/code-review.md +370 -0
- package/.agents/workflows/helpers/diagnose.md +117 -0
- package/.agents/workflows/helpers/epic-audit.md +295 -0
- package/.agents/workflows/helpers/epic-deliver-story.md +370 -0
- package/.agents/workflows/helpers/epic-plan-decompose.md +199 -0
- package/.agents/workflows/helpers/epic-plan-spec.md +184 -0
- package/.agents/workflows/helpers/epic-testing.md +125 -0
- package/.agents/workflows/helpers/parallel-tooling.md +88 -0
- package/.agents/workflows/helpers/signals.md +112 -0
- package/.agents/workflows/helpers/single-story-deliver.md +636 -0
- package/.agents/workflows/helpers/worktree-lifecycle.md +317 -0
- package/.agents/workflows/onboard.md +207 -0
- package/.agents/workflows/qa-assist.md +293 -0
- package/.agents/workflows/qa-explore.md +350 -0
- package/.agents/workflows/qa-run-harness.md +288 -0
- package/.agents/workflows/story-deliver.md +327 -0
- package/.agents/workflows/story-plan.md +233 -0
- package/LICENSE +21 -0
- package/README.md +193 -0
- package/bin/mandrel.js +56 -0
- package/bin/postinstall.js +195 -0
- package/lib/cli/__tests__/migrate.test.js +268 -0
- package/lib/cli/__tests__/sync-local-zone.test.js +247 -0
- package/lib/cli/__tests__/sync.test.js +372 -0
- package/lib/cli/__tests__/update-major.test.js +217 -0
- package/lib/cli/__tests__/update.test.js +696 -0
- package/lib/cli/__tests__/version-check.test.js +398 -0
- package/lib/cli/doctor.js +124 -0
- package/lib/cli/explain.js +107 -0
- package/lib/cli/migrate.js +260 -0
- package/lib/cli/registry.js +830 -0
- package/lib/cli/sync-commands.js +50 -0
- package/lib/cli/sync.js +200 -0
- package/lib/cli/uninstall.js +795 -0
- package/lib/cli/update.js +854 -0
- package/lib/cli/version-check.js +206 -0
- package/lib/migrations/README.md +69 -0
- package/lib/migrations/__tests__/index.test.js +216 -0
- package/lib/migrations/index.js +164 -0
- package/package.json +105 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shipping-and-launch
|
|
3
|
+
description:
|
|
4
|
+
Prepares production launches. Use when preparing to deploy to production. Use
|
|
5
|
+
when you need a pre-launch checklist, when setting up monitoring, when
|
|
6
|
+
planning a staged rollout, or when you need a rollback strategy.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Shipping and Launch
|
|
10
|
+
|
|
11
|
+
## Policy Capsule
|
|
12
|
+
|
|
13
|
+
- Every launch MUST be reversible, observable, and incremental — no big-bang deploys, no Friday-afternoon ships.
|
|
14
|
+
- Walk the pre-launch checklist top to bottom: code quality, security, performance, accessibility, infrastructure, documentation. A red box blocks the deploy.
|
|
15
|
+
- Ship behind feature flags so deployment is decoupled from release. Every flag has a named owner, a recorded expiration date, and gets cleaned up within 2 weeks of full rollout.
|
|
16
|
+
- Follow the staged rollout sequence: staging → production (flag off) → team (flag on) → 5 % canary → 25 % → 50 % → 100 %. Advance only when error rate, p95 latency, client JS errors, and business metrics are all within the green thresholds for the prior stage.
|
|
17
|
+
- Roll back **immediately** when error rate exceeds 2× baseline, p95 latency rises by more than 50 %, user-reported issues spike, data integrity is at risk, or a security vulnerability surfaces.
|
|
18
|
+
- Document a rollback plan **before** the deploy: explicit trigger conditions, step-by-step revert procedure, database migration rollback notes, and target time-to-rollback.
|
|
19
|
+
- Monitor the right surfaces: application metrics (error rate, p50/p95/p99, request volume), infrastructure (CPU, memory, DB pool), client (Core Web Vitals, JS errors), and key business metrics.
|
|
20
|
+
- Wire error reporting through a tracking service (with user/request context) on both client and server; never leak stack traces or internal error details in API responses.
|
|
21
|
+
- Perform first-hour post-launch verification: health endpoint 200, no new error types, latency stable, critical user flow exercised manually, logs flowing, rollback mechanism dry-run.
|
|
22
|
+
|
|
23
|
+
## Overview
|
|
24
|
+
|
|
25
|
+
Ship with confidence. The goal is not just to deploy — it's to deploy safely,
|
|
26
|
+
with monitoring in place, a rollback plan ready, and a clear understanding of
|
|
27
|
+
what success looks like. Every launch should be reversible, observable, and
|
|
28
|
+
incremental.
|
|
29
|
+
|
|
30
|
+
## When to Use
|
|
31
|
+
|
|
32
|
+
- Deploying a feature to production for the first time
|
|
33
|
+
- Releasing a significant change to users
|
|
34
|
+
- Migrating data or infrastructure
|
|
35
|
+
- Opening a beta or early access program
|
|
36
|
+
- Any deployment that carries risk (all of them)
|
|
37
|
+
|
|
38
|
+
## The Pre-Launch Checklist
|
|
39
|
+
|
|
40
|
+
### Code Quality
|
|
41
|
+
|
|
42
|
+
- [ ] All tests pass (unit, integration, e2e)
|
|
43
|
+
- [ ] Build succeeds with no warnings
|
|
44
|
+
- [ ] Lint and type checking pass
|
|
45
|
+
- [ ] Code reviewed and approved
|
|
46
|
+
- [ ] No TODO comments that should be resolved before launch
|
|
47
|
+
- [ ] No `console.log` debugging statements in production code
|
|
48
|
+
- [ ] Error handling covers expected failure modes
|
|
49
|
+
|
|
50
|
+
### Security
|
|
51
|
+
|
|
52
|
+
- [ ] No secrets in code or version control
|
|
53
|
+
- [ ] `npm audit` shows no critical or high vulnerabilities
|
|
54
|
+
- [ ] Input validation on all user-facing endpoints
|
|
55
|
+
- [ ] Authentication and authorization checks in place
|
|
56
|
+
- [ ] Security headers configured (CSP, HSTS, etc.)
|
|
57
|
+
- [ ] Rate limiting on authentication endpoints
|
|
58
|
+
- [ ] CORS configured to specific origins (not wildcard)
|
|
59
|
+
|
|
60
|
+
### Performance
|
|
61
|
+
|
|
62
|
+
- [ ] Core Web Vitals within "Good" thresholds
|
|
63
|
+
- [ ] No N+1 queries in critical paths
|
|
64
|
+
- [ ] Images optimized (compression, responsive sizes, lazy loading)
|
|
65
|
+
- [ ] Bundle size within budget
|
|
66
|
+
- [ ] Database queries have appropriate indexes
|
|
67
|
+
- [ ] Caching configured for static assets and repeated queries
|
|
68
|
+
|
|
69
|
+
### Accessibility
|
|
70
|
+
|
|
71
|
+
- [ ] Keyboard navigation works for all interactive elements
|
|
72
|
+
- [ ] Screen reader can convey page content and structure
|
|
73
|
+
- [ ] Color contrast meets WCAG 2.1 AA (4.5:1 for text)
|
|
74
|
+
- [ ] Focus management correct for modals and dynamic content
|
|
75
|
+
- [ ] Error messages are descriptive and associated with form fields
|
|
76
|
+
- [ ] No accessibility warnings in axe-core or Lighthouse
|
|
77
|
+
|
|
78
|
+
### Infrastructure
|
|
79
|
+
|
|
80
|
+
- [ ] Environment variables set in production
|
|
81
|
+
- [ ] Database migrations applied (or ready to apply)
|
|
82
|
+
- [ ] DNS and SSL configured
|
|
83
|
+
- [ ] CDN configured for static assets
|
|
84
|
+
- [ ] Logging and error reporting configured
|
|
85
|
+
- [ ] Health check endpoint exists and responds
|
|
86
|
+
|
|
87
|
+
### Documentation
|
|
88
|
+
|
|
89
|
+
- [ ] README updated with any new setup requirements
|
|
90
|
+
- [ ] API documentation current
|
|
91
|
+
- [ ] ADRs written for any architectural decisions
|
|
92
|
+
- [ ] Changelog updated
|
|
93
|
+
- [ ] User-facing documentation updated (if applicable)
|
|
94
|
+
|
|
95
|
+
## Feature Flag Strategy
|
|
96
|
+
|
|
97
|
+
Ship behind feature flags to decouple deployment from release:
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// Feature flag check
|
|
101
|
+
const flags = await getFeatureFlags(userId);
|
|
102
|
+
|
|
103
|
+
if (flags.taskSharing) {
|
|
104
|
+
// New feature: task sharing
|
|
105
|
+
return <TaskSharingPanel task={task} />;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Default: existing behavior
|
|
109
|
+
return null;
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Feature flag lifecycle:**
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
1. DEPLOY with flag OFF → Code is in production but inactive
|
|
116
|
+
2. ENABLE for team/beta → Internal testing in production environment
|
|
117
|
+
3. GRADUAL ROLLOUT → 5% → 25% → 50% → 100% of users
|
|
118
|
+
4. MONITOR at each stage → Watch error rates, performance, user feedback
|
|
119
|
+
5. CLEAN UP → Remove flag and dead code path after full rollout
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Rules:**
|
|
123
|
+
|
|
124
|
+
- Every feature flag has an owner and an expiration date
|
|
125
|
+
- Clean up flags within 2 weeks of full rollout
|
|
126
|
+
- Don't nest feature flags (creates exponential combinations)
|
|
127
|
+
- Test both flag states (on and off) in CI
|
|
128
|
+
|
|
129
|
+
## Staged Rollout
|
|
130
|
+
|
|
131
|
+
### The Rollout Sequence
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
1. DEPLOY to staging
|
|
135
|
+
└── Full test suite in staging environment
|
|
136
|
+
└── Manual smoke test of critical flows
|
|
137
|
+
|
|
138
|
+
2. DEPLOY to production (feature flag OFF)
|
|
139
|
+
└── Verify deployment succeeded (health check)
|
|
140
|
+
└── Check error monitoring (no new errors)
|
|
141
|
+
|
|
142
|
+
3. ENABLE for team (flag ON for internal users)
|
|
143
|
+
└── Team uses the feature in production
|
|
144
|
+
└── 24-hour monitoring window
|
|
145
|
+
|
|
146
|
+
4. CANARY rollout (flag ON for 5% of users)
|
|
147
|
+
└── Monitor error rates, latency, user behavior
|
|
148
|
+
└── Compare metrics: canary vs. baseline
|
|
149
|
+
└── 24-48 hour monitoring window
|
|
150
|
+
└── Advance only if all thresholds pass (see table below)
|
|
151
|
+
|
|
152
|
+
5. GRADUAL increase (25% -> 50% -> 100%)
|
|
153
|
+
└── Same monitoring at each step
|
|
154
|
+
└── Ability to roll back to previous percentage at any point
|
|
155
|
+
|
|
156
|
+
6. FULL rollout (flag ON for all users)
|
|
157
|
+
└── Monitor for 1 week
|
|
158
|
+
└── Clean up feature flag
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Rollout Decision Thresholds
|
|
162
|
+
|
|
163
|
+
Use these thresholds to decide whether to advance, hold, or roll back at each
|
|
164
|
+
stage:
|
|
165
|
+
|
|
166
|
+
| Metric | Advance (green) | Hold and investigate (yellow) | Roll back (red) |
|
|
167
|
+
| ---------------- | ---------------------- | ------------------------------- | ------------------------------- |
|
|
168
|
+
| Error rate | Within 10% of baseline | 10-100% above baseline | >2x baseline |
|
|
169
|
+
| P95 latency | Within 20% of baseline | 20-50% above baseline | >50% above baseline |
|
|
170
|
+
| Client JS errors | No new error types | New errors at <0.1% of sessions | New errors at >0.1% of sessions |
|
|
171
|
+
| Business metrics | Neutral or positive | Decline <5% (may be noise) | Decline >5% |
|
|
172
|
+
|
|
173
|
+
### When to Roll Back
|
|
174
|
+
|
|
175
|
+
Roll back immediately if:
|
|
176
|
+
|
|
177
|
+
- Error rate increases by more than 2x baseline
|
|
178
|
+
- P95 latency increases by more than 50%
|
|
179
|
+
- User-reported issues spike
|
|
180
|
+
- Data integrity issues detected
|
|
181
|
+
- Security vulnerability discovered
|
|
182
|
+
|
|
183
|
+
## Monitoring and Observability
|
|
184
|
+
|
|
185
|
+
### What to Monitor
|
|
186
|
+
|
|
187
|
+
```text
|
|
188
|
+
Application metrics:
|
|
189
|
+
├── Error rate (total and by endpoint)
|
|
190
|
+
├── Response time (p50, p95, p99)
|
|
191
|
+
├── Request volume
|
|
192
|
+
├── Active users
|
|
193
|
+
└── Key business metrics (conversion, engagement)
|
|
194
|
+
|
|
195
|
+
Infrastructure metrics:
|
|
196
|
+
├── CPU and memory utilization
|
|
197
|
+
├── Database connection pool usage
|
|
198
|
+
├── Disk space
|
|
199
|
+
├── Network latency
|
|
200
|
+
└── Queue depth (if applicable)
|
|
201
|
+
|
|
202
|
+
Client metrics:
|
|
203
|
+
├── Core Web Vitals (LCP, INP, CLS)
|
|
204
|
+
├── JavaScript errors
|
|
205
|
+
├── API error rates from client perspective
|
|
206
|
+
└── Page load time
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Error Reporting
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
// Set up error boundary with reporting
|
|
213
|
+
class ErrorBoundary extends React.Component {
|
|
214
|
+
componentDidCatch(error: Error, info: React.ErrorInfo) {
|
|
215
|
+
// Report to error tracking service
|
|
216
|
+
reportError(error, {
|
|
217
|
+
componentStack: info.componentStack,
|
|
218
|
+
userId: getCurrentUser()?.id,
|
|
219
|
+
page: window.location.pathname,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
render() {
|
|
224
|
+
if (this.state.hasError) {
|
|
225
|
+
return <ErrorFallback onRetry={() => this.setState({ hasError: false })} />;
|
|
226
|
+
}
|
|
227
|
+
return this.props.children;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Server-side error reporting
|
|
232
|
+
app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
|
|
233
|
+
reportError(err, {
|
|
234
|
+
method: req.method,
|
|
235
|
+
url: req.url,
|
|
236
|
+
userId: req.user?.id,
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// Don't expose internals to users
|
|
240
|
+
res.status(500).json({
|
|
241
|
+
error: { code: 'INTERNAL_ERROR', message: 'Something went wrong' },
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Post-Launch Verification
|
|
247
|
+
|
|
248
|
+
In the first hour after launch:
|
|
249
|
+
|
|
250
|
+
```text
|
|
251
|
+
1. Check health endpoint returns 200
|
|
252
|
+
2. Check error monitoring dashboard (no new error types)
|
|
253
|
+
3. Check latency dashboard (no regression)
|
|
254
|
+
4. Test the critical user flow manually
|
|
255
|
+
5. Verify logs are flowing and readable
|
|
256
|
+
6. Confirm rollback mechanism works (dry run if possible)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## Rollback Strategy
|
|
260
|
+
|
|
261
|
+
Every deployment needs a rollback plan before it happens:
|
|
262
|
+
|
|
263
|
+
```markdown
|
|
264
|
+
## Rollback Plan for [Feature/Release]
|
|
265
|
+
|
|
266
|
+
### Trigger Conditions
|
|
267
|
+
|
|
268
|
+
- Error rate > 2x baseline
|
|
269
|
+
- P95 latency > [X]ms
|
|
270
|
+
- User reports of [specific issue]
|
|
271
|
+
|
|
272
|
+
### Rollback Steps
|
|
273
|
+
|
|
274
|
+
1. Disable feature flag (if applicable) OR
|
|
275
|
+
1. Deploy previous version: `git revert <commit> && git push`
|
|
276
|
+
1. Verify rollback: health check, error monitoring
|
|
277
|
+
1. Communicate: notify team of rollback
|
|
278
|
+
|
|
279
|
+
### Database Considerations
|
|
280
|
+
|
|
281
|
+
- Migration [X] has a rollback: `npx prisma migrate rollback`
|
|
282
|
+
- Data inserted by new feature: [preserved / cleaned up]
|
|
283
|
+
|
|
284
|
+
### Time to Rollback
|
|
285
|
+
|
|
286
|
+
- Feature flag: < 1 minute
|
|
287
|
+
- Redeploy previous version: < 5 minutes
|
|
288
|
+
- Database rollback: < 15 minutes
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Common Rationalizations
|
|
292
|
+
|
|
293
|
+
| Rationalization | Reality |
|
|
294
|
+
| ----------------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
295
|
+
| "It works in staging, it'll work in production" | Production has different data, traffic patterns, and edge cases. Monitor after deploy. |
|
|
296
|
+
| "We don't need feature flags for this" | Every feature benefits from a kill switch. Even "simple" changes can break things. |
|
|
297
|
+
| "Monitoring is overhead" | Not having monitoring means you discover problems from user complaints instead of dashboards. |
|
|
298
|
+
| "We'll add monitoring later" | Add it before launch. You can't debug what you can't see. |
|
|
299
|
+
| "Rolling back is admitting failure" | Rolling back is responsible engineering. Shipping a broken feature is the failure. |
|
|
300
|
+
|
|
301
|
+
## Red Flags
|
|
302
|
+
|
|
303
|
+
- Deploying without a rollback plan
|
|
304
|
+
- No monitoring or error reporting in production
|
|
305
|
+
- Big-bang releases (everything at once, no staging)
|
|
306
|
+
- Feature flags with no expiration or owner
|
|
307
|
+
- No one monitoring the deploy for the first hour
|
|
308
|
+
- Production environment configuration done by memory, not code
|
|
309
|
+
- "It's Friday afternoon, let's ship it"
|
|
310
|
+
|
|
311
|
+
## Verification
|
|
312
|
+
|
|
313
|
+
Before deploying:
|
|
314
|
+
|
|
315
|
+
- [ ] Pre-launch checklist completed (all sections green)
|
|
316
|
+
- [ ] Feature flag configured (if applicable)
|
|
317
|
+
- [ ] Rollback plan documented
|
|
318
|
+
- [ ] Monitoring dashboards set up
|
|
319
|
+
- [ ] Team notified of deployment
|
|
320
|
+
|
|
321
|
+
After deploying:
|
|
322
|
+
|
|
323
|
+
- [ ] Health check returns 200
|
|
324
|
+
- [ ] Error rate is normal
|
|
325
|
+
- [ ] Latency is normal
|
|
326
|
+
- [ ] Critical user flow works
|
|
327
|
+
- [ ] Logs are flowing
|
|
328
|
+
- [ ] Rollback tested or verified ready
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-driven-development
|
|
3
|
+
description:
|
|
4
|
+
Creates specs before coding. Use when starting a new project, feature, or
|
|
5
|
+
significant change and no specification exists yet. Use when requirements are
|
|
6
|
+
unclear, ambiguous, or only exist as a vague idea.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Spec-Driven Development
|
|
10
|
+
|
|
11
|
+
## Policy Capsule
|
|
12
|
+
|
|
13
|
+
- Follow the gated workflow: **Specify → Plan → Tasks → Implement**. Never advance until the human has reviewed and approved the current phase.
|
|
14
|
+
- Surface assumptions explicitly **before** writing spec content: list them as "ASSUMPTIONS I'M MAKING" and ask the human to correct them. Never silently fill in ambiguous requirements.
|
|
15
|
+
- Reframe vague requirements (e.g. "make it faster") as specific, testable success criteria with numeric targets before accepting them as scope.
|
|
16
|
+
- Phase 1 specs MUST cover all six core areas: **Objective, Commands, Project Structure, Code Style, Testing Strategy, Boundaries**.
|
|
17
|
+
- The Boundaries section is three-tier and mandatory: **Always do** / **Ask first** / **Never do**. Database schema changes, dependency additions, and CI changes default to "Ask first".
|
|
18
|
+
- Provide commands as full executable strings (with flags), not just tool names; provide code style as a real snippet plus key conventions, not prose-only descriptions.
|
|
19
|
+
- Phase 3 tasks each have explicit acceptance criteria, a verification step (test/build/manual), declared file scope (≤ ~5 files), and dependency-ordered sequencing.
|
|
20
|
+
- Treat the spec as a **living document** — update it first when decisions or scope change, commit it to version control, and link the relevant section from each PR.
|
|
21
|
+
- Do not start implementation until the spec has been reviewed, success criteria are specific and testable, boundaries are defined, and the spec lives in the repo.
|
|
22
|
+
|
|
23
|
+
## Overview
|
|
24
|
+
|
|
25
|
+
Write a structured specification before writing any code. The spec is the shared
|
|
26
|
+
source of truth between you and the human engineer — it defines what we're
|
|
27
|
+
building, why, and how we'll know it's done. Code without a spec is guessing.
|
|
28
|
+
|
|
29
|
+
## When to Use
|
|
30
|
+
|
|
31
|
+
- Starting a new project or feature
|
|
32
|
+
- Requirements are ambiguous or incomplete
|
|
33
|
+
- The change touches multiple files or modules
|
|
34
|
+
- You're about to make an architectural decision
|
|
35
|
+
- The task would take more than 30 minutes to implement
|
|
36
|
+
|
|
37
|
+
**When NOT to use:** Single-line fixes, typo corrections, or changes where
|
|
38
|
+
requirements are unambiguous and self-contained.
|
|
39
|
+
|
|
40
|
+
## The Gated Workflow
|
|
41
|
+
|
|
42
|
+
Spec-driven development has four phases. Do not advance to the next phase until
|
|
43
|
+
the current one is validated.
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
SPECIFY ──→ PLAN ──→ TASKS ──→ IMPLEMENT
|
|
47
|
+
│ │ │ │
|
|
48
|
+
▼ ▼ ▼ ▼
|
|
49
|
+
Human Human Human Human
|
|
50
|
+
reviews reviews reviews reviews
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Phase 1: Specify
|
|
54
|
+
|
|
55
|
+
Start with a high-level vision. Ask the human clarifying questions until
|
|
56
|
+
requirements are concrete.
|
|
57
|
+
|
|
58
|
+
**Surface assumptions immediately.** Before writing any spec content, list what
|
|
59
|
+
you're assuming:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
ASSUMPTIONS I'M MAKING:
|
|
63
|
+
1. This is a web application (not native mobile)
|
|
64
|
+
2. Authentication uses session-based cookies (not JWT)
|
|
65
|
+
3. The database is PostgreSQL (based on existing Prisma schema)
|
|
66
|
+
4. We're targeting modern browsers only (no IE11)
|
|
67
|
+
→ Correct me now or I'll proceed with these.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Don't silently fill in ambiguous requirements. The spec's entire purpose is to
|
|
71
|
+
surface misunderstandings _before_ code gets written — assumptions are the most
|
|
72
|
+
dangerous form of misunderstanding.
|
|
73
|
+
|
|
74
|
+
**Write a spec document covering these six core areas:**
|
|
75
|
+
|
|
76
|
+
1. **Objective** — What are we building and why? Who is the user? What does
|
|
77
|
+
success look like?
|
|
78
|
+
|
|
79
|
+
2. **Commands** — Full executable commands with flags, not just tool names.
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
Build: npm run build
|
|
83
|
+
Test: npm test -- --coverage
|
|
84
|
+
Lint: npm run lint --fix
|
|
85
|
+
Dev: npm run dev
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
3. **Project Structure** — Where source code lives, where tests go, where docs
|
|
89
|
+
belong.
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
src/ → Application source code
|
|
93
|
+
src/components → React components
|
|
94
|
+
src/lib → Shared utilities
|
|
95
|
+
tests/ → Unit and integration tests
|
|
96
|
+
e2e/ → End-to-end tests
|
|
97
|
+
docs/ → Documentation
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
4. **Code Style** — One real code snippet showing your style beats three
|
|
101
|
+
paragraphs describing it. Include naming conventions, formatting rules, and
|
|
102
|
+
examples of good output.
|
|
103
|
+
|
|
104
|
+
5. **Testing Strategy** — What framework, where tests live, coverage
|
|
105
|
+
expectations, which test levels for which concerns.
|
|
106
|
+
|
|
107
|
+
6. **Boundaries** — Three-tier system:
|
|
108
|
+
- **Always do:** Run tests before commits, follow naming conventions,
|
|
109
|
+
validate inputs
|
|
110
|
+
- **Ask first:** Database schema changes, adding dependencies, changing CI
|
|
111
|
+
config
|
|
112
|
+
- **Never do:** Commit secrets, edit vendor directories, remove failing tests
|
|
113
|
+
without approval
|
|
114
|
+
|
|
115
|
+
**Spec template:**
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
# Spec: [Project/Feature Name]
|
|
119
|
+
|
|
120
|
+
## Objective
|
|
121
|
+
|
|
122
|
+
[What we're building and why. User stories or acceptance criteria.]
|
|
123
|
+
|
|
124
|
+
## Tech Stack
|
|
125
|
+
|
|
126
|
+
[Framework, language, key dependencies with versions]
|
|
127
|
+
|
|
128
|
+
## Commands
|
|
129
|
+
|
|
130
|
+
[Build, test, lint, dev — full commands]
|
|
131
|
+
|
|
132
|
+
## Project Structure
|
|
133
|
+
|
|
134
|
+
[Directory layout with descriptions]
|
|
135
|
+
|
|
136
|
+
## Code Style
|
|
137
|
+
|
|
138
|
+
[Example snippet + key conventions]
|
|
139
|
+
|
|
140
|
+
## Testing Strategy
|
|
141
|
+
|
|
142
|
+
[Framework, test locations, coverage requirements, test levels]
|
|
143
|
+
|
|
144
|
+
## Boundaries
|
|
145
|
+
|
|
146
|
+
- Always: [...]
|
|
147
|
+
- Ask first: [...]
|
|
148
|
+
- Never: [...]
|
|
149
|
+
|
|
150
|
+
## Success Criteria
|
|
151
|
+
|
|
152
|
+
[How we'll know this is done — specific, testable conditions]
|
|
153
|
+
|
|
154
|
+
## Open Questions
|
|
155
|
+
|
|
156
|
+
[Anything unresolved that needs human input]
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Reframe instructions as success criteria.** When receiving vague requirements,
|
|
160
|
+
translate them into concrete conditions:
|
|
161
|
+
|
|
162
|
+
```text
|
|
163
|
+
REQUIREMENT: "Make the dashboard faster"
|
|
164
|
+
|
|
165
|
+
REFRAMED SUCCESS CRITERIA:
|
|
166
|
+
- Dashboard LCP < 2.5s on 4G connection
|
|
167
|
+
- Initial data load completes in < 500ms
|
|
168
|
+
- No layout shift during load (CLS < 0.1)
|
|
169
|
+
→ Are these the right targets?
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
This lets you loop, retry, and problem-solve toward a clear goal rather than
|
|
173
|
+
guessing what "faster" means.
|
|
174
|
+
|
|
175
|
+
### Phase 2: Plan
|
|
176
|
+
|
|
177
|
+
With the validated spec, generate a technical implementation plan:
|
|
178
|
+
|
|
179
|
+
1. Identify the major components and their dependencies
|
|
180
|
+
2. Determine the implementation order (what must be built first)
|
|
181
|
+
3. Note risks and mitigation strategies
|
|
182
|
+
4. Identify what can be built in parallel vs. what must be sequential
|
|
183
|
+
5. Define verification checkpoints between phases
|
|
184
|
+
|
|
185
|
+
The plan should be reviewable: the human should be able to read it and say "yes,
|
|
186
|
+
that's the right approach" or "no, change X."
|
|
187
|
+
|
|
188
|
+
### Phase 3: Tasks
|
|
189
|
+
|
|
190
|
+
Break the plan into discrete, implementable tasks:
|
|
191
|
+
|
|
192
|
+
- Each task should be completable in a single focused session
|
|
193
|
+
- Each task has explicit acceptance criteria
|
|
194
|
+
- Each task includes a verification step (test, build, manual check)
|
|
195
|
+
- Tasks are ordered by dependency, not by perceived importance
|
|
196
|
+
- No task should require changing more than ~5 files
|
|
197
|
+
|
|
198
|
+
**Task template:**
|
|
199
|
+
|
|
200
|
+
```markdown
|
|
201
|
+
- [ ] Task: [Description]
|
|
202
|
+
- Acceptance: [What must be true when done]
|
|
203
|
+
- Verify: [How to confirm — test command, build, manual check]
|
|
204
|
+
- Files: [Which files will be touched]
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Phase 4: Implement
|
|
208
|
+
|
|
209
|
+
Execute tasks one at a time following `incremental-implementation` and
|
|
210
|
+
`test-driven-development` skills. Use `context-engineering` to load the right
|
|
211
|
+
spec sections and source files at each step rather than flooding the agent with
|
|
212
|
+
the entire spec.
|
|
213
|
+
|
|
214
|
+
## Keeping the Spec Alive
|
|
215
|
+
|
|
216
|
+
The spec is a living document, not a one-time artifact:
|
|
217
|
+
|
|
218
|
+
- **Update when decisions change** — If you discover the data model needs to
|
|
219
|
+
change, update the spec first, then implement.
|
|
220
|
+
- **Update when scope changes** — Features added or cut should be reflected in
|
|
221
|
+
the spec.
|
|
222
|
+
- **Commit the spec** — The spec belongs in version control alongside the code.
|
|
223
|
+
- **Reference the spec in PRs** — Link back to the spec section that each PR
|
|
224
|
+
implements.
|
|
225
|
+
|
|
226
|
+
## Common Rationalizations
|
|
227
|
+
|
|
228
|
+
| Rationalization | Reality |
|
|
229
|
+
| ------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
230
|
+
| "This is simple, I don't need a spec" | Simple tasks don't need _long_ specs, but they still need acceptance criteria. A two-line spec is fine. |
|
|
231
|
+
| "I'll write the spec after I code it" | That's documentation, not specification. The spec's value is in forcing clarity _before_ code. |
|
|
232
|
+
| "The spec will slow us down" | A 15-minute spec prevents hours of rework. Waterfall in 15 minutes beats debugging in 15 hours. |
|
|
233
|
+
| "Requirements will change anyway" | That's why the spec is a living document. An outdated spec is still better than no spec. |
|
|
234
|
+
| "The user knows what they want" | Even clear requests have implicit assumptions. The spec surfaces those assumptions. |
|
|
235
|
+
|
|
236
|
+
## Red Flags
|
|
237
|
+
|
|
238
|
+
- Starting to write code without any written requirements
|
|
239
|
+
- Asking "should I just start building?" before clarifying what "done" means
|
|
240
|
+
- Implementing features not mentioned in any spec or task list
|
|
241
|
+
- Making architectural decisions without documenting them
|
|
242
|
+
- Skipping the spec because "it's obvious what to build"
|
|
243
|
+
|
|
244
|
+
## Verification
|
|
245
|
+
|
|
246
|
+
Before proceeding to implementation, confirm:
|
|
247
|
+
|
|
248
|
+
- [ ] The spec covers all six core areas
|
|
249
|
+
- [ ] The human has reviewed and approved the spec
|
|
250
|
+
- [ ] Success criteria are specific and testable
|
|
251
|
+
- [ ] Boundaries (Always/Ask First/Never) are defined
|
|
252
|
+
- [ ] The spec is saved to a file in the repository
|