mandrel 2.60.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 +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/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 +83 -239
- 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 +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 +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 +25 -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,25 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `.agentrc.json` → built-in defaults. Object keys deep-merge; absent local
|
|
6
|
-
* file is a no-op.
|
|
7
|
-
* `.env` is loaded lazily once per resolved root via `loadEnv`.
|
|
8
|
-
*
|
|
9
|
-
* Post-reshape, `.agentrc.json` declares four top-level blocks:
|
|
10
|
-
* `project`, `github`, `planning`, `delivery`. The resolver runs the
|
|
11
|
-
* full-document AJV gate (`AGENTRC_SCHEMA`) on load and returns a wrapper
|
|
12
|
-
* carrying each block plus a `raw`/`source` metadata pair.
|
|
13
|
-
*
|
|
14
|
-
* Hard cutover (Epic #2880, Story #2947): both the input-side and
|
|
15
|
-
* output-side legacy shapes are gone. Legacy `agentSettings.*` /
|
|
16
|
-
* `orchestration.*` input documents are rejected by the AJV schema
|
|
17
|
-
* (`additionalProperties: false` at the top level), and the previously
|
|
18
|
-
* synthesized `agentSettings` / `orchestration` output pointers have been
|
|
19
|
-
* deleted from the resolver wrapper. Every internal call site reads the
|
|
20
|
-
* canonical `project` / `github` / `planning` / `delivery` blocks
|
|
21
|
-
* directly; consumers upgrade in lockstep with the framework bump
|
|
22
|
-
* (see `.agents/rules/git-conventions-reference.md#contract-cutovers-—-no-shim-layer`).
|
|
2
|
+
* Configuration resolver facade: `.agentrc.local.json` deep-merges over
|
|
3
|
+
* `.agentrc.json` over built-in defaults, validated against `AGENTRC_SCHEMA`
|
|
4
|
+
* on load. `.env` loads lazily once per resolved root.
|
|
23
5
|
*/
|
|
24
6
|
|
|
25
7
|
import fs from 'node:fs';
|
|
@@ -45,9 +27,8 @@ export {
|
|
|
45
27
|
} from './config/limits.js';
|
|
46
28
|
export { getPaths } from './config/paths.js';
|
|
47
29
|
export {
|
|
48
|
-
|
|
30
|
+
CODING_GUARDRAILS,
|
|
49
31
|
getQuality,
|
|
50
|
-
resolveCodingGuardrails,
|
|
51
32
|
resolveMaintainabilityCrap,
|
|
52
33
|
resolveQuality,
|
|
53
34
|
} from './config/quality.js';
|
|
@@ -95,10 +76,8 @@ function applyCommandsDefaults(project) {
|
|
|
95
76
|
}
|
|
96
77
|
|
|
97
78
|
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* `Boolean(undefined) === false` previously disabled worktrees silently
|
|
101
|
-
* when the operator omitted the block.
|
|
79
|
+
* Omitted `worktreeIsolation` fields resolve to defaults — otherwise an
|
|
80
|
+
* absent `enabled` reads as false and silently disables worktrees.
|
|
102
81
|
*/
|
|
103
82
|
function applyDeliveryDefaults(rawDelivery) {
|
|
104
83
|
const delivery = { ...(rawDelivery ?? {}) };
|
|
@@ -111,10 +90,6 @@ function applyDeliveryDefaults(rawDelivery) {
|
|
|
111
90
|
return delivery;
|
|
112
91
|
}
|
|
113
92
|
|
|
114
|
-
/**
|
|
115
|
-
* Apply framework defaults for the four top-level blocks. Pure (no
|
|
116
|
-
* mutation) — returns a fresh object.
|
|
117
|
-
*/
|
|
118
93
|
/**
|
|
119
94
|
* Deep-merge plain objects for the `.agentrc.local.json` overlay. Arrays and
|
|
120
95
|
* scalars from `override` replace the base value at that key.
|
|
@@ -174,9 +149,6 @@ const ZERO_CONFIG_RAW = Object.freeze({
|
|
|
174
149
|
|
|
175
150
|
function applyDefaults(raw) {
|
|
176
151
|
const project = applyCommandsDefaults({ ...(raw.project ?? {}) });
|
|
177
|
-
// Default docsContextFiles list — same five files the framework has
|
|
178
|
-
// always shipped, preserved here so zero-config callers and configs
|
|
179
|
-
// that omit the list both get the canonical mandatory-reads set.
|
|
180
152
|
if (project.docsContextFiles == null) {
|
|
181
153
|
project.docsContextFiles = [
|
|
182
154
|
'architecture.md',
|
|
@@ -194,29 +166,15 @@ function applyDefaults(raw) {
|
|
|
194
166
|
github: applyGithubDefaults(raw.github),
|
|
195
167
|
planning: raw.planning ?? {},
|
|
196
168
|
delivery: applyDeliveryDefaults(raw.delivery),
|
|
197
|
-
//
|
|
198
|
-
// `#/$defs/qa`). It needs no default-layering — the harness resolver
|
|
199
|
-
// (`resolveQaContract`) owns normalization and required-field
|
|
200
|
-
// enforcement — it only needs to survive the reshape so
|
|
201
|
-
// `/qa-run` Step 0 can read it off the resolved wrapper.
|
|
169
|
+
// Passed through as authored; `resolveQaContract` owns normalization.
|
|
202
170
|
...(raw.qa !== undefined ? { qa: raw.qa } : {}),
|
|
203
171
|
};
|
|
204
172
|
}
|
|
205
173
|
|
|
206
174
|
/**
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
* {
|
|
211
|
-
* project, github, planning, delivery, // post-reshape canonical blocks
|
|
212
|
-
* qa, // optional QA-harness block (present iff authored)
|
|
213
|
-
* raw, source,
|
|
214
|
-
* }
|
|
215
|
-
*
|
|
216
|
-
* Error policy:
|
|
217
|
-
* - File missing (ENOENT) → fall through to built-in defaults (zero-config).
|
|
218
|
-
* - File present but malformed JSON → throw immediately.
|
|
219
|
-
* - Schema validation failure → throw with a single-line error list.
|
|
175
|
+
* Returns `{ project, github, planning, delivery, qa?, raw, source }`. A
|
|
176
|
+
* missing file falls back to defaults; malformed JSON or a schema failure
|
|
177
|
+
* throws.
|
|
220
178
|
*
|
|
221
179
|
* @param {{ bustCache?: boolean, cwd?: string, validate?: boolean, ctx?: object }} [opts]
|
|
222
180
|
*/
|
|
@@ -19,10 +19,7 @@ export const SHELL_INJECTION_RE = new RegExp(SHELL_INJECTION_PATTERN_STRING);
|
|
|
19
19
|
*/
|
|
20
20
|
export const SHELL_INJECTION_RE_STRICT = /[&|;`<>()$]/;
|
|
21
21
|
|
|
22
|
-
//
|
|
23
|
-
// registry implementation lives in `baseline-schema-registry.js`; this
|
|
24
|
-
// re-export keeps `config-schema-shared.js` as the canonical import surface
|
|
25
|
-
// for downstream consumers and the mirror-drift test.
|
|
22
|
+
// Canonical import surface for the baseline schema registry.
|
|
26
23
|
export {
|
|
27
24
|
BASELINE_ENVELOPE_FILE,
|
|
28
25
|
BASELINE_KIND_SCHEMA_FILES,
|
|
@@ -1,23 +1,13 @@
|
|
|
1
1
|
/* node:coverage ignore file -- AJV schema declaration (data-as-code); MI < 70 is inherent to large flat schema literals, no business logic to test */
|
|
2
2
|
|
|
3
|
-
//
|
|
4
|
-
// delivery.* sub-schemas — extracted from config-settings-schema.js to keep
|
|
5
|
-
// the aggregate AGENTRC_SCHEMA module under the maintainability floor. These
|
|
6
|
-
// are pure declarative AJV fragments referenced by DELIVERY_SCHEMA; moving
|
|
7
|
-
// them here does not change validation semantics (the resolved schema is
|
|
8
|
-
// byte-for-byte equivalent in effect).
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
3
|
+
// delivery.* sub-schemas of AGENTRC_SCHEMA.
|
|
10
4
|
|
|
11
5
|
import { ACCEPTANCE_EVAL_DEFAULTS } from './config/acceptance-eval.js';
|
|
12
6
|
import { CI_DELIVERY_DEFAULTS } from './config/ci.js';
|
|
13
7
|
import { DELIVERY_ROUTING_DEFAULTS } from './config/delivery-routing.js';
|
|
14
|
-
import { LIMITS_DEFAULTS } from './config/limits.js';
|
|
15
8
|
import { DEFAULT_CODE_REVIEW } from './config/runners.js';
|
|
16
9
|
import { WORKTREE_ISOLATION_DEFAULTS } from './config/worktree-isolation.js';
|
|
17
10
|
import { SHELL_INJECTION_PATTERN_STRING } from './config-schema-shared.js';
|
|
18
|
-
// `delivery.quality` and `delivery.codeReview` sub-schemas live in a
|
|
19
|
-
// further-split module (refs #3457) so each schema file stays above the
|
|
20
|
-
// maintainability floor.
|
|
21
11
|
import {
|
|
22
12
|
CODE_REVIEW_SCHEMA,
|
|
23
13
|
QUALITY_SCHEMA,
|
|
@@ -30,27 +20,14 @@ const SAFE_STRING = {
|
|
|
30
20
|
|
|
31
21
|
const EXECUTION_SCHEMA = {
|
|
32
22
|
type: 'object',
|
|
33
|
-
description: '
|
|
23
|
+
description: 'Serialization of the full-suite spawns delivery drives.',
|
|
34
24
|
properties: {
|
|
35
|
-
timeoutMs: {
|
|
36
|
-
type: 'integer',
|
|
37
|
-
minimum: 1,
|
|
38
|
-
description:
|
|
39
|
-
'Per-command timeout (ms) for the long-running spawns delivery drives — the close-validation chain and the gate CLIs.',
|
|
40
|
-
default: LIMITS_DEFAULTS.executionTimeoutMs,
|
|
41
|
-
},
|
|
42
25
|
fullSuiteLock: {
|
|
43
26
|
type: 'boolean',
|
|
44
27
|
description:
|
|
45
28
|
'Serialize full-suite spawns (`npm test` / `npm run test:coverage`) behind a host-level advisory lock, so two concurrent deliveries on one checkout do not run two suites against the same cores. Best-effort: a wait that expires spawns anyway, so the lock can never fail a delivery. Set false — or export `MANDREL_FULL_SUITE_LOCK=0` for one invocation — to disable.',
|
|
46
29
|
default: true,
|
|
47
30
|
},
|
|
48
|
-
requireCreditedCapture: {
|
|
49
|
-
type: 'boolean',
|
|
50
|
-
description:
|
|
51
|
-
'Refuse a full-suite coverage capture that no committed stamp covers, instead of paying for it. Default false — the run is announced (a warning naming the crediting invocation, emitted before the spawn) and then executed, which is the pre-existing behaviour. Set true when the whole-suite cost is large enough that a close should stop at zero seconds rather than absorb it silently.',
|
|
52
|
-
default: false,
|
|
53
|
-
},
|
|
54
31
|
},
|
|
55
32
|
additionalProperties: false,
|
|
56
33
|
};
|
|
@@ -71,11 +48,6 @@ const DOCS_FRESHNESS_SCHEMA = {
|
|
|
71
48
|
additionalProperties: false,
|
|
72
49
|
};
|
|
73
50
|
|
|
74
|
-
/**
|
|
75
|
-
* `delivery.deliverRunner` — bounded-concurrency knob for the epic-deliver
|
|
76
|
-
* fan-out. Flattened post-reshape — no `runners.` wrapper, no `enabled`
|
|
77
|
-
* field (operators dial concurrency directly).
|
|
78
|
-
*/
|
|
79
51
|
const DELIVER_RUNNER_SCHEMA = {
|
|
80
52
|
type: 'object',
|
|
81
53
|
description: 'Bounded-concurrency knob for the /mandrel-deliver fan-out.',
|
|
@@ -85,9 +57,7 @@ const DELIVER_RUNNER_SCHEMA = {
|
|
|
85
57
|
minimum: 1,
|
|
86
58
|
description:
|
|
87
59
|
'Maximum ready Stories dispatched by /mandrel-deliver at once. Default 3. Moderate by design — keeps host-quota consumption predictable while allowing a small ready-set fan-out. Set 1 for strictly sequential delivery; raise further on hosts with adequate parallel-agent quota. See deliver.md for the sequencing model and throughput tradeoff.',
|
|
88
|
-
//
|
|
89
|
-
// constant, not from this annotation; the parity suite asserts the two
|
|
90
|
-
// agree.
|
|
60
|
+
// Runtime reads DEFAULT_DELIVER_RUNNER; a parity test keeps them equal.
|
|
91
61
|
default: 3,
|
|
92
62
|
},
|
|
93
63
|
footprintGuard: {
|
|
@@ -101,9 +71,6 @@ const DELIVER_RUNNER_SCHEMA = {
|
|
|
101
71
|
additionalProperties: false,
|
|
102
72
|
};
|
|
103
73
|
|
|
104
|
-
/**
|
|
105
|
-
* `delivery.worktreeIsolation` — per-Story git worktree provisioning.
|
|
106
|
-
*/
|
|
107
74
|
const WORKTREE_ISOLATION_SCHEMA = {
|
|
108
75
|
type: 'object',
|
|
109
76
|
description:
|
|
@@ -127,9 +94,7 @@ const WORKTREE_ISOLATION_SCHEMA = {
|
|
|
127
94
|
enum: ['per-worktree', 'clone', 'symlink', 'pnpm-store'],
|
|
128
95
|
description:
|
|
129
96
|
'How each worktree gets its dependencies. `clone` copy-on-writes the main checkout tree (fast, cross-platform); `per-worktree` runs a full install; `symlink` links the shared tree (POSIX only unless `allowSymlinkOnWindows`); `pnpm-store` re-links from the pnpm content store.',
|
|
130
|
-
//
|
|
131
|
-
// is evaluated at import time and resolves to `per-worktree` on win32,
|
|
132
|
-
// so it must not be imported here.
|
|
97
|
+
// Not imported: the runtime constant is `per-worktree` on win32.
|
|
133
98
|
default: 'clone',
|
|
134
99
|
},
|
|
135
100
|
primeFromPath: {
|
|
@@ -160,7 +125,6 @@ const WORKTREE_ISOLATION_SCHEMA = {
|
|
|
160
125
|
},
|
|
161
126
|
},
|
|
162
127
|
additionalProperties: false,
|
|
163
|
-
// `root` is required only when isolation is explicitly enabled.
|
|
164
128
|
allOf: [
|
|
165
129
|
{
|
|
166
130
|
if: {
|
|
@@ -173,42 +137,10 @@ const WORKTREE_ISOLATION_SCHEMA = {
|
|
|
173
137
|
],
|
|
174
138
|
};
|
|
175
139
|
|
|
176
|
-
/**
|
|
177
|
-
* `delivery.mergeWatch` — knobs consumed by the close-and-land merge wait
|
|
178
|
-
* listener (Story #2896, Epic #2880) and by the close-and-land merge wait
|
|
179
|
-
* (`single-story-close/phases/confirm-merge.js`). `intervalSeconds` is the
|
|
180
|
-
* poll cadence between `gh pr view` probes after the arm.
|
|
181
|
-
*
|
|
182
|
-
* The two budgets are deliberately separate axes (Story #4543):
|
|
183
|
-
*
|
|
184
|
-
* - `maxWaitSeconds` bounds **one invocation** of the merge wait. Its
|
|
185
|
-
* default (300s) fits inside a single host tool invocation, whose
|
|
186
|
-
* ceiling is ~10 minutes; the gates that run before the wait already
|
|
187
|
-
* consume minutes of that. Expiry is NOT a block — the wait returns a
|
|
188
|
-
* resumable `pending` terminal with no label mutation. A headless caller
|
|
189
|
-
* with no such ceiling raises it to keep land-in-one-block semantics.
|
|
190
|
-
* - `maxBudgetSeconds` bounds the **cumulative** wait across resumes,
|
|
191
|
-
* anchored at the PR's `createdAt` so re-entering the wait does not
|
|
192
|
-
* restart the clock. Exhausting *this* is the genuine give-up condition
|
|
193
|
-
* that classifies and blocks.
|
|
194
|
-
*
|
|
195
|
-
* `updateAttempts` caps how many times the wait will bring a
|
|
196
|
-
* behind-the-base PR up to date before giving the branch up as unwinnable,
|
|
197
|
-
* rather than waiting out the budget behind a base it could have merged.
|
|
198
|
-
* All keys default in the consumer when omitted (30s / 300s / 3600s / 3).
|
|
199
|
-
*
|
|
200
|
-
* `mode` selects the close-time merge posture (Story #4698). Default `sync`
|
|
201
|
-
* keeps the in-close foreground wait unchanged. `async` caps the per-invocation
|
|
202
|
-
* wait to a short probe window (~60s: catches instant merges and instantly-red
|
|
203
|
-
* required checks) and then returns the resumable `pending` terminal, so a
|
|
204
|
-
* slow-CI consumer no longer burns ~5 minutes of the host tool slot on a merge
|
|
205
|
-
* that lands after the wait would have expired anyway — the worker launches the
|
|
206
|
-
* `pending` envelope's `nextCommand` in the background instead.
|
|
207
|
-
*/
|
|
208
140
|
const MERGE_WATCH_SCHEMA = {
|
|
209
141
|
type: 'object',
|
|
210
142
|
description:
|
|
211
|
-
"Knobs consumed by the close-and-land merge wait (Story #4543
|
|
143
|
+
"Knobs consumed by the close-and-land merge wait (Story #4543). `mode` (Story #4698) selects the close-time merge posture. `maxWaitSeconds` bounds ONE invocation of the merge wait and its expiry returns a resumable `pending` terminal with no label mutation; `maxBudgetSeconds` bounds the CUMULATIVE wait across resumes (anchored at the PR's createdAt, so a resume does not restart the clock) and exhausting it is the genuine give-up that classifies and blocks. The 30s poll cadence and the cap of 3 behind-the-base updates are fixed.",
|
|
212
144
|
properties: {
|
|
213
145
|
mode: {
|
|
214
146
|
type: 'string',
|
|
@@ -216,12 +148,6 @@ const MERGE_WATCH_SCHEMA = {
|
|
|
216
148
|
description:
|
|
217
149
|
'Close-time merge-wait posture (Story #4698). `sync` (default) keeps the in-close foreground merge wait unchanged. `async` caps the per-invocation wait to a short ~60s probe window — long enough to catch an instant merge and, via the head-anchored required-check predicate, an instantly-red required check — then returns the resumable `pending` terminal (exit 3) with a `nextCommand`. Opt in when slow CI makes the foreground wait routinely expire: the worker launches `nextCommand` in the background instead of burning the host tool slot polling. `maxBudgetSeconds` (the cumulative give-up) is unchanged.',
|
|
218
150
|
},
|
|
219
|
-
intervalSeconds: {
|
|
220
|
-
type: 'integer',
|
|
221
|
-
minimum: 1,
|
|
222
|
-
description: 'Seconds between merge-wait polls. Default 30.',
|
|
223
|
-
default: 30,
|
|
224
|
-
},
|
|
225
151
|
maxWaitSeconds: {
|
|
226
152
|
type: 'integer',
|
|
227
153
|
minimum: 1,
|
|
@@ -235,31 +161,10 @@ const MERGE_WATCH_SCHEMA = {
|
|
|
235
161
|
"Cumulative wall-clock budget (seconds) across merge-wait resumes, anchored at the PR's createdAt. Default 3600 (60 minutes). Exhausting this classifies the block and transitions the Story to agent::blocked.",
|
|
236
162
|
default: 3600,
|
|
237
163
|
},
|
|
238
|
-
updateAttempts: {
|
|
239
|
-
type: 'integer',
|
|
240
|
-
minimum: 0,
|
|
241
|
-
description:
|
|
242
|
-
'Maximum times the merge wait will bring a behind-the-base PR up to date before giving up on the branch. Default 3. Set 0 to disable the update.',
|
|
243
|
-
},
|
|
244
164
|
},
|
|
245
165
|
additionalProperties: false,
|
|
246
166
|
};
|
|
247
167
|
|
|
248
|
-
/**
|
|
249
|
-
* `delivery.epicAudit` was removed on v2 (Story-only delivery — no
|
|
250
|
-
* epic-audit runner). Remediation policy lives on `delivery.codeReview`
|
|
251
|
-
* (`CODE_REVIEW_SCHEMA` imported from the quality schema module).
|
|
252
|
-
*/
|
|
253
|
-
|
|
254
|
-
// Epic #4478 (M7-B) — role-scoped-agent kill-switch.
|
|
255
|
-
// Stage 6 dropped `delivery.routing.singleDelivery` (v1 epic route switch).
|
|
256
|
-
// `delivery.routing.roleScopedAgents` (default true via getDeliveryRouting)
|
|
257
|
-
// flips converted delivery spawns onto their `.claude/agents/<role>.md` boot
|
|
258
|
-
// context; false falls back to `subagent_type: general-purpose` (the instant
|
|
259
|
-
// per-consumer revert + the escape for hosts that ignore `.claude/agents/`).
|
|
260
|
-
// Story #5313 retired `delivery.routing.freshCriticSampleRate` (the
|
|
261
|
-
// maker-checker sampling floor). Story #5343 then retired the derived-level
|
|
262
|
-
// routing it left behind: the profile alone decides the verdict owner.
|
|
263
168
|
const ROUTING_SCHEMA = {
|
|
264
169
|
type: 'object',
|
|
265
170
|
description:
|
|
@@ -288,61 +193,11 @@ const ROUTING_SCHEMA = {
|
|
|
288
193
|
additionalProperties: false,
|
|
289
194
|
};
|
|
290
195
|
|
|
291
|
-
// Story #4356 (Epic #4355) — CI-aware delivery namespace. `watch.*` tunes
|
|
292
|
-
// the merge/CI watch poll loop; `autoMerge` selects the merge posture.
|
|
293
|
-
// Retired: `earlyPr` (Epic early-PR warmup) and `requireChecks` (no
|
|
294
|
-
// AutomergePredicate reader on v2).
|
|
295
|
-
// Story #4890 added `attachWindowMs`: how long the watch keeps re-resolving an
|
|
296
|
-
// EMPTY required-check set before it stops waiting for one. This block is
|
|
297
|
-
// `additionalProperties: false`, so the knob is inert unless it lands here AND
|
|
298
|
-
// in the `.agents/schemas/agentrc.schema.json` mirror.
|
|
299
|
-
// The four `watch.*` defaults below mirror WATCH_DEFAULTS in
|
|
300
|
-
// `pr-watch-with-update.js`. Restated rather than imported: that module is a
|
|
301
|
-
// CLI, and importing it behind a schema declaration would drag its
|
|
302
|
-
// `runAsCli` wiring into every config read. The rewritten parity suite
|
|
303
|
-
// asserts the two agree.
|
|
304
|
-
const CI_WATCH_SCHEMA = {
|
|
305
|
-
type: 'object',
|
|
306
|
-
description:
|
|
307
|
-
'Story #4356 (Epic #4355). Poll-loop tuning for the merge/CI watch. pollIntervalMs is the cadence between check probes; maxPolls caps total probes before the watcher gives up; maxResumes caps how many times the watcher may resume after a transient stall; attachWindowMs bounds the wait for a required context to attach at all.',
|
|
308
|
-
properties: {
|
|
309
|
-
pollIntervalMs: {
|
|
310
|
-
type: 'integer',
|
|
311
|
-
minimum: 1,
|
|
312
|
-
description: 'Milliseconds between check probes.',
|
|
313
|
-
default: 10000,
|
|
314
|
-
},
|
|
315
|
-
maxPolls: {
|
|
316
|
-
type: 'integer',
|
|
317
|
-
minimum: 1,
|
|
318
|
-
description:
|
|
319
|
-
'Total probes before the watcher gives up on one invocation.',
|
|
320
|
-
default: 180,
|
|
321
|
-
},
|
|
322
|
-
maxResumes: {
|
|
323
|
-
type: 'integer',
|
|
324
|
-
minimum: 0,
|
|
325
|
-
description:
|
|
326
|
-
'How many times the watcher may resume after a transient stall. 0 disables resuming.',
|
|
327
|
-
default: 3,
|
|
328
|
-
},
|
|
329
|
-
attachWindowMs: {
|
|
330
|
-
type: 'integer',
|
|
331
|
-
minimum: 1,
|
|
332
|
-
description:
|
|
333
|
-
'Story #4890. How long (ms) the watch keeps re-resolving an EMPTY `gh pr checks --required` set before it stops waiting for a required context to attach. A ruleset attaches its contexts asynchronously and the arrival latency is set by the slowest one, so a required context that is an aggregator job gated on every other tier is the last to appear — measured at 16m52s on this repository. Default 1200000 (20 minutes). Raise it for a repository whose contexts arrive later still; exhausting the window is never reported as a red check (the watch exits 2, not-yet-started).',
|
|
334
|
-
default: 1200000,
|
|
335
|
-
},
|
|
336
|
-
},
|
|
337
|
-
additionalProperties: false,
|
|
338
|
-
};
|
|
339
|
-
|
|
340
196
|
const CI_DELIVERY_SCHEMA = {
|
|
341
197
|
type: 'object',
|
|
342
198
|
description:
|
|
343
|
-
'CI-aware delivery namespace (Story #4356, Epic #4355): the merge
|
|
199
|
+
'CI-aware delivery namespace (Story #4356, Epic #4355): the merge posture and the advisory-check policy.',
|
|
344
200
|
properties: {
|
|
345
|
-
watch: CI_WATCH_SCHEMA,
|
|
346
201
|
autoMerge: {
|
|
347
202
|
type: 'string',
|
|
348
203
|
enum: ['trust-ci', 'strict'],
|
|
@@ -374,15 +229,6 @@ const CI_DELIVERY_SCHEMA = {
|
|
|
374
229
|
additionalProperties: false,
|
|
375
230
|
};
|
|
376
231
|
|
|
377
|
-
/**
|
|
378
|
-
* `delivery.refactorStage` — opt-in, config-gated post-green refactor
|
|
379
|
-
* checkpoint wired into story-deliver (Story #3430, Epic #3418). Strictly
|
|
380
|
-
* additive and default-OFF: when `enabled` is unset or `false`, story-deliver
|
|
381
|
-
* behaves exactly as before. When `true`, the worker runs an advisory
|
|
382
|
-
* post-green refactor pass (the `core/code-review-and-quality` skill's
|
|
383
|
-
* Post-Green Refactor Pass) after the suite is green. The stage is
|
|
384
|
-
* advisory only — it never changes existing close-validation gate semantics.
|
|
385
|
-
*/
|
|
386
232
|
const REFACTOR_STAGE_SCHEMA = {
|
|
387
233
|
type: 'object',
|
|
388
234
|
description:
|
|
@@ -398,21 +244,6 @@ const REFACTOR_STAGE_SCHEMA = {
|
|
|
398
244
|
additionalProperties: false,
|
|
399
245
|
};
|
|
400
246
|
|
|
401
|
-
/**
|
|
402
|
-
* `delivery.acceptanceEval` — bounded per-Story acceptance self-eval loop
|
|
403
|
-
* (Story #3819). After the implementation commits land and before the
|
|
404
|
-
* Story-implementation phase flips to `closing`, an independent
|
|
405
|
-
* (fresh-context) critic pass scores the caller-injected change set against
|
|
406
|
-
* each inline `acceptance[]` item, redrafts the unmet items, and
|
|
407
|
-
* re-evaluates — capped at `maxRounds` redraft rounds.
|
|
408
|
-
*
|
|
409
|
-
* `maxRounds` is the operator-tunable redraft ceiling (default 2 via
|
|
410
|
-
* `lib/config/acceptance-eval.js`). Story #5313 dropped the hard ceiling and
|
|
411
|
-
* the floor-of-one clamp: `maxRounds: 0` is valid and means one pass scored
|
|
412
|
-
* once with no redraft round. There is intentionally **no** `enabled` flag —
|
|
413
|
-
* the scoring pass is a hard cutover, always on, per
|
|
414
|
-
* `rules/git-conventions.md`.
|
|
415
|
-
*/
|
|
416
247
|
const ACCEPTANCE_EVAL_SCHEMA = {
|
|
417
248
|
type: 'object',
|
|
418
249
|
description:
|
|
@@ -429,66 +260,11 @@ const ACCEPTANCE_EVAL_SCHEMA = {
|
|
|
429
260
|
additionalProperties: false,
|
|
430
261
|
};
|
|
431
262
|
|
|
432
|
-
|
|
433
|
-
* `delivery.review` — close-scope review tuning (Story #4699). `lensDiffFloor`
|
|
434
|
-
* is the changed-line floor below which the Story-scope local-lens pass skips
|
|
435
|
-
* lens materialization for a diff with zero sensitive-path hits (default 40
|
|
436
|
-
* via `lib/audit-suite/lens-diff-floor.js`; `0` disables the skip). The
|
|
437
|
-
* maker-blind code-review pass and all hard gates are untouched by the floor.
|
|
438
|
-
*/
|
|
439
|
-
const REVIEW_SCHEMA = {
|
|
440
|
-
type: 'object',
|
|
441
|
-
description:
|
|
442
|
-
'Close-scope review tuning (Story #4699). Governs the Story-scope local-lens pass that runs inside the close subprocess; the maker-blind code-review pass and all hard gates are unaffected.',
|
|
443
|
-
properties: {
|
|
444
|
-
lensDiffFloor: {
|
|
445
|
-
type: 'integer',
|
|
446
|
-
minimum: 0,
|
|
447
|
-
description:
|
|
448
|
-
'Changed-line floor for the close-scope lens walk (Story #4699). A diff strictly below this many changed lines (additions + deletions) with zero sensitive-path hits skips lens materialization and records the skip in the findings-yield ledger. Default 40; 0 disables the skip. Hard gates and the maker-blind code-review pass are unaffected.',
|
|
449
|
-
},
|
|
450
|
-
},
|
|
451
|
-
additionalProperties: false,
|
|
452
|
-
};
|
|
453
|
-
|
|
454
|
-
/**
|
|
455
|
-
* `delivery.feedbackLoop` — the **opt-in** toggle consumed by the retro
|
|
456
|
-
* auto-file graduator (`lib/feedback-loop/retro-proposals-graduator.js`, read
|
|
457
|
-
* via `graduator-core.js#makeIsAutoFileEnabled`), plus the friction window.
|
|
458
|
-
*
|
|
459
|
-
* `auditResultsAutoFile` used to sit beside `retroProposals` here. Its
|
|
460
|
-
* graduator was deleted two releases ago, so by Story #5341 — which flipped
|
|
461
|
-
* its default from `true` to `false` on the measured record of what the
|
|
462
|
-
* channel produced — there was nothing left to switch either way. Story #5366
|
|
463
|
-
* removed the key: a toggle with no runtime reader reads as a live control,
|
|
464
|
-
* and a consumer that set it was configuring nothing. The
|
|
465
|
-
* `2.60.0-retire-audit-results-autofile` migration strips it from both config
|
|
466
|
-
* surfaces, because this block is closed to additional properties and a
|
|
467
|
-
* surviving key is a hard validation failure on upgrade.
|
|
468
|
-
*
|
|
469
|
-
* `retroProposals` (Story #4418) governs the retro auto-filer, and defaults to
|
|
470
|
-
* `false` for the same Story #5341 reasons: Story #5324's roll-up carried 116
|
|
471
|
-
* signals and filed nothing, and issues #4653, #4833, #4834 and #4836 are
|
|
472
|
-
* filings that were false or leaked from test fixtures. An auto-filer whose
|
|
473
|
-
* output is dominated by noise costs triage on every run and buys nothing, so
|
|
474
|
-
* a consumer that wants it now asks for it. When `true` the
|
|
475
|
-
* retro's actionable routed proposals are filed as
|
|
476
|
-
* `meta::<framework-gap|consumer-improvement>` + `friction::<category>`
|
|
477
|
-
* issues via the graduator pre-parsed-findings seam, and the rendered retro
|
|
478
|
-
* sections list the filed issue numbers instead of paste-ready `gh` command
|
|
479
|
-
* stanzas; left `false` it renders the command stanzas.
|
|
480
|
-
*
|
|
481
|
-
* `frictionWindowDays` (Story #4850) bounds the run-scope friction recurrence
|
|
482
|
-
* window by row age. The window deliberately spans every surviving signal
|
|
483
|
-
* stream rather than the triggering run's own Stories — that is what lets a
|
|
484
|
-
* once-per-Story systemic defect reach the ≥ 2 actionable threshold — which
|
|
485
|
-
* left it unbounded in time, so a defect fixed weeks ago kept re-routing. An
|
|
486
|
-
* integer ≥ 1; unset means 30 days.
|
|
487
|
-
*/
|
|
263
|
+
// `retroProposals` defaults off: the auto-filer's output was mostly noise.
|
|
488
264
|
const FEEDBACK_LOOP_SCHEMA = {
|
|
489
265
|
type: 'object',
|
|
490
266
|
description:
|
|
491
|
-
'Opt-in toggle for the close-time retro auto-file graduator
|
|
267
|
+
'Opt-in toggle for the close-time retro auto-file graduator. Auto-filing defaults to OFF (Story #5341).',
|
|
492
268
|
properties: {
|
|
493
269
|
retroProposals: {
|
|
494
270
|
type: 'boolean',
|
|
@@ -496,53 +272,12 @@ const FEEDBACK_LOOP_SCHEMA = {
|
|
|
496
272
|
'When true, the retro auto-files its actionable routed proposals as meta::<framework-gap|consumer-improvement> + friction::<category> issues via the graduator pre-parsed-findings seam, and the rendered retro sections list the filed issue numbers instead of paste-ready gh command stanzas. Defaults to false (Story #5341), which renders the command stanzas instead.',
|
|
497
273
|
default: false,
|
|
498
274
|
},
|
|
499
|
-
frictionWindowDays: {
|
|
500
|
-
type: 'integer',
|
|
501
|
-
minimum: 1,
|
|
502
|
-
description:
|
|
503
|
-
"How many days back the run-scope friction recurrence window reaches (Story #4850). The window spans every surviving per-Story signal stream rather than the triggering run's own Stories, so that a defect firing once per Story can reach the actionable threshold; this bounds it by age so a defect fixed weeks ago stops re-routing. Rows older than the bound — and rows carrying no readable timestamp — are excluded and counted on the roll-up step result. Default 30.",
|
|
504
|
-
},
|
|
505
275
|
},
|
|
506
276
|
additionalProperties: false,
|
|
507
277
|
};
|
|
508
278
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
* (`--auto`) sweep (Story #4626). `severityFloor` is the minimum severity a
|
|
512
|
-
* finding must meet to be proposed as a Story on an unattended run (default
|
|
513
|
-
* `high`); `autoComment`, when true (default), lets `--auto` post a
|
|
514
|
-
* "re-detected" comment on an already-open matched Issue instead of silently
|
|
515
|
-
* skipping it.
|
|
516
|
-
*/
|
|
517
|
-
const AUDIT_TO_STORIES_SCHEMA = {
|
|
518
|
-
type: 'object',
|
|
519
|
-
description:
|
|
520
|
-
'Knobs for the `/audit-to-stories` unattended (`--auto`) sweep (Story #4626).',
|
|
521
|
-
properties: {
|
|
522
|
-
severityFloor: {
|
|
523
|
-
type: 'string',
|
|
524
|
-
enum: ['critical', 'high', 'medium', 'low', 'all'],
|
|
525
|
-
description:
|
|
526
|
-
'Minimum severity a finding must meet to be proposed as a Story on an unattended `/audit-to-stories --auto` sweep (Story #4626). Default high.',
|
|
527
|
-
},
|
|
528
|
-
autoComment: {
|
|
529
|
-
type: 'boolean',
|
|
530
|
-
description:
|
|
531
|
-
'When true (default), `/audit-to-stories --auto` posts a re-detected comment on an already-open matched Issue instead of silently skipping it.',
|
|
532
|
-
},
|
|
533
|
-
},
|
|
534
|
-
additionalProperties: false,
|
|
535
|
-
};
|
|
536
|
-
|
|
537
|
-
/**
|
|
538
|
-
* `delivery.tempRetention` — auto-purge of spent temp artifacts (Story #4794).
|
|
539
|
-
*
|
|
540
|
-
* `enabled` defaults to `true`: reclaiming a landed Story's gate transcripts
|
|
541
|
-
* and evidence is the behaviour, and the knob exists to turn it off. `classes`
|
|
542
|
-
* lets an operator keep one family while purging the rest; `staleDays` is the
|
|
543
|
-
* age floor for the families no Story id can be recovered from (audit reports,
|
|
544
|
-
* abandoned `plan-<slug>/` dirs).
|
|
545
|
-
*/
|
|
279
|
+
// Families with no recoverable Story id (audits, plan dirs) use a fixed
|
|
280
|
+
// 7-day age floor.
|
|
546
281
|
const TEMP_RETENTION_SCHEMA = {
|
|
547
282
|
type: 'object',
|
|
548
283
|
description:
|
|
@@ -559,16 +294,6 @@ const TEMP_RETENTION_SCHEMA = {
|
|
|
559
294
|
'turns it off. When false every purge path is a reported no-op.',
|
|
560
295
|
default: true,
|
|
561
296
|
},
|
|
562
|
-
staleDays: {
|
|
563
|
-
type: 'integer',
|
|
564
|
-
minimum: 1,
|
|
565
|
-
description:
|
|
566
|
-
'Age floor (days, default 7) for the families no Story id can be ' +
|
|
567
|
-
'recovered from — roster-level audit reports and abandoned ' +
|
|
568
|
-
'plan-<slug>/ dirs. Story-keyed artifacts do not wait for it: they are ' +
|
|
569
|
-
'purged as soon as their merge is confirmed.',
|
|
570
|
-
default: 7,
|
|
571
|
-
},
|
|
572
297
|
classes: {
|
|
573
298
|
type: 'object',
|
|
574
299
|
description:
|
|
@@ -611,27 +336,20 @@ const TEMP_RETENTION_SCHEMA = {
|
|
|
611
336
|
export const DELIVERY_SCHEMA = {
|
|
612
337
|
type: 'object',
|
|
613
338
|
description:
|
|
614
|
-
'Everything `/mandrel-deliver` and `single-story-close` consume:
|
|
339
|
+
'Everything `/mandrel-deliver` and `single-story-close` consume: worktree isolation, runner concurrency, docs freshness, quality gates, merge/CI watch, review ceremony, and the feedback loop.',
|
|
615
340
|
properties: {
|
|
616
341
|
execution: EXECUTION_SCHEMA,
|
|
617
342
|
docsFreshness: DOCS_FRESHNESS_SCHEMA,
|
|
618
343
|
tempRetention: TEMP_RETENTION_SCHEMA,
|
|
619
344
|
deliverRunner: DELIVER_RUNNER_SCHEMA,
|
|
620
345
|
worktreeIsolation: WORKTREE_ISOLATION_SCHEMA,
|
|
621
|
-
// `
|
|
622
|
-
// `config/gates/crap.schema.js` and reaches AJV validation through this
|
|
623
|
-
// property — QUALITY_SCHEMA → GATES_SCHEMA → CRAP_GATE. No separate
|
|
624
|
-
// declaration lives here; this is the composition point that makes the
|
|
625
|
-
// gate-level schema authoritative for the top-level `.agentrc.json`
|
|
626
|
-
// surface this module validates.
|
|
346
|
+
// Gate-level schemas (`config/gates/*.schema.js`) compose in here.
|
|
627
347
|
quality: QUALITY_SCHEMA,
|
|
628
348
|
mergeWatch: MERGE_WATCH_SCHEMA,
|
|
629
349
|
codeReview: CODE_REVIEW_SCHEMA,
|
|
630
|
-
review: REVIEW_SCHEMA,
|
|
631
350
|
refactorStage: REFACTOR_STAGE_SCHEMA,
|
|
632
351
|
acceptanceEval: ACCEPTANCE_EVAL_SCHEMA,
|
|
633
352
|
feedbackLoop: FEEDBACK_LOOP_SCHEMA,
|
|
634
|
-
auditToStories: AUDIT_TO_STORIES_SCHEMA,
|
|
635
353
|
ci: CI_DELIVERY_SCHEMA,
|
|
636
354
|
routing: ROUTING_SCHEMA,
|
|
637
355
|
},
|