mandrel 2.60.0 → 2.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/README.md +10 -10
- package/.agents/agents/story-worker.md +1 -1
- package/.agents/docs/agentrc-reference.json +4 -82
- package/.agents/docs/configuration.md +20 -87
- package/.agents/docs/workflows.md +1 -1
- package/.agents/instructions.md +1 -3
- package/.agents/rules/gherkin-standards.md +4 -0
- package/.agents/schemas/agentrc.schema.json +11 -486
- package/.agents/schemas/story-deliver-terminal.schema.json +10 -0
- package/.agents/schemas/validation-evidence.schema.json +2 -1
- package/.agents/scripts/README.md +14 -14
- package/.agents/scripts/acceptance-eval.js +32 -164
- package/.agents/scripts/agents-bootstrap-github.js +27 -129
- package/.agents/scripts/apply-quality-bootstrap.js +4 -40
- package/.agents/scripts/audit-baselines.js +6 -27
- package/.agents/scripts/audit-labels-bootstrap.js +5 -29
- package/.agents/scripts/audit-to-stories.js +91 -361
- package/.agents/scripts/boot-sweep.js +19 -72
- package/.agents/scripts/bootstrap.js +74 -395
- package/.agents/scripts/ceremony-derive.js +9 -45
- package/.agents/scripts/check-arch-cycles.js +14 -64
- package/.agents/scripts/check-baselines.js +8 -48
- package/.agents/scripts/check-context-budget.js +46 -172
- package/.agents/scripts/check-cyclomatic.js +12 -44
- package/.agents/scripts/check-dead-exports.js +13 -64
- package/.agents/scripts/check-doc-links.js +38 -186
- package/.agents/scripts/check-gherkin-corpus.js +24 -127
- package/.agents/scripts/check-test-temp-hygiene.js +28 -169
- package/.agents/scripts/coverage-capture.js +32 -99
- package/.agents/scripts/deliver-light.js +14 -101
- package/.agents/scripts/deliver-recover.js +6 -42
- package/.agents/scripts/deliver-run.js +36 -133
- package/.agents/scripts/diagnose-friction.js +24 -116
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/evidence-gate.js +23 -85
- package/.agents/scripts/file-ci-gap.js +10 -50
- package/.agents/scripts/generate-config-docs.js +30 -170
- package/.agents/scripts/generate-lens-checklists.js +8 -52
- package/.agents/scripts/generate-skills-index.js +14 -112
- package/.agents/scripts/generate-workflows-doc.js +10 -70
- package/.agents/scripts/git-cleanup.js +2 -34
- package/.agents/scripts/lib/Graph.js +24 -81
- package/.agents/scripts/lib/ITicketingProvider.js +47 -143
- package/.agents/scripts/lib/Logger.js +14 -76
- package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
- package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
- package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
- package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
- package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
- package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
- package/.agents/scripts/lib/audit-baselines/read.js +3 -16
- package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
- package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
- package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
- package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
- package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
- package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
- package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
- package/.agents/scripts/lib/audit-suite/findings.js +12 -52
- package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
- package/.agents/scripts/lib/audit-suite/index.js +1 -15
- package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
- package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
- package/.agents/scripts/lib/audit-suite/runner.js +13 -43
- package/.agents/scripts/lib/audit-suite/selector.js +49 -349
- package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
- package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
- package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
- package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
- package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
- package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
- package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
- package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
- package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
- package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
- package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
- package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
- package/.agents/scripts/lib/baseline-loader.js +12 -51
- package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
- package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
- package/.agents/scripts/lib/baselines/components.js +10 -61
- package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
- package/.agents/scripts/lib/baselines/crap-preview-incremental.js +5 -21
- package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
- package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
- package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
- package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
- package/.agents/scripts/lib/baselines/envelope.js +13 -129
- package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
- package/.agents/scripts/lib/baselines/git-base.js +23 -142
- package/.agents/scripts/lib/baselines/kernel.js +11 -111
- package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
- package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
- package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
- package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
- package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
- package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
- package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
- package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
- package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
- package/.agents/scripts/lib/baselines/path-canon.js +19 -128
- package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
- package/.agents/scripts/lib/baselines/reader.js +14 -107
- package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
- package/.agents/scripts/lib/baselines/scope.js +11 -135
- package/.agents/scripts/lib/baselines/writer.js +16 -149
- package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
- package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
- package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
- package/.agents/scripts/lib/bdd-step-index.js +26 -100
- package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
- package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
- package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
- package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
- package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
- package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
- package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
- package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
- package/.agents/scripts/lib/bootstrap/summary.js +1 -8
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
- package/.agents/scripts/lib/branch-name-guard.js +4 -23
- package/.agents/scripts/lib/changed-files.js +31 -143
- package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
- package/.agents/scripts/lib/checks/index.js +18 -101
- package/.agents/scripts/lib/checks/loop-health.js +11 -53
- package/.agents/scripts/lib/checks/state.js +16 -91
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
- package/.agents/scripts/lib/child-exec.js +39 -108
- package/.agents/scripts/lib/cli/standard-args.js +9 -116
- package/.agents/scripts/lib/cli-args.js +31 -146
- package/.agents/scripts/lib/cli-usage.js +5 -27
- package/.agents/scripts/lib/cli-utils.js +2 -12
- package/.agents/scripts/lib/close-validation/commands.js +13 -76
- package/.agents/scripts/lib/close-validation/gates.js +92 -331
- package/.agents/scripts/lib/close-validation/process.js +121 -151
- package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
- package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
- package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
- package/.agents/scripts/lib/close-validation/runner.js +53 -110
- package/.agents/scripts/lib/command-header.js +6 -28
- package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
- package/.agents/scripts/lib/config/baselines.js +3 -14
- package/.agents/scripts/lib/config/ci.js +8 -38
- package/.agents/scripts/lib/config/commands.js +1 -15
- package/.agents/scripts/lib/config/defaults.js +4 -33
- package/.agents/scripts/lib/config/delivery-routing.js +6 -35
- package/.agents/scripts/lib/config/explain.js +9 -80
- package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
- package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +2 -30
- package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
- package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
- package/.agents/scripts/lib/config/gates/index.js +2 -17
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
- package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
- package/.agents/scripts/lib/config/gates/shared.js +4 -64
- package/.agents/scripts/lib/config/github.js +4 -22
- package/.agents/scripts/lib/config/limits.js +4 -57
- package/.agents/scripts/lib/config/paths.js +2 -21
- package/.agents/scripts/lib/config/qa.js +4 -38
- package/.agents/scripts/lib/config/quality.js +76 -432
- package/.agents/scripts/lib/config/runners.js +12 -56
- package/.agents/scripts/lib/config/runtime.js +13 -57
- package/.agents/scripts/lib/config/shared.js +2 -16
- package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
- package/.agents/scripts/lib/config/temp-paths.js +40 -280
- package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
- package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
- package/.agents/scripts/lib/config-resolver.js +10 -52
- package/.agents/scripts/lib/config-schema-shared.js +1 -4
- package/.agents/scripts/lib/config-settings-schema-delivery.js +12 -294
- package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
- package/.agents/scripts/lib/config-settings-schema.js +37 -274
- package/.agents/scripts/lib/coverage-baseline.js +20 -110
- package/.agents/scripts/lib/coverage-capture-fullscope.js +12 -37
- package/.agents/scripts/lib/coverage-capture-incremental.js +12 -43
- package/.agents/scripts/lib/coverage-capture-usage.js +4 -24
- package/.agents/scripts/lib/coverage-capture.js +99 -224
- package/.agents/scripts/lib/coverage-utils.js +14 -79
- package/.agents/scripts/lib/cpu-pool.js +17 -123
- package/.agents/scripts/lib/crap-baseline-join.js +16 -88
- package/.agents/scripts/lib/crap-coordinates.js +6 -25
- package/.agents/scripts/lib/crap-engine.js +40 -153
- package/.agents/scripts/lib/crap-method-identity.js +16 -78
- package/.agents/scripts/lib/crap-utils.js +31 -155
- package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
- package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
- package/.agents/scripts/lib/dead-exports-knip.js +18 -56
- package/.agents/scripts/lib/dead-exports-mode.js +5 -24
- package/.agents/scripts/lib/degraded-mode.js +3 -26
- package/.agents/scripts/lib/dependency-parser.js +8 -40
- package/.agents/scripts/lib/dependency-version.js +13 -35
- package/.agents/scripts/lib/detect-package-manager.js +6 -36
- package/.agents/scripts/lib/doc-tiers.js +22 -126
- package/.agents/scripts/lib/duplicate-search.js +8 -72
- package/.agents/scripts/lib/env-loader.js +5 -27
- package/.agents/scripts/lib/error-redactor.js +6 -31
- package/.agents/scripts/lib/errors/index.js +2 -22
- package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
- package/.agents/scripts/lib/escomplex-kernel.js +21 -123
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +93 -419
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -151
- package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
- package/.agents/scripts/lib/findings/classify-finding.js +14 -69
- package/.agents/scripts/lib/findings/promote-finding.js +14 -112
- package/.agents/scripts/lib/findings/provenance-field.js +11 -52
- package/.agents/scripts/lib/findings/route-finding.js +37 -255
- package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
- package/.agents/scripts/lib/findings/severity.js +18 -104
- package/.agents/scripts/lib/format-generated-json.js +12 -44
- package/.agents/scripts/lib/full-suite-lock.js +160 -429
- package/.agents/scripts/lib/full-suite-queue.js +213 -0
- package/.agents/scripts/lib/gates/baseline-store.js +5 -9
- package/.agents/scripts/lib/gates/friction.js +1 -3
- package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
- package/.agents/scripts/lib/gh-exec.js +31 -259
- package/.agents/scripts/lib/git/cached-fetch.js +9 -52
- package/.agents/scripts/lib/git/sync-from-base.js +15 -107
- package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
- package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
- package/.agents/scripts/lib/git-utils.js +37 -161
- package/.agents/scripts/lib/github/framework-repo.js +8 -71
- package/.agents/scripts/lib/github-url.js +2 -17
- package/.agents/scripts/lib/import-graph.js +11 -38
- package/.agents/scripts/lib/install-cmd-parser.js +4 -13
- package/.agents/scripts/lib/json-utils.js +3 -18
- package/.agents/scripts/lib/label-constants.js +16 -111
- package/.agents/scripts/lib/label-taxonomy.js +4 -30
- package/.agents/scripts/lib/maintainability-engine.js +12 -80
- package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
- package/.agents/scripts/lib/maintainability-utils.js +16 -92
- package/.agents/scripts/lib/mandrel-catalog.js +12 -70
- package/.agents/scripts/lib/notifications/notifier.js +13 -38
- package/.agents/scripts/lib/npm-scripts.js +4 -23
- package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
- package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
- package/.agents/scripts/lib/observability/signal-validator.js +5 -37
- package/.agents/scripts/lib/observability/signals-writer.js +11 -121
- package/.agents/scripts/lib/observability/source-classifier.js +21 -203
- package/.agents/scripts/lib/observability/terse-result.js +14 -47
- package/.agents/scripts/lib/onboard/init-tail.js +13 -74
- package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
- package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
- package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +5 -75
- package/.agents/scripts/lib/orchestration/change-set.js +7 -36
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
- package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
- package/.agents/scripts/lib/orchestration/check-state.js +92 -0
- package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
- package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +42 -189
- package/.agents/scripts/lib/orchestration/code-review.js +24 -128
- package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
- package/.agents/scripts/lib/orchestration/complexity-gate.js +42 -214
- package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
- package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
- package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
- package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
- package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
- package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
- package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
- package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
- package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
- package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
- package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
- package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
- package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
- package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
- package/.agents/scripts/lib/orchestration/light-suitability.js +26 -231
- package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
- package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
- package/.agents/scripts/lib/orchestration/merge-queue.js +158 -0
- package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
- package/.agents/scripts/lib/orchestration/plan-context.js +52 -303
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
- package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
- package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
- package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
- package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
- package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +14 -78
- package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
- package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
- package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
- package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
- package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +49 -248
- package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +85 -368
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +8 -38
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +30 -190
- package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
- package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
- package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
- package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
- package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
- package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
- package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
- package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
- package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
- package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
- package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
- package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
- package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
- package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
- package/.agents/scripts/lib/orchestration/review-depth.js +12 -94
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
- package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
- package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
- package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
- package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
- package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
- package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
- package/.agents/scripts/lib/orchestration/run-epilogue.js +40 -199
- package/.agents/scripts/lib/orchestration/run-scoped-config.js +13 -81
- package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
- package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
- package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +190 -280
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +18 -80
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
- package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +183 -485
- package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
- package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +9 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
- package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +110 -290
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
- package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
- package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
- package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
- package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
- package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
- package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
- package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -201
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +43 -245
- package/.agents/scripts/lib/orchestration/story-init-envelope.js +4 -23
- package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
- package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
- package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -126
- package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
- package/.agents/scripts/lib/orchestration/ticket-validator.js +39 -181
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -250
- package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
- package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
- package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
- package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
- package/.agents/scripts/lib/path-security.js +3 -6
- package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
- package/.agents/scripts/lib/preflight-runner.js +13 -69
- package/.agents/scripts/lib/process-group.js +143 -0
- package/.agents/scripts/lib/project-root.js +2 -8
- package/.agents/scripts/lib/provider-factory.js +2 -25
- package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
- package/.agents/scripts/lib/qa/qa-session.js +15 -69
- package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
- package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
- package/.agents/scripts/lib/reserved-test-ids.js +9 -47
- package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
- package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
- package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
- package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
- package/.agents/scripts/lib/signals/detectors/common.js +12 -38
- package/.agents/scripts/lib/signals/index.js +2 -19
- package/.agents/scripts/lib/signals/schema.js +14 -109
- package/.agents/scripts/lib/signals/write.js +2 -11
- package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
- package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
- package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
- package/.agents/scripts/lib/single-story-sweep.js +14 -97
- package/.agents/scripts/lib/skills/parse-skill.js +13 -59
- package/.agents/scripts/lib/skills/skills-index.js +8 -29
- package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
- package/.agents/scripts/lib/source-extensions.js +11 -42
- package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
- package/.agents/scripts/lib/stdio-flush.js +9 -36
- package/.agents/scripts/lib/story-adjacency.js +8 -40
- package/.agents/scripts/lib/story-body/body-format-lints.js +22 -83
- package/.agents/scripts/lib/story-body/footer-block.js +11 -44
- package/.agents/scripts/lib/story-body/story-body.js +83 -358
- package/.agents/scripts/lib/temp-retention.js +42 -143
- package/.agents/scripts/lib/templates/decomposer-prompts.js +11 -65
- package/.agents/scripts/lib/test-env.js +12 -65
- package/.agents/scripts/lib/test-run-credit.js +10 -65
- package/.agents/scripts/lib/test-runner-contract.js +19 -74
- package/.agents/scripts/lib/test-temp.js +38 -184
- package/.agents/scripts/lib/test-tiers.js +12 -96
- package/.agents/scripts/lib/ticket-body-sections.js +21 -96
- package/.agents/scripts/lib/transpile.js +15 -74
- package/.agents/scripts/lib/util/concurrent-map.js +6 -25
- package/.agents/scripts/lib/util/parse-id-list.js +8 -34
- package/.agents/scripts/lib/util/poll-loop.js +8 -28
- package/.agents/scripts/lib/util/with-timeout.js +2 -11
- package/.agents/scripts/lib/validation-evidence.js +21 -96
- package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
- package/.agents/scripts/lib/wave-runner/live-probe.js +53 -221
- package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
- package/.agents/scripts/lib/workers/crap-worker.js +11 -64
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
- package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
- package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
- package/.agents/scripts/lib/workflow-closure.js +22 -105
- package/.agents/scripts/lib/workspace-provisioner.js +16 -54
- package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
- package/.agents/scripts/lib/worktree-manager.js +15 -40
- package/.agents/scripts/lint-issue-body.js +12 -68
- package/.agents/scripts/mandrel-update-preflight.js +10 -70
- package/.agents/scripts/merge-baseline.js +30 -104
- package/.agents/scripts/nav-registry-diff.js +22 -108
- package/.agents/scripts/notify.js +12 -69
- package/.agents/scripts/plan-context.js +27 -111
- package/.agents/scripts/plan-critics.js +12 -66
- package/.agents/scripts/plan-persist.js +31 -148
- package/.agents/scripts/plan-run-epilogue.js +11 -37
- package/.agents/scripts/pr-watch-with-update.js +76 -267
- package/.agents/scripts/providers/github/auth.js +3 -8
- package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
- package/.agents/scripts/providers/github/board-add.js +5 -21
- package/.agents/scripts/providers/github/branch-protection.js +11 -43
- package/.agents/scripts/providers/github/cache.js +2 -14
- package/.agents/scripts/providers/github/comments.js +7 -40
- package/.agents/scripts/providers/github/compose.js +3 -19
- package/.agents/scripts/providers/github/errors.js +22 -125
- package/.agents/scripts/providers/github/issues.js +31 -123
- package/.agents/scripts/providers/github/labels.js +24 -124
- package/.agents/scripts/providers/github/mappers.js +5 -27
- package/.agents/scripts/providers/github/merge-methods.js +3 -22
- package/.agents/scripts/providers/github/project-board.js +2 -17
- package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
- package/.agents/scripts/providers/github/request-helpers.js +5 -32
- package/.agents/scripts/providers/github/search-budget.js +9 -39
- package/.agents/scripts/providers/github/search-query.js +5 -26
- package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
- package/.agents/scripts/providers/github/sub-issues.js +7 -36
- package/.agents/scripts/providers/github/tickets.js +32 -134
- package/.agents/scripts/providers/github.js +18 -59
- package/.agents/scripts/prune-plan-run-labels.js +12 -46
- package/.agents/scripts/quality-preview.js +35 -220
- package/.agents/scripts/resolve-doc-tiers.js +3 -26
- package/.agents/scripts/resolve-stories.js +16 -67
- package/.agents/scripts/resync-status-column.js +6 -25
- package/.agents/scripts/run-tests.js +29 -104
- package/.agents/scripts/single-story-close.js +23 -135
- package/.agents/scripts/single-story-confirm-merge.js +32 -139
- package/.agents/scripts/single-story-init.js +47 -209
- package/.agents/scripts/stories-wave-tick.js +102 -472
- package/.agents/scripts/sync-agentrc.js +3 -21
- package/.agents/scripts/sync-claude-agents.js +9 -55
- package/.agents/scripts/sync-claude-commands.js +20 -110
- package/.agents/scripts/test-wrapper.js +6 -43
- package/.agents/scripts/update-coverage-baseline.js +5 -22
- package/.agents/scripts/update-crap-baseline.js +7 -30
- package/.agents/scripts/update-duplication-baseline.js +16 -92
- package/.agents/scripts/update-maintainability-baseline.js +8 -62
- package/.agents/scripts/update-ticket-state.js +1 -7
- package/.agents/scripts/validate-skills.js +6 -26
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
- package/.agents/workflows/audit-accessibility.md +4 -7
- package/.agents/workflows/audit-adrs.md +3 -6
- package/.agents/workflows/audit-architecture.md +3 -11
- package/.agents/workflows/audit-baselines.md +6 -9
- package/.agents/workflows/audit-clean-code.md +8 -12
- package/.agents/workflows/audit-data-model.md +3 -7
- package/.agents/workflows/audit-dependencies.md +4 -7
- package/.agents/workflows/audit-devops.md +4 -8
- package/.agents/workflows/audit-documentation.md +1 -4
- package/.agents/workflows/audit-mobile.md +4 -7
- package/.agents/workflows/audit-navigability.md +3 -6
- package/.agents/workflows/audit-performance.md +2 -4
- package/.agents/workflows/audit-privacy.md +4 -7
- package/.agents/workflows/audit-quality.md +4 -7
- package/.agents/workflows/audit-security.md +4 -7
- package/.agents/workflows/audit-seo.md +4 -7
- package/.agents/workflows/audit-sre.md +4 -7
- package/.agents/workflows/audit-to-stories.md +17 -30
- package/.agents/workflows/audit-ux-ui.md +4 -7
- package/.agents/workflows/helpers/audit-lens-core.md +1 -1
- package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
- package/.agents/workflows/helpers/deliver-digest.md +6 -4
- package/.agents/workflows/helpers/deliver-reference.md +114 -188
- package/.agents/workflows/helpers/deliver-story-reference.md +189 -533
- package/.agents/workflows/helpers/plan-reference.md +86 -139
- package/.agents/workflows/helpers/qa-core.md +12 -0
- package/.agents/workflows/memory-consolidate.md +1 -1
- package/.agents/workflows/qa-assist.md +27 -71
- package/.agents/workflows/qa-explore.md +19 -59
- package/.agents/workflows/qa-run.md +11 -33
- package/README.md +1 -1
- package/bin/mandrel.js +5 -46
- package/bin/postinstall.js +18 -107
- package/docs/CHANGELOG.md +32 -0
- package/lib/cli/doctor.js +11 -71
- package/lib/cli/init.js +26 -165
- package/lib/cli/migrate.js +5 -64
- package/lib/cli/registry.js +84 -467
- package/lib/cli/sync-agents.js +4 -64
- package/lib/cli/sync-commands.js +11 -64
- package/lib/cli/sync.js +34 -213
- package/lib/cli/uninstall.js +40 -219
- package/lib/cli/update.js +105 -661
- package/lib/cli/version-check.js +8 -72
- package/lib/cli/version-helpers.js +14 -87
- package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
- package/lib/migrations/index.js +15 -92
- package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
- package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
- package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
- package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
- package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
- package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
- package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
- package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
- package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +2 -21
- package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
- package/package.json +16 -14
- package/.agents/docs/SDLC.md +0 -590
- package/.agents/docs/quality-gates.md +0 -1183
- package/.agents/rules/known-tooling-behavior.md +0 -200
- package/.agents/rules/orchestration-error-handling.md +0 -61
- package/.agents/rules/test-seams.md +0 -59
- package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
- package/.agents/schemas/baselines/lint.schema.json +0 -47
- package/.agents/scripts/check-action-pinning.js +0 -260
- package/.agents/scripts/check-audit-attribution.js +0 -302
- package/.agents/scripts/check-baseline-drift.js +0 -211
- package/.agents/scripts/check-baseline-scope.js +0 -362
- package/.agents/scripts/check-generated-validator.js +0 -202
- package/.agents/scripts/check-knip-entries.js +0 -159
- package/.agents/scripts/check-lifecycle-lint.js +0 -294
- package/.agents/scripts/check-pinned-override-notes.js +0 -102
- package/.agents/scripts/check-schema-references.js +0 -368
- package/.agents/scripts/check-test-portability.js +0 -512
- package/.agents/scripts/check-workflow-citations.js +0 -218
- package/.agents/scripts/check-workflow-cli-lint.js +0 -299
- package/.agents/scripts/check-workflow-timeouts.js +0 -291
- package/.agents/scripts/install-matrix-assert.js +0 -326
- package/.agents/scripts/lib/audit-advisories.js +0 -195
- package/.agents/scripts/lib/audit-attribution.js +0 -134
- package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
- package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
- package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
- package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
- package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
- package/.agents/scripts/lib/c8-cli-path.js +0 -21
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
- package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
- package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
- package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
- package/.agents/scripts/lib/fs-walk.js +0 -52
- package/.agents/scripts/lib/knip-config-resolver.js +0 -181
- package/.agents/scripts/lib/knip-entry-sync.js +0 -452
- package/.agents/scripts/lib/pinned-override-notes.js +0 -88
- package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
- package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
- package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
- package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
- package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
- package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
- package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
- package/.agents/scripts/lib/test-isolate/runner.js +0 -483
- package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
- package/.agents/scripts/lib/test-profile/render-report.js +0 -45
- package/.agents/scripts/lint-label-vocabulary.js +0 -214
- package/.agents/scripts/post-structured-comment.js +0 -127
- package/.agents/scripts/provision-git-hooks.js +0 -85
- package/.agents/scripts/prune-baseline-orphans.js +0 -181
- package/.agents/scripts/run-coverage.js +0 -197
- package/.agents/scripts/run-lint.js +0 -133
- package/.agents/scripts/run-test-profile.js +0 -129
- package/.agents/scripts/run-verify.js +0 -125
- package/.agents/scripts/test-isolate.js +0 -55
- package/.agents/scripts/update-dead-exports-baseline.js +0 -321
|
@@ -1,51 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* mandrel-catalog.js
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Mandrel-owned slash-command catalog.
|
|
7
|
-
*
|
|
8
|
-
* This is the canonical catalog backend. The consumer-shipped
|
|
9
|
-
* `.agents/docs/workflows.md` is generated from it by
|
|
10
|
-
* `generate-workflows-doc.js`, and `npm run docs:check` gates that doc
|
|
11
|
-
* against drift — same source-of-truth contract as
|
|
12
|
-
* `sync-claude-commands.js`, just one layer up (catalog of what's
|
|
13
|
-
* synced, not the sync itself). The retired `mandrel` discoverability
|
|
14
|
-
* command used to render this catalog live; Story #3708 replaced it
|
|
15
|
-
* with the gated, generated `workflows.md` so the catalog is shipped
|
|
16
|
-
* and drift-checked rather than ephemeral.
|
|
17
|
-
*
|
|
18
|
-
* Pure functions only: no GitHub I/O, no file writes, no provider
|
|
19
|
-
* factory. Callers (the doc generator, the unit test) pass an
|
|
20
|
-
* absolute path to a workflows directory in; the function returns a
|
|
21
|
-
* sorted array of `{ name, description }` entries plus a
|
|
22
|
-
* `renderCatalog()` helper that produces a human-readable markdown
|
|
23
|
-
* bullet list.
|
|
2
|
+
* mandrel-catalog.js — the slash-command catalog backend, built from
|
|
3
|
+
* top-level `.agents/workflows/*.md` (`helpers/` are not commands). The
|
|
4
|
+
* shipped `.agents/docs/workflows.md` is generated from it and drift-gated.
|
|
5
|
+
* Read-only: no GitHub I/O, no writes.
|
|
24
6
|
*/
|
|
25
7
|
|
|
26
8
|
import fs from 'node:fs';
|
|
27
9
|
import path from 'node:path';
|
|
28
10
|
|
|
29
11
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* Handles both the inline form (`description: foo bar`) and the
|
|
34
|
-
* YAML folded-block form (`description: >-` followed by indented
|
|
35
|
-
* continuation lines). Both forms appear in the live workflow set —
|
|
36
|
-
* see `.agents/workflows/signals.md` (folded) vs.
|
|
37
|
-
* `.agents/workflows/agents-bootstrap-github.md` (inline).
|
|
38
|
-
*
|
|
39
|
-
* Returns `null` if the file has no frontmatter or no `description:`
|
|
40
|
-
* key. Returns the trimmed, whitespace-collapsed string otherwise.
|
|
12
|
+
* Frontmatter `description:` as one whitespace-collapsed line; handles both
|
|
13
|
+
* inline and folded/literal block forms.
|
|
41
14
|
*
|
|
42
15
|
* @param {string} source — full file contents.
|
|
43
16
|
* @returns {string | null}
|
|
44
17
|
*/
|
|
45
18
|
export function extractDescription(source) {
|
|
46
19
|
if (typeof source !== 'string') return null;
|
|
47
|
-
// Frontmatter must be the first block
|
|
48
|
-
// the start of the file; tolerate a leading BOM.
|
|
20
|
+
// Frontmatter must be the first block; tolerate a leading BOM.
|
|
49
21
|
const trimmed = source.replace(/^/, '');
|
|
50
22
|
if (!trimmed.startsWith('---')) return null;
|
|
51
23
|
const end = trimmed.indexOf('\n---', 3);
|
|
@@ -62,53 +34,37 @@ export function extractDescription(source) {
|
|
|
62
34
|
continue;
|
|
63
35
|
}
|
|
64
36
|
const rest = match[1].trim();
|
|
65
|
-
// Folded / literal block forms: `>-`, `>`, `|`, `|-`. The actual
|
|
66
|
-
// value follows on subsequent indented lines.
|
|
67
37
|
if (/^[>|][-+]?\s*$/.test(rest) || rest === '') {
|
|
68
38
|
const collected = [];
|
|
69
39
|
let j = i + 1;
|
|
70
40
|
while (j < lines.length) {
|
|
71
41
|
const next = lines[j];
|
|
72
|
-
// Stop
|
|
73
|
-
// colon) — that's the next frontmatter entry.
|
|
42
|
+
// Stop at the next column-0 frontmatter key.
|
|
74
43
|
if (/^[A-Za-z][\w-]*\s*:/.test(next)) break;
|
|
75
|
-
// Blank line inside a folded block is permissible; keep
|
|
76
|
-
// collecting until the next top-level key.
|
|
77
44
|
collected.push(next.trim());
|
|
78
45
|
j += 1;
|
|
79
46
|
}
|
|
80
47
|
const joined = collected.join(' ').replace(/\s+/g, ' ').trim();
|
|
81
48
|
return joined.length > 0 ? joined : null;
|
|
82
49
|
}
|
|
83
|
-
// Inline form.
|
|
84
50
|
return rest.replace(/\s+/g, ' ').trim();
|
|
85
51
|
}
|
|
86
52
|
return null;
|
|
87
53
|
}
|
|
88
54
|
|
|
89
55
|
/**
|
|
90
|
-
*
|
|
91
|
-
* information beyond the workflow's own name. Callers can use this to
|
|
92
|
-
* nudge the maintainer when a description needs tightening — it does
|
|
93
|
-
* **not** block the catalog from rendering. The
|
|
94
|
-
* description-frontmatter audit pass (Task #1619 acceptance) is a
|
|
95
|
-
* one-time sweep; this helper exists so the audit doesn't silently
|
|
96
|
-
* regress later.
|
|
56
|
+
* Advisory nudge for a too-short description; never blocks rendering.
|
|
97
57
|
*
|
|
98
58
|
* @param {string | null} description
|
|
99
59
|
* @returns {boolean}
|
|
100
60
|
*/
|
|
101
61
|
export function isVagueDescription(description) {
|
|
102
62
|
if (!description) return true;
|
|
103
|
-
// Fewer than 30 characters of substance is suspicious for a
|
|
104
|
-
// discoverability menu entry.
|
|
105
63
|
if (description.trim().length < 30) return true;
|
|
106
64
|
return false;
|
|
107
65
|
}
|
|
108
66
|
|
|
109
67
|
/**
|
|
110
|
-
* Build the Mandrel-owned catalog from an on-disk workflows directory.
|
|
111
|
-
*
|
|
112
68
|
* @param {string} workflowsDir — absolute path to `.agents/workflows/`.
|
|
113
69
|
* @returns {Array<{ name: string, description: string | null, vague: boolean }>}
|
|
114
70
|
*/
|
|
@@ -121,9 +77,7 @@ export function buildCatalog(workflowsDir) {
|
|
|
121
77
|
const entries = fs.readdirSync(workflowsDir, { withFileTypes: true });
|
|
122
78
|
const catalog = [];
|
|
123
79
|
for (const entry of entries) {
|
|
124
|
-
//
|
|
125
|
-
// the runnable catalog (mirrors `sync-claude-commands.js`'s
|
|
126
|
-
// `isTopLevelWorkflow` filter).
|
|
80
|
+
// Top-level files only, mirroring `sync-claude-commands.js`.
|
|
127
81
|
if (!entry.isFile()) continue;
|
|
128
82
|
if (!entry.name.endsWith('.md')) continue;
|
|
129
83
|
if (entry.name === 'README.md') continue;
|
|
@@ -141,15 +95,8 @@ export function buildCatalog(workflowsDir) {
|
|
|
141
95
|
}
|
|
142
96
|
|
|
143
97
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* project to the namespaced `/loops:<name>` slash command (Story #4289).
|
|
147
|
-
* They are catalogued separately from the flat top-level commands because
|
|
148
|
-
* they carry a distinct invocation form.
|
|
149
|
-
*
|
|
150
|
-
* Returns an empty array when the `loops/` subdirectory is absent (the
|
|
151
|
-
* common case before the starter loops land in a later Story) — an absent
|
|
152
|
-
* namespace is a clean "no loop units", not an error.
|
|
98
|
+
* `loops/<name>.md` units, invoked as `/loops:<name>`; an absent `loops/`
|
|
99
|
+
* directory yields `[]`, not an error.
|
|
153
100
|
*
|
|
154
101
|
* @param {string} workflowsDir — absolute path to `.agents/workflows/`.
|
|
155
102
|
* @returns {Array<{ name: string, description: string | null, vague: boolean }>}
|
|
@@ -177,11 +124,6 @@ export function buildLoopCatalog(workflowsDir) {
|
|
|
177
124
|
}
|
|
178
125
|
|
|
179
126
|
/**
|
|
180
|
-
* Render the catalog as a plain-markdown bullet list. Kept as a
|
|
181
|
-
* lightweight alternative rendering of the same catalog backend that
|
|
182
|
-
* `generate-workflows-doc.js` renders into the shipped
|
|
183
|
-
* `.agents/docs/workflows.md` table.
|
|
184
|
-
*
|
|
185
127
|
* @param {Array<{ name: string, description: string | null, vague: boolean }>} catalog
|
|
186
128
|
* @returns {string}
|
|
187
129
|
*/
|
|
@@ -1,33 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Notification helpers —
|
|
2
|
+
* Notification helpers — severity vocabulary and webhook URL resolver for
|
|
3
|
+
* `notify.js`. Both channels (GitHub comments, Slack webhook) gate only on
|
|
4
|
+
* their event allowlists; severity is envelope metadata:
|
|
5
|
+
* - low — routine progress; `transitionTicketState` skips `notify()`.
|
|
6
|
+
* - medium — operator-visible milestones (Story/Epic done, merged).
|
|
7
|
+
* - high — operator must act: webhook prefix `[Action Required]`, and
|
|
8
|
+
* comments always `@mention` the operator.
|
|
3
9
|
*
|
|
4
|
-
* The
|
|
5
|
-
*
|
|
6
|
-
* (`notifications.commentEvents`) and the Slack webhook
|
|
7
|
-
* (`notifications.webhookEvents`). Both channels filter independently by
|
|
8
|
-
* event-name membership — there is no fallback chain and severity is no
|
|
9
|
-
* longer a routing factor for either channel.
|
|
10
|
-
*
|
|
11
|
-
* Severity vocabulary: low | medium | high. Severity is carried as
|
|
12
|
-
* envelope metadata so Slack consumers can color-code by it and so
|
|
13
|
-
* high-severity comments still `@mention` the operator, but it does not
|
|
14
|
-
* gate channel delivery.
|
|
15
|
-
* - low — routine pipeline progress: task transitions, story-run
|
|
16
|
-
* progress upserts. `transitionTicketState` skips the
|
|
17
|
-
* `notify()` dispatch entirely for these so the comment
|
|
18
|
-
* channel never sees them.
|
|
19
|
-
* - medium — operator-visible milestones: story / epic → done
|
|
20
|
-
* transitions, story-merged, epic milestones.
|
|
21
|
-
* - high — operator must act: epic blockers, HITL gates,
|
|
22
|
-
* autonomous-chain failures. Webhook envelope prefix is
|
|
23
|
-
* `[Action Required]`; high-severity comments always
|
|
24
|
-
* `@mention` the operator.
|
|
25
|
-
*
|
|
26
|
-
* Webhook URL resolution: `process.env.NOTIFICATION_WEBHOOK_URL` only —
|
|
27
|
-
* loaded from `.env` locally, the Claude Code web environment-variables UI,
|
|
28
|
-
* or `ENV_FILE` on GitHub Actions. The webhook URL is never read from
|
|
29
|
-
* `.agentrc.json` and (as of Epic #702) is no longer sourced from
|
|
30
|
-
* `.mcp.json`.
|
|
10
|
+
* The webhook URL comes only from `process.env.NOTIFICATION_WEBHOOK_URL`,
|
|
11
|
+
* never from `.agentrc.json` or `.mcp.json`.
|
|
31
12
|
*/
|
|
32
13
|
|
|
33
14
|
import { AGENT_LABELS } from '../label-constants.js';
|
|
@@ -35,12 +16,9 @@ import { AGENT_LABELS } from '../label-constants.js';
|
|
|
35
16
|
export const SEVERITY_RANK = Object.freeze({ low: 0, medium: 1, high: 2 });
|
|
36
17
|
|
|
37
18
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* every other transition (intermediate or task-level) is `low`. State-
|
|
42
|
-
* transition events never reach `high` — that level is reserved for
|
|
43
|
-
* explicit `notify()` calls signalling operator action is required.
|
|
19
|
+
* Only a Story/Epic reaching `agent::done` rates `medium`; transitions never
|
|
20
|
+
* reach `high`, which is reserved for explicit operator-action `notify()`
|
|
21
|
+
* calls.
|
|
44
22
|
*
|
|
45
23
|
* @param {{ kind?: string, ticket?: { type?: string }, toState?: string|null }} event
|
|
46
24
|
*/
|
|
@@ -53,10 +31,7 @@ export function eventSeverity(event) {
|
|
|
53
31
|
return 'low';
|
|
54
32
|
}
|
|
55
33
|
|
|
56
|
-
/**
|
|
57
|
-
* Render a state-transition event into a human-readable summary line used
|
|
58
|
-
* as both the GitHub comment body and the webhook message text.
|
|
59
|
-
*/
|
|
34
|
+
/** Used as both comment body and webhook text. */
|
|
60
35
|
export function renderTransitionMessage(event) {
|
|
61
36
|
const type = event.ticket?.type ?? 'ticket';
|
|
62
37
|
const id = event.ticket?.id;
|
|
@@ -1,30 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* npm-scripts.js —
|
|
3
|
-
*
|
|
4
|
-
* A single, dependency-free reader used wherever the framework must decide
|
|
5
|
-
* whether a consumer actually ships a given npm script before spawning
|
|
6
|
-
* `npm run <name>`. Two call sites depend on it:
|
|
7
|
-
* - `close-validation/gates.js` — only registers the coverage-capture gate
|
|
8
|
-
* when a `test:coverage` script exists (otherwise a consumer without it
|
|
9
|
-
* turns the gate into a guaranteed first-try close failure).
|
|
10
|
-
* - `coverage-capture.js` — fails fast with a one-line, fix-naming
|
|
11
|
-
* diagnostic instead of surfacing npm's opaque "Missing script" exit when
|
|
12
|
-
* invoked without the script.
|
|
13
|
-
*
|
|
14
|
-
* The reader is deliberately forgiving: any failure (missing file,
|
|
15
|
-
* unreadable, unparseable, or no `scripts` object) resolves to an empty map
|
|
16
|
-
* so callers treat "cannot prove the script exists" as "absent" without
|
|
17
|
-
* throwing.
|
|
2
|
+
* npm-scripts.js — does the consumer ship an npm script, checked before
|
|
3
|
+
* spawning `npm run <name>`. Any read failure means "absent", never a throw.
|
|
18
4
|
*/
|
|
19
5
|
|
|
20
6
|
import { existsSync, readFileSync } from 'node:fs';
|
|
21
7
|
import path from 'node:path';
|
|
22
8
|
|
|
23
9
|
/**
|
|
24
|
-
* Read the `scripts` map from the `package.json` at `cwd`.
|
|
25
|
-
*
|
|
26
10
|
* @param {string|undefined|null} cwd - Directory containing `package.json`.
|
|
27
|
-
* Defaults to `process.cwd()`.
|
|
28
11
|
* @returns {Record<string, string>} The scripts map, or `{}` on any failure.
|
|
29
12
|
*/
|
|
30
13
|
export function readPackageScripts(cwd) {
|
|
@@ -41,11 +24,9 @@ export function readPackageScripts(cwd) {
|
|
|
41
24
|
}
|
|
42
25
|
|
|
43
26
|
/**
|
|
44
|
-
*
|
|
45
|
-
* "runnable" when it is a present, non-empty string.
|
|
27
|
+
* Runnable means a present, non-empty string.
|
|
46
28
|
*
|
|
47
|
-
* @param {Record<string, string>} scripts - A scripts map
|
|
48
|
-
* `readPackageScripts`).
|
|
29
|
+
* @param {Record<string, string>} scripts - A scripts map.
|
|
49
30
|
* @param {string} name - The script name to check (e.g. `test:coverage`).
|
|
50
31
|
* @returns {boolean}
|
|
51
32
|
*/
|
|
@@ -1,34 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* metrics-ledger.js — the
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* path resolution, serialization, lazy directory creation, size-capped
|
|
6
|
-
* rotation, and the append itself. Every ledger writer — the plan-domain
|
|
7
|
-
* appenders in `../orchestration/plan-metrics.js` and the close-domain
|
|
8
|
-
* findings-yield entry point below — routes through
|
|
9
|
-
* {@link appendLedgerRecord}, so the open→append→rotate→close tail exists
|
|
10
|
-
* exactly once and cannot drift between call sites.
|
|
11
|
-
*
|
|
12
|
-
* The findings-yield entry point (Story #4699) lives here rather than in
|
|
13
|
-
* the plan-domain module so the story-close review spine
|
|
14
|
-
* (`../orchestration/story-close/phases/review-core.js`) depends on this
|
|
15
|
-
* narrow shared ledger module instead of plan-domain internals.
|
|
16
|
-
*
|
|
17
|
-
* Wire contract (unchanged by the #4712 re-home): record shapes, file
|
|
18
|
-
* locations (`temp/run-<id>/plan-metrics.json` / the standalone stream),
|
|
19
|
-
* and the rotation threshold are exactly what `plan-metrics.js` shipped —
|
|
20
|
-
* readers (`readPlanMetrics` / `summarizePlanMetrics`) stay plan-side and
|
|
21
|
-
* key kinded records on `kind`, never on absent fields.
|
|
22
|
-
*
|
|
23
|
-
* Robustness contract (mirrors `signals-writer.js`):
|
|
24
|
-
* - **No buffering.** Each append opens, writes one line, closes.
|
|
25
|
-
* - **Rotation.** When an append would push the ledger past
|
|
26
|
-
* `maxBytes`, the current file is renamed to `<name>.1` (replacing any
|
|
27
|
-
* prior rollover) and the append starts a fresh ledger.
|
|
28
|
-
* - **Best-effort at the entry points.** {@link appendLedgerRecord}
|
|
29
|
-
* itself throws on fs failure; each public appender catches, warns via
|
|
30
|
-
* `Logger`, and returns `false` so metric capture can never fail the
|
|
31
|
-
* wrapped plan phase or Story close.
|
|
2
|
+
* metrics-ledger.js — the one append tail for the plan-metrics ledger, kept
|
|
3
|
+
* outside the plan domain so the close spine needn't import plan internals.
|
|
4
|
+
* Public appenders are best-effort so capture never fails a phase or close.
|
|
32
5
|
*/
|
|
33
6
|
|
|
34
7
|
import fs from 'node:fs/promises';
|
|
@@ -44,40 +17,17 @@ import { Logger } from '../Logger.js';
|
|
|
44
17
|
export const PLAN_METRICS_BASENAME = 'plan-metrics.json';
|
|
45
18
|
export const PLAN_METRICS_SCHEMA_VERSION = 1;
|
|
46
19
|
|
|
47
|
-
/**
|
|
48
|
-
* Record kind for a per-close, per-lens findings-yield entry (Story #4699).
|
|
49
|
-
* One record per Story close whose review ran (or floor-skipped) at least
|
|
50
|
-
* one local lens:
|
|
51
|
-
*
|
|
52
|
-
* ```json
|
|
53
|
-
* { "v": 1, "kind": "findings-yield", "cli": "story-close-review",
|
|
54
|
-
* "storyId": 4699, "epicId": null,
|
|
55
|
-
* "lenses": [{ "lens": "audit-clean-code", "findings": 0,
|
|
56
|
-
* "skippedByFloor": false }],
|
|
57
|
-
* "diffFloor": { "skip": false, "reason": "at-or-above-floor",
|
|
58
|
-
* "floor": 40, "changedLineCount": 120 },
|
|
59
|
-
* "at": "..." }
|
|
60
|
-
* ```
|
|
61
|
-
*
|
|
62
|
-
* The ledger only records — no roster behavior changes ride on it. Its
|
|
63
|
-
* purpose is evidentiary: a lens that stays at zero findings across N
|
|
64
|
-
* closes becomes droppable on measurement instead of assumption.
|
|
65
|
-
*/
|
|
20
|
+
/** Evidence for dropping a lens that stays at zero findings. */
|
|
66
21
|
const PLAN_METRICS_KIND_FINDINGS_YIELD = 'findings-yield';
|
|
67
22
|
|
|
68
|
-
/**
|
|
69
|
-
* Rotation threshold. At ~200 bytes per record this is ~5000 invocations —
|
|
70
|
-
* far beyond any real plan run, so rotation only fires on pathological
|
|
71
|
-
* accumulation.
|
|
72
|
-
*/
|
|
23
|
+
/** ~5000 records; rotation only fires on pathological accumulation. */
|
|
73
24
|
export const MAX_LEDGER_BYTES = 1024 * 1024;
|
|
74
25
|
|
|
75
26
|
/**
|
|
76
|
-
*
|
|
77
|
-
* `epicId` is `null` — the v2 Epic-less plan/healthcheck case).
|
|
27
|
+
* `null` `epicId` → the standalone stream.
|
|
78
28
|
*
|
|
79
29
|
* @param {number|null} epicId
|
|
80
|
-
* @param {object} [config]
|
|
30
|
+
* @param {object} [config]
|
|
81
31
|
* @returns {string}
|
|
82
32
|
*/
|
|
83
33
|
export function planMetricsPath(epicId, config) {
|
|
@@ -92,9 +42,8 @@ export function planMetricsPath(epicId, config) {
|
|
|
92
42
|
}
|
|
93
43
|
|
|
94
44
|
/**
|
|
95
|
-
*
|
|
96
|
-
* `maxBytes`.
|
|
97
|
-
* `plan-metrics.json.1` (any prior `.1` is replaced).
|
|
45
|
+
* Roll over to `<file>.1` (replacing any prior) when the append would exceed
|
|
46
|
+
* `maxBytes`.
|
|
98
47
|
*
|
|
99
48
|
* @param {string} filePath
|
|
100
49
|
* @param {number} incomingBytes
|
|
@@ -106,7 +55,7 @@ async function rotateIfNeeded(filePath, incomingBytes, maxBytes) {
|
|
|
106
55
|
try {
|
|
107
56
|
size = (await fs.stat(filePath)).size;
|
|
108
57
|
} catch {
|
|
109
|
-
return false;
|
|
58
|
+
return false;
|
|
110
59
|
}
|
|
111
60
|
if (size + incomingBytes <= maxBytes) return false;
|
|
112
61
|
await fs.rename(filePath, `${filePath}.1`);
|
|
@@ -114,20 +63,15 @@ async function rotateIfNeeded(filePath, incomingBytes, maxBytes) {
|
|
|
114
63
|
}
|
|
115
64
|
|
|
116
65
|
/**
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* when the byte cap would be exceeded, and append.
|
|
120
|
-
*
|
|
121
|
-
* Throws on any fs failure — the best-effort posture (warn + `false`,
|
|
122
|
-
* never throw) belongs to the public appenders that wrap this, because
|
|
123
|
-
* each labels its own failure mode.
|
|
66
|
+
* Throws on fs failure; the wrapping public appenders own the best-effort
|
|
67
|
+
* posture and label their own failure.
|
|
124
68
|
*
|
|
125
|
-
* @param {object} record
|
|
69
|
+
* @param {object} record
|
|
126
70
|
* @param {{
|
|
127
71
|
* epicId?: number|null,
|
|
128
72
|
* config?: object,
|
|
129
73
|
* maxBytes?: number,
|
|
130
|
-
* }} [opts]
|
|
74
|
+
* }} [opts]
|
|
131
75
|
* @returns {Promise<void>}
|
|
132
76
|
*/
|
|
133
77
|
export async function appendLedgerRecord(record, opts = {}) {
|
|
@@ -143,11 +87,7 @@ export async function appendLedgerRecord(record, opts = {}) {
|
|
|
143
87
|
}
|
|
144
88
|
|
|
145
89
|
/**
|
|
146
|
-
* Append one findings-yield record
|
|
147
|
-
* close by the review spine when the local-lens pass matched (or
|
|
148
|
-
* floor-skipped) at least one lens. Best-effort: returns `false` (after a
|
|
149
|
-
* `Logger.warn`) instead of throwing on any failure, so a ledger failure
|
|
150
|
-
* can never fail the close.
|
|
90
|
+
* Append one findings-yield record. Never throws.
|
|
151
91
|
*
|
|
152
92
|
* @param {{
|
|
153
93
|
* storyId: number,
|
|
@@ -157,7 +97,7 @@ export async function appendLedgerRecord(record, opts = {}) {
|
|
|
157
97
|
* diffFloor?: object|null,
|
|
158
98
|
* }} entry
|
|
159
99
|
* @param {object} [config]
|
|
160
|
-
* @param {{ maxBytes?: number }} [opts]
|
|
100
|
+
* @param {{ maxBytes?: number }} [opts]
|
|
161
101
|
* @returns {Promise<boolean>} true when the line was written.
|
|
162
102
|
*/
|
|
163
103
|
export async function appendFindingsYield(entry, config, opts = {}) {
|