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,312 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Audit architectural boundaries, module coupling, and layering violations; emit a structured findings report keyed to High/Medium/Low severity.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Architecture & Clean Code Audit
|
|
6
|
+
|
|
7
|
+
## Role
|
|
8
|
+
|
|
9
|
+
Staff Software Engineer & Architecture Reviewer
|
|
10
|
+
|
|
11
|
+
## Context & Objective
|
|
12
|
+
|
|
13
|
+
You are performing a comprehensive, read-only architectural and clean-code
|
|
14
|
+
review of this codebase. Your goal is to identify areas of unnecessary
|
|
15
|
+
abstraction, premature optimization, high cognitive load, and over-engineering.
|
|
16
|
+
You must prioritize maintainability and readability without altering any
|
|
17
|
+
existing external APIs or business logic.
|
|
18
|
+
|
|
19
|
+
## Execution strategy (dual-path)
|
|
20
|
+
|
|
21
|
+
This lens runs along one of two execution paths. Both emit the **identical**
|
|
22
|
+
report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
|
|
23
|
+
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
24
|
+
|
|
25
|
+
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
26
|
+
[dynamic workflows](https://code.claude.com/docs/en/workflows) are
|
|
27
|
+
available, the saved project workflow
|
|
28
|
+
`.claude/workflows/audit-architecture.workflow.js` fans the dimensions below
|
|
29
|
+
out as parallel read-only subagents, runs an **adversarial cross-check**
|
|
30
|
+
stage (an independent agent reviews each dimension's findings and drops
|
|
31
|
+
false positives before they enter the report), then synthesises the Step 3
|
|
32
|
+
report. The orchestrator derives its per-dimension prompts from *this*
|
|
33
|
+
markdown at run time — the lens stays the single source of truth; the
|
|
34
|
+
script does not fork a second copy of the spec.
|
|
35
|
+
- **Sequential (single-pass) path.** When dynamic workflows are unavailable,
|
|
36
|
+
follow Steps 1–3 below turn-by-turn exactly as before. This is the default
|
|
37
|
+
fallback and changes nothing about the existing behaviour.
|
|
38
|
+
|
|
39
|
+
**Strategy selection** is computed by
|
|
40
|
+
[`lib/dynamic-workflow/capability.js`](../scripts/lib/dynamic-workflow/capability.js)
|
|
41
|
+
(`selectAuditStrategy`). The orchestrated path is chosen only when the runtime
|
|
42
|
+
is Claude Code, `disableWorkflows` is not set (settings.json **or**
|
|
43
|
+
`CLAUDE_CODE_DISABLE_WORKFLOWS`), and the Claude Code version meets the
|
|
44
|
+
research-preview floor (`>= 2.1.154`). Any other runtime, a disabled setting,
|
|
45
|
+
or an older version degrades gracefully to the sequential path.
|
|
46
|
+
|
|
47
|
+
> **Capability degradation, not a contract shim.** This dual path is **not**
|
|
48
|
+
> covered by the No-Shim / hard-cutover rule in
|
|
49
|
+
> [`git-conventions.md`](../rules/git-conventions.md). That rule forbids
|
|
50
|
+
> running two shapes of the *same contract* side by side. Here there is **one**
|
|
51
|
+
> report contract; only the *execution strategy* is selected from a runtime
|
|
52
|
+
> capability — the same pattern the protocol already endorses for live-docs
|
|
53
|
+
> fallback in [`instructions.md` §1.C/§1.D](../instructions.md). The full
|
|
54
|
+
> capability-degradation rationale lives in the
|
|
55
|
+
> [`capability.js`](../scripts/lib/dynamic-workflow/capability.js) module
|
|
56
|
+
> docstring; the orchestrated-run evidence and per-lens cost/precision gate
|
|
57
|
+
> verdicts live in [`docs/roadmap.md`](../../docs/roadmap.md) (Part 3 —
|
|
58
|
+
> Dynamic-Workflow Orchestration).
|
|
59
|
+
|
|
60
|
+
**Forcing a path (for testing).** Set `MANDREL_AUDIT_STRATEGY=sequential` to
|
|
61
|
+
verify the fallback path with the feature notionally disabled, or
|
|
62
|
+
`MANDREL_AUDIT_STRATEGY=orchestrated` to pin the dynamic path. To exercise the
|
|
63
|
+
real disable signals instead, set `CLAUDE_CODE_DISABLE_WORKFLOWS=1` (env) or
|
|
64
|
+
`disableWorkflows: true` in `.claude/settings.json` and re-run the lens — both
|
|
65
|
+
degrade to the sequential path.
|
|
66
|
+
|
|
67
|
+
> **Read-only on both paths.** The lens is read-only (see Constraint). The
|
|
68
|
+
> orchestrated subagents run in `acceptEdits` and inherit the session tool
|
|
69
|
+
> allowlist, but the workflow script grants the analysis agents only
|
|
70
|
+
> read/search tools (`Read`, `Grep`, `Glob`) — no write/edit/shell-mutation
|
|
71
|
+
> tools. The single write in an orchestrated run is the final report artifact.
|
|
72
|
+
|
|
73
|
+
## Scope (Epic mode)
|
|
74
|
+
|
|
75
|
+
When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
|
|
76
|
+
following block is populated with the Epic's change-set file list.
|
|
77
|
+
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
78
|
+
renders the literal substitution token and you MUST treat it as **no
|
|
79
|
+
scope filter — run the lens codebase-wide** exactly as you would have
|
|
80
|
+
before this section existed.
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
{{changedFiles}}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- If the block above contains a newline-delimited list of file paths,
|
|
87
|
+
restrict your analysis to those files (and their direct dependencies
|
|
88
|
+
when the lens explicitly calls for cross-file reasoning).
|
|
89
|
+
- If the block above renders as the literal string `{{changedFiles}}`
|
|
90
|
+
(i.e. no substitution was supplied), ignore this section entirely and
|
|
91
|
+
proceed with the full codebase-wide scan defined in the remaining
|
|
92
|
+
steps.
|
|
93
|
+
|
|
94
|
+
## Step 1: Context Gathering (Read-Only Scan)
|
|
95
|
+
|
|
96
|
+
> Apply [`helpers/parallel-tooling.md`](helpers/parallel-tooling.md) when batching the scan below — independent reads belong in one turn, long shells run via `run_in_background` + `Monitor`.
|
|
97
|
+
|
|
98
|
+
Before generating the report, silently scan the core application logic. Pay
|
|
99
|
+
special attention to:
|
|
100
|
+
|
|
101
|
+
- Domain/Business logic layers (e.g., services, use cases, managers).
|
|
102
|
+
- Utility and shared folders (e.g., `utils/`, `helpers/`, `shared/`).
|
|
103
|
+
- Data access patterns and component hierarchies.
|
|
104
|
+
- Complex or heavily modified files (look for large file sizes or deeply nested
|
|
105
|
+
directory structures).
|
|
106
|
+
|
|
107
|
+
Additionally, gather signal for the **Automated Architecture Guardrails**
|
|
108
|
+
dimension below by looking for:
|
|
109
|
+
|
|
110
|
+
- **Documented architecture boundaries** — `docs/architecture.md`, ADRs
|
|
111
|
+
(`docs/adr/**`, `docs/decisions/**`), per-package `README.md` files,
|
|
112
|
+
module-level docs, or equivalent project documentation that names
|
|
113
|
+
layers, feature boundaries, public entrypoints, or forbidden import
|
|
114
|
+
paths.
|
|
115
|
+
- **Automated boundary checks** — `package.json` scripts, CI workflow
|
|
116
|
+
files (`.github/workflows/**`, `.gitlab-ci.yml`, etc.), test suites
|
|
117
|
+
asserting on module shape, lint configs
|
|
118
|
+
(`.eslintrc*`, `eslint.config.*`) with `eslint-plugin-boundaries`,
|
|
119
|
+
`eslint-plugin-import` (`no-restricted-paths`, `no-internal-modules`),
|
|
120
|
+
or `@nx/enforce-module-boundaries`, `dependency-cruiser`
|
|
121
|
+
(`.dependency-cruiser.*`) configs, `madge` configs or scripts,
|
|
122
|
+
TypeScript project references (`tsconfig.*.json` `references`),
|
|
123
|
+
workspace/package `exports` / `main` / `types` declarations restricting
|
|
124
|
+
the public surface, and custom architecture-check scripts in
|
|
125
|
+
`scripts/`, `tools/`, or equivalent.
|
|
126
|
+
|
|
127
|
+
Treat absence of evidence as a signal, not a failure — many codebases
|
|
128
|
+
legitimately have no layered architecture to guard.
|
|
129
|
+
|
|
130
|
+
## Step 2: Analysis Dimensions
|
|
131
|
+
|
|
132
|
+
Evaluate the gathered context against the following clean code dimensions:
|
|
133
|
+
|
|
134
|
+
1. **Over-Engineering & Abstractions:** Identify "dry-run" complexity, premature
|
|
135
|
+
optimizations, or interfaces/classes that add boilerplate without clear value
|
|
136
|
+
(e.g., interfaces with only one implementation).
|
|
137
|
+
2. **Cognitive Load & Nesting:** Pinpoint deeply nested logic (arrow code),
|
|
138
|
+
massive functions violating the Single Responsibility Principle (SRP), or
|
|
139
|
+
excessive cyclomatic complexity.
|
|
140
|
+
3. **Dead Code & Redundancy:** Locate unused exports, redundant utility
|
|
141
|
+
functions that duplicate standard library features, or obsolete commented-out
|
|
142
|
+
code blocks.
|
|
143
|
+
4. **Naming & Self-Documentation:** Find poorly named variables/functions,
|
|
144
|
+
inconsistent naming conventions, or areas that rely heavily on comments to
|
|
145
|
+
explain *what* the code does rather than *why*.
|
|
146
|
+
5. **Coupling & Cohesion:** Spot tight coupling between modules that should be
|
|
147
|
+
independent or god-objects handling too many concerns.
|
|
148
|
+
6. **Testable Surface (Humble-Object Boundary):** Flag modules that interleave
|
|
149
|
+
hard-to-test I/O — filesystem (`fs`), process spawning (`child_process`,
|
|
150
|
+
`exec`, `spawn`), network calls, database access, or GUI/terminal
|
|
151
|
+
rendering — directly with business logic. The humble-object /
|
|
152
|
+
ports-and-adapters discipline says the environmentally-unsuitable shell
|
|
153
|
+
(the part bound to the OS, the network, or a device) should stay thin and
|
|
154
|
+
nearly logic-free, while the decision-making logic it wraps is extracted
|
|
155
|
+
into a pure, separately-testable module. Identify functions where a
|
|
156
|
+
branch, a calculation, or a validation rule can only be exercised by
|
|
157
|
+
standing up a real file, a child process, or a socket, and recommend
|
|
158
|
+
pulling that logic out behind a seam so it can be unit-tested in isolation
|
|
159
|
+
with the I/O mocked at the boundary (per the unit-tier mocking rule in
|
|
160
|
+
[`rules/testing-standards.md`](../rules/testing-standards.md)). Treat the
|
|
161
|
+
ratio of testable logic to unsuitable shell as the property under review:
|
|
162
|
+
maximize the former, minimize the latter. Severity grades by how much
|
|
163
|
+
logic is trapped behind the boundary:
|
|
164
|
+
- **High** — a substantial decision surface (multiple branches, a
|
|
165
|
+
non-trivial algorithm, or a validation/parsing rule) is entangled with
|
|
166
|
+
I/O such that it can only be reached through the live environment,
|
|
167
|
+
leaving it effectively untested or covered only by slow,
|
|
168
|
+
environment-dependent integration tests.
|
|
169
|
+
- **Medium** — moderate logic is mixed with I/O; a seam is feasible and
|
|
170
|
+
would meaningfully raise the unit-testable surface, but the current
|
|
171
|
+
entanglement is contained to one module.
|
|
172
|
+
- **Low** — thin or incidental coupling (e.g. a one-line transform beside
|
|
173
|
+
a read) where extraction is optional polish rather than a testability
|
|
174
|
+
win.
|
|
175
|
+
|
|
176
|
+
For each finding, name the module/function, identify the trapped logic and
|
|
177
|
+
the I/O it is bound to, and propose the concrete seam (the pure function or
|
|
178
|
+
port to extract, and where the I/O adapter should call into it). This repo
|
|
179
|
+
already practices a related seam discipline at the error-handling boundary:
|
|
180
|
+
[`rules/orchestration-error-handling.md`](../rules/orchestration-error-handling.md)
|
|
181
|
+
requires orchestration scripts to `throw` rather than `Logger.fatal` so the
|
|
182
|
+
thin `runAsCli` shell — not the logic — owns the `process.exit` side effect,
|
|
183
|
+
keeping the wrapped logic exercisable under a stubbed `process.exit`. Cite
|
|
184
|
+
that precedent where it applies rather than restating it.
|
|
185
|
+
7. **Automated Architecture Guardrails:** Assess whether the project encodes
|
|
186
|
+
its architectural boundaries as **deterministic, automated checks** rather
|
|
187
|
+
than relying on convention or reviewer memory. When relevant to the
|
|
188
|
+
consumer project's shape, evaluate enforcement for:
|
|
189
|
+
- Layer direction (e.g., UI → application → domain → infrastructure;
|
|
190
|
+
no upward imports).
|
|
191
|
+
- Feature / module boundaries (sibling features cannot import each
|
|
192
|
+
other's internals).
|
|
193
|
+
- Server/client separation (server-only modules must not be imported
|
|
194
|
+
from client bundles, and vice versa).
|
|
195
|
+
- Workspace package boundaries (workspace packages only depend on
|
|
196
|
+
declared workspace siblings; no cross-package deep imports into
|
|
197
|
+
`src/`).
|
|
198
|
+
- Public entrypoints (consumers import only from the package's
|
|
199
|
+
declared `exports` / barrel, not from internal paths).
|
|
200
|
+
- Circular dependencies (cycles between modules or packages).
|
|
201
|
+
- Forbidden deep imports (e.g., reaching past `index.ts`, importing
|
|
202
|
+
from `dist/`, or importing private `_internal` paths).
|
|
203
|
+
|
|
204
|
+
Recommendations under this dimension MUST prefer **project-local,
|
|
205
|
+
lightweight tooling** (an added ESLint rule, a `dependency-cruiser`
|
|
206
|
+
config, a `npm run check:boundaries` script, a CI step) over
|
|
207
|
+
Mandrel-owned harness changes. The audit is advisory: it surfaces the
|
|
208
|
+
maturity gap and proposes the lightest fitting next step, but the
|
|
209
|
+
consumer project owns adoption. Do not propose new Mandrel quality
|
|
210
|
+
gates, baseline kinds, close-validation steps, dependencies, or
|
|
211
|
+
harness subsystems under this dimension.
|
|
212
|
+
|
|
213
|
+
**Scope-mode behavior.** When this lens is invoked in Epic mode (the
|
|
214
|
+
`{{changedFiles}}` block above is populated with a file list), the
|
|
215
|
+
maturity assessment for this dimension is a repo-wide property that
|
|
216
|
+
cannot be represented by a small changeset. In that case, render the
|
|
217
|
+
`Architecture Guardrail Coverage` report section with maturity
|
|
218
|
+
`Not Assessed — scoped run` and skip the per-axis evaluation. The
|
|
219
|
+
full maturity assessment runs only in codebase-wide mode (when
|
|
220
|
+
`{{changedFiles}}` renders as the literal substitution token).
|
|
221
|
+
|
|
222
|
+
### Maturity Rubric
|
|
223
|
+
|
|
224
|
+
Use these definitions to classify the project's `Architecture Guardrail
|
|
225
|
+
Coverage`. The rubric is a single axis; pick the highest level the
|
|
226
|
+
evidence supports.
|
|
227
|
+
|
|
228
|
+
| Level | Definition |
|
|
229
|
+
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
230
|
+
| **Strong** | Documented boundaries **and** at least one automated check **and** CI enforcement (the check fails the build on violation). |
|
|
231
|
+
| **Partial** | Documented boundaries **or** at least one automated check exists, but the pair is incomplete or CI does not fail the build on violation. |
|
|
232
|
+
| **Missing** | Neither documented boundaries nor automated checks exist for a codebase whose shape (layered, multi-package, server/client split, feature-sliced) would benefit from them. |
|
|
233
|
+
| **Not Applicable** | The codebase has no meaningful architectural layering to guard (e.g., a single-package utility repo, a one-file script, a flat content repo). |
|
|
234
|
+
|
|
235
|
+
## Step 3: Output Requirements
|
|
236
|
+
|
|
237
|
+
Generate and save a highly structured Markdown audit report to
|
|
238
|
+
`{{auditOutputDir}}/audit-architecture-results.md`, using the exact template
|
|
239
|
+
below.
|
|
240
|
+
|
|
241
|
+
```markdown
|
|
242
|
+
# Architecture & Clean Code Review
|
|
243
|
+
|
|
244
|
+
## Executive Summary
|
|
245
|
+
|
|
246
|
+
[Provide a brief overview of the codebase's health, highlighting the primary
|
|
247
|
+
architectural pain points and areas for simplification.]
|
|
248
|
+
|
|
249
|
+
## Triage Summary
|
|
250
|
+
|
|
251
|
+
### Quick Wins (Low Effort, High Impact)
|
|
252
|
+
|
|
253
|
+
- [List 2–3 immediate, safe refactors — e.g., deleting dead code, renaming
|
|
254
|
+
variables, extracting simple utilities.]
|
|
255
|
+
|
|
256
|
+
### Structural Changes (Medium/High Effort, Architectural Impact)
|
|
257
|
+
|
|
258
|
+
- [List 2–3 larger refactors — e.g., decoupling services, flattening complex
|
|
259
|
+
module hierarchies, removing unnecessary design patterns.]
|
|
260
|
+
|
|
261
|
+
## Architecture Guardrail Coverage
|
|
262
|
+
|
|
263
|
+
[Codebase-wide mode: complete this section using the maturity rubric in
|
|
264
|
+
Step 2. Epic-mode / scoped run: set `Current Maturity` to
|
|
265
|
+
`Not Assessed — scoped run` and leave the remaining fields empty or
|
|
266
|
+
marked `n/a`.]
|
|
267
|
+
|
|
268
|
+
- **Current Maturity:** [Strong | Partial | Missing | Not Applicable | Not Assessed — scoped run]
|
|
269
|
+
- **Documented Boundaries:** [Files / sections that name the architecture
|
|
270
|
+
boundaries — e.g., `docs/architecture.md § Layering`, ADR-0007. State
|
|
271
|
+
`none found` if absent.]
|
|
272
|
+
- **Automated Checks Found:** [Tooling and config paths — e.g.,
|
|
273
|
+
`dependency-cruiser` at `.dependency-cruiser.cjs`,
|
|
274
|
+
`eslint-plugin-boundaries` rules in `eslint.config.js`,
|
|
275
|
+
`tsconfig.json` `references`. State `none found` if absent.]
|
|
276
|
+
- **CI Enforcement:** [Whether a CI job runs the checks and fails the
|
|
277
|
+
build on violation — name the workflow file and job. State `not
|
|
278
|
+
enforced in CI` if the check runs only locally, or `n/a` if no check
|
|
279
|
+
exists.]
|
|
280
|
+
- **Axes Covered:** [Tick the axes from Step 2 that have at least one
|
|
281
|
+
automated check — layer direction, feature/module boundaries,
|
|
282
|
+
server/client separation, workspace package boundaries, public
|
|
283
|
+
entrypoints, circular dependencies, forbidden deep imports. Mark
|
|
284
|
+
axes that don't apply to this codebase's shape as `n/a`.]
|
|
285
|
+
- **Recommended Next Step:** [The single lightest fitting project-local
|
|
286
|
+
improvement — e.g., "add `dependency-cruiser` with a
|
|
287
|
+
`no-circular` rule and wire `npm run check:arch` into the existing
|
|
288
|
+
CI lint job". Advisory only; the consumer project owns adoption. Do
|
|
289
|
+
not propose Mandrel-owned harness changes.]
|
|
290
|
+
|
|
291
|
+
## Detailed Findings
|
|
292
|
+
|
|
293
|
+
[For every gap identified, use the following strict structure:]
|
|
294
|
+
|
|
295
|
+
### [Short Title of the Issue]
|
|
296
|
+
|
|
297
|
+
- **Category:** [Quick Win | Structural Change]
|
|
298
|
+
- **Dimension:** [e.g., Cognitive Load & Nesting | Testable Surface (Humble-Object Boundary) | Automated Architecture Guardrails]
|
|
299
|
+
- **Current State:** [The specific file/function and why it is problematic]
|
|
300
|
+
- **Recommendation & Rationale:** [The specific refactor strategy and how it
|
|
301
|
+
improves readability or maintainability]
|
|
302
|
+
- **Agent Prompt:**
|
|
303
|
+
`[A copy-pasteable, highly specific prompt to execute this refactor independently. Must explicitly state NOT to change external APIs.]`
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Constraint
|
|
309
|
+
|
|
310
|
+
Do NOT execute any code modifications, edit files, create branches, or implement
|
|
311
|
+
changes. This is strictly a read-only analysis. Ensure all recommendations
|
|
312
|
+
preserve existing functionality and external APIs. Output the report and stop.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Audit code smells, dead code, complexity hotspots, and maintainability-index outliers; emit a structured findings report.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Clean Code & Maintainability Audit
|
|
6
|
+
|
|
7
|
+
## Role
|
|
8
|
+
|
|
9
|
+
Principal Software Engineer & Code Quality Lead
|
|
10
|
+
|
|
11
|
+
## Context & Objective
|
|
12
|
+
|
|
13
|
+
You are performing a deep-dive audit into the codebase's maintainability and
|
|
14
|
+
quality. Your objective is to identify "code smells," technical debt, and
|
|
15
|
+
violations of clean code principles (SOLID, DRY, KISS) that hinder long-term
|
|
16
|
+
velocity.
|
|
17
|
+
|
|
18
|
+
## Scope (Epic mode)
|
|
19
|
+
|
|
20
|
+
When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
|
|
21
|
+
following block is populated with the Epic's change-set file list.
|
|
22
|
+
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
|
+
renders the literal substitution token and you MUST treat it as **no
|
|
24
|
+
scope filter — run the lens codebase-wide** exactly as you would have
|
|
25
|
+
before this section existed.
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
{{changedFiles}}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- If the block above contains a newline-delimited list of file paths,
|
|
32
|
+
restrict your analysis to those files (and their direct dependencies
|
|
33
|
+
when the lens explicitly calls for cross-file reasoning).
|
|
34
|
+
- If the block above renders as the literal string `{{changedFiles}}`
|
|
35
|
+
(i.e. no substitution was supplied), ignore this section entirely and
|
|
36
|
+
proceed with the full codebase-wide scan defined in the remaining
|
|
37
|
+
steps.
|
|
38
|
+
|
|
39
|
+
## Execution strategy (dual-path)
|
|
40
|
+
|
|
41
|
+
This lens runs along one of two execution paths. Both emit the **identical**
|
|
42
|
+
report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
|
|
43
|
+
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
44
|
+
|
|
45
|
+
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
46
|
+
[dynamic workflows](https://code.claude.com/docs/en/workflows) are
|
|
47
|
+
available, the saved project workflow
|
|
48
|
+
`.claude/workflows/audit-clean-code.workflow.js` fans the dimensions below
|
|
49
|
+
out as parallel read-only subagents, runs an **adversarial cross-check**
|
|
50
|
+
stage (an independent agent reviews each dimension's findings and drops
|
|
51
|
+
false positives before they enter the report), then synthesises the Step 3
|
|
52
|
+
report. The orchestrator derives its per-dimension prompts from *this*
|
|
53
|
+
markdown at run time — the lens stays the single source of truth; the
|
|
54
|
+
script does not fork a second copy of the spec.
|
|
55
|
+
- **Sequential (single-pass) path.** When dynamic workflows are unavailable,
|
|
56
|
+
follow Steps 1–3 below turn-by-turn exactly as before. This is the default
|
|
57
|
+
fallback and changes nothing about the existing behaviour.
|
|
58
|
+
|
|
59
|
+
**Strategy selection** is computed by
|
|
60
|
+
[`lib/dynamic-workflow/capability.js`](../scripts/lib/dynamic-workflow/capability.js)
|
|
61
|
+
(`selectAuditStrategy`). The orchestrated path is chosen only when the runtime
|
|
62
|
+
is Claude Code, `disableWorkflows` is not set (settings.json **or**
|
|
63
|
+
`CLAUDE_CODE_DISABLE_WORKFLOWS`), and the Claude Code version meets the
|
|
64
|
+
research-preview floor (`>= 2.1.154`). Any other runtime, a disabled setting,
|
|
65
|
+
or an older version degrades gracefully to the sequential path.
|
|
66
|
+
|
|
67
|
+
> **Capability degradation, not a contract shim.** This dual path is **not**
|
|
68
|
+
> covered by the No-Shim / hard-cutover rule in
|
|
69
|
+
> [`git-conventions.md`](../rules/git-conventions.md). That rule forbids
|
|
70
|
+
> running two shapes of the *same contract* side by side. Here there is **one**
|
|
71
|
+
> report contract; only the *execution strategy* is selected from a runtime
|
|
72
|
+
> capability — the same pattern the protocol already endorses for live-docs
|
|
73
|
+
> fallback in [`instructions.md` §1.C/§1.D](../instructions.md). The full
|
|
74
|
+
> capability-degradation rationale lives in the
|
|
75
|
+
> [`capability.js`](../scripts/lib/dynamic-workflow/capability.js) module
|
|
76
|
+
> docstring; the orchestrated-run evidence and per-lens cost/precision gate
|
|
77
|
+
> verdicts live in [`docs/roadmap.md`](../../docs/roadmap.md) (Part 3 —
|
|
78
|
+
> Dynamic-Workflow Orchestration).
|
|
79
|
+
|
|
80
|
+
**Forcing a path (for testing).** Set `MANDREL_AUDIT_STRATEGY=sequential` to
|
|
81
|
+
verify the fallback path with the feature notionally disabled, or
|
|
82
|
+
`MANDREL_AUDIT_STRATEGY=orchestrated` to pin the dynamic path. To exercise the
|
|
83
|
+
real disable signals instead, set `CLAUDE_CODE_DISABLE_WORKFLOWS=1` (env) or
|
|
84
|
+
`disableWorkflows: true` in `.claude/settings.json` and re-run the lens — both
|
|
85
|
+
degrade to the sequential path.
|
|
86
|
+
|
|
87
|
+
> **Read-only on both paths.** The lens is read-only (see Constraint). The
|
|
88
|
+
> orchestrated subagents run in `acceptEdits` and inherit the session tool
|
|
89
|
+
> allowlist, but the workflow script grants the analysis agents only
|
|
90
|
+
> read/search tools (`Read`, `Grep`, `Glob`) — no write/edit/shell-mutation
|
|
91
|
+
> tools. The single write in an orchestrated run is the final report artifact.
|
|
92
|
+
|
|
93
|
+
## Step 1: Quality Scan
|
|
94
|
+
|
|
95
|
+
> Apply [`helpers/parallel-tooling.md`](helpers/parallel-tooling.md) when batching the scan below — independent reads belong in one turn, long shells run via `run_in_background` + `Monitor`.
|
|
96
|
+
|
|
97
|
+
Analyze the repository with a focus on:
|
|
98
|
+
|
|
99
|
+
- **Logic Complexity:** Apply the cyclomatic / Maintainability-Index ceilings
|
|
100
|
+
from
|
|
101
|
+
[`helpers/code-quality-guardrails.md`](helpers/code-quality-guardrails.md):
|
|
102
|
+
cyclomatic complexity > 8 (`delivery.quality.codingGuardrails.cyclomaticFlag`)
|
|
103
|
+
is **flag in review** (annotate or split); > 12
|
|
104
|
+
(`codingGuardrails.cyclomaticMustFix`) is **must-fix** before the work merges.
|
|
105
|
+
A per-file MI drop > 1.5pt (`codingGuardrails.miDropMustRefactor`) requires a
|
|
106
|
+
refactor in the same Story rather than a baseline bump.
|
|
107
|
+
- **Duplication:** Find "copy-paste" logic that should be abstracted into
|
|
108
|
+
reusable utilities or hooks.
|
|
109
|
+
- **Component Health:** In UI code, look for "component bloat" (files > 300
|
|
110
|
+
lines) or missing prop validation.
|
|
111
|
+
- **Naming Clarity:** Flag variables like `data`, `info`, `obj`, or
|
|
112
|
+
single-letter variables that obscure intent.
|
|
113
|
+
- **Error Handling:** Check for "silent failures" (empty catch blocks) or
|
|
114
|
+
inconsistent error reporting.
|
|
115
|
+
- **Dead Code:** Locate unused functions, unreferenced exports, orphaned files,
|
|
116
|
+
stale feature flags, commented-out code blocks, and variables that are
|
|
117
|
+
assigned but never read. Cross-reference `export` statements against `import`
|
|
118
|
+
usage across the project to surface modules with zero consumers.
|
|
119
|
+
|
|
120
|
+
## Step 2: Evaluation Dimensions
|
|
121
|
+
|
|
122
|
+
1. **SOLID Principles:** Are classes and functions focused? Are dependencies
|
|
123
|
+
injected or hardcoded?
|
|
124
|
+
2. **DRY (Don't Repeat Yourself):** Is there logic repeated across multiple
|
|
125
|
+
domains?
|
|
126
|
+
3. **KISS (Keep It Simple, Stupid):** Are there over-engineered solutions where
|
|
127
|
+
a simple one would suffice?
|
|
128
|
+
4. **Testability:** How easy is it to unit test the current implementation? Are
|
|
129
|
+
side effects isolated?
|
|
130
|
+
5. **Dead Code & Orphaned Modules:** Are there exported symbols with no
|
|
131
|
+
importers, files unreachable from any entry point, or commented-out blocks
|
|
132
|
+
that have survived multiple commits? Quantify the LOC impact.
|
|
133
|
+
6. **Documentation:** Does the code explain "why" through its structure, or does
|
|
134
|
+
it require extensive comments?
|
|
135
|
+
|
|
136
|
+
## Step 3: Output Requirements
|
|
137
|
+
|
|
138
|
+
Generate and save a highly structured Markdown audit report to
|
|
139
|
+
`{{auditOutputDir}}/audit-clean-code-results.md`, using the exact template
|
|
140
|
+
below.
|
|
141
|
+
|
|
142
|
+
```markdown
|
|
143
|
+
# Clean Code Audit Report
|
|
144
|
+
|
|
145
|
+
## Executive Summary
|
|
146
|
+
|
|
147
|
+
[Brief overview of the codebase's maintainability index (High/Medium/Low) and
|
|
148
|
+
primary themes.]
|
|
149
|
+
|
|
150
|
+
## Detailed Findings
|
|
151
|
+
|
|
152
|
+
[For every gap identified, use the following strict structure:]
|
|
153
|
+
|
|
154
|
+
### [Short Title of the Issue]
|
|
155
|
+
|
|
156
|
+
- **Dimension:** [e.g., SOLID Principles | DRY | KISS | Dead Code]
|
|
157
|
+
- **Impact:** [High | Medium | Low]
|
|
158
|
+
- **Current State:** [Problematic code snippet, file, or pattern description]
|
|
159
|
+
- **Recommendation & Rationale:** [The specific refactor strategy and how it
|
|
160
|
+
improves long-term velocity]
|
|
161
|
+
- **Agent Prompt:**
|
|
162
|
+
`[A copy-pasteable, highly specific prompt to execute this refactor independently]`
|
|
163
|
+
|
|
164
|
+
## Dead Code Inventory
|
|
165
|
+
|
|
166
|
+
| File | Symbol / Block | Type | Estimated LOC |
|
|
167
|
+
| ------ | --------------------- | ------------------------------------------------------------------ | ------------- |
|
|
168
|
+
| [path] | [name or description] | [Unused export · Orphaned file · Commented-out block · Stale flag] | [LOC] |
|
|
169
|
+
|
|
170
|
+
## Technical Debt Backlog
|
|
171
|
+
|
|
172
|
+
[List specific files or modules that require significant rework to meet quality
|
|
173
|
+
standards.]
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Constraint
|
|
177
|
+
|
|
178
|
+
This workflow is **read-only**. Provide the analysis and the roadmap, but do not
|
|
179
|
+
apply changes.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Audit `package.json` for unused, outdated, and major-version-stale dependencies; surface Node-engine drift and propose upgrade batches.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Dependency Update Audit
|
|
6
|
+
|
|
7
|
+
## Role
|
|
8
|
+
|
|
9
|
+
DevOps Engineer & Security Researcher
|
|
10
|
+
|
|
11
|
+
## Context & Objective
|
|
12
|
+
|
|
13
|
+
Manage the lifecycle of project dependencies. Your goal is to identify outdated,
|
|
14
|
+
vulnerable, or bloated packages and suggest a safe upgrade path that maintains
|
|
15
|
+
system stability.
|
|
16
|
+
|
|
17
|
+
## Scope (Epic mode)
|
|
18
|
+
|
|
19
|
+
When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
|
|
20
|
+
following block is populated with the Epic's change-set file list.
|
|
21
|
+
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
|
+
renders the literal substitution token and you MUST treat it as **no
|
|
23
|
+
scope filter — run the lens codebase-wide** exactly as you would have
|
|
24
|
+
before this section existed.
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
{{changedFiles}}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- If the block above contains a newline-delimited list of file paths,
|
|
31
|
+
restrict your analysis to those files (and their direct dependencies
|
|
32
|
+
when the lens explicitly calls for cross-file reasoning).
|
|
33
|
+
- If the block above renders as the literal string `{{changedFiles}}`
|
|
34
|
+
(i.e. no substitution was supplied), ignore this section entirely and
|
|
35
|
+
proceed with the full codebase-wide scan defined in the remaining
|
|
36
|
+
steps.
|
|
37
|
+
|
|
38
|
+
## Step 1: Inventory & Stale Check
|
|
39
|
+
|
|
40
|
+
> Apply [`helpers/parallel-tooling.md`](helpers/parallel-tooling.md) when batching the scan below — independent reads belong in one turn, long shells run via `run_in_background` + `Monitor`.
|
|
41
|
+
|
|
42
|
+
1. Run `npm outdated` (or equivalent for the package manager) to see which
|
|
43
|
+
packages are behind.
|
|
44
|
+
2. Identify "stale" dependencies (packages with no updates for >1 year).
|
|
45
|
+
3. Check for "bloat" — large dependencies that could be replaced by smaller
|
|
46
|
+
alternatives or native code.
|
|
47
|
+
|
|
48
|
+
## Step 2: Vulnerability Scan
|
|
49
|
+
|
|
50
|
+
1. Run `npm audit` to find security vulnerabilities.
|
|
51
|
+
2. Cross-reference critical dependencies with known CVE databases if necessary.
|
|
52
|
+
3. Highlight any peer dependency conflicts that might arise from upgrades.
|
|
53
|
+
|
|
54
|
+
## Step 3: Output Requirements
|
|
55
|
+
|
|
56
|
+
Generate and save a highly structured Markdown audit report to
|
|
57
|
+
`{{auditOutputDir}}/audit-dependencies-results.md`, using the exact template
|
|
58
|
+
below.
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
# Dependency Audit Report
|
|
62
|
+
|
|
63
|
+
## Health Summary
|
|
64
|
+
|
|
65
|
+
- **Outdated Packages:** [Count]
|
|
66
|
+
- **Vulnerabilities:** [Critical: #, High: #, Mod: #]
|
|
67
|
+
|
|
68
|
+
## Detailed Findings
|
|
69
|
+
|
|
70
|
+
[For every security fix or major update identified, use the following strict
|
|
71
|
+
structure:]
|
|
72
|
+
|
|
73
|
+
### [Package Name Update]
|
|
74
|
+
|
|
75
|
+
- **Dimension:** [Security Fix | Major Upgrade | Removal]
|
|
76
|
+
- **Impact:** [High | Medium | Low]
|
|
77
|
+
- **Current State:** [Current vs Target version and reason for update]
|
|
78
|
+
- **Recommendation & Rationale:** [How to perform the update and potential
|
|
79
|
+
breaking changes to watch for]
|
|
80
|
+
- **Agent Prompt:**
|
|
81
|
+
`[A copy-pasteable, highly specific prompt to execute this update independently (e.g., npm install package@version)]`
|
|
82
|
+
|
|
83
|
+
## Recommended Removals/Replacements
|
|
84
|
+
|
|
85
|
+
- Replace `[heavy-library]` with `[light-library]` or native `[browser-api]`.
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Constraint
|
|
89
|
+
|
|
90
|
+
This is a **read-only** evaluation. Do not run `npm install` or `npm update`
|
|
91
|
+
unless explicitly requested by the user after reviewing this report.
|