mandrel 2.59.0 → 2.61.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 +21 -19
- package/.agents/agents/acceptance-critic.md +24 -43
- package/.agents/agents/story-worker.md +20 -21
- package/.agents/docs/agentrc-reference.json +5 -84
- package/.agents/docs/configuration.md +48 -132
- package/.agents/docs/workflows.md +2 -2
- package/.agents/instructions.md +5 -8
- package/.agents/rules/ci-remediation.md +41 -8
- package/.agents/rules/gherkin-standards.md +4 -0
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +16 -496
- package/.agents/schemas/story-deliver-terminal.schema.json +13 -3
- package/.agents/schemas/validation-evidence.schema.json +2 -1
- package/.agents/scripts/README.md +23 -13
- package/.agents/scripts/acceptance-eval.js +35 -169
- package/.agents/scripts/agents-bootstrap-github.js +27 -129
- package/.agents/scripts/apply-quality-bootstrap.js +4 -40
- package/.agents/scripts/audit-baselines.js +6 -27
- package/.agents/scripts/audit-labels-bootstrap.js +5 -29
- package/.agents/scripts/audit-to-stories.js +91 -361
- package/.agents/scripts/boot-sweep.js +19 -72
- package/.agents/scripts/bootstrap.js +74 -395
- package/.agents/scripts/ceremony-derive.js +10 -41
- package/.agents/scripts/check-arch-cycles.js +14 -64
- package/.agents/scripts/check-baselines.js +8 -48
- package/.agents/scripts/check-context-budget.js +105 -311
- package/.agents/scripts/check-cyclomatic.js +12 -44
- package/.agents/scripts/check-dead-exports.js +13 -64
- package/.agents/scripts/check-doc-links.js +38 -186
- package/.agents/scripts/check-gherkin-corpus.js +24 -127
- package/.agents/scripts/check-test-temp-hygiene.js +28 -169
- package/.agents/scripts/coverage-capture.js +34 -98
- package/.agents/scripts/deliver-light.js +25 -171
- package/.agents/scripts/deliver-recover.js +6 -42
- package/.agents/scripts/deliver-run.js +534 -0
- package/.agents/scripts/diagnose-friction.js +24 -116
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/evidence-gate.js +23 -85
- package/.agents/scripts/file-ci-gap.js +57 -49
- package/.agents/scripts/generate-config-docs.js +30 -170
- package/.agents/scripts/generate-lens-checklists.js +8 -52
- package/.agents/scripts/generate-skills-index.js +14 -112
- package/.agents/scripts/generate-workflows-doc.js +10 -70
- package/.agents/scripts/git-cleanup.js +2 -34
- package/.agents/scripts/lib/Graph.js +24 -81
- package/.agents/scripts/lib/ITicketingProvider.js +47 -143
- package/.agents/scripts/lib/Logger.js +14 -76
- package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
- package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
- package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
- package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
- package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
- package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
- package/.agents/scripts/lib/audit-baselines/read.js +3 -16
- package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
- package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
- package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
- package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
- package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
- package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
- package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
- package/.agents/scripts/lib/audit-suite/findings.js +12 -52
- package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
- package/.agents/scripts/lib/audit-suite/index.js +1 -15
- package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
- package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
- package/.agents/scripts/lib/audit-suite/runner.js +13 -43
- package/.agents/scripts/lib/audit-suite/selector.js +49 -349
- package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
- package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
- package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
- package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
- package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
- package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
- package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
- package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
- package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
- package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
- package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
- package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
- package/.agents/scripts/lib/baseline-loader.js +12 -51
- package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
- package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
- package/.agents/scripts/lib/baselines/components.js +10 -61
- package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
- package/.agents/scripts/lib/baselines/crap-preview-incremental.js +7 -19
- package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
- package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
- package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
- package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
- package/.agents/scripts/lib/baselines/envelope.js +13 -129
- package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
- package/.agents/scripts/lib/baselines/git-base.js +23 -142
- package/.agents/scripts/lib/baselines/kernel.js +11 -111
- package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
- package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
- package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
- package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
- package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
- package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
- package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
- package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
- package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
- package/.agents/scripts/lib/baselines/path-canon.js +19 -128
- package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
- package/.agents/scripts/lib/baselines/reader.js +14 -107
- package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
- package/.agents/scripts/lib/baselines/scope.js +11 -135
- package/.agents/scripts/lib/baselines/writer.js +16 -149
- package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
- package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
- package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
- package/.agents/scripts/lib/bdd-step-index.js +26 -100
- package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
- package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
- package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
- package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
- package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
- package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
- package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
- package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
- package/.agents/scripts/lib/bootstrap/summary.js +1 -8
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
- package/.agents/scripts/lib/branch-name-guard.js +4 -23
- package/.agents/scripts/lib/changed-files.js +39 -121
- package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
- package/.agents/scripts/lib/checks/index.js +18 -101
- package/.agents/scripts/lib/checks/loop-health.js +11 -53
- package/.agents/scripts/lib/checks/state.js +16 -91
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
- package/.agents/scripts/lib/child-exec.js +39 -108
- package/.agents/scripts/lib/cli/standard-args.js +9 -116
- package/.agents/scripts/lib/cli-args.js +31 -146
- package/.agents/scripts/lib/cli-usage.js +5 -27
- package/.agents/scripts/lib/cli-utils.js +2 -12
- package/.agents/scripts/lib/close-validation/commands.js +13 -76
- package/.agents/scripts/lib/close-validation/gates.js +92 -331
- package/.agents/scripts/lib/close-validation/process.js +121 -151
- package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
- package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
- package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
- package/.agents/scripts/lib/close-validation/runner.js +53 -110
- package/.agents/scripts/lib/command-header.js +6 -28
- package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
- package/.agents/scripts/lib/config/baselines.js +3 -14
- package/.agents/scripts/lib/config/ci.js +8 -38
- package/.agents/scripts/lib/config/commands.js +1 -15
- package/.agents/scripts/lib/config/defaults.js +4 -33
- package/.agents/scripts/lib/config/delivery-routing.js +6 -34
- package/.agents/scripts/lib/config/explain.js +10 -83
- package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
- package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +3 -31
- package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
- package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
- package/.agents/scripts/lib/config/gates/index.js +2 -17
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
- package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
- package/.agents/scripts/lib/config/gates/shared.js +4 -64
- package/.agents/scripts/lib/config/github.js +4 -22
- package/.agents/scripts/lib/config/limits.js +4 -57
- package/.agents/scripts/lib/config/paths.js +2 -21
- package/.agents/scripts/lib/config/qa.js +4 -38
- package/.agents/scripts/lib/config/quality.js +76 -432
- package/.agents/scripts/lib/config/runners.js +12 -56
- package/.agents/scripts/lib/config/runtime.js +13 -57
- package/.agents/scripts/lib/config/shared.js +2 -16
- package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
- package/.agents/scripts/lib/config/temp-paths.js +40 -280
- package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
- package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
- package/.agents/scripts/lib/config-resolver.js +11 -52
- package/.agents/scripts/lib/config-schema-shared.js +1 -4
- package/.agents/scripts/lib/config-settings-schema-delivery.js +16 -291
- package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
- package/.agents/scripts/lib/config-settings-schema.js +37 -274
- package/.agents/scripts/lib/coverage-baseline.js +20 -110
- package/.agents/scripts/lib/coverage-capture-fullscope.js +18 -35
- package/.agents/scripts/lib/coverage-capture-incremental.js +15 -45
- package/.agents/scripts/lib/coverage-capture-usage.js +8 -25
- package/.agents/scripts/lib/coverage-capture.js +99 -224
- package/.agents/scripts/lib/coverage-utils.js +14 -79
- package/.agents/scripts/lib/cpu-pool.js +17 -123
- package/.agents/scripts/lib/crap-baseline-join.js +16 -88
- package/.agents/scripts/lib/crap-coordinates.js +6 -25
- package/.agents/scripts/lib/crap-engine.js +40 -153
- package/.agents/scripts/lib/crap-method-identity.js +16 -78
- package/.agents/scripts/lib/crap-utils.js +31 -155
- package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
- package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
- package/.agents/scripts/lib/dead-exports-knip.js +18 -56
- package/.agents/scripts/lib/dead-exports-mode.js +5 -24
- package/.agents/scripts/lib/degraded-mode.js +3 -26
- package/.agents/scripts/lib/dependency-parser.js +8 -40
- package/.agents/scripts/lib/dependency-version.js +13 -35
- package/.agents/scripts/lib/detect-package-manager.js +6 -36
- package/.agents/scripts/lib/doc-tiers.js +22 -124
- package/.agents/scripts/lib/duplicate-search.js +8 -72
- package/.agents/scripts/lib/env-loader.js +5 -27
- package/.agents/scripts/lib/error-redactor.js +6 -31
- package/.agents/scripts/lib/errors/index.js +2 -22
- package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
- package/.agents/scripts/lib/escomplex-kernel.js +21 -123
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +94 -419
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -149
- package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
- package/.agents/scripts/lib/findings/classify-finding.js +14 -69
- package/.agents/scripts/lib/findings/promote-finding.js +14 -112
- package/.agents/scripts/lib/findings/provenance-field.js +11 -52
- package/.agents/scripts/lib/findings/route-finding.js +37 -255
- package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
- package/.agents/scripts/lib/findings/severity.js +18 -104
- package/.agents/scripts/lib/format-generated-json.js +12 -44
- package/.agents/scripts/lib/full-suite-lock.js +160 -429
- package/.agents/scripts/lib/full-suite-queue.js +213 -0
- package/.agents/scripts/lib/gates/baseline-store.js +5 -9
- package/.agents/scripts/lib/gates/friction.js +1 -3
- package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
- package/.agents/scripts/lib/gh-exec.js +123 -191
- package/.agents/scripts/lib/git/cached-fetch.js +9 -52
- package/.agents/scripts/lib/git/sync-from-base.js +15 -107
- package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
- package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
- package/.agents/scripts/lib/git-utils.js +37 -161
- package/.agents/scripts/lib/github/framework-repo.js +8 -71
- package/.agents/scripts/lib/github-url.js +2 -17
- package/.agents/scripts/lib/import-graph.js +11 -38
- package/.agents/scripts/lib/install-cmd-parser.js +4 -13
- package/.agents/scripts/lib/json-utils.js +3 -18
- package/.agents/scripts/lib/label-constants.js +16 -111
- package/.agents/scripts/lib/label-taxonomy.js +4 -30
- package/.agents/scripts/lib/maintainability-engine.js +12 -80
- package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
- package/.agents/scripts/lib/maintainability-utils.js +16 -92
- package/.agents/scripts/lib/mandrel-catalog.js +12 -70
- package/.agents/scripts/lib/notifications/notifier.js +13 -38
- package/.agents/scripts/lib/npm-scripts.js +4 -23
- package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
- package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
- package/.agents/scripts/lib/observability/signal-validator.js +5 -37
- package/.agents/scripts/lib/observability/signals-writer.js +11 -121
- package/.agents/scripts/lib/observability/source-classifier.js +22 -203
- package/.agents/scripts/lib/observability/terse-result.js +14 -47
- package/.agents/scripts/lib/onboard/init-tail.js +13 -74
- package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
- package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
- package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +28 -156
- package/.agents/scripts/lib/orchestration/change-set.js +7 -36
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
- package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
- package/.agents/scripts/lib/orchestration/check-state.js +92 -0
- package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
- package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +121 -157
- package/.agents/scripts/lib/orchestration/code-review.js +24 -128
- package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
- package/.agents/scripts/lib/orchestration/complexity-gate.js +118 -462
- package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
- package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
- package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
- package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
- package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
- package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
- package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
- package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
- package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
- package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
- package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
- package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
- package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
- package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
- package/.agents/scripts/lib/orchestration/light-suitability.js +37 -307
- package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
- package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
- package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
- package/.agents/scripts/lib/orchestration/plan-context.js +55 -318
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
- package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
- package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
- package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
- package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
- package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +16 -78
- package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
- package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
- package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
- package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
- package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +71 -289
- package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +96 -362
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +9 -39
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +60 -186
- package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
- package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
- package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
- package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
- package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
- package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
- package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
- package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
- package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
- package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
- package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
- package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
- package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
- package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
- package/.agents/scripts/lib/orchestration/review-depth.js +12 -91
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
- package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
- package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
- package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
- package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
- package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
- package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
- package/.agents/scripts/lib/orchestration/run-epilogue.js +245 -326
- package/.agents/scripts/lib/orchestration/run-scoped-config.js +55 -159
- package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
- package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
- package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +83 -239
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +20 -82
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
- package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +136 -486
- package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
- package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +96 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
- package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +180 -273
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
- package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
- package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
- package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
- package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
- package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
- package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
- package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -200
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +167 -252
- package/.agents/scripts/lib/orchestration/story-init-envelope.js +52 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
- package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
- package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -135
- package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
- package/.agents/scripts/lib/orchestration/ticket-validator.js +63 -344
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -261
- package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
- package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
- package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
- package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
- package/.agents/scripts/lib/path-security.js +3 -6
- package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
- package/.agents/scripts/lib/preflight-runner.js +13 -69
- package/.agents/scripts/lib/process-group.js +143 -0
- package/.agents/scripts/lib/project-root.js +2 -8
- package/.agents/scripts/lib/provider-factory.js +2 -25
- package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
- package/.agents/scripts/lib/qa/qa-session.js +15 -69
- package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
- package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
- package/.agents/scripts/lib/reserved-test-ids.js +9 -47
- package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
- package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
- package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
- package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
- package/.agents/scripts/lib/signals/detectors/common.js +12 -38
- package/.agents/scripts/lib/signals/index.js +2 -19
- package/.agents/scripts/lib/signals/schema.js +14 -109
- package/.agents/scripts/lib/signals/write.js +2 -11
- package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
- package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
- package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
- package/.agents/scripts/lib/single-story-sweep.js +14 -97
- package/.agents/scripts/lib/skills/parse-skill.js +13 -59
- package/.agents/scripts/lib/skills/skills-index.js +8 -29
- package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
- package/.agents/scripts/lib/source-extensions.js +11 -42
- package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
- package/.agents/scripts/lib/stdio-flush.js +9 -36
- package/.agents/scripts/lib/story-adjacency.js +8 -40
- package/.agents/scripts/lib/story-body/body-format-lints.js +51 -66
- package/.agents/scripts/lib/story-body/footer-block.js +11 -44
- package/.agents/scripts/lib/story-body/story-body.js +123 -344
- package/.agents/scripts/lib/temp-retention.js +42 -143
- package/.agents/scripts/lib/templates/decomposer-prompts.js +18 -80
- package/.agents/scripts/lib/test-env.js +12 -65
- package/.agents/scripts/lib/test-run-credit.js +10 -65
- package/.agents/scripts/lib/test-runner-contract.js +19 -74
- package/.agents/scripts/lib/test-temp.js +38 -184
- package/.agents/scripts/lib/test-tiers.js +12 -96
- package/.agents/scripts/lib/ticket-body-sections.js +21 -96
- package/.agents/scripts/lib/transpile.js +15 -74
- package/.agents/scripts/lib/util/concurrent-map.js +6 -25
- package/.agents/scripts/lib/util/parse-id-list.js +8 -34
- package/.agents/scripts/lib/util/poll-loop.js +8 -28
- package/.agents/scripts/lib/util/with-timeout.js +2 -11
- package/.agents/scripts/lib/validation-evidence.js +21 -96
- package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
- package/.agents/scripts/lib/wave-runner/live-probe.js +67 -209
- package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
- package/.agents/scripts/lib/workers/crap-worker.js +11 -64
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
- package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
- package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
- package/.agents/scripts/lib/workflow-closure.js +22 -105
- package/.agents/scripts/lib/workspace-provisioner.js +16 -54
- package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
- package/.agents/scripts/lib/worktree-manager.js +15 -40
- package/.agents/scripts/lint-issue-body.js +12 -68
- package/.agents/scripts/mandrel-update-preflight.js +10 -70
- package/.agents/scripts/merge-baseline.js +30 -105
- package/.agents/scripts/nav-registry-diff.js +22 -108
- package/.agents/scripts/notify.js +12 -69
- package/.agents/scripts/plan-context.js +97 -92
- package/.agents/scripts/plan-critics.js +12 -66
- package/.agents/scripts/plan-persist.js +71 -137
- package/.agents/scripts/plan-run-epilogue.js +20 -43
- package/.agents/scripts/pr-watch-with-update.js +79 -263
- package/.agents/scripts/providers/github/auth.js +3 -8
- package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
- package/.agents/scripts/providers/github/board-add.js +5 -21
- package/.agents/scripts/providers/github/branch-protection.js +11 -43
- package/.agents/scripts/providers/github/cache.js +2 -14
- package/.agents/scripts/providers/github/comments.js +7 -40
- package/.agents/scripts/providers/github/compose.js +3 -19
- package/.agents/scripts/providers/github/errors.js +22 -125
- package/.agents/scripts/providers/github/issues.js +31 -123
- package/.agents/scripts/providers/github/labels.js +24 -124
- package/.agents/scripts/providers/github/mappers.js +5 -27
- package/.agents/scripts/providers/github/merge-methods.js +3 -22
- package/.agents/scripts/providers/github/project-board.js +2 -17
- package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
- package/.agents/scripts/providers/github/request-helpers.js +5 -32
- package/.agents/scripts/providers/github/search-budget.js +9 -39
- package/.agents/scripts/providers/github/search-query.js +5 -26
- package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
- package/.agents/scripts/providers/github/sub-issues.js +7 -36
- package/.agents/scripts/providers/github/tickets.js +32 -134
- package/.agents/scripts/providers/github.js +18 -59
- package/.agents/scripts/prune-plan-run-labels.js +12 -46
- package/.agents/scripts/quality-preview.js +35 -220
- package/.agents/scripts/resolve-doc-tiers.js +3 -26
- package/.agents/scripts/resolve-stories.js +16 -67
- package/.agents/scripts/resync-status-column.js +6 -25
- package/.agents/scripts/run-tests.js +29 -104
- package/.agents/scripts/single-story-close.js +23 -135
- package/.agents/scripts/single-story-confirm-merge.js +32 -139
- package/.agents/scripts/single-story-init.js +47 -259
- package/.agents/scripts/stories-wave-tick.js +179 -415
- package/.agents/scripts/sync-agentrc.js +3 -21
- package/.agents/scripts/sync-claude-agents.js +9 -55
- package/.agents/scripts/sync-claude-commands.js +20 -110
- package/.agents/scripts/test-wrapper.js +6 -43
- package/.agents/scripts/update-coverage-baseline.js +5 -22
- package/.agents/scripts/update-crap-baseline.js +7 -30
- package/.agents/scripts/update-duplication-baseline.js +16 -92
- package/.agents/scripts/update-maintainability-baseline.js +8 -62
- package/.agents/scripts/update-ticket-state.js +1 -7
- package/.agents/scripts/validate-skills.js +6 -26
- package/.agents/skills/core/gates-and-baselines/reference.md +0 -1
- package/.agents/skills/skills.index.json +2 -2
- package/.agents/skills/stack/qa/playwright/SKILL.md +26 -0
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
- package/.agents/workflows/audit-accessibility.md +4 -7
- package/.agents/workflows/audit-adrs.md +3 -6
- package/.agents/workflows/audit-architecture.md +3 -11
- package/.agents/workflows/audit-baselines.md +6 -9
- package/.agents/workflows/audit-clean-code.md +8 -12
- package/.agents/workflows/audit-data-model.md +3 -7
- package/.agents/workflows/audit-dependencies.md +4 -7
- package/.agents/workflows/audit-devops.md +4 -8
- package/.agents/workflows/audit-documentation.md +1 -4
- package/.agents/workflows/audit-mobile.md +4 -7
- package/.agents/workflows/audit-navigability.md +3 -6
- package/.agents/workflows/audit-performance.md +2 -4
- package/.agents/workflows/audit-privacy.md +4 -7
- package/.agents/workflows/audit-quality.md +4 -7
- package/.agents/workflows/audit-security.md +4 -7
- package/.agents/workflows/audit-seo.md +4 -7
- package/.agents/workflows/audit-sre.md +4 -7
- package/.agents/workflows/audit-to-stories.md +17 -30
- package/.agents/workflows/audit-ux-ui.md +4 -7
- package/.agents/workflows/helpers/acceptance-self-eval.md +84 -157
- package/.agents/workflows/helpers/audit-lens-core.md +1 -1
- package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
- package/.agents/workflows/helpers/code-review.md +4 -2
- package/.agents/workflows/helpers/deliver-digest.md +37 -28
- package/.agents/workflows/helpers/deliver-light.md +92 -101
- package/.agents/workflows/helpers/deliver-reference.md +162 -220
- package/.agents/workflows/helpers/deliver-story-reference.md +197 -607
- package/.agents/workflows/helpers/deliver-story.md +17 -18
- package/.agents/workflows/helpers/plan-reference.md +125 -167
- package/.agents/workflows/helpers/qa-core.md +12 -0
- package/.agents/workflows/mandrel-deliver.md +47 -31
- package/.agents/workflows/mandrel-plan.md +22 -21
- package/.agents/workflows/mandrel-update.md +36 -21
- package/.agents/workflows/memory-consolidate.md +1 -1
- package/.agents/workflows/qa-assist.md +27 -71
- package/.agents/workflows/qa-explore.md +19 -59
- package/.agents/workflows/qa-run.md +11 -33
- package/README.md +1 -1
- package/bin/mandrel.js +5 -46
- package/bin/postinstall.js +18 -107
- package/docs/CHANGELOG.md +60 -0
- package/lib/cli/doctor.js +11 -71
- package/lib/cli/init.js +26 -165
- package/lib/cli/migrate.js +5 -64
- package/lib/cli/registry.js +84 -467
- package/lib/cli/sync-agents.js +4 -64
- package/lib/cli/sync-commands.js +11 -64
- package/lib/cli/sync.js +34 -213
- package/lib/cli/uninstall.js +40 -219
- package/lib/cli/update.js +326 -523
- package/lib/cli/version-check.js +8 -72
- package/lib/cli/version-helpers.js +14 -87
- package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
- package/lib/migrations/index.js +17 -92
- package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
- package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
- package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
- package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
- package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
- package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
- package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
- package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
- package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +21 -0
- package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
- package/package.json +17 -14
- package/.agents/docs/SDLC.md +0 -590
- package/.agents/docs/quality-gates.md +0 -1179
- package/.agents/rules/known-tooling-behavior.md +0 -150
- package/.agents/rules/orchestration-error-handling.md +0 -61
- package/.agents/rules/test-seams.md +0 -59
- package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
- package/.agents/schemas/baselines/lint.schema.json +0 -47
- package/.agents/schemas/model-attribution.schema.json +0 -53
- package/.agents/scripts/check-action-pinning.js +0 -260
- package/.agents/scripts/check-audit-attribution.js +0 -302
- package/.agents/scripts/check-baseline-drift.js +0 -211
- package/.agents/scripts/check-baseline-scope.js +0 -362
- package/.agents/scripts/check-generated-validator.js +0 -202
- package/.agents/scripts/check-knip-entries.js +0 -159
- package/.agents/scripts/check-lifecycle-lint.js +0 -294
- package/.agents/scripts/check-pinned-override-notes.js +0 -102
- package/.agents/scripts/check-schema-references.js +0 -366
- package/.agents/scripts/check-test-portability.js +0 -512
- package/.agents/scripts/check-workflow-citations.js +0 -332
- package/.agents/scripts/check-workflow-cli-lint.js +0 -299
- package/.agents/scripts/check-workflow-timeouts.js +0 -291
- package/.agents/scripts/install-matrix-assert.js +0 -326
- package/.agents/scripts/lib/audit-advisories.js +0 -195
- package/.agents/scripts/lib/audit-attribution.js +0 -134
- package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
- package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
- package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
- package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
- package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
- package/.agents/scripts/lib/c8-cli-path.js +0 -21
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
- package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
- package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
- package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
- package/.agents/scripts/lib/fs-walk.js +0 -52
- package/.agents/scripts/lib/knip-config-resolver.js +0 -181
- package/.agents/scripts/lib/knip-entry-sync.js +0 -452
- package/.agents/scripts/lib/orchestration/model-attribution.js +0 -418
- package/.agents/scripts/lib/orchestration/story-plan-state.js +0 -33
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +0 -67
- package/.agents/scripts/lib/pinned-override-notes.js +0 -88
- package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
- package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
- package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
- package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
- package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
- package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
- package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
- package/.agents/scripts/lib/test-isolate/runner.js +0 -483
- package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
- package/.agents/scripts/lib/test-profile/render-report.js +0 -45
- package/.agents/scripts/lint-label-vocabulary.js +0 -214
- package/.agents/scripts/post-structured-comment.js +0 -127
- package/.agents/scripts/provision-git-hooks.js +0 -85
- package/.agents/scripts/prune-baseline-orphans.js +0 -181
- package/.agents/scripts/run-coverage.js +0 -197
- package/.agents/scripts/run-lint.js +0 -133
- package/.agents/scripts/run-test-profile.js +0 -129
- package/.agents/scripts/run-verify.js +0 -118
- package/.agents/scripts/test-isolate.js +0 -55
- package/.agents/scripts/update-dead-exports-baseline.js +0 -321
|
@@ -1,29 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* review-providers/security-review.js —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Story #2871 — extends the pluggable Code Review chain (Epic #2815)
|
|
6
|
-
* to surface security-specific findings before a Story or Epic
|
|
7
|
-
* merges. The adapter shells out to the host's `claude` CLI with a
|
|
8
|
-
* prompt that wraps `/security-review` and asks for JSON-shaped
|
|
9
|
-
* findings on stdout, then maps each entry onto the canonical
|
|
10
|
-
* `Finding[]` contract so the existing `runCodeReview()` halting
|
|
11
|
-
* gate ("any critical → halted: true") applies without a parallel
|
|
12
|
-
* code path.
|
|
13
|
-
*
|
|
14
|
-
* Probe semantics: the provider checks for a `claude` binary on
|
|
15
|
-
* PATH at construction. When absent, the constructor throws a
|
|
16
|
-
* descriptive Error. The chain treats a constructor throw as a
|
|
17
|
-
* skip when the entry was declared `optional: true` (the canonical
|
|
18
|
-
* choice for `security-review` on non-Claude hosts), and as a
|
|
19
|
-
* hard-fail when not.
|
|
20
|
-
*
|
|
21
|
-
* Output parsing is liberal: the provider accepts (a) a bare JSON
|
|
22
|
-
* array, (b) `{findings: [...]}`, or (c) either shape wrapped in a
|
|
23
|
-
* `result`/`data` envelope. Free-text output that does not parse as
|
|
24
|
-
* JSON collapses to a single advisory `suggestion` finding pointing
|
|
25
|
-
* the operator at the manual command — the chain still runs, but
|
|
26
|
-
* the security signal is downgraded honestly rather than dropped.
|
|
2
|
+
* review-providers/security-review.js — runs `/security-review` through
|
|
3
|
+
* `claude --print`. A missing CLI throws at construction; unparseable output
|
|
4
|
+
* becomes one advisory finding rather than being dropped.
|
|
27
5
|
*
|
|
28
6
|
* @typedef {import('./types.js').Finding} Finding
|
|
29
7
|
* @typedef {import('./types.js').ReviewInput} ReviewInput
|
|
@@ -35,10 +13,6 @@ import { spawnSync } from 'node:child_process';
|
|
|
35
13
|
import { parseProviderFindings } from './parse-findings.js';
|
|
36
14
|
import { renderDepthDirective } from './review-depth.js';
|
|
37
15
|
|
|
38
|
-
/**
|
|
39
|
-
* Canonical install/remediation guidance baked into every probe
|
|
40
|
-
* failure. Exported so tests assert against the exact strings.
|
|
41
|
-
*/
|
|
42
16
|
export const SECURITY_REVIEW_REMEDIATIONS = Object.freeze({
|
|
43
17
|
install:
|
|
44
18
|
'Install the Claude Code CLI (https://docs.anthropic.com/en/docs/claude-code) ' +
|
|
@@ -49,12 +23,7 @@ export const SECURITY_REVIEW_REMEDIATIONS = Object.freeze({
|
|
|
49
23
|
});
|
|
50
24
|
|
|
51
25
|
/**
|
|
52
|
-
*
|
|
53
|
-
* Synchronous + cheap; the worst case (claude absent) MUST surface
|
|
54
|
-
* at factory construction time so the operator sees the remediation
|
|
55
|
-
* before the first review run.
|
|
56
|
-
*
|
|
57
|
-
* Exported for testing — tests inject a stub `probeFn` to bypass.
|
|
26
|
+
* Synchronous so a missing CLI surfaces at construction, not mid-review.
|
|
58
27
|
*
|
|
59
28
|
* @param {{ spawnFn?: typeof spawnSync }} [opts]
|
|
60
29
|
* @returns {boolean}
|
|
@@ -74,10 +43,6 @@ function defaultProbeClaudeCli(opts = {}) {
|
|
|
74
43
|
}
|
|
75
44
|
|
|
76
45
|
/**
|
|
77
|
-
* Build the hard-fail Error thrown when the probe reports the
|
|
78
|
-
* `claude` CLI is absent. Exported so the registry entry and tests
|
|
79
|
-
* share one message shape.
|
|
80
|
-
*
|
|
81
46
|
* @returns {Error}
|
|
82
47
|
*/
|
|
83
48
|
export function buildSecurityReviewUnavailableError() {
|
|
@@ -89,9 +54,7 @@ export function buildSecurityReviewUnavailableError() {
|
|
|
89
54
|
}
|
|
90
55
|
|
|
91
56
|
/**
|
|
92
|
-
*
|
|
93
|
-
* operators see a consistent severity-tier vocabulary regardless of
|
|
94
|
-
* which adapter produced the finding.
|
|
57
|
+
* Mirrors `CODEX_SEVERITY_MAP` for a consistent vocabulary across adapters.
|
|
95
58
|
*
|
|
96
59
|
* @type {Readonly<Record<string, Severity>>}
|
|
97
60
|
*/
|
|
@@ -113,9 +76,6 @@ export const SECURITY_REVIEW_SEVERITY_MAP = Object.freeze({
|
|
|
113
76
|
});
|
|
114
77
|
|
|
115
78
|
/**
|
|
116
|
-
* Map a single security-review severity string onto the canonical
|
|
117
|
-
* enum. Unknown / missing values collapse to `'suggestion'`.
|
|
118
|
-
*
|
|
119
79
|
* @param {unknown} raw
|
|
120
80
|
* @returns {Severity}
|
|
121
81
|
*/
|
|
@@ -126,14 +86,6 @@ export function mapSecurityReviewSeverity(raw) {
|
|
|
126
86
|
}
|
|
127
87
|
|
|
128
88
|
/**
|
|
129
|
-
* Parse `/security-review` JSON output into `Finding[]`. Liberal:
|
|
130
|
-
* accepts a bare array, `{findings: [...]}`, or either shape
|
|
131
|
-
* wrapped in a `result`/`data` envelope. Free-text output that
|
|
132
|
-
* fails to parse throws — the caller decides whether to fall back
|
|
133
|
-
* to a single advisory finding.
|
|
134
|
-
*
|
|
135
|
-
* Exported for testing.
|
|
136
|
-
*
|
|
137
89
|
* @param {string} rawStdout
|
|
138
90
|
* @returns {Finding[]}
|
|
139
91
|
* @throws {Error} when stdout is not parseable JSON.
|
|
@@ -147,21 +99,7 @@ export function parseSecurityReviewFindings(rawStdout) {
|
|
|
147
99
|
});
|
|
148
100
|
}
|
|
149
101
|
|
|
150
|
-
/**
|
|
151
|
-
* Prompt body sent to `claude --print` to wrap the built-in
|
|
152
|
-
* `/security-review` skill with an explicit JSON-emit instruction.
|
|
153
|
-
* Exported so doc tooling and tests reference one canonical string.
|
|
154
|
-
*
|
|
155
|
-
* The prompt is intentionally narrow: it asks the model to run the
|
|
156
|
-
* skill against a specific git range and emit findings as a JSON
|
|
157
|
-
* array. Any prose preface or trailing commentary is parseable as
|
|
158
|
-
* "garbage before/after JSON" — `parseSecurityReviewFindings` uses
|
|
159
|
-
* the first JSON-shaped substring rather than the whole stdout.
|
|
160
|
-
*
|
|
161
|
-
* The `{depthDirective}` slot renders the risk-derived thoroughness lever
|
|
162
|
-
* (Story #3937) so a high-risk Epic instructs the model toward a deeper
|
|
163
|
-
* second-pass review while a low-risk one keeps it light.
|
|
164
|
-
*/
|
|
102
|
+
/** Wraps `/security-review` with an explicit JSON-emit instruction. */
|
|
165
103
|
const SECURITY_REVIEW_INVOKE_PROMPT =
|
|
166
104
|
'Run /security-review against the diff `{baseRef}`...`{headRef}` ' +
|
|
167
105
|
'for {scopeLabel} #{ticketId}. {depthDirective} After the review, emit ' +
|
|
@@ -174,13 +112,6 @@ const SECURITY_REVIEW_INVOKE_PROMPT =
|
|
|
174
112
|
'No prose around the JSON.';
|
|
175
113
|
|
|
176
114
|
/**
|
|
177
|
-
* Build the `claude --print` prompt for a specific review input. The
|
|
178
|
-
* risk-derived `depth` lever (Story #3937) is rendered into the prompt via
|
|
179
|
-
* `renderDepthDirective` so the model's thoroughness tracks the Epic's judged
|
|
180
|
-
* risk; an absent depth renders the `standard` directive.
|
|
181
|
-
*
|
|
182
|
-
* Exported for testing.
|
|
183
|
-
*
|
|
184
115
|
* @param {ReviewInput} input
|
|
185
116
|
* @returns {string}
|
|
186
117
|
*/
|
|
@@ -200,11 +131,6 @@ export function buildSecurityReviewPrompt(input) {
|
|
|
200
131
|
}
|
|
201
132
|
|
|
202
133
|
/**
|
|
203
|
-
* Default invoker: shell out to the host's `claude` CLI to run the
|
|
204
|
-
* `/security-review` skill via a JSON-emit prompt. Exported for
|
|
205
|
-
* testing — the production adapter accepts an `invokeFn` override
|
|
206
|
-
* so tests never spawn a real process.
|
|
207
|
-
*
|
|
208
134
|
* @param {ReviewInput} input
|
|
209
135
|
* @returns {{ status: number, stdout: string, stderr: string }}
|
|
210
136
|
*/
|
|
@@ -223,10 +149,6 @@ function defaultInvokeSecurityReview(input) {
|
|
|
223
149
|
}
|
|
224
150
|
|
|
225
151
|
/**
|
|
226
|
-
* Build the advisory fallback finding emitted when `/security-review`
|
|
227
|
-
* exits cleanly but its stdout is not parseable JSON. Pure +
|
|
228
|
-
* exported so tests assert against the exact shape.
|
|
229
|
-
*
|
|
230
152
|
* @returns {Finding}
|
|
231
153
|
*/
|
|
232
154
|
export function buildUnparseableFallbackFinding() {
|
|
@@ -243,8 +165,6 @@ export function buildUnparseableFallbackFinding() {
|
|
|
243
165
|
}
|
|
244
166
|
|
|
245
167
|
/**
|
|
246
|
-
* Build a `ReviewProvider` instance backed by `/security-review`.
|
|
247
|
-
*
|
|
248
168
|
* @param {{
|
|
249
169
|
* probeFn?: () => boolean,
|
|
250
170
|
* invokeFn?: (input: ReviewInput) => { status: number, stdout: string, stderr: string },
|
|
@@ -311,9 +231,6 @@ export function createSecurityReviewProvider(deps = {}) {
|
|
|
311
231
|
}
|
|
312
232
|
|
|
313
233
|
/**
|
|
314
|
-
* Zero-arg factory entry point used by the `review-provider-factory`
|
|
315
|
-
* registry. Mirrors `createCodexProviderForRegistry`.
|
|
316
|
-
*
|
|
317
234
|
* @returns {ReviewProvider}
|
|
318
235
|
*/
|
|
319
236
|
export function createSecurityReviewProviderForRegistry() {
|
|
@@ -1,90 +1,60 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* review-providers/types.js —
|
|
3
|
-
*
|
|
4
|
-
* Story #2825 (Epic #2815) — defines the `Finding` and `ReviewProvider`
|
|
5
|
-
* shapes that adapters under `review-providers/` must conform to. The
|
|
6
|
-
* factory loads an adapter, the adapter returns `Finding[]`, and the
|
|
7
|
-
* `findings-renderer` turns that array into the structured-comment body
|
|
8
|
-
* posted to the Story/Epic ticket.
|
|
9
|
-
*
|
|
10
|
-
* Story #2871 — extends the contract for multi-provider chains and
|
|
11
|
-
* adds `ManualPromptProvider` for operator-prompt providers
|
|
12
|
-
* (e.g. ultrareview) that emit a non-blocking suggestion into the
|
|
13
|
-
* structured comment instead of running a real review.
|
|
14
|
-
*
|
|
15
|
-
* This file is JSDoc-only — no runtime exports. It exists so other
|
|
16
|
-
* modules and tests have a single canonical reference to import via
|
|
17
|
-
* `@typedef` lookups.
|
|
2
|
+
* review-providers/types.js — the pluggable Code Review contract, as
|
|
3
|
+
* `@typedef` lookups only (no runtime exports).
|
|
18
4
|
*
|
|
19
5
|
* @typedef {'critical'|'high'|'medium'|'suggestion'} Severity
|
|
20
6
|
*
|
|
21
7
|
* @typedef {object} Finding
|
|
22
|
-
* @property {Severity} severity
|
|
23
|
-
* @property {string} title
|
|
24
|
-
* @property {string} body - Markdown
|
|
8
|
+
* @property {Severity} severity
|
|
9
|
+
* @property {string} title
|
|
10
|
+
* @property {string} body - Markdown.
|
|
25
11
|
* @property {string=} file - Relative path, when attributable.
|
|
26
|
-
* @property {number=} line - 1-based
|
|
27
|
-
* @property {string=} category -
|
|
12
|
+
* @property {number=} line - 1-based, when attributable.
|
|
13
|
+
* @property {string=} category - e.g. 'security', 'lint'.
|
|
28
14
|
*
|
|
29
15
|
* @typedef {'story'} ReviewScope
|
|
30
16
|
*
|
|
31
17
|
* @typedef {'light'|'standard'|'deep'} ReviewDepth
|
|
32
18
|
*
|
|
33
19
|
* @typedef {object} ReviewInput
|
|
34
|
-
* @property {ReviewScope} scope
|
|
35
|
-
* @property {number} ticketId
|
|
36
|
-
* @property {string} baseRef
|
|
37
|
-
* @property {string} headRef
|
|
38
|
-
* @property {ReviewDepth=} depth -
|
|
39
|
-
*
|
|
40
|
-
* Pillar 1 (spec adherence) with Pillars 2–3 reduced to a quick scan;
|
|
41
|
-
* `standard` → all pillars at baseline depth; `deep` → all pillars plus a
|
|
42
|
-
* second adversarial pass over the diff. Derived from the diff's
|
|
43
|
-
* changed-file count and sensitive-path hits
|
|
44
|
-
* (`lib/orchestration/review-depth.js`; the judged-risk input was
|
|
45
|
-
* retired in #4542) and threaded into `runReview`.
|
|
46
|
-
* LLM-backed
|
|
47
|
-
* providers MUST render this into the prompt/instructions they emit; the
|
|
48
|
-
* native provider documents why its mechanical sweep ignores it. Absent →
|
|
49
|
-
* providers treat the review as `standard`.
|
|
20
|
+
* @property {ReviewScope} scope
|
|
21
|
+
* @property {number} ticketId
|
|
22
|
+
* @property {string} baseRef
|
|
23
|
+
* @property {string} headRef
|
|
24
|
+
* @property {ReviewDepth=} depth - Diff-derived thoroughness lever; LLM-backed
|
|
25
|
+
* providers MUST render it into their prompt. Absent → `standard`.
|
|
50
26
|
*
|
|
51
27
|
* @typedef {object} ReviewProvider
|
|
52
28
|
* @property {(input: ReviewInput) => Promise<Finding[]>} runReview
|
|
53
29
|
*
|
|
54
|
-
* Manual-prompt providers
|
|
55
|
-
*
|
|
56
|
-
* comment. Used for cloud or user-triggered review tools (e.g.
|
|
57
|
-
* `/ultrareview`) that cannot be invoked programmatically from a
|
|
58
|
-
* Node orchestrator.
|
|
30
|
+
* Manual-prompt providers run no review; they contribute a one-line operator
|
|
31
|
+
* suggestion for tools that cannot be invoked programmatically.
|
|
59
32
|
*
|
|
60
33
|
* @typedef {object} ManualPromptResult
|
|
61
|
-
* @property {string} message
|
|
34
|
+
* @property {string} message
|
|
62
35
|
*
|
|
63
36
|
* @typedef {object} ManualPromptProvider
|
|
64
37
|
* @property {(input: ReviewInput) => Promise<ManualPromptResult>} renderPrompt
|
|
65
38
|
*
|
|
66
|
-
* Chain entries (Story #2871) wrap an adapter with metadata used by
|
|
67
|
-
* the orchestrator to gate invocation per-scope and per-label.
|
|
68
|
-
*
|
|
69
39
|
* @typedef {object} ProviderGateContext
|
|
70
|
-
* @property {ReviewScope} scope
|
|
71
|
-
* @property {ReadonlyArray<string>} labels
|
|
40
|
+
* @property {ReviewScope} scope
|
|
41
|
+
* @property {ReadonlyArray<string>} labels
|
|
72
42
|
*
|
|
73
43
|
* @typedef {(ctx: ProviderGateContext) => boolean} ProviderGate
|
|
74
44
|
*
|
|
75
45
|
* @typedef {object} InlineChainEntry
|
|
76
|
-
* @property {string} name
|
|
77
|
-
* @property {ReviewProvider} provider
|
|
78
|
-
* @property {ProviderGate} gate -
|
|
46
|
+
* @property {string} name
|
|
47
|
+
* @property {ReviewProvider} provider
|
|
48
|
+
* @property {ProviderGate} gate - false → skip this entry.
|
|
79
49
|
*
|
|
80
50
|
* @typedef {object} PromptChainEntry
|
|
81
|
-
* @property {string} name
|
|
82
|
-
* @property {ManualPromptProvider} provider
|
|
83
|
-
* @property {ProviderGate} gate
|
|
51
|
+
* @property {string} name
|
|
52
|
+
* @property {ManualPromptProvider} provider
|
|
53
|
+
* @property {ProviderGate} gate
|
|
84
54
|
*
|
|
85
55
|
* @typedef {object} ProviderChain
|
|
86
|
-
* @property {InlineChainEntry[]} inline
|
|
87
|
-
* @property {PromptChainEntry[]} prompts
|
|
56
|
+
* @property {InlineChainEntry[]} inline
|
|
57
|
+
* @property {PromptChainEntry[]} prompts
|
|
88
58
|
*/
|
|
89
59
|
|
|
90
60
|
export {};
|
|
@@ -1,22 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* review-providers/ultrareview.js —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Story #2871 — `/ultrareview` is user-triggered and billed by
|
|
6
|
-
* Anthropic; it cannot be invoked programmatically from a Node
|
|
7
|
-
* orchestrator. This adapter implements the `ManualPromptProvider`
|
|
8
|
-
* shape instead of `ReviewProvider`: it emits a single Markdown
|
|
9
|
-
* suggestion line into the structured `code-review` comment so the
|
|
10
|
-
* operator sees the nudge inline with the rest of the review.
|
|
11
|
-
*
|
|
12
|
-
* The adapter is intentionally pure and host-agnostic. It does NOT
|
|
13
|
-
* probe the host for Claude CLI availability — `renderPrompt()` only
|
|
14
|
-
* produces text, and the worst case under a non-Claude host is a
|
|
15
|
-
* suggestion the operator cannot act on. Documenting that suggestion
|
|
16
|
-
* is still useful (consumer projects pin to a framework version, and
|
|
17
|
-
* upgrading to a Claude-capable runtime exposes the value).
|
|
18
|
-
*
|
|
19
|
-
* Per the story acceptance contract: manual-prompt providers MUST
|
|
2
|
+
* review-providers/ultrareview.js — manual-prompt provider nudging the
|
|
3
|
+
* operator to run `/ultrareview`, which is user-triggered and cannot be
|
|
4
|
+
* invoked programmatically. Pure and host-agnostic (no CLI probe); it MUST
|
|
20
5
|
* NEVER throw under any host.
|
|
21
6
|
*
|
|
22
7
|
* @typedef {import('./types.js').ManualPromptProvider} ManualPromptProvider
|
|
@@ -26,16 +11,6 @@
|
|
|
26
11
|
|
|
27
12
|
import { renderDepthDirective } from './review-depth.js';
|
|
28
13
|
|
|
29
|
-
/**
|
|
30
|
-
* Canonical suggestion string. Exported so tests can assert against
|
|
31
|
-
* the exact wording rather than free-text matching, and so doc
|
|
32
|
-
* tooling can lift the line without spawning a fake review.
|
|
33
|
-
*
|
|
34
|
-
* The `{depthDirective}` slot renders the risk-derived thoroughness lever
|
|
35
|
-
* (Story #3937) so the operator nudge tells the human reviewer how deep to go
|
|
36
|
-
* when they trigger `/ultrareview` — a high-risk Epic asks for a deep
|
|
37
|
-
* second-pass review, a low-risk one keeps it light.
|
|
38
|
-
*/
|
|
39
14
|
export const ULTRAREVIEW_PROMPT_TEMPLATE =
|
|
40
15
|
'💡 **Suggested:** Consider running `/ultrareview` on this ' +
|
|
41
16
|
'{scopeLabel} (`{baseRef}`…`{headRef}`) before merging — ' +
|
|
@@ -44,13 +19,6 @@ export const ULTRAREVIEW_PROMPT_TEMPLATE =
|
|
|
44
19
|
'(billed by Anthropic); not a blocker. {depthDirective}';
|
|
45
20
|
|
|
46
21
|
/**
|
|
47
|
-
* Render the canonical suggestion string with the live scope/baseRef/
|
|
48
|
-
* headRef substituted, and the risk-derived `depth` lever (Story #3937)
|
|
49
|
-
* rendered into the nudge via `renderDepthDirective` (absent depth → the
|
|
50
|
-
* `standard` directive).
|
|
51
|
-
*
|
|
52
|
-
* Pure — exported for testing.
|
|
53
|
-
*
|
|
54
22
|
* @param {ReviewInput} input
|
|
55
23
|
* @returns {string}
|
|
56
24
|
*/
|
|
@@ -65,13 +33,6 @@ export function buildUltrareviewMessage(input) {
|
|
|
65
33
|
}
|
|
66
34
|
|
|
67
35
|
/**
|
|
68
|
-
* Build a `ManualPromptProvider` instance for the `ultrareview`
|
|
69
|
-
* registry slot.
|
|
70
|
-
*
|
|
71
|
-
* The `deps` overload exists only for test parity with the inline
|
|
72
|
-
* provider factories — production callers (the factory) invoke
|
|
73
|
-
* `createUltrareviewProvider()` with no arguments.
|
|
74
|
-
*
|
|
75
36
|
* @param {{
|
|
76
37
|
* logger?: { info?: Function, warn?: Function },
|
|
77
38
|
* }} [deps]
|
|
@@ -96,10 +57,6 @@ export function createUltrareviewProvider(deps = {}) {
|
|
|
96
57
|
}
|
|
97
58
|
|
|
98
59
|
/**
|
|
99
|
-
* Zero-arg factory entry point used by the `review-provider-factory`
|
|
100
|
-
* registry. Mirrors `createCodexProviderForRegistry` so the registry
|
|
101
|
-
* signature stays `() => ManualPromptProvider`.
|
|
102
|
-
*
|
|
103
60
|
* @returns {ManualPromptProvider}
|
|
104
61
|
*/
|
|
105
62
|
export function createUltrareviewProviderForRegistry() {
|