mandrel 2.60.0 → 2.62.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 +10 -10
- package/.agents/agents/story-worker.md +1 -1
- package/.agents/docs/agentrc-reference.json +4 -82
- package/.agents/docs/configuration.md +20 -87
- package/.agents/docs/workflows.md +1 -1
- package/.agents/instructions.md +1 -3
- package/.agents/rules/gherkin-standards.md +4 -0
- package/.agents/schemas/agentrc.schema.json +11 -486
- package/.agents/schemas/story-deliver-terminal.schema.json +10 -0
- package/.agents/schemas/validation-evidence.schema.json +2 -1
- package/.agents/scripts/README.md +14 -14
- package/.agents/scripts/acceptance-eval.js +32 -164
- 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 +9 -45
- package/.agents/scripts/check-arch-cycles.js +14 -64
- package/.agents/scripts/check-baselines.js +8 -48
- package/.agents/scripts/check-context-budget.js +46 -172
- 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 +32 -99
- package/.agents/scripts/deliver-light.js +14 -101
- package/.agents/scripts/deliver-recover.js +6 -42
- package/.agents/scripts/deliver-run.js +36 -133
- 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 +10 -50
- 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 +5 -21
- 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 +31 -143
- 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 -35
- package/.agents/scripts/lib/config/explain.js +9 -80
- package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
- package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +2 -30
- 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 +10 -52
- package/.agents/scripts/lib/config-schema-shared.js +1 -4
- package/.agents/scripts/lib/config-settings-schema-delivery.js +12 -294
- 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 +12 -37
- package/.agents/scripts/lib/coverage-capture-incremental.js +12 -43
- package/.agents/scripts/lib/coverage-capture-usage.js +4 -24
- 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 -126
- 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 +93 -419
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -151
- 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 +31 -259
- 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 +21 -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 +5 -75
- 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 +42 -189
- 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 +42 -214
- 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 +26 -231
- 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/merge-queue.js +158 -0
- package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
- package/.agents/scripts/lib/orchestration/plan-context.js +52 -303
- 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 +14 -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 +49 -248
- package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +85 -368
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +8 -38
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +30 -190
- 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 -94
- 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 +40 -199
- package/.agents/scripts/lib/orchestration/run-scoped-config.js +13 -81
- 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 +190 -280
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +18 -80
- 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 +183 -485
- 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 +9 -50
- 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 +110 -290
- 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 -201
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +43 -245
- package/.agents/scripts/lib/orchestration/story-init-envelope.js +4 -23
- 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 -126
- 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 +39 -181
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -250
- 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 +22 -83
- package/.agents/scripts/lib/story-body/footer-block.js +11 -44
- package/.agents/scripts/lib/story-body/story-body.js +83 -358
- package/.agents/scripts/lib/temp-retention.js +42 -143
- package/.agents/scripts/lib/templates/decomposer-prompts.js +11 -65
- 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 +53 -221
- 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 -104
- package/.agents/scripts/nav-registry-diff.js +22 -108
- package/.agents/scripts/notify.js +12 -69
- package/.agents/scripts/plan-context.js +27 -111
- package/.agents/scripts/plan-critics.js +12 -66
- package/.agents/scripts/plan-persist.js +31 -148
- package/.agents/scripts/plan-run-epilogue.js +11 -37
- package/.agents/scripts/pr-watch-with-update.js +76 -267
- 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 -209
- package/.agents/scripts/stories-wave-tick.js +102 -472
- 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/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/audit-lens-core.md +1 -1
- package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
- package/.agents/workflows/helpers/deliver-digest.md +6 -4
- package/.agents/workflows/helpers/deliver-reference.md +114 -188
- package/.agents/workflows/helpers/deliver-story-reference.md +189 -533
- package/.agents/workflows/helpers/plan-reference.md +86 -139
- package/.agents/workflows/helpers/qa-core.md +12 -0
- 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 +32 -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 +105 -661
- 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 +15 -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 +2 -21
- package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
- package/package.json +16 -14
- package/.agents/docs/SDLC.md +0 -590
- package/.agents/docs/quality-gates.md +0 -1183
- package/.agents/rules/known-tooling-behavior.md +0 -200
- 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/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 -368
- package/.agents/scripts/check-test-portability.js +0 -512
- package/.agents/scripts/check-workflow-citations.js +0 -218
- 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/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 -125
- package/.agents/scripts/test-isolate.js +0 -55
- package/.agents/scripts/update-dead-exports-baseline.js +0 -321
|
@@ -1,34 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `.agents/audit-checklists/<lens>.md`. The distillation logic is the pure
|
|
8
|
-
* `lib/audit-suite/lens-checklist.js` seam; this entry point owns only the
|
|
9
|
-
* file read/write/prune and the `--check` drift gate.
|
|
10
|
-
*
|
|
11
|
-
* Why (Epic #4405 — shift-left audit): the audit lenses used to surface their
|
|
12
|
-
* concerns only when `/audit-<lens>` ran. These checklists move the concerns to
|
|
13
|
-
* the innermost, write-time tier as committed build artifacts, gated for
|
|
14
|
-
* staleness by `npm run docs:check` exactly like every other generated doc so
|
|
15
|
-
* they can never silently drift from their source workflow.
|
|
16
|
-
*
|
|
17
|
-
* The lens taxonomy is the SSOT `AUDIT_LENSES` list. A lens whose
|
|
18
|
-
* `audit-<lens>.md` workflow is absent produces **no** checklist and is
|
|
19
|
-
* reported (never a silent skip). Stray `.md` files under the checklist
|
|
20
|
-
* directory that no longer map to a lens are pruned in write mode and flagged
|
|
21
|
-
* in `--check` mode, keeping the directory a pure function of its sources.
|
|
22
|
-
*
|
|
23
|
-
* Modes:
|
|
24
|
-
* (default) — writes one `<lens>.md` per lens with a workflow, prunes
|
|
25
|
-
* strays, reports lenses missing a workflow.
|
|
26
|
-
* --check — exits 0 when every on-disk file matches the freshly generated
|
|
27
|
-
* content and no strays exist, throws (→ exit 1) otherwise.
|
|
28
|
-
*
|
|
29
|
-
* Per `.agents/rules/orchestration-error-handling.md`, unrecoverable failures
|
|
30
|
-
* surface via `throw new Error(...)` so `runAsCli` maps the throw to
|
|
31
|
-
* `process.exit(1)` deterministically (no `Logger.fatal`).
|
|
3
|
+
* Distils each `audit-<lens>.md` workflow into a committed write-time
|
|
4
|
+
* checklist under `.agents/audit-checklists/`. The directory is a pure
|
|
5
|
+
* function of its sources: strays are pruned (flagged under `--check`), and a
|
|
6
|
+
* lens with no workflow is reported, never silently skipped.
|
|
32
7
|
*/
|
|
33
8
|
|
|
34
9
|
import fs from 'node:fs';
|
|
@@ -47,12 +22,7 @@ const WORKFLOWS_DIR = path.join(PROJECT_ROOT, '.agents', 'workflows');
|
|
|
47
22
|
const CHECKLISTS_DIR = path.join(PROJECT_ROOT, '.agents', 'audit-checklists');
|
|
48
23
|
|
|
49
24
|
/**
|
|
50
|
-
*
|
|
51
|
-
* workflow-existence predicate and a reader. A lens whose workflow is absent
|
|
52
|
-
* yields no checklist and is recorded in `missing` (never silently skipped).
|
|
53
|
-
* Kept side-effect-free so it is unit-testable with fabricated inputs.
|
|
54
|
-
*
|
|
55
|
-
* @param {ReadonlyArray<string>} lenses — canonical lens names.
|
|
25
|
+
* @param {ReadonlyArray<string>} lenses
|
|
56
26
|
* @param {(lens: string) => boolean} workflowExists
|
|
57
27
|
* @param {(lens: string) => string} readWorkflow
|
|
58
28
|
* @returns {{ expected: Map<string, string>, missing: string[] }}
|
|
@@ -71,17 +41,11 @@ export function planChecklists(lenses, workflowExists, readWorkflow) {
|
|
|
71
41
|
}
|
|
72
42
|
|
|
73
43
|
/**
|
|
74
|
-
* Build the full expected checklist set from the lens taxonomy and the on-disk
|
|
75
|
-
* workflow bodies, plus the strays (on-disk checklist files mapping to no
|
|
76
|
-
* current lens).
|
|
77
|
-
*
|
|
78
44
|
* @returns {{
|
|
79
45
|
* expected: Map<string, string>,
|
|
80
46
|
* missing: string[],
|
|
81
47
|
* strays: string[],
|
|
82
|
-
* }}
|
|
83
|
-
* content; `missing` lists lenses with no `audit-<lens>.md`; `strays` lists
|
|
84
|
-
* on-disk checklist basenames that map to no current lens.
|
|
48
|
+
* }}
|
|
85
49
|
*/
|
|
86
50
|
export function buildExpected({
|
|
87
51
|
fsImpl = fs,
|
|
@@ -105,10 +69,10 @@ export function buildExpected({
|
|
|
105
69
|
}
|
|
106
70
|
|
|
107
71
|
/**
|
|
108
|
-
* @param {string} basename
|
|
72
|
+
* @param {string} basename
|
|
109
73
|
* @param {string} [checklistsDir]
|
|
110
74
|
* @param {string} [projectRoot]
|
|
111
|
-
* @returns {string}
|
|
75
|
+
* @returns {string}
|
|
112
76
|
*/
|
|
113
77
|
function relChecklist(
|
|
114
78
|
basename,
|
|
@@ -122,14 +86,6 @@ function relChecklist(
|
|
|
122
86
|
}
|
|
123
87
|
|
|
124
88
|
/**
|
|
125
|
-
* The generator core, extracted from the CLI shell so both modes — the
|
|
126
|
-
* `--check` drift gate and the write/prune pass — are reachable without
|
|
127
|
-
* touching the real `.agents/audit-checklists` tree.
|
|
128
|
-
*
|
|
129
|
-
* Every seam on the optional final `deps` parameter defaults to the real
|
|
130
|
-
* implementation (`.agents/rules/test-seams.md` rules 1-2, 4), so `main` and
|
|
131
|
-
* `npm run docs:check` are unchanged.
|
|
132
|
-
*
|
|
133
89
|
* @param {string[]} [argv]
|
|
134
90
|
* @param {{
|
|
135
91
|
* fsImpl?: typeof fs,
|
|
@@ -1,43 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// `--check`
|
|
8
|
-
// generator output (ignoring the volatile `generatedAt` field) and exits
|
|
9
|
-
// non-zero with a diff-style message if they diverge.
|
|
10
|
-
//
|
|
11
|
-
// Two indexes, never one (Story #5135). The shipped manifest above is a
|
|
12
|
-
// committed payload file that `mandrel doctor` / `mandrel sync-agents`
|
|
13
|
-
// compare byte-for-byte against the installed package, so consumer-authored
|
|
14
|
-
// skills under the `.agents/local/skills/` zone MUST NOT be folded into it —
|
|
15
|
-
// a merged index would read as payload drift in every consumer that authored
|
|
16
|
-
// a skill, and those commands would refuse. Local skills are therefore
|
|
17
|
-
// indexed into their own `.agents/local/skills/skills.index.json`, inside
|
|
18
|
-
// the zone sync never prunes and drift never walks.
|
|
19
|
-
//
|
|
20
|
-
// CLI surface:
|
|
21
|
-
//
|
|
22
|
-
// node generate-skills-index.js [--check] [--root <dir>] [--out <file>]
|
|
23
|
-
//
|
|
24
|
-
// --check Read the on-disk manifest, compare to generator output
|
|
25
|
-
// modulo `generatedAt`. Exit 0 on match, non-zero on
|
|
26
|
-
// drift. Does not write.
|
|
27
|
-
// --root <dir> Use <dir> as the repo root (defaults to the project
|
|
28
|
-
// root containing `.agents/skills`). Useful for tests
|
|
29
|
-
// staging fixture trees outside the real repo.
|
|
30
|
-
// --out <file> Override the manifest output path (defaults to
|
|
31
|
-
// `<root>/.agents/skills/skills.index.json`).
|
|
32
|
-
//
|
|
33
|
-
// Written output is passed through the project formatter (Biome) so that
|
|
34
|
-
// regenerating on a clean tree leaves no format drift behind; the step is
|
|
35
|
-
// best-effort and degrades to plain `JSON.stringify` output where Biome is
|
|
36
|
-
// not installed. See `lib/format-generated-json.js`.
|
|
37
|
-
//
|
|
38
|
-
// Honors AGENT_LOG_LEVEL via the shared `Logger`. Stdout is reserved for
|
|
39
|
-
// the diff text in --check failure mode; informational progress goes to
|
|
40
|
-
// stderr.
|
|
2
|
+
// Writes `.agents/skills/skills.index.json` from every payload SKILL.md;
|
|
3
|
+
// `--check` compares modulo `generatedAt`. Consumer skills under
|
|
4
|
+
// `.agents/local/skills/` get their own index and must never be merged into
|
|
5
|
+
// the payload one: doctor/sync-agents compare it byte-for-byte against the
|
|
6
|
+
// package and would read a merged index as drift. Stdout is reserved for the
|
|
7
|
+
// `--check` diff; progress goes to stderr.
|
|
41
8
|
|
|
42
9
|
import fs from 'node:fs';
|
|
43
10
|
import path from 'node:path';
|
|
@@ -72,11 +39,7 @@ function defaultRepoRoot() {
|
|
|
72
39
|
return path.resolve(here, '..', '..');
|
|
73
40
|
}
|
|
74
41
|
|
|
75
|
-
/**
|
|
76
|
-
* Parse CLI flags. Returns `{ check, root, out }`. Unknown flags trigger
|
|
77
|
-
* a thrown Error (from the shared parser) so the runAsCli boundary can
|
|
78
|
-
* surface a clean message.
|
|
79
|
-
*/
|
|
42
|
+
/** Unknown flags throw, for runAsCli to surface. */
|
|
80
43
|
export function parseArgs(argv) {
|
|
81
44
|
if (argv.some((t) => t === '--help' || t === '-h')) {
|
|
82
45
|
return { check: false, root: null, out: null, help: true };
|
|
@@ -92,15 +55,7 @@ export function parseArgs(argv) {
|
|
|
92
55
|
return { check: values.check, root: values.root, out: values.out };
|
|
93
56
|
}
|
|
94
57
|
|
|
95
|
-
/**
|
|
96
|
-
* Project a parseSkill result into an index entry shaped by
|
|
97
|
-
* `.agents/schemas/skills-index.schema.json`.
|
|
98
|
-
*
|
|
99
|
-
* Post-Wave-2 every SKILL.md carries a 5–12-bullet Policy Capsule.
|
|
100
|
-
* `policyCapsuleBullets` records that count for the manifest entry.
|
|
101
|
-
* A value of `0` means the parser did not find the capsule section and
|
|
102
|
-
* is a validator-rejected condition (see validate-skills.js).
|
|
103
|
-
*/
|
|
58
|
+
/** `policyCapsuleBullets: 0` means no capsule was found (validator-rejected). */
|
|
104
59
|
function projectEntry(parsed) {
|
|
105
60
|
return {
|
|
106
61
|
name: parsed.name,
|
|
@@ -119,10 +74,6 @@ function projectEntry(parsed) {
|
|
|
119
74
|
};
|
|
120
75
|
}
|
|
121
76
|
|
|
122
|
-
/**
|
|
123
|
-
* Build the manifest object (without `generatedAt`) by walking the tree
|
|
124
|
-
* and projecting each parsed SKILL.md into an index entry.
|
|
125
|
-
*/
|
|
126
77
|
export function buildManifestBody(repoRoot, collect = collectSkillFiles) {
|
|
127
78
|
const skillFiles = collect(repoRoot);
|
|
128
79
|
const skills = skillFiles.map((absPath) =>
|
|
@@ -134,10 +85,6 @@ export function buildManifestBody(repoRoot, collect = collectSkillFiles) {
|
|
|
134
85
|
};
|
|
135
86
|
}
|
|
136
87
|
|
|
137
|
-
/**
|
|
138
|
-
* Build the full manifest with `generatedAt`. `nowIso` is injected so
|
|
139
|
-
* tests can pin the timestamp deterministically.
|
|
140
|
-
*/
|
|
141
88
|
export function buildManifest(repoRoot, { nowIso, collect } = {}) {
|
|
142
89
|
const body = buildManifestBody(repoRoot, collect);
|
|
143
90
|
return {
|
|
@@ -148,44 +95,24 @@ export function buildManifest(repoRoot, { nowIso, collect } = {}) {
|
|
|
148
95
|
}
|
|
149
96
|
|
|
150
97
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
* byte-identical output modulo `generatedAt`.
|
|
154
|
-
*
|
|
155
|
-
* This is the *pre-format* shape. `JSON.stringify` expands every array
|
|
156
|
-
* across multiple lines, while Biome collapses short ones that fit
|
|
157
|
-
* inside `lineWidth` (`"allowedTools": ["Read", "Bash"]`). Writing this
|
|
158
|
-
* text verbatim therefore leaves the tree format-dirty on every run —
|
|
159
|
-
* see `lib/format-generated-json.js`, which reconciles the two.
|
|
98
|
+
* Pre-format shape: Biome collapses short arrays this expands, so writes go
|
|
99
|
+
* through `formatGeneratedJson` or the tree is format-dirty on every run.
|
|
160
100
|
*/
|
|
161
101
|
export function serializeManifest(manifest) {
|
|
162
102
|
return `${JSON.stringify(manifest, null, 2)}\n`;
|
|
163
103
|
}
|
|
164
104
|
|
|
165
|
-
/**
|
|
166
|
-
* Resolve the manifest output path given (root, optional explicit
|
|
167
|
-
* override).
|
|
168
|
-
*/
|
|
169
105
|
function resolveOutPath(root, override) {
|
|
170
106
|
return override
|
|
171
107
|
? path.resolve(override)
|
|
172
108
|
: indexPathFor(root, PAYLOAD_SKILLS_SEGMENTS);
|
|
173
109
|
}
|
|
174
110
|
|
|
175
|
-
/**
|
|
176
|
-
* Resolve the local-zone manifest path. Deliberately NOT overridable by
|
|
177
|
-
* `--out`: that flag redirects the payload manifest (tests stage fixture
|
|
178
|
-
* trees with it), and letting it also move the local manifest would let one
|
|
179
|
-
* invocation write both indexes to the same file.
|
|
180
|
-
*/
|
|
111
|
+
/** Not overridable by `--out`, or one run could write both indexes to one file. */
|
|
181
112
|
function resolveLocalOutPath(root) {
|
|
182
113
|
return indexPathFor(root, LOCAL_SKILLS_SEGMENTS);
|
|
183
114
|
}
|
|
184
115
|
|
|
185
|
-
/**
|
|
186
|
-
* Write one manifest through the project formatter so a regeneration on a
|
|
187
|
-
* clean tree leaves no format drift behind.
|
|
188
|
-
*/
|
|
189
116
|
function writeManifest(manifest, outPath, root) {
|
|
190
117
|
const serialized = serializeManifest(manifest);
|
|
191
118
|
const opts = { cwd: root, filename: INDEX_FILENAME };
|
|
@@ -196,12 +123,7 @@ function writeManifest(manifest, outPath, root) {
|
|
|
196
123
|
);
|
|
197
124
|
}
|
|
198
125
|
|
|
199
|
-
/**
|
|
200
|
-
* Write (or reap) the local-zone manifest. A consumer who deletes their last
|
|
201
|
-
* local skill would otherwise be left with a stale index reporting skills
|
|
202
|
-
* that no longer exist, so an emptied zone removes the artifact rather than
|
|
203
|
-
* leaving it behind.
|
|
204
|
-
*/
|
|
126
|
+
/** An emptied local zone removes its index rather than leave a stale one. */
|
|
205
127
|
function writeLocalManifest(localFresh, localOutPath, root) {
|
|
206
128
|
const rel = path.relative(root, localOutPath).split(path.sep).join('/');
|
|
207
129
|
if (localFresh === null) {
|
|
@@ -215,11 +137,6 @@ function writeLocalManifest(localFresh, localOutPath, root) {
|
|
|
215
137
|
Logger.info(`wrote ${rel} (${localFresh.skills.length} entries)`);
|
|
216
138
|
}
|
|
217
139
|
|
|
218
|
-
/**
|
|
219
|
-
* Compare the local-zone manifest against fresh generator output. Returns
|
|
220
|
-
* null when in sync (including the common case of no local skills and no
|
|
221
|
-
* artifact), or a diff-style message.
|
|
222
|
-
*/
|
|
223
140
|
function checkLocalManifest(localFresh, localOutPath) {
|
|
224
141
|
const exists = fs.existsSync(localOutPath);
|
|
225
142
|
if (localFresh === null) {
|
|
@@ -240,13 +157,7 @@ function checkLocalManifest(localFresh, localOutPath) {
|
|
|
240
157
|
}
|
|
241
158
|
|
|
242
159
|
/**
|
|
243
|
-
*
|
|
244
|
-
* and a fresh manifest when the consumer has authored any local skill (null
|
|
245
|
-
* otherwise, which is the signal to reap a stale artifact).
|
|
246
|
-
*
|
|
247
|
-
* Split out of `run` so the payload path and the local path each read as one
|
|
248
|
-
* step there rather than interleaving.
|
|
249
|
-
*
|
|
160
|
+
* A null `localFresh` signals reaping a stale artifact.
|
|
250
161
|
* @param {string} root
|
|
251
162
|
* @param {Date} now
|
|
252
163
|
* @returns {{ localFresh: object | null, localOutPath: string }}
|
|
@@ -264,9 +175,6 @@ function buildLocalPlan(root, now) {
|
|
|
264
175
|
}
|
|
265
176
|
|
|
266
177
|
/**
|
|
267
|
-
* Render the freshness line's entry counts, naming the local zone only when
|
|
268
|
-
* one exists.
|
|
269
|
-
*
|
|
270
178
|
* @param {object} fresh
|
|
271
179
|
* @param {object | null} localFresh
|
|
272
180
|
* @returns {string}
|
|
@@ -279,13 +187,7 @@ function describeCounts(fresh, localFresh) {
|
|
|
279
187
|
}
|
|
280
188
|
|
|
281
189
|
/**
|
|
282
|
-
*
|
|
283
|
-
* report the first drift found, payload first.
|
|
284
|
-
*
|
|
285
|
-
* Lives outside `run` so the entry point reads as "resolve inputs, then check
|
|
286
|
-
* or write" — and so the check path's branches are not charged to a function
|
|
287
|
-
* that also owns argument resolution.
|
|
288
|
-
*
|
|
190
|
+
* Reports the first drift found, payload first.
|
|
289
191
|
* @param {{ outPath: string, fresh: object, localOutPath: string, localFresh: object | null }} plan
|
|
290
192
|
* @returns {{ status: number, output: string }}
|
|
291
193
|
*/
|
|
@@ -1,33 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `.agents/docs/workflows.md` from the on-disk workflow set under
|
|
7
|
-
* `.agents/workflows/*.md` (top-level only — `helpers/` are path-included
|
|
8
|
-
* modules, not runnable slash commands). The catalog logic is shared with
|
|
9
|
-
* the in-process backend in `lib/mandrel-catalog.js`, so the generated doc
|
|
10
|
-
* and any programmatic catalog reader never drift from one another.
|
|
11
|
-
*
|
|
12
|
-
* Why generated (Story #3708): `workflows.md` used to be hand-maintained and
|
|
13
|
-
* was *not* drift-gated, so it could silently fall out of sync with the
|
|
14
|
-
* actual workflow set. The retired `/mandrel` discoverability command was
|
|
15
|
-
* always accurate because it rendered the catalog live. Rather than keep the
|
|
16
|
-
* drift-prone hand-authored doc and the accurate-but-ephemeral command, this
|
|
17
|
-
* generator makes the doc itself a rendering of the same catalog, gates it via
|
|
18
|
-
* `--check`, and ships it to consumers under `.agents/docs/`.
|
|
19
|
-
*
|
|
20
|
-
* Modes:
|
|
21
|
-
* (default) — rewrites `.agents/docs/workflows.md` in full from the
|
|
22
|
-
* current workflow set.
|
|
23
|
-
* --check — exits 0 when the on-disk file matches the freshly generated
|
|
24
|
-
* content, throws (→ exit 1) with a regeneration hint otherwise.
|
|
25
|
-
* --root — read and write under another checkout's `.agents/` tree.
|
|
26
|
-
* See {@link resolveTargets} for why this seam exists.
|
|
27
|
-
*
|
|
28
|
-
* Per `.agents/rules/orchestration-error-handling.md`, unrecoverable failures
|
|
29
|
-
* surface via `throw new Error(...)` so `runAsCli` maps the throw to
|
|
30
|
-
* `process.exit(1)` deterministically (no `Logger.fatal`).
|
|
3
|
+
* Renders `.agents/docs/workflows.md` from the top-level workflow set via the
|
|
4
|
+
* shared `lib/mandrel-catalog.js`, so the doc and programmatic readers cannot
|
|
5
|
+
* drift; `--check` gates it.
|
|
31
6
|
*/
|
|
32
7
|
|
|
33
8
|
import fs from 'node:fs';
|
|
@@ -43,28 +18,9 @@ const __dirname = path.dirname(__filename);
|
|
|
43
18
|
const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
|
|
44
19
|
|
|
45
20
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* The `--root` seam this backs exists for the drift gate's own test. That
|
|
50
|
-
* test used to prove the gate by editing the *real*
|
|
51
|
-
* `.agents/workflows/mandrel-deliver.md`, running `--check`, and restoring
|
|
52
|
-
* the file in `afterEach`. The proof was sound; the blast radius was not.
|
|
53
|
-
* `node --test` runs test files in parallel against one shared checkout, so
|
|
54
|
-
* for the ~1s the real file sat mutated, every other test file observed a
|
|
55
|
-
* dirty tree — and `tests/enforcement/workflow-script-help.test.js`, whose
|
|
56
|
-
* final assertion is a repo-wide `git status --porcelain`, reported it as
|
|
57
|
-
* "`--help` mutated the working tree" on the Windows Smoke job, where the
|
|
58
|
-
* wider process-spawn cost stretches that window far enough to collide.
|
|
59
|
-
*
|
|
60
|
-
* A generator that can only ever be pointed at its own checkout forces that
|
|
61
|
-
* choice. Pointing it at a fixture root removes it.
|
|
62
|
-
*
|
|
63
|
-
* The `--root` default is applied here rather than at the call site so the
|
|
64
|
-
* one branch it costs lives with the resolution it belongs to.
|
|
65
|
-
*
|
|
66
|
-
* @param {string} [root] Repository root to render against; defaults to this
|
|
67
|
-
* checkout. A relative path is resolved against the process cwd.
|
|
21
|
+
* The `--root` seam lets the drift gate's test use a fixture root: mutating
|
|
22
|
+
* the real workflow file dirties the shared checkout for parallel test files.
|
|
23
|
+
* @param {string} [root]
|
|
68
24
|
* @returns {{ root: string, workflowsDir: string, docPath: string }}
|
|
69
25
|
*/
|
|
70
26
|
export function resolveTargets(root) {
|
|
@@ -76,21 +32,11 @@ export function resolveTargets(root) {
|
|
|
76
32
|
};
|
|
77
33
|
}
|
|
78
34
|
|
|
79
|
-
/** This checkout's own targets — the default when `--root` is absent. */
|
|
80
35
|
const { workflowsDir: WORKFLOWS_DIR, docPath: DOC_PATH } = resolveTargets();
|
|
81
36
|
|
|
82
37
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* - pipe characters (`|`) so a description can never break the table grid;
|
|
86
|
-
* - stray newlines;
|
|
87
|
-
* - bare emphasis markers (`*`, `_`) so a glob like `audit-*` in a
|
|
88
|
-
* description is rendered literally instead of being parsed as emphasis
|
|
89
|
-
* (which trips markdownlint MD037 in the generated doc).
|
|
90
|
-
*
|
|
91
|
-
* Framework workflow descriptions do not embed `*`/`_` inside inline code
|
|
92
|
-
* spans, so a global escape is safe and keeps the generator pure.
|
|
93
|
-
*
|
|
38
|
+
* Escapes `*`/`_` so a glob like `audit-*` is not parsed as emphasis (MD037);
|
|
39
|
+
* safe globally because descriptions put neither inside code spans.
|
|
94
40
|
* @param {string | null} description
|
|
95
41
|
* @returns {string}
|
|
96
42
|
*/
|
|
@@ -103,9 +49,6 @@ function cellEscape(description) {
|
|
|
103
49
|
}
|
|
104
50
|
|
|
105
51
|
/**
|
|
106
|
-
* Render the full generated `workflows.md` content from the flat command
|
|
107
|
-
* catalog and the loop-unit catalog.
|
|
108
|
-
*
|
|
109
52
|
* @param {Array<{ name: string, description: string | null, vague: boolean }>} catalog
|
|
110
53
|
* @param {Array<{ name: string, description: string | null, vague: boolean }>} [loopCatalog]
|
|
111
54
|
* @returns {string}
|
|
@@ -124,7 +67,7 @@ export function renderWorkflowsDoc(catalog, loopCatalog = []) {
|
|
|
124
67
|
'This is an **auto-generated reference index** of every slash command shipped',
|
|
125
68
|
'under `.agents/workflows/` (top-level only — `helpers/` are path-included',
|
|
126
69
|
'modules, not runnable commands). The canonical workflow narrative lives in',
|
|
127
|
-
'[`SDLC.md`](SDLC.md) — read that first to understand how the commands',
|
|
70
|
+
'[`SDLC.md`](https://github.com/dsj1984/mandrel/blob/main/docs/SDLC.md) — read that first to understand how the commands',
|
|
128
71
|
'compose. This file is only for "which command does X?" lookups.',
|
|
129
72
|
'',
|
|
130
73
|
'Every command file lives at `.agents/workflows/<name>.md` and is projected',
|
|
@@ -184,10 +127,7 @@ export function renderWorkflowsDoc(catalog, loopCatalog = []) {
|
|
|
184
127
|
}
|
|
185
128
|
|
|
186
129
|
/**
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* @param {string} [root] Repository root to render against; see
|
|
190
|
-
* {@link resolveTargets}.
|
|
130
|
+
* @param {string} [root]
|
|
191
131
|
* @returns {{
|
|
192
132
|
* generated: string,
|
|
193
133
|
* original: string | null,
|
|
@@ -2,41 +2,9 @@
|
|
|
2
2
|
/* node:coverage ignore file -- multi-phase repo-cleanup CLI; thin shell over `git` + `gh` */
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* cleanup pipeline.
|
|
5
|
+
* Thin CLI shell over the `lib/orchestration/git-cleanup/phases/` pipeline.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* 1. parse-args — argv → normalized opts bag (`parseCleanupArgs`).
|
|
11
|
-
* 2. filters — pure glob + protected-branch helpers.
|
|
12
|
-
* 3. git-probes — every `gitSpawn` / `gh` subprocess wrapper plus
|
|
13
|
-
* small parsers (`probeMergedPr`, etc).
|
|
14
|
-
* 4. branches — merged-branch reap (`planCleanup`,
|
|
15
|
-
* `executeCleanup`).
|
|
16
|
-
* 5. fast-forward — fast-forward-main phase.
|
|
17
|
-
* 6. prune — prune-remotes phase + `parsePrunedRefs`.
|
|
18
|
-
* 7. stashes — stash triage (`parseStashList`, `planStashes`,
|
|
19
|
-
* `executeStashes`, `stashRefIndex`,
|
|
20
|
-
* `buildAllowlistDecider`).
|
|
21
|
-
* 8. render — operator-facing renderers + `buildJsonEnvelope`,
|
|
22
|
-
* `computeExitCode`.
|
|
23
|
-
* 9. cli — interactive prompts + per-phase drivers + `main`.
|
|
24
|
-
*
|
|
25
|
-
* Public CLI surface, named exports, and exit codes are byte-identical
|
|
26
|
-
* to the pre-refactor implementation. See the original module docstring
|
|
27
|
-
* (preserved below) for the operator-facing flag + phase contract.
|
|
28
|
-
*
|
|
29
|
-
* Phases (selectable, run sequentially when no narrowing flag set):
|
|
30
|
-
* 1. fast-forward-main — `git fetch origin <base>` → `git merge --ff-only`.
|
|
31
|
-
* 2. prune-remotes — `git fetch --prune <remote>`.
|
|
32
|
-
* 3. branches — enumerate merged local branches via `gh pr list`
|
|
33
|
-
* + `git branch --merged <base>` and reap.
|
|
34
|
-
* 4. stashes — `git stash list` → optional per-stash drops.
|
|
35
|
-
*
|
|
36
|
-
* Exit codes:
|
|
37
|
-
* 0 — clean (dry-run preview, or every active phase succeeded).
|
|
38
|
-
* 1 — at least one phase reported a failure.
|
|
39
|
-
* 2 — every active phase produced nothing to do (informational).
|
|
7
|
+
* Exit codes: 0 clean or dry-run, 1 a phase failed, 2 nothing to do.
|
|
40
8
|
*/
|
|
41
9
|
|
|
42
10
|
import { runAsCli } from './lib/cli-utils.js';
|