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,58 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* `lib/config/gates/*`) is the single hand-authored enumeration of the
|
|
9
|
-
* `.agentrc.json` surface. `description` and `default` annotations live on
|
|
10
|
-
* those literals — AJV ignores both — and this generator emits everything
|
|
11
|
-
* downstream of them:
|
|
12
|
-
*
|
|
13
|
-
* 1. `.agents/schemas/agentrc.schema.json` — the JSON-Schema mirror every
|
|
14
|
-
* consumer `.agentrc.json` points `$schema` at. Serialized 2020-12,
|
|
15
|
-
* fully inlined (no `$defs`): it IS the runtime schema, so the class of
|
|
16
|
-
* bug where a key exists in the mirror but not in the runtime AJV — and
|
|
17
|
-
* a consumer's whole config is therefore dead on arrival (Epic #4131) —
|
|
18
|
-
* cannot be expressed any more.
|
|
19
|
-
* 2. `.agents/docs/agentrc-reference.json` — the defaults inventory
|
|
20
|
-
* `lib/config/defaults.js` reads for `mandrel explain` and the
|
|
21
|
-
* sync-agentrc redundancy advisory. Built from the `default`
|
|
22
|
-
* annotations: a node carrying one contributes its value verbatim and is
|
|
23
|
-
* not descended into; a node carrying none contributes nothing.
|
|
24
|
-
* 3. The bounded key-table region inside `.agents/docs/configuration.md`,
|
|
25
|
-
* delimited by:
|
|
26
|
-
*
|
|
27
|
-
* <!-- BEGIN GENERATED:agentrc -->
|
|
28
|
-
* ...generated tables...
|
|
29
|
-
* <!-- END GENERATED:agentrc -->
|
|
30
|
-
*
|
|
31
|
-
* One Markdown section per top-level schema key, each table columned
|
|
32
|
-
* `| Key | Required | Type | Default | Description |`, with nested
|
|
33
|
-
* properties flattened into dot-paths (`paths.agentRoot`,
|
|
34
|
-
* `branchProtection.requiredChecks[]`).
|
|
35
|
-
*
|
|
36
|
-
* Until this Story the first two were hand-maintained alongside the runtime
|
|
37
|
-
* schema and reconciled by two parity suites; those suites are now
|
|
38
|
-
* generator-fidelity checks.
|
|
39
|
-
*
|
|
40
|
-
* Modes:
|
|
41
|
-
* (default) — rewrite any artifact whose content is stale.
|
|
42
|
-
* --check — exit 0 when all three are current, exit 1 naming the stale
|
|
43
|
-
* ones. Wired into `npm run docs:check`, hence `npm run lint`.
|
|
44
|
-
*
|
|
45
|
-
* **Whitespace is not content.** The two JSON artifacts are re-formatted by
|
|
46
|
-
* Biome via lint-staged after they are written, so comparing raw bytes would
|
|
47
|
-
* make the check fail on formatting alone. Both comparison and write go
|
|
48
|
-
* through {@link canonicalJson}: parse, re-serialize, compare. That is
|
|
49
|
-
* insensitive to whitespace and *sensitive* to key order, which is what
|
|
50
|
-
* actually matters — key order drives the doc-table order and the ordering a
|
|
51
|
-
* consumer's editor offers completions in.
|
|
52
|
-
*
|
|
53
|
-
* Per `.agents/rules/orchestration-error-handling.md`, unrecoverable
|
|
54
|
-
* failures surface via `throw new Error(...)` so `runAsCli` can map the
|
|
55
|
-
* throw to `process.exit(1)` deterministically (no `Logger.fatal`).
|
|
3
|
+
* Generates the `.agentrc` config surface from the annotated runtime AJV
|
|
4
|
+
* schema (the single source): the JSON-Schema mirror (fully inlined, so it
|
|
5
|
+
* cannot disagree with runtime), the defaults inventory, and the key-table
|
|
6
|
+
* region of `configuration.md`. JSON artifacts compare canonically — Biome
|
|
7
|
+
* reformats them after write, so whitespace is ignored but key order counts.
|
|
56
8
|
*/
|
|
57
9
|
|
|
58
10
|
import fs from 'node:fs';
|
|
@@ -82,7 +34,6 @@ const DOC_PATH = path.join(PROJECT_ROOT, '.agents', 'docs', 'configuration.md');
|
|
|
82
34
|
const REGION_BEGIN = '<!-- BEGIN GENERATED:agentrc -->';
|
|
83
35
|
const REGION_END = '<!-- END GENERATED:agentrc -->';
|
|
84
36
|
|
|
85
|
-
/** Envelope keys prepended to the serialized runtime schema. */
|
|
86
37
|
const MIRROR_ENVELOPE = {
|
|
87
38
|
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
88
39
|
$id: 'https://github.com/dsj1984/mandrel/blob/main/.agents/schemas/agentrc.schema.json',
|
|
@@ -91,16 +42,12 @@ const MIRROR_ENVELOPE = {
|
|
|
91
42
|
'GENERATED — do not edit. Emitted by `node .agents/scripts/generate-config-docs.js` from the runtime AJV schema in `.agents/scripts/lib/config-settings-schema.js` (plus its `-delivery` / `-quality` / `config/gates/*` modules), which is the single source of truth for the `.agentrc.json` surface. This file exists for editor tooling and human readers; because it is a serialization of the runtime schema rather than a hand-kept mirror, the two cannot disagree. Edit the annotated schema literals and re-run `npm run docs:gen`.',
|
|
92
43
|
};
|
|
93
44
|
|
|
94
|
-
/** `$schema` pointer written into the generated defaults inventory. */
|
|
95
45
|
const REFERENCE_SCHEMA_POINTER = '../schemas/agentrc.schema.json';
|
|
96
46
|
|
|
97
|
-
// Order
|
|
47
|
+
// Order drives section emission.
|
|
98
48
|
const TOP_LEVEL_KEYS = ['project', 'github', 'planning', 'delivery', 'qa'];
|
|
99
49
|
|
|
100
50
|
/**
|
|
101
|
-
* Canonical JSON text for comparison and for writing. Key order is preserved
|
|
102
|
-
* (and therefore compared); whitespace is normalized away.
|
|
103
|
-
*
|
|
104
51
|
* @param {unknown} value
|
|
105
52
|
* @returns {string}
|
|
106
53
|
*/
|
|
@@ -109,10 +56,7 @@ function canonicalJson(value) {
|
|
|
109
56
|
}
|
|
110
57
|
|
|
111
58
|
/**
|
|
112
|
-
*
|
|
113
|
-
* is absent (first generation) or unparseable (a hand-mangled artifact is
|
|
114
|
-
* treated as stale, not as a crash).
|
|
115
|
-
*
|
|
59
|
+
* `null` when absent or unparseable — a mangled artifact is stale, not a crash.
|
|
116
60
|
* @param {string} file
|
|
117
61
|
* @returns {string | null}
|
|
118
62
|
*/
|
|
@@ -126,16 +70,7 @@ function readCanonicalJson(file) {
|
|
|
126
70
|
}
|
|
127
71
|
|
|
128
72
|
/**
|
|
129
|
-
*
|
|
130
|
-
* runtime schema verbatim.
|
|
131
|
-
*
|
|
132
|
-
* The runtime schema is a plain, cycle-free object literal (no RegExp or
|
|
133
|
-
* function values), so `structuredClone` is a faithful serialization. Shared
|
|
134
|
-
* sub-schema objects — `TOLERANCE_SCHEMA` and friends, referenced by several
|
|
135
|
-
* gates — are inlined at each use rather than hoisted into `$defs`. The
|
|
136
|
-
* inlined document is smaller than the hand-maintained `$defs` mirror it
|
|
137
|
-
* replaces, and it removes the naming heuristic a hoisting pass would need.
|
|
138
|
-
*
|
|
73
|
+
* Shared sub-schemas are inlined at each use rather than hoisted to `$defs`.
|
|
139
74
|
* @param {object} schema
|
|
140
75
|
* @returns {object}
|
|
141
76
|
*/
|
|
@@ -144,17 +79,10 @@ function buildMirrorSchema(schema) {
|
|
|
144
79
|
}
|
|
145
80
|
|
|
146
81
|
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* A node carrying `default` contributes that value verbatim and is NOT
|
|
150
|
-
* descended into — that is what lets an object-shaped or array-shaped default
|
|
151
|
-
* (`github.branchProtection.requiredChecks`, `qa.environments`) be declared in
|
|
152
|
-
* one place. A properties-bearing node with no `default` contributes an object
|
|
153
|
-
* built from whichever children contributed something, or nothing at all when
|
|
154
|
-
* none did.
|
|
155
|
-
*
|
|
82
|
+
* A node carrying `default` contributes it verbatim and is not descended
|
|
83
|
+
* into, so an object- or array-shaped default is declared in one place.
|
|
156
84
|
* @param {object} node
|
|
157
|
-
* @returns {unknown}
|
|
85
|
+
* @returns {unknown} `undefined` when nothing is contributed.
|
|
158
86
|
*/
|
|
159
87
|
function collectDefaults(node) {
|
|
160
88
|
if (!node || typeof node !== 'object') return undefined;
|
|
@@ -169,8 +97,6 @@ function collectDefaults(node) {
|
|
|
169
97
|
}
|
|
170
98
|
|
|
171
99
|
/**
|
|
172
|
-
* Build the defaults inventory shipped as `.agents/docs/agentrc-reference.json`.
|
|
173
|
-
*
|
|
174
100
|
* @param {object} schema
|
|
175
101
|
* @returns {object}
|
|
176
102
|
*/
|
|
@@ -182,11 +108,9 @@ function buildReferenceInventory(schema) {
|
|
|
182
108
|
}
|
|
183
109
|
|
|
184
110
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* @param {object} node The schema node to flatten.
|
|
111
|
+
* `allOf` only hangs `if`/`then` constraints off a block, so the base type is
|
|
112
|
+
* what the docs need.
|
|
113
|
+
* @param {object} node
|
|
190
114
|
* @returns {object}
|
|
191
115
|
*/
|
|
192
116
|
function flattenAllOf(node) {
|
|
@@ -203,11 +127,7 @@ function flattenAllOf(node) {
|
|
|
203
127
|
}
|
|
204
128
|
|
|
205
129
|
/**
|
|
206
|
-
*
|
|
207
|
-
* schema: an enum item renders `array<enum>`, a typed item renders
|
|
208
|
-
* `array<type>`, and anything else collapses to a bare `array`.
|
|
209
|
-
*
|
|
210
|
-
* @param {object} flat Flattened array node.
|
|
130
|
+
* @param {object} flat
|
|
211
131
|
* @returns {string}
|
|
212
132
|
*/
|
|
213
133
|
function renderArrayType(flat) {
|
|
@@ -224,11 +144,7 @@ function renderArrayType(flat) {
|
|
|
224
144
|
}
|
|
225
145
|
|
|
226
146
|
/**
|
|
227
|
-
*
|
|
228
|
-
* carries an `additionalProperties` schema (the map form), `object`
|
|
229
|
-
* otherwise.
|
|
230
|
-
*
|
|
231
|
-
* @param {object} flat Flattened object node.
|
|
147
|
+
* @param {object} flat
|
|
232
148
|
* @returns {string}
|
|
233
149
|
*/
|
|
234
150
|
function renderObjectType(flat) {
|
|
@@ -242,20 +158,12 @@ function renderObjectType(flat) {
|
|
|
242
158
|
}
|
|
243
159
|
|
|
244
160
|
/**
|
|
245
|
-
*
|
|
246
|
-
* predicate with a `render(flat)` producer; {@link renderType} walks the
|
|
247
|
-
* table once and returns the first match, so a new schema shape becomes a new
|
|
248
|
-
* row here rather than another nested branch.
|
|
249
|
-
*
|
|
250
|
-
* Order is load-bearing — `oneOf` and `enum` are matched before the plain
|
|
251
|
-
* `type` rules.
|
|
252
|
-
*
|
|
161
|
+
* First match wins; `oneOf` and `enum` must precede the plain `type` rules.
|
|
253
162
|
* @type {Array<{ when: (flat: object) => boolean, render: (flat: object) => string }>}
|
|
254
163
|
*/
|
|
255
164
|
const TYPE_RULES = [
|
|
256
165
|
{
|
|
257
|
-
//
|
|
258
|
-
// `{ append?, prepend? }` object that deep-merges with the framework list.
|
|
166
|
+
// List-or-extender union: replace, or deep-merge with the framework list.
|
|
259
167
|
when: (flat) =>
|
|
260
168
|
Array.isArray(flat.oneOf) &&
|
|
261
169
|
flat.oneOf.some((m) => m?.properties?.append || m?.properties?.prepend),
|
|
@@ -290,10 +198,7 @@ const TYPE_RULES = [
|
|
|
290
198
|
];
|
|
291
199
|
|
|
292
200
|
/**
|
|
293
|
-
*
|
|
294
|
-
* falls through to a `?` so missing coverage is visible rather than silently
|
|
295
|
-
* wrong.
|
|
296
|
-
*
|
|
201
|
+
* An unmatched shape renders `?` so the gap is visible.
|
|
297
202
|
* @param {object} node
|
|
298
203
|
* @returns {string}
|
|
299
204
|
*/
|
|
@@ -305,10 +210,6 @@ function renderType(node) {
|
|
|
305
210
|
}
|
|
306
211
|
|
|
307
212
|
/**
|
|
308
|
-
* Render the "Default" cell. Nodes without an explicit `default` annotation
|
|
309
|
-
* get an em dash — see the annotation contract in `config-settings-schema.js`
|
|
310
|
-
* for why a key can have a runtime default and no annotation.
|
|
311
|
-
*
|
|
312
213
|
* @param {object} node
|
|
313
214
|
* @returns {string}
|
|
314
215
|
*/
|
|
@@ -328,8 +229,6 @@ function renderDefault(node) {
|
|
|
328
229
|
}
|
|
329
230
|
|
|
330
231
|
/**
|
|
331
|
-
* Escape pipe characters so they survive Markdown table cell parsing.
|
|
332
|
-
*
|
|
333
232
|
* @param {string} text
|
|
334
233
|
* @returns {string}
|
|
335
234
|
*/
|
|
@@ -338,11 +237,7 @@ function escapeCell(text) {
|
|
|
338
237
|
}
|
|
339
238
|
|
|
340
239
|
/**
|
|
341
|
-
*
|
|
342
|
-
* parent's description followed by the recursively-flattened child rows.
|
|
343
|
-
* Returns `null` when `flat` is not a properties-bearing object, so the
|
|
344
|
-
* caller can fall through to the next row shape.
|
|
345
|
-
*
|
|
240
|
+
* `null` when not a properties-bearing object, so the next builder runs.
|
|
346
241
|
* @param {{flat: object, keyPath: string, pathParts: string[], propName: string, isRequired: boolean, description: string}} ctx
|
|
347
242
|
* @returns {Array<object> | null}
|
|
348
243
|
*/
|
|
@@ -365,10 +260,7 @@ function nestedObjectRows(ctx) {
|
|
|
365
260
|
}
|
|
366
261
|
|
|
367
262
|
/**
|
|
368
|
-
*
|
|
369
|
-
* describing the item shape in the Description cell. Returns `null` when the
|
|
370
|
-
* property is not an array whose items are a properties-bearing object.
|
|
371
|
-
*
|
|
263
|
+
* One `[]`-suffixed row per array of objects, item keys in the Description.
|
|
372
264
|
* @param {{flat: object, keyPath: string, isRequired: boolean, description: string}} ctx
|
|
373
265
|
* @returns {Array<object> | null}
|
|
374
266
|
*/
|
|
@@ -393,10 +285,6 @@ function arrayOfObjectsRows(ctx) {
|
|
|
393
285
|
}
|
|
394
286
|
|
|
395
287
|
/**
|
|
396
|
-
* Emit the leaf (scalar / non-recursed) row for a property. Always matches —
|
|
397
|
-
* it is the fallthrough shape when neither the nested-object nor the
|
|
398
|
-
* array-of-objects builder applied.
|
|
399
|
-
*
|
|
400
288
|
* @param {{flat: object, keyPath: string, isRequired: boolean, description: string}} ctx
|
|
401
289
|
* @returns {Array<object>}
|
|
402
290
|
*/
|
|
@@ -413,24 +301,13 @@ function leafRow(ctx) {
|
|
|
413
301
|
];
|
|
414
302
|
}
|
|
415
303
|
|
|
416
|
-
//
|
|
417
|
-
// returns the first builder that yields rows (non-null): nested-object first,
|
|
418
|
-
// array-of-objects next, scalar leaf as the always-matching fallthrough.
|
|
304
|
+
// First builder returning non-null wins; leafRow always matches.
|
|
419
305
|
const ROW_BUILDERS = [nestedObjectRows, arrayOfObjectsRows, leafRow];
|
|
420
306
|
|
|
421
307
|
/**
|
|
422
|
-
*
|
|
423
|
-
*
|
|
424
|
-
*
|
|
425
|
-
*
|
|
426
|
-
* Arrays of objects (`requiredChecks[]`, `routes[]`, `bundles[]`) are emitted
|
|
427
|
-
* as a single row whose Key column carries a `[]` suffix; the item shape is
|
|
428
|
-
* captured in the Description cell. This keeps the output legible without
|
|
429
|
-
* exploding into per-item-property rows.
|
|
430
|
-
*
|
|
431
|
-
* @param {object} node Schema node to flatten.
|
|
432
|
-
* @param {string[]} pathParts Dot-path accumulator.
|
|
433
|
-
* @param {Set<string>} required Required-property names on the parent.
|
|
308
|
+
* @param {object} node
|
|
309
|
+
* @param {string[]} pathParts
|
|
310
|
+
* @param {Set<string>} required
|
|
434
311
|
* @returns {Array<{key:string, required:string, type:string, def:string, description:string}>}
|
|
435
312
|
*/
|
|
436
313
|
function flattenObject(node, pathParts, required) {
|
|
@@ -463,8 +340,6 @@ function flattenObject(node, pathParts, required) {
|
|
|
463
340
|
}
|
|
464
341
|
|
|
465
342
|
/**
|
|
466
|
-
* Render the Markdown body for one top-level section.
|
|
467
|
-
*
|
|
468
343
|
* @param {object} schema
|
|
469
344
|
* @param {string} topKey
|
|
470
345
|
* @returns {string}
|
|
@@ -508,8 +383,6 @@ function renderSection(schema, topKey) {
|
|
|
508
383
|
}
|
|
509
384
|
|
|
510
385
|
/**
|
|
511
|
-
* Render the full bounded-region body (excluding the markers themselves).
|
|
512
|
-
*
|
|
513
386
|
* @param {object} schema
|
|
514
387
|
* @returns {string}
|
|
515
388
|
*/
|
|
@@ -533,14 +406,10 @@ function renderRegion(schema) {
|
|
|
533
406
|
}
|
|
534
407
|
|
|
535
408
|
/**
|
|
536
|
-
*
|
|
537
|
-
*
|
|
538
|
-
* trailing horizontal rule (the first `---` after that heading) so the
|
|
539
|
-
* generated reference lands before the hand-authored per-section docs.
|
|
540
|
-
* If no anchor is found, prepend the markers above the first `## ` heading.
|
|
541
|
-
*
|
|
409
|
+
* Absent markers are inserted after the "## Top-level shape" block's `---`,
|
|
410
|
+
* else above the first `## ` heading, else appended.
|
|
542
411
|
* @param {string} original
|
|
543
|
-
* @param {string} body
|
|
412
|
+
* @param {string} body
|
|
544
413
|
* @returns {string}
|
|
545
414
|
*/
|
|
546
415
|
function spliceRegion(original, body) {
|
|
@@ -564,11 +433,9 @@ function spliceRegion(original, body) {
|
|
|
564
433
|
);
|
|
565
434
|
}
|
|
566
435
|
|
|
567
|
-
// Markers absent — insert them after the "## Top-level shape" block.
|
|
568
436
|
const anchor = '## Top-level shape';
|
|
569
437
|
const anchorIdx = original.indexOf(anchor);
|
|
570
438
|
if (anchorIdx !== -1) {
|
|
571
|
-
// Find the next `---` separator after the anchor.
|
|
572
439
|
const ruleIdx = original.indexOf('\n---\n', anchorIdx);
|
|
573
440
|
if (ruleIdx !== -1) {
|
|
574
441
|
const insertAt = ruleIdx + '\n---\n'.length;
|
|
@@ -579,7 +446,6 @@ function spliceRegion(original, body) {
|
|
|
579
446
|
}
|
|
580
447
|
}
|
|
581
448
|
|
|
582
|
-
// Fallback: insert above the first `## ` heading.
|
|
583
449
|
const headingMatch = original.match(/^## /m);
|
|
584
450
|
if (headingMatch && headingMatch.index !== undefined) {
|
|
585
451
|
const before = original.slice(0, headingMatch.index);
|
|
@@ -588,18 +454,12 @@ function spliceRegion(original, body) {
|
|
|
588
454
|
return `${before}${block}${after}`;
|
|
589
455
|
}
|
|
590
456
|
|
|
591
|
-
// Last-ditch: append.
|
|
592
457
|
return `${original}\n${REGION_BEGIN}\n${body}\n${REGION_END}\n`;
|
|
593
458
|
}
|
|
594
459
|
|
|
595
460
|
/**
|
|
596
|
-
*
|
|
597
|
-
*
|
|
598
|
-
*
|
|
599
|
-
* The JSON artifacts compare canonically (see the module header); the
|
|
600
|
-
* Markdown artifact compares raw, because its region is spliced into
|
|
601
|
-
* hand-authored prose that must survive byte-for-byte.
|
|
602
|
-
*
|
|
461
|
+
* The Markdown artifact compares raw: its hand-authored prose must survive
|
|
462
|
+
* byte-for-byte.
|
|
603
463
|
* @param {{ schema?: object, schemaPath?: string, referencePath?: string,
|
|
604
464
|
* docPath?: string }} [opts]
|
|
605
465
|
* @returns {Array<{ name: string, file: string, generated: string,
|
|
@@ -1,34 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `.agents/audit-checklists/<lens>.md`. The distillation logic is the pure
|
|
8
|
-
* `lib/audit-suite/lens-checklist.js` seam; this entry point owns only the
|
|
9
|
-
* file read/write/prune and the `--check` drift gate.
|
|
10
|
-
*
|
|
11
|
-
* Why (Epic #4405 — shift-left audit): the audit lenses used to surface their
|
|
12
|
-
* concerns only when `/audit-<lens>` ran. These checklists move the concerns to
|
|
13
|
-
* the innermost, write-time tier as committed build artifacts, gated for
|
|
14
|
-
* staleness by `npm run docs:check` exactly like every other generated doc so
|
|
15
|
-
* they can never silently drift from their source workflow.
|
|
16
|
-
*
|
|
17
|
-
* The lens taxonomy is the SSOT `AUDIT_LENSES` list. A lens whose
|
|
18
|
-
* `audit-<lens>.md` workflow is absent produces **no** checklist and is
|
|
19
|
-
* reported (never a silent skip). Stray `.md` files under the checklist
|
|
20
|
-
* directory that no longer map to a lens are pruned in write mode and flagged
|
|
21
|
-
* in `--check` mode, keeping the directory a pure function of its sources.
|
|
22
|
-
*
|
|
23
|
-
* Modes:
|
|
24
|
-
* (default) — writes one `<lens>.md` per lens with a workflow, prunes
|
|
25
|
-
* strays, reports lenses missing a workflow.
|
|
26
|
-
* --check — exits 0 when every on-disk file matches the freshly generated
|
|
27
|
-
* content and no strays exist, throws (→ exit 1) otherwise.
|
|
28
|
-
*
|
|
29
|
-
* Per `.agents/rules/orchestration-error-handling.md`, unrecoverable failures
|
|
30
|
-
* surface via `throw new Error(...)` so `runAsCli` maps the throw to
|
|
31
|
-
* `process.exit(1)` deterministically (no `Logger.fatal`).
|
|
3
|
+
* Distils each `audit-<lens>.md` workflow into a committed write-time
|
|
4
|
+
* checklist under `.agents/audit-checklists/`. The directory is a pure
|
|
5
|
+
* function of its sources: strays are pruned (flagged under `--check`), and a
|
|
6
|
+
* lens with no workflow is reported, never silently skipped.
|
|
32
7
|
*/
|
|
33
8
|
|
|
34
9
|
import fs from 'node:fs';
|
|
@@ -47,12 +22,7 @@ const WORKFLOWS_DIR = path.join(PROJECT_ROOT, '.agents', 'workflows');
|
|
|
47
22
|
const CHECKLISTS_DIR = path.join(PROJECT_ROOT, '.agents', 'audit-checklists');
|
|
48
23
|
|
|
49
24
|
/**
|
|
50
|
-
*
|
|
51
|
-
* workflow-existence predicate and a reader. A lens whose workflow is absent
|
|
52
|
-
* yields no checklist and is recorded in `missing` (never silently skipped).
|
|
53
|
-
* Kept side-effect-free so it is unit-testable with fabricated inputs.
|
|
54
|
-
*
|
|
55
|
-
* @param {ReadonlyArray<string>} lenses — canonical lens names.
|
|
25
|
+
* @param {ReadonlyArray<string>} lenses
|
|
56
26
|
* @param {(lens: string) => boolean} workflowExists
|
|
57
27
|
* @param {(lens: string) => string} readWorkflow
|
|
58
28
|
* @returns {{ expected: Map<string, string>, missing: string[] }}
|
|
@@ -71,17 +41,11 @@ export function planChecklists(lenses, workflowExists, readWorkflow) {
|
|
|
71
41
|
}
|
|
72
42
|
|
|
73
43
|
/**
|
|
74
|
-
* Build the full expected checklist set from the lens taxonomy and the on-disk
|
|
75
|
-
* workflow bodies, plus the strays (on-disk checklist files mapping to no
|
|
76
|
-
* current lens).
|
|
77
|
-
*
|
|
78
44
|
* @returns {{
|
|
79
45
|
* expected: Map<string, string>,
|
|
80
46
|
* missing: string[],
|
|
81
47
|
* strays: string[],
|
|
82
|
-
* }}
|
|
83
|
-
* content; `missing` lists lenses with no `audit-<lens>.md`; `strays` lists
|
|
84
|
-
* on-disk checklist basenames that map to no current lens.
|
|
48
|
+
* }}
|
|
85
49
|
*/
|
|
86
50
|
export function buildExpected({
|
|
87
51
|
fsImpl = fs,
|
|
@@ -105,10 +69,10 @@ export function buildExpected({
|
|
|
105
69
|
}
|
|
106
70
|
|
|
107
71
|
/**
|
|
108
|
-
* @param {string} basename
|
|
72
|
+
* @param {string} basename
|
|
109
73
|
* @param {string} [checklistsDir]
|
|
110
74
|
* @param {string} [projectRoot]
|
|
111
|
-
* @returns {string}
|
|
75
|
+
* @returns {string}
|
|
112
76
|
*/
|
|
113
77
|
function relChecklist(
|
|
114
78
|
basename,
|
|
@@ -122,14 +86,6 @@ function relChecklist(
|
|
|
122
86
|
}
|
|
123
87
|
|
|
124
88
|
/**
|
|
125
|
-
* The generator core, extracted from the CLI shell so both modes — the
|
|
126
|
-
* `--check` drift gate and the write/prune pass — are reachable without
|
|
127
|
-
* touching the real `.agents/audit-checklists` tree.
|
|
128
|
-
*
|
|
129
|
-
* Every seam on the optional final `deps` parameter defaults to the real
|
|
130
|
-
* implementation (`.agents/rules/test-seams.md` rules 1-2, 4), so `main` and
|
|
131
|
-
* `npm run docs:check` are unchanged.
|
|
132
|
-
*
|
|
133
89
|
* @param {string[]} [argv]
|
|
134
90
|
* @param {{
|
|
135
91
|
* fsImpl?: typeof fs,
|