mandrel 1.94.0 → 2.0.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 +59 -73
- package/.agents/agents/story-worker.md +12 -13
- package/.agents/docs/SDLC.md +489 -1285
- package/.agents/docs/agentrc-reference.json +177 -67
- package/.agents/docs/configuration.md +104 -138
- package/.agents/docs/execution-reference.md +17 -20
- package/.agents/docs/quality-gates.md +13 -19
- package/.agents/docs/workflows.md +3 -3
- package/.agents/instructions.md +70 -81
- package/.agents/rules/ci-remediation.md +8 -12
- package/.agents/rules/git-conventions-reference.md +6 -7
- package/.agents/rules/git-conventions.md +16 -22
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +54 -214
- package/.agents/schemas/lifecycle/ledger-record.schema.json +1 -1
- package/.agents/schemas/lifecycle/retro.end.schema.json +1 -1
- package/.agents/schemas/risk-verdict.schema.json +0 -13
- package/.agents/scripts/analyze-execution.js +1 -1
- package/.agents/scripts/audit-to-stories.js +7 -7
- package/.agents/scripts/boot-sweep.js +1 -1
- package/.agents/scripts/check-lifecycle-lint.js +6 -9
- package/.agents/scripts/check-prepush-recovery.js +1 -1
- package/.agents/scripts/cleanup-repo-test-temp.js +6 -1
- 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 +5 -5
- 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 -4
- package/.agents/scripts/lib/baselines/reader.js +1 -6
- package/.agents/scripts/lib/bdd-runner-detect.js +5 -9
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +32 -33
- package/.agents/scripts/lib/checks/core-bare-clean.js +2 -2
- package/.agents/scripts/lib/checks/index.js +2 -1
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +23 -21
- package/.agents/scripts/lib/cli/standard-args.js +13 -22
- package/.agents/scripts/lib/cli-args.js +16 -7
- package/.agents/scripts/lib/close-validation/gates.js +2 -2
- package/.agents/scripts/lib/config/ci.js +6 -31
- package/.agents/scripts/lib/config/delivery-routing.js +45 -29
- package/.agents/scripts/lib/config/explain.js +55 -36
- package/.agents/scripts/lib/config/limits.js +17 -58
- package/.agents/scripts/lib/config/paths.js +0 -2
- package/.agents/scripts/lib/config/quality.js +1 -1
- package/.agents/scripts/lib/config/runners.js +17 -50
- package/.agents/scripts/lib/config/temp-paths.js +19 -14
- 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 +24 -148
- package/.agents/scripts/lib/config-settings-schema-quality.js +8 -14
- package/.agents/scripts/lib/config-settings-schema.js +52 -38
- 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 +211 -41
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +1 -1
- package/.agents/scripts/lib/findings/promote-finding.js +5 -5
- package/.agents/scripts/lib/framework-version.js +2 -3
- package/.agents/scripts/lib/git-branch-cleanup.js +1 -10
- package/.agents/scripts/lib/git-branch-lifecycle.js +17 -22
- package/.agents/scripts/lib/git-utils.js +32 -6
- package/.agents/scripts/lib/github/framework-repo.js +6 -0
- package/.agents/scripts/lib/label-constants.js +10 -23
- package/.agents/scripts/lib/label-taxonomy.js +9 -43
- package/.agents/scripts/lib/observability/active-story-env.js +1 -1
- package/.agents/scripts/lib/observability/hook-heartbeat.js +20 -52
- package/.agents/scripts/lib/observability/source-classifier.js +3 -3
- package/.agents/scripts/lib/onboard/init-tail.js +1 -3
- package/.agents/scripts/lib/orchestration/audit-lens-routing.js +128 -0
- package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +8 -5
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +83 -20
- package/.agents/scripts/lib/orchestration/code-review.js +20 -268
- package/.agents/scripts/lib/orchestration/column-sync.js +1 -1
- package/.agents/scripts/lib/orchestration/consolidation-precondition.js +1 -1
- package/.agents/scripts/lib/orchestration/context-envelope.js +2 -5
- 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/lifecycle/emit-loop-tick.js +8 -8
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +2 -2
- package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +6 -3
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +17 -43
- package/.agents/scripts/lib/orchestration/lint-baseline-service.js +4 -4
- package/.agents/scripts/lib/orchestration/merge-block-class.js +1 -1
- package/.agents/scripts/lib/orchestration/phase-runner.js +3 -2
- package/.agents/scripts/lib/orchestration/plan-context.js +248 -266
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +1 -1
- package/.agents/scripts/lib/orchestration/plan-navigation.js +92 -0
- package/.agents/scripts/lib/orchestration/plan-persist/fan-out-gate.js +61 -0
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +97 -0
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +223 -854
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +361 -0
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +35 -108
- 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 +13 -13
- package/.agents/scripts/lib/orchestration/planning/decomposer-context.js +27 -0
- package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/risk-verdict.js +3 -4
- package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +2 -2
- package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +8 -20
- package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +3 -2
- package/.agents/scripts/lib/orchestration/pr-base-guard.js +18 -28
- package/.agents/scripts/lib/orchestration/preflight-cache.js +5 -5
- package/.agents/scripts/lib/orchestration/remote-verifier.js +1 -1
- package/.agents/scripts/lib/orchestration/resolve-plan-run.js +155 -0
- package/.agents/scripts/lib/orchestration/resolves-token.js +1 -1
- package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +8 -8
- package/.agents/scripts/lib/orchestration/retro-proposals.js +140 -79
- package/.agents/scripts/lib/orchestration/review-depth.js +26 -12
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +2 -2
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +21 -56
- package/.agents/scripts/lib/orchestration/run-epilogue.js +426 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +1 -1
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +95 -41
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +16 -13
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +40 -0
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +11 -3
- 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/phases/code-review.js +15 -12
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +237 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +47 -0
- package/.agents/scripts/lib/orchestration/story-plan-state.js +48 -0
- package/.agents/scripts/lib/orchestration/{epic-runner → story-progress}/story-run-progress-writer.js +3 -3
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +1 -1
- package/.agents/scripts/lib/orchestration/task-body-validator.js +8 -18
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +11 -61
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +189 -373
- package/.agents/scripts/lib/orchestration/ticket-validator.js +2 -7
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +0 -25
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +29 -26
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +5 -5
- package/.agents/scripts/lib/planning-corpus.js +16 -11
- package/.agents/scripts/lib/preflight-runner.js +2 -2
- package/.agents/scripts/lib/qa/coverage-verdict.js +5 -5
- package/.agents/scripts/lib/single-story/confirm-merge-follow-ups.js +36 -0
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +1 -1
- package/.agents/scripts/lib/story-adjacency.js +11 -14
- package/.agents/scripts/lib/story-body/story-body.js +124 -70
- package/.agents/scripts/lib/story-plan.js +2 -4
- package/.agents/scripts/lib/templates/decomposer-prompts.js +46 -45
- package/.agents/scripts/lib/templates/spec-author-prompts.js +47 -45
- package/.agents/scripts/lib/{epic-body-sections.js → ticket-body-sections.js} +26 -26
- package/.agents/scripts/lib/validation-evidence.js +1 -1
- package/.agents/scripts/lib/wave-runner/ready-set.js +6 -6
- package/.agents/scripts/lib/workspace-provisioner.js +1 -1
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +5 -7
- 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 +64 -74
- package/.agents/scripts/plan-persist.js +121 -280
- package/.agents/scripts/plan-run-epilogue.js +97 -0
- package/.agents/scripts/providers/github/issues.js +17 -33
- package/.agents/scripts/providers/github/mappers.js +0 -12
- package/.agents/scripts/providers/github/tickets.js +2 -5
- package/.agents/scripts/resolve-plan-run.js +117 -0
- package/.agents/scripts/signals-view.js +24 -19
- package/.agents/scripts/single-story-close.js +11 -14
- package/.agents/scripts/single-story-confirm-merge.js +39 -23
- package/.agents/scripts/single-story-init.js +29 -20
- package/.agents/scripts/stories-wave-tick.js +6 -6
- package/.agents/scripts/story-plan.js +26 -47
- package/.agents/scripts/update-ticket-state.js +6 -15
- package/.agents/skills/core/analyze-execution/SKILL.md +21 -18
- package/.agents/skills/core/idea-refinement/SKILL.md +6 -6
- package/.agents/skills/core/scope-triage/SKILL.md +28 -172
- package/.agents/skills/skills.index.json +3 -43
- package/.agents/starter-agentrc.json +0 -5
- package/.agents/templates/agent-protocol.md +9 -10
- package/.agents/workflows/audit-architecture.md +3 -3
- package/.agents/workflows/audit-clean-code.md +3 -3
- package/.agents/workflows/audit-dependencies.md +3 -3
- package/.agents/workflows/audit-devops.md +3 -3
- package/.agents/workflows/audit-documentation.md +5 -5
- package/.agents/workflows/audit-lighthouse.md +3 -3
- package/.agents/workflows/audit-navigability.md +3 -2
- package/.agents/workflows/audit-performance.md +3 -3
- package/.agents/workflows/audit-privacy.md +3 -3
- package/.agents/workflows/audit-quality.md +3 -3
- package/.agents/workflows/audit-security.md +3 -3
- package/.agents/workflows/audit-seo.md +3 -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 +3 -3
- package/.agents/workflows/deliver.md +122 -174
- package/.agents/workflows/git-cleanup.md +3 -4
- package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
- package/.agents/workflows/helpers/acceptance-self-eval.md +16 -29
- package/.agents/workflows/helpers/code-review.md +70 -193
- package/.agents/workflows/helpers/{single-story-deliver-reference.md → deliver-story-reference.md} +12 -14
- package/.agents/workflows/helpers/{single-story-deliver.md → deliver-story.md} +113 -139
- package/.agents/workflows/helpers/diagnose.md +10 -10
- package/.agents/workflows/helpers/parallel-tooling.md +1 -1
- package/.agents/workflows/helpers/signals.md +16 -16
- package/.agents/workflows/helpers/worktree-lifecycle.md +48 -64
- package/.agents/workflows/mandrel-update.md +2 -1
- package/.agents/workflows/plan.md +112 -145
- package/.agents/workflows/qa-assist.md +24 -30
- package/.agents/workflows/qa-explore.md +29 -38
- package/.agents/workflows/qa-run.md +2 -2
- package/README.md +9 -8
- package/docs/CHANGELOG.md +30 -0
- package/lib/migrations/index.js +6 -5
- 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-spec.schema.json +0 -153
- 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/scripts/acceptance-spec-reconciler.js +0 -642
- package/.agents/scripts/bookkeeping-reconcile.js +0 -117
- 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/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/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/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/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/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/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/post-merge-pipeline.js +0 -205
- 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-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/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/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/spec-authoring-grounding.js +0 -0
|
@@ -64,40 +64,14 @@ const DELIVER_RUNNER_SCHEMA = {
|
|
|
64
64
|
type: 'object',
|
|
65
65
|
properties: {
|
|
66
66
|
concurrencyCap: { type: 'integer', minimum: 1 },
|
|
67
|
-
progressReportIntervalSec: { type: 'integer', minimum: 0 },
|
|
68
67
|
verifyConcurrencyCap: { type: 'integer', minimum: 1 },
|
|
69
68
|
},
|
|
70
69
|
additionalProperties: false,
|
|
71
70
|
};
|
|
72
71
|
|
|
73
72
|
/**
|
|
74
|
-
* `delivery.
|
|
75
|
-
* gates for the retro perf-signals classifier. Defaults are documented inline
|
|
76
|
-
* here and mirrored in `lib/orchestration/retro-perf-heuristics.js
|
|
77
|
-
* (DEFAULT_RETRO_PERF_THRESHOLDS)` and the static schema mirror.
|
|
78
|
-
*
|
|
79
|
-
* `utilisation` / `bootstrapShare` are unit-interval ratios; values outside
|
|
80
|
-
* [0, 1] fall back to defaults at the resolver. `capBindingRunLength` is a
|
|
81
|
-
* positive integer count of consecutive cap-binding waves.
|
|
73
|
+
* `delivery.worktreeIsolation` — per-Story git worktree provisioning.
|
|
82
74
|
*/
|
|
83
|
-
const RETRO_PERF_THRESHOLDS_SCHEMA = {
|
|
84
|
-
type: 'object',
|
|
85
|
-
properties: {
|
|
86
|
-
utilisation: { type: 'number', minimum: 0, maximum: 1 },
|
|
87
|
-
bootstrapShare: { type: 'number', minimum: 0, maximum: 1 },
|
|
88
|
-
capBindingRunLength: { type: 'integer', minimum: 1 },
|
|
89
|
-
},
|
|
90
|
-
additionalProperties: false,
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
const RETRO_SCHEMA = {
|
|
94
|
-
type: 'object',
|
|
95
|
-
properties: {
|
|
96
|
-
perfThresholds: RETRO_PERF_THRESHOLDS_SCHEMA,
|
|
97
|
-
},
|
|
98
|
-
additionalProperties: false,
|
|
99
|
-
};
|
|
100
|
-
|
|
101
75
|
const WORKTREE_ISOLATION_SCHEMA = {
|
|
102
76
|
type: 'object',
|
|
103
77
|
properties: {
|
|
@@ -110,11 +84,15 @@ const WORKTREE_ISOLATION_SCHEMA = {
|
|
|
110
84
|
primeFromPath: { type: ['string', 'null'], minLength: 1 },
|
|
111
85
|
allowSymlinkOnWindows: { type: 'boolean' },
|
|
112
86
|
reapOnSuccess: { type: 'boolean' },
|
|
113
|
-
reapOnCancel: { type: 'boolean' },
|
|
114
87
|
bootstrapFiles: {
|
|
115
88
|
type: 'array',
|
|
116
89
|
items: { type: 'string', minLength: 1 },
|
|
117
|
-
default: [
|
|
90
|
+
default: [
|
|
91
|
+
'.env',
|
|
92
|
+
'.mcp.json',
|
|
93
|
+
'.agentrc.local.json',
|
|
94
|
+
'.agents/instructions.local.md',
|
|
95
|
+
],
|
|
118
96
|
},
|
|
119
97
|
},
|
|
120
98
|
additionalProperties: false,
|
|
@@ -132,20 +110,14 @@ const WORKTREE_ISOLATION_SCHEMA = {
|
|
|
132
110
|
};
|
|
133
111
|
|
|
134
112
|
/**
|
|
135
|
-
* `delivery.signals` — detector thresholds for the
|
|
136
|
-
* performance-signal categories. `
|
|
137
|
-
*
|
|
113
|
+
* `delivery.signals` — detector thresholds for the surviving
|
|
114
|
+
* performance-signal categories. `hotspot` was retired with its detector
|
|
115
|
+
* (Epic #4406); `churn` and `idle` were dropped earlier (low signal-to-noise).
|
|
116
|
+
* Each block is shallow-merged by the resolver.
|
|
138
117
|
*/
|
|
139
118
|
const SIGNALS_SCHEMA = {
|
|
140
119
|
type: 'object',
|
|
141
120
|
properties: {
|
|
142
|
-
hotspot: {
|
|
143
|
-
type: 'object',
|
|
144
|
-
properties: {
|
|
145
|
-
p95Multiplier: { type: 'number', minimum: 0 },
|
|
146
|
-
},
|
|
147
|
-
additionalProperties: false,
|
|
148
|
-
},
|
|
149
121
|
rework: {
|
|
150
122
|
type: 'object',
|
|
151
123
|
properties: {
|
|
@@ -164,26 +136,6 @@ const SIGNALS_SCHEMA = {
|
|
|
164
136
|
additionalProperties: false,
|
|
165
137
|
};
|
|
166
138
|
|
|
167
|
-
/**
|
|
168
|
-
* `delivery.lifecycle` — knobs consumed by the lifecycle event bus
|
|
169
|
-
* (Epic #2172). `timeouts` is a per-event budget map (eventName → seconds)
|
|
170
|
-
* used by Story 11's `TimeoutWatchdog` listener; missing entries fall back
|
|
171
|
-
* to in-listener defaults. `heartbeatWarnSeconds` is the no-progress
|
|
172
|
-
* threshold consumed by `HeartbeatMonitor`. Story #2227 lays down the
|
|
173
|
-
* keys; consumers land in later stories.
|
|
174
|
-
*/
|
|
175
|
-
const LIFECYCLE_SCHEMA = {
|
|
176
|
-
type: 'object',
|
|
177
|
-
properties: {
|
|
178
|
-
timeouts: {
|
|
179
|
-
type: 'object',
|
|
180
|
-
additionalProperties: { type: 'integer', minimum: 1 },
|
|
181
|
-
},
|
|
182
|
-
heartbeatWarnSeconds: { type: 'integer', minimum: 1 },
|
|
183
|
-
},
|
|
184
|
-
additionalProperties: false,
|
|
185
|
-
};
|
|
186
|
-
|
|
187
139
|
/**
|
|
188
140
|
* `delivery.mergeWatch` — knobs consumed by the MergeWatcher lifecycle
|
|
189
141
|
* listener (Story #2896, Epic #2880). `intervalSeconds` is the poll
|
|
@@ -203,46 +155,13 @@ const MERGE_WATCH_SCHEMA = {
|
|
|
203
155
|
};
|
|
204
156
|
|
|
205
157
|
/**
|
|
206
|
-
* `delivery.epicAudit`
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
* caps how many files a single auto-fix may touch before escalating to
|
|
210
|
-
* `agent::blocked` (default 5) — a deliberately narrow bound for
|
|
211
|
-
* unattended auto-fixes, independent of the Story-sizing thresholds in
|
|
212
|
-
* `ticket-validator-sizing.js`.
|
|
213
|
-
*
|
|
214
|
-
* `autoFixSeverity` (Story #4399) is the threshold that governs which findings
|
|
215
|
-
* the Epic-close host-LLM remediation loop fixes on-branch. It is **tier-aware**
|
|
216
|
-
* (Story #4412, Epic #4405): the Epic-close audit tier defaults to `high`
|
|
217
|
-
* (route only 🔴 Critical + 🟠 High into remediation; 🟡 Medium + 🟢 Suggestion
|
|
218
|
-
* graduate to follow-up issues) because 🟡 Medium code-quality concerns are
|
|
219
|
-
* already remediated shift-left at the write-time and Story-scope tiers — the
|
|
220
|
-
* slim outermost tier stops re-paying to fix them where a fix is most
|
|
221
|
-
* expensive. Setting `medium` opts back into routing 🔴/🟠/🟡 on-branch. The
|
|
222
|
-
* enum is the single validation seam: a configured value round-trips through
|
|
223
|
-
* the resolver, and any value outside `['high', 'medium']` is rejected at load.
|
|
224
|
-
* Hard cutover per `rules/git-conventions.md` — there is no back-compat flag.
|
|
158
|
+
* `delivery.epicAudit` was removed on v2 (Story-only delivery — no
|
|
159
|
+
* epic-audit runner). Remediation policy lives on `delivery.codeReview`
|
|
160
|
+
* (`CODE_REVIEW_SCHEMA` imported from the quality schema module).
|
|
225
161
|
*/
|
|
226
|
-
const EPIC_AUDIT_SCHEMA = {
|
|
227
|
-
type: 'object',
|
|
228
|
-
properties: {
|
|
229
|
-
maxFixAttempts: { type: 'integer', minimum: 0 },
|
|
230
|
-
maxFixScopeFiles: { type: 'integer', minimum: 1 },
|
|
231
|
-
autoFixSeverity: { type: 'string', enum: ['high', 'medium'] },
|
|
232
|
-
},
|
|
233
|
-
additionalProperties: false,
|
|
234
|
-
};
|
|
235
162
|
|
|
236
|
-
// Epic #4475 (M4-A) — single-delivery routing kill-switch.
|
|
237
|
-
// `delivery.routing.singleDelivery` (default true via getDeliveryRouting) is
|
|
238
|
-
// the global kill-switch for the single-delivery route. When true (the
|
|
239
|
-
// default), an Epic marked `delivery::single` at plan time routes to the
|
|
240
|
-
// single-delivery helper; when false, EVERY Epic — even a single-marked one —
|
|
241
|
-
// is forced down the fan-out path (the instant, code-rollback-free per-consumer
|
|
242
|
-
// revert). Shipped INERT in M4-A: the router's single verdict falls through to
|
|
243
|
-
// fan-out until M4-B wires the executor, so the knob has no observable effect
|
|
244
|
-
// yet.
|
|
245
163
|
// Epic #4478 (M7-B) — role-scoped-agent kill-switch + maker-checker floor.
|
|
164
|
+
// Stage 6 dropped `delivery.routing.singleDelivery` (v1 epic route switch).
|
|
246
165
|
// `delivery.routing.roleScopedAgents` (default true via getDeliveryRouting)
|
|
247
166
|
// flips converted delivery spawns onto their `.claude/agents/<role>.md` boot
|
|
248
167
|
// context; false falls back to `subagent_type: general-purpose` (the instant
|
|
@@ -253,27 +172,21 @@ const EPIC_AUDIT_SCHEMA = {
|
|
|
253
172
|
const ROUTING_SCHEMA = {
|
|
254
173
|
type: 'object',
|
|
255
174
|
properties: {
|
|
256
|
-
singleDelivery: { type: 'boolean' },
|
|
257
175
|
roleScopedAgents: { type: 'boolean' },
|
|
258
176
|
freshCriticSampleRate: { type: 'number', minimum: 0, maximum: 1 },
|
|
177
|
+
ceremonyProfile: {
|
|
178
|
+
type: 'string',
|
|
179
|
+
enum: ['minimal', 'standard', 'strict'],
|
|
180
|
+
},
|
|
181
|
+
closeAndLand: { type: 'boolean' },
|
|
259
182
|
},
|
|
260
183
|
additionalProperties: false,
|
|
261
184
|
};
|
|
262
185
|
|
|
263
|
-
// Story #
|
|
264
|
-
// `
|
|
265
|
-
//
|
|
266
|
-
//
|
|
267
|
-
// The Epic-branch merge commit produced by story-close.js's merge
|
|
268
|
-
// runner never carries the marker, regardless of this flag.
|
|
269
|
-
//
|
|
270
|
-
// Story #4356 (Epic #4355) — CI-aware delivery namespace. `earlyPr` gates
|
|
271
|
-
// whether /deliver opens the Epic PR early (before every Story merges) so CI
|
|
272
|
-
// starts warming while later waves run; defaults to `true` via getCiDelivery.
|
|
273
|
-
// `watch.*` tunes the merge/CI watch poll loop (poll cadence, poll cap, and
|
|
274
|
-
// how many times the watcher may resume after a transient stall).
|
|
275
|
-
// `autoMerge` selects the merge posture: `"trust-ci"` (default) merges once
|
|
276
|
-
// required checks pass, `"strict"` additionally requires a clean review gate.
|
|
186
|
+
// Story #4356 (Epic #4355) — CI-aware delivery namespace. `watch.*` tunes
|
|
187
|
+
// the merge/CI watch poll loop; `autoMerge` selects the merge posture.
|
|
188
|
+
// Retired: `earlyPr` (Epic early-PR warmup) and `requireChecks` (no
|
|
189
|
+
// AutomergePredicate reader on v2).
|
|
277
190
|
const CI_WATCH_SCHEMA = {
|
|
278
191
|
type: 'object',
|
|
279
192
|
properties: {
|
|
@@ -287,33 +200,8 @@ const CI_WATCH_SCHEMA = {
|
|
|
287
200
|
const CI_DELIVERY_SCHEMA = {
|
|
288
201
|
type: 'object',
|
|
289
202
|
properties: {
|
|
290
|
-
skipForStoryPushes: { type: 'boolean' },
|
|
291
|
-
earlyPr: { type: 'boolean' },
|
|
292
203
|
watch: CI_WATCH_SCHEMA,
|
|
293
204
|
autoMerge: { type: 'string', enum: ['trust-ci', 'strict'] },
|
|
294
|
-
// Story #4472 — fail-closed-without-checks policy. When `true`, the
|
|
295
|
-
// AutomergePredicate refuses to arm merge in a repo that reports zero
|
|
296
|
-
// required checks ("no checks reported"), treating the absence of a CI
|
|
297
|
-
// gate as a hard block instead of green. Defaults to `false` so a
|
|
298
|
-
// checks-less repo with green close-validation gates lands headlessly
|
|
299
|
-
// rather than parking on the operator-merges path.
|
|
300
|
-
requireChecks: { type: 'boolean' },
|
|
301
|
-
},
|
|
302
|
-
additionalProperties: false,
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
// Story #2899 (Epic #2880) — `delivery.preflight.*` thresholds consumed
|
|
306
|
-
// by `epic-deliver-preflight.js`. When any value is exceeded the CLI
|
|
307
|
-
// surfaces a breach in its envelope and the workflow flips the Epic to
|
|
308
|
-
// `agent::blocked` (see /deliver Phase 1 prelude).
|
|
309
|
-
const PREFLIGHT_SCHEMA = {
|
|
310
|
-
type: 'object',
|
|
311
|
-
properties: {
|
|
312
|
-
maxStories: { type: 'integer', minimum: 1 },
|
|
313
|
-
maxWaves: { type: 'integer', minimum: 1 },
|
|
314
|
-
maxInstallCostSeconds: { type: 'integer', minimum: 1 },
|
|
315
|
-
maxGithubApiRequests: { type: 'integer', minimum: 1 },
|
|
316
|
-
maxClaudeQuotaTokens: { type: 'integer', minimum: 1 },
|
|
317
205
|
},
|
|
318
206
|
additionalProperties: false,
|
|
319
207
|
};
|
|
@@ -401,31 +289,19 @@ export const DELIVERY_SCHEMA = {
|
|
|
401
289
|
type: 'object',
|
|
402
290
|
properties: {
|
|
403
291
|
execution: EXECUTION_SCHEMA,
|
|
404
|
-
maxTokenBudget: { type: 'integer', minimum: 1 },
|
|
405
292
|
lease: LEASE_SCHEMA,
|
|
406
293
|
docsFreshness: DOCS_FRESHNESS_SCHEMA,
|
|
407
294
|
deliverRunner: DELIVER_RUNNER_SCHEMA,
|
|
408
295
|
worktreeIsolation: WORKTREE_ISOLATION_SCHEMA,
|
|
409
296
|
signals: SIGNALS_SCHEMA,
|
|
410
297
|
quality: QUALITY_SCHEMA,
|
|
411
|
-
lifecycle: LIFECYCLE_SCHEMA,
|
|
412
298
|
mergeWatch: MERGE_WATCH_SCHEMA,
|
|
413
|
-
epicAudit: EPIC_AUDIT_SCHEMA,
|
|
414
299
|
codeReview: CODE_REVIEW_SCHEMA,
|
|
415
|
-
retro: RETRO_SCHEMA,
|
|
416
300
|
refactorStage: REFACTOR_STAGE_SCHEMA,
|
|
417
301
|
acceptanceEval: ACCEPTANCE_EVAL_SCHEMA,
|
|
418
302
|
feedbackLoop: FEEDBACK_LOOP_SCHEMA,
|
|
419
303
|
ci: CI_DELIVERY_SCHEMA,
|
|
420
304
|
routing: ROUTING_SCHEMA,
|
|
421
|
-
preflight: PREFLIGHT_SCHEMA,
|
|
422
|
-
// Cross-Story concurrency-hazard gate (Story #2297). When true,
|
|
423
|
-
// `epic-deliver-prepare` refuses to flip the Epic to
|
|
424
|
-
// `agent::executing` if the upcoming waves still carry any conflict
|
|
425
|
-
// finding (Story #2296). Off by default; operators using the gate
|
|
426
|
-
// also need to wire findings into prepare via the runtime injection
|
|
427
|
-
// surface.
|
|
428
|
-
failOnConcurrencyHazards: { type: 'boolean' },
|
|
429
305
|
},
|
|
430
306
|
additionalProperties: false,
|
|
431
307
|
};
|
|
@@ -123,12 +123,11 @@ export const QUALITY_SCHEMA = {
|
|
|
123
123
|
};
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
|
-
* `delivery.codeReview` —
|
|
127
|
-
*
|
|
126
|
+
* `delivery.codeReview` — review-provider chain + bounded-retry knobs for
|
|
127
|
+
* the /deliver code-review ceremony (Story-close and plan-run close).
|
|
128
128
|
*
|
|
129
|
-
* `autoFixSeverity` (Story #4399) is the
|
|
130
|
-
*
|
|
131
|
-
* Phase 5 findings the host-LLM focused-fix routing remediates on-branch —
|
|
129
|
+
* `autoFixSeverity` (Story #4399) is the threshold that governs which
|
|
130
|
+
* findings the host-LLM focused-fix routing remediates on-branch —
|
|
132
131
|
* `medium` (default) routes 🔴/🟠/🟡 while 🟢 still graduates, `high`
|
|
133
132
|
* reproduces the pre-4399 Critical/High-only routing.
|
|
134
133
|
*/
|
|
@@ -144,15 +143,10 @@ export const CODE_REVIEW_SCHEMA = {
|
|
|
144
143
|
// hatch reserved for adapter-specific options.
|
|
145
144
|
//
|
|
146
145
|
// Story #2871 added `security-review` to the inline registry plus
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
// `
|
|
150
|
-
// `
|
|
151
|
-
provider: {
|
|
152
|
-
type: 'string',
|
|
153
|
-
enum: ['native', 'codex', 'security-review'],
|
|
154
|
-
default: 'native',
|
|
155
|
-
},
|
|
146
|
+
// the `providers: []` chain shape. Chain entries can also reference
|
|
147
|
+
// the `ultrareview` manual-prompt provider via `manualPrompt: true`.
|
|
148
|
+
// When `providers` is unset or empty, the factory defaults to
|
|
149
|
+
// `[{ name: 'native' }]`.
|
|
156
150
|
providers: {
|
|
157
151
|
type: 'array',
|
|
158
152
|
items: {
|
|
@@ -246,66 +246,80 @@ const CODEBASE_SNAPSHOT_SCHEMA = {
|
|
|
246
246
|
additionalProperties: false,
|
|
247
247
|
};
|
|
248
248
|
|
|
249
|
-
/**
|
|
250
|
-
* `planning.taskSizing` — Story-sizing thresholds consumed by
|
|
251
|
-
* `ticket-validator-sizing.js`. Operator overrides shallow-merge with
|
|
252
|
-
* `DEFAULT_TASK_SIZING` defaults (softFiles 15, hardFiles 30,
|
|
253
|
-
* softAcceptanceCount 10 — the uniform relaxed profile from Story #3874).
|
|
254
|
-
* Story #3760 collapsed the per-profile matrix and the parallel
|
|
255
|
-
* `testSurface` axis into a flat set of knobs; the `sizingProfile` enum was
|
|
256
|
-
* replaced by an optional body-level `wide` declaration that lifts the
|
|
257
|
-
* `hardFiles` rejection. The hard `maxAcceptance` ceiling was removed after
|
|
258
|
-
* the Epic #4355 decomposition experiment — acceptance mass is advisory-only.
|
|
259
|
-
*/
|
|
260
|
-
const TASK_SIZING_SCHEMA = {
|
|
261
|
-
type: 'object',
|
|
262
|
-
properties: {
|
|
263
|
-
softFiles: { type: 'integer', minimum: 1 },
|
|
264
|
-
hardFiles: { type: 'integer', minimum: 1 },
|
|
265
|
-
softAcceptanceCount: { type: 'integer', minimum: 1 },
|
|
266
|
-
// Under-size (merge-candidate) thresholds (Story #4312). A Story whose
|
|
267
|
-
// footprint is at or below BOTH ceilings and that carries a `depends_on`
|
|
268
|
-
// edge to a sibling trips the advisory `merge-candidate` soft finding.
|
|
269
|
-
mergeCandidateMaxFiles: { type: 'integer', minimum: 1 },
|
|
270
|
-
mergeCandidateMaxAcceptance: { type: 'integer', minimum: 1 },
|
|
271
|
-
},
|
|
272
|
-
additionalProperties: false,
|
|
273
|
-
};
|
|
274
|
-
|
|
275
249
|
const PLANNING_SCHEMA = {
|
|
276
250
|
type: 'object',
|
|
277
251
|
properties: {
|
|
278
252
|
riskHeuristics: LIST_OR_EXTENDER_OF_STRINGS,
|
|
279
253
|
context: PLANNING_CONTEXT_SCHEMA,
|
|
280
254
|
codebaseSnapshot: CODEBASE_SNAPSHOT_SCHEMA,
|
|
281
|
-
taskSizing: TASK_SIZING_SCHEMA,
|
|
282
255
|
// Cross-Story conflict-finding severity gates. Off by default so
|
|
283
256
|
// existing repos keep advisory-only behaviour; flipping either to
|
|
284
257
|
// `true` upgrades the matching finding class to `'hard'`, which routes
|
|
285
258
|
// it through the validator's `errors[]` channel and trips the bounded
|
|
286
259
|
// decompose loop's re-prompt gate.
|
|
287
|
-
|
|
288
|
-
|
|
260
|
+
// `planning.modelCapacity` was collapsed to the framework constant
|
|
261
|
+
// `DEFAULT_MODEL_CAPACITY` in ticket-validator-sizing.js (authored-
|
|
262
|
+
// tokens-only mass); setting it in a config is rejected as an
|
|
263
|
+
// additional property.
|
|
264
|
+
failOnSharedEditors: {
|
|
265
|
+
type: 'boolean',
|
|
266
|
+
description:
|
|
267
|
+
'When true, upgrade shared-editor conflict findings to hard errors (default false — advisory soft findings only).',
|
|
268
|
+
},
|
|
269
|
+
requireExplicitCrossStoryDeps: {
|
|
270
|
+
type: 'boolean',
|
|
271
|
+
description:
|
|
272
|
+
'When true, upgrade implicit cross-Story dependency findings to hard errors (default false — advisory soft findings only).',
|
|
273
|
+
},
|
|
289
274
|
// Cross-cutting registry conflict knobs consumed by
|
|
290
275
|
// `ticket-validator-conflicts.js` (wired through
|
|
291
276
|
// `epic-plan-decompose/phases/planning-artifacts.js`).
|
|
292
277
|
// `crossCuttingRegistries` names the registry paths whose concurrent
|
|
293
278
|
// edits are flagged; `failOnRegistryConflicts` upgrades that finding to
|
|
294
279
|
// `'hard'`. `failOnLargeFanOut` / `largeFanOutThreshold` gate the
|
|
295
|
-
//
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
280
|
+
// delete blast-radius finding (call sites of a module a Story marks
|
|
281
|
+
// `assumption: "deletes"`).
|
|
282
|
+
crossCuttingRegistries: {
|
|
283
|
+
...LIST_OR_EXTENDER_OF_STRINGS,
|
|
284
|
+
description:
|
|
285
|
+
'Registry path patterns whose concurrent edits across Stories are flagged as conflicts. Defaults to the framework listener/handler index patterns when omitted.',
|
|
286
|
+
},
|
|
287
|
+
failOnRegistryConflicts: {
|
|
288
|
+
type: 'boolean',
|
|
289
|
+
description:
|
|
290
|
+
'When true, upgrade cross-cutting registry conflict findings to hard errors (default false).',
|
|
291
|
+
},
|
|
292
|
+
failOnLargeFanOut: {
|
|
293
|
+
type: 'boolean',
|
|
294
|
+
description:
|
|
295
|
+
'When true, upgrade fan-out-warning findings (delete blast radius) to hard errors (default false — soft advisory).',
|
|
296
|
+
},
|
|
297
|
+
largeFanOutThreshold: {
|
|
298
|
+
type: 'integer',
|
|
299
|
+
minimum: 0,
|
|
300
|
+
description:
|
|
301
|
+
'Call-site count above which a Story that deletes a module emits a fan-out-warning. Counts base-branch references to the deleted path basename. Soft by default; does not size or reject Stories. Default 10.',
|
|
302
|
+
},
|
|
300
303
|
// Navigability-reachability config consumed by the plan-persist draft
|
|
301
|
-
// reachability gate (Epic #4131 F7; demoted into persist by #4474 PR6
|
|
302
|
-
// the manual epic-plan-healthcheck --paranoid re-check reads it too).
|
|
304
|
+
// reachability gate (Epic #4131 F7; demoted into persist by #4474 PR6).
|
|
303
305
|
// Opt-in: absent or empty routeGlobs degrades to a silent no-op.
|
|
304
306
|
navigation: {
|
|
305
307
|
type: 'object',
|
|
308
|
+
description:
|
|
309
|
+
'Opt-in navigability reachability gate. Absent or empty routeGlobs is a silent no-op.',
|
|
306
310
|
properties: {
|
|
307
|
-
routeGlobs: {
|
|
308
|
-
|
|
311
|
+
routeGlobs: {
|
|
312
|
+
type: 'array',
|
|
313
|
+
items: { type: 'string' },
|
|
314
|
+
description:
|
|
315
|
+
'Glob patterns (e.g. pages/**, app/**/route.ts) marking paths that add a user-facing route.',
|
|
316
|
+
},
|
|
317
|
+
navRegistry: {
|
|
318
|
+
type: 'array',
|
|
319
|
+
items: { type: 'string' },
|
|
320
|
+
description:
|
|
321
|
+
'Tokens identifying the nav-registry SSOT a route-adding Story is expected to reference.',
|
|
322
|
+
},
|
|
309
323
|
},
|
|
310
324
|
additionalProperties: false,
|
|
311
325
|
},
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* dependency-parser.js — Shared Dependency & Metadata Parsing Utilities
|
|
3
3
|
*
|
|
4
4
|
* Canonical implementation of dependency-related regex parsing and
|
|
5
|
-
* ticket metadata extraction
|
|
6
|
-
*
|
|
5
|
+
* ticket metadata extraction, shared by the ticketing provider and the
|
|
6
|
+
* orchestration layer (e.g. providers/github/tickets.js,
|
|
7
|
+
* lib/story-adjacency.js, lib/branch-name-guard.js).
|
|
7
8
|
*/
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* - `alwaysLoaded` — `CLAUDE.md` plus the transitive closure of its
|
|
9
9
|
* `@`-import references (`@AGENTS.md`,
|
|
10
|
-
* `@.agents/instructions.md`, the
|
|
11
|
-
*
|
|
10
|
+
* `@.agents/instructions.md`, the always-on rules, …).
|
|
11
|
+
* This is the context every session re-pays
|
|
12
12
|
* on every subagent spawn (instructions.md § 4), so it is
|
|
13
13
|
* the primary budget the context-budget ratchet gates.
|
|
14
14
|
* - `mandatoryRead` — the resolved `project.docsContextFiles` set (prefixed
|