mandrel 2.59.0 → 2.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/README.md +21 -19
- package/.agents/agents/acceptance-critic.md +24 -43
- package/.agents/agents/story-worker.md +20 -21
- package/.agents/docs/agentrc-reference.json +5 -84
- package/.agents/docs/configuration.md +48 -132
- package/.agents/docs/workflows.md +2 -2
- package/.agents/instructions.md +5 -8
- package/.agents/rules/ci-remediation.md +41 -8
- package/.agents/rules/gherkin-standards.md +4 -0
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +16 -496
- package/.agents/schemas/story-deliver-terminal.schema.json +13 -3
- package/.agents/schemas/validation-evidence.schema.json +2 -1
- package/.agents/scripts/README.md +23 -13
- package/.agents/scripts/acceptance-eval.js +35 -169
- package/.agents/scripts/agents-bootstrap-github.js +27 -129
- package/.agents/scripts/apply-quality-bootstrap.js +4 -40
- package/.agents/scripts/audit-baselines.js +6 -27
- package/.agents/scripts/audit-labels-bootstrap.js +5 -29
- package/.agents/scripts/audit-to-stories.js +91 -361
- package/.agents/scripts/boot-sweep.js +19 -72
- package/.agents/scripts/bootstrap.js +74 -395
- package/.agents/scripts/ceremony-derive.js +10 -41
- package/.agents/scripts/check-arch-cycles.js +14 -64
- package/.agents/scripts/check-baselines.js +8 -48
- package/.agents/scripts/check-context-budget.js +105 -311
- package/.agents/scripts/check-cyclomatic.js +12 -44
- package/.agents/scripts/check-dead-exports.js +13 -64
- package/.agents/scripts/check-doc-links.js +38 -186
- package/.agents/scripts/check-gherkin-corpus.js +24 -127
- package/.agents/scripts/check-test-temp-hygiene.js +28 -169
- package/.agents/scripts/coverage-capture.js +34 -98
- package/.agents/scripts/deliver-light.js +25 -171
- package/.agents/scripts/deliver-recover.js +6 -42
- package/.agents/scripts/deliver-run.js +534 -0
- package/.agents/scripts/diagnose-friction.js +24 -116
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/evidence-gate.js +23 -85
- package/.agents/scripts/file-ci-gap.js +57 -49
- package/.agents/scripts/generate-config-docs.js +30 -170
- package/.agents/scripts/generate-lens-checklists.js +8 -52
- package/.agents/scripts/generate-skills-index.js +14 -112
- package/.agents/scripts/generate-workflows-doc.js +10 -70
- package/.agents/scripts/git-cleanup.js +2 -34
- package/.agents/scripts/lib/Graph.js +24 -81
- package/.agents/scripts/lib/ITicketingProvider.js +47 -143
- package/.agents/scripts/lib/Logger.js +14 -76
- package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
- package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
- package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
- package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
- package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
- package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
- package/.agents/scripts/lib/audit-baselines/read.js +3 -16
- package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
- package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
- package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
- package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
- package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
- package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
- package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
- package/.agents/scripts/lib/audit-suite/findings.js +12 -52
- package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
- package/.agents/scripts/lib/audit-suite/index.js +1 -15
- package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
- package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
- package/.agents/scripts/lib/audit-suite/runner.js +13 -43
- package/.agents/scripts/lib/audit-suite/selector.js +49 -349
- package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
- package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
- package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
- package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
- package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
- package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
- package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
- package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
- package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
- package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
- package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
- package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
- package/.agents/scripts/lib/baseline-loader.js +12 -51
- package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
- package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
- package/.agents/scripts/lib/baselines/components.js +10 -61
- package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
- package/.agents/scripts/lib/baselines/crap-preview-incremental.js +7 -19
- package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
- package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
- package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
- package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
- package/.agents/scripts/lib/baselines/envelope.js +13 -129
- package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
- package/.agents/scripts/lib/baselines/git-base.js +23 -142
- package/.agents/scripts/lib/baselines/kernel.js +11 -111
- package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
- package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
- package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
- package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
- package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
- package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
- package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
- package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
- package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
- package/.agents/scripts/lib/baselines/path-canon.js +19 -128
- package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
- package/.agents/scripts/lib/baselines/reader.js +14 -107
- package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
- package/.agents/scripts/lib/baselines/scope.js +11 -135
- package/.agents/scripts/lib/baselines/writer.js +16 -149
- package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
- package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
- package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
- package/.agents/scripts/lib/bdd-step-index.js +26 -100
- package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
- package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
- package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
- package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
- package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
- package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
- package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
- package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
- package/.agents/scripts/lib/bootstrap/summary.js +1 -8
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
- package/.agents/scripts/lib/branch-name-guard.js +4 -23
- package/.agents/scripts/lib/changed-files.js +39 -121
- package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
- package/.agents/scripts/lib/checks/index.js +18 -101
- package/.agents/scripts/lib/checks/loop-health.js +11 -53
- package/.agents/scripts/lib/checks/state.js +16 -91
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
- package/.agents/scripts/lib/child-exec.js +39 -108
- package/.agents/scripts/lib/cli/standard-args.js +9 -116
- package/.agents/scripts/lib/cli-args.js +31 -146
- package/.agents/scripts/lib/cli-usage.js +5 -27
- package/.agents/scripts/lib/cli-utils.js +2 -12
- package/.agents/scripts/lib/close-validation/commands.js +13 -76
- package/.agents/scripts/lib/close-validation/gates.js +92 -331
- package/.agents/scripts/lib/close-validation/process.js +121 -151
- package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
- package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
- package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
- package/.agents/scripts/lib/close-validation/runner.js +53 -110
- package/.agents/scripts/lib/command-header.js +6 -28
- package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
- package/.agents/scripts/lib/config/baselines.js +3 -14
- package/.agents/scripts/lib/config/ci.js +8 -38
- package/.agents/scripts/lib/config/commands.js +1 -15
- package/.agents/scripts/lib/config/defaults.js +4 -33
- package/.agents/scripts/lib/config/delivery-routing.js +6 -34
- package/.agents/scripts/lib/config/explain.js +10 -83
- package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
- package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +3 -31
- package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
- package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
- package/.agents/scripts/lib/config/gates/index.js +2 -17
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
- package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
- package/.agents/scripts/lib/config/gates/shared.js +4 -64
- package/.agents/scripts/lib/config/github.js +4 -22
- package/.agents/scripts/lib/config/limits.js +4 -57
- package/.agents/scripts/lib/config/paths.js +2 -21
- package/.agents/scripts/lib/config/qa.js +4 -38
- package/.agents/scripts/lib/config/quality.js +76 -432
- package/.agents/scripts/lib/config/runners.js +12 -56
- package/.agents/scripts/lib/config/runtime.js +13 -57
- package/.agents/scripts/lib/config/shared.js +2 -16
- package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
- package/.agents/scripts/lib/config/temp-paths.js +40 -280
- package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
- package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
- package/.agents/scripts/lib/config-resolver.js +11 -52
- package/.agents/scripts/lib/config-schema-shared.js +1 -4
- package/.agents/scripts/lib/config-settings-schema-delivery.js +16 -291
- package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
- package/.agents/scripts/lib/config-settings-schema.js +37 -274
- package/.agents/scripts/lib/coverage-baseline.js +20 -110
- package/.agents/scripts/lib/coverage-capture-fullscope.js +18 -35
- package/.agents/scripts/lib/coverage-capture-incremental.js +15 -45
- package/.agents/scripts/lib/coverage-capture-usage.js +8 -25
- package/.agents/scripts/lib/coverage-capture.js +99 -224
- package/.agents/scripts/lib/coverage-utils.js +14 -79
- package/.agents/scripts/lib/cpu-pool.js +17 -123
- package/.agents/scripts/lib/crap-baseline-join.js +16 -88
- package/.agents/scripts/lib/crap-coordinates.js +6 -25
- package/.agents/scripts/lib/crap-engine.js +40 -153
- package/.agents/scripts/lib/crap-method-identity.js +16 -78
- package/.agents/scripts/lib/crap-utils.js +31 -155
- package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
- package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
- package/.agents/scripts/lib/dead-exports-knip.js +18 -56
- package/.agents/scripts/lib/dead-exports-mode.js +5 -24
- package/.agents/scripts/lib/degraded-mode.js +3 -26
- package/.agents/scripts/lib/dependency-parser.js +8 -40
- package/.agents/scripts/lib/dependency-version.js +13 -35
- package/.agents/scripts/lib/detect-package-manager.js +6 -36
- package/.agents/scripts/lib/doc-tiers.js +22 -124
- package/.agents/scripts/lib/duplicate-search.js +8 -72
- package/.agents/scripts/lib/env-loader.js +5 -27
- package/.agents/scripts/lib/error-redactor.js +6 -31
- package/.agents/scripts/lib/errors/index.js +2 -22
- package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
- package/.agents/scripts/lib/escomplex-kernel.js +21 -123
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +94 -419
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -149
- package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
- package/.agents/scripts/lib/findings/classify-finding.js +14 -69
- package/.agents/scripts/lib/findings/promote-finding.js +14 -112
- package/.agents/scripts/lib/findings/provenance-field.js +11 -52
- package/.agents/scripts/lib/findings/route-finding.js +37 -255
- package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
- package/.agents/scripts/lib/findings/severity.js +18 -104
- package/.agents/scripts/lib/format-generated-json.js +12 -44
- package/.agents/scripts/lib/full-suite-lock.js +160 -429
- package/.agents/scripts/lib/full-suite-queue.js +213 -0
- package/.agents/scripts/lib/gates/baseline-store.js +5 -9
- package/.agents/scripts/lib/gates/friction.js +1 -3
- package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
- package/.agents/scripts/lib/gh-exec.js +123 -191
- package/.agents/scripts/lib/git/cached-fetch.js +9 -52
- package/.agents/scripts/lib/git/sync-from-base.js +15 -107
- package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
- package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
- package/.agents/scripts/lib/git-utils.js +37 -161
- package/.agents/scripts/lib/github/framework-repo.js +8 -71
- package/.agents/scripts/lib/github-url.js +2 -17
- package/.agents/scripts/lib/import-graph.js +11 -38
- package/.agents/scripts/lib/install-cmd-parser.js +4 -13
- package/.agents/scripts/lib/json-utils.js +3 -18
- package/.agents/scripts/lib/label-constants.js +16 -111
- package/.agents/scripts/lib/label-taxonomy.js +4 -30
- package/.agents/scripts/lib/maintainability-engine.js +12 -80
- package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
- package/.agents/scripts/lib/maintainability-utils.js +16 -92
- package/.agents/scripts/lib/mandrel-catalog.js +12 -70
- package/.agents/scripts/lib/notifications/notifier.js +13 -38
- package/.agents/scripts/lib/npm-scripts.js +4 -23
- package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
- package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
- package/.agents/scripts/lib/observability/signal-validator.js +5 -37
- package/.agents/scripts/lib/observability/signals-writer.js +11 -121
- package/.agents/scripts/lib/observability/source-classifier.js +22 -203
- package/.agents/scripts/lib/observability/terse-result.js +14 -47
- package/.agents/scripts/lib/onboard/init-tail.js +13 -74
- package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
- package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
- package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +28 -156
- package/.agents/scripts/lib/orchestration/change-set.js +7 -36
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
- package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
- package/.agents/scripts/lib/orchestration/check-state.js +92 -0
- package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
- package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +121 -157
- package/.agents/scripts/lib/orchestration/code-review.js +24 -128
- package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
- package/.agents/scripts/lib/orchestration/complexity-gate.js +118 -462
- package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
- package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
- package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
- package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
- package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
- package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
- package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
- package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
- package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
- package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
- package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
- package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
- package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
- package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
- package/.agents/scripts/lib/orchestration/light-suitability.js +37 -307
- package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
- package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
- package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
- package/.agents/scripts/lib/orchestration/plan-context.js +55 -318
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
- package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
- package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
- package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
- package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
- package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +16 -78
- package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
- package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
- package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
- package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
- package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +71 -289
- package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +96 -362
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +9 -39
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +60 -186
- package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
- package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
- package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
- package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
- package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
- package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
- package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
- package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
- package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
- package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
- package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
- package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
- package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
- package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
- package/.agents/scripts/lib/orchestration/review-depth.js +12 -91
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
- package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
- package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
- package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
- package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
- package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
- package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
- package/.agents/scripts/lib/orchestration/run-epilogue.js +245 -326
- package/.agents/scripts/lib/orchestration/run-scoped-config.js +55 -159
- package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
- package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
- package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +83 -239
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +20 -82
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
- package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +136 -486
- package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
- package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +96 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
- package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +180 -273
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
- package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
- package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
- package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
- package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
- package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
- package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
- package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -200
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +167 -252
- package/.agents/scripts/lib/orchestration/story-init-envelope.js +52 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
- package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
- package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -135
- package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
- package/.agents/scripts/lib/orchestration/ticket-validator.js +63 -344
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -261
- package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
- package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
- package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
- package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
- package/.agents/scripts/lib/path-security.js +3 -6
- package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
- package/.agents/scripts/lib/preflight-runner.js +13 -69
- package/.agents/scripts/lib/process-group.js +143 -0
- package/.agents/scripts/lib/project-root.js +2 -8
- package/.agents/scripts/lib/provider-factory.js +2 -25
- package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
- package/.agents/scripts/lib/qa/qa-session.js +15 -69
- package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
- package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
- package/.agents/scripts/lib/reserved-test-ids.js +9 -47
- package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
- package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
- package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
- package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
- package/.agents/scripts/lib/signals/detectors/common.js +12 -38
- package/.agents/scripts/lib/signals/index.js +2 -19
- package/.agents/scripts/lib/signals/schema.js +14 -109
- package/.agents/scripts/lib/signals/write.js +2 -11
- package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
- package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
- package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
- package/.agents/scripts/lib/single-story-sweep.js +14 -97
- package/.agents/scripts/lib/skills/parse-skill.js +13 -59
- package/.agents/scripts/lib/skills/skills-index.js +8 -29
- package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
- package/.agents/scripts/lib/source-extensions.js +11 -42
- package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
- package/.agents/scripts/lib/stdio-flush.js +9 -36
- package/.agents/scripts/lib/story-adjacency.js +8 -40
- package/.agents/scripts/lib/story-body/body-format-lints.js +51 -66
- package/.agents/scripts/lib/story-body/footer-block.js +11 -44
- package/.agents/scripts/lib/story-body/story-body.js +123 -344
- package/.agents/scripts/lib/temp-retention.js +42 -143
- package/.agents/scripts/lib/templates/decomposer-prompts.js +18 -80
- package/.agents/scripts/lib/test-env.js +12 -65
- package/.agents/scripts/lib/test-run-credit.js +10 -65
- package/.agents/scripts/lib/test-runner-contract.js +19 -74
- package/.agents/scripts/lib/test-temp.js +38 -184
- package/.agents/scripts/lib/test-tiers.js +12 -96
- package/.agents/scripts/lib/ticket-body-sections.js +21 -96
- package/.agents/scripts/lib/transpile.js +15 -74
- package/.agents/scripts/lib/util/concurrent-map.js +6 -25
- package/.agents/scripts/lib/util/parse-id-list.js +8 -34
- package/.agents/scripts/lib/util/poll-loop.js +8 -28
- package/.agents/scripts/lib/util/with-timeout.js +2 -11
- package/.agents/scripts/lib/validation-evidence.js +21 -96
- package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
- package/.agents/scripts/lib/wave-runner/live-probe.js +67 -209
- package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
- package/.agents/scripts/lib/workers/crap-worker.js +11 -64
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
- package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
- package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
- package/.agents/scripts/lib/workflow-closure.js +22 -105
- package/.agents/scripts/lib/workspace-provisioner.js +16 -54
- package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
- package/.agents/scripts/lib/worktree-manager.js +15 -40
- package/.agents/scripts/lint-issue-body.js +12 -68
- package/.agents/scripts/mandrel-update-preflight.js +10 -70
- package/.agents/scripts/merge-baseline.js +30 -105
- package/.agents/scripts/nav-registry-diff.js +22 -108
- package/.agents/scripts/notify.js +12 -69
- package/.agents/scripts/plan-context.js +97 -92
- package/.agents/scripts/plan-critics.js +12 -66
- package/.agents/scripts/plan-persist.js +71 -137
- package/.agents/scripts/plan-run-epilogue.js +20 -43
- package/.agents/scripts/pr-watch-with-update.js +79 -263
- package/.agents/scripts/providers/github/auth.js +3 -8
- package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
- package/.agents/scripts/providers/github/board-add.js +5 -21
- package/.agents/scripts/providers/github/branch-protection.js +11 -43
- package/.agents/scripts/providers/github/cache.js +2 -14
- package/.agents/scripts/providers/github/comments.js +7 -40
- package/.agents/scripts/providers/github/compose.js +3 -19
- package/.agents/scripts/providers/github/errors.js +22 -125
- package/.agents/scripts/providers/github/issues.js +31 -123
- package/.agents/scripts/providers/github/labels.js +24 -124
- package/.agents/scripts/providers/github/mappers.js +5 -27
- package/.agents/scripts/providers/github/merge-methods.js +3 -22
- package/.agents/scripts/providers/github/project-board.js +2 -17
- package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
- package/.agents/scripts/providers/github/request-helpers.js +5 -32
- package/.agents/scripts/providers/github/search-budget.js +9 -39
- package/.agents/scripts/providers/github/search-query.js +5 -26
- package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
- package/.agents/scripts/providers/github/sub-issues.js +7 -36
- package/.agents/scripts/providers/github/tickets.js +32 -134
- package/.agents/scripts/providers/github.js +18 -59
- package/.agents/scripts/prune-plan-run-labels.js +12 -46
- package/.agents/scripts/quality-preview.js +35 -220
- package/.agents/scripts/resolve-doc-tiers.js +3 -26
- package/.agents/scripts/resolve-stories.js +16 -67
- package/.agents/scripts/resync-status-column.js +6 -25
- package/.agents/scripts/run-tests.js +29 -104
- package/.agents/scripts/single-story-close.js +23 -135
- package/.agents/scripts/single-story-confirm-merge.js +32 -139
- package/.agents/scripts/single-story-init.js +47 -259
- package/.agents/scripts/stories-wave-tick.js +179 -415
- package/.agents/scripts/sync-agentrc.js +3 -21
- package/.agents/scripts/sync-claude-agents.js +9 -55
- package/.agents/scripts/sync-claude-commands.js +20 -110
- package/.agents/scripts/test-wrapper.js +6 -43
- package/.agents/scripts/update-coverage-baseline.js +5 -22
- package/.agents/scripts/update-crap-baseline.js +7 -30
- package/.agents/scripts/update-duplication-baseline.js +16 -92
- package/.agents/scripts/update-maintainability-baseline.js +8 -62
- package/.agents/scripts/update-ticket-state.js +1 -7
- package/.agents/scripts/validate-skills.js +6 -26
- package/.agents/skills/core/gates-and-baselines/reference.md +0 -1
- package/.agents/skills/skills.index.json +2 -2
- package/.agents/skills/stack/qa/playwright/SKILL.md +26 -0
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
- package/.agents/workflows/audit-accessibility.md +4 -7
- package/.agents/workflows/audit-adrs.md +3 -6
- package/.agents/workflows/audit-architecture.md +3 -11
- package/.agents/workflows/audit-baselines.md +6 -9
- package/.agents/workflows/audit-clean-code.md +8 -12
- package/.agents/workflows/audit-data-model.md +3 -7
- package/.agents/workflows/audit-dependencies.md +4 -7
- package/.agents/workflows/audit-devops.md +4 -8
- package/.agents/workflows/audit-documentation.md +1 -4
- package/.agents/workflows/audit-mobile.md +4 -7
- package/.agents/workflows/audit-navigability.md +3 -6
- package/.agents/workflows/audit-performance.md +2 -4
- package/.agents/workflows/audit-privacy.md +4 -7
- package/.agents/workflows/audit-quality.md +4 -7
- package/.agents/workflows/audit-security.md +4 -7
- package/.agents/workflows/audit-seo.md +4 -7
- package/.agents/workflows/audit-sre.md +4 -7
- package/.agents/workflows/audit-to-stories.md +17 -30
- package/.agents/workflows/audit-ux-ui.md +4 -7
- package/.agents/workflows/helpers/acceptance-self-eval.md +84 -157
- package/.agents/workflows/helpers/audit-lens-core.md +1 -1
- package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
- package/.agents/workflows/helpers/code-review.md +4 -2
- package/.agents/workflows/helpers/deliver-digest.md +37 -28
- package/.agents/workflows/helpers/deliver-light.md +92 -101
- package/.agents/workflows/helpers/deliver-reference.md +162 -220
- package/.agents/workflows/helpers/deliver-story-reference.md +197 -607
- package/.agents/workflows/helpers/deliver-story.md +17 -18
- package/.agents/workflows/helpers/plan-reference.md +125 -167
- package/.agents/workflows/helpers/qa-core.md +12 -0
- package/.agents/workflows/mandrel-deliver.md +47 -31
- package/.agents/workflows/mandrel-plan.md +22 -21
- package/.agents/workflows/mandrel-update.md +36 -21
- package/.agents/workflows/memory-consolidate.md +1 -1
- package/.agents/workflows/qa-assist.md +27 -71
- package/.agents/workflows/qa-explore.md +19 -59
- package/.agents/workflows/qa-run.md +11 -33
- package/README.md +1 -1
- package/bin/mandrel.js +5 -46
- package/bin/postinstall.js +18 -107
- package/docs/CHANGELOG.md +60 -0
- package/lib/cli/doctor.js +11 -71
- package/lib/cli/init.js +26 -165
- package/lib/cli/migrate.js +5 -64
- package/lib/cli/registry.js +84 -467
- package/lib/cli/sync-agents.js +4 -64
- package/lib/cli/sync-commands.js +11 -64
- package/lib/cli/sync.js +34 -213
- package/lib/cli/uninstall.js +40 -219
- package/lib/cli/update.js +326 -523
- package/lib/cli/version-check.js +8 -72
- package/lib/cli/version-helpers.js +14 -87
- package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
- package/lib/migrations/index.js +17 -92
- package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
- package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
- package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
- package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
- package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
- package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
- package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
- package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
- package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +21 -0
- package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
- package/package.json +17 -14
- package/.agents/docs/SDLC.md +0 -590
- package/.agents/docs/quality-gates.md +0 -1179
- package/.agents/rules/known-tooling-behavior.md +0 -150
- package/.agents/rules/orchestration-error-handling.md +0 -61
- package/.agents/rules/test-seams.md +0 -59
- package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
- package/.agents/schemas/baselines/lint.schema.json +0 -47
- package/.agents/schemas/model-attribution.schema.json +0 -53
- package/.agents/scripts/check-action-pinning.js +0 -260
- package/.agents/scripts/check-audit-attribution.js +0 -302
- package/.agents/scripts/check-baseline-drift.js +0 -211
- package/.agents/scripts/check-baseline-scope.js +0 -362
- package/.agents/scripts/check-generated-validator.js +0 -202
- package/.agents/scripts/check-knip-entries.js +0 -159
- package/.agents/scripts/check-lifecycle-lint.js +0 -294
- package/.agents/scripts/check-pinned-override-notes.js +0 -102
- package/.agents/scripts/check-schema-references.js +0 -366
- package/.agents/scripts/check-test-portability.js +0 -512
- package/.agents/scripts/check-workflow-citations.js +0 -332
- package/.agents/scripts/check-workflow-cli-lint.js +0 -299
- package/.agents/scripts/check-workflow-timeouts.js +0 -291
- package/.agents/scripts/install-matrix-assert.js +0 -326
- package/.agents/scripts/lib/audit-advisories.js +0 -195
- package/.agents/scripts/lib/audit-attribution.js +0 -134
- package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
- package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
- package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
- package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
- package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
- package/.agents/scripts/lib/c8-cli-path.js +0 -21
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
- package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
- package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
- package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
- package/.agents/scripts/lib/fs-walk.js +0 -52
- package/.agents/scripts/lib/knip-config-resolver.js +0 -181
- package/.agents/scripts/lib/knip-entry-sync.js +0 -452
- package/.agents/scripts/lib/orchestration/model-attribution.js +0 -418
- package/.agents/scripts/lib/orchestration/story-plan-state.js +0 -33
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +0 -67
- package/.agents/scripts/lib/pinned-override-notes.js +0 -88
- package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
- package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
- package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
- package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
- package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
- package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
- package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
- package/.agents/scripts/lib/test-isolate/runner.js +0 -483
- package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
- package/.agents/scripts/lib/test-profile/render-report.js +0 -45
- package/.agents/scripts/lint-label-vocabulary.js +0 -214
- package/.agents/scripts/post-structured-comment.js +0 -127
- package/.agents/scripts/provision-git-hooks.js +0 -85
- package/.agents/scripts/prune-baseline-orphans.js +0 -181
- package/.agents/scripts/run-coverage.js +0 -197
- package/.agents/scripts/run-lint.js +0 -133
- package/.agents/scripts/run-test-profile.js +0 -129
- package/.agents/scripts/run-verify.js +0 -118
- package/.agents/scripts/test-isolate.js +0 -55
- package/.agents/scripts/update-dead-exports-baseline.js +0 -321
|
@@ -1,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';
|
|
@@ -62,6 +43,7 @@ export { resolveListValue } from './config/shared.js';
|
|
|
62
43
|
export { validateOrchestrationConfig } from './config/validate-orchestration.js';
|
|
63
44
|
export {
|
|
64
45
|
defaultNodeModulesStrategy,
|
|
46
|
+
getWorktreeIsolation,
|
|
65
47
|
WORKTREE_ISOLATION_DEFAULTS,
|
|
66
48
|
} from './config/worktree-isolation.js';
|
|
67
49
|
export { PROJECT_ROOT } from './project-root.js';
|
|
@@ -94,10 +76,8 @@ function applyCommandsDefaults(project) {
|
|
|
94
76
|
}
|
|
95
77
|
|
|
96
78
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* `Boolean(undefined) === false` previously disabled worktrees silently
|
|
100
|
-
* 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.
|
|
101
81
|
*/
|
|
102
82
|
function applyDeliveryDefaults(rawDelivery) {
|
|
103
83
|
const delivery = { ...(rawDelivery ?? {}) };
|
|
@@ -110,10 +90,6 @@ function applyDeliveryDefaults(rawDelivery) {
|
|
|
110
90
|
return delivery;
|
|
111
91
|
}
|
|
112
92
|
|
|
113
|
-
/**
|
|
114
|
-
* Apply framework defaults for the four top-level blocks. Pure (no
|
|
115
|
-
* mutation) — returns a fresh object.
|
|
116
|
-
*/
|
|
117
93
|
/**
|
|
118
94
|
* Deep-merge plain objects for the `.agentrc.local.json` overlay. Arrays and
|
|
119
95
|
* scalars from `override` replace the base value at that key.
|
|
@@ -173,9 +149,6 @@ const ZERO_CONFIG_RAW = Object.freeze({
|
|
|
173
149
|
|
|
174
150
|
function applyDefaults(raw) {
|
|
175
151
|
const project = applyCommandsDefaults({ ...(raw.project ?? {}) });
|
|
176
|
-
// Default docsContextFiles list — same five files the framework has
|
|
177
|
-
// always shipped, preserved here so zero-config callers and configs
|
|
178
|
-
// that omit the list both get the canonical mandatory-reads set.
|
|
179
152
|
if (project.docsContextFiles == null) {
|
|
180
153
|
project.docsContextFiles = [
|
|
181
154
|
'architecture.md',
|
|
@@ -193,29 +166,15 @@ function applyDefaults(raw) {
|
|
|
193
166
|
github: applyGithubDefaults(raw.github),
|
|
194
167
|
planning: raw.planning ?? {},
|
|
195
168
|
delivery: applyDeliveryDefaults(raw.delivery),
|
|
196
|
-
//
|
|
197
|
-
// `#/$defs/qa`). It needs no default-layering — the harness resolver
|
|
198
|
-
// (`resolveQaContract`) owns normalization and required-field
|
|
199
|
-
// enforcement — it only needs to survive the reshape so
|
|
200
|
-
// `/qa-run` Step 0 can read it off the resolved wrapper.
|
|
169
|
+
// Passed through as authored; `resolveQaContract` owns normalization.
|
|
201
170
|
...(raw.qa !== undefined ? { qa: raw.qa } : {}),
|
|
202
171
|
};
|
|
203
172
|
}
|
|
204
173
|
|
|
205
174
|
/**
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
* {
|
|
210
|
-
* project, github, planning, delivery, // post-reshape canonical blocks
|
|
211
|
-
* qa, // optional QA-harness block (present iff authored)
|
|
212
|
-
* raw, source,
|
|
213
|
-
* }
|
|
214
|
-
*
|
|
215
|
-
* Error policy:
|
|
216
|
-
* - File missing (ENOENT) → fall through to built-in defaults (zero-config).
|
|
217
|
-
* - File present but malformed JSON → throw immediately.
|
|
218
|
-
* - 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.
|
|
219
178
|
*
|
|
220
179
|
* @param {{ bustCache?: boolean, cwd?: string, validate?: boolean, ctx?: object }} [opts]
|
|
221
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,35 +161,14 @@ 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): the standard profile now routes purely off
|
|
262
|
-
// the derived change level.
|
|
263
168
|
const ROUTING_SCHEMA = {
|
|
264
169
|
type: 'object',
|
|
265
170
|
description:
|
|
266
|
-
'v2 delivery-spawn routing: role-scoped boot contexts and the ceremony profile. The v1 singleDelivery epic-route kill-switch was removed in Stage 6; the freshCriticSampleRate sampling floor was retired in Story #5313.',
|
|
171
|
+
'v2 delivery-spawn routing: role-scoped boot contexts and the ceremony profile. The v1 singleDelivery epic-route kill-switch was removed in Stage 6; the freshCriticSampleRate sampling floor was retired in Story #5313 and the derived-level ceremony routing in Story #5343.',
|
|
267
172
|
properties: {
|
|
268
173
|
roleScopedAgents: {
|
|
269
174
|
type: 'boolean',
|
|
@@ -275,7 +180,7 @@ const ROUTING_SCHEMA = {
|
|
|
275
180
|
type: 'string',
|
|
276
181
|
enum: ['minimal', 'standard', 'strict'],
|
|
277
182
|
description:
|
|
278
|
-
'Acceptance-ceremony depth. minimal =
|
|
183
|
+
'Acceptance-ceremony depth — who authors the Story acceptance verdict. minimal and standard (default) = the inline self-eval, whatever the diff touches; strict = a fresh-context maker-blind critic. Review depth is a separate decision and still derives `deep` for any sensitive path (review-depth.js).',
|
|
279
184
|
default: DELIVERY_ROUTING_DEFAULTS.ceremonyProfile,
|
|
280
185
|
},
|
|
281
186
|
closeAndLand: {
|
|
@@ -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,113 +260,24 @@ 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` — opt-out toggles consumed by the Epic finalize
|
|
456
|
-
* listener's auto-file graduators (`lib/feedback-loop/*-graduator.js`, read
|
|
457
|
-
* via `graduator-core.js#makeIsAutoFileEnabled`). All default to `true`
|
|
458
|
-
* (auto-file on); set any to `false` to suppress auto-filing the
|
|
459
|
-
* corresponding non-blocking findings as follow-up issues.
|
|
460
|
-
*
|
|
461
|
-
* `retroProposals` (Story #4418) governs the retro auto-filer: when true
|
|
462
|
-
* (default) the retro's actionable routed proposals are filed as
|
|
463
|
-
* `meta::<framework-gap|consumer-improvement>` + `friction::<category>`
|
|
464
|
-
* issues via the graduator pre-parsed-findings seam, and the rendered retro
|
|
465
|
-
* sections list the filed issue numbers instead of paste-ready `gh` command
|
|
466
|
-
* stanzas; set it to `false` to fall back to the command stanzas.
|
|
467
|
-
*
|
|
468
|
-
* `frictionWindowDays` (Story #4850) bounds the run-scope friction recurrence
|
|
469
|
-
* window by row age. The window deliberately spans every surviving signal
|
|
470
|
-
* stream rather than the triggering run's own Stories — that is what lets a
|
|
471
|
-
* once-per-Story systemic defect reach the ≥ 2 actionable threshold — which
|
|
472
|
-
* left it unbounded in time, so a defect fixed weeks ago kept re-routing. An
|
|
473
|
-
* integer ≥ 1; unset means 30 days.
|
|
474
|
-
*/
|
|
263
|
+
// `retroProposals` defaults off: the auto-filer's output was mostly noise.
|
|
475
264
|
const FEEDBACK_LOOP_SCHEMA = {
|
|
476
265
|
type: 'object',
|
|
477
266
|
description:
|
|
478
|
-
'Opt-
|
|
267
|
+
'Opt-in toggle for the close-time retro auto-file graduator. Auto-filing defaults to OFF (Story #5341).',
|
|
479
268
|
properties: {
|
|
480
|
-
auditResultsAutoFile: {
|
|
481
|
-
type: 'boolean',
|
|
482
|
-
description:
|
|
483
|
-
'When true (default), the close-time audit-results graduator auto-files non-blocking audit-results findings as follow-up issues routed by source classification. Set to false to suppress auto-filing; findings remain accessible in the structured comments on the Story.',
|
|
484
|
-
default: true,
|
|
485
|
-
},
|
|
486
269
|
retroProposals: {
|
|
487
270
|
type: 'boolean',
|
|
488
271
|
description:
|
|
489
|
-
'When true
|
|
490
|
-
default:
|
|
491
|
-
},
|
|
492
|
-
frictionWindowDays: {
|
|
493
|
-
type: 'integer',
|
|
494
|
-
minimum: 1,
|
|
495
|
-
description:
|
|
496
|
-
"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.",
|
|
497
|
-
},
|
|
498
|
-
},
|
|
499
|
-
additionalProperties: false,
|
|
500
|
-
};
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* `delivery.auditToStories` — knobs for the `/audit-to-stories` unattended
|
|
504
|
-
* (`--auto`) sweep (Story #4626). `severityFloor` is the minimum severity a
|
|
505
|
-
* finding must meet to be proposed as a Story on an unattended run (default
|
|
506
|
-
* `high`); `autoComment`, when true (default), lets `--auto` post a
|
|
507
|
-
* "re-detected" comment on an already-open matched Issue instead of silently
|
|
508
|
-
* skipping it.
|
|
509
|
-
*/
|
|
510
|
-
const AUDIT_TO_STORIES_SCHEMA = {
|
|
511
|
-
type: 'object',
|
|
512
|
-
description:
|
|
513
|
-
'Knobs for the `/audit-to-stories` unattended (`--auto`) sweep (Story #4626).',
|
|
514
|
-
properties: {
|
|
515
|
-
severityFloor: {
|
|
516
|
-
type: 'string',
|
|
517
|
-
enum: ['critical', 'high', 'medium', 'low', 'all'],
|
|
518
|
-
description:
|
|
519
|
-
'Minimum severity a finding must meet to be proposed as a Story on an unattended `/audit-to-stories --auto` sweep (Story #4626). Default high.',
|
|
520
|
-
},
|
|
521
|
-
autoComment: {
|
|
522
|
-
type: 'boolean',
|
|
523
|
-
description:
|
|
524
|
-
'When true (default), `/audit-to-stories --auto` posts a re-detected comment on an already-open matched Issue instead of silently skipping it.',
|
|
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.',
|
|
273
|
+
default: false,
|
|
525
274
|
},
|
|
526
275
|
},
|
|
527
276
|
additionalProperties: false,
|
|
528
277
|
};
|
|
529
278
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
*
|
|
533
|
-
* `enabled` defaults to `true`: reclaiming a landed Story's gate transcripts
|
|
534
|
-
* and evidence is the behaviour, and the knob exists to turn it off. `classes`
|
|
535
|
-
* lets an operator keep one family while purging the rest; `staleDays` is the
|
|
536
|
-
* age floor for the families no Story id can be recovered from (audit reports,
|
|
537
|
-
* abandoned `plan-<slug>/` dirs).
|
|
538
|
-
*/
|
|
279
|
+
// Families with no recoverable Story id (audits, plan dirs) use a fixed
|
|
280
|
+
// 7-day age floor.
|
|
539
281
|
const TEMP_RETENTION_SCHEMA = {
|
|
540
282
|
type: 'object',
|
|
541
283
|
description:
|
|
@@ -552,16 +294,6 @@ const TEMP_RETENTION_SCHEMA = {
|
|
|
552
294
|
'turns it off. When false every purge path is a reported no-op.',
|
|
553
295
|
default: true,
|
|
554
296
|
},
|
|
555
|
-
staleDays: {
|
|
556
|
-
type: 'integer',
|
|
557
|
-
minimum: 1,
|
|
558
|
-
description:
|
|
559
|
-
'Age floor (days, default 7) for the families no Story id can be ' +
|
|
560
|
-
'recovered from — roster-level audit reports and abandoned ' +
|
|
561
|
-
'plan-<slug>/ dirs. Story-keyed artifacts do not wait for it: they are ' +
|
|
562
|
-
'purged as soon as their merge is confirmed.',
|
|
563
|
-
default: 7,
|
|
564
|
-
},
|
|
565
297
|
classes: {
|
|
566
298
|
type: 'object',
|
|
567
299
|
description:
|
|
@@ -604,27 +336,20 @@ const TEMP_RETENTION_SCHEMA = {
|
|
|
604
336
|
export const DELIVERY_SCHEMA = {
|
|
605
337
|
type: 'object',
|
|
606
338
|
description:
|
|
607
|
-
'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.',
|
|
608
340
|
properties: {
|
|
609
341
|
execution: EXECUTION_SCHEMA,
|
|
610
342
|
docsFreshness: DOCS_FRESHNESS_SCHEMA,
|
|
611
343
|
tempRetention: TEMP_RETENTION_SCHEMA,
|
|
612
344
|
deliverRunner: DELIVER_RUNNER_SCHEMA,
|
|
613
345
|
worktreeIsolation: WORKTREE_ISOLATION_SCHEMA,
|
|
614
|
-
// `
|
|
615
|
-
// `config/gates/crap.schema.js` and reaches AJV validation through this
|
|
616
|
-
// property — QUALITY_SCHEMA → GATES_SCHEMA → CRAP_GATE. No separate
|
|
617
|
-
// declaration lives here; this is the composition point that makes the
|
|
618
|
-
// gate-level schema authoritative for the top-level `.agentrc.json`
|
|
619
|
-
// surface this module validates.
|
|
346
|
+
// Gate-level schemas (`config/gates/*.schema.js`) compose in here.
|
|
620
347
|
quality: QUALITY_SCHEMA,
|
|
621
348
|
mergeWatch: MERGE_WATCH_SCHEMA,
|
|
622
349
|
codeReview: CODE_REVIEW_SCHEMA,
|
|
623
|
-
review: REVIEW_SCHEMA,
|
|
624
350
|
refactorStage: REFACTOR_STAGE_SCHEMA,
|
|
625
351
|
acceptanceEval: ACCEPTANCE_EVAL_SCHEMA,
|
|
626
352
|
feedbackLoop: FEEDBACK_LOOP_SCHEMA,
|
|
627
|
-
auditToStories: AUDIT_TO_STORIES_SCHEMA,
|
|
628
353
|
ci: CI_DELIVERY_SCHEMA,
|
|
629
354
|
routing: ROUTING_SCHEMA,
|
|
630
355
|
},
|