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,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Audit test coverage gaps, flaky tests, missing assertions, and test-pyramid balance; recommend a remediation batch.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Testing & Quality Assurance Audit
|
|
6
|
+
|
|
7
|
+
## Role
|
|
8
|
+
|
|
9
|
+
Principal SDET (Software Development Engineer in Test) & Quality Architect
|
|
10
|
+
|
|
11
|
+
## Context & Objective
|
|
12
|
+
|
|
13
|
+
You are performing a comprehensive, read-only audit of this repository's testing
|
|
14
|
+
infrastructure, test coverage, and overall quality assurance practices. Your
|
|
15
|
+
goal is to identify testing gaps, flaky tests, inefficient mocking strategies,
|
|
16
|
+
and opportunities to improve test execution speed and reliability without making
|
|
17
|
+
any immediate changes. Additionally, you must evaluate the implemented tests
|
|
18
|
+
against the active Epic and the current codebase to ensure all quality
|
|
19
|
+
requirements are met and correctly documented.
|
|
20
|
+
|
|
21
|
+
**Note on Testing Responsibilities**: When evaluating test maturity, note the
|
|
22
|
+
established standard: Software Engineers (SWEs) must provide comprehensive unit
|
|
23
|
+
and integration test coverage alongside their feature implementations. The QA
|
|
24
|
+
Engineering function focuses on End-to-End (E2E) testing, complex system
|
|
25
|
+
integrations, and test environment stability.
|
|
26
|
+
|
|
27
|
+
## Scope (Epic mode)
|
|
28
|
+
|
|
29
|
+
When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
|
|
30
|
+
following block is populated with the Epic's change-set file list.
|
|
31
|
+
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
32
|
+
renders the literal substitution token and you MUST treat it as **no
|
|
33
|
+
scope filter — run the lens codebase-wide** exactly as you would have
|
|
34
|
+
before this section existed.
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
{{changedFiles}}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
- If the block above contains a newline-delimited list of file paths,
|
|
41
|
+
restrict your analysis to those files (and their direct dependencies
|
|
42
|
+
when the lens explicitly calls for cross-file reasoning).
|
|
43
|
+
- If the block above renders as the literal string `{{changedFiles}}`
|
|
44
|
+
(i.e. no substitution was supplied), ignore this section entirely and
|
|
45
|
+
proceed with the full codebase-wide scan defined in the remaining
|
|
46
|
+
steps.
|
|
47
|
+
|
|
48
|
+
## Execution strategy (dual-path)
|
|
49
|
+
|
|
50
|
+
This lens runs along one of two execution paths. Both emit the **identical**
|
|
51
|
+
report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
|
|
52
|
+
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
53
|
+
|
|
54
|
+
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
55
|
+
[dynamic workflows](https://code.claude.com/docs/en/workflows) are
|
|
56
|
+
available, the saved project workflow
|
|
57
|
+
`.claude/workflows/audit-quality.workflow.js` fans the dimensions below
|
|
58
|
+
out as parallel read-only subagents, runs an **adversarial cross-check**
|
|
59
|
+
stage (an independent agent reviews each dimension's findings and drops
|
|
60
|
+
false positives before they enter the report), then synthesises the Step 3
|
|
61
|
+
report. The orchestrator derives its per-dimension prompts from *this*
|
|
62
|
+
markdown at run time — the lens stays the single source of truth; the
|
|
63
|
+
script does not fork a second copy of the spec.
|
|
64
|
+
- **Sequential (single-pass) path.** When dynamic workflows are unavailable,
|
|
65
|
+
follow Steps 1–3 below turn-by-turn exactly as before. This is the default
|
|
66
|
+
fallback and changes nothing about the existing behaviour.
|
|
67
|
+
|
|
68
|
+
**Strategy selection** is computed by
|
|
69
|
+
[`lib/dynamic-workflow/capability.js`](../scripts/lib/dynamic-workflow/capability.js)
|
|
70
|
+
(`selectAuditStrategy`). The orchestrated path is chosen only when the runtime
|
|
71
|
+
is Claude Code, `disableWorkflows` is not set (settings.json **or**
|
|
72
|
+
`CLAUDE_CODE_DISABLE_WORKFLOWS`), and the Claude Code version meets the
|
|
73
|
+
research-preview floor (`>= 2.1.154`). Any other runtime, a disabled setting,
|
|
74
|
+
or an older version degrades gracefully to the sequential path.
|
|
75
|
+
|
|
76
|
+
> **Capability degradation, not a contract shim.** This dual path is **not**
|
|
77
|
+
> covered by the No-Shim / hard-cutover rule in
|
|
78
|
+
> [`git-conventions.md`](../rules/git-conventions.md). That rule forbids
|
|
79
|
+
> running two shapes of the *same contract* side by side. Here there is **one**
|
|
80
|
+
> report contract; only the *execution strategy* is selected from a runtime
|
|
81
|
+
> capability — the same pattern the protocol already endorses for live-docs
|
|
82
|
+
> fallback in [`instructions.md` §1.C/§1.D](../instructions.md). The full
|
|
83
|
+
> capability-degradation rationale lives in the
|
|
84
|
+
> [`capability.js`](../scripts/lib/dynamic-workflow/capability.js) module
|
|
85
|
+
> docstring; the orchestrated-run evidence and per-lens cost/precision gate
|
|
86
|
+
> verdicts live in [`docs/roadmap.md`](../../docs/roadmap.md) (Part 3 —
|
|
87
|
+
> Dynamic-Workflow Orchestration).
|
|
88
|
+
|
|
89
|
+
**Forcing a path (for testing).** Set `MANDREL_AUDIT_STRATEGY=sequential` to
|
|
90
|
+
verify the fallback path with the feature notionally disabled, or
|
|
91
|
+
`MANDREL_AUDIT_STRATEGY=orchestrated` to pin the dynamic path. To exercise the
|
|
92
|
+
real disable signals instead, set `CLAUDE_CODE_DISABLE_WORKFLOWS=1` (env) or
|
|
93
|
+
`disableWorkflows: true` in `.claude/settings.json` and re-run the lens — both
|
|
94
|
+
degrade to the sequential path.
|
|
95
|
+
|
|
96
|
+
> **Read-only on both paths.** The lens is read-only (see Constraint). The
|
|
97
|
+
> orchestrated subagents run in `acceptEdits` and inherit the session tool
|
|
98
|
+
> allowlist, but the workflow script grants the analysis agents only
|
|
99
|
+
> read/search tools (`Read`, `Grep`, `Glob`) — no write/edit/shell-mutation
|
|
100
|
+
> tools. The single write in an orchestrated run is the final report artifact.
|
|
101
|
+
|
|
102
|
+
## Step 0 - Project Context
|
|
103
|
+
|
|
104
|
+
1. Read the active Epic and its child tickets to identify the current milestone
|
|
105
|
+
and target features.
|
|
106
|
+
2. Identify the target codebase paths for the audit.
|
|
107
|
+
|
|
108
|
+
## Step 1: Context Gathering (Read-Only Scan)
|
|
109
|
+
|
|
110
|
+
> 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`.
|
|
111
|
+
|
|
112
|
+
Before generating the report, silently scan the workspace for testing-related
|
|
113
|
+
files. Pay special attention to:
|
|
114
|
+
|
|
115
|
+
- Test configuration files (e.g., `jest.config.js`, `vitest.config.ts`,
|
|
116
|
+
`playwright.config.ts`, `cypress.json`).
|
|
117
|
+
- Test directories and files (e.g., `__tests__/`, `spec/`, `e2e/`, `*.test.ts`,
|
|
118
|
+
`*.spec.js`).
|
|
119
|
+
- The active Epic and its child tickets to map out expected features versus
|
|
120
|
+
implemented tests.
|
|
121
|
+
- Mocking and stubbing setups (e.g., `__mocks__/`, `setupTests.js`, MSW
|
|
122
|
+
handlers).
|
|
123
|
+
- CI/CD workflow files to understand how and when tests are executed.
|
|
124
|
+
|
|
125
|
+
## Step 2: Analysis Dimensions
|
|
126
|
+
|
|
127
|
+
Evaluate the gathered context against the following test quality dimensions:
|
|
128
|
+
|
|
129
|
+
1. **Coverage vs. Confidence:** Identify areas with missing tests (unit,
|
|
130
|
+
integration, or E2E) or tests that assert trivial things while missing core
|
|
131
|
+
business logic.
|
|
132
|
+
2. **Test Fragility & Flakiness:** Spot patterns that lead to flaky tests, such
|
|
133
|
+
as reliance on hardcoded timeouts (`sleep`), improper handling of
|
|
134
|
+
asynchronous code, or shared mutable state between tests.
|
|
135
|
+
3. **Mocking & Stubbing Strategy:** Identify over-mocked tests that test
|
|
136
|
+
implementation details rather than behavior, or missing mocks that cause
|
|
137
|
+
tests to inadvertently hit external networks/APIs.
|
|
138
|
+
4. **Test Data Management:** Look for hardcoded test data, lack of proper
|
|
139
|
+
setup/teardown (`beforeEach`/`afterEach`), or test pollution.
|
|
140
|
+
5. **Performance & Execution:** Find bottlenecks in the test suite, such as
|
|
141
|
+
unnecessary serial execution, heavy setup running too frequently, or
|
|
142
|
+
opportunities for parallelization.
|
|
143
|
+
6. **Requirement Alignment:** Cross-reference the features outlined in the
|
|
144
|
+
active Epic to ensure they have corresponding and complete test coverage.
|
|
145
|
+
Verify that the implementation found in the codebase correctly matches the
|
|
146
|
+
architectural requirements and highlight any inconsistencies or gaps.
|
|
147
|
+
|
|
148
|
+
## Step 3: Output Requirements
|
|
149
|
+
|
|
150
|
+
Generate and save a highly structured Markdown audit report to
|
|
151
|
+
`{{auditOutputDir}}/audit-quality-results.md`, using the exact template below.
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
# Testing & Quality Assurance Audit
|
|
155
|
+
|
|
156
|
+
## Executive Summary
|
|
157
|
+
|
|
158
|
+
[Provide a brief overview of the current test suite health, highlighting the
|
|
159
|
+
primary vulnerabilities, coverage gaps, and areas causing developer friction.]
|
|
160
|
+
|
|
161
|
+
## Test Strategy Assessment
|
|
162
|
+
|
|
163
|
+
| Layer | Status | Notes |
|
|
164
|
+
| ------------------- | -------------------------------- | -------------- |
|
|
165
|
+
| Unit Testing | [Healthy / Needs Work / Missing] | [Brief reason] |
|
|
166
|
+
| Integration Testing | [Healthy / Needs Work / Missing] | [Brief reason] |
|
|
167
|
+
| E2E Testing | [Healthy / Needs Work / Missing] | [Brief reason] |
|
|
168
|
+
| Test Plans | [Healthy / Needs Work / Missing] | [Brief reason] |
|
|
169
|
+
|
|
170
|
+
## Detailed Findings
|
|
171
|
+
|
|
172
|
+
[For every gap identified, use the following strict structure:]
|
|
173
|
+
|
|
174
|
+
### [Short Title of the Issue]
|
|
175
|
+
|
|
176
|
+
- **Category:** [Flakiness | Coverage | Performance | Mocking | Test Plans]
|
|
177
|
+
- **Impact:** [High | Medium | Low]
|
|
178
|
+
- **Current State:** [How the tests are currently written and why it's
|
|
179
|
+
problematic]
|
|
180
|
+
- **Recommendation & Rationale:** [The specific testing pattern or refactor
|
|
181
|
+
strategy to fix the issue]
|
|
182
|
+
- **Agent Prompt:**
|
|
183
|
+
`[A copy-pasteable, highly specific prompt to execute this fix independently]`
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Constraint
|
|
189
|
+
|
|
190
|
+
Do NOT execute any code modifications, edit files, create branches, or run the
|
|
191
|
+
test suite. This is strictly a read-only analysis. Output the report and stop.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Audit dependency CVEs, input-validation gaps, secrets handling, and auth boundaries; emit a structured High/Medium/Low findings report.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Security & Vulnerability Audit
|
|
6
|
+
|
|
7
|
+
## Role
|
|
8
|
+
|
|
9
|
+
Cybersecurity Architect & Penetration Tester
|
|
10
|
+
|
|
11
|
+
## Context & Objective
|
|
12
|
+
|
|
13
|
+
Conduct a comprehensive security review of the codebase. Your goal is to
|
|
14
|
+
identify common vulnerabilities (OWASP Top 10), insecure configurations, and
|
|
15
|
+
potential attack vectors.
|
|
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
|
+
## Execution strategy (dual-path)
|
|
39
|
+
|
|
40
|
+
This lens runs along one of two execution paths. Both emit the **identical**
|
|
41
|
+
report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
|
|
42
|
+
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
43
|
+
|
|
44
|
+
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
45
|
+
[dynamic workflows](https://code.claude.com/docs/en/workflows) are
|
|
46
|
+
available, the saved project workflow
|
|
47
|
+
`.claude/workflows/audit-security.workflow.js` fans the dimensions below
|
|
48
|
+
out as parallel read-only subagents, runs an **adversarial cross-check**
|
|
49
|
+
stage (an independent agent reviews each dimension's findings and drops
|
|
50
|
+
false positives before they enter the report), then synthesises the Step 3
|
|
51
|
+
report. The orchestrator derives its per-dimension prompts from *this*
|
|
52
|
+
markdown at run time — the lens stays the single source of truth; the
|
|
53
|
+
script does not fork a second copy of the spec.
|
|
54
|
+
- **Sequential (single-pass) path.** When dynamic workflows are unavailable,
|
|
55
|
+
follow Steps 1–3 below turn-by-turn exactly as before. This is the default
|
|
56
|
+
fallback and changes nothing about the existing behaviour.
|
|
57
|
+
|
|
58
|
+
**Strategy selection** is computed by
|
|
59
|
+
[`lib/dynamic-workflow/capability.js`](../scripts/lib/dynamic-workflow/capability.js)
|
|
60
|
+
(`selectAuditStrategy`). The orchestrated path is chosen only when the runtime
|
|
61
|
+
is Claude Code, `disableWorkflows` is not set (settings.json **or**
|
|
62
|
+
`CLAUDE_CODE_DISABLE_WORKFLOWS`), and the Claude Code version meets the
|
|
63
|
+
research-preview floor (`>= 2.1.154`). Any other runtime, a disabled setting,
|
|
64
|
+
or an older version degrades gracefully to the sequential path.
|
|
65
|
+
|
|
66
|
+
> **Capability degradation, not a contract shim.** This dual path is **not**
|
|
67
|
+
> covered by the No-Shim / hard-cutover rule in
|
|
68
|
+
> [`git-conventions.md`](../rules/git-conventions.md). That rule forbids
|
|
69
|
+
> running two shapes of the *same contract* side by side. Here there is **one**
|
|
70
|
+
> report contract; only the *execution strategy* is selected from a runtime
|
|
71
|
+
> capability — the same pattern the protocol already endorses for live-docs
|
|
72
|
+
> fallback in [`instructions.md` §1.C/§1.D](../instructions.md). The full
|
|
73
|
+
> capability-degradation rationale lives in the
|
|
74
|
+
> [`capability.js`](../scripts/lib/dynamic-workflow/capability.js) module
|
|
75
|
+
> docstring; the orchestrated-run evidence and per-lens cost/precision gate
|
|
76
|
+
> verdicts live in [`docs/roadmap.md`](../../docs/roadmap.md) (Part 3 —
|
|
77
|
+
> Dynamic-Workflow Orchestration).
|
|
78
|
+
|
|
79
|
+
**Forcing a path (for testing).** Set `MANDREL_AUDIT_STRATEGY=sequential` to
|
|
80
|
+
verify the fallback path with the feature notionally disabled, or
|
|
81
|
+
`MANDREL_AUDIT_STRATEGY=orchestrated` to pin the dynamic path. To exercise the
|
|
82
|
+
real disable signals instead, set `CLAUDE_CODE_DISABLE_WORKFLOWS=1` (env) or
|
|
83
|
+
`disableWorkflows: true` in `.claude/settings.json` and re-run the lens — both
|
|
84
|
+
degrade to the sequential path.
|
|
85
|
+
|
|
86
|
+
> **Read-only on both paths.** The lens is read-only (see Constraint). The
|
|
87
|
+
> orchestrated subagents run in `acceptEdits` and inherit the session tool
|
|
88
|
+
> allowlist, but the workflow script grants the analysis agents only
|
|
89
|
+
> read/search tools (`Read`, `Grep`, `Glob`) — no write/edit/shell-mutation
|
|
90
|
+
> tools. The single write in an orchestrated run is the final report artifact.
|
|
91
|
+
|
|
92
|
+
## Step 1: Vulnerability Surface Analysis
|
|
93
|
+
|
|
94
|
+
> 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`.
|
|
95
|
+
|
|
96
|
+
Scan the codebase for:
|
|
97
|
+
|
|
98
|
+
- **Input Validation:** Check where user input enters the system (API endpoints,
|
|
99
|
+
forms). Is it sanitized/validated?
|
|
100
|
+
- **Injection Risks:** Search for raw SQL queries, `dangerouslySetInnerHTML`,
|
|
101
|
+
`eval()`, or command execution logic.
|
|
102
|
+
- **Authentication/Authorization:** Review how sessions/tokens are handled. Are
|
|
103
|
+
there missing checks on sensitive routes?
|
|
104
|
+
- **Dependency Security:** Check `package.json` for known-vulnerable versions of
|
|
105
|
+
libraries.
|
|
106
|
+
- **Secret Management:** Scan for `.env` files in git, hardcoded keys, or
|
|
107
|
+
exposed credentials.
|
|
108
|
+
|
|
109
|
+
## Step 2: Evaluation Dimensions
|
|
110
|
+
|
|
111
|
+
1. **Injection:** SQL, NoSQL, OS Command, and Cross-Site Scripting (XSS).
|
|
112
|
+
2. **Broken Access Control:** Can a user access data they don't own?
|
|
113
|
+
3. **Cryptographic Failures:** Is sensitive data (passwords, PII) hashed or
|
|
114
|
+
encrypted using modern standards?
|
|
115
|
+
4. **Security Misconfiguration:** Are there default passwords, verbose error
|
|
116
|
+
messages in production, or insecure headers?
|
|
117
|
+
5. **Vulnerable Components:** Are outdated libraries introducing risks?
|
|
118
|
+
|
|
119
|
+
## Step 3: Output Requirements
|
|
120
|
+
|
|
121
|
+
Generate and save a highly structured Markdown audit report to
|
|
122
|
+
`{{auditOutputDir}}/audit-security-results.md`, using the exact template below.
|
|
123
|
+
|
|
124
|
+
```markdown
|
|
125
|
+
# Security Audit Report
|
|
126
|
+
|
|
127
|
+
## Executive Summary
|
|
128
|
+
|
|
129
|
+
[Overview of the risk profile (Critical/High/Medium/Low) and overarching
|
|
130
|
+
security posture.]
|
|
131
|
+
|
|
132
|
+
## Detailed Findings
|
|
133
|
+
|
|
134
|
+
[For every vulnerability identified, use the following strict structure:]
|
|
135
|
+
|
|
136
|
+
### [Short Title of the Vulnerability]
|
|
137
|
+
|
|
138
|
+
- **Dimension:** [e.g., Injection | Broken Access Control]
|
|
139
|
+
- **Severity:** [Critical | High | Medium | Low]
|
|
140
|
+
- **CWE ID:** [e.g., CWE-89 for SQL Injection]
|
|
141
|
+
- **Current State:** [Technical explanation of the flaw and its location]
|
|
142
|
+
- **Recommendation & Rationale:** [Step-by-step fix and defensive hardening
|
|
143
|
+
strategy]
|
|
144
|
+
- **Agent Prompt:**
|
|
145
|
+
`[A copy-pasteable, highly specific prompt to execute this remediation independently]`
|
|
146
|
+
|
|
147
|
+
## Defensive Recommendations
|
|
148
|
+
|
|
149
|
+
- [List 3-5 security headers, configurations, or libraries to implement to
|
|
150
|
+
harden the app.]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Constraint
|
|
154
|
+
|
|
155
|
+
This is a **read-only** audit. Your priority is accuracy and clear impact
|
|
156
|
+
assessment. Do not attempt to exploit the system or modify code.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Audit SEO fundamentals and Generative Engine Optimization signals (meta, structured data, crawlability); only relevant for web targets.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# SEO & Generative Engine Optimization Audit
|
|
6
|
+
|
|
7
|
+
## Role
|
|
8
|
+
|
|
9
|
+
Senior Technical SEO and Generative Engine Optimization (GEO) Specialist. You
|
|
10
|
+
are an expert in semantic HTML, JSON-LD Schema markup, Core Web Vitals, and
|
|
11
|
+
optimizing content structure for both traditional search engines (Google, Bing)
|
|
12
|
+
and Large Language Models (ChatGPT, Perplexity, Gemini).
|
|
13
|
+
|
|
14
|
+
## Context & Objective
|
|
15
|
+
|
|
16
|
+
You are performing a comprehensive, read-only SEO and GEO audit of this
|
|
17
|
+
codebase. Your goal is to surface structural, semantic, and content-level
|
|
18
|
+
improvements that will increase discoverability in both traditional search
|
|
19
|
+
indexes and AI-powered answer engines — without making any immediate changes.
|
|
20
|
+
|
|
21
|
+
## Scope (Epic mode)
|
|
22
|
+
|
|
23
|
+
When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
|
|
24
|
+
following block is populated with the Epic's change-set file list.
|
|
25
|
+
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
26
|
+
renders the literal substitution token and you MUST treat it as **no
|
|
27
|
+
scope filter — run the lens codebase-wide** exactly as you would have
|
|
28
|
+
before this section existed.
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
{{changedFiles}}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- If the block above contains a newline-delimited list of file paths,
|
|
35
|
+
restrict your analysis to those files (and their direct dependencies
|
|
36
|
+
when the lens explicitly calls for cross-file reasoning).
|
|
37
|
+
- If the block above renders as the literal string `{{changedFiles}}`
|
|
38
|
+
(i.e. no substitution was supplied), ignore this section entirely and
|
|
39
|
+
proceed with the full codebase-wide scan defined in the remaining
|
|
40
|
+
steps.
|
|
41
|
+
|
|
42
|
+
## Step 1: Context Gathering (Read-Only Scan)
|
|
43
|
+
|
|
44
|
+
> 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`.
|
|
45
|
+
|
|
46
|
+
Before generating the report, silently scan the codebase. Pay special attention
|
|
47
|
+
to:
|
|
48
|
+
|
|
49
|
+
- Page `<head>` elements: `<title>`, `<meta name="description">`, canonical
|
|
50
|
+
tags, Open Graph, and Twitter Card tags.
|
|
51
|
+
- Semantic HTML structure: heading hierarchy (`h1`–`h6`), landmark elements
|
|
52
|
+
(`<main>`, `<nav>`, `<article>`, `<section>`), and `<img alt>` attributes.
|
|
53
|
+
- Structured data: JSON-LD blocks and Schema.org types in use.
|
|
54
|
+
- Internal linking patterns and URL structure.
|
|
55
|
+
- Content layout: answer-friendly formatting (FAQs, numbered steps, definition
|
|
56
|
+
lists) vs. dense prose.
|
|
57
|
+
|
|
58
|
+
## Step 2: Analysis Dimensions
|
|
59
|
+
|
|
60
|
+
Evaluate the gathered context against the following dimensions:
|
|
61
|
+
|
|
62
|
+
1. **Traditional SEO:** Meta tags, semantic structure, accessibility, internal
|
|
63
|
+
linking logic, and keyword placement.
|
|
64
|
+
2. **AIO & GEO (Answer Engine Optimization):** Entity clarity, concise answer
|
|
65
|
+
formatting, structured data (Schema.org), and token efficiency for LLM
|
|
66
|
+
retrieval.
|
|
67
|
+
3. **Core Web Vitals:** CLS, LCP, and INP risk factors visible from the codebase
|
|
68
|
+
(e.g., unsized images, render-blocking resources, large layout shifts).
|
|
69
|
+
4. **Crawlability:** `robots.txt`, `sitemap.xml`, and any `noindex` directives
|
|
70
|
+
that may unintentionally block pages.
|
|
71
|
+
|
|
72
|
+
## Step 3: Output Requirements
|
|
73
|
+
|
|
74
|
+
Generate and save a highly structured Markdown audit report to
|
|
75
|
+
`{{auditOutputDir}}/audit-seo-results.md`, using the exact template below.
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
# SEO & GEO Audit Report
|
|
79
|
+
|
|
80
|
+
## Executive Summary
|
|
81
|
+
|
|
82
|
+
[A high-level view of the site's current optimization health, highlighting the
|
|
83
|
+
primary gaps and the most impactful opportunities.]
|
|
84
|
+
|
|
85
|
+
## Detailed Audit Table
|
|
86
|
+
|
|
87
|
+
| Issue | Impact | Category | Suggested Fix |
|
|
88
|
+
| ------------------- | ---------------- | ---------- | ------------- |
|
|
89
|
+
| [Issue description] | High / Med / Low | SEO or GEO | [Brief fix] |
|
|
90
|
+
|
|
91
|
+
## GEO-Specific Recommendations
|
|
92
|
+
|
|
93
|
+
[Specific advice on how to make this codebase more readable for AI models —
|
|
94
|
+
e.g., adding specific Schema types, flattening nested DOM structures, or
|
|
95
|
+
reformatting key content as FAQ blocks.]
|
|
96
|
+
|
|
97
|
+
## Detailed Findings
|
|
98
|
+
|
|
99
|
+
[For any issue requiring deeper explanation, use the following strict
|
|
100
|
+
structure:]
|
|
101
|
+
|
|
102
|
+
### [Short Title of the Issue]
|
|
103
|
+
|
|
104
|
+
- **Category:** [SEO | GEO | Core Web Vitals | Crawlability]
|
|
105
|
+
- **Impact:** [High | Medium | Low]
|
|
106
|
+
- **Current State:** [What exists in the codebase and why it's suboptimal]
|
|
107
|
+
- **Recommendation & Rationale:** [The specific fix and how it improves
|
|
108
|
+
discoverability or LLM retrieval]
|
|
109
|
+
- **Agent Prompt:**
|
|
110
|
+
`[A copy-pasteable, highly specific prompt to execute this fix independently]`
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Constraint
|
|
116
|
+
|
|
117
|
+
Do NOT rewrite or modify any files. Do NOT implement the changes. Focus strictly
|
|
118
|
+
on analyzing the code. Output the report and stop.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Audit production-readiness for a release candidate: SLOs, observability, runbooks, error budgets, and rollback paths."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Production Release Candidate Audit
|
|
6
|
+
|
|
7
|
+
## Role
|
|
8
|
+
|
|
9
|
+
Senior Site Reliability Engineer (SRE) & Lead Developer
|
|
10
|
+
|
|
11
|
+
## Context & Objective
|
|
12
|
+
|
|
13
|
+
You are conducting a rigorous, read-only final code audit for a production
|
|
14
|
+
release candidate. Your goal is to surface critical risks across configuration
|
|
15
|
+
integrity, security, observability, and code quality — providing a prioritized,
|
|
16
|
+
actionable report that can be handed off for remediation before deployment.
|
|
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
|
+
## Step 1: Context Gathering (Read-Only Scan)
|
|
40
|
+
|
|
41
|
+
> 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`.
|
|
42
|
+
|
|
43
|
+
Before generating the report, silently scan the workspace. Pay special attention
|
|
44
|
+
to:
|
|
45
|
+
|
|
46
|
+
- Application configuration files (e.g., `site.config.ts`, `.env.example`,
|
|
47
|
+
`wrangler.toml`, `app.config.ts`).
|
|
48
|
+
- Source files for hardcoded values (strings resembling secrets, IDs, or
|
|
49
|
+
environment-specific data).
|
|
50
|
+
- Error handling patterns across services, API routes, and background jobs.
|
|
51
|
+
- `package.json` for unused, deprecated, or overly heavy dependencies.
|
|
52
|
+
- Any debugging artifacts likely introduced during development.
|
|
53
|
+
|
|
54
|
+
## Step 2: Analysis Dimensions
|
|
55
|
+
|
|
56
|
+
Evaluate the gathered context against the following production-readiness
|
|
57
|
+
criteria:
|
|
58
|
+
|
|
59
|
+
### 1. Configuration Architecture
|
|
60
|
+
|
|
61
|
+
- **Config Integrity:** Audit the application config to ensure it defines a
|
|
62
|
+
clear schema for all variable/environment-specific data.
|
|
63
|
+
- **Hardcoding Scan:** Scan components, utils, and services for any hardcoded
|
|
64
|
+
values that should come from config or environment variables (e.g., API URLs,
|
|
65
|
+
feature flags, region/locale data, identifiers).
|
|
66
|
+
- **Fallback Logic:** Verify how the app behaves if a required config value is
|
|
67
|
+
missing — does it fail gracefully or crash silently?
|
|
68
|
+
|
|
69
|
+
### 2. Security & Secrets Management
|
|
70
|
+
|
|
71
|
+
- **Secret Leaks:** Check for hardcoded API keys, tokens, or credentials
|
|
72
|
+
committed to source. Ensure all secrets use environment variables.
|
|
73
|
+
- **Input Sanitization:** Identify potential XSS or injection vectors,
|
|
74
|
+
particularly where user input or URL parameters are reflected in the DOM or
|
|
75
|
+
database.
|
|
76
|
+
- **Dependency Risks:** Flag obviously deprecated, unmaintained, or unused heavy
|
|
77
|
+
dependencies in `package.json`.
|
|
78
|
+
|
|
79
|
+
### 3. Error Handling & Observability
|
|
80
|
+
|
|
81
|
+
- **Console Hygiene:** Identify debugging artifacts (`console.log`, `debugger`,
|
|
82
|
+
commented-out test code) that must be removed before release.
|
|
83
|
+
- **Error Swallowing:** Flag empty `catch` blocks or places where errors are
|
|
84
|
+
silently ignored rather than logged or re-thrown.
|
|
85
|
+
- **Boundary Handling:** Ensure the app handles unexpected or invalid inputs
|
|
86
|
+
(e.g., bad URL params, missing DB records) with appropriate error responses.
|
|
87
|
+
|
|
88
|
+
### 4. Code Quality & Performance
|
|
89
|
+
|
|
90
|
+
- **Dead Code:** Identify unused variables, imports, functions, or unreachable
|
|
91
|
+
code blocks.
|
|
92
|
+
- **Complexity:** Highlight logic with high cyclomatic complexity (deeply nested
|
|
93
|
+
`if/else`, massive switch statements) that violates DRY principles.
|
|
94
|
+
- **Asset Loading:** Flag synchronous heavy operations or unoptimized asset
|
|
95
|
+
loading patterns that could hurt Core Web Vitals or API response times.
|
|
96
|
+
|
|
97
|
+
## Step 3: Output Requirements
|
|
98
|
+
|
|
99
|
+
Generate and save a highly structured Markdown audit report to
|
|
100
|
+
`{{auditOutputDir}}/audit-sre-results.md`, using the exact template below.
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
# Production Release Candidate Audit
|
|
104
|
+
|
|
105
|
+
## Executive Summary
|
|
106
|
+
|
|
107
|
+
[A brief overview of the release candidate's health. Highlight the most critical
|
|
108
|
+
risks that must be resolved before deployment.]
|
|
109
|
+
|
|
110
|
+
## Findings
|
|
111
|
+
|
|
112
|
+
[Group findings by the categories below. Use this structure for each item:]
|
|
113
|
+
|
|
114
|
+
### [Short Title of the Issue]
|
|
115
|
+
|
|
116
|
+
- **Category:** [Configuration | Security | Observability | Code Quality]
|
|
117
|
+
- **Severity:** [High | Medium | Low]
|
|
118
|
+
- **Location:** [`path/to/file.ts` or relevant area]
|
|
119
|
+
- **Current State:** [What exists and why it's a risk]
|
|
120
|
+
- **Recommendation:** [The specific fix and rationale]
|
|
121
|
+
- **Agent Prompt:**
|
|
122
|
+
`[A copy-pasteable, highly specific prompt to execute this fix independently]`
|
|
123
|
+
|
|
124
|
+
## Release Readiness Checklist
|
|
125
|
+
|
|
126
|
+
| Category | Status |
|
|
127
|
+
| ----------------------- | -------------------------- |
|
|
128
|
+
| Configuration Integrity | ✅ Clear / ⚠️ Issues Found |
|
|
129
|
+
| Security & Secrets | ✅ Clear / ⚠️ Issues Found |
|
|
130
|
+
| Error Handling | ✅ Clear / ⚠️ Issues Found |
|
|
131
|
+
| Code Quality | ✅ Clear / ⚠️ Issues Found |
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Constraint
|
|
137
|
+
|
|
138
|
+
Do NOT generate code fixes, edit files, or create branches. This is strictly a
|
|
139
|
+
read-only analysis. Output the report and stop.
|