mandrel 1.94.0 → 2.1.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 +116 -99
- package/.agents/agents/acceptance-critic.md +9 -7
- package/.agents/agents/story-worker.md +45 -51
- package/.agents/audit-checklists/performance.md +1 -1
- package/.agents/docs/SDLC.md +498 -1287
- package/.agents/docs/agentrc-reference.json +185 -80
- package/.agents/docs/configuration.md +132 -190
- package/.agents/docs/execution-reference.md +51 -25
- package/.agents/docs/quality-gates.md +25 -33
- package/.agents/docs/workflows.md +8 -8
- package/.agents/instructions.md +113 -139
- package/.agents/rules/ci-remediation.md +11 -15
- package/.agents/rules/git-conventions-reference.md +48 -58
- package/.agents/rules/git-conventions.md +16 -22
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +83 -254
- package/.agents/schemas/audit-rules.json +59 -1
- package/.agents/schemas/audit-rules.schema.json +33 -1
- package/.agents/schemas/lifecycle/README.md +1 -2
- package/.agents/schemas/lifecycle/ledger-record.schema.json +1 -1
- package/.agents/schemas/lifecycle/merge.flip-failed.schema.json +33 -0
- package/.agents/schemas/lifecycle/merge.unlanded.schema.json +1 -0
- package/.agents/schemas/lifecycle/retro.end.schema.json +1 -1
- package/.agents/schemas/lifecycle/story.merged.schema.json +1 -1
- package/.agents/schemas/signal-event.schema.json +3 -3
- package/.agents/schemas/story-deliver-terminal.schema.json +152 -0
- package/.agents/schemas/validation-evidence.schema.json +1 -1
- package/.agents/scripts/acceptance-eval.js +22 -66
- package/.agents/scripts/agents-bootstrap-github.js +1 -1
- package/.agents/scripts/audit-to-stories.js +7 -7
- package/.agents/scripts/boot-sweep.js +1 -1
- package/.agents/scripts/bootstrap.js +3 -3
- package/.agents/scripts/check-dead-exports.js +43 -104
- package/.agents/scripts/check-doc-links.js +2 -2
- package/.agents/scripts/check-lifecycle-lint.js +7 -10
- package/.agents/scripts/check-workflow-cli-lint.js +91 -0
- package/.agents/scripts/cleanup-repo-test-temp.js +6 -1
- package/.agents/scripts/deliver-recover.js +122 -0
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/evidence-gate.js +20 -50
- package/.agents/scripts/generate-skills-index.js +17 -1
- package/.agents/scripts/generate-workflows-doc.js +4 -4
- package/.agents/scripts/lib/ITicketingProvider.js +1 -19
- package/.agents/scripts/lib/Logger.js +6 -10
- package/.agents/scripts/lib/audit-suite/runner.js +2 -2
- package/.agents/scripts/lib/audit-suite/selector.js +328 -28
- package/.agents/scripts/lib/audit-to-stories/{seed-epic-from-findings.js → seed-from-findings.js} +9 -9
- package/.agents/scripts/lib/baselines/kernel.js +206 -18
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +0 -15
- package/.agents/scripts/lib/baselines/reader.js +1 -6
- package/.agents/scripts/lib/bdd-runner-detect.js +5 -9
- package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +28 -33
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +32 -33
- package/.agents/scripts/lib/bootstrap/manifest.js +8 -11
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +30 -53
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +0 -2
- package/.agents/scripts/lib/checks/core-bare-clean.js +6 -3
- package/.agents/scripts/lib/checks/index.js +3 -2
- package/.agents/scripts/lib/checks/loop-health.js +12 -11
- package/.agents/scripts/lib/checks/state.js +17 -248
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +26 -24
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +3 -4
- package/.agents/scripts/lib/checks/worktree-bootstrap-env.js +2 -2
- package/.agents/scripts/lib/checks/worktree-residue-biome.js +3 -3
- package/.agents/scripts/lib/cli/standard-args.js +13 -22
- package/.agents/scripts/lib/cli-args.js +39 -9
- package/.agents/scripts/lib/close-validation/gates.js +15 -15
- package/.agents/scripts/lib/close-validation/projections/inputs.js +7 -7
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +12 -12
- package/.agents/scripts/lib/close-validation/runner.js +13 -21
- package/.agents/scripts/lib/close-validation/telemetry.js +17 -8
- package/.agents/scripts/lib/config/ci.js +6 -31
- package/.agents/scripts/lib/config/delivery-routing.js +52 -35
- package/.agents/scripts/lib/config/explain.js +61 -48
- package/.agents/scripts/lib/config/github.js +7 -5
- package/.agents/scripts/lib/config/limits.js +29 -80
- package/.agents/scripts/lib/config/paths.js +0 -2
- package/.agents/scripts/lib/config/quality.js +12 -15
- package/.agents/scripts/lib/config/runners.js +20 -66
- package/.agents/scripts/lib/config/temp-paths.js +30 -63
- package/.agents/scripts/lib/config/worktree-isolation.js +0 -5
- package/.agents/scripts/lib/config-resolver.js +2 -7
- package/.agents/scripts/lib/config-settings-schema-delivery.js +55 -161
- package/.agents/scripts/lib/config-settings-schema-quality.js +17 -16
- package/.agents/scripts/lib/config-settings-schema.js +100 -60
- package/.agents/scripts/lib/dead-exports-knip.js +105 -0
- package/.agents/scripts/lib/dead-exports-mode.js +51 -0
- package/.agents/scripts/lib/dependency-parser.js +3 -2
- package/.agents/scripts/lib/doc-tiers.js +2 -2
- package/.agents/scripts/lib/duplicate-search.js +242 -41
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +1 -1
- package/.agents/scripts/lib/findings/promote-finding.js +23 -14
- package/.agents/scripts/lib/format-generated-json.js +97 -0
- package/.agents/scripts/lib/framework-version.js +19 -190
- package/.agents/scripts/lib/gh-exec.js +8 -0
- package/.agents/scripts/lib/git-branch-cleanup.js +1 -10
- package/.agents/scripts/lib/git-branch-lifecycle.js +17 -180
- package/.agents/scripts/lib/git-utils.js +32 -20
- package/.agents/scripts/lib/github/framework-repo.js +6 -0
- package/.agents/scripts/lib/json-utils.js +1 -2
- package/.agents/scripts/lib/label-constants.js +10 -38
- package/.agents/scripts/lib/label-taxonomy.js +10 -55
- package/.agents/scripts/lib/observability/active-story-env.js +44 -165
- package/.agents/scripts/lib/observability/runtime-friction.js +243 -0
- package/.agents/scripts/lib/observability/signal-validator.js +4 -4
- package/.agents/scripts/lib/observability/signals-writer.js +6 -82
- package/.agents/scripts/lib/observability/source-classifier.js +5 -5
- package/.agents/scripts/lib/observability/tool-trace-hook.js +2 -12
- package/.agents/scripts/lib/onboard/init-tail.js +1 -3
- package/.agents/scripts/lib/orchestration/acceptance-clusters.js +1 -1
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +2 -2
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +105 -44
- package/.agents/scripts/lib/orchestration/code-review.js +78 -436
- package/.agents/scripts/lib/orchestration/column-sync.js +1 -1
- package/.agents/scripts/lib/orchestration/consolidation-precondition.js +4 -4
- package/.agents/scripts/lib/orchestration/context-envelope.js +2 -5
- package/.agents/scripts/lib/orchestration/deliver-recover.js +328 -0
- package/.agents/scripts/lib/orchestration/detectors-phase.js +12 -6
- package/.agents/scripts/lib/orchestration/docs-digest.js +8 -8
- package/.agents/scripts/lib/orchestration/file-assumptions.js +7 -13
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +1 -1
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +34 -0
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +3 -2
- package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +142 -0
- package/.agents/scripts/lib/orchestration/lifecycle/emit-loop-tick.js +17 -19
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +86 -0
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +37 -103
- package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +6 -3
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +21 -43
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +50 -85
- package/.agents/scripts/lib/orchestration/lifecycle/trace-logger.js +3 -14
- package/.agents/scripts/lib/orchestration/lint-baseline-service.js +4 -4
- package/.agents/scripts/lib/orchestration/merge-block-class.js +77 -21
- package/.agents/scripts/lib/orchestration/merge-poll.js +104 -0
- package/.agents/scripts/lib/orchestration/phase-runner.js +3 -2
- package/.agents/scripts/lib/orchestration/plan-context.js +354 -282
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +11 -22
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +4 -8
- package/.agents/scripts/lib/orchestration/plan-metrics.js +38 -6
- package/.agents/scripts/lib/orchestration/plan-navigation.js +92 -0
- package/.agents/scripts/lib/orchestration/plan-persist/fan-out-gate.js +71 -0
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +245 -0
- package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +116 -0
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +432 -858
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +778 -0
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +47 -115
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +509 -0
- package/.agents/scripts/lib/orchestration/plan-reachability.js +9 -14
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +1 -1
- package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/authoring-context.js +52 -51
- package/.agents/scripts/lib/orchestration/planning/decomposer-context.js +27 -0
- package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/spec-authoring-grounding.js +1 -1
- package/.agents/scripts/lib/orchestration/pr-base-guard.js +18 -28
- package/.agents/scripts/lib/orchestration/remote-verifier.js +1 -1
- package/.agents/scripts/lib/orchestration/resolve-stories.js +344 -0
- package/.agents/scripts/lib/orchestration/resolves-token.js +1 -1
- package/.agents/scripts/lib/orchestration/retro-proposals.js +140 -79
- package/.agents/scripts/lib/orchestration/review-depth.js +126 -47
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +2 -2
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +3 -13
- package/.agents/scripts/lib/orchestration/review-providers/native.js +1 -154
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +3 -2
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +21 -56
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +1 -1
- package/.agents/scripts/lib/orchestration/review-providers/types.js +5 -4
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +1 -1
- package/.agents/scripts/lib/orchestration/run-epilogue.js +784 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +25 -1
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +11 -9
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +4 -4
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +86 -41
- package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +608 -152
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +77 -32
- package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +305 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +1 -1
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +44 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +37 -4
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +2 -2
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +275 -46
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +1 -1
- package/.agents/scripts/lib/orchestration/spec-freshness.js +14 -205
- package/.agents/scripts/lib/orchestration/spec-section-validator.js +4 -5
- package/.agents/scripts/lib/orchestration/spec-spill.js +60 -0
- package/.agents/scripts/lib/orchestration/split-policy-validator.js +188 -0
- package/.agents/scripts/lib/orchestration/story-close/emit-blocked.js +49 -0
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +10 -10
- package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +28 -42
- package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +360 -0
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +298 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +51 -0
- package/.agents/scripts/lib/orchestration/story-plan-state.js +33 -0
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +1 -1
- package/.agents/scripts/lib/orchestration/task-body-validator.js +60 -25
- package/.agents/scripts/lib/orchestration/ticket-lease.js +27 -74
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +130 -75
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +192 -377
- package/.agents/scripts/lib/orchestration/ticket-validator.js +123 -25
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +14 -72
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +45 -55
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +66 -6
- package/.agents/scripts/lib/orchestration/ticketing.js +0 -1
- package/.agents/scripts/lib/plan-phase-cleanup.js +12 -14
- package/.agents/scripts/lib/planning-corpus.js +12 -281
- package/.agents/scripts/lib/preflight-runner.js +4 -4
- package/.agents/scripts/lib/qa/coverage-verdict.js +5 -5
- package/.agents/scripts/lib/qa/qa-context-hydrator.js +5 -5
- package/.agents/scripts/lib/signals/index.js +4 -17
- package/.agents/scripts/lib/signals/read.js +35 -35
- package/.agents/scripts/lib/signals/schema.js +8 -11
- package/.agents/scripts/lib/signals/span-tree.js +7 -7
- package/.agents/scripts/lib/signals/write.js +0 -1
- package/.agents/scripts/lib/single-story/story-merged-notify.js +13 -2
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +1 -1
- package/.agents/scripts/lib/skills/parse-skill.js +16 -3
- package/.agents/scripts/lib/story-adjacency.js +17 -19
- package/.agents/scripts/lib/story-body/story-body.js +130 -75
- package/.agents/scripts/lib/story-plan.js +2 -4
- package/.agents/scripts/lib/templates/decomposer-prompts.js +51 -46
- package/.agents/scripts/lib/templates/spec-author-prompts.js +47 -45
- package/.agents/scripts/lib/test-env.js +14 -1
- package/.agents/scripts/lib/test-tiers.js +0 -3
- package/.agents/scripts/lib/{epic-body-sections.js → ticket-body-sections.js} +25 -39
- package/.agents/scripts/lib/validation-evidence.js +32 -60
- package/.agents/scripts/lib/wave-runner/ready-set.js +38 -12
- package/.agents/scripts/lib/workspace-provisioner.js +1 -1
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +1 -1
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +72 -25
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +1 -2
- package/.agents/scripts/lint-issue-body.js +71 -40
- package/.agents/scripts/mandrel-update-preflight.js +1 -1
- package/.agents/scripts/notify.js +4 -3
- package/.agents/scripts/plan-context.js +102 -80
- package/.agents/scripts/plan-persist.js +230 -279
- package/.agents/scripts/plan-run-epilogue.js +142 -0
- package/.agents/scripts/post-structured-comment.js +0 -38
- package/.agents/scripts/pr-watch-with-update.js +43 -22
- package/.agents/scripts/providers/github/compose.js +0 -1
- package/.agents/scripts/providers/github/errors.js +0 -19
- package/.agents/scripts/providers/github/issues.js +13 -39
- package/.agents/scripts/providers/github/mappers.js +5 -12
- package/.agents/scripts/providers/github/sub-issues.js +0 -47
- package/.agents/scripts/providers/github/tickets.js +33 -156
- package/.agents/scripts/providers/github.js +17 -6
- package/.agents/scripts/resolve-stories.js +236 -0
- package/.agents/scripts/run-coverage.js +4 -1
- package/.agents/scripts/run-lint.js +2 -2
- package/.agents/scripts/run-verify.js +31 -2
- package/.agents/scripts/signals-view.js +25 -21
- package/.agents/scripts/single-story-close.js +178 -26
- package/.agents/scripts/single-story-confirm-merge.js +313 -24
- package/.agents/scripts/single-story-init.js +35 -30
- package/.agents/scripts/stories-wave-tick.js +85 -10
- package/.agents/scripts/story-plan.js +28 -49
- package/.agents/scripts/update-ticket-state.js +14 -65
- package/.agents/skills/core/code-review-and-quality/SKILL.md +28 -450
- package/.agents/skills/core/code-review-and-quality/reference.md +458 -0
- package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +22 -315
- package/.agents/skills/core/debugging-and-error-recovery/reference.md +323 -0
- package/.agents/skills/core/diagnose-friction/SKILL.md +14 -18
- package/.agents/skills/core/documentation-and-adrs/SKILL.md +25 -397
- package/.agents/skills/core/documentation-and-adrs/reference.md +403 -0
- package/.agents/skills/core/gates-and-baselines/SKILL.md +12 -12
- package/.agents/skills/core/idea-refinement/SKILL.md +9 -9
- package/.agents/skills/core/scope-triage/SKILL.md +31 -172
- package/.agents/skills/core/security-and-hardening/SKILL.md +22 -367
- package/.agents/skills/core/security-and-hardening/reference.md +375 -0
- package/.agents/skills/skills.index.json +3 -53
- package/.agents/skills/stack/qa/playwright-bdd/SKILL.md +2 -4
- package/.agents/skills/stack/qa/qa-explore-driving/SKILL.md +1 -1
- package/.agents/skills/stack/qa/qa-harness/SKILL.md +1 -3
- package/.agents/starter-agentrc.json +0 -5
- package/.agents/templates/agent-protocol.md +9 -10
- package/.agents/workflows/audit-architecture.md +6 -7
- package/.agents/workflows/audit-clean-code.md +7 -7
- package/.agents/workflows/audit-dependencies.md +3 -3
- package/.agents/workflows/audit-devops.md +3 -3
- package/.agents/workflows/audit-documentation.md +9 -10
- package/.agents/workflows/audit-lighthouse.md +11 -3
- package/.agents/workflows/audit-navigability.md +13 -2
- package/.agents/workflows/audit-performance.md +5 -6
- package/.agents/workflows/audit-privacy.md +3 -3
- package/.agents/workflows/audit-quality.md +11 -12
- package/.agents/workflows/audit-security.md +4 -5
- package/.agents/workflows/audit-seo.md +13 -3
- package/.agents/workflows/audit-sre.md +3 -3
- package/.agents/workflows/audit-to-stories.md +20 -20
- package/.agents/workflows/audit-ux-ui.md +10 -3
- package/.agents/workflows/deliver.md +177 -176
- package/.agents/workflows/git-cleanup.md +5 -6
- package/.agents/workflows/git-deliver.md +1 -1
- package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
- package/.agents/workflows/helpers/acceptance-self-eval.md +35 -40
- package/.agents/workflows/helpers/code-quality-guardrails.md +7 -7
- package/.agents/workflows/helpers/code-review.md +75 -196
- package/.agents/workflows/helpers/{single-story-deliver-reference.md → deliver-story-reference.md} +83 -44
- package/.agents/workflows/helpers/deliver-story.md +606 -0
- package/.agents/workflows/helpers/diagnose.md +10 -10
- package/.agents/workflows/helpers/parallel-tooling.md +3 -3
- package/.agents/workflows/helpers/signals.md +16 -16
- package/.agents/workflows/helpers/worktree-lifecycle.md +66 -86
- package/.agents/workflows/mandrel-update.md +2 -1
- package/.agents/workflows/plan.md +277 -145
- package/.agents/workflows/qa-assist.md +27 -33
- package/.agents/workflows/qa-explore.md +29 -38
- package/.agents/workflows/qa-run.md +2 -6
- package/README.md +9 -8
- package/bin/mandrel.js +12 -1
- package/docs/CHANGELOG.md +70 -0
- package/lib/cli/registry.js +262 -19
- package/lib/cli/sync-agents.js +157 -0
- package/lib/cli/sync-commands.js +115 -6
- package/lib/cli/sync.js +168 -6
- package/lib/cli/update.js +105 -8
- package/lib/cli/version-helpers.js +131 -0
- package/lib/migrations/README.md +7 -5
- package/lib/migrations/index.js +12 -8
- package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +100 -0
- package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +101 -0
- package/package.json +2 -2
- package/.agents/agents/retro.md +0 -42
- package/.agents/personas/architect.md +0 -113
- package/.agents/personas/devops-engineer.md +0 -38
- package/.agents/personas/engineer.md +0 -33
- package/.agents/personas/project-manager.md +0 -114
- package/.agents/personas/qa-engineer.md +0 -95
- package/.agents/personas/security-engineer.md +0 -111
- package/.agents/personas/technical-writer.md +0 -101
- package/.agents/schemas/dispatch-manifest.json +0 -232
- package/.agents/schemas/epic-perf-report.schema.json +0 -89
- package/.agents/schemas/epic-spec.schema.json +0 -153
- package/.agents/schemas/lifecycle/acceptance.reconcile.failed.schema.json +0 -13
- package/.agents/schemas/lifecycle/acceptance.reconcile.ok.schema.json +0 -13
- package/.agents/schemas/lifecycle/acceptance.reconcile.skipped.schema.json +0 -13
- package/.agents/schemas/lifecycle/acceptance.reconcile.start.schema.json +0 -12
- package/.agents/schemas/lifecycle/acceptance.reconcile.waived.schema.json +0 -13
- package/.agents/schemas/lifecycle/epic.automerge.end.schema.json +0 -15
- package/.agents/schemas/lifecycle/epic.automerge.start.schema.json +0 -13
- package/.agents/schemas/lifecycle/epic.blocked.schema.json +0 -13
- package/.agents/schemas/lifecycle/epic.cleanup.end.schema.json +0 -12
- package/.agents/schemas/lifecycle/epic.cleanup.start.schema.json +0 -12
- package/.agents/schemas/lifecycle/epic.close.end.schema.json +0 -12
- package/.agents/schemas/lifecycle/epic.complete.schema.json +0 -13
- package/.agents/schemas/lifecycle/epic.finalize.end.schema.json +0 -13
- package/.agents/schemas/lifecycle/epic.finalize.start.schema.json +0 -12
- package/.agents/schemas/lifecycle/epic.merge.armed.schema.json +0 -13
- package/.agents/schemas/lifecycle/epic.merge.blocked.schema.json +0 -14
- package/.agents/schemas/lifecycle/epic.merge.confirmed.schema.json +0 -17
- package/.agents/schemas/lifecycle/epic.merge.ready.schema.json +0 -15
- package/.agents/schemas/lifecycle/epic.plan.end.schema.json +0 -18
- package/.agents/schemas/lifecycle/epic.plan.start.schema.json +0 -12
- package/.agents/schemas/lifecycle/epic.snapshot.end.schema.json +0 -16
- package/.agents/schemas/lifecycle/epic.snapshot.start.schema.json +0 -12
- package/.agents/schemas/lifecycle/epic.watch.end.schema.json +0 -29
- package/.agents/schemas/lifecycle/epic.watch.start.schema.json +0 -16
- package/.agents/schemas/lifecycle/slice.end.schema.json +0 -21
- package/.agents/schemas/lifecycle/slice.heartbeat.schema.json +0 -20
- package/.agents/schemas/lifecycle/slice.start.schema.json +0 -17
- package/.agents/schemas/lifecycle/story.heartbeat.schema.json +0 -20
- package/.agents/schemas/risk-verdict.schema.json +0 -66
- package/.agents/schemas/story-perf-summary.schema.json +0 -73
- package/.agents/scripts/acceptance-spec-reconciler.js +0 -642
- package/.agents/scripts/analyze-execution.js +0 -444
- package/.agents/scripts/bookkeeping-reconcile.js +0 -117
- package/.agents/scripts/check-prepush-recovery.js +0 -90
- package/.agents/scripts/dispatcher.js +0 -295
- package/.agents/scripts/epic-audit-prepare.js +0 -497
- package/.agents/scripts/epic-audit-recheck.js +0 -274
- package/.agents/scripts/epic-deliver-note-intervention.js +0 -192
- package/.agents/scripts/epic-deliver-preflight.js +0 -462
- package/.agents/scripts/epic-deliver-prepare.js +0 -852
- package/.agents/scripts/epic-execute-record-wave.js +0 -449
- package/.agents/scripts/epic-plan-clarity.js +0 -211
- package/.agents/scripts/epic-plan-healthcheck.js +0 -581
- package/.agents/scripts/epic-reconcile.js +0 -625
- package/.agents/scripts/lib/baseline-snapshot.js +0 -979
- package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +0 -54
- package/.agents/scripts/lib/checks/stale-origin-epic.js +0 -49
- package/.agents/scripts/lib/config/lifecycle.js +0 -40
- package/.agents/scripts/lib/config/preflight.js +0 -58
- package/.agents/scripts/lib/config/retro.js +0 -77
- package/.agents/scripts/lib/epic-merge-lock.js +0 -322
- package/.agents/scripts/lib/epic-plan-clarity.js +0 -181
- package/.agents/scripts/lib/epic-plan-ideation.js +0 -261
- package/.agents/scripts/lib/git-merge-orchestrator.js +0 -261
- package/.agents/scripts/lib/observability/baseline-refresh-rate.js +0 -221
- package/.agents/scripts/lib/observability/hook-heartbeat.js +0 -219
- package/.agents/scripts/lib/observability/perf-aggregator.js +0 -813
- package/.agents/scripts/lib/observability/perf-report-readers.js +0 -328
- package/.agents/scripts/lib/observability/perf-report-render.js +0 -182
- package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +0 -270
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +0 -539
- package/.agents/scripts/lib/orchestration/deliver-route.js +0 -173
- package/.agents/scripts/lib/orchestration/dispatch-engine.js +0 -134
- package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +0 -183
- package/.agents/scripts/lib/orchestration/epic-cleanup.js +0 -801
- package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +0 -310
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +0 -163
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +0 -140
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +0 -64
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +0 -72
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +0 -156
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +0 -345
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +0 -41
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +0 -86
- package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +0 -391
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +0 -94
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +0 -236
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/risk-verdict.js +0 -105
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +0 -307
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-run-state-store.js +0 -621
- package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +0 -186
- package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +0 -50
- package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +0 -129
- package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +0 -103
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +0 -267
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +0 -210
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +0 -238
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +0 -32
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +0 -203
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +0 -227
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +0 -117
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +0 -37
- package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +0 -127
- package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +0 -400
- package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +0 -276
- package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +0 -66
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +0 -789
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +0 -676
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +0 -389
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +0 -230
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +0 -361
- package/.agents/scripts/lib/orchestration/error-journal.js +0 -139
- package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +0 -306
- package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +0 -489
- package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +0 -88
- package/.agents/scripts/lib/orchestration/lifecycle/emit-slice-lifecycle.js +0 -270
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +0 -147
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +0 -155
- package/.agents/scripts/lib/orchestration/lifecycle/ledger-diff.js +0 -140
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +0 -465
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +0 -501
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +0 -984
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +0 -264
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +0 -284
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +0 -355
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +0 -673
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +0 -378
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +0 -140
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/label-transitioner.js +0 -144
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +0 -665
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +0 -174
- package/.agents/scripts/lib/orchestration/manifest-builder.js +0 -222
- package/.agents/scripts/lib/orchestration/plan-persist/amend.js +0 -359
- package/.agents/scripts/lib/orchestration/plan-persist/delivery-mode.js +0 -127
- package/.agents/scripts/lib/orchestration/plan-review-routing.js +0 -63
- package/.agents/scripts/lib/orchestration/planning-context-budget.js +0 -213
- package/.agents/scripts/lib/orchestration/planning-risk.js +0 -194
- package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +0 -56
- package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +0 -33
- package/.agents/scripts/lib/orchestration/post-merge/phases/notification.js +0 -78
- package/.agents/scripts/lib/orchestration/post-merge/phases/temp-cleanup.js +0 -68
- package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +0 -118
- package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +0 -396
- package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +0 -205
- package/.agents/scripts/lib/orchestration/preflight-cache.js +0 -187
- package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +0 -152
- package/.agents/scripts/lib/orchestration/retro/phases/checks.js +0 -94
- package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +0 -571
- package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +0 -450
- package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +0 -191
- package/.agents/scripts/lib/orchestration/retro-heuristics.js +0 -57
- package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +0 -275
- package/.agents/scripts/lib/orchestration/retro-runner.js +0 -197
- package/.agents/scripts/lib/orchestration/spec-renderer.js +0 -447
- package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +0 -747
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +0 -211
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +0 -158
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +0 -446
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +0 -297
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +0 -48
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +0 -67
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +0 -161
- package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +0 -117
- package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +0 -86
- package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +0 -147
- package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +0 -142
- package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +0 -62
- package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +0 -658
- package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +0 -198
- package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +0 -105
- package/.agents/scripts/lib/orchestration/story-close/phases/close.js +0 -222
- package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +0 -292
- package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +0 -270
- package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +0 -110
- package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +0 -86
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +0 -112
- package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +0 -157
- package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +0 -421
- package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +0 -302
- package/.agents/scripts/lib/orchestration/story-close/shared-checkout-guard.js +0 -163
- package/.agents/scripts/lib/orchestration/story-close-recovery.js +0 -690
- package/.agents/scripts/lib/orchestration/wave-marker.js +0 -28
- package/.agents/scripts/lib/orchestration/wave-record-io.js +0 -218
- package/.agents/scripts/lib/orchestration/wave-record-notifications.js +0 -145
- package/.agents/scripts/lib/orchestration/wave-record-projection.js +0 -212
- package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +0 -111
- package/.agents/scripts/lib/presentation/manifest-builder.js +0 -239
- package/.agents/scripts/lib/presentation/manifest-formatter.js +0 -242
- package/.agents/scripts/lib/presentation/manifest-helpers.js +0 -213
- package/.agents/scripts/lib/presentation/manifest-persistence.js +0 -261
- package/.agents/scripts/lib/presentation/manifest-procedures.js +0 -55
- package/.agents/scripts/lib/presentation/manifest-render-waves.js +0 -306
- package/.agents/scripts/lib/presentation/manifest-renderer.js +0 -188
- package/.agents/scripts/lib/presentation/manifest-story-views.js +0 -110
- package/.agents/scripts/lib/push-epic-retry.js +0 -209
- package/.agents/scripts/lib/spec/index.js +0 -36
- package/.agents/scripts/lib/spec/loader.js +0 -425
- package/.agents/scripts/lib/spec/state.js +0 -208
- package/.agents/scripts/lib/story-init/blocker-validator.js +0 -68
- package/.agents/scripts/lib/story-init/branch-initializer.js +0 -408
- package/.agents/scripts/lib/story-init/context-resolver.js +0 -92
- package/.agents/scripts/lib/story-init/donor-precheck.js +0 -207
- package/.agents/scripts/lib/story-init/state-transitioner.js +0 -80
- package/.agents/scripts/lib/story-init/task-graph-builder.js +0 -124
- package/.agents/scripts/lib/story-init/transition-summary.js +0 -34
- package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +0 -35
- package/.agents/scripts/lib/wave-runner/tick.js +0 -754
- package/.agents/scripts/lib/wave-runner/wave-runner-error.js +0 -20
- package/.agents/scripts/lifecycle-emit-story-dispatch.js +0 -194
- package/.agents/scripts/lifecycle-emit.js +0 -510
- package/.agents/scripts/retro-run.js +0 -218
- package/.agents/scripts/slice-phase.js +0 -361
- package/.agents/scripts/standalone-feedback-rollup.js +0 -188
- package/.agents/scripts/story-close.js +0 -294
- package/.agents/scripts/story-init.js +0 -599
- package/.agents/scripts/story-phase.js +0 -369
- package/.agents/scripts/wave-tick.js +0 -464
- package/.agents/skills/core/analyze-execution/SKILL.md +0 -98
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +0 -172
- package/.agents/skills/core/epic-plan-consolidate/examples.md +0 -51
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +0 -441
- package/.agents/skills/core/epic-plan-decompose-author/examples.md +0 -47
- package/.agents/skills/core/epic-plan-premortem/SKILL.md +0 -146
- package/.agents/skills/core/epic-plan-premortem/examples.md +0 -53
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +0 -383
- package/.agents/skills/core/epic-plan-spec-author/examples.md +0 -91
- package/.agents/workflows/helpers/deliver-epic-reference.md +0 -547
- package/.agents/workflows/helpers/deliver-epic-single.md +0 -331
- package/.agents/workflows/helpers/deliver-epic.md +0 -998
- package/.agents/workflows/helpers/deliver-stories.md +0 -450
- package/.agents/workflows/helpers/epic-audit.md +0 -189
- package/.agents/workflows/helpers/epic-deliver-story.md +0 -436
- package/.agents/workflows/helpers/epic-testing.md +0 -125
- package/.agents/workflows/helpers/plan-epic-reference.md +0 -160
- package/.agents/workflows/helpers/plan-epic.md +0 -353
- package/.agents/workflows/helpers/plan-story.md +0 -251
- package/.agents/workflows/helpers/scope-triage-gate.md +0 -108
- package/.agents/workflows/helpers/single-story-deliver.md +0 -557
|
@@ -32,7 +32,6 @@ export const PATHS_DEFAULTS = Object.freeze({
|
|
|
32
32
|
* auditOutputDir: string,
|
|
33
33
|
* scriptsRoot: string,
|
|
34
34
|
* workflowsRoot: string,
|
|
35
|
-
* personasRoot: string,
|
|
36
35
|
* schemasRoot: string,
|
|
37
36
|
* skillsRoot: string,
|
|
38
37
|
* templatesRoot: string,
|
|
@@ -53,7 +52,6 @@ export function resolvePaths(userPaths) {
|
|
|
53
52
|
auditOutputDir: `${tempRoot}/audits`,
|
|
54
53
|
scriptsRoot: `${agentRoot}/scripts`,
|
|
55
54
|
workflowsRoot: `${agentRoot}/workflows`,
|
|
56
|
-
personasRoot: `${agentRoot}/personas`,
|
|
57
55
|
schemasRoot: `${agentRoot}/schemas`,
|
|
58
56
|
skillsRoot: `${agentRoot}/skills`,
|
|
59
57
|
templatesRoot: `${agentRoot}/templates`,
|
|
@@ -57,7 +57,7 @@ const DEFAULT_COVERAGE_FLOORS = Object.freeze({
|
|
|
57
57
|
'*': Object.freeze({ lines: 90, branches: 85, functions: 90 }),
|
|
58
58
|
});
|
|
59
59
|
const DEFAULT_CRAP_FLOORS = Object.freeze({
|
|
60
|
-
'*': Object.freeze({
|
|
60
|
+
'*': Object.freeze({ max: 30, p95: 20, methodsAbove20: 50 }),
|
|
61
61
|
});
|
|
62
62
|
/**
|
|
63
63
|
* Story #2193 — maintainability rollups expose the `min` / `p50` / `p95`
|
|
@@ -366,14 +366,19 @@ function resolveCoverageGate(userBlock) {
|
|
|
366
366
|
}
|
|
367
367
|
|
|
368
368
|
/**
|
|
369
|
-
* Framework defaults for `delivery.quality.codingGuardrails`.
|
|
370
|
-
*
|
|
371
|
-
*
|
|
369
|
+
* Framework defaults for `delivery.quality.codingGuardrails`.
|
|
370
|
+
*
|
|
371
|
+
* `miDropMustRefactor` was retired in Story #4531: schema-validated,
|
|
372
|
+
* defaulted, and resolved, but never consumed — the gate it named
|
|
373
|
+
* (`quality-preview.js`'s `computeExitCode`) short-circuits on `miExit`
|
|
374
|
+
* (derived from the already-consumed `gates.maintainability.tolerance`)
|
|
375
|
+
* before this value is ever read. `maintainability.tolerance` is the one
|
|
376
|
+
* documented MI-drop control now; see `lib/migrations/index.js` for the
|
|
377
|
+
* consumer-config migration that strips a leftover key on upgrade.
|
|
372
378
|
*/
|
|
373
379
|
export const CODING_GUARDRAILS_DEFAULTS = Object.freeze({
|
|
374
380
|
cyclomaticFlag: 8,
|
|
375
381
|
cyclomaticMustFix: 12,
|
|
376
|
-
miDropMustRefactor: 1.5,
|
|
377
382
|
requireSiblingTest: false,
|
|
378
383
|
});
|
|
379
384
|
|
|
@@ -393,8 +398,6 @@ export function resolveCodingGuardrails(userBlock) {
|
|
|
393
398
|
cyclomaticFlag: userBlock.cyclomaticFlag ?? defaults.cyclomaticFlag,
|
|
394
399
|
cyclomaticMustFix:
|
|
395
400
|
userBlock.cyclomaticMustFix ?? defaults.cyclomaticMustFix,
|
|
396
|
-
miDropMustRefactor:
|
|
397
|
-
userBlock.miDropMustRefactor ?? defaults.miDropMustRefactor,
|
|
398
401
|
requireSiblingTest:
|
|
399
402
|
typeof userBlock.requireSiblingTest === 'boolean'
|
|
400
403
|
? userBlock.requireSiblingTest
|
|
@@ -402,9 +405,10 @@ export function resolveCodingGuardrails(userBlock) {
|
|
|
402
405
|
};
|
|
403
406
|
}
|
|
404
407
|
|
|
408
|
+
// autoRefresh.miDropCap was retired alongside codingGuardrails.
|
|
409
|
+
// miDropMustRefactor in Story #4531 — same unconsumed-knob shape, same fix.
|
|
405
410
|
const AUTO_REFRESH_DEFAULTS = Object.freeze({
|
|
406
411
|
enabled: true,
|
|
407
|
-
miDropCap: 1.5,
|
|
408
412
|
crapJumpCap: 5,
|
|
409
413
|
scope: 'diff',
|
|
410
414
|
});
|
|
@@ -416,7 +420,6 @@ function resolveAutoRefresh(userBlock) {
|
|
|
416
420
|
if (userBlock == null || typeof userBlock !== 'object') {
|
|
417
421
|
return {
|
|
418
422
|
enabled: defaults.enabled,
|
|
419
|
-
miDropCap: defaults.miDropCap,
|
|
420
423
|
crapJumpCap: defaults.crapJumpCap,
|
|
421
424
|
scope: defaults.scope,
|
|
422
425
|
};
|
|
@@ -429,12 +432,6 @@ function resolveAutoRefresh(userBlock) {
|
|
|
429
432
|
typeof userBlock.enabled === 'boolean'
|
|
430
433
|
? userBlock.enabled
|
|
431
434
|
: defaults.enabled,
|
|
432
|
-
miDropCap:
|
|
433
|
-
typeof userBlock.miDropCap === 'number' &&
|
|
434
|
-
Number.isFinite(userBlock.miDropCap) &&
|
|
435
|
-
userBlock.miDropCap >= 0
|
|
436
|
-
? userBlock.miDropCap
|
|
437
|
-
: defaults.miDropCap,
|
|
438
435
|
crapJumpCap:
|
|
439
436
|
typeof userBlock.crapJumpCap === 'number' &&
|
|
440
437
|
Number.isFinite(userBlock.crapJumpCap) &&
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Runner accessor (Epic #1720 Story #1739 — top-level reshape).
|
|
3
3
|
*
|
|
4
|
-
* Post-reshape, only `delivery.deliverRunner
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `
|
|
4
|
+
* Post-reshape, only `delivery.deliverRunner` and `delivery.codeReview` are
|
|
5
|
+
* configurable via this accessor; everything else lives in framework-internal
|
|
6
|
+
* constants exported alongside (`DEFAULT_DECOMPOSER`).
|
|
7
|
+
* `delivery.epicAudit` was removed on v2 (Story-only delivery — no
|
|
8
|
+
* epic-audit runner; remediation policy lives on `delivery.codeReview`).
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
|
-
/** Hardcoded story-merge retry policy (was `orchestration.runners.storyMergeRetry`). */
|
|
11
|
-
export const DEFAULT_STORY_MERGE_RETRY = Object.freeze({
|
|
12
|
-
maxAttempts: 3,
|
|
13
|
-
backoffMs: Object.freeze([250, 500, 1000]),
|
|
14
|
-
});
|
|
15
|
-
|
|
16
11
|
/** Hardcoded decomposer concurrency cap (was `orchestration.runners.decomposer.concurrencyCap`). */
|
|
17
12
|
export const DEFAULT_DECOMPOSER = Object.freeze({
|
|
18
13
|
concurrencyCap: 3,
|
|
@@ -23,51 +18,28 @@ export const DEFAULT_DECOMPOSER = Object.freeze({
|
|
|
23
18
|
* `delivery.deliverRunner.*` in `.agentrc.json`.
|
|
24
19
|
*
|
|
25
20
|
* **Throughput tradeoff — `concurrencyCap`.**
|
|
26
|
-
* The default of 3 is intentionally
|
|
27
|
-
* consumption
|
|
28
|
-
* GitHub API with concurrent label writes
|
|
29
|
-
*
|
|
30
|
-
* `delivery.deliverRunner.concurrencyCap
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* `agentrc-reference.json` `delivery.deliverRunner.concurrencyCap` for details.
|
|
21
|
+
* The default of 3 is intentionally moderate: it keeps host-quota
|
|
22
|
+
* consumption predictable for multi-Story plan-runs and avoids saturating
|
|
23
|
+
* the GitHub API with concurrent label writes, while still allowing a
|
|
24
|
+
* small ready-set fan-out. Operators who want strictly sequential delivery
|
|
25
|
+
* should set `delivery.deliverRunner.concurrencyCap: 1`. Raising the cap
|
|
26
|
+
* reduces wall-clock time where dependencies allow. See `deliver.md` and
|
|
27
|
+
* `agentrc-reference.json` `delivery.deliverRunner.concurrencyCap`.
|
|
34
28
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
29
|
+
* Story #4545 removed the sibling `verifyConcurrencyCap`: the
|
|
30
|
+
* `verifyWaveResults` loop it claimed to bound never existed in the tree, and
|
|
31
|
+
* its only reader was the retired execution-analysis CLI, which echoed the
|
|
32
|
+
* number into a report rather than bounding anything.
|
|
39
33
|
*/
|
|
40
34
|
const DEFAULT_DELIVER_RUNNER = Object.freeze({
|
|
41
35
|
concurrencyCap: 3,
|
|
42
|
-
progressReportIntervalSec: 120,
|
|
43
|
-
verifyConcurrencyCap: 4,
|
|
44
36
|
});
|
|
45
37
|
|
|
46
38
|
/**
|
|
47
|
-
* Default auto-fix loop ceilings for /deliver
|
|
48
|
-
*
|
|
49
|
-
* `
|
|
50
|
-
* (Story #2611, Epic #2586).
|
|
51
|
-
*
|
|
52
|
-
* `autoFixSeverity` is **tier-aware** (Story #4412, Epic #4405). The
|
|
53
|
-
* Epic-close audit tier (`DEFAULT_EPIC_AUDIT`) defaults to `'high'` —
|
|
54
|
-
* remediating only 🔴 Critical + 🟠 High findings on-branch while 🟡 Medium
|
|
55
|
-
* and 🟢 Suggestion findings graduate to follow-up issues. This is the
|
|
56
|
-
* three-tier model's slim outermost tier: 🟡 Medium code-quality concerns are
|
|
57
|
-
* already routed into on-branch remediation shift-left (the write-time
|
|
58
|
-
* checklist threading of Story #4410 and the Story-scope local-lens pass of
|
|
59
|
-
* Story #4409), so the Epic-close tier stops paying to re-remediate them where
|
|
60
|
-
* a fix is most expensive. The code-review tier (`DEFAULT_CODE_REVIEW`) keeps
|
|
61
|
-
* the `'medium'` default introduced by Story #4399. Both are hard cutovers per
|
|
62
|
-
* `rules/git-conventions.md` — no back-compat flag; an operator opts back into
|
|
63
|
-
* the wider routing by setting `delivery.epicAudit.autoFixSeverity: 'medium'`.
|
|
39
|
+
* Default auto-fix loop ceilings for /deliver code-review. Operators
|
|
40
|
+
* override via `delivery.codeReview.*` in `.agentrc.json` (Story #2611,
|
|
41
|
+
* Epic #2586; `autoFixSeverity` default `'medium'` per Story #4399).
|
|
64
42
|
*/
|
|
65
|
-
export const DEFAULT_EPIC_AUDIT = Object.freeze({
|
|
66
|
-
maxFixAttempts: 3,
|
|
67
|
-
maxFixScopeFiles: 5,
|
|
68
|
-
autoFixSeverity: 'high',
|
|
69
|
-
});
|
|
70
|
-
|
|
71
43
|
export const DEFAULT_CODE_REVIEW = Object.freeze({
|
|
72
44
|
maxFixAttempts: 3,
|
|
73
45
|
maxFixScopeFiles: 5,
|
|
@@ -79,36 +51,19 @@ export const DEFAULT_CODE_REVIEW = Object.freeze({
|
|
|
79
51
|
*
|
|
80
52
|
* @param {object | null | undefined} config
|
|
81
53
|
* @returns {{
|
|
82
|
-
* deliverRunner: { concurrencyCap: number
|
|
83
|
-
* epicAudit: { maxFixAttempts: number, maxFixScopeFiles: number, autoFixSeverity: 'high'|'medium' },
|
|
54
|
+
* deliverRunner: { concurrencyCap: number },
|
|
84
55
|
* codeReview: { maxFixAttempts: number, maxFixScopeFiles: number, autoFixSeverity: 'high'|'medium' },
|
|
85
|
-
* storyMergeRetry: { maxAttempts: number, backoffMs: readonly number[] },
|
|
86
56
|
* decomposer: { concurrencyCap: number },
|
|
87
57
|
* }}
|
|
88
58
|
*/
|
|
89
59
|
export function getRunners(config) {
|
|
90
60
|
const deliverRunnerUser = config?.delivery?.deliverRunner ?? {};
|
|
91
|
-
const epicAuditUser = config?.delivery?.epicAudit ?? {};
|
|
92
61
|
const codeReviewUser = config?.delivery?.codeReview ?? {};
|
|
93
62
|
return {
|
|
94
63
|
deliverRunner: {
|
|
95
64
|
concurrencyCap:
|
|
96
65
|
deliverRunnerUser.concurrencyCap ??
|
|
97
66
|
DEFAULT_DELIVER_RUNNER.concurrencyCap,
|
|
98
|
-
progressReportIntervalSec:
|
|
99
|
-
deliverRunnerUser.progressReportIntervalSec ??
|
|
100
|
-
DEFAULT_DELIVER_RUNNER.progressReportIntervalSec,
|
|
101
|
-
verifyConcurrencyCap:
|
|
102
|
-
deliverRunnerUser.verifyConcurrencyCap ??
|
|
103
|
-
DEFAULT_DELIVER_RUNNER.verifyConcurrencyCap,
|
|
104
|
-
},
|
|
105
|
-
epicAudit: {
|
|
106
|
-
maxFixAttempts:
|
|
107
|
-
epicAuditUser.maxFixAttempts ?? DEFAULT_EPIC_AUDIT.maxFixAttempts,
|
|
108
|
-
maxFixScopeFiles:
|
|
109
|
-
epicAuditUser.maxFixScopeFiles ?? DEFAULT_EPIC_AUDIT.maxFixScopeFiles,
|
|
110
|
-
autoFixSeverity:
|
|
111
|
-
epicAuditUser.autoFixSeverity ?? DEFAULT_EPIC_AUDIT.autoFixSeverity,
|
|
112
67
|
},
|
|
113
68
|
codeReview: {
|
|
114
69
|
maxFixAttempts:
|
|
@@ -118,7 +73,6 @@ export function getRunners(config) {
|
|
|
118
73
|
autoFixSeverity:
|
|
119
74
|
codeReviewUser.autoFixSeverity ?? DEFAULT_CODE_REVIEW.autoFixSeverity,
|
|
120
75
|
},
|
|
121
|
-
storyMergeRetry: DEFAULT_STORY_MERGE_RETRY,
|
|
122
76
|
decomposer: DEFAULT_DECOMPOSER,
|
|
123
77
|
};
|
|
124
78
|
}
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `temp/
|
|
2
|
+
* `temp/run-<id>/` path-resolution helper (Epic #1030 Story #1039).
|
|
3
3
|
*
|
|
4
4
|
* Single source of truth for every artifact path that lives under
|
|
5
5
|
* `project.paths.tempRoot`. Every script that previously hand-rolled
|
|
6
|
-
* a flat `temp/<artifact>-
|
|
6
|
+
* a flat `temp/<artifact>-run-<id>.<ext>` path migrates to call one of
|
|
7
7
|
* these helpers. The Tech Spec (#1032) names this module as the cutover
|
|
8
8
|
* grep target — `temp/.*-epic-` should be empty across `.agents/scripts`
|
|
9
9
|
* once the migration Stories land.
|
|
10
10
|
*
|
|
11
11
|
* Layout:
|
|
12
|
-
* temp/
|
|
12
|
+
* temp/run-<eid>/
|
|
13
13
|
* ├─ techspec.md
|
|
14
14
|
* ├─ manifest.md (dispatch manifest)
|
|
15
15
|
* ├─ retro.md (mirror of GitHub retro at Epic close)
|
|
16
|
-
* ├─ perf-report.md (analyzer output, Epic-level)
|
|
17
16
|
* ├─ lifecycle.ndjson (lifecycle bus ledger)
|
|
18
|
-
* ├─ checkpoints/... (epic-runner state store)
|
|
19
|
-
* ├─ <name> (
|
|
17
|
+
* ├─ checkpoints/... (pre-v2 epic-runner state store; retained layout)
|
|
18
|
+
* ├─ <name> (runArtifactPath escape hatch)
|
|
20
19
|
* └─ stories/
|
|
21
20
|
* └─ story-<sid>/
|
|
22
21
|
* ├─ manifest.md (story dispatch manifest)
|
|
23
22
|
* ├─ signals.ndjson (append-only signals writer)
|
|
24
|
-
* ├─ perf-summary.md
|
|
25
23
|
* └─ <name> (storyArtifactPath escape hatch)
|
|
26
24
|
*
|
|
27
25
|
* Standalone Stories (no parent Epic) follow the same shape under
|
|
@@ -42,11 +40,12 @@
|
|
|
42
40
|
* resolve a *relative* `tempRoot` against the **main checkout root** (the
|
|
43
41
|
* parent of `git rev-parse --git-common-dir`) rather than `process.cwd()`.
|
|
44
42
|
* Without this, a story child that `cd`s into `.worktrees/story-<id>/` before
|
|
45
|
-
*
|
|
46
|
-
* `<worktree>/temp/
|
|
43
|
+
* emitting a lifecycle record would append it to
|
|
44
|
+
* `<worktree>/temp/run-N/lifecycle.ndjson`, while the `/deliver` host
|
|
47
45
|
* (running from the main checkout) reads the main-checkout copy — so the
|
|
48
|
-
*
|
|
49
|
-
*
|
|
46
|
+
* host never sees the child's records (the audit-#3513 bug class; its
|
|
47
|
+
* original `story.heartbeat` instance is gone with that emitter, but the
|
|
48
|
+
* divergence applies to every ledger writer). Anchoring the
|
|
50
49
|
* ledger to the git common dir makes the worktree child writer and the
|
|
51
50
|
* main-checkout host reader converge on a single file regardless of cwd. An
|
|
52
51
|
* absolute `tempRoot` is honoured verbatim; only relative roots are anchored.
|
|
@@ -155,11 +154,9 @@ export function tempRootFrom(config) {
|
|
|
155
154
|
: 'temp';
|
|
156
155
|
}
|
|
157
156
|
|
|
158
|
-
const
|
|
157
|
+
const runId = (id) => {
|
|
159
158
|
if (!Number.isInteger(id) || id <= 0) {
|
|
160
|
-
throw new Error(
|
|
161
|
-
`[temp-paths] epicId must be a positive integer; got ${id}`,
|
|
162
|
-
);
|
|
159
|
+
throw new Error(`[temp-paths] runId must be a positive integer; got ${id}`);
|
|
163
160
|
}
|
|
164
161
|
return id;
|
|
165
162
|
};
|
|
@@ -206,18 +203,18 @@ const artifactName = (name) => {
|
|
|
206
203
|
};
|
|
207
204
|
|
|
208
205
|
/**
|
|
209
|
-
* `temp/
|
|
206
|
+
* `temp/run-<id>/` — every run-scoped artifact lives under here.
|
|
210
207
|
*
|
|
211
|
-
* @param {number}
|
|
208
|
+
* @param {number} rid
|
|
212
209
|
* @param {object} [config]
|
|
213
210
|
* @returns {string}
|
|
214
211
|
*/
|
|
215
|
-
export function
|
|
216
|
-
return path.join(anchorTempRoot(tempRootFrom(config)), `
|
|
212
|
+
export function runTempDir(rid, config) {
|
|
213
|
+
return path.join(anchorTempRoot(tempRootFrom(config)), `run-${runId(rid)}`);
|
|
217
214
|
}
|
|
218
215
|
|
|
219
216
|
/**
|
|
220
|
-
* `temp/
|
|
217
|
+
* `temp/run-<eid>/stories/story-<sid>/` — every Story-scoped artifact
|
|
221
218
|
* lives under here.
|
|
222
219
|
*
|
|
223
220
|
* Story #2874: accepts `eid === null` for standalone Stories (no
|
|
@@ -241,12 +238,12 @@ export function storyTempDir(eid, sid, config) {
|
|
|
241
238
|
const parent =
|
|
242
239
|
checkedEid === null
|
|
243
240
|
? path.join(anchorTempRoot(tempRootFrom(config)), 'standalone')
|
|
244
|
-
:
|
|
241
|
+
: runTempDir(checkedEid, config);
|
|
245
242
|
return path.join(parent, 'stories', `story-${storyId(sid)}`);
|
|
246
243
|
}
|
|
247
244
|
|
|
248
245
|
/**
|
|
249
|
-
* `temp/
|
|
246
|
+
* `temp/run-<eid>/stories/story-<sid>/signals.ndjson` — append-only
|
|
250
247
|
* signal stream consumed by the analyzer (Epic #1030 AC1).
|
|
251
248
|
*
|
|
252
249
|
* @param {number} eid
|
|
@@ -259,18 +256,18 @@ export function signalsFile(eid, sid, config) {
|
|
|
259
256
|
}
|
|
260
257
|
|
|
261
258
|
/**
|
|
262
|
-
* `temp/
|
|
259
|
+
* `temp/run-<eid>/stories/story-<sid>/lifecycle.ndjson` — the story-scope
|
|
263
260
|
* ledger destination for lifecycle events emitted directly by a Story
|
|
264
261
|
* (rather than routed through the Epic-scoped bus ledger). Story #4426
|
|
265
262
|
* (Epic #4425) introduces the first consumer: a standalone
|
|
266
263
|
* `single-story-close` run (no parent Epic) emitting `merge.unlanded`
|
|
267
|
-
* needs an on-disk home even though there is no `
|
|
264
|
+
* needs an on-disk home even though there is no `run-<id>/` directory to
|
|
268
265
|
* anchor the event to.
|
|
269
266
|
*
|
|
270
|
-
* Mirrors `
|
|
267
|
+
* Mirrors `runLedgerPath` exactly, one level down: `eid === null` routes
|
|
271
268
|
* through `storyTempDir`'s standalone branch to
|
|
272
269
|
* `<tempRoot>/standalone/stories/story-<sid>/lifecycle.ndjson`; a real
|
|
273
|
-
* `eid` routes to `<tempRoot>/
|
|
270
|
+
* `eid` routes to `<tempRoot>/run-<eid>/stories/story-<sid>/lifecycle.ndjson`,
|
|
274
271
|
* so an Epic-attached Story's story-scope ledger sits alongside its
|
|
275
272
|
* `signals.ndjson` sibling.
|
|
276
273
|
*
|
|
@@ -293,14 +290,13 @@ export const storyLedgerPath = (eid, sid, config) =>
|
|
|
293
290
|
* @param {object} [config]
|
|
294
291
|
* @returns {string}
|
|
295
292
|
*/
|
|
296
|
-
export function
|
|
297
|
-
return path.join(
|
|
293
|
+
export function runArtifactPath(eid, name, config) {
|
|
294
|
+
return path.join(runTempDir(eid, config), artifactName(name));
|
|
298
295
|
}
|
|
299
296
|
|
|
300
297
|
/**
|
|
301
298
|
* Escape hatch for a Story-level artifact whose name isn't part of the
|
|
302
|
-
* canonical layout (signals.ndjson +
|
|
303
|
-
* named helpers).
|
|
299
|
+
* canonical layout (signals.ndjson + manifest.md ship named helpers).
|
|
304
300
|
*
|
|
305
301
|
* @param {number} eid
|
|
306
302
|
* @param {number} sid
|
|
@@ -308,39 +304,12 @@ export function epicArtifactPath(eid, name, config) {
|
|
|
308
304
|
* @param {object} [config]
|
|
309
305
|
* @returns {string}
|
|
310
306
|
*/
|
|
311
|
-
|
|
307
|
+
function storyArtifactPath(eid, sid, name, config) {
|
|
312
308
|
return path.join(storyTempDir(eid, sid, config), artifactName(name));
|
|
313
309
|
}
|
|
314
310
|
|
|
315
|
-
// --- Canonical Epic-level filenames (Tech Spec #1032 §tempRoot) ---
|
|
316
|
-
|
|
317
|
-
export const epicTechSpecPath = (eid, config) =>
|
|
318
|
-
epicArtifactPath(eid, 'techspec.md', config);
|
|
319
|
-
export const epicManifestPath = (eid, config) =>
|
|
320
|
-
epicArtifactPath(eid, 'manifest.md', config);
|
|
321
|
-
export const epicRetroMirrorPath = (eid, config) =>
|
|
322
|
-
epicArtifactPath(eid, 'retro.md', config);
|
|
323
|
-
export const epicPerfReportPath = (eid, config) =>
|
|
324
|
-
epicArtifactPath(eid, 'perf-report.md', config);
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* `temp/epic-<eid>/epic-perf-report.json` — canonical JSON snapshot of
|
|
328
|
-
* the `epic-perf-report` payload persisted at /deliver close
|
|
329
|
-
* (Epic #3019 / Story #3029 / Task #3040). When present alongside the
|
|
330
|
-
* `epic-perf-report` structured comment, the report is discoverable
|
|
331
|
-
* from the file system without round-tripping the ticketing provider,
|
|
332
|
-
* and the `epic-handoff` structured close comment links it by relative
|
|
333
|
-
* path.
|
|
334
|
-
*
|
|
335
|
-
* @param {number} eid
|
|
336
|
-
* @param {object} [config]
|
|
337
|
-
* @returns {string}
|
|
338
|
-
*/
|
|
339
|
-
export const epicPerfReportJsonPath = (eid, config) =>
|
|
340
|
-
epicArtifactPath(eid, 'epic-perf-report.json', config);
|
|
341
|
-
|
|
342
311
|
/**
|
|
343
|
-
* `temp/
|
|
312
|
+
* `temp/run-<eid>/lifecycle.ndjson` — append-only lifecycle bus ledger
|
|
344
313
|
* (Story #2510). The LedgerWriter persists every emitted/completed/failed
|
|
345
314
|
* record here; the TraceLogger renders the companion markdown from it.
|
|
346
315
|
*
|
|
@@ -352,12 +321,10 @@ export const epicPerfReportJsonPath = (eid, config) =>
|
|
|
352
321
|
* @param {object} [config]
|
|
353
322
|
* @returns {string}
|
|
354
323
|
*/
|
|
355
|
-
export const
|
|
356
|
-
|
|
324
|
+
export const runLedgerPath = (eid, config) =>
|
|
325
|
+
runArtifactPath(eid, 'lifecycle.ndjson', config);
|
|
357
326
|
|
|
358
327
|
// --- Canonical Story-level filenames ---
|
|
359
328
|
|
|
360
329
|
export const storyManifestPath = (eid, sid, config) =>
|
|
361
330
|
storyArtifactPath(eid, sid, 'manifest.md', config);
|
|
362
|
-
export const storyPerfSummaryPath = (eid, sid, config) =>
|
|
363
|
-
storyArtifactPath(eid, sid, 'perf-summary.md', config);
|
|
@@ -33,7 +33,6 @@ export const WORKTREE_ISOLATION_DEFAULTS = Object.freeze({
|
|
|
33
33
|
primeFromPath: null,
|
|
34
34
|
allowSymlinkOnWindows: false,
|
|
35
35
|
reapOnSuccess: true,
|
|
36
|
-
reapOnCancel: true,
|
|
37
36
|
// Gitignored workspace files copied into each new worktree. Includes the
|
|
38
37
|
// operator's local-override files (`.agentrc.local.json`,
|
|
39
38
|
// `.agents/instructions.local.md`) so a worktree-isolated agent honors the
|
|
@@ -84,10 +83,6 @@ export function getWorktreeIsolation(config) {
|
|
|
84
83
|
typeof wi.reapOnSuccess === 'boolean'
|
|
85
84
|
? wi.reapOnSuccess
|
|
86
85
|
: WORKTREE_ISOLATION_DEFAULTS.reapOnSuccess,
|
|
87
|
-
reapOnCancel:
|
|
88
|
-
typeof wi.reapOnCancel === 'boolean'
|
|
89
|
-
? wi.reapOnCancel
|
|
90
|
-
: WORKTREE_ISOLATION_DEFAULTS.reapOnCancel,
|
|
91
86
|
bootstrapFiles: Array.isArray(wi.bootstrapFiles)
|
|
92
87
|
? wi.bootstrapFiles
|
|
93
88
|
: [...WORKTREE_ISOLATION_DEFAULTS.bootstrapFiles],
|
|
@@ -27,7 +27,6 @@ import path from 'node:path';
|
|
|
27
27
|
import { getCiDelivery } from './config/ci.js';
|
|
28
28
|
import { getCommands } from './config/commands.js';
|
|
29
29
|
import { getGitHub } from './config/github.js';
|
|
30
|
-
import { getLifecycle } from './config/lifecycle.js';
|
|
31
30
|
import { resolvePaths } from './config/paths.js';
|
|
32
31
|
import { validateOrchestrationConfig } from './config/validate-orchestration.js';
|
|
33
32
|
import { getWorktreeIsolation } from './config/worktree-isolation.js';
|
|
@@ -43,10 +42,8 @@ export { NOTIFICATIONS_DEFAULTS } from './config/github.js';
|
|
|
43
42
|
export {
|
|
44
43
|
getLimits,
|
|
45
44
|
LIMITS_DEFAULTS,
|
|
46
|
-
resolvePreflightCeilings,
|
|
47
45
|
} from './config/limits.js';
|
|
48
46
|
export { getPaths } from './config/paths.js';
|
|
49
|
-
export { getPreflight, PREFLIGHT_DEFAULTS } from './config/preflight.js';
|
|
50
47
|
export {
|
|
51
48
|
CODING_GUARDRAILS_DEFAULTS,
|
|
52
49
|
getQuality,
|
|
@@ -107,10 +104,8 @@ function applyDeliveryDefaults(rawDelivery) {
|
|
|
107
104
|
delivery.worktreeIsolation = getWorktreeIsolation({
|
|
108
105
|
worktreeIsolation: delivery.worktreeIsolation,
|
|
109
106
|
});
|
|
110
|
-
delivery.
|
|
111
|
-
//
|
|
112
|
-
// `skipForStoryPushes: true` by default so Story-branch commit
|
|
113
|
-
// tooling applies the `[skip ci]` trailer without operator opt-in.
|
|
107
|
+
// `delivery.ci` always carries autoMerge (and passes watch through) so
|
|
108
|
+
// CI-aware delivery knobs resolve without operator opt-in.
|
|
114
109
|
delivery.ci = getCiDelivery({ ci: delivery.ci });
|
|
115
110
|
return delivery;
|
|
116
111
|
}
|