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,10 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* phases/authoring-context.js —
|
|
3
|
-
*
|
|
4
|
-
* Builds the authoring context the host LLM (or the
|
|
5
|
-
* `/mandrel-plan` author step) needs to write the Tech Spec.
|
|
6
|
-
* Returns a plain JSON-serialisable object; never hits the network beyond
|
|
7
|
-
* the provider call needed to load the Epic.
|
|
2
|
+
* phases/authoring-context.js — builds the JSON-serialisable authoring
|
|
3
|
+
* context the `/mandrel-plan` author step needs.
|
|
8
4
|
*/
|
|
9
5
|
|
|
10
6
|
import path from 'node:path';
|
|
@@ -26,23 +22,9 @@ import { ensureDocsDigest } from '../docs-digest.js';
|
|
|
26
22
|
import { buildMemoryPoolAdvisory } from './memory-pool-advisory.js';
|
|
27
23
|
|
|
28
24
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* Ensures a docs digest exists at the **same** per-Epic temp path the
|
|
34
|
-
* `/mandrel-deliver` story sub-agents already consume
|
|
35
|
-
* (`<tempRoot>/epic-<seedIssueId>/docs-digest.md`) via the shared
|
|
36
|
-
* `ensureDocsDigest` export in `docs-digest.js` — one generator, one file,
|
|
37
|
-
* reused across the planning and delivery surfaces for the same Epic. The
|
|
38
|
-
* envelope carries only the digest path, not embedded doc content; the
|
|
39
|
-
* planner (host LLM driving the `/mandrel-plan` author step) reads the digest
|
|
40
|
-
* and pulls a full file/section on demand when it bears on the decision.
|
|
41
|
-
*
|
|
42
|
-
* Returns `null` — a silent no-op — when `project.docsContextFiles` is not
|
|
43
|
-
* configured. There is no scrape-every-markdown-under-docsRoot fallback for
|
|
44
|
-
* planning; that fallback remains a `doc-reader.js` primitive used
|
|
45
|
-
* elsewhere, not part of this envelope.
|
|
25
|
+
* Digest-first `docsContext`: ensure the docs digest at the same per-Epic
|
|
26
|
+
* temp path delivery consumes, and carry only its path. `null` when
|
|
27
|
+
* `project.docsContextFiles` is unset — there is no scrape-all fallback.
|
|
46
28
|
*
|
|
47
29
|
* @param {{ seedIssueId: number, settings: object, cwd: string }} args
|
|
48
30
|
* @returns {Promise<{ mode: 'digest', digestPath: string } | null>}
|
|
@@ -72,16 +54,8 @@ async function buildPlanningDocsContext({ seedIssueId, settings, cwd }) {
|
|
|
72
54
|
}
|
|
73
55
|
|
|
74
56
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* Empty (capped-shape) result when the project has not adopted BDD; the
|
|
78
|
-
* scanner is best-effort and never throws on filesystem errors.
|
|
79
|
-
*
|
|
80
|
-
* Story #4977 — the scan itself stays uncapped (a faithful `.feature`
|
|
81
|
-
* index), but the envelope-bound result is truncated to
|
|
82
|
-
* `BDD_SCENARIOS_BYTE_BUDGET` via `capBddScenarios` so a mature Gherkin
|
|
83
|
-
* corpus cannot alone consume the `/mandrel-plan` context-envelope ceiling. Callers
|
|
84
|
-
* needing the raw count read `totalScenarios` vs `includedScenarios`.
|
|
57
|
+
* Best-effort `.feature` scenario index, capped to the byte budget so a large
|
|
58
|
+
* Gherkin corpus cannot consume the context-envelope ceiling.
|
|
85
59
|
*
|
|
86
60
|
* @returns {ReturnType<typeof capBddScenarios>}
|
|
87
61
|
*/
|
|
@@ -96,21 +70,8 @@ function scanBddScenariosBestEffort() {
|
|
|
96
70
|
}
|
|
97
71
|
|
|
98
72
|
/**
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* `docsContext` is digest-first (Story #4433): a pointer at the per-Epic
|
|
103
|
-
* docs digest rather than embedded doc content, `null` when
|
|
104
|
-
* `project.docsContextFiles` is unset.
|
|
105
|
-
*
|
|
106
|
-
* The body carried here is **unbounded**. Story #4541 removed the
|
|
107
|
-
* `applyBudget` pass (and the `--full-context` flag that toggled it): both
|
|
108
|
-
* `plan-context.js` envelope builders discard this `epic` field entirely and
|
|
109
|
-
* ship the raw seed on `seed.content` instead, so the budget bounded nothing
|
|
110
|
-
* that shipped and the flag was a no-op. The raw-seed passthrough is
|
|
111
|
-
* deliberate and test-pinned; the budget pass was the orphan. Envelope size
|
|
112
|
-
* is guarded where it is actually decided — `PLAN_CONTEXT_ENVELOPE_BYTE_CEILING`
|
|
113
|
-
* in `lib/orchestration/plan-context.js`.
|
|
73
|
+
* The `epic.body` carried here is unbounded; envelope size is guarded by
|
|
74
|
+
* `PLAN_CONTEXT_ENVELOPE_BYTE_CEILING` in `plan-context.js`.
|
|
114
75
|
*/
|
|
115
76
|
export async function buildAuthoringContext(
|
|
116
77
|
seedIssueId,
|
|
@@ -118,11 +79,7 @@ export async function buildAuthoringContext(
|
|
|
118
79
|
settings = {},
|
|
119
80
|
opts = {},
|
|
120
81
|
) {
|
|
121
|
-
//
|
|
122
|
-
// so a caller that already holds the issue (the folded `plan-context.js`
|
|
123
|
-
// envelope build, which also needs the raw body for clarity scoring and
|
|
124
|
-
// re-plan detection) does not pay a second provider fetch. Absent, the
|
|
125
|
-
// fetch behaviour is unchanged.
|
|
82
|
+
// A prefetched `opts.epic` saves a second provider fetch.
|
|
126
83
|
const epic = opts.epic ?? (await provider.getEpic(seedIssueId));
|
|
127
84
|
if (!epic) {
|
|
128
85
|
throw new Error(`Epic #${seedIssueId} not found.`);
|
|
@@ -132,28 +89,8 @@ export async function buildAuthoringContext(
|
|
|
132
89
|
|
|
133
90
|
const githubCfg = opts.github ?? null;
|
|
134
91
|
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
// path. `concurrentMap` preserves input order, so the destructuring is
|
|
138
|
-
// positional and the produced context is identical to the serial build:
|
|
139
|
-
//
|
|
140
|
-
// 1. the digest-first `docsContext` pointer (Story #4433);
|
|
141
|
-
// 2. Story #2094 Task #2103 — the project's BDD runner pending-tag
|
|
142
|
-
// support, so the acceptance-spec body records either the verified tag
|
|
143
|
-
// (features-first ordering) or "fallback: dependencies-first ordering"
|
|
144
|
-
// when no supported runner is present;
|
|
145
|
-
// 3. the best-effort `.feature` scenario index;
|
|
146
|
-
// 4. Story #4919 — the memory-pool advisory that replaced the retired
|
|
147
|
-
// memory-freshness pre-flight (#2557 / #4414) in the same slot. The
|
|
148
|
-
// scanner marked an entry stale when a cited issue was closed, but the
|
|
149
|
-
// memory corpus is delivery retrospectives whose subject IS a delivered
|
|
150
|
-
// Story — and its directory (`~/.claude/projects/<repo>/memory/`) never
|
|
151
|
-
// resolved, because harness project dirs are cwd-slugs. This renders no
|
|
152
|
-
// per-entry verdict at all: it stats and counts, and the `/mandrel-plan` spine
|
|
153
|
-
// surfaces `recommend` at Gate #1. Filesystem-only and total;
|
|
154
|
-
// 5. Story #2554 — open meta feedback issues, so retro signals are routed
|
|
155
|
-
// into durable substrates rather than lost in chat. Best-effort:
|
|
156
|
-
// missing owner/repo or gh-CLI failures land in `errors[]`, never throw.
|
|
92
|
+
// Independent gathers under bounded concurrency; `concurrentMap` preserves
|
|
93
|
+
// input order, so the destructuring is positional.
|
|
157
94
|
const [
|
|
158
95
|
docsContext,
|
|
159
96
|
bddRunner,
|
|
@@ -165,15 +102,7 @@ export async function buildAuthoringContext(
|
|
|
165
102
|
() => buildPlanningDocsContext({ seedIssueId: epic.id, settings, cwd }),
|
|
166
103
|
() => verifyBddRunnerPendingTag({ cwd: PROJECT_ROOT }),
|
|
167
104
|
() => scanBddScenariosBestEffort(),
|
|
168
|
-
() =>
|
|
169
|
-
buildMemoryPoolAdvisory({
|
|
170
|
-
cwd: PROJECT_ROOT,
|
|
171
|
-
// Story #5182 — `planning.memoryPool` thresholds. Spread so an
|
|
172
|
-
// unset block, or a block setting only one key, leaves the other
|
|
173
|
-
// on its framework default rather than passing `undefined` in as
|
|
174
|
-
// a value the builder would have to re-defaults itself.
|
|
175
|
-
...(opts.memoryPool ?? {}),
|
|
176
|
-
}),
|
|
105
|
+
() => buildMemoryPoolAdvisory({ cwd: PROJECT_ROOT }),
|
|
177
106
|
() =>
|
|
178
107
|
fetchPriorFeedback({
|
|
179
108
|
owner: githubCfg?.owner,
|
|
@@ -181,39 +110,15 @@ export async function buildAuthoringContext(
|
|
|
181
110
|
}),
|
|
182
111
|
],
|
|
183
112
|
(gather) => gather(),
|
|
184
|
-
// The independent context gathers (Story #4952): a handful of local
|
|
185
|
-
// probes plus one `gh` read, so this rides the shared fan-out bound
|
|
186
|
-
// rather than declaring its own.
|
|
187
113
|
{ concurrency: FANOUT_CONCURRENCY },
|
|
188
114
|
);
|
|
189
115
|
|
|
190
|
-
// Story #4811 — the codebase snapshot (#2634), its authoring grounding
|
|
191
|
-
// (#4139 F10) and the spec-freshness helpers behind it are retired. The
|
|
192
|
-
// pre-computed structural view grounded nothing it promised: the default
|
|
193
|
-
// include globs missed the standard monorepo layout outright, its remedies
|
|
194
|
-
// pointed at knobs that re-filtered the same set, and its cited-but-absent
|
|
195
|
-
// signal inverted into noise whenever the snapshot was the thing that was
|
|
196
|
-
// wrong. Grounding now rests on the two mechanisms that read the real tree:
|
|
197
|
-
// the authoring model's own targeted retrieval (the digest-first precedent
|
|
198
|
-
// of Story #4433) and the Phase 8 `validateStoryFileAssumptions` gate, which
|
|
199
|
-
// probes every authored `{path, assumption}` against the working tree as a
|
|
200
|
-
// hard error. Nothing pre-computed replaces it — a stale inventory is the
|
|
201
|
-
// failure mode, not the fix.
|
|
202
|
-
|
|
203
|
-
// Story #4542 — planning authors no risk artifact at all. Review depth and
|
|
204
|
-
// the acceptance-critic mode are derived from the diff at close time
|
|
205
|
-
// (`review-depth.js#deriveChangeLevel`), so there is nothing to classify
|
|
206
|
-
// here and nothing for the author step to judge about itself.
|
|
207
|
-
|
|
208
116
|
return {
|
|
209
117
|
epic: {
|
|
210
118
|
id: epic.id,
|
|
211
119
|
title: epic.title,
|
|
212
120
|
body: epic.body ?? null,
|
|
213
|
-
//
|
|
214
|
-
// Epic's previous Tech Spec / Acceptance Table content rides along
|
|
215
|
-
// inside `body` (managed sections), which is how the author keeps
|
|
216
|
-
// AC IDs stable across re-plans.
|
|
121
|
+
// A re-plan's prior managed sections ride in `body`, keeping AC IDs stable.
|
|
217
122
|
planningSections: {
|
|
218
123
|
techSpec: hasTicketSection(epic.body ?? '', 'techSpec'),
|
|
219
124
|
acceptanceTable: hasTicketSection(epic.body ?? '', 'acceptanceTable'),
|
|
@@ -1,72 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* memory-pool-advisory.js — the `/mandrel-plan`
|
|
2
|
+
* memory-pool-advisory.js — the `/mandrel-plan` memory-hygiene advisory.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 1. **Correct pool resolution.** The retired `resolveMemoryDir` built
|
|
8
|
-
* `~/.claude/projects/<github.repo>/memory/`, but harness project
|
|
9
|
-
* directories are **cwd-slugs** — the absolute cwd with every `/` and `.`
|
|
10
|
-
* replaced by `-` — so the old path never resolved in any consumer and
|
|
11
|
-
* the scan was a silent no-op everywhere.
|
|
12
|
-
* 2. **A named consumer.** The retired scanner emitted a per-entry staleness
|
|
13
|
-
* verdict nothing read. This emits one advisory the `/mandrel-plan` spine
|
|
14
|
-
* surfaces at Gate #1, recommending `/memory-consolidate`.
|
|
15
|
-
*
|
|
16
|
-
* It renders **no per-entry verdict at all**. A memory citing a closed issue
|
|
17
|
-
* is a delivery retrospective whose subject is that issue — not a stale entry
|
|
18
|
-
* — and only the attended `/memory-consolidate` pass, reading content, can
|
|
19
|
-
* tell the difference. This module measures one thing; it never judges an
|
|
20
|
-
* entry.
|
|
21
|
-
*
|
|
22
|
-
* **One arm: the index byte ceiling (Story #5285, sole survivor after Story
|
|
23
|
-
* #5312).** The harness reads `MEMORY.md` into every session under a hard
|
|
24
|
-
* byte cap and **truncates** past it, so an index over that cap loses its
|
|
25
|
-
* tail entries silently — the pointers are on disk, indexed, and unreachable.
|
|
26
|
-
* That is a loss in progress, not a hygiene forecast, and it is the only
|
|
27
|
-
* signal that measures the artifact a session actually loads. The stamp-age
|
|
28
|
-
* and growth-delta arms that used to sit beside it measured the *pool*, fired
|
|
29
|
-
* on every plan once a pool was mature, and were learned-ignored by exactly
|
|
30
|
-
* the operators they nagged; Story #5312 deleted them with their
|
|
31
|
-
* `planning.memoryPool.{staleAfterDays, growthDelta}` knobs. A pass that
|
|
32
|
-
* rewrites long index lines short clears this arm without pruning a single
|
|
33
|
-
* entry.
|
|
34
|
-
*
|
|
35
|
-
* Detection is filesystem-only — no child processes, no `gh` probes, no
|
|
36
|
-
* network. Every failure path fails soft to "no pool, no recommendation": the
|
|
37
|
-
* advisory can degrade the nudge, never a plan.
|
|
38
|
-
*
|
|
39
|
-
* Test seams: `cwd`, `env`, `fsImpl` (node:fs-compatible `statSync` /
|
|
40
|
-
* `readdirSync`), and the `indexByteCeiling` threshold.
|
|
41
|
-
*
|
|
42
|
-
* `buildMemoryPoolAdvisory` is the **only** export: the helpers below have no
|
|
43
|
-
* caller outside this module, and exporting one solely for a test would add a
|
|
44
|
-
* row to the `dead-exports-production` ratchet. Tests reach every branch
|
|
45
|
-
* through the seams above — do not "fix" the missing exports.
|
|
4
|
+
* Recommends `/memory-consolidate` when `MEMORY.md` exceeds the harness's
|
|
5
|
+
* index cap (past it, later entries are truncated away). Never judges an
|
|
6
|
+
* entry; filesystem-only and fail-soft.
|
|
46
7
|
*/
|
|
47
8
|
|
|
48
9
|
import * as defaultFs from 'node:fs';
|
|
49
10
|
import * as os from 'node:os';
|
|
50
11
|
import * as path from 'node:path';
|
|
51
12
|
|
|
52
|
-
/**
|
|
53
|
-
* Recommend a pass once `MEMORY.md` exceeds this many bytes.
|
|
54
|
-
*
|
|
55
|
-
* 24576 (24 KiB) is the harness's own index cap — the point past which it
|
|
56
|
-
* truncates the file it loads into a session, making every entry after the
|
|
57
|
-
* cut unreachable. The default is the cap itself rather than a margin under
|
|
58
|
-
* it: the arm reports a loss that has already started, not one approaching.
|
|
59
|
-
*/
|
|
13
|
+
/** The harness's own index cap (24 KiB): past it, the loss has already started. */
|
|
60
14
|
const INDEX_BYTE_CEILING = 24_576;
|
|
61
15
|
|
|
62
16
|
/** The index file is not itself a memory entry. */
|
|
63
17
|
const INDEX_FILENAME = 'MEMORY.md';
|
|
64
18
|
|
|
65
19
|
/**
|
|
66
|
-
*
|
|
67
|
-
* directories: every `/` and `.` becomes `-`. Verified against real
|
|
68
|
-
* directories in `~/.claude/projects/` — a plain checkout and a worktree both
|
|
69
|
-
* round-trip exactly.
|
|
20
|
+
* Harness per-project dir naming: every `/` and `.` becomes `-`.
|
|
70
21
|
*
|
|
71
22
|
* @param {string} absPath
|
|
72
23
|
* @returns {string}
|
|
@@ -76,10 +27,7 @@ function slugifyProjectPath(absPath) {
|
|
|
76
27
|
}
|
|
77
28
|
|
|
78
29
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* `MANDREL_MEMORY_DIR` wins outright (operator override and test seam);
|
|
82
|
-
* otherwise `~/.claude/projects/<cwd-slug>/memory/`.
|
|
30
|
+
* `MANDREL_MEMORY_DIR` wins; else `~/.claude/projects/<cwd-slug>/memory/`.
|
|
83
31
|
*
|
|
84
32
|
* @param {{ cwd?: string, env?: Record<string,string|undefined>, homedir?: string }} [opts]
|
|
85
33
|
* @returns {string|null} absolute pool path, or `null` when unresolvable
|
|
@@ -107,10 +55,6 @@ function resolveMemoryPoolDir({ cwd, env = process.env, homedir } = {}) {
|
|
|
107
55
|
/**
|
|
108
56
|
* Run one filesystem probe, falling back on any failure.
|
|
109
57
|
*
|
|
110
|
-
* Every read here is fail-soft by design — the advisory may degrade its nudge
|
|
111
|
-
* but never a plan — so every probe has the same try/catch shape wrapped
|
|
112
|
-
* around one expression. One helper states the rule once.
|
|
113
|
-
*
|
|
114
58
|
* @template T
|
|
115
59
|
* @param {() => T} read
|
|
116
60
|
* @param {T|null} [fallback]
|
|
@@ -125,13 +69,7 @@ function probe(read, fallback = null) {
|
|
|
125
69
|
}
|
|
126
70
|
|
|
127
71
|
/**
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* `null` when it cannot be stat'd — an absent or unreadable `MEMORY.md`
|
|
131
|
-
* leaves the arm silent rather than guessing a size, on the same fail-soft
|
|
132
|
-
* rule every other probe here follows. Stat'd rather than read: the arm needs
|
|
133
|
-
* the length, never the content, and this module deliberately never reads a
|
|
134
|
-
* memory's text.
|
|
72
|
+
* Stat'd, never read: this module never reads a memory's text.
|
|
135
73
|
*
|
|
136
74
|
* @returns {number|null}
|
|
137
75
|
*/
|
|
@@ -143,8 +81,6 @@ function readIndexBytes({ poolDir, fsImpl }) {
|
|
|
143
81
|
}
|
|
144
82
|
|
|
145
83
|
/**
|
|
146
|
-
* Count memory entries — `.md` files other than the index.
|
|
147
|
-
*
|
|
148
84
|
* @returns {number|null} `null` when the directory cannot be listed
|
|
149
85
|
*/
|
|
150
86
|
function countEntries({ poolDir, fsImpl }) {
|
|
@@ -158,10 +94,7 @@ function countEntries({ poolDir, fsImpl }) {
|
|
|
158
94
|
}
|
|
159
95
|
|
|
160
96
|
/**
|
|
161
|
-
* The
|
|
162
|
-
* reading. Every return path spreads its own findings over this, so the
|
|
163
|
-
* envelope's shape is declared once — a new field cannot reach some callers
|
|
164
|
-
* and not others, which is the failure mode a per-branch object literal has.
|
|
97
|
+
* The envelope shape, declared once and defaulted to "no usable pool".
|
|
165
98
|
*
|
|
166
99
|
* @param {object} fields
|
|
167
100
|
* @returns {{ present: boolean, entryCount: number, indexBytes: number|null,
|
|
@@ -179,11 +112,7 @@ function envelope(fields) {
|
|
|
179
112
|
}
|
|
180
113
|
|
|
181
114
|
/**
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
* Advisory only — it carries **no routing authority**. The `/mandrel-plan`
|
|
185
|
-
* spine surfaces `recommend` at Gate #1 on one advisory line; nothing
|
|
186
|
-
* auto-runs, and nothing here mutates the operator's memory store.
|
|
115
|
+
* Advisory only: no routing authority, and nothing here mutates the store.
|
|
187
116
|
*
|
|
188
117
|
* @param {object} [opts]
|
|
189
118
|
* @param {string} [opts.cwd] — defaults to `process.cwd()`
|
|
@@ -236,8 +165,7 @@ export function buildMemoryPoolAdvisory({
|
|
|
236
165
|
}
|
|
237
166
|
|
|
238
167
|
/**
|
|
239
|
-
*
|
|
240
|
-
* not a small one, so it stays quiet and says why.
|
|
168
|
+
* `null` is an unreadable index, not a small one: stay quiet and say why.
|
|
241
169
|
*
|
|
242
170
|
* @param {number|null} indexBytes
|
|
243
171
|
* @param {number} indexByteCeiling
|