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,36 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Split out of `branches.js` so each phase file stays under Story
|
|
6
|
-
* #2466's 200-LOC ceiling. Exports four small functions that the
|
|
7
|
-
* branches-phase orchestrator (`executeCleanup`) composes:
|
|
8
|
-
*
|
|
9
|
-
* - `reapWorktree({ cand, … })` — `git worktree remove` (with force
|
|
10
|
-
* fallback) and push the result onto `worktrees`.
|
|
11
|
-
* - `reapLocalRef({ cand, … })` — `git branch -D`, skipped on
|
|
12
|
-
* remote-only candidates.
|
|
13
|
-
* - `reapRemoteRef({ cand, … })` — `git push --delete <remote>`.
|
|
14
|
-
* - `buildPruneSummary({ … })` — trailing `git fetch --prune` to
|
|
15
|
-
* drop tracking refs left behind by remote deletes.
|
|
16
|
-
*
|
|
17
|
-
* Every helper records its outcome on the supplied accumulator arrays
|
|
18
|
-
* and pushes hard failures onto `failures`.
|
|
19
|
-
*
|
|
20
|
-
* ## Ref-reap is decoupled from worktree-reap (Story #3598)
|
|
21
|
-
*
|
|
22
|
-
* The candidate set is, by construction, already-merged (the planner
|
|
23
|
-
* resolves each candidate's merged PR / `git merge-base` state). A
|
|
24
|
-
* failure to physically remove the worktree *directory* must NOT strand
|
|
25
|
-
* the merged branch *ref*: a leftover directory is recoverable garbage,
|
|
26
|
-
* a stranded merged ref clutters every subsequent run. So `reapWorktree`
|
|
27
|
-
* no longer gates the ref reap — `executeCleanup` always proceeds to
|
|
28
|
-
* `reapLocalRef` / `reapRemoteRef` after it, regardless of the worktree
|
|
29
|
-
* outcome. Lock-class removal failures (Windows handles on
|
|
30
|
-
* `node_modules` / test artifacts) are recorded as **deferred** entries
|
|
31
|
-
* and handed off to the `pending-cleanup` manifest rather than pushed
|
|
32
|
-
* onto `failures`, so an OS file lock on an already-merged branch's
|
|
33
|
-
* directory does not make `git-cleanup` exit non-zero.
|
|
2
|
+
* Per-candidate reap helpers for git-cleanup's branches phase. Each records
|
|
3
|
+
* its outcome on the supplied accumulators and hard failures on `failures`.
|
|
34
4
|
*
|
|
35
5
|
* @module lib/orchestration/git-cleanup/phases/branches-reap
|
|
36
6
|
*/
|
|
@@ -38,20 +8,10 @@
|
|
|
38
8
|
const TAG = '[git-cleanup]';
|
|
39
9
|
|
|
40
10
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* - **lock-class** (`wtRes.lockClass`) → recorded on `deferred` and, when
|
|
46
|
-
* a `recordPendingCleanupFn` + `worktreeRoot` are supplied, handed off
|
|
47
|
-
* to the pending-cleanup manifest. Non-fatal — the run does not exit 1.
|
|
48
|
-
* - **non-lock** → pushed onto `failures` (a genuine, operator-visible
|
|
49
|
-
* git error worth surfacing as a failure).
|
|
50
|
-
*
|
|
51
|
-
* Unlike the pre-#3598 contract, the return value does **not** gate the
|
|
52
|
-
* subsequent ref reap; `executeCleanup` always proceeds to delete the
|
|
53
|
-
* (already-merged) ref. The boolean is retained only as a "removal
|
|
54
|
-
* succeeded" signal for callers that want it.
|
|
11
|
+
* Remove a candidate's worktree. A lock-class failure is deferred to the
|
|
12
|
+
* pending-cleanup manifest (non-fatal); any other failure is a hard failure.
|
|
13
|
+
* The return value never gates the ref reap: a leftover directory must not
|
|
14
|
+
* strand an already-merged ref.
|
|
55
15
|
*/
|
|
56
16
|
export function reapWorktree({
|
|
57
17
|
cand,
|
|
@@ -98,12 +58,6 @@ export function reapWorktree({
|
|
|
98
58
|
return false;
|
|
99
59
|
}
|
|
100
60
|
|
|
101
|
-
/**
|
|
102
|
-
* Record a lock-class worktree-removal failure as a non-fatal deferred
|
|
103
|
-
* entry and hand it off to the pending-cleanup manifest when wired. The
|
|
104
|
-
* merged branch ref is still reaped by `executeCleanup`; only the locked
|
|
105
|
-
* directory is left for the next plan-time worktree-sweep to drain.
|
|
106
|
-
*/
|
|
107
61
|
function recordDeferredWorktree({
|
|
108
62
|
cand,
|
|
109
63
|
wtRes,
|
|
@@ -141,11 +95,7 @@ function recordDeferredWorktree({
|
|
|
141
95
|
);
|
|
142
96
|
}
|
|
143
97
|
|
|
144
|
-
/**
|
|
145
|
-
* Parse the numeric story id out of a `story-<id>` branch name. Returns
|
|
146
|
-
* `null` for non-story branches (the pending-cleanup manifest is keyed by
|
|
147
|
-
* `storyId`, so only `story-*` candidates get a manifest handoff).
|
|
148
|
-
*/
|
|
98
|
+
/** Story id of a `story-<id>` branch (the manifest key), else `null`. */
|
|
149
99
|
function storyIdFromBranch(branch) {
|
|
150
100
|
const m = /^story-(\d+)$/.exec(branch ?? '');
|
|
151
101
|
return m ? Number(m[1]) : null;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Owns `planCleanup` + `executeCleanup`. Reap helpers live in
|
|
4
|
-
* `branches-reap.js`; the non-PR detection signals and the remote-only
|
|
5
|
-
* walk live in `branches-detect.js`.
|
|
2
|
+
* Branch-reap phase of git-cleanup: `planCleanup` + `executeCleanup`.
|
|
6
3
|
* @module lib/orchestration/git-cleanup/phases/branches
|
|
7
4
|
*/
|
|
8
5
|
|
|
@@ -51,14 +48,8 @@ import { parsePrunedRefs } from './prune.js';
|
|
|
51
48
|
const TAG = '[git-cleanup]';
|
|
52
49
|
|
|
53
50
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* `git merge-tree --write-tree` finding the branch's changes already
|
|
57
|
-
* present in the base by *some* route — it cannot tell a squash-merge
|
|
58
|
-
* from a branch whose every change was independently reverted, so it is
|
|
59
|
-
* the one signal an unattended `--yes` run must not delete a remote ref
|
|
60
|
-
* on. Named here so the guard, the renderer and the tests share one
|
|
61
|
-
* spelling.
|
|
51
|
+
* `content-merged` cannot tell a squash-merge from independently reverted
|
|
52
|
+
* changes, so an unattended `--yes` run must not delete a remote ref on it.
|
|
62
53
|
*/
|
|
63
54
|
const WEAK_SIGNAL_DETECTOR = 'content-merged';
|
|
64
55
|
const WEAK_SIGNAL_REASON = 'weak-signal-needs-confirmation';
|
|
@@ -128,68 +119,8 @@ function evaluateLocalBranch({
|
|
|
128
119
|
}
|
|
129
120
|
|
|
130
121
|
/**
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* The PR probe classifies each candidate by the **latest** PR on the head
|
|
134
|
-
* ref rather than any historical merge. Branches whose latest PR is OPEN
|
|
135
|
-
* or CLOSED-not-merged are skipped with `reason: 'latest-pr-open'` /
|
|
136
|
-
* `reason: 'latest-pr-closed-not-merged'`. A MERGED PR whose `headRefOid`
|
|
137
|
-
* differs from the branch tip is resolved by ancestry in
|
|
138
|
-
* `merged-tip.js` — a tip *behind* the merged head becomes a candidate
|
|
139
|
-
* carrying `behindMerge: true`, a tip *ahead* of it keeps the
|
|
140
|
-
* `tip-diverged-from-merge` force-push skip, and an unresolvable rev
|
|
141
|
-
* skips as `unverifiable`.
|
|
142
|
-
*
|
|
143
|
-
* Performance (Story #3333): when the caller does not inject its own
|
|
144
|
-
* `prProbe`, the planner fires **one** bulk `gh pr list --state all`
|
|
145
|
-
* (via {@link probeAllPrs}) up front and indexes the page by
|
|
146
|
-
* `headRefName`. Each branch loop then reads its PR signal from that Map
|
|
147
|
-
* instead of spawning a per-branch `gh`. {@link probeLatestPr} remains
|
|
148
|
-
* the per-branch fallback for head refs absent from the bulk page (a PR
|
|
149
|
-
* that fell outside the fetch window), so correctness is preserved for
|
|
150
|
-
* every branch. Injecting `prProbe` bypasses the bulk fetch entirely.
|
|
151
|
-
*
|
|
152
|
-
* Story #4395 adds three refinements:
|
|
153
|
-
* - **Content-equivalence signal.** A local branch with no reapable PR
|
|
154
|
-
* verdict and no ancestry match gets one more chance via
|
|
155
|
-
* {@link probeContentEquivalent} (`git merge-tree --write-tree`):
|
|
156
|
-
* when merging it into `baseBranch` would be a content no-op, it is
|
|
157
|
-
* classified `detectedBy: 'content-merged'` instead of skipped.
|
|
158
|
-
* - **Fresh ancestry anchor.** The ancestry signal (`git branch --merged`)
|
|
159
|
-
* is unioned against `origin/<base>` (via `refExistsFn` + `mergedLister`)
|
|
160
|
-
* whenever that remote-tracking ref exists, so a stale local `<base>`
|
|
161
|
-
* no longer hides a branch already merged on the remote.
|
|
162
|
-
* - **Graceful `gh` degradation.** A throwing `gh` runner (auth failure,
|
|
163
|
-
* rate limit, missing binary) inside the bulk index fetch or the
|
|
164
|
-
* per-branch fallback is caught, logged once, and degrades to
|
|
165
|
-
* git-only signals (ancestry + content-equivalence) rather than
|
|
166
|
-
* aborting the whole plan. The returned envelope's `ghDegraded` flag
|
|
167
|
-
* records whether this happened.
|
|
168
|
-
*
|
|
169
|
-
* Story #5188 makes the **remote-only** walk total (it now lives in
|
|
170
|
-
* `branches-detect.js`). It used to classify by
|
|
171
|
-
* the latest-PR verdict alone and return early on a `no-pr` verdict,
|
|
172
|
-
* recording neither a candidate nor a skip — so a remote ref no PR record
|
|
173
|
-
* covered was absent from `candidates[]`, `skipped[]`, the rendered log
|
|
174
|
-
* and the `--json` envelope alike. It now runs the same three-signal
|
|
175
|
-
* cascade the local walk does (PR verdict → ancestry → content
|
|
176
|
-
* -equivalence → `not-merged` skip), over its own remote-namespace
|
|
177
|
-
* ancestry source and with every git probe handed the qualified
|
|
178
|
-
* `<remote>/<branch>` rev. Every enumerated branch that passes the
|
|
179
|
-
* protected and filter checks therefore lands in exactly one of the two
|
|
180
|
-
* collections. Deletion is unchanged: a remote-only candidate still needs
|
|
181
|
-
* `--remote`, whichever signal detected it.
|
|
182
|
-
*/
|
|
183
|
-
/**
|
|
184
|
-
* Normalize whatever `prIndexFn` returned into the
|
|
185
|
-
* `{ index, complete }` pair {@link probeAllPrs} emits (Story #5283).
|
|
186
|
-
*
|
|
187
|
-
* The seam is injectable, and a caller that hands back a bare `Map` —
|
|
188
|
-
* every pre-#5283 double does — means "here is the page" without
|
|
189
|
-
* claiming it was exhaustive. That reads as `complete: false`, which
|
|
190
|
-
* keeps the per-branch fallback armed: the conservative direction, since
|
|
191
|
-
* a wrongly-complete page suppresses a probe that would have found a
|
|
192
|
-
* real PR.
|
|
122
|
+
* Normalize `prIndexFn`'s result to `{ index, complete }`. A bare `Map` reads
|
|
123
|
+
* as incomplete, keeping the per-branch fallback armed (the safe direction).
|
|
193
124
|
*
|
|
194
125
|
* @param {unknown} value
|
|
195
126
|
* @returns {{ index: Map, complete: boolean }}
|
|
@@ -213,11 +144,7 @@ function buildGuardedPrProbe({ cwd, prIndexFn, prFallback, onDegrade }) {
|
|
|
213
144
|
const { index: prIndex, complete } = bulk;
|
|
214
145
|
return (branch, c) => {
|
|
215
146
|
if (prIndex.has(branch)) return prIndex.get(branch);
|
|
216
|
-
//
|
|
217
|
-
// head ref demonstrably has none. Probing it per-branch spends a `gh`
|
|
218
|
-
// spawn to be told the same thing — once per PR-less branch, which on
|
|
219
|
-
// a checkout full of local scratch branches is the whole point of the
|
|
220
|
-
// bulk fetch undone.
|
|
147
|
+
// A complete page proves this head ref has no PR; skip the `gh` spawn.
|
|
221
148
|
if (complete) return null;
|
|
222
149
|
try {
|
|
223
150
|
return prFallback(branch, c);
|
|
@@ -228,6 +155,13 @@ function buildGuardedPrProbe({ cwd, prIndexFn, prFallback, onDegrade }) {
|
|
|
228
155
|
};
|
|
229
156
|
}
|
|
230
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Enumerate merged-branch candidates. Signals cascade: latest PR on the head
|
|
160
|
+
* ref (one bulk `gh` fetch, per-branch fallback) → ancestry against local and
|
|
161
|
+
* `<remote>/<base>` → content-equivalence. A failing `gh` degrades once to
|
|
162
|
+
* git-only signals (`ghDegraded`). Every enumerated branch lands in exactly
|
|
163
|
+
* one of `candidates` / `skipped`.
|
|
164
|
+
*/
|
|
231
165
|
export function planCleanup(ctx) {
|
|
232
166
|
const {
|
|
233
167
|
cwd,
|
|
@@ -329,45 +263,18 @@ export function planCleanup(ctx) {
|
|
|
329
263
|
return { candidates, skipped, ghDegraded };
|
|
330
264
|
}
|
|
331
265
|
|
|
332
|
-
/**
|
|
333
|
-
* Derive the pending-cleanup manifest root from a candidate's worktree
|
|
334
|
-
* path. The manifest lives in the worktree root (`.worktrees/`), and a
|
|
335
|
-
* candidate's `worktreePath` is `<root>/story-<id>`, so the parent
|
|
336
|
-
* directory is the root. Returns `null` when the candidate has no
|
|
337
|
-
* worktree path (remote-only / no-worktree candidate).
|
|
338
|
-
*/
|
|
266
|
+
/** Pending-cleanup manifest root: the worktree's parent dir, or `null`. */
|
|
339
267
|
function worktreeRootFor(cand) {
|
|
340
268
|
if (!cand.worktreePath) return null;
|
|
341
269
|
return dirname(cand.worktreePath);
|
|
342
270
|
}
|
|
343
271
|
|
|
344
272
|
/**
|
|
345
|
-
*
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
*
|
|
349
|
-
*
|
|
350
|
-
* detected only by content-equivalence, recording it on `remote[]` as
|
|
351
|
-
* `{ skipped: true, reason: 'weak-signal-needs-confirmation' }` instead
|
|
352
|
-
* of issuing `git push --delete`. The branch-phase driver arms it on the
|
|
353
|
-
* `--yes` path unless the operator passed `--include-content-merged`,
|
|
354
|
-
* mirroring the stash phase's `--drop-stashes` allowlist: an unattended
|
|
355
|
-
* run may not destroy a remote ref on the weakest merge signal without
|
|
356
|
-
* being told to. The interactive path leaves it disarmed — the prompt
|
|
357
|
-
* already names the weak-signal count and the operator answered it.
|
|
358
|
-
*
|
|
359
|
-
* Local deletion is deliberately untouched: a local ref is recoverable
|
|
360
|
-
* from the remote, which is exactly what the guard preserves.
|
|
361
|
-
*
|
|
362
|
-
* Ref-reap is decoupled from worktree-reap (Story #3598): every
|
|
363
|
-
* already-merged candidate has its local ref (and remote ref, in
|
|
364
|
-
* `--remote` mode) deleted regardless of whether its worktree directory
|
|
365
|
-
* could be physically removed. A lock-class worktree-removal failure is
|
|
366
|
-
* recorded as a non-fatal `deferred` entry + a `pending-cleanup` handoff
|
|
367
|
-
* (drained by the next plan-time worktree-sweep) rather than a hard
|
|
368
|
-
* `failure`, so an OS file lock on an already-merged branch's directory
|
|
369
|
-
* never makes the run exit non-zero. A non-lock worktree failure still
|
|
370
|
-
* surfaces as a hard failure.
|
|
273
|
+
* Execute the reap plan. `skipWeakSignal` (armed on unattended `--yes` runs)
|
|
274
|
+
* withholds only the remote delete of `content-merged` candidates; the local
|
|
275
|
+
* ref stays deletable because the remote preserves it. Ref reap never waits
|
|
276
|
+
* on worktree removal: a lock-class removal failure is deferred to the
|
|
277
|
+
* pending-cleanup sweep, not a hard failure.
|
|
371
278
|
*/
|
|
372
279
|
export function executeCleanup(ctx) {
|
|
373
280
|
const {
|
|
@@ -383,13 +290,7 @@ export function executeCleanup(ctx) {
|
|
|
383
290
|
skipWeakSignal = false,
|
|
384
291
|
logger = Logger,
|
|
385
292
|
} = ctx;
|
|
386
|
-
//
|
|
387
|
-
// reap helper, so bind it here (Story #5283). The default deleter used
|
|
388
|
-
// to drop it and let `deleteBranchRemote` fall back to `origin`, which
|
|
389
|
-
// sent every `--remote` delete of an `upstream`-configured checkout at
|
|
390
|
-
// the wrong remote. Binding — rather than closing over it — also hands
|
|
391
|
-
// an injected deleter the same `(branch, cwd, remote)` triple the git
|
|
392
|
-
// invocation is built from, so a test can see which remote was targeted.
|
|
293
|
+
// Bind the remote explicitly, or the deleter falls back to `origin`.
|
|
393
294
|
const boundDeleteRemote = (b, c) => deleteRemoteFn(b, c, remoteName);
|
|
394
295
|
const worktrees = [];
|
|
395
296
|
const local = [];
|
|
@@ -397,10 +298,6 @@ export function executeCleanup(ctx) {
|
|
|
397
298
|
const failures = [];
|
|
398
299
|
const deferred = [];
|
|
399
300
|
for (const cand of candidates) {
|
|
400
|
-
// Worktree removal is attempted but its outcome does NOT gate the ref
|
|
401
|
-
// reap: the candidate is already merged, so a leftover directory must
|
|
402
|
-
// never strand the ref. Lock-class removal failures are deferred to
|
|
403
|
-
// the pending-cleanup sweep inside reapWorktree.
|
|
404
301
|
reapWorktree({
|
|
405
302
|
cand,
|
|
406
303
|
removeWorktreeFn,
|
|
@@ -434,9 +331,7 @@ export function executeCleanup(ctx) {
|
|
|
434
331
|
});
|
|
435
332
|
}
|
|
436
333
|
let prune = null;
|
|
437
|
-
// Prune
|
|
438
|
-
// whose every remote candidate was withheld deleted nothing, so there
|
|
439
|
-
// is nothing stale to prune and no reason to spend the fetch.
|
|
334
|
+
// Prune only when some remote delete actually ran.
|
|
440
335
|
if (remote && remoteResults.some((r) => !r.skipped)) {
|
|
441
336
|
prune = buildPruneSummary({ pruneRemoteFn, cwd, remoteName, failures });
|
|
442
337
|
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Owns argv parsing, base-branch resolution, fan-out across the four
|
|
5
|
-
* cleanup phases, and the optional JSON envelope emission. Per-phase
|
|
6
|
-
* orchestrators (`runFastForwardPhase` etc.) live in
|
|
7
|
-
* `phase-drivers.js`; interactive prompts in `prompts.js`.
|
|
2
|
+
* git-cleanup `main()`: argv, base-branch resolution, the four phases, and
|
|
3
|
+
* the optional JSON envelope.
|
|
8
4
|
*
|
|
9
5
|
* @module lib/orchestration/git-cleanup/phases/cli
|
|
10
6
|
*/
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Owns `planFastForward(ctx)` and `executeFastForward(ctx)`. Extracted
|
|
5
|
-
* verbatim from `git-cleanup.js`.
|
|
2
|
+
* Fast-forward-main phase of git-cleanup.
|
|
6
3
|
*
|
|
7
4
|
* @module lib/orchestration/git-cleanup/phases/fast-forward
|
|
8
5
|
*/
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Exports `buildGlobFilter`, `computeProtectedSet`, and
|
|
5
|
-
* `computeProtectedReason` — extracted verbatim from `git-cleanup.js`
|
|
6
|
-
* so the named-export contract stays byte-identical.
|
|
2
|
+
* Pure branch-filter and protected-branch helpers for git-cleanup.
|
|
7
3
|
*
|
|
8
4
|
* @module lib/orchestration/git-cleanup/phases/filters
|
|
9
5
|
*/
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* for git-cleanup (Story #2466).
|
|
4
|
-
*
|
|
5
|
-
* Split out of `git-probes.js` so each phase file stays under Story
|
|
6
|
-
* #2466's 200-LOC ceiling. Owns the wrappers the fast-forward-main,
|
|
7
|
-
* prune-remotes, and worktree-reap paths call.
|
|
2
|
+
* Fast-forward / worktree / prune git wrappers for git-cleanup.
|
|
8
3
|
*
|
|
9
4
|
* @module lib/orchestration/git-cleanup/phases/git-probes-ff
|
|
10
5
|
*/
|
|
@@ -12,21 +7,16 @@
|
|
|
12
7
|
import { gitSpawn } from '../../../git-utils.js';
|
|
13
8
|
|
|
14
9
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* `node_modules` handles, AV/indexer, test/coverage artifacts), not a
|
|
19
|
-
* git-state problem. Lock-class removal failures degrade to a deferred
|
|
20
|
-
* `pending-cleanup` handoff instead of aborting the candidate's ref reap.
|
|
10
|
+
* OS file-lock signatures (mirrors `worktree/lifecycle/reap.js`). A lock-class
|
|
11
|
+
* worktree removal failure defers to pending-cleanup instead of aborting the
|
|
12
|
+
* ref reap.
|
|
21
13
|
*/
|
|
22
14
|
const WORKTREE_LOCK_RE =
|
|
23
15
|
/(permission denied|access is denied|directory not empty|resource busy|device or resource busy|sharing violation|used by another process|EACCES|EBUSY|ENOTEMPTY)/i;
|
|
24
16
|
|
|
25
17
|
/**
|
|
26
|
-
* Classify a worktree-removal stderr as Windows-lock-class or not.
|
|
27
|
-
*
|
|
28
18
|
* @param {string} stderr
|
|
29
|
-
* @returns {boolean}
|
|
19
|
+
* @returns {boolean}
|
|
30
20
|
*/
|
|
31
21
|
export function isWorktreeLockFailure(stderr) {
|
|
32
22
|
return WORKTREE_LOCK_RE.test(stderr ?? '');
|
|
@@ -58,15 +48,8 @@ export function mergeFastForward(cwd, ref) {
|
|
|
58
48
|
}
|
|
59
49
|
|
|
60
50
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* This is the **single implementation** of the FF/base-sync git wrappers.
|
|
64
|
-
* The standalone exports above delegate to a default instance bound to the
|
|
65
|
-
* shared `gitSpawn`; callers that need to inject their own spawn for testing
|
|
66
|
-
* (e.g. the epic-cleanup runner) call this factory directly instead of
|
|
67
|
-
* hand-rolling a parallel copy (framework-gap #4379). The bundle also carries
|
|
68
|
-
* `currentBranch` so an injecting caller gets the whole FF surface from one
|
|
69
|
-
* place.
|
|
51
|
+
* The single implementation of the FF git wrappers; callers needing an
|
|
52
|
+
* injected spawn use this factory rather than a parallel copy.
|
|
70
53
|
*
|
|
71
54
|
* @param {(cwd: string, ...args: string[]) => { status: number, stdout: string, stderr: string }} [spawn]
|
|
72
55
|
* @returns {{
|
|
@@ -131,8 +114,6 @@ export function makeFfProbes(spawn = gitSpawn) {
|
|
|
131
114
|
};
|
|
132
115
|
}
|
|
133
116
|
|
|
134
|
-
// Default instance bound to the shared gitSpawn; the standalone wrappers
|
|
135
|
-
// above delegate to it so there is exactly one FF-probe implementation.
|
|
136
117
|
const defaultFfProbes = makeFfProbes(gitSpawn);
|
|
137
118
|
|
|
138
119
|
/* node:coverage ignore next */
|
|
@@ -153,14 +134,8 @@ export function removeWorktree(worktreePath, cwd) {
|
|
|
153
134
|
}
|
|
154
135
|
|
|
155
136
|
/**
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
* The fetch MUST NOT be `--quiet` (Story #4772). `--quiet` still prunes, but
|
|
159
|
-
* suppresses the `- [deleted] (none) -> <remote>/<ref>` progress lines that
|
|
160
|
-
* are the *only* record of what was dropped — `parsePruneFn` then reports an
|
|
161
|
-
* empty list for work that really happened, and `computeExitCode` reads the
|
|
162
|
-
* run as "nothing to do" (exit 2). The output is captured, not shown, so
|
|
163
|
-
* `--quiet` bought nothing to begin with.
|
|
137
|
+
* Never `--quiet`: it suppresses the `[deleted]` lines that are the only
|
|
138
|
+
* record of what was pruned, making real work read as "nothing to do".
|
|
164
139
|
*
|
|
165
140
|
* @param {string} cwd
|
|
166
141
|
* @param {string} remoteName
|