mandrel 2.59.0 → 2.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/README.md +21 -19
- package/.agents/agents/acceptance-critic.md +24 -43
- package/.agents/agents/story-worker.md +20 -21
- package/.agents/docs/agentrc-reference.json +5 -84
- package/.agents/docs/configuration.md +48 -132
- package/.agents/docs/workflows.md +2 -2
- package/.agents/instructions.md +5 -8
- package/.agents/rules/ci-remediation.md +41 -8
- package/.agents/rules/gherkin-standards.md +4 -0
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +16 -496
- package/.agents/schemas/story-deliver-terminal.schema.json +13 -3
- package/.agents/schemas/validation-evidence.schema.json +2 -1
- package/.agents/scripts/README.md +23 -13
- package/.agents/scripts/acceptance-eval.js +35 -169
- package/.agents/scripts/agents-bootstrap-github.js +27 -129
- package/.agents/scripts/apply-quality-bootstrap.js +4 -40
- package/.agents/scripts/audit-baselines.js +6 -27
- package/.agents/scripts/audit-labels-bootstrap.js +5 -29
- package/.agents/scripts/audit-to-stories.js +91 -361
- package/.agents/scripts/boot-sweep.js +19 -72
- package/.agents/scripts/bootstrap.js +74 -395
- package/.agents/scripts/ceremony-derive.js +10 -41
- package/.agents/scripts/check-arch-cycles.js +14 -64
- package/.agents/scripts/check-baselines.js +8 -48
- package/.agents/scripts/check-context-budget.js +105 -311
- package/.agents/scripts/check-cyclomatic.js +12 -44
- package/.agents/scripts/check-dead-exports.js +13 -64
- package/.agents/scripts/check-doc-links.js +38 -186
- package/.agents/scripts/check-gherkin-corpus.js +24 -127
- package/.agents/scripts/check-test-temp-hygiene.js +28 -169
- package/.agents/scripts/coverage-capture.js +34 -98
- package/.agents/scripts/deliver-light.js +25 -171
- package/.agents/scripts/deliver-recover.js +6 -42
- package/.agents/scripts/deliver-run.js +534 -0
- package/.agents/scripts/diagnose-friction.js +24 -116
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/evidence-gate.js +23 -85
- package/.agents/scripts/file-ci-gap.js +57 -49
- package/.agents/scripts/generate-config-docs.js +30 -170
- package/.agents/scripts/generate-lens-checklists.js +8 -52
- package/.agents/scripts/generate-skills-index.js +14 -112
- package/.agents/scripts/generate-workflows-doc.js +10 -70
- package/.agents/scripts/git-cleanup.js +2 -34
- package/.agents/scripts/lib/Graph.js +24 -81
- package/.agents/scripts/lib/ITicketingProvider.js +47 -143
- package/.agents/scripts/lib/Logger.js +14 -76
- package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
- package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
- package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
- package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
- package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
- package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
- package/.agents/scripts/lib/audit-baselines/read.js +3 -16
- package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
- package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
- package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
- package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
- package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
- package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
- package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
- package/.agents/scripts/lib/audit-suite/findings.js +12 -52
- package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
- package/.agents/scripts/lib/audit-suite/index.js +1 -15
- package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
- package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
- package/.agents/scripts/lib/audit-suite/runner.js +13 -43
- package/.agents/scripts/lib/audit-suite/selector.js +49 -349
- package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
- package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
- package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
- package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
- package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
- package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
- package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
- package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
- package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
- package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
- package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
- package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
- package/.agents/scripts/lib/baseline-loader.js +12 -51
- package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
- package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
- package/.agents/scripts/lib/baselines/components.js +10 -61
- package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
- package/.agents/scripts/lib/baselines/crap-preview-incremental.js +7 -19
- package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
- package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
- package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
- package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
- package/.agents/scripts/lib/baselines/envelope.js +13 -129
- package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
- package/.agents/scripts/lib/baselines/git-base.js +23 -142
- package/.agents/scripts/lib/baselines/kernel.js +11 -111
- package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
- package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
- package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
- package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
- package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
- package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
- package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
- package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
- package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
- package/.agents/scripts/lib/baselines/path-canon.js +19 -128
- package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
- package/.agents/scripts/lib/baselines/reader.js +14 -107
- package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
- package/.agents/scripts/lib/baselines/scope.js +11 -135
- package/.agents/scripts/lib/baselines/writer.js +16 -149
- package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
- package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
- package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
- package/.agents/scripts/lib/bdd-step-index.js +26 -100
- package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
- package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
- package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
- package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
- package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
- package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
- package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
- package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
- package/.agents/scripts/lib/bootstrap/summary.js +1 -8
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
- package/.agents/scripts/lib/branch-name-guard.js +4 -23
- package/.agents/scripts/lib/changed-files.js +39 -121
- package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
- package/.agents/scripts/lib/checks/index.js +18 -101
- package/.agents/scripts/lib/checks/loop-health.js +11 -53
- package/.agents/scripts/lib/checks/state.js +16 -91
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
- package/.agents/scripts/lib/child-exec.js +39 -108
- package/.agents/scripts/lib/cli/standard-args.js +9 -116
- package/.agents/scripts/lib/cli-args.js +31 -146
- package/.agents/scripts/lib/cli-usage.js +5 -27
- package/.agents/scripts/lib/cli-utils.js +2 -12
- package/.agents/scripts/lib/close-validation/commands.js +13 -76
- package/.agents/scripts/lib/close-validation/gates.js +92 -331
- package/.agents/scripts/lib/close-validation/process.js +121 -151
- package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
- package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
- package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
- package/.agents/scripts/lib/close-validation/runner.js +53 -110
- package/.agents/scripts/lib/command-header.js +6 -28
- package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
- package/.agents/scripts/lib/config/baselines.js +3 -14
- package/.agents/scripts/lib/config/ci.js +8 -38
- package/.agents/scripts/lib/config/commands.js +1 -15
- package/.agents/scripts/lib/config/defaults.js +4 -33
- package/.agents/scripts/lib/config/delivery-routing.js +6 -34
- package/.agents/scripts/lib/config/explain.js +10 -83
- package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
- package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +3 -31
- package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
- package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
- package/.agents/scripts/lib/config/gates/index.js +2 -17
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
- package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
- package/.agents/scripts/lib/config/gates/shared.js +4 -64
- package/.agents/scripts/lib/config/github.js +4 -22
- package/.agents/scripts/lib/config/limits.js +4 -57
- package/.agents/scripts/lib/config/paths.js +2 -21
- package/.agents/scripts/lib/config/qa.js +4 -38
- package/.agents/scripts/lib/config/quality.js +76 -432
- package/.agents/scripts/lib/config/runners.js +12 -56
- package/.agents/scripts/lib/config/runtime.js +13 -57
- package/.agents/scripts/lib/config/shared.js +2 -16
- package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
- package/.agents/scripts/lib/config/temp-paths.js +40 -280
- package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
- package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
- package/.agents/scripts/lib/config-resolver.js +11 -52
- package/.agents/scripts/lib/config-schema-shared.js +1 -4
- package/.agents/scripts/lib/config-settings-schema-delivery.js +16 -291
- package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
- package/.agents/scripts/lib/config-settings-schema.js +37 -274
- package/.agents/scripts/lib/coverage-baseline.js +20 -110
- package/.agents/scripts/lib/coverage-capture-fullscope.js +18 -35
- package/.agents/scripts/lib/coverage-capture-incremental.js +15 -45
- package/.agents/scripts/lib/coverage-capture-usage.js +8 -25
- package/.agents/scripts/lib/coverage-capture.js +99 -224
- package/.agents/scripts/lib/coverage-utils.js +14 -79
- package/.agents/scripts/lib/cpu-pool.js +17 -123
- package/.agents/scripts/lib/crap-baseline-join.js +16 -88
- package/.agents/scripts/lib/crap-coordinates.js +6 -25
- package/.agents/scripts/lib/crap-engine.js +40 -153
- package/.agents/scripts/lib/crap-method-identity.js +16 -78
- package/.agents/scripts/lib/crap-utils.js +31 -155
- package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
- package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
- package/.agents/scripts/lib/dead-exports-knip.js +18 -56
- package/.agents/scripts/lib/dead-exports-mode.js +5 -24
- package/.agents/scripts/lib/degraded-mode.js +3 -26
- package/.agents/scripts/lib/dependency-parser.js +8 -40
- package/.agents/scripts/lib/dependency-version.js +13 -35
- package/.agents/scripts/lib/detect-package-manager.js +6 -36
- package/.agents/scripts/lib/doc-tiers.js +22 -124
- package/.agents/scripts/lib/duplicate-search.js +8 -72
- package/.agents/scripts/lib/env-loader.js +5 -27
- package/.agents/scripts/lib/error-redactor.js +6 -31
- package/.agents/scripts/lib/errors/index.js +2 -22
- package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
- package/.agents/scripts/lib/escomplex-kernel.js +21 -123
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +94 -419
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -149
- package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
- package/.agents/scripts/lib/findings/classify-finding.js +14 -69
- package/.agents/scripts/lib/findings/promote-finding.js +14 -112
- package/.agents/scripts/lib/findings/provenance-field.js +11 -52
- package/.agents/scripts/lib/findings/route-finding.js +37 -255
- package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
- package/.agents/scripts/lib/findings/severity.js +18 -104
- package/.agents/scripts/lib/format-generated-json.js +12 -44
- package/.agents/scripts/lib/full-suite-lock.js +160 -429
- package/.agents/scripts/lib/full-suite-queue.js +213 -0
- package/.agents/scripts/lib/gates/baseline-store.js +5 -9
- package/.agents/scripts/lib/gates/friction.js +1 -3
- package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
- package/.agents/scripts/lib/gh-exec.js +123 -191
- package/.agents/scripts/lib/git/cached-fetch.js +9 -52
- package/.agents/scripts/lib/git/sync-from-base.js +15 -107
- package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
- package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
- package/.agents/scripts/lib/git-utils.js +37 -161
- package/.agents/scripts/lib/github/framework-repo.js +8 -71
- package/.agents/scripts/lib/github-url.js +2 -17
- package/.agents/scripts/lib/import-graph.js +11 -38
- package/.agents/scripts/lib/install-cmd-parser.js +4 -13
- package/.agents/scripts/lib/json-utils.js +3 -18
- package/.agents/scripts/lib/label-constants.js +16 -111
- package/.agents/scripts/lib/label-taxonomy.js +4 -30
- package/.agents/scripts/lib/maintainability-engine.js +12 -80
- package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
- package/.agents/scripts/lib/maintainability-utils.js +16 -92
- package/.agents/scripts/lib/mandrel-catalog.js +12 -70
- package/.agents/scripts/lib/notifications/notifier.js +13 -38
- package/.agents/scripts/lib/npm-scripts.js +4 -23
- package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
- package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
- package/.agents/scripts/lib/observability/signal-validator.js +5 -37
- package/.agents/scripts/lib/observability/signals-writer.js +11 -121
- package/.agents/scripts/lib/observability/source-classifier.js +22 -203
- package/.agents/scripts/lib/observability/terse-result.js +14 -47
- package/.agents/scripts/lib/onboard/init-tail.js +13 -74
- package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
- package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
- package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +28 -156
- package/.agents/scripts/lib/orchestration/change-set.js +7 -36
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
- package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
- package/.agents/scripts/lib/orchestration/check-state.js +92 -0
- package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
- package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +121 -157
- package/.agents/scripts/lib/orchestration/code-review.js +24 -128
- package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
- package/.agents/scripts/lib/orchestration/complexity-gate.js +118 -462
- package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
- package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
- package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
- package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
- package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
- package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
- package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
- package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
- package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
- package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
- package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
- package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
- package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
- package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
- package/.agents/scripts/lib/orchestration/light-suitability.js +37 -307
- package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
- package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
- package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
- package/.agents/scripts/lib/orchestration/plan-context.js +55 -318
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
- package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
- package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
- package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
- package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
- package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +16 -78
- package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
- package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
- package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
- package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
- package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +71 -289
- package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +96 -362
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +9 -39
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +60 -186
- package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
- package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
- package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
- package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
- package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
- package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
- package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
- package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
- package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
- package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
- package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
- package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
- package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
- package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
- package/.agents/scripts/lib/orchestration/review-depth.js +12 -91
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
- package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
- package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
- package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
- package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
- package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
- package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
- package/.agents/scripts/lib/orchestration/run-epilogue.js +245 -326
- package/.agents/scripts/lib/orchestration/run-scoped-config.js +55 -159
- package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
- package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
- package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +83 -239
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +20 -82
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
- package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +136 -486
- package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
- package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +96 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
- package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +180 -273
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
- package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
- package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
- package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
- package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
- package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
- package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
- package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -200
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +167 -252
- package/.agents/scripts/lib/orchestration/story-init-envelope.js +52 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
- package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
- package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -135
- package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
- package/.agents/scripts/lib/orchestration/ticket-validator.js +63 -344
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -261
- package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
- package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
- package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
- package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
- package/.agents/scripts/lib/path-security.js +3 -6
- package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
- package/.agents/scripts/lib/preflight-runner.js +13 -69
- package/.agents/scripts/lib/process-group.js +143 -0
- package/.agents/scripts/lib/project-root.js +2 -8
- package/.agents/scripts/lib/provider-factory.js +2 -25
- package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
- package/.agents/scripts/lib/qa/qa-session.js +15 -69
- package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
- package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
- package/.agents/scripts/lib/reserved-test-ids.js +9 -47
- package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
- package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
- package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
- package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
- package/.agents/scripts/lib/signals/detectors/common.js +12 -38
- package/.agents/scripts/lib/signals/index.js +2 -19
- package/.agents/scripts/lib/signals/schema.js +14 -109
- package/.agents/scripts/lib/signals/write.js +2 -11
- package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
- package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
- package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
- package/.agents/scripts/lib/single-story-sweep.js +14 -97
- package/.agents/scripts/lib/skills/parse-skill.js +13 -59
- package/.agents/scripts/lib/skills/skills-index.js +8 -29
- package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
- package/.agents/scripts/lib/source-extensions.js +11 -42
- package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
- package/.agents/scripts/lib/stdio-flush.js +9 -36
- package/.agents/scripts/lib/story-adjacency.js +8 -40
- package/.agents/scripts/lib/story-body/body-format-lints.js +51 -66
- package/.agents/scripts/lib/story-body/footer-block.js +11 -44
- package/.agents/scripts/lib/story-body/story-body.js +123 -344
- package/.agents/scripts/lib/temp-retention.js +42 -143
- package/.agents/scripts/lib/templates/decomposer-prompts.js +18 -80
- package/.agents/scripts/lib/test-env.js +12 -65
- package/.agents/scripts/lib/test-run-credit.js +10 -65
- package/.agents/scripts/lib/test-runner-contract.js +19 -74
- package/.agents/scripts/lib/test-temp.js +38 -184
- package/.agents/scripts/lib/test-tiers.js +12 -96
- package/.agents/scripts/lib/ticket-body-sections.js +21 -96
- package/.agents/scripts/lib/transpile.js +15 -74
- package/.agents/scripts/lib/util/concurrent-map.js +6 -25
- package/.agents/scripts/lib/util/parse-id-list.js +8 -34
- package/.agents/scripts/lib/util/poll-loop.js +8 -28
- package/.agents/scripts/lib/util/with-timeout.js +2 -11
- package/.agents/scripts/lib/validation-evidence.js +21 -96
- package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
- package/.agents/scripts/lib/wave-runner/live-probe.js +67 -209
- package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
- package/.agents/scripts/lib/workers/crap-worker.js +11 -64
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
- package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
- package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
- package/.agents/scripts/lib/workflow-closure.js +22 -105
- package/.agents/scripts/lib/workspace-provisioner.js +16 -54
- package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
- package/.agents/scripts/lib/worktree-manager.js +15 -40
- package/.agents/scripts/lint-issue-body.js +12 -68
- package/.agents/scripts/mandrel-update-preflight.js +10 -70
- package/.agents/scripts/merge-baseline.js +30 -105
- package/.agents/scripts/nav-registry-diff.js +22 -108
- package/.agents/scripts/notify.js +12 -69
- package/.agents/scripts/plan-context.js +97 -92
- package/.agents/scripts/plan-critics.js +12 -66
- package/.agents/scripts/plan-persist.js +71 -137
- package/.agents/scripts/plan-run-epilogue.js +20 -43
- package/.agents/scripts/pr-watch-with-update.js +79 -263
- package/.agents/scripts/providers/github/auth.js +3 -8
- package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
- package/.agents/scripts/providers/github/board-add.js +5 -21
- package/.agents/scripts/providers/github/branch-protection.js +11 -43
- package/.agents/scripts/providers/github/cache.js +2 -14
- package/.agents/scripts/providers/github/comments.js +7 -40
- package/.agents/scripts/providers/github/compose.js +3 -19
- package/.agents/scripts/providers/github/errors.js +22 -125
- package/.agents/scripts/providers/github/issues.js +31 -123
- package/.agents/scripts/providers/github/labels.js +24 -124
- package/.agents/scripts/providers/github/mappers.js +5 -27
- package/.agents/scripts/providers/github/merge-methods.js +3 -22
- package/.agents/scripts/providers/github/project-board.js +2 -17
- package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
- package/.agents/scripts/providers/github/request-helpers.js +5 -32
- package/.agents/scripts/providers/github/search-budget.js +9 -39
- package/.agents/scripts/providers/github/search-query.js +5 -26
- package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
- package/.agents/scripts/providers/github/sub-issues.js +7 -36
- package/.agents/scripts/providers/github/tickets.js +32 -134
- package/.agents/scripts/providers/github.js +18 -59
- package/.agents/scripts/prune-plan-run-labels.js +12 -46
- package/.agents/scripts/quality-preview.js +35 -220
- package/.agents/scripts/resolve-doc-tiers.js +3 -26
- package/.agents/scripts/resolve-stories.js +16 -67
- package/.agents/scripts/resync-status-column.js +6 -25
- package/.agents/scripts/run-tests.js +29 -104
- package/.agents/scripts/single-story-close.js +23 -135
- package/.agents/scripts/single-story-confirm-merge.js +32 -139
- package/.agents/scripts/single-story-init.js +47 -259
- package/.agents/scripts/stories-wave-tick.js +179 -415
- package/.agents/scripts/sync-agentrc.js +3 -21
- package/.agents/scripts/sync-claude-agents.js +9 -55
- package/.agents/scripts/sync-claude-commands.js +20 -110
- package/.agents/scripts/test-wrapper.js +6 -43
- package/.agents/scripts/update-coverage-baseline.js +5 -22
- package/.agents/scripts/update-crap-baseline.js +7 -30
- package/.agents/scripts/update-duplication-baseline.js +16 -92
- package/.agents/scripts/update-maintainability-baseline.js +8 -62
- package/.agents/scripts/update-ticket-state.js +1 -7
- package/.agents/scripts/validate-skills.js +6 -26
- package/.agents/skills/core/gates-and-baselines/reference.md +0 -1
- package/.agents/skills/skills.index.json +2 -2
- package/.agents/skills/stack/qa/playwright/SKILL.md +26 -0
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
- package/.agents/workflows/audit-accessibility.md +4 -7
- package/.agents/workflows/audit-adrs.md +3 -6
- package/.agents/workflows/audit-architecture.md +3 -11
- package/.agents/workflows/audit-baselines.md +6 -9
- package/.agents/workflows/audit-clean-code.md +8 -12
- package/.agents/workflows/audit-data-model.md +3 -7
- package/.agents/workflows/audit-dependencies.md +4 -7
- package/.agents/workflows/audit-devops.md +4 -8
- package/.agents/workflows/audit-documentation.md +1 -4
- package/.agents/workflows/audit-mobile.md +4 -7
- package/.agents/workflows/audit-navigability.md +3 -6
- package/.agents/workflows/audit-performance.md +2 -4
- package/.agents/workflows/audit-privacy.md +4 -7
- package/.agents/workflows/audit-quality.md +4 -7
- package/.agents/workflows/audit-security.md +4 -7
- package/.agents/workflows/audit-seo.md +4 -7
- package/.agents/workflows/audit-sre.md +4 -7
- package/.agents/workflows/audit-to-stories.md +17 -30
- package/.agents/workflows/audit-ux-ui.md +4 -7
- package/.agents/workflows/helpers/acceptance-self-eval.md +84 -157
- package/.agents/workflows/helpers/audit-lens-core.md +1 -1
- package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
- package/.agents/workflows/helpers/code-review.md +4 -2
- package/.agents/workflows/helpers/deliver-digest.md +37 -28
- package/.agents/workflows/helpers/deliver-light.md +92 -101
- package/.agents/workflows/helpers/deliver-reference.md +162 -220
- package/.agents/workflows/helpers/deliver-story-reference.md +197 -607
- package/.agents/workflows/helpers/deliver-story.md +17 -18
- package/.agents/workflows/helpers/plan-reference.md +125 -167
- package/.agents/workflows/helpers/qa-core.md +12 -0
- package/.agents/workflows/mandrel-deliver.md +47 -31
- package/.agents/workflows/mandrel-plan.md +22 -21
- package/.agents/workflows/mandrel-update.md +36 -21
- package/.agents/workflows/memory-consolidate.md +1 -1
- package/.agents/workflows/qa-assist.md +27 -71
- package/.agents/workflows/qa-explore.md +19 -59
- package/.agents/workflows/qa-run.md +11 -33
- package/README.md +1 -1
- package/bin/mandrel.js +5 -46
- package/bin/postinstall.js +18 -107
- package/docs/CHANGELOG.md +60 -0
- package/lib/cli/doctor.js +11 -71
- package/lib/cli/init.js +26 -165
- package/lib/cli/migrate.js +5 -64
- package/lib/cli/registry.js +84 -467
- package/lib/cli/sync-agents.js +4 -64
- package/lib/cli/sync-commands.js +11 -64
- package/lib/cli/sync.js +34 -213
- package/lib/cli/uninstall.js +40 -219
- package/lib/cli/update.js +326 -523
- package/lib/cli/version-check.js +8 -72
- package/lib/cli/version-helpers.js +14 -87
- package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
- package/lib/migrations/index.js +17 -92
- package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
- package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
- package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
- package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
- package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
- package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
- package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
- package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
- package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +21 -0
- package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
- package/package.json +17 -14
- package/.agents/docs/SDLC.md +0 -590
- package/.agents/docs/quality-gates.md +0 -1179
- package/.agents/rules/known-tooling-behavior.md +0 -150
- package/.agents/rules/orchestration-error-handling.md +0 -61
- package/.agents/rules/test-seams.md +0 -59
- package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
- package/.agents/schemas/baselines/lint.schema.json +0 -47
- package/.agents/schemas/model-attribution.schema.json +0 -53
- package/.agents/scripts/check-action-pinning.js +0 -260
- package/.agents/scripts/check-audit-attribution.js +0 -302
- package/.agents/scripts/check-baseline-drift.js +0 -211
- package/.agents/scripts/check-baseline-scope.js +0 -362
- package/.agents/scripts/check-generated-validator.js +0 -202
- package/.agents/scripts/check-knip-entries.js +0 -159
- package/.agents/scripts/check-lifecycle-lint.js +0 -294
- package/.agents/scripts/check-pinned-override-notes.js +0 -102
- package/.agents/scripts/check-schema-references.js +0 -366
- package/.agents/scripts/check-test-portability.js +0 -512
- package/.agents/scripts/check-workflow-citations.js +0 -332
- package/.agents/scripts/check-workflow-cli-lint.js +0 -299
- package/.agents/scripts/check-workflow-timeouts.js +0 -291
- package/.agents/scripts/install-matrix-assert.js +0 -326
- package/.agents/scripts/lib/audit-advisories.js +0 -195
- package/.agents/scripts/lib/audit-attribution.js +0 -134
- package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
- package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
- package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
- package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
- package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
- package/.agents/scripts/lib/c8-cli-path.js +0 -21
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
- package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
- package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
- package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
- package/.agents/scripts/lib/fs-walk.js +0 -52
- package/.agents/scripts/lib/knip-config-resolver.js +0 -181
- package/.agents/scripts/lib/knip-entry-sync.js +0 -452
- package/.agents/scripts/lib/orchestration/model-attribution.js +0 -418
- package/.agents/scripts/lib/orchestration/story-plan-state.js +0 -33
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +0 -67
- package/.agents/scripts/lib/pinned-override-notes.js +0 -88
- package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
- package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
- package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
- package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
- package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
- package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
- package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
- package/.agents/scripts/lib/test-isolate/runner.js +0 -483
- package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
- package/.agents/scripts/lib/test-profile/render-report.js +0 -45
- package/.agents/scripts/lint-label-vocabulary.js +0 -214
- package/.agents/scripts/post-structured-comment.js +0 -127
- package/.agents/scripts/provision-git-hooks.js +0 -85
- package/.agents/scripts/prune-baseline-orphans.js +0 -181
- package/.agents/scripts/run-coverage.js +0 -197
- package/.agents/scripts/run-lint.js +0 -133
- package/.agents/scripts/run-test-profile.js +0 -129
- package/.agents/scripts/run-verify.js +0 -118
- package/.agents/scripts/test-isolate.js +0 -55
- package/.agents/scripts/update-dead-exports-baseline.js +0 -321
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Extracted from `.agents/scripts/run-audit-suite.js` (Story #963, Epic #946).
|
|
5
|
-
* Pure module — no IO, no provider calls, safe to unit-test in isolation.
|
|
6
|
-
*
|
|
7
|
-
* The functions here are the parsing seam used by the audit suite to derive
|
|
8
|
-
* a 1–3-sentence summary from a workflow's `description` frontmatter field
|
|
9
|
-
* (falling back to its first prose paragraph). Keep them tiny and free of
|
|
10
|
-
* cross-module imports so the audit-suite entry-point stays orchestration-only.
|
|
2
|
+
* Pure frontmatter + workflow-summary helpers; keep free of cross-module
|
|
3
|
+
* imports.
|
|
11
4
|
*/
|
|
12
5
|
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
// score this file. The walker has a long-standing bug where it crashes on
|
|
16
|
-
// RegExp literals via `RegExpLiteral`, returning MI=0 — see the parse-time
|
|
17
|
-
// fallback in lib/maintainability-engine.js#calculateForSource.
|
|
6
|
+
// RegExp constructors, not literals: typhonjs-escomplex crashes on
|
|
7
|
+
// `RegExpLiteral` and scores the file MI=0.
|
|
18
8
|
// biome-ignore-start lint/complexity/useRegexLiterals: typhonjs-escomplex MI workaround
|
|
19
9
|
const FRONTMATTER_RE = new RegExp(String.raw`^---\r?\n([\s\S]*?)\r?\n---\r?\n`);
|
|
20
10
|
const NEWLINE_SPLIT_RE = new RegExp(String.raw`\r?\n`);
|
|
@@ -27,9 +17,7 @@ const SUMMARY_MAX_SENTENCES = 3;
|
|
|
27
17
|
const SUMMARY_MAX_CHARS = 280;
|
|
28
18
|
|
|
29
19
|
/**
|
|
30
|
-
*
|
|
31
|
-
* key→value map. Quoted values are unwrapped; entries without a `:` separator
|
|
32
|
-
* are skipped. Returns `{}` when no frontmatter is present.
|
|
20
|
+
* Flat key→value map; quotes unwrapped, `:`-less lines skipped.
|
|
33
21
|
*
|
|
34
22
|
* @param {string} content
|
|
35
23
|
* @returns {Record<string, string>}
|
|
@@ -55,10 +43,6 @@ export function extractFrontmatter(content) {
|
|
|
55
43
|
}
|
|
56
44
|
|
|
57
45
|
/**
|
|
58
|
-
* Pure: find the first prose paragraph after the frontmatter block, skipping
|
|
59
|
-
* headings and `---` rules. Whitespace inside the paragraph is collapsed to
|
|
60
|
-
* single spaces. Returns `''` when the body is empty / heading-only.
|
|
61
|
-
*
|
|
62
46
|
* @param {string} content
|
|
63
47
|
* @returns {string}
|
|
64
48
|
*/
|
|
@@ -75,11 +59,6 @@ export function firstProseParagraph(content) {
|
|
|
75
59
|
}
|
|
76
60
|
|
|
77
61
|
/**
|
|
78
|
-
* Pure: trim a candidate summary to at most three sentences and 280 chars.
|
|
79
|
-
* Sentences are matched by `[^.!?\n]+[.!?]+`; bare paragraphs that contain no
|
|
80
|
-
* terminator are returned verbatim (subject to the char clamp). The 280-char
|
|
81
|
-
* trim appends an ellipsis to signal truncation to readers.
|
|
82
|
-
*
|
|
83
62
|
* @param {string} text
|
|
84
63
|
* @returns {string}
|
|
85
64
|
*/
|
|
@@ -97,9 +76,6 @@ export function clampSummary(text) {
|
|
|
97
76
|
}
|
|
98
77
|
|
|
99
78
|
/**
|
|
100
|
-
* Pure: derive a 1–3-sentence summary from a workflow's frontmatter
|
|
101
|
-
* `description` field, falling back to the first prose paragraph.
|
|
102
|
-
*
|
|
103
79
|
* @param {string} content
|
|
104
80
|
* @returns {string}
|
|
105
81
|
*/
|
|
@@ -1,17 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* lib/audit-suite/index.js — Audit-suite SDK barrel.
|
|
3
|
-
*
|
|
4
|
-
* Single library entry point for the audit-suite. Exports the two public
|
|
5
|
-
* functions (`runAuditSuite`, `selectAudits`) plus the pure rule-matching
|
|
6
|
-
* helpers (`matchesFilePattern`, `matchesAnyFilePattern`).
|
|
7
|
-
*
|
|
8
|
-
* Consumers import from this file — the former top-level CLI wrappers
|
|
9
|
-
* (`run-audit-suite.js`, `select-audits.js`) were retired in #4482; this
|
|
10
|
-
* barrel is the only supported entry point (Story #1083 / Epic #1072).
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* import { runAuditSuite, selectAudits } from './lib/audit-suite/index.js';
|
|
14
|
-
*/
|
|
1
|
+
/** Audit-suite barrel — the only supported entry point. */
|
|
15
2
|
|
|
16
3
|
export {
|
|
17
4
|
buildChecklistPayload,
|
|
@@ -23,7 +10,6 @@ export { buildDispatchChecklist } from './dispatch-checklist.js';
|
|
|
23
10
|
export {
|
|
24
11
|
countChangedLines,
|
|
25
12
|
evaluateLensDiffFloor,
|
|
26
|
-
resolveLensDiffFloor,
|
|
27
13
|
} from './lens-diff-floor.js';
|
|
28
14
|
export { runAuditSuite } from './runner.js';
|
|
29
15
|
export {
|
|
@@ -1,34 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* write-time tier: instead of an engineer only learning what a lens checks
|
|
7
|
-
* when `/audit-<lens>` runs, a compact per-lens checklist ships as a committed
|
|
8
|
-
* build artifact under `.agents/audit-checklists/`. This module is the pure
|
|
9
|
-
* distillation seam — no IO — so it is unit-testable and the generator
|
|
10
|
-
* (`generate-lens-checklists.js`) owns only the file read/write/prune and the
|
|
11
|
-
* `--check` drift gate.
|
|
12
|
-
*
|
|
13
|
-
* The distillation is a deterministic transform of the workflow markdown: it
|
|
14
|
-
* lifts the lens's *concern* labels — the bold lead-ins of the analysis /
|
|
15
|
-
* evaluation list items — from the audit region of the workflow (everything
|
|
16
|
-
* before the `Output Requirements` / report-template boundary), skipping the
|
|
17
|
-
* recurring boilerplate sections (Role, Context, Scope, Execution strategy,
|
|
18
|
-
* Configuration). When a lens exposes no bold concern items it falls back to
|
|
19
|
-
* its audit-step headings so every checklist is non-empty. The output is
|
|
20
|
-
* hard-capped at {@link MAX_CHECKLIST_LINES} lines.
|
|
21
|
-
*
|
|
22
|
-
* Pure: no IO, no provider calls, safe to unit-test in isolation.
|
|
23
|
-
*
|
|
24
|
-
* @see Story #4408 — per-lens authoring checklists as drift-gated artifacts.
|
|
2
|
+
* Pure distillation of an `audit-<lens>.md` workflow into the committed,
|
|
3
|
+
* drift-gated authoring checklist (the generator owns I/O). Lifts bold
|
|
4
|
+
* concern lead-ins from the audit region, skipping boilerplate sections and
|
|
5
|
+
* stopping at the report-template boundary; falls back to step headings.
|
|
25
6
|
*/
|
|
26
7
|
|
|
27
8
|
import { clampSummary, extractFrontmatter } from './frontmatter.js';
|
|
28
9
|
|
|
29
|
-
//
|
|
30
|
-
// `/.../`) so the maintainability engine's AST walker (typhonjs-escomplex) can
|
|
31
|
-
// score this file — see the note in lib/audit-suite/frontmatter.js.
|
|
10
|
+
// RegExp constructors, not literals: typhonjs-escomplex crashes on literals.
|
|
32
11
|
// biome-ignore-start lint/complexity/useRegexLiterals: typhonjs-escomplex MI workaround
|
|
33
12
|
const LINE_SPLIT_RE = new RegExp(String.raw`\r?\n`);
|
|
34
13
|
const FRONTMATTER_BLOCK_RE = new RegExp(
|
|
@@ -44,14 +23,11 @@ const BOLD_LEAD_ITEM_RE = new RegExp(
|
|
|
44
23
|
);
|
|
45
24
|
const STEP_PREFIX_RE = new RegExp(String.raw`^Step\s+\d+\s*[:.]?\s*`, 'i');
|
|
46
25
|
const TRAILING_COLON_RE = new RegExp(String.raw`\s*:\s*$`);
|
|
47
|
-
// A `##` section whose heading opens with one of these is workflow boilerplate,
|
|
48
|
-
// not a lens concern — its list items are skipped during concern extraction.
|
|
49
26
|
const BOILERPLATE_SECTION_RE = new RegExp(
|
|
50
27
|
String.raw`^(Role|Context & Objective|Scope|Execution strategy|Configuration|Run Context|Target set)\b`,
|
|
51
28
|
'i',
|
|
52
29
|
);
|
|
53
|
-
//
|
|
54
|
-
// first heading matching this is template scaffolding, never a concern.
|
|
30
|
+
// Everything from this heading on is report-template scaffolding.
|
|
55
31
|
const OUTPUT_BOUNDARY_RE = new RegExp(
|
|
56
32
|
'(Output Requirements|Generate the Report)',
|
|
57
33
|
'i',
|
|
@@ -61,15 +37,9 @@ const OUTPUT_BOUNDARY_RE = new RegExp(
|
|
|
61
37
|
/** Hard cap on generated checklist lines (asserted by the drift test). */
|
|
62
38
|
export const MAX_CHECKLIST_LINES = 40;
|
|
63
39
|
|
|
64
|
-
/** Fixed header/intro line budget consumed before the checklist items. */
|
|
65
40
|
const HEADER_LINE_BUDGET = 12;
|
|
66
41
|
|
|
67
42
|
/**
|
|
68
|
-
* Pure: walk the workflow body once, collecting the lens's concern labels (bold
|
|
69
|
-
* lead-ins of analysis/evaluation list items) and, as a fallback, its audit
|
|
70
|
-
* step headings. Extraction stops at the report-template boundary and ignores
|
|
71
|
-
* boilerplate sections.
|
|
72
|
-
*
|
|
73
43
|
* @param {string} content — raw `audit-<lens>.md` markdown.
|
|
74
44
|
* @returns {{ title: string|null, concerns: string[], stepHeadings: string[] }}
|
|
75
45
|
*/
|
|
@@ -114,10 +84,8 @@ export function extractLensConcerns(content) {
|
|
|
114
84
|
}
|
|
115
85
|
|
|
116
86
|
/**
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* back into one line. `extractFrontmatter` only sees the indicator token
|
|
120
|
-
* (`>-`) for a block scalar, so this reads the continuation lines directly.
|
|
87
|
+
* One clamped description line; folds a YAML block scalar, whose indicator
|
|
88
|
+
* token is all `extractFrontmatter` sees.
|
|
121
89
|
*
|
|
122
90
|
* @param {string} content — raw workflow markdown.
|
|
123
91
|
* @param {Record<string, string>} fm — parsed frontmatter map.
|
|
@@ -146,7 +114,7 @@ export function resolveDescription(content, fm) {
|
|
|
146
114
|
}
|
|
147
115
|
|
|
148
116
|
/**
|
|
149
|
-
*
|
|
117
|
+
* Case-insensitive, first-seen order.
|
|
150
118
|
*
|
|
151
119
|
* @param {string[]} items
|
|
152
120
|
* @returns {string[]}
|
|
@@ -164,10 +132,7 @@ function dedupePreserveOrder(items) {
|
|
|
164
132
|
}
|
|
165
133
|
|
|
166
134
|
/**
|
|
167
|
-
*
|
|
168
|
-
* markdown. The output is deterministic (a pure function of `content`) and
|
|
169
|
-
* hard-capped at {@link MAX_CHECKLIST_LINES} lines including the trailing
|
|
170
|
-
* newline, so the same input always regenerates byte-identically.
|
|
135
|
+
* Deterministic, capped at {@link MAX_CHECKLIST_LINES} lines.
|
|
171
136
|
*
|
|
172
137
|
* @param {string} lens — canonical lens name (e.g. `security`).
|
|
173
138
|
* @param {string} content — raw `audit-<lens>.md` markdown.
|
|
@@ -1,74 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* The Story-scope local-lens pass materialized ~28 KB of lens prompts per
|
|
8
|
-
* close while sampled closes yielded almost zero findings — and none above
|
|
9
|
-
* Suggestion severity. The cheapest correct response is a deterministic
|
|
10
|
-
* floor: a *small* diff that touches *no* sensitive path earns no lens
|
|
11
|
-
* materialization at all. The floor is measured in **changed lines**
|
|
12
|
-
* (additions + deletions across the diff), configured via
|
|
13
|
-
* `delivery.review.lensDiffFloor` (default {@link DEFAULT_LENS_DIFF_FLOOR};
|
|
14
|
-
* `0` disables the skip entirely).
|
|
15
|
-
*
|
|
16
|
-
* ## Fail-open contract
|
|
17
|
-
*
|
|
18
|
-
* The skip only fires on positive evidence that the diff is small and
|
|
19
|
-
* non-sensitive. Every degraded input — an unknown line count, an
|
|
20
|
-
* unreadable manifest, a disabled floor — resolves to "do not skip", so a
|
|
21
|
-
* measurement failure can never buy a change less review. Sensitive-path
|
|
22
|
-
* hits are matched with the same `sensitivePaths` classes the review-depth
|
|
23
|
-
* derivation reads (`selectSensitivePathClasses`), so the floor and the
|
|
24
|
-
* depth tiering can never disagree about what "sensitive" means.
|
|
25
|
-
*
|
|
26
|
-
* All exports are total: no throws, no I/O beyond the injected git spawn in
|
|
27
|
-
* {@link countChangedLines}.
|
|
2
|
+
* Close-scope lens diff-floor: a diff under the changed-line floor that
|
|
3
|
+
* touches no sensitive path skips lens materialization. Fail-open — every
|
|
4
|
+
* degraded input (unknown count, unreadable manifest, floor `0`) means "do
|
|
5
|
+
* not skip". Sensitive classes come from the same selector as review depth,
|
|
6
|
+
* so the two never disagree. Total; no I/O beyond the injected git spawn.
|
|
28
7
|
*/
|
|
29
8
|
|
|
30
9
|
import { gitSpawn } from '../git-utils.js';
|
|
31
10
|
import { readNumstatRows } from '../orchestration/diff-magnitude.js';
|
|
32
11
|
import { selectSensitivePathClasses } from './selector.js';
|
|
33
12
|
|
|
34
|
-
/**
|
|
35
|
-
* Default changed-line floor below which a non-sensitive diff skips lens
|
|
36
|
-
* materialization. Chosen from the measured distribution (Story #4699): the
|
|
37
|
-
* sampled zero-yield closes clustered well under this size.
|
|
38
|
-
*/
|
|
13
|
+
/** Measured: zero-yield closes clustered well under this size. */
|
|
39
14
|
export const DEFAULT_LENS_DIFF_FLOOR = 40;
|
|
40
15
|
|
|
41
16
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* {@link DEFAULT_LENS_DIFF_FLOOR}. `0` is a valid, deliberate "floor off".
|
|
46
|
-
*
|
|
47
|
-
* @param {object|null|undefined} config Resolved `.agentrc.json` wrapper.
|
|
48
|
-
* @returns {number}
|
|
49
|
-
*/
|
|
50
|
-
export function resolveLensDiffFloor(config) {
|
|
51
|
-
const value = config?.delivery?.review?.lensDiffFloor;
|
|
52
|
-
if (typeof value === 'number' && Number.isInteger(value) && value >= 0) {
|
|
53
|
-
return value;
|
|
54
|
-
}
|
|
55
|
-
return DEFAULT_LENS_DIFF_FLOOR;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Count the changed lines (additions + deletions) in the
|
|
60
|
-
* `baseRef...headRef` diff via `git diff --numstat`.
|
|
61
|
-
*
|
|
62
|
-
* The read and the parse are shared with the light path's magnitude backstop
|
|
63
|
-
* ({@link module:lib/orchestration/diff-magnitude.readNumstatRows}) so the two
|
|
64
|
-
* cannot disagree about how a diff is measured. This one keeps a whole-diff
|
|
65
|
-
* total: the lens floor asks "is this diff small", not "is its implementation
|
|
66
|
-
* half small", so it deliberately does **not** apply the companion exemption.
|
|
67
|
-
*
|
|
68
|
-
* Total — never throws. Returns `null` (the neutral "count unknown" signal
|
|
69
|
-
* the floor fails open on) for any git failure or unparseable output, and
|
|
70
|
-
* `0` for a genuinely empty diff. Binary rows (`-\t-\tpath`) contribute 0
|
|
71
|
-
* text lines but do not poison the parse.
|
|
17
|
+
* Whole-diff additions + deletions (no companion exemption: the question is
|
|
18
|
+
* "is this diff small"). Shares the numstat parse with the light path's
|
|
19
|
+
* backstop. `null` on any git failure; binary rows count 0.
|
|
72
20
|
*
|
|
73
21
|
* @param {{
|
|
74
22
|
* baseRef: string,
|
|
@@ -90,20 +38,8 @@ export function countChangedLines({
|
|
|
90
38
|
}
|
|
91
39
|
|
|
92
40
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* 1. The floor is enabled (`floor > 0`).
|
|
97
|
-
* 2. The changed-line count is *known* and strictly below the floor.
|
|
98
|
-
* 3. The changed-file set intersects **zero** registered sensitive-path
|
|
99
|
-
* classes (`audit-rules.json#sensitivePaths`).
|
|
100
|
-
*
|
|
101
|
-
* Every other state — floor disabled, unknown count, at-or-above floor, a
|
|
102
|
-
* sensitive-path hit — resolves to `skip: false` with a named reason, so
|
|
103
|
-
* the verdict is auditable in the findings-yield ledger.
|
|
104
|
-
*
|
|
105
|
-
* Pure and total: never throws (a throwing sensitive-path matcher degrades
|
|
106
|
-
* to "not skippable").
|
|
41
|
+
* Skip only when the floor is enabled, the count is known and below it, and
|
|
42
|
+
* no sensitive-path class matches; every other state names its reason.
|
|
107
43
|
*
|
|
108
44
|
* @param {{
|
|
109
45
|
* changedFiles?: string[]|null,
|
|
@@ -153,7 +89,6 @@ export function evaluateLensDiffFloor(input = {}) {
|
|
|
153
89
|
injectedRules: input.injectedRules,
|
|
154
90
|
});
|
|
155
91
|
} catch {
|
|
156
|
-
// An unreadable manifest is not evidence the change is safe to skip.
|
|
157
92
|
return verdict(false, 'sensitive-classes-unknown');
|
|
158
93
|
}
|
|
159
94
|
const matched = Array.isArray(classes) ? classes : [];
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Extracted from the former `run-audit-suite.js` CLI (Story #963, Epic #946;
|
|
5
|
-
* the CLI wrapper itself was retired in #4482 — `runAuditSuite` via the
|
|
6
|
-
* barrel is the only supported entry point).
|
|
7
|
-
*
|
|
8
|
-
* The runner composes the focused helpers from this directory:
|
|
9
|
-
* - frontmatter.js → `summarizeWorkflow`
|
|
10
|
-
* - substitutions.js → `applySubstitutions`, `computeAllowedKeys`
|
|
11
|
-
* - findings.js → `aggregateSummary`
|
|
12
|
-
* - workflow-loader.js → `loadWorkflow`, `defaultWriteArtifact`
|
|
13
|
-
*
|
|
14
|
-
* It owns the audit envelope shape (`metadata`, `findings`, `workflows`) and
|
|
15
|
-
* the per-audit fan-out + result reduction. The former CLI entry-point
|
|
16
|
-
* (`run-audit-suite.js`) was retired in #4482; callers invoke
|
|
17
|
-
* `runAuditSuite` via the `lib/audit-suite/index.js` barrel.
|
|
2
|
+
* `runAuditSuite`: owns the audit envelope shape (`metadata`, `findings`,
|
|
3
|
+
* `workflows`) and the per-audit fan-out; invoked via the barrel.
|
|
18
4
|
*/
|
|
19
5
|
|
|
20
6
|
import fs from 'node:fs/promises';
|
|
@@ -149,35 +135,19 @@ async function reduceResults({
|
|
|
149
135
|
}
|
|
150
136
|
|
|
151
137
|
/**
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* 2. Locate the corresponding `.agents/workflows/<auditName>.md` file.
|
|
157
|
-
* 3. Return a slim `workflow` descriptor (audit name, source path, summary,
|
|
158
|
-
* byte size) for the calling AI agent. Full prompt bodies are written to
|
|
159
|
-
* `<auditOutputDir>/audit-<runId>-<audit>.md` (resolved from
|
|
160
|
-
* `project.paths.tempRoot`, default `temp/audits/`) when `artifactPrefix`
|
|
161
|
-
* (or `runId`) is provided, so downstream agents can read them locally
|
|
162
|
-
* without bloating the GitHub comment surface.
|
|
163
|
-
*
|
|
164
|
-
* Substitutions: callers may pass a `substitutions` map of `{{key}}` → value
|
|
165
|
-
* pairs. Allowed keys are the built-ins (auditOutputDir, ticketId, baseBranch,
|
|
166
|
-
* changedFiles) plus any `substitutionKeys` declared on the requested audits in
|
|
167
|
-
* audit-rules.json, aggregated across auditWorkflows. Unknown keys
|
|
168
|
-
* raise a ValidationError.
|
|
138
|
+
* Resolve registered audit workflows into slim descriptors; with
|
|
139
|
+
* `artifactPrefix`, full bodies are written to disk instead of travelling in
|
|
140
|
+
* the envelope. Substitution keys beyond the built-ins must be declared as
|
|
141
|
+
* `substitutionKeys` in audit-rules.json, else ValidationError.
|
|
169
142
|
*
|
|
170
143
|
* @param {object} opts
|
|
171
|
-
* @param {string[]} opts.auditWorkflows
|
|
172
|
-
* @param {Record<string,string>} [opts.substitutions]
|
|
173
|
-
* @param {string} [opts.artifactPrefix] -
|
|
174
|
-
*
|
|
175
|
-
* @param {
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
* @param {Function} [opts.injectedLoadWorkflow] - Optional override for testing.
|
|
179
|
-
* @param {object} [opts.injectedRules] - Optional override for the audit-rules content (testing).
|
|
180
|
-
* @param {Function} [opts.injectedWriteArtifact] - Optional override for filesystem-free testing.
|
|
144
|
+
* @param {string[]} opts.auditWorkflows
|
|
145
|
+
* @param {Record<string,string>} [opts.substitutions]
|
|
146
|
+
* @param {string} [opts.artifactPrefix] - writes `audit-<prefix>-<audit>.md`.
|
|
147
|
+
* @param {string} [opts.artifactsDir] - defaults to `<auditOutputDir>`.
|
|
148
|
+
* @param {Function} [opts.injectedLoadWorkflow]
|
|
149
|
+
* @param {object} [opts.injectedRules]
|
|
150
|
+
* @param {Function} [opts.injectedWriteArtifact]
|
|
181
151
|
* @returns {Promise<object>} Aggregated audit results.
|
|
182
152
|
*/
|
|
183
153
|
export async function runAuditSuite({
|