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
|
@@ -2,58 +2,24 @@
|
|
|
2
2
|
/* node:coverage ignore file */
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* plan-context.js —
|
|
5
|
+
* plan-context.js — build the `/mandrel-plan` authoring-context envelope from
|
|
6
|
+
* exactly one entry form (`--seed`, `--seed-file`, `--tickets`, `--amends`),
|
|
7
|
+
* write it with `stories.template.json` under `<tempRoot>/plan-<slug>/`
|
|
8
|
+
* (where `plan-persist.js` discovers the `--tickets` source ids), and print a
|
|
9
|
+
* compact JSON digest as the only stdout.
|
|
6
10
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Two operator modes (exactly one is required):
|
|
10
|
-
*
|
|
11
|
-
* --seed "<text>" Chat/text ideation. Dup search runs off the
|
|
12
|
-
* raw seed; envelope carries `seed`.
|
|
13
|
-
*
|
|
14
|
-
* --seed-file <path> Same as --seed, but the corpus is read from
|
|
15
|
-
* disk (audit-to-stories handoff, notes).
|
|
16
|
-
*
|
|
17
|
-
* --tickets 123[,456…] Analyze existing issue(s) into proper
|
|
18
|
-
* Stories. Envelope carries `sourceTickets[]`.
|
|
19
|
-
*
|
|
20
|
-
* --amends 123 | #123 Amendment (delta) planning. Composes a DELTA
|
|
21
|
-
* envelope from the prior Story's body, its
|
|
22
|
-
* acceptance criteria, and its delivered file map
|
|
23
|
-
* instead of re-interrogating the repo from
|
|
24
|
-
* scratch (Story #4741). Envelope carries `amends`.
|
|
25
|
-
*
|
|
26
|
-
* Flags:
|
|
27
|
-
* --out <path> Write the envelope to <path> (parent dirs created).
|
|
28
|
-
* `/mandrel-plan` points this at `<plan-dir>/plan-context.json`,
|
|
29
|
-
* which is where `plan-persist.js` auto-discovers the
|
|
30
|
-
* `--tickets` source ids from (Story #4554). Without a
|
|
31
|
-
* captured envelope persist cannot know a `--tickets` run
|
|
32
|
-
* happened, and superseding degrades to the
|
|
33
|
-
* `--source-tickets` flag. With --out, stdout carries a
|
|
34
|
-
* compact digest naming the artifact instead of the full
|
|
35
|
-
* envelope (Story #4708 script-output contract).
|
|
36
|
-
* --pretty Pretty-print the JSON envelope (no-op with --out).
|
|
37
|
-
*
|
|
38
|
-
* stdout is reserved for a single JSON payload (Story #2278 discipline) —
|
|
39
|
-
* the envelope, or the digest when --out captures it:
|
|
40
|
-
* `routeAllOutputToStderr()` runs before any pipeline code so the stream
|
|
41
|
-
* is unconditionally parseable by `JSON.parse`.
|
|
42
|
-
*
|
|
43
|
-
* Exit codes:
|
|
44
|
-
* 0 — envelope emitted.
|
|
45
|
-
* 1 — fatal error (see stderr).
|
|
11
|
+
* Exit codes: 0 envelope emitted; 1 fatal.
|
|
46
12
|
*/
|
|
47
13
|
|
|
48
|
-
//
|
|
49
|
-
// first import so the check runs before any third-party-importing sibling
|
|
50
|
-
// module is evaluated (Story #3432).
|
|
14
|
+
// Must be the first import: fail fast before any third-party import runs.
|
|
51
15
|
import './lib/runtime-deps/ensure-installed.js';
|
|
52
16
|
import { mkdir, writeFile } from 'node:fs/promises';
|
|
53
17
|
import path from 'node:path';
|
|
54
18
|
import { parseArgs } from 'node:util';
|
|
55
19
|
import { runAsCli } from './lib/cli-utils.js';
|
|
56
20
|
import {
|
|
21
|
+
getPaths,
|
|
22
|
+
PROJECT_ROOT,
|
|
57
23
|
resolveConfig,
|
|
58
24
|
validateOrchestrationConfig,
|
|
59
25
|
} from './lib/config-resolver.js';
|
|
@@ -66,9 +32,63 @@ import {
|
|
|
66
32
|
import { recordPlanInvocation } from './lib/orchestration/plan-metrics.js';
|
|
67
33
|
import { createProvider } from './lib/provider-factory.js';
|
|
68
34
|
|
|
35
|
+
const PLAN_SLUG_MAX_LENGTH = 48;
|
|
36
|
+
|
|
69
37
|
/**
|
|
70
|
-
*
|
|
38
|
+
* Deliberately lossy: a handle, not an identity — the same seed reuses (and
|
|
39
|
+
* overwrites) the same directory.
|
|
71
40
|
*
|
|
41
|
+
* @param {string} raw
|
|
42
|
+
* @returns {string} `plan` when nothing survives.
|
|
43
|
+
*/
|
|
44
|
+
export function slugifyPlanLabel(raw) {
|
|
45
|
+
const slug = String(raw ?? '')
|
|
46
|
+
.toLowerCase()
|
|
47
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
48
|
+
.replace(/^-+|-+$/g, '')
|
|
49
|
+
.slice(0, PLAN_SLUG_MAX_LENGTH)
|
|
50
|
+
.replace(/-+$/, '');
|
|
51
|
+
return slug === '' ? 'plan' : slug;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Envelope path when no `--out` is given. Always written, because persist
|
|
56
|
+
* discovers source ids and the template from this directory.
|
|
57
|
+
*
|
|
58
|
+
* @param {object} args
|
|
59
|
+
* @param {string} args.mode
|
|
60
|
+
* @param {string} [args.seedText]
|
|
61
|
+
* @param {string} [args.seedFilePath]
|
|
62
|
+
* @param {number[]} [args.ticketIds]
|
|
63
|
+
* @param {number} [args.amendsId]
|
|
64
|
+
* @param {object} [args.config]
|
|
65
|
+
* @param {string} [args.cwd]
|
|
66
|
+
* @returns {string} Absolute path.
|
|
67
|
+
*/
|
|
68
|
+
export function resolveDefaultOutPath({
|
|
69
|
+
mode,
|
|
70
|
+
seedText,
|
|
71
|
+
seedFilePath,
|
|
72
|
+
ticketIds,
|
|
73
|
+
amendsId,
|
|
74
|
+
config,
|
|
75
|
+
cwd = PROJECT_ROOT,
|
|
76
|
+
}) {
|
|
77
|
+
const byMode = {
|
|
78
|
+
amends: () => `amends-${amendsId}`,
|
|
79
|
+
tickets: () => `tickets-${(ticketIds ?? []).join('-')}`,
|
|
80
|
+
'seed-file': () => path.parse(String(seedFilePath ?? '')).name,
|
|
81
|
+
};
|
|
82
|
+
const label = (byMode[mode] ?? (() => String(seedText ?? '')))();
|
|
83
|
+
return path.resolve(
|
|
84
|
+
cwd,
|
|
85
|
+
getPaths(config).tempRoot,
|
|
86
|
+
`plan-${slugifyPlanLabel(label)}`,
|
|
87
|
+
'plan-context.json',
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
72
92
|
* @param {string} raw
|
|
73
93
|
* @returns {number[]}
|
|
74
94
|
*/
|
|
@@ -90,8 +110,6 @@ export function parseTicketIds(raw) {
|
|
|
90
110
|
}
|
|
91
111
|
|
|
92
112
|
/**
|
|
93
|
-
* Parse a single `--amends` id, tolerating a leading `#` (`#123` or `123`).
|
|
94
|
-
*
|
|
95
113
|
* @param {string} raw
|
|
96
114
|
* @returns {number}
|
|
97
115
|
*/
|
|
@@ -109,9 +127,6 @@ export function parseAmendsId(raw) {
|
|
|
109
127
|
}
|
|
110
128
|
|
|
111
129
|
/**
|
|
112
|
-
* Build the envelope and write it to `stdout` as a single JSON line
|
|
113
|
-
* (or pretty-printed with --pretty). Exported for tests.
|
|
114
|
-
*
|
|
115
130
|
* @param {object} args
|
|
116
131
|
* @returns {Promise<object>} the emitted envelope.
|
|
117
132
|
*/
|
|
@@ -145,14 +160,23 @@ export async function emitPlanContext({
|
|
|
145
160
|
const json = pretty
|
|
146
161
|
? JSON.stringify(envelope, null, 2)
|
|
147
162
|
: JSON.stringify(envelope);
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
163
|
+
const resolvedOut =
|
|
164
|
+
outPath ??
|
|
165
|
+
resolveDefaultOutPath({
|
|
166
|
+
mode,
|
|
167
|
+
seedText,
|
|
168
|
+
seedFilePath,
|
|
169
|
+
ticketIds,
|
|
170
|
+
amendsId,
|
|
171
|
+
config,
|
|
172
|
+
cwd: cwd ?? undefined,
|
|
173
|
+
});
|
|
174
|
+
{
|
|
175
|
+
// The ~40KB envelope goes to disk; stdout carries only a digest so it
|
|
176
|
+
// does not ride resident in the transcript.
|
|
177
|
+
await writeEnvelopeFile(resolvedOut, json);
|
|
178
|
+
await writeStoriesTemplateFile(resolvedOut, envelope);
|
|
179
|
+
const resolved = path.resolve(resolvedOut);
|
|
156
180
|
const digest = {
|
|
157
181
|
digest: 'plan-context',
|
|
158
182
|
mode: envelope.mode,
|
|
@@ -164,10 +188,7 @@ export async function emitPlanContext({
|
|
|
164
188
|
bytes: Buffer.byteLength(json, 'utf8'),
|
|
165
189
|
sourceTickets: (envelope.sourceTickets ?? []).map((t) => t.id),
|
|
166
190
|
duplicates: (envelope.duplicates ?? []).length,
|
|
167
|
-
// Advisory only
|
|
168
|
-
// /prototype offer — advisory, never an automatic reroute. It rides the
|
|
169
|
-
// digest because with `--out` the digest is the only thing the planner
|
|
170
|
-
// reads.
|
|
191
|
+
// Advisory signals only, never a reroute.
|
|
171
192
|
complexitySignals: envelope.complexitySignals
|
|
172
193
|
? {
|
|
173
194
|
artifactCount: envelope.complexitySignals.artifactCount,
|
|
@@ -176,25 +197,18 @@ export async function emitPlanContext({
|
|
|
176
197
|
uiSurface: envelope.complexitySignals.uiSurface ?? null,
|
|
177
198
|
}
|
|
178
199
|
: null,
|
|
179
|
-
//
|
|
180
|
-
// truncated, and the digest names what was cut.
|
|
200
|
+
// Names what was cut when the envelope exceeded the context ceiling.
|
|
181
201
|
truncated: envelope.truncated ?? null,
|
|
182
202
|
amends: envelope.amends ? { id: envelope.amends.id } : null,
|
|
183
203
|
};
|
|
184
204
|
stdout.write(`${JSON.stringify(digest)}\n`);
|
|
185
|
-
} else {
|
|
186
|
-
stdout.write(`${json}\n`);
|
|
187
205
|
}
|
|
188
206
|
return envelope;
|
|
189
207
|
}
|
|
190
208
|
|
|
191
209
|
/**
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
* Writing is part of emitting, not a best-effort extra: a failed write means
|
|
196
|
-
* persist will silently see no source tickets, so it throws rather than
|
|
197
|
-
* warning past the problem.
|
|
210
|
+
* Throws on failure: a missing envelope makes persist silently see no source
|
|
211
|
+
* tickets.
|
|
198
212
|
*
|
|
199
213
|
* @param {string} outPath
|
|
200
214
|
* @param {string} json
|
|
@@ -213,19 +227,11 @@ async function writeEnvelopeFile(outPath, json) {
|
|
|
213
227
|
}
|
|
214
228
|
|
|
215
229
|
/**
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* `stories.json` and fills the placeholders; no step of the authoring path
|
|
219
|
-
* requires reading `story-body.js` source. Written whenever `--out` is
|
|
220
|
-
* passed, and throwing on failure for the same reason the envelope write
|
|
221
|
-
* does: a silently missing template re-opens the format-discovery loop it
|
|
222
|
-
* exists to close. The envelope's advisory `complexitySignals` are threaded
|
|
223
|
-
* through so the skeleton's `changes[]` arrive pre-resolved to
|
|
224
|
-
* creates-vs-refactors against the repo snapshot (Story #4723).
|
|
230
|
+
* Write the ready-to-fill authoring template beside the envelope, with
|
|
231
|
+
* `changes[]` pre-resolved from `complexitySignals`. Throws on failure.
|
|
225
232
|
*
|
|
226
|
-
* @param {string} outPath
|
|
227
|
-
*
|
|
228
|
-
* @param {object} [envelope] The emitted plan-context envelope.
|
|
233
|
+
* @param {string} outPath
|
|
234
|
+
* @param {object} [envelope]
|
|
229
235
|
*/
|
|
230
236
|
async function writeStoriesTemplateFile(outPath, envelope = {}) {
|
|
231
237
|
const resolved = path.resolve(
|
|
@@ -294,18 +300,14 @@ async function main() {
|
|
|
294
300
|
mode = 'seed';
|
|
295
301
|
}
|
|
296
302
|
|
|
297
|
-
// stdout is reserved for the JSON
|
|
298
|
-
// could land on stdout to stderr BEFORE any pipeline code runs
|
|
299
|
-
// (Story #2278 — the same stdout-purity guarantee the retired pipeline
|
|
300
|
-
// gives; this CLI is emit-only so the flip is unconditional).
|
|
303
|
+
// stdout is reserved for the JSON digest.
|
|
301
304
|
routeAllOutputToStderr();
|
|
302
305
|
|
|
303
306
|
let config;
|
|
304
307
|
let settings;
|
|
305
308
|
try {
|
|
306
309
|
config = resolveConfig();
|
|
307
|
-
//
|
|
308
|
-
// friends consume: `{ baseBranch, paths, planning, docsContextFiles }`.
|
|
310
|
+
// The bag shape `buildAuthoringContext` consumes.
|
|
309
311
|
settings = {
|
|
310
312
|
baseBranch: config.project?.baseBranch,
|
|
311
313
|
paths: config.project?.paths,
|
|
@@ -346,14 +348,17 @@ runAsCli(import.meta.url, main, {
|
|
|
346
348
|
invocation:
|
|
347
349
|
'node .agents/scripts/plan-context.js (--seed "<text>" | --seed-file <path> | --tickets <ids> | --amends <id>) [--out <path>] [--pretty]',
|
|
348
350
|
summary:
|
|
349
|
-
'Build the /mandrel-plan authoring-context envelope on stdout. Exactly one entry form must be supplied.',
|
|
351
|
+
'Build the /mandrel-plan authoring-context envelope. Writes it (and stories.template.json) under <tempRoot>/plan-<slug>/ and prints the digest on stdout. Exactly one entry form must be supplied.',
|
|
350
352
|
flags: [
|
|
351
353
|
['--seed "<text>"', 'Inline seed prose.'],
|
|
352
354
|
['--seed-file <path>', 'Seed document to read.'],
|
|
353
355
|
['--tickets <ids>', 'Comma-separated existing ticket ids to re-plan.'],
|
|
354
356
|
['--amends <id>', 'Amend the Spec of an existing Story.'],
|
|
355
|
-
[
|
|
356
|
-
|
|
357
|
+
[
|
|
358
|
+
'--out <path>',
|
|
359
|
+
'Override the derived <tempRoot>/plan-<slug>/plan-context.json path.',
|
|
360
|
+
],
|
|
361
|
+
['--pretty', 'Pretty-print the written JSON envelope.'],
|
|
357
362
|
],
|
|
358
363
|
},
|
|
359
364
|
});
|
|
@@ -1,45 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* plan-critics.js —
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* evaluates the pre-mortem dispatch condition against the draft
|
|
10
|
-
* `stories.json` and prints the verdict as JSON on stdout so the workflow can
|
|
11
|
-
* act on it — dispatching a fresh-context critic sub-agent and folding its
|
|
12
|
-
* findings into a re-author round **before** the plan is persisted.
|
|
13
|
-
*
|
|
14
|
-
* The pre-mortem's external-dependency arm (Story #4700) needs the repo's own
|
|
15
|
-
* manifests to tell an external scoped package from a local one, so this CLI
|
|
16
|
-
* reads them (`collectRepoPackages`) and passes the specifier set down — the
|
|
17
|
-
* pure evaluation modules never touch the filesystem.
|
|
18
|
-
*
|
|
19
|
-
* Why here and nowhere else. The evaluation used to run inside
|
|
20
|
-
* `run-plan-persist.js`, after authoring was finished and immediately before
|
|
21
|
-
* `createStoryIssues` — the one point in the flow where nothing can act on a
|
|
22
|
-
* `dispatch: true` verdict, because the artifacts are about to become live
|
|
23
|
-
* issues. It logged the verdict and moved on. This CLI is now the **single**
|
|
24
|
-
* evaluation point, sited where a re-author loop actually exists.
|
|
25
|
-
*
|
|
26
|
-
* Advisory by contract: a `dispatch: true` verdict routes work to the
|
|
27
|
-
* workflow, it does not gate the run. This CLI exits 0 on any verdict; only a
|
|
28
|
-
* usage/IO error is a failure. Every `dispatch: false` decision is recorded to
|
|
29
|
-
* the plan-metrics ledger (`appendCriticSkip`) so under-firing stays auditable.
|
|
30
|
-
*
|
|
31
|
-
* CLI:
|
|
32
|
-
* --stories <file> Required. The draft Story ticket array (JSON).
|
|
33
|
-
* --tech-spec <file> Optional. Shared Tech Spec, folded into the plan
|
|
34
|
-
* text the external-dependency probe scans.
|
|
35
|
-
*
|
|
36
|
-
* stdout is reserved for the verdict JSON (Story #2278 discipline):
|
|
37
|
-
*
|
|
38
|
-
* {
|
|
39
|
-
* "premortem": { "critic": "pre-mortem", "dispatch": true, "reasons": [...] }
|
|
40
|
-
* }
|
|
41
|
-
*
|
|
42
|
-
* Human-readable log lines go to stderr, matching the sibling `plan-persist`.
|
|
4
|
+
* plan-critics.js — operator-run pre-mortem dispatch verdict for a draft plan,
|
|
5
|
+
* evaluated between Author and Persist, where a re-author loop can still act
|
|
6
|
+
* on it. Advisory: exits 0 on any verdict; each skip is recorded to the
|
|
7
|
+
* plan-metrics ledger so under-firing stays auditable. stdout carries only
|
|
8
|
+
* `{ "premortem": { critic, dispatch, reasons } }`.
|
|
43
9
|
*
|
|
44
10
|
* Exit codes: 0 success (any verdict); 1 usage/IO error.
|
|
45
11
|
*/
|
|
@@ -61,10 +27,8 @@ const CLI_OPTIONS = {
|
|
|
61
27
|
|
|
62
28
|
const USAGE = 'Usage: plan-critics.js --stories <file> [--tech-spec <file>]';
|
|
63
29
|
|
|
64
|
-
/** The `cli` discriminator every ledger record from this surface carries. */
|
|
65
30
|
export const PLAN_CRITICS_CLI = 'plan-critics';
|
|
66
31
|
|
|
67
|
-
/** Dependency maps a manifest can declare a package under. */
|
|
68
32
|
const DEP_MAP_KEYS = [
|
|
69
33
|
'dependencies',
|
|
70
34
|
'devDependencies',
|
|
@@ -72,7 +36,6 @@ const DEP_MAP_KEYS = [
|
|
|
72
36
|
'peerDependencies',
|
|
73
37
|
];
|
|
74
38
|
|
|
75
|
-
/** Add a manifest's own name and every declared dependency to `names`. */
|
|
76
39
|
function collectPackageIdentity(names, pkg) {
|
|
77
40
|
if (typeof pkg?.name === 'string') names.add(pkg.name);
|
|
78
41
|
for (const key of DEP_MAP_KEYS) {
|
|
@@ -92,7 +55,6 @@ async function readJsonIfPresent(filePath) {
|
|
|
92
55
|
}
|
|
93
56
|
}
|
|
94
57
|
|
|
95
|
-
/** Normalize the `workspaces` field (array or `{ packages: [] }`) to a list. */
|
|
96
58
|
function workspacePatterns(pkg) {
|
|
97
59
|
const ws = pkg?.workspaces;
|
|
98
60
|
if (Array.isArray(ws)) return ws;
|
|
@@ -101,9 +63,7 @@ function workspacePatterns(pkg) {
|
|
|
101
63
|
}
|
|
102
64
|
|
|
103
65
|
/**
|
|
104
|
-
*
|
|
105
|
-
* common shapes — a `dir/*` glob (expanded one level) and a literal path — and
|
|
106
|
-
* never throws: an unreadable base directory is skipped.
|
|
66
|
+
* Handles `dir/*` (one level) and literal paths; never throws.
|
|
107
67
|
*
|
|
108
68
|
* @param {string} rootDir
|
|
109
69
|
* @param {string[]} patterns
|
|
@@ -134,11 +94,9 @@ async function resolveWorkspaceManifestPaths(rootDir, patterns) {
|
|
|
134
94
|
}
|
|
135
95
|
|
|
136
96
|
/**
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* plus every workspace manifest's. Best-effort: a repo with no `package.json`
|
|
141
|
-
* yields `[]`, which only widens what the probe treats as external.
|
|
97
|
+
* Package specifiers the repo's own manifests (root + workspaces) declare, so
|
|
98
|
+
* the external-dependency probe can tell local from external. No manifest
|
|
99
|
+
* yields `[]`, which only widens what counts as external.
|
|
142
100
|
*
|
|
143
101
|
* @param {{ rootDir?: string }} [opts]
|
|
144
102
|
* @returns {Promise<string[]>}
|
|
@@ -160,8 +118,6 @@ export async function collectRepoPackages({ rootDir = process.cwd() } = {}) {
|
|
|
160
118
|
}
|
|
161
119
|
|
|
162
120
|
/**
|
|
163
|
-
* Read the draft artifacts the critics evaluate.
|
|
164
|
-
*
|
|
165
121
|
* @param {{ storiesPath: string, techSpecPath?: string|null }} paths
|
|
166
122
|
* @returns {Promise<{ tickets: object[], techSpecContent: string }>}
|
|
167
123
|
*/
|
|
@@ -188,9 +144,7 @@ export async function loadCriticArtifacts({
|
|
|
188
144
|
}
|
|
189
145
|
|
|
190
146
|
/**
|
|
191
|
-
*
|
|
192
|
-
* ledger write is best-effort by `appendCriticSkip`'s own contract — it can
|
|
193
|
-
* never fail the plan step.
|
|
147
|
+
* The ledger write is best-effort and never fails the plan step.
|
|
194
148
|
*
|
|
195
149
|
* @param {{ premortem: object }} verdict
|
|
196
150
|
* @param {object} config
|
|
@@ -221,10 +175,6 @@ export async function recordCriticSkips(
|
|
|
221
175
|
}
|
|
222
176
|
|
|
223
177
|
/**
|
|
224
|
-
* Load the artifacts, evaluate the pre-mortem, record a skip, and return the
|
|
225
|
-
* verdict. Exported as the CLI's whole body so tests drive it in-process with
|
|
226
|
-
* an explicit config and ledger seam.
|
|
227
|
-
*
|
|
228
178
|
* @param {{
|
|
229
179
|
* storiesPath: string,
|
|
230
180
|
* techSpecPath?: string|null,
|
|
@@ -232,10 +182,7 @@ export async function recordCriticSkips(
|
|
|
232
182
|
* knownPackages?: string[],
|
|
233
183
|
* append?: typeof appendCriticSkip,
|
|
234
184
|
* }} args
|
|
235
|
-
* @param {string[]} [args.knownPackages]
|
|
236
|
-
* manifests declare, forwarded to the pre-mortem external-dependency probe
|
|
237
|
-
* (Story #4700). `main()` resolves them via `collectRepoPackages`; tests may
|
|
238
|
-
* pass an explicit set or omit it (defaults to `[]`).
|
|
185
|
+
* @param {string[]} [args.knownPackages]
|
|
239
186
|
* @returns {Promise<{ premortem: object }>}
|
|
240
187
|
*/
|
|
241
188
|
export async function evaluateCriticArtifacts({
|
|
@@ -266,8 +213,7 @@ async function main() {
|
|
|
266
213
|
throw new Error(USAGE);
|
|
267
214
|
}
|
|
268
215
|
|
|
269
|
-
// stdout is reserved for the verdict JSON
|
|
270
|
-
// could land on stdout to stderr before any evaluation runs.
|
|
216
|
+
// stdout is reserved for the verdict JSON.
|
|
271
217
|
routeAllOutputToStderr();
|
|
272
218
|
|
|
273
219
|
const verdict = await evaluateCriticArtifacts({
|