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,370 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: >-
|
|
3
|
+
Perform a comprehensive code review of a change set scoped to either a Story
|
|
4
|
+
branch or an Epic branch
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Code Review (helper)
|
|
8
|
+
|
|
9
|
+
> **Helper module.** Not a slash command. Invoked automatically from
|
|
10
|
+
> `/story-deliver` (Story scope) and `/epic-deliver` Phase 5 (Epic scope).
|
|
11
|
+
> To run a review directly, invoke the parent workflow — operators do not
|
|
12
|
+
> call this helper by hand.
|
|
13
|
+
|
|
14
|
+
This helper performs a comprehensive code review of a change set before it
|
|
15
|
+
is merged upstream. It runs in two scopes:
|
|
16
|
+
|
|
17
|
+
- **Story scope** — reviews the diff between a Story branch and its parent
|
|
18
|
+
Epic branch, before `story-close.js` merges the Story into the Epic.
|
|
19
|
+
- **Epic scope** — reviews the cumulative diff between an Epic branch and
|
|
20
|
+
`main`, before `/epic-deliver` opens the integration pull request.
|
|
21
|
+
|
|
22
|
+
> **Persona**: `architect` · **Skills**: `core/code-review-and-quality`,
|
|
23
|
+
> `core/security-and-hardening`
|
|
24
|
+
|
|
25
|
+
## Argument contract
|
|
26
|
+
|
|
27
|
+
The caller passes the following arguments (Story workflows pass
|
|
28
|
+
`scope: story`; Epic workflows pass `scope: epic`):
|
|
29
|
+
|
|
30
|
+
| Argument | Type | Required | Meaning |
|
|
31
|
+
| ----------- | ------------------------------------- | -------- | ------------------------------------------------------------------------------------------------ |
|
|
32
|
+
| `scope` | `"story"` \| `"epic"` | yes | Selects the integration-pillar diff base and the structured-comment target ticket. |
|
|
33
|
+
| `ticketId` | integer | yes | GitHub issue number of the Story (when `scope === 'story'`) or Epic (when `scope === 'epic'`). |
|
|
34
|
+
| `baseRef` | string (git ref) | yes | The diff base. Story scope: `epic/<epicId>`. Epic scope: `main` (or `project.baseBranch`). |
|
|
35
|
+
| `headRef` | string (git ref) | yes | The branch tip under review. Story scope: `story-<storyId>`. Epic scope: `epic/<epicId>`. |
|
|
36
|
+
| `depth` | `"light"` \| `"standard"` \| `"deep"` | no | Risk-derived review thoroughness lever. Absent → `standard`. See **Review depth** below. |
|
|
37
|
+
|
|
38
|
+
All scope-dependent behavior in this helper branches off the first four
|
|
39
|
+
arguments. Do not hard-code branch names or ticket types — read them from
|
|
40
|
+
the argument envelope.
|
|
41
|
+
|
|
42
|
+
### Review depth (`depth`)
|
|
43
|
+
|
|
44
|
+
`depth` is the risk-derived thoroughness lever introduced by Story #3876 and
|
|
45
|
+
made a live consumed signal end to end by Story #3937. The Epic caller
|
|
46
|
+
(`/epic-deliver` Phase 5) resolves it from the Epic's judged `planningRisk`
|
|
47
|
+
envelope via
|
|
48
|
+
[`resolveReviewDepthForEpic`](../../scripts/lib/orchestration/code-review.js)
|
|
49
|
+
(`high` → `deep`, `low` → `light`, everything else — including a missing
|
|
50
|
+
`epic-plan-state` checkpoint — → `standard`) and passes it in this envelope.
|
|
51
|
+
`runCodeReview` forwards `depth` to every provider's `runReview` input.
|
|
52
|
+
|
|
53
|
+
It is an **input-only** signal: it changes *how thorough* the review is, never
|
|
54
|
+
the findings envelope (`{ status, severity, posted, report, halted,
|
|
55
|
+
blockerReason }`) nor the posted `code-review` structured-comment body. An
|
|
56
|
+
absent or malformed `depth` is treated as `standard`, so an Epic that skipped
|
|
57
|
+
`/epic-plan` still gets a passing review with no new failure mode.
|
|
58
|
+
|
|
59
|
+
How each tier changes the review protocol:
|
|
60
|
+
|
|
61
|
+
- **`light`** — single-pass review focused on Pillar 1 (Spec Adherence) over
|
|
62
|
+
the changed surface; Pillars 2–3 (Integration, Documentation Integrity) are
|
|
63
|
+
reduced to a quick scan for obvious breakage rather than exhaustively
|
|
64
|
+
re-walked.
|
|
65
|
+
- **`standard`** — the default: all three pillars at today's depth.
|
|
66
|
+
- **`deep`** — all three pillars at full depth, **plus** an explicit second
|
|
67
|
+
adversarial pass over the diff hunting for integration regressions and
|
|
68
|
+
security-relevant edges before findings are finalized.
|
|
69
|
+
|
|
70
|
+
The LLM-backed review providers (codex, security-review, ultrareview) render
|
|
71
|
+
the resolved `depth` into the prompt/instructions they emit so the underlying
|
|
72
|
+
model actually changes thoroughness. The native provider deliberately ignores
|
|
73
|
+
`depth` — its mechanical lint + maintainability sweep already scales with diff
|
|
74
|
+
size, and there is no "review harder" knob a deterministic scorer can turn (its
|
|
75
|
+
module JSDoc documents this). When you (the host LLM) perform the Step 2 pillar
|
|
76
|
+
review yourself, honor the `depth` semantics above directly.
|
|
77
|
+
|
|
78
|
+
## Step 0 — Resolve Context
|
|
79
|
+
|
|
80
|
+
1. Resolve `[TICKET_ID]` from `ticketId` (Story or Epic depending on `scope`).
|
|
81
|
+
2. Resolve `[BASE_REF]` from `baseRef` and `[HEAD_REF]` from `headRef`.
|
|
82
|
+
3. Fetch the `[TICKET_ID]` ticket and identify linked context tickets:
|
|
83
|
+
- **Story scope** — read the parent Epic from the Story body, then load
|
|
84
|
+
the Epic's `context::prd` (PRD) and `context::tech-spec` (Tech Spec).
|
|
85
|
+
- **Epic scope** — load the Epic's `context::prd` (PRD) and
|
|
86
|
+
`context::tech-spec` (Tech Spec) directly from the Epic body.
|
|
87
|
+
4. Read both the PRD and Tech Spec fully to understand the intended scope,
|
|
88
|
+
architectural decisions, and acceptance criteria.
|
|
89
|
+
|
|
90
|
+
## Step 1 — Automated Audit (Pre-Review)
|
|
91
|
+
|
|
92
|
+
The caller invokes the in-process code-review pipeline
|
|
93
|
+
(`runCodeReview` in `.agents/scripts/lib/orchestration/code-review.js`)
|
|
94
|
+
with the resolved `{ scope, ticketId, baseRef, headRef, depth }` envelope
|
|
95
|
+
(`depth` defaults to `standard` when the caller omits it). The
|
|
96
|
+
pluggable `ReviewProvider` adapter chain (Epic #2815) runs against the
|
|
97
|
+
diff `baseRef..headRef`, with the LLM-backed providers honoring `depth`
|
|
98
|
+
(see **Review depth** above), and posts a structured summary to `[TICKET_ID]`.
|
|
99
|
+
The pipeline will:
|
|
100
|
+
|
|
101
|
+
- Generate a `git diff baseRef..headRef`.
|
|
102
|
+
- Calculate maintainability scores for all new/modified files.
|
|
103
|
+
- Run a focused lint check on the change set.
|
|
104
|
+
- Post a structured summary report to the `[TICKET_ID]` issue.
|
|
105
|
+
|
|
106
|
+
## Step 2 — Review Pillars
|
|
107
|
+
|
|
108
|
+
For each changed file, execute a strict review against three pillars. The
|
|
109
|
+
middle pillar (**Integration Review**) deliberately defers the security /
|
|
110
|
+
performance / quality / coverage sweeps to the change-set-scoped audits
|
|
111
|
+
that already ran upstream — re-walking them here is duplication, not
|
|
112
|
+
defense-in-depth.
|
|
113
|
+
|
|
114
|
+
**Apply the `depth` lever** (see **Review depth** above) to how hard you walk
|
|
115
|
+
these pillars: at `light`, focus on Pillar 1 and reduce Pillars 2–3 to a quick
|
|
116
|
+
scan for obvious breakage; at `standard`, cover all three at today's depth; at
|
|
117
|
+
`deep`, cover all three at full depth and then make a second adversarial pass
|
|
118
|
+
over the diff hunting for integration regressions and security-relevant edges
|
|
119
|
+
before finalizing findings.
|
|
120
|
+
|
|
121
|
+
### Pillar 1: Spec Adherence
|
|
122
|
+
|
|
123
|
+
Does the implementation match the PRD requirements and Tech Spec architecture?
|
|
124
|
+
|
|
125
|
+
- Compare each completed Story/Task against its stated acceptance criteria.
|
|
126
|
+
- Flag any undocumented deviations, missing features, or scope creep.
|
|
127
|
+
- Verify API contracts, data models, and interface boundaries match the Tech
|
|
128
|
+
Spec.
|
|
129
|
+
|
|
130
|
+
### Pillar 2: Integration Review
|
|
131
|
+
|
|
132
|
+
The integration view depends on `scope`. The diff under review is always
|
|
133
|
+
`baseRef..headRef`, but the **set of upstream audit signals** to integrate
|
|
134
|
+
against differs:
|
|
135
|
+
|
|
136
|
+
- **`scope: story`** — the diff is `epic/<epicId>..story-<storyId>` (i.e.
|
|
137
|
+
one Story's contribution to the Epic). There is typically no
|
|
138
|
+
`audit-results` comment on the Story; Phase 4 epic-level audits have not
|
|
139
|
+
yet run for this change set. The integration view here focuses on
|
|
140
|
+
cross-Task ripple within the Story and contract drift against the Epic
|
|
141
|
+
branch tip. Look for:
|
|
142
|
+
- Cross-Task contract drift inside the Story (one Task's API change vs.
|
|
143
|
+
another Task's caller in the same branch).
|
|
144
|
+
- Shared-module ripple effects from this Story onto siblings already
|
|
145
|
+
merged into `epic/<epicId>`.
|
|
146
|
+
- Spec deviations that the per-Task commits papered over.
|
|
147
|
+
|
|
148
|
+
- **`scope: epic`** — the diff is `main..epic/<epicId>` (the cumulative
|
|
149
|
+
Epic change set). Read the **`audit-results` structured comment** posted
|
|
150
|
+
on the Epic ticket by the [`epic-audit.md`](epic-audit.md) helper in
|
|
151
|
+
Phase 4. That comment is the authoritative source of security, privacy,
|
|
152
|
+
performance, code-quality, and test-coverage findings for this change
|
|
153
|
+
set — they were produced by the change-set-aware lens selector and
|
|
154
|
+
per-lens audit workflows under `.agents/workflows/audit-*.md`. Do **not**
|
|
155
|
+
re-derive those findings inline here.
|
|
156
|
+
|
|
157
|
+
The integration view at epic scope is what the per-lens audits cannot
|
|
158
|
+
produce because each lens runs in isolation:
|
|
159
|
+
|
|
160
|
+
- Cross-reference 🔴 / 🟠 audit findings against the spec deviations
|
|
161
|
+
flagged in Pillar 1 — a finding that traces back to a deliberate
|
|
162
|
+
Tech-Spec decision is different from one that traces back to an
|
|
163
|
+
oversight.
|
|
164
|
+
- Look for cross-cutting concerns no single lens owns: contract drift
|
|
165
|
+
between Stories, shared-module ripple effects, boundary changes that
|
|
166
|
+
thread security and performance implications together.
|
|
167
|
+
- Note any audit finding that the operator's remediation flow should
|
|
168
|
+
bundle (e.g. one refactor closes findings from multiple lenses).
|
|
169
|
+
|
|
170
|
+
If the Epic has no `audit-results` comment (docs-only Epic, or Phase 4
|
|
171
|
+
was skipped via `--skip-epic-audit`), record that explicitly in the
|
|
172
|
+
findings report and proceed — there is nothing to integrate.
|
|
173
|
+
|
|
174
|
+
### Pillar 3: Documentation Integrity
|
|
175
|
+
|
|
176
|
+
Verify documentation stays synchronized with code:
|
|
177
|
+
|
|
178
|
+
- All new public APIs have JSDoc/TSDoc comments.
|
|
179
|
+
- Updated interfaces have updated documentation.
|
|
180
|
+
- README and CHANGELOG reflect the changes if applicable.
|
|
181
|
+
- Inline comments explain *why*, not *what*.
|
|
182
|
+
|
|
183
|
+
## Step 3 — Maintainability Ratchet
|
|
184
|
+
|
|
185
|
+
Verify that no file's maintainability score has decreased below the project
|
|
186
|
+
baseline. The unified baselines gate enforces this floor:
|
|
187
|
+
|
|
188
|
+
```powershell
|
|
189
|
+
node .agents/scripts/check-baselines.js --format text
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
If this check fails, you MUST refactor the offending files to meet or exceed the
|
|
193
|
+
prior baseline before merging.
|
|
194
|
+
|
|
195
|
+
## Step 4 — Produce Findings Report
|
|
196
|
+
|
|
197
|
+
Findings are **persisted as a `code-review` structured comment on the
|
|
198
|
+
`[TICKET_ID]` issue** by `runCodeReview`. The target ticket is the Story
|
|
199
|
+
when `scope === 'story'` and the Epic when `scope === 'epic'`. The comment
|
|
200
|
+
is idempotent — re-runs replace the prior one — and its body includes
|
|
201
|
+
severity-tier counts plus the full findings list so downstream workflows
|
|
202
|
+
(notably the retro helper) can summarise blockers/high findings without
|
|
203
|
+
re-running the review.
|
|
204
|
+
|
|
205
|
+
Output a consolidated findings report grouped by severity:
|
|
206
|
+
|
|
207
|
+
1. **🔴 Critical Blocker** — Must be fixed before merge (security
|
|
208
|
+
vulnerabilities, data loss risks, broken functionality).
|
|
209
|
+
2. **🟠 High Risk** — Should be fixed before merge (performance regressions,
|
|
210
|
+
missing auth checks, spec deviations).
|
|
211
|
+
3. **🟡 Medium Risk** — Should be addressed but not blocking (code quality
|
|
212
|
+
issues, missing tests for edge cases).
|
|
213
|
+
4. **🟢 Suggestion** — Nice-to-have improvements (style, naming, minor
|
|
214
|
+
optimizations).
|
|
215
|
+
|
|
216
|
+
For every finding, provide:
|
|
217
|
+
|
|
218
|
+
- **File path** and **line number(s)**
|
|
219
|
+
- **Pillar** (which review pillar it failed)
|
|
220
|
+
- **Description** of the issue
|
|
221
|
+
- **Recommended fix** with a concrete code suggestion
|
|
222
|
+
- **Agent Prompt** — a self-contained, copy-pasteable instruction the
|
|
223
|
+
operator can hand verbatim to a fresh sub-agent to remediate this
|
|
224
|
+
single finding. The prompt MUST name the file path,
|
|
225
|
+
the specific change to make, and the acceptance check that proves the
|
|
226
|
+
fix worked. Keep it tight (≤ 5 sentences); the sub-agent will read the
|
|
227
|
+
surrounding code itself.
|
|
228
|
+
|
|
229
|
+
## Step 4.5 — Focused-fix Routing (host LLM, no automated loop)
|
|
230
|
+
|
|
231
|
+
There is **no runtime auto-fix function** at this phase. The host LLM is
|
|
232
|
+
the executor: for each 🔴 / 🟠 finding from Step 4, decide between two
|
|
233
|
+
paths and keep the `code-review` structured comment authoritative for
|
|
234
|
+
anything not fixed in-place.
|
|
235
|
+
|
|
236
|
+
1. **Apply a focused fix on `[HEAD_REF]`.** Permitted only when the
|
|
237
|
+
finding is unambiguously *fixable* (clean remediation, no scope
|
|
238
|
+
creep, no spec deviation, no secret exposure):
|
|
239
|
+
- Call [`assert-branch.js`](../../scripts/assert-branch.js) with
|
|
240
|
+
`--expected [HEAD_REF]` before touching the working tree.
|
|
241
|
+
- Stage explicit paths only (never `git add .`).
|
|
242
|
+
- Make one focused conventional commit per finding
|
|
243
|
+
(`fix(<scope>): <description> (review finding)`).
|
|
244
|
+
- Re-run a targeted rescan: invoke `runCodeReview` (or the relevant
|
|
245
|
+
diff-scoped subset of pillar checks) on the touched files and
|
|
246
|
+
confirm the finding is gone.
|
|
247
|
+
- Run validation appropriate to the change (`npm run lint` plus the
|
|
248
|
+
relevant `npm test` slice).
|
|
249
|
+
- If the rescan still surfaces the same finding, or validation
|
|
250
|
+
regresses, **stop fixing** — leave the finding on the `code-review`
|
|
251
|
+
structured comment for the operator to triage in Step 5.
|
|
252
|
+
2. **Leave the finding on the structured comment for Step 5.** Required
|
|
253
|
+
when the finding falls into any of the following classes:
|
|
254
|
+
- `spec-deviation` — the change diverges from the PRD/Tech Spec.
|
|
255
|
+
- `secrets` — credentials, tokens, or PII surfaced in the diff.
|
|
256
|
+
- `test-deletion` — coverage was removed without an explicit
|
|
257
|
+
decision in the spec.
|
|
258
|
+
- `scope-exceeded` — the remediation would touch more files than
|
|
259
|
+
the review scope warrants.
|
|
260
|
+
- Any finding the host LLM cannot remediate after one focused
|
|
261
|
+
attempt (the equivalent of the prior loop's
|
|
262
|
+
`validation-regression` / `thrash-detected` exits).
|
|
263
|
+
|
|
264
|
+
Do not invent a programmatic retry budget. The host LLM applies *at most
|
|
265
|
+
one* focused-fix attempt per finding before escalating to the operator.
|
|
266
|
+
Escalated findings remain on the `code-review` structured comment with
|
|
267
|
+
their reason recorded, so Step 5 (and downstream consumers) see exactly
|
|
268
|
+
why each one was not auto-remediated.
|
|
269
|
+
|
|
270
|
+
## Step 4.6 — Cross-phase re-check trigger
|
|
271
|
+
|
|
272
|
+
After the focused-fix routing in Step 4.5 completes, any host-LLM-applied
|
|
273
|
+
fix commits have modified files on `[HEAD_REF]` that the Phase 4 audit
|
|
274
|
+
lenses already walked. Some of those edits may overlap the `filePatterns`
|
|
275
|
+
of one or more lenses (e.g. a fix landing in `**/auth/*.js` overlaps the
|
|
276
|
+
`audit-security` lens). When that happens, the prior `audit-results`
|
|
277
|
+
structured comment is **stale for the overlapping lenses only** — the
|
|
278
|
+
non-overlapping findings remain authoritative and MUST NOT be
|
|
279
|
+
re-derived.
|
|
280
|
+
|
|
281
|
+
> **Scope note.** This cross-phase re-check applies only when
|
|
282
|
+
> `scope === 'epic'`. Story-scope reviews run before Phase 4 epic audits
|
|
283
|
+
> exist, so there is no `audit-results` comment to invalidate; skip this
|
|
284
|
+
> step entirely for `scope === 'story'`.
|
|
285
|
+
|
|
286
|
+
Invoke the re-check selector with the cumulative set of paths touched by
|
|
287
|
+
the focused-fix commits:
|
|
288
|
+
|
|
289
|
+
```powershell
|
|
290
|
+
node .agents/scripts/epic-audit-recheck.js \
|
|
291
|
+
--epic [TICKET_ID] --files <comma-separated-touched-paths>
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
For large touched-file lists, pass `@<file>` (where `<file>` is a
|
|
295
|
+
newline-delimited list written to `temp/`) to avoid shell argument-length
|
|
296
|
+
limits. The CLI emits a JSON envelope of the shape
|
|
297
|
+
`{ selectedAudits: [...], context: { ... } }` restricted to lenses whose
|
|
298
|
+
`filePatterns` overlap the input file list. An empty `selectedAudits`
|
|
299
|
+
array means no overlap — there is nothing to re-run and this step is a
|
|
300
|
+
no-op.
|
|
301
|
+
|
|
302
|
+
When `selectedAudits` is non-empty:
|
|
303
|
+
|
|
304
|
+
1. Re-invoke each listed lens prompt under
|
|
305
|
+
[`../audit-*.md`](../) the same way Phase 4's `epic-audit.md` does —
|
|
306
|
+
one lens at a time, against the current `[HEAD_REF]` tip.
|
|
307
|
+
2. **Append** a `## Cross-phase re-check` section to the **existing**
|
|
308
|
+
`audit-results` structured comment on the Epic ticket. Do **not** post
|
|
309
|
+
a new comment; the comment is idempotent and downstream consumers
|
|
310
|
+
(the code-review trim, `/epic-deliver` Pillar 2, the retro helper)
|
|
311
|
+
read it once. The append carries the re-checked lens names, the new
|
|
312
|
+
findings (if any), and the focused-fix commit SHAs that triggered the
|
|
313
|
+
re-run, so reviewers can trace each finding back to the change set
|
|
314
|
+
that produced it.
|
|
315
|
+
3. If the re-check surfaces fresh 🔴 / 🟠 findings, route them back
|
|
316
|
+
through Step 4.5's focused-fix routing. Findings that already
|
|
317
|
+
received a focused-fix attempt in the first pass do not get a fresh
|
|
318
|
+
attempt when the cross-phase re-check resurfaces an adjacent one —
|
|
319
|
+
leave them on the `code-review` comment for the operator.
|
|
320
|
+
|
|
321
|
+
If `selectedAudits` is empty, skip silently and proceed to Step 5. The
|
|
322
|
+
re-check trigger is **read-only signal** — it never mutates the Epic
|
|
323
|
+
branch on its own; mutations only happen if the re-invoked lenses
|
|
324
|
+
surface findings that the host LLM then converts into commits through
|
|
325
|
+
the same focused-fix routing as Step 4.5.
|
|
326
|
+
|
|
327
|
+
## Step 5 — Remediation
|
|
328
|
+
|
|
329
|
+
If the operator instructs you to fix any findings:
|
|
330
|
+
|
|
331
|
+
1. Implement the fixes on the `[HEAD_REF]` branch.
|
|
332
|
+
2. Commit each logical fix atomically:
|
|
333
|
+
|
|
334
|
+
```powershell
|
|
335
|
+
# Guard: confirm we're on the correct branch before committing.
|
|
336
|
+
node .agents/scripts/assert-branch.js --expected [HEAD_REF]
|
|
337
|
+
|
|
338
|
+
# Stage explicit paths — never `git add .` on a shared tree.
|
|
339
|
+
git add <path/one> <path/two>
|
|
340
|
+
# or, for tracked edits only:
|
|
341
|
+
# git add -u
|
|
342
|
+
|
|
343
|
+
git commit -m "fix(<scope>): <description> (review finding)"
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
3. Re-run the project's validation suite to confirm no regressions:
|
|
347
|
+
|
|
348
|
+
```powershell
|
|
349
|
+
npm run lint
|
|
350
|
+
npm test
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
If no fixes are requested, this workflow is complete. The operator may proceed
|
|
354
|
+
to the next phase of the parent workflow.
|
|
355
|
+
|
|
356
|
+
## Constraint
|
|
357
|
+
|
|
358
|
+
- **Always** diff `baseRef..headRef`. Never substitute a different base —
|
|
359
|
+
the scope is set by the caller, and reviewing against the wrong base
|
|
360
|
+
produces either a hollow review (too small a diff) or noise (too large a
|
|
361
|
+
diff that includes unrelated history).
|
|
362
|
+
- **Always** read the PRD and Tech Spec before reviewing code. Findings without
|
|
363
|
+
spec context are noise.
|
|
364
|
+
- **Never** implement fixes unless the operator explicitly requests it. The
|
|
365
|
+
default mode is read-only audit.
|
|
366
|
+
- **Never** mark findings as Critical Blocker unless they represent a genuine
|
|
367
|
+
security risk, data integrity issue, or functional breakage. Overuse of
|
|
368
|
+
Critical severity creates alert fatigue.
|
|
369
|
+
- **Always** provide actionable, concrete fix suggestions — not vague advice
|
|
370
|
+
like "consider improving this."
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: >-
|
|
3
|
+
Helper doc for the diagnose.js ad-hoc viewer. Runs the self-healing checks
|
|
4
|
+
registry in read-only mode and prints findings. Not a slash command —
|
|
5
|
+
invoke the script directly when needed.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# diagnose viewer (helper)
|
|
9
|
+
|
|
10
|
+
> **Helper, not a slash command.** Files under `workflows/helpers/` are not
|
|
11
|
+
> projected into the mandrel plugin command tree. The same `lib/checks/` registry runs
|
|
12
|
+
> automatically as preflight inside `/epic-deliver`, `/story-close`, and
|
|
13
|
+
> `npm test` — this viewer exists only for ad-hoc inspection. Invoke the
|
|
14
|
+
> backing script directly: `node .agents/scripts/diagnose.js [args]`.
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
`diagnose.js` runs the checks registry assembled under
|
|
19
|
+
`.agents/scripts/lib/checks/` in read-only mode and surfaces every
|
|
20
|
+
finding declared on the requested scope. It is the operator-facing read
|
|
21
|
+
of the same registry that preflight guards (`epic-deliver`,
|
|
22
|
+
`story-close`), the retro hook, and `npm test` consult — but with
|
|
23
|
+
`autoFix: false` always, no remote GitHub writes, and no commits.
|
|
24
|
+
|
|
25
|
+
It is distinct from `diagnose-friction.js` (the per-Task signal capture
|
|
26
|
+
that wraps a shell command); this viewer is a stateless probe.
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
node .agents/scripts/diagnose.js [--scope <scope>] [--fail-on-blocker] [--json]
|
|
30
|
+
→ assembleState({ scope })
|
|
31
|
+
→ runChecks({ scope, autoFix: false, state })
|
|
32
|
+
→ render table (default) OR single-line JSON (--json)
|
|
33
|
+
→ exit 0 (or 2 with --fail-on-blocker when a blocker is present)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Flags
|
|
37
|
+
|
|
38
|
+
| Flag | Default | Description |
|
|
39
|
+
| -------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| `--scope <s>` | `diagnose` | Filter checks by declared scope. Use `all` to disable the filter and run every registered check. Other surface scopes (`epic-deliver`, `story-close`, `retro`) are accepted verbatim — checks whose `scope[]` includes the value will fire. |
|
|
41
|
+
| `--fail-on-blocker` | off | Exit `2` when at least one finding has `severity === 'blocker'`. Without this flag the command always exits `0` even when blockers are present (it is by default an advisory read). |
|
|
42
|
+
| `--json` | off | Emit a single line of JSON shaped as `{ scope, findings: [...] }` to stdout in place of the human table. Findings preserve the registry's `Finding` shape (id, severity, scope, summary, fixCommand, detail?, autoCorrectable). |
|
|
43
|
+
|
|
44
|
+
## Exit codes
|
|
45
|
+
|
|
46
|
+
| Code | Meaning |
|
|
47
|
+
| ---- | --------------------------------------------------------------------------------------------- |
|
|
48
|
+
| `0` | No blockers, OR `--fail-on-blocker` was not set. The default "advisory read" exit. |
|
|
49
|
+
| `2` | `--fail-on-blocker` was set AND at least one finding has `severity === 'blocker'`. |
|
|
50
|
+
| `1` | Internal error (registry load failure, bad flag, etc.). A missing check directory is NOT an error — it returns an empty findings set with exit `0`. |
|
|
51
|
+
|
|
52
|
+
## Examples
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Default advisory read against the `diagnose` scope.
|
|
56
|
+
node .agents/scripts/diagnose.js
|
|
57
|
+
|
|
58
|
+
# Run every registered check and emit JSON for downstream consumers.
|
|
59
|
+
node .agents/scripts/diagnose.js --scope all --json
|
|
60
|
+
|
|
61
|
+
# Use inside a preflight script that should block on a blocker.
|
|
62
|
+
node .agents/scripts/diagnose.js --scope story-close --fail-on-blocker
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Output shape
|
|
66
|
+
|
|
67
|
+
### Table (default)
|
|
68
|
+
|
|
69
|
+
A fixed-width plain-text table with five columns: `id`, `severity`,
|
|
70
|
+
`scope`, `summary`, `fix command`. The empty case still prints the header
|
|
71
|
+
plus a `(no findings)` marker so the output shape is stable across clean
|
|
72
|
+
and dirty states.
|
|
73
|
+
|
|
74
|
+
### JSON (`--json`)
|
|
75
|
+
|
|
76
|
+
Exactly one line. Schema:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"scope": "diagnose",
|
|
81
|
+
"findings": [
|
|
82
|
+
{
|
|
83
|
+
"id": "stale-origin-epic",
|
|
84
|
+
"severity": "blocker",
|
|
85
|
+
"scope": "story-close",
|
|
86
|
+
"summary": "Local epic/<id> is ahead of origin/epic/<id>",
|
|
87
|
+
"detail": "Push the epic branch before re-running story-close.",
|
|
88
|
+
"fixCommand": "git push origin epic/<id>",
|
|
89
|
+
"autoCorrectable": false
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The `findings` array is empty when no check fires on the requested scope.
|
|
96
|
+
Downstream consumers can rely on the single-line contract for `jq`
|
|
97
|
+
pipelines and CI-step parsing.
|
|
98
|
+
|
|
99
|
+
## Constraints
|
|
100
|
+
|
|
101
|
+
- **Never** auto-fixes. `diagnose.js` calls
|
|
102
|
+
`runChecks({ autoFix: false })` unconditionally; even checks with
|
|
103
|
+
`autoCorrect: 'auto'` print their `fixCommand` rather than execute it.
|
|
104
|
+
- **Never** writes to GitHub state (no label transitions, no comments).
|
|
105
|
+
The registry's `refuse-and-print` and retro read-only invariants are
|
|
106
|
+
preserved.
|
|
107
|
+
- **Never** mutates the working tree. State assembly is read-only
|
|
108
|
+
(`existsSync`, `git rev-parse`, `process.env` presence checks).
|
|
109
|
+
|
|
110
|
+
## See also
|
|
111
|
+
|
|
112
|
+
- [`.agents/README.md` § Self-Healing Checks](../../README.md#self-healing-checks)
|
|
113
|
+
— the canonical contract every check module must satisfy.
|
|
114
|
+
- [`.agents/scripts/diagnose.js`](../../scripts/diagnose.js) — the CLI
|
|
115
|
+
implementation backing this helper.
|
|
116
|
+
- [`tests/diagnose-output.test.js`](../../../tests/diagnose-output.test.js)
|
|
117
|
+
— pinned output and exit-code contracts.
|