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,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backend-security-patterns
|
|
3
|
+
description:
|
|
4
|
+
Combined backend protocols for authentication (Clerk JWT verification) and
|
|
5
|
+
PII-safe observability. Use when handling auth on the server, verifying
|
|
6
|
+
Clerk webhooks via `svix`, scoping metadata via `publicMetadata`/
|
|
7
|
+
`privateMetadata`, or sanitizing logs to keep emails, tokens, and request
|
|
8
|
+
bodies out of telemetry.
|
|
9
|
+
vendor: clerk
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Skill: Backend Security Patterns
|
|
13
|
+
|
|
14
|
+
## Policy Capsule
|
|
15
|
+
|
|
16
|
+
- Verify Clerk JWTs on the server or in middleware on every protected route; never trust client-asserted auth state.
|
|
17
|
+
- Protect sensitive routes with Clerk's middleware helper so unauthenticated requests are redirected before hitting application logic.
|
|
18
|
+
- Verify Clerk webhook signatures with the `svix` library before parsing payloads.
|
|
19
|
+
- Store user state in `publicMetadata` (client-readable) or `privateMetadata` (server-only); never invent a parallel user store.
|
|
20
|
+
- Never log raw request bodies, headers, or user objects that may contain PII (emails, DOB, IPs, Stripe tokens, passwords, JWTs).
|
|
21
|
+
- Log entities by opaque ID only — e.g. `{ event: 'user_created', userId: user.id }`.
|
|
22
|
+
- For Clerk-flow telemetry, log the Clerk user ID or session ID — never the email, name, or metadata payload.
|
|
23
|
+
- Sanitize user input before including it in error logs so payloads cannot smuggle PII through the error path.
|
|
24
|
+
|
|
25
|
+
Combined protocols for authentication (Clerk) and PII-safe observability in
|
|
26
|
+
backend services.
|
|
27
|
+
|
|
28
|
+
## 1. Authentication (Clerk)
|
|
29
|
+
|
|
30
|
+
### Core Principles
|
|
31
|
+
|
|
32
|
+
- **Security First:** Never trust the client. Always verify JWTs on the server
|
|
33
|
+
or in middleware.
|
|
34
|
+
- **Zero-Boilerplate Auth:** Use Clerk's built-in components (`<SignIn>`,
|
|
35
|
+
`<SignUp>`, `<UserButton>`) to maintain UI consistency and security standards.
|
|
36
|
+
- **Metadata Management:** Store application-specific user state in
|
|
37
|
+
`publicMetadata` (read-only by client) or `privateMetadata` (server-only).
|
|
38
|
+
|
|
39
|
+
### Technical Standards
|
|
40
|
+
|
|
41
|
+
- **Middleware:** Protect sensitive routes using Clerk's middleware helper so
|
|
42
|
+
non-authenticated users are redirected before hitting application logic.
|
|
43
|
+
- **Webhooks:** Verify Clerk webhooks using the `svix` library to ensure
|
|
44
|
+
requests originate from Clerk.
|
|
45
|
+
- **Session Tokens:** Use short-lived sessions and handle expired tokens
|
|
46
|
+
gracefully.
|
|
47
|
+
|
|
48
|
+
### Best Practices
|
|
49
|
+
|
|
50
|
+
- **OAuth Providers:** Prefer standard social logins (Google, GitHub) to reduce
|
|
51
|
+
user friction.
|
|
52
|
+
- **Customization:** Use Clerk's theme API to align auth components with the
|
|
53
|
+
project's styling system.
|
|
54
|
+
- **Multi-tenant:** Use Clerk Organizations for applications requiring teams or
|
|
55
|
+
workspaces.
|
|
56
|
+
|
|
57
|
+
## 2. Telemetry & PII Logging
|
|
58
|
+
|
|
59
|
+
### Rules
|
|
60
|
+
|
|
61
|
+
- NEVER log raw request bodies, headers, or user objects that might contain PII
|
|
62
|
+
(Emails, DOB, IP Addresses, Stripe Tokens, Passwords, JWTs).
|
|
63
|
+
- Log entities by opaque ID only (e.g.,
|
|
64
|
+
`logger.info({ event: 'user_created', userId: user.id })`).
|
|
65
|
+
- For errors, log `error.message` and a safe contextual stack trace, but
|
|
66
|
+
sanitize any user input that caused the error before logging.
|
|
67
|
+
- When instrumenting Clerk flows specifically, log the Clerk user ID or session
|
|
68
|
+
ID — never the email, name, or metadata payload.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./.agents/schemas/agentrc.schema.json",
|
|
3
|
+
"project": {
|
|
4
|
+
"baseBranch": "main",
|
|
5
|
+
"paths": {
|
|
6
|
+
"agentRoot": ".agents",
|
|
7
|
+
"docsRoot": "docs",
|
|
8
|
+
"tempRoot": "temp"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"github": {
|
|
12
|
+
"owner": "[OWNER]",
|
|
13
|
+
"repo": "[REPO]",
|
|
14
|
+
"operatorHandle": "@[USERNAME]",
|
|
15
|
+
"projectNumber": null
|
|
16
|
+
},
|
|
17
|
+
"delivery": {
|
|
18
|
+
"ci": {
|
|
19
|
+
"skipForStoryPushes": true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Agent Execution Protocol
|
|
2
|
+
|
|
3
|
+
Version: {{PROTOCOL_VERSION}}
|
|
4
|
+
|
|
5
|
+
You are an AI coding assistant. This protocol governs your execution of the
|
|
6
|
+
current work unit. You must follow these rules strictly.
|
|
7
|
+
|
|
8
|
+
> **Hierarchy shape.** Mandrel uses a **3-tier hierarchy**
|
|
9
|
+
> (Epic → Feature → Story). The work unit is the `type::story` issue
|
|
10
|
+
> itself, with acceptance criteria and verification inlined on the
|
|
11
|
+
> Story body. There is no per-Task sub-loop; the agent authors commit
|
|
12
|
+
> subjects directly per `.agents/rules/git-conventions.md` and
|
|
13
|
+
> references the parent Story via `(refs #<storyId>)`. Branch naming
|
|
14
|
+
> (`{{BRANCH_NAME}}` from `{{EPIC_BRANCH}}`), the Epic-branch
|
|
15
|
+
> integration target, and the close protocol are as documented below.
|
|
16
|
+
|
|
17
|
+
## 1. Pre-Flight Verification
|
|
18
|
+
|
|
19
|
+
Before writing any code, verify that all dependencies are resolved. If the
|
|
20
|
+
Story is blocked by other Stories, you must STOP and report that the Story is
|
|
21
|
+
blocked.
|
|
22
|
+
|
|
23
|
+
## 2. Branching Convention
|
|
24
|
+
|
|
25
|
+
All implementation work must be committed to the following branch:
|
|
26
|
+
`{{BRANCH_NAME}}` (This branches from `{{EPIC_BRANCH}}`).
|
|
27
|
+
|
|
28
|
+
Do not push directly to any protected branch ({{PROTECTED_BRANCHES}}).
|
|
29
|
+
|
|
30
|
+
## 3. Human-in-the-Loop (HITL) Pause
|
|
31
|
+
|
|
32
|
+
If you encounter ambiguity where you need human input before proceeding, or
|
|
33
|
+
hit an unrecoverable blocker, STOP execution, apply `agent::blocked` to this
|
|
34
|
+
Story, and post a friction comment naming the decision required. `risk::high`
|
|
35
|
+
is informational metadata only — it does not pause execution on its own.
|
|
36
|
+
|
|
37
|
+
## 4. Error Recovery
|
|
38
|
+
|
|
39
|
+
If you hit an unrecoverable error during implementation:
|
|
40
|
+
|
|
41
|
+
1. Apply the `agent::blocked` label to this Story (Issue #{{TASK_ID}}).
|
|
42
|
+
2. Report the friction to the operator clearly.
|
|
43
|
+
|
|
44
|
+
## 5. Close-Out Protocol
|
|
45
|
+
|
|
46
|
+
When your implementation is complete and verified:
|
|
47
|
+
|
|
48
|
+
1. Stage and commit your changes to the Story branch (`{{BRANCH_NAME}}`).
|
|
49
|
+
2. Do **not** pre-run validation commands (e.g. `{{VALIDATE_CMD}}` /
|
|
50
|
+
`{{TEST_CMD}}`) here. The close script's lint/test/format/maintainability
|
|
51
|
+
chain is the authoritative gate, run at Story closure (`story-close.js`).
|
|
52
|
+
Exception: you may run them interactively while iterating on a fix.
|
|
53
|
+
3. The Story branch is auto-merged into the Epic branch by
|
|
54
|
+
`helpers/epic-deliver-story` (via `story-close.js`) — do **not** merge
|
|
55
|
+
manually.
|
|
56
|
+
|
|
57
|
+
## 6. Definition of Done
|
|
58
|
+
|
|
59
|
+
### Code Quality
|
|
60
|
+
|
|
61
|
+
Every Story that touches production source must satisfy the numeric
|
|
62
|
+
guardrails in
|
|
63
|
+
[`helpers/code-quality-guardrails.md`](../workflows/helpers/code-quality-guardrails.md):
|
|
64
|
+
cyclomatic complexity ceilings (flag > 8, must-fix > 12), the same-commit
|
|
65
|
+
sibling-test convention, the per-file Maintainability-Index drop ceiling
|
|
66
|
+
(refactor when > 1.5pt), and the rename = baseline-refresh rule. Verify
|
|
67
|
+
at-keyboard with `npm run quality:preview` (the same diff-scoped MI + CRAP
|
|
68
|
+
preview the `.husky/pre-commit` hook runs) **before** committing. The
|
|
69
|
+
thresholds are tunable via `agentSettings.quality.codingGuardrails` in
|
|
70
|
+
`.agentrc.json` — never fork the helper to change a number.
|
|
71
|
+
|
|
72
|
+
---
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
> **Stub generated by guided onboarding.** Replace each placeholder section
|
|
4
|
+
> with the real contents for your project. This file is one of the
|
|
5
|
+
> `project.docsContextFiles` mandatory-reads — agents load it before every
|
|
6
|
+
> task, so keep it accurate.
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
One paragraph describing what this system does and who uses it.
|
|
11
|
+
|
|
12
|
+
## Tech Stack
|
|
13
|
+
|
|
14
|
+
| Area | Choice |
|
|
15
|
+
| ---------- | ------------------------------- |
|
|
16
|
+
| Language | _e.g. TypeScript_ |
|
|
17
|
+
| Runtime | _e.g. Node.js 22_ |
|
|
18
|
+
| Framework | _e.g. Hono / Next.js_ |
|
|
19
|
+
| Database | _e.g. Postgres_ |
|
|
20
|
+
| ORM | _e.g. Drizzle / Prisma_ |
|
|
21
|
+
| Auth | _e.g. Clerk / Auth.js_ |
|
|
22
|
+
| Validation | _e.g. Zod_ |
|
|
23
|
+
|
|
24
|
+
## Module Map
|
|
25
|
+
|
|
26
|
+
Describe the top-level directories and their responsibilities.
|
|
27
|
+
|
|
28
|
+
## Key Decisions
|
|
29
|
+
|
|
30
|
+
Link to `decisions.md` for the architectural decision log.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Architectural Decisions Log
|
|
2
|
+
|
|
3
|
+
> **Stub generated by guided onboarding.** Record significant, hard-to-reverse
|
|
4
|
+
> decisions here as dated entries. This file is one of the
|
|
5
|
+
> `project.docsContextFiles` mandatory-reads — agents consult it before every
|
|
6
|
+
> task to avoid re-litigating settled choices.
|
|
7
|
+
|
|
8
|
+
## Format
|
|
9
|
+
|
|
10
|
+
Each decision is a short, append-only entry:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
## YYYY-MM-DD — <short title>
|
|
14
|
+
|
|
15
|
+
**Context.** What forced the decision (constraint, problem, trade-off).
|
|
16
|
+
|
|
17
|
+
**Decision.** What was chosen.
|
|
18
|
+
|
|
19
|
+
**Consequences.** What this enables and what it costs going forward.
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Decisions
|
|
23
|
+
|
|
24
|
+
_No decisions recorded yet. Add the first entry above this line._
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: >-
|
|
3
|
+
npm-era upgrade wraparound for a Mandrel consumer. Runs `mandrel update`
|
|
4
|
+
(resolve newest non-major version → install → re-materialize `.agents/` →
|
|
5
|
+
migrate → doctor → surface changelog) as the single mechanical step, then
|
|
6
|
+
walks the operator through the judgment wraparound the CLI deliberately
|
|
7
|
+
leaves unowned: reconcile `.agentrc.json`, install the Epic #1386
|
|
8
|
+
quality-gate surface, refresh the harness permission allowlist, reconcile
|
|
9
|
+
the consumer's `AGENTS.md` / runbooks against the surfaced changelog, and
|
|
10
|
+
stage + commit the staged lockfile bump.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /agents-update
|
|
14
|
+
|
|
15
|
+
> **Upgrade owner.** The mechanical upgrade is owned end to end by the
|
|
16
|
+
> [`mandrel update`](../../lib/cli/update.js) CLI under the npm distribution
|
|
17
|
+
> model (`mandrel`, #3436/#3437). This workflow wraps that CLI: it
|
|
18
|
+
> runs `mandrel update`, then walks the operator through the
|
|
19
|
+
> **distribution-agnostic judgment steps** the CLI deliberately does **not**
|
|
20
|
+
> perform — config reconciliation, the Epic #1386 quality-gate installs, the
|
|
21
|
+
> permission-allowlist refresh, the consumer-side changelog reconciliation,
|
|
22
|
+
> and the stage-and-commit of the staged lockfile bump.
|
|
23
|
+
|
|
24
|
+
## Overview
|
|
25
|
+
|
|
26
|
+
`/agents-update` advances the consumer repo to the newest non-major
|
|
27
|
+
`mandrel` release, re-materializes `.agents/`, and regenerates the
|
|
28
|
+
flat `.claude/commands/` tree (invoked as `/<name>`) against the new workflow
|
|
29
|
+
set — then reconciles the consumer's own config, harness allowlist, and
|
|
30
|
+
instructions against the change set the upgrade surfaced.
|
|
31
|
+
|
|
32
|
+
The upgrade contract:
|
|
33
|
+
|
|
34
|
+
- **The version only moves on explicit invocation.** `mandrel update`
|
|
35
|
+
resolves the newest published version and bumps the dependency only when
|
|
36
|
+
you run it. There is no `postinstall` hook and no background drift;
|
|
37
|
+
teammates work against the exact `mandrel` version pinned in the
|
|
38
|
+
consumer's `package-lock.json` until someone runs this workflow and commits
|
|
39
|
+
the result.
|
|
40
|
+
- **CI honours the committed lockfile.** Consumer CI runs `npm ci` against
|
|
41
|
+
the committed `package-lock.json`, so it installs exactly the version the
|
|
42
|
+
lockfile pins — never "whatever the registry's newest is today."
|
|
43
|
+
- **The major axis is gated.** `mandrel update` refuses to cross a major
|
|
44
|
+
boundary (e.g. `1.x → 2.0`) without an explicit `--major`, printing a
|
|
45
|
+
pointer to `docs/upgrade-major.md` and exiting non-zero without touching
|
|
46
|
+
anything. Routine minor/patch bumps within the current major are never
|
|
47
|
+
gated.
|
|
48
|
+
- **The CLI never commits.** The npm bump rewrites `package.json` /
|
|
49
|
+
`package-lock.json` and leaves them **staged on disk** for operator review;
|
|
50
|
+
`mandrel update` performs no `git add` / `git commit`. Staging and
|
|
51
|
+
committing the bump (plus any consumer-side reconciliation) is Step 5 of
|
|
52
|
+
this workflow.
|
|
53
|
+
- **`.agents/workflows/` → `.claude/commands/` projection is delegated.**
|
|
54
|
+
`mandrel update`'s sync step re-materializes `.agents/`, and the only
|
|
55
|
+
authoritative writer of the generated flat command tree
|
|
56
|
+
(`.claude/commands/`) is
|
|
57
|
+
[`sync-claude-commands.js`](../scripts/sync-claude-commands.js), which
|
|
58
|
+
prepends the `<!-- AUTO-GENERATED -->` header that
|
|
59
|
+
`/agents-bootstrap-project` parity-checks. Nothing else copies workflow
|
|
60
|
+
files.
|
|
61
|
+
|
|
62
|
+
> **Persona**: `devops-engineer` · **Skills**:
|
|
63
|
+
> `core/ci-cd-and-automation`, `core/documentation-and-adrs`
|
|
64
|
+
|
|
65
|
+
## Step 1 — Run the updater
|
|
66
|
+
|
|
67
|
+
Preview first, then apply. From the consumer repo root:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
mandrel update --dry-run
|
|
71
|
+
mandrel update
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
`mandrel update --dry-run` resolves the newest non-major version and prints
|
|
75
|
+
the ordered step plan (`npm-update → runSync → runMigrations → doctor →
|
|
76
|
+
surface changelog`) without invoking any effectful seam — no dependency bump,
|
|
77
|
+
no sync, no migrations, no doctor, nothing written. Read the planned target
|
|
78
|
+
version before applying.
|
|
79
|
+
|
|
80
|
+
`mandrel update` (no flags) runs the live cycle:
|
|
81
|
+
|
|
82
|
+
1. **Resolve target** — the newest published `mandrel` version (via
|
|
83
|
+
the daily freshness cache in `temp/version-check.json`) and the currently
|
|
84
|
+
installed version.
|
|
85
|
+
2. **Major gate** — if the newest version crosses a major boundary, the run
|
|
86
|
+
declines, prints the `docs/upgrade-major.md` pointer, and exits non-zero
|
|
87
|
+
without touching anything. Re-run with `--major` only after reviewing that
|
|
88
|
+
runbook.
|
|
89
|
+
3. **No-op short-circuit** — already on the newest version ⇒ prints
|
|
90
|
+
`Already up to date` and exits 0.
|
|
91
|
+
4. **Install** — bumps the dependency (default
|
|
92
|
+
`npm install mandrel@<target>`; pass
|
|
93
|
+
`--install-cmd "<pm> <args>"` for a pnpm/yarn workspace). The lockfile
|
|
94
|
+
change is left **staged** for review; the CLI never commits.
|
|
95
|
+
5. **runSync** — re-materializes `.agents/` from the freshly installed
|
|
96
|
+
payload, which also regenerates the flat `.claude/commands/` tree via
|
|
97
|
+
`sync-claude-commands.js`.
|
|
98
|
+
6. **runMigrations** — applies any version-keyed migration steps for the
|
|
99
|
+
crossed range.
|
|
100
|
+
7. **doctor** — runs the check registry to verify the resulting install.
|
|
101
|
+
8. **Surface changelog** — prints the `docs/CHANGELOG.md` section(s) covering
|
|
102
|
+
the applied range `(current, target]`. Capture this output — Step 4
|
|
103
|
+
reconciles the consumer's own instructions against it.
|
|
104
|
+
|
|
105
|
+
## Step 2 — Expected output
|
|
106
|
+
|
|
107
|
+
A successful bump ends with:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
Updating v1.44.0 → v1.46.0…
|
|
111
|
+
✅ Updated to v1.46.0. The lockfile bump is staged for review.
|
|
112
|
+
|
|
113
|
+
Changelog for v1.46.0:
|
|
114
|
+
## [1.46.0](…)
|
|
115
|
+
### Features
|
|
116
|
+
* new workflow X
|
|
117
|
+
### Bug Fixes
|
|
118
|
+
* tighten Y validation
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
A no-op run (already on the newest version) looks like:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
✅ Already up to date (v1.46.0 is the newest version).
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
A `--dry-run` preview looks like:
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
mandrel update — planned upgrade v1.44.0 → v1.46.0
|
|
131
|
+
1. npm-update
|
|
132
|
+
2. runSync
|
|
133
|
+
3. runMigrations
|
|
134
|
+
4. doctor
|
|
135
|
+
5. surface changelog
|
|
136
|
+
Dry run: no files written, no dependency bumped.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Step 3 — Reconcile `.agentrc.json` against the new defaults
|
|
140
|
+
|
|
141
|
+
A framework bump can add or reshape fields in
|
|
142
|
+
`.agents/docs/agentrc-reference.json` (and the underlying schema). Run the
|
|
143
|
+
reconciliation helper to verify the consumer's `.agentrc.json` still
|
|
144
|
+
validates against the new schema, and to surface any project values that
|
|
145
|
+
already match framework defaults (and could therefore be safely deleted):
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
node .agents/scripts/sync-agentrc.js
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
The helper (Story #1995) is **default-aware** and **read-only**:
|
|
152
|
+
|
|
153
|
+
- The project config is **validated** against the framework schema. Any
|
|
154
|
+
failure aborts the run with a diagnostic so the operator can fix the
|
|
155
|
+
underlying typo / missing required key before proceeding.
|
|
156
|
+
- Optional keys missing from the project are **never auto-filled**. The
|
|
157
|
+
runtime layers framework defaults at read time, so writing them into
|
|
158
|
+
`.agentrc.json` only bloats the consumer's config diff without
|
|
159
|
+
changing behaviour.
|
|
160
|
+
- Project values that deep-equal the framework default are flagged as
|
|
161
|
+
`[REDUNDANT]` advisory rows — informational only; the file is never
|
|
162
|
+
modified.
|
|
163
|
+
|
|
164
|
+
Full procedure reference:
|
|
165
|
+
[`helpers/agents-sync-config.md`](helpers/agents-sync-config.md).
|
|
166
|
+
|
|
167
|
+
If the helper prints `No changes required` with no advisories, the config
|
|
168
|
+
is already in sync — carry on. If it lists `[REDUNDANT]` rows, you may
|
|
169
|
+
optionally delete those keys from `.agentrc.json` by hand (commit
|
|
170
|
+
alongside the bump in Step 5) for a leaner config. If it exits non-zero,
|
|
171
|
+
fix the validation error and re-run before proceeding.
|
|
172
|
+
|
|
173
|
+
## Step 3.5 — Upgrade the stabilized-quality-gates surface (Epic #1386)
|
|
174
|
+
|
|
175
|
+
A framework bump that crosses the Epic #1386 boundary requires four
|
|
176
|
+
additive installs on the consumer project so the new gate behaviour is
|
|
177
|
+
actually wired into the consumer's commit / push / CI surfaces. The
|
|
178
|
+
installs share the same idempotent helpers the quality-gates phase of
|
|
179
|
+
[`bootstrap.js`](../scripts/bootstrap.js) uses,
|
|
180
|
+
so a project that already ran the bootstrap on a post-Epic #1386
|
|
181
|
+
framework version sees `no-change` everywhere here.
|
|
182
|
+
|
|
183
|
+
Run from the consumer repo root:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
node -e "
|
|
187
|
+
Promise.all([
|
|
188
|
+
import('./.agents/scripts/lib/bootstrap/quality-bootstrap.js'),
|
|
189
|
+
import('./.agents/scripts/lib/bootstrap/baselines-layout-migration.js'),
|
|
190
|
+
]).then(([qb, bm]) => {
|
|
191
|
+
const root = process.cwd();
|
|
192
|
+
const quality = qb.applyQualityBootstrap({ projectRoot: root });
|
|
193
|
+
const baselines = bm.migrateBaselinesLayout({
|
|
194
|
+
baselinesDir: require('node:path').join(root, 'baselines'),
|
|
195
|
+
repoRoot: root,
|
|
196
|
+
});
|
|
197
|
+
console.log(JSON.stringify({ quality, baselines }, null, 2));
|
|
198
|
+
});
|
|
199
|
+
"
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
The four `quality-bootstrap` outcomes:
|
|
203
|
+
|
|
204
|
+
1. **`helper`** — copies
|
|
205
|
+
[`code-quality-guardrails.md`](helpers/code-quality-guardrails.md)
|
|
206
|
+
into the project's `.agents/workflows/helpers/`. On the npm
|
|
207
|
+
distribution the helper is materialized into `.agents/` by
|
|
208
|
+
`mandrel update`'s sync step, so this typically reports a `no-change`
|
|
209
|
+
present outcome.
|
|
210
|
+
2. **`hook`** — installs `.husky/pre-commit` carrying the
|
|
211
|
+
diff-scoped `quality:preview` invocation. **Custom hooks are
|
|
212
|
+
preserved**: when a non-framework hook already exists the action is
|
|
213
|
+
`custom-hook-skip` and the helper returns the recommended snippet
|
|
214
|
+
the operator should append by hand. Print the notice and move on —
|
|
215
|
+
never overwrite a custom hook silently.
|
|
216
|
+
3. **`scripts`** — backfills `quality:preview` and `quality:watch` in
|
|
217
|
+
`package.json` only when the keys are absent. Existing operator
|
|
218
|
+
values survive.
|
|
219
|
+
4. **`config`** — seeds `delivery.quality.codingGuardrails` and
|
|
220
|
+
`delivery.quality.autoRefresh` defaults in `.agentrc.json`.
|
|
221
|
+
Only missing keys are written — operator overrides survive.
|
|
222
|
+
|
|
223
|
+
The `baselines-layout-migration` step relocates per-Epic snapshots
|
|
224
|
+
into the `temp/epic/<id>/baselines/` namespace (Story #1467: ephemeral
|
|
225
|
+
scratch state, not committed, reaped on `/epic-deliver` merge with the
|
|
226
|
+
rest of the per-Epic temp tree):
|
|
227
|
+
|
|
228
|
+
- Loose `baselines/epic-<id>-{maintainability,crap}.json` files →
|
|
229
|
+
moved under `temp/epic/<id>/baselines/`.
|
|
230
|
+
- Legacy `baselines/snapshots/<id>/{maintainability,crap}.json` trees →
|
|
231
|
+
re-keyed under `temp/epic/<id>/baselines/`.
|
|
232
|
+
- Committed `baselines/epic/<id>/{maintainability,crap}.json` snapshots
|
|
233
|
+
(the shape Story #1396 introduced) → moved out to
|
|
234
|
+
`temp/epic/<id>/baselines/` and the now-empty committed tree is staged
|
|
235
|
+
for removal via `git rm -r --quiet --ignore-unmatch baselines/epic/<id>`
|
|
236
|
+
so the next commit prunes the tracked tree.
|
|
237
|
+
- The main-tracked `baselines/{maintainability,crap}.json` files at
|
|
238
|
+
the root are **not** touched — they remain the `main`-baseline
|
|
239
|
+
contract for the framework.
|
|
240
|
+
|
|
241
|
+
A second run produces `no-change` on every install path, which is the
|
|
242
|
+
guarantee `agents-update`'s idempotence contract requires.
|
|
243
|
+
|
|
244
|
+
## Step 3.6 — Refresh the harness permission allowlist (`/fewer-permission-prompts`)
|
|
245
|
+
|
|
246
|
+
A framework bump frequently introduces new helper scripts and `node
|
|
247
|
+
.agents/scripts/<name>.js` invocations the consumer's
|
|
248
|
+
`.claude/settings.json` allowlist has never seen. Left alone, the next
|
|
249
|
+
`/story-deliver` or `/epic-deliver` run trips a fresh wave of
|
|
250
|
+
permission prompts that operators answer by hand — and those hand-tuned
|
|
251
|
+
allowlists drift across projects.
|
|
252
|
+
|
|
253
|
+
Run the harness skill that scans recent transcripts and emits an
|
|
254
|
+
additive allowlist patch for `.claude/settings.json`:
|
|
255
|
+
|
|
256
|
+
```text
|
|
257
|
+
/fewer-permission-prompts
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
The skill is supplied by the Claude Code harness (it is not a workflow
|
|
261
|
+
in this repo); invoke it as a slash command from the same Claude Code
|
|
262
|
+
session that just ran `mandrel update`. It:
|
|
263
|
+
|
|
264
|
+
1. Reads recent transcripts under `.claude/projects/.../`.
|
|
265
|
+
2. Buckets repeated read-only Bash + MCP tool calls by frequency.
|
|
266
|
+
3. Proposes a prioritized additive allowlist patch (project
|
|
267
|
+
`.claude/settings.json`) — never removes existing entries.
|
|
268
|
+
|
|
269
|
+
Treat the skill's output as a **PR-reviewable artifact**, not an
|
|
270
|
+
auto-applied change:
|
|
271
|
+
|
|
272
|
+
- Read every proposed entry. Reject anything that grants write
|
|
273
|
+
permissions, network egress, or shells out to a destructive
|
|
274
|
+
command (`rm`, `git push --force`, `gh release delete`, ...).
|
|
275
|
+
- Accept only narrowly-scoped read-only entries
|
|
276
|
+
(`Bash(node .agents/scripts/<name>.js *)`, `Bash(gh issue view *)`,
|
|
277
|
+
`mcp__github__get_*`, etc.).
|
|
278
|
+
- Apply the accepted subset by editing `.claude/settings.json` and
|
|
279
|
+
stage it alongside the version bump in Step 5.
|
|
280
|
+
|
|
281
|
+
The maintenance cadence is **once per `/agents-update` invocation** —
|
|
282
|
+
the same operator who just ran `mandrel update` is the one with the
|
|
283
|
+
freshest transcript context to review the proposed allowlist
|
|
284
|
+
diff. Skipping the step is fine when the bump introduces no new
|
|
285
|
+
scripts (the skill will report "no new high-frequency calls"), but the
|
|
286
|
+
step itself is non-optional: silence-by-omission is what produces the
|
|
287
|
+
hand-tuned drift this maintenance is meant to eliminate.
|
|
288
|
+
|
|
289
|
+
## Step 4 — Review the surfaced changelog and update consumer-side guidance
|
|
290
|
+
|
|
291
|
+
Framework upgrades change behaviour the consumer project's own
|
|
292
|
+
`AGENTS.md` (or `CLAUDE.md`) and project runbooks often encode — e.g.,
|
|
293
|
+
new validators that change what a planner is allowed to emit, new
|
|
294
|
+
ticket-body schemas downstream agents must produce, retired flags or
|
|
295
|
+
defaults the consumer's instructions still reference. The version bump is
|
|
296
|
+
the right moment to reconcile those, while the diff is in front of the
|
|
297
|
+
operator.
|
|
298
|
+
|
|
299
|
+
`mandrel update` already **surfaced the changelog** for the applied range
|
|
300
|
+
`(current, target]` in Step 1 — its final step prints every
|
|
301
|
+
`docs/CHANGELOG.md` section newer than the installed version and no newer
|
|
302
|
+
than the target. That printed range is your source of truth; you do not
|
|
303
|
+
need to fetch a CHANGELOG from anywhere, since the CLI emitted it inline.
|
|
304
|
+
If the upgrade output scrolled past, re-read the prior run's transcript or
|
|
305
|
+
open the framework's GitHub Releases page for the version headers the
|
|
306
|
+
bump spanned.
|
|
307
|
+
|
|
308
|
+
For each changelog entry between the installed and target versions, check
|
|
309
|
+
the consumer repo for guidance that has gone stale or guidance that should
|
|
310
|
+
now exist:
|
|
311
|
+
|
|
312
|
+
1. **Consumer `AGENTS.md` / `CLAUDE.md`.** If the changelog entry
|
|
313
|
+
introduces a new contract the consumer instructions must reflect
|
|
314
|
+
(e.g., "tasks must emit a structured 4-section body", "PRs must
|
|
315
|
+
include `audit-snapshot:`"), update the consumer instructions so a
|
|
316
|
+
fresh agent reading them in isolation produces output that passes
|
|
317
|
+
the framework's new validators. Conversely, remove or rewrite
|
|
318
|
+
instructions that contradict a tightened rule.
|
|
319
|
+
2. **Project-specific runbooks.** If the consumer has its own runbooks
|
|
320
|
+
(e.g., `docs/RUNBOOK.md`, `docs/delivery-runner.md`) that paraphrase
|
|
321
|
+
framework workflows, sweep them for renamed flags / changed exit
|
|
322
|
+
codes / removed scripts.
|
|
323
|
+
|
|
324
|
+
Do not invent updates. If a changelog entry has no consumer-side
|
|
325
|
+
implication, note that explicitly in your scratch and move on — silence
|
|
326
|
+
is a valid review outcome. The goal is to leave the consumer
|
|
327
|
+
instructions and runbooks *consistent* with the new framework version,
|
|
328
|
+
not to manufacture churn.
|
|
329
|
+
|
|
330
|
+
Stage every consumer-side edit alongside the staged lockfile bump so the
|
|
331
|
+
upgrade and the reconciliation land in the same commit (Step 5). A
|
|
332
|
+
reviewer reading the bump should be able to see, in one diff, both
|
|
333
|
+
"the framework version moved" and "what we changed in our own files in
|
|
334
|
+
response."
|
|
335
|
+
|
|
336
|
+
## Step 5 — Commit the bump
|
|
337
|
+
|
|
338
|
+
`mandrel update` leaves the dependency bump **staged on disk** but never
|
|
339
|
+
commits. After reviewing the surfaced changelog, any `.agentrc.json`
|
|
340
|
+
reconciliation diff from Step 3, the `.claude/settings.json` allowlist
|
|
341
|
+
patch from Step 3.6, and the consumer instruction / runbook updates from
|
|
342
|
+
Step 4, stage and commit the bump (plus the reconciliation and consumer
|
|
343
|
+
edits, if any) from the consumer repo root:
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
git add package.json package-lock.json .agentrc.json .claude/settings.json AGENTS.md # plus any runbook files touched in Step 4
|
|
347
|
+
git commit -m "chore: update mandrel to v<NEW_VERSION>
|
|
348
|
+
|
|
349
|
+
Upgraded v<OLD_VERSION> → v<NEW_VERSION> via mandrel update.
|
|
350
|
+
|
|
351
|
+
- feat: new workflow X
|
|
352
|
+
- fix: tighten Y validation
|
|
353
|
+
- consumer: update AGENTS.md task-body schema reference"
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
Include the version range and, optionally, the surfaced changelog
|
|
357
|
+
highlights so reviewers can see what moved without re-running the
|
|
358
|
+
updater. Omit `.agentrc.json` from the `git add` if Step 3 reported
|
|
359
|
+
`No changes required`; omit `.claude/settings.json` if Step 3.6 produced
|
|
360
|
+
no accepted entries; omit the consumer-instruction paths if Step 4 was a
|
|
361
|
+
no-op.
|
|
362
|
+
|
|
363
|
+
> **Note:** `mandrel update`'s sync step also re-materializes `.agents/`
|
|
364
|
+
> (and the flat command tree under `.claude/commands/`). On the npm
|
|
365
|
+
> distribution `.agents/` is a
|
|
366
|
+
> materialized directory rebuilt from the installed package — whether the
|
|
367
|
+
> consumer commits the regenerated `.agents/` tree, or treats it as a
|
|
368
|
+
> gitignored install artifact rebuilt by `mandrel sync`, depends on the
|
|
369
|
+
> consumer's own vendoring policy. Stage the `.agents/` / `.claude/`
|
|
370
|
+
> changes here only if the project commits its materialized tree.
|
|
371
|
+
|
|
372
|
+
## Troubleshooting
|
|
373
|
+
|
|
374
|
+
- **`a newer MAJOR version (X.0.0) is available`** — `mandrel update`
|
|
375
|
+
hit the major gate and exited non-zero without touching anything. A
|
|
376
|
+
major crossing is a breaking upgrade. Read `docs/upgrade-major.md`,
|
|
377
|
+
then re-run `mandrel update --major` only after you have absorbed the
|
|
378
|
+
migration steps that runbook describes.
|
|
379
|
+
|
|
380
|
+
- **`doctor reported failures: …`** — the dependency bumped and `.agents/`
|
|
381
|
+
re-materialized, but a doctor check failed (and the run exited
|
|
382
|
+
non-zero). Run `mandrel doctor` for the per-check remedies. The lockfile
|
|
383
|
+
bump is already staged; fix the doctor finding (often a missing
|
|
384
|
+
bootstrap install — Step 3.5 — or a stale `.agentrc.json` — Step 3)
|
|
385
|
+
before committing in Step 5.
|
|
386
|
+
|
|
387
|
+
- **Install command failed / `npm install … exited <n>`** — the npm
|
|
388
|
+
install step could not bump the dependency (network hiccup, registry
|
|
389
|
+
auth gap, or a peer-dependency conflict). Resolve the underlying npm
|
|
390
|
+
error and re-run `mandrel update`; it is idempotent — a clean re-run
|
|
391
|
+
resumes from the resolve step and short-circuits if the install already
|
|
392
|
+
landed.
|
|
393
|
+
|
|
394
|
+
- **Wrong package manager** — the default install is `npm install`. For a
|
|
395
|
+
pnpm or yarn workspace, pass the package manager explicitly:
|
|
396
|
+
`mandrel update --install-cmd "pnpm add mandrel@<target>"`.
|
|
397
|
+
The registry probe always stays on `npm view` (a PM-agnostic query); only
|
|
398
|
+
the install seam honours the override.
|
|
399
|
+
|
|
400
|
+
## Constraints
|
|
401
|
+
|
|
402
|
+
- **Idempotent.** A second `mandrel update` immediately after a successful
|
|
403
|
+
run resolves the same newest version, hits the no-op short-circuit, and
|
|
404
|
+
prints `Already up to date` — exit 0, nothing bumped.
|
|
405
|
+
- **Non-major only by default.** The major axis is gated behind an explicit
|
|
406
|
+
`--major`; routine minor/patch bumps within the current major apply
|
|
407
|
+
without a gate.
|
|
408
|
+
- **No auto-commit.** `mandrel update` leaves the lockfile bump staged on
|
|
409
|
+
disk and never runs git. The operator reviews the surfaced changelog and
|
|
410
|
+
writes the commit message (Step 5) — the CLI does not know whether the
|
|
411
|
+
bump is release-worthy for the consumer.
|
|
412
|
+
- **No framework-side version bump.** This workflow advances the
|
|
413
|
+
*consumer's* pinned `mandrel` version. It does not tag a release
|
|
414
|
+
on the framework itself — that remains the framework maintainer's call via
|
|
415
|
+
release-please.
|