mandrel 1.58.0 → 1.60.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 +100 -98
- package/.agents/docs/SDLC.md +140 -141
- package/.agents/docs/configuration.md +16 -16
- package/.agents/docs/workflows.md +7 -8
- package/.agents/instructions.md +12 -11
- package/.agents/personas/architect.md +1 -1
- package/.agents/personas/product.md +1 -1
- package/.agents/personas/project-manager.md +14 -14
- package/.agents/personas/technical-writer.md +1 -1
- package/.agents/rules/changelog-style.md +5 -5
- package/.agents/rules/git-conventions.md +3 -3
- package/.agents/schemas/agentrc.schema.json +3 -3
- package/.agents/schemas/audit-rules.json +20 -0
- package/.agents/schemas/dispatch-manifest.json +4 -4
- package/.agents/schemas/epic-spec.schema.json +15 -45
- package/.agents/schemas/lifecycle/README.md +1 -1
- package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +1 -1
- package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +1 -1
- package/.agents/schemas/lifecycle/story.heartbeat.schema.json +1 -1
- package/.agents/schemas/validation-evidence.schema.json +1 -1
- package/.agents/scripts/README.md +1 -1
- package/.agents/scripts/acceptance-eval.js +21 -4
- package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
- package/.agents/scripts/analyze-execution.js +2 -2
- package/.agents/scripts/assert-branch.js +1 -3
- package/.agents/scripts/audit-to-stories.js +1 -1
- package/.agents/scripts/bootstrap.js +1 -1
- package/.agents/scripts/check-arch-cycles.js +360 -0
- package/.agents/scripts/check-doc-links.js +2 -3
- package/.agents/scripts/coverage-capture.js +24 -3
- package/.agents/scripts/diagnose-friction.js +1 -1
- package/.agents/scripts/dispatcher.js +2 -2
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/epic-audit-prepare.js +3 -3
- package/.agents/scripts/epic-deliver-note-intervention.js +2 -2
- package/.agents/scripts/epic-deliver-preflight.js +11 -9
- package/.agents/scripts/epic-deliver-prepare.js +13 -5
- package/.agents/scripts/epic-execute-record-wave.js +5 -5
- package/.agents/scripts/epic-plan-healthcheck.js +6 -10
- package/.agents/scripts/epic-plan-spec-validate.js +1 -1
- package/.agents/scripts/epic-reconcile.js +11 -29
- package/.agents/scripts/evidence-gate.js +2 -2
- package/.agents/scripts/generate-workflows-doc.js +1 -1
- package/.agents/scripts/git-rebase-and-resolve.js +1 -1
- package/.agents/scripts/hierarchy-gate.js +40 -24
- package/.agents/scripts/lib/ITicketingProvider.js +1 -1
- package/.agents/scripts/lib/audit-suite/selector.js +1 -1
- package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +2 -2
- package/.agents/scripts/lib/baseline-snapshot.js +7 -7
- package/.agents/scripts/lib/baselines/kinds/coverage.js +33 -149
- package/.agents/scripts/lib/baselines/kinds/duplication.js +27 -116
- package/.agents/scripts/lib/baselines/kinds/kind-factory.js +192 -0
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +34 -133
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +31 -124
- package/.agents/scripts/lib/baselines/kinds/mutation.js +25 -111
- package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +59 -0
- package/.agents/scripts/lib/baselines/maintainability-baseline-save.js +37 -0
- package/.agents/scripts/lib/baselines/writer.js +1 -1
- package/.agents/scripts/lib/bdd-runner-detect.js +1 -1
- package/.agents/scripts/lib/bdd-scenario-scanner.js +3 -3
- package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +1 -1
- package/.agents/scripts/lib/bootstrap/branch-protection.js +1 -1
- package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +1 -1
- package/.agents/scripts/lib/bootstrap/commit-push.js +2 -2
- package/.agents/scripts/lib/close-validation/commands.js +188 -0
- package/.agents/scripts/lib/close-validation/gates.js +235 -0
- package/.agents/scripts/lib/close-validation/process.js +101 -0
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +1 -1
- package/.agents/scripts/lib/close-validation/runner.js +325 -0
- package/.agents/scripts/lib/close-validation/telemetry.js +70 -0
- package/.agents/scripts/lib/codebase-snapshot.js +1 -1
- package/.agents/scripts/lib/config/explain.js +1 -1
- package/.agents/scripts/lib/config/quality.js +6 -6
- package/.agents/scripts/lib/config/runners.js +2 -2
- package/.agents/scripts/lib/config/runtime.js +1 -1
- package/.agents/scripts/lib/config/temp-paths.js +2 -2
- package/.agents/scripts/lib/config-resolver.js +2 -5
- package/.agents/scripts/lib/config-settings-schema-delivery.js +2 -2
- package/.agents/scripts/lib/config-settings-schema-quality.js +1 -1
- package/.agents/scripts/lib/config-settings-schema.js +3 -3
- package/.agents/scripts/lib/coverage-capture.js +147 -4
- package/.agents/scripts/lib/cpu-pool.js +14 -0
- package/.agents/scripts/lib/crap-utils.js +6 -11
- package/.agents/scripts/lib/duplicate-search.js +1 -1
- package/.agents/scripts/lib/dynamic-workflow/capability.js +1 -1
- package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +87 -0
- package/.agents/scripts/lib/epic-plan-clarity.js +1 -1
- package/.agents/scripts/lib/epic-plan-ideation.js +1 -1
- package/.agents/scripts/lib/feedback-loop/memory-freshness.js +1 -1
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +1 -1
- package/.agents/scripts/lib/findings/classify-finding.js +1 -1
- package/.agents/scripts/lib/findings/promote-finding.js +10 -10
- package/.agents/scripts/lib/git-utils.js +24 -22
- package/.agents/scripts/lib/label-constants.js +3 -4
- package/.agents/scripts/lib/label-taxonomy.js +3 -8
- package/.agents/scripts/lib/maintainability-engine.js +1 -1
- package/.agents/scripts/lib/maintainability-utils.js +4 -187
- package/.agents/scripts/lib/observability/perf-report-readers.js +32 -23
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +81 -7
- package/.agents/scripts/lib/orchestration/code-review.js +95 -82
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +8 -9
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +3 -3
- package/.agents/scripts/lib/orchestration/detectors-phase.js +2 -2
- package/.agents/scripts/lib/orchestration/dispatch-engine.js +30 -38
- package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +14 -37
- package/.agents/scripts/lib/orchestration/epic-cleanup.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +22 -22
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +7 -21
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +3 -3
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +2 -2
- package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +206 -58
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +27 -3
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +28 -8
- package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-run-state-store.js +3 -3
- package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +3 -3
- package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +13 -41
- package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +7 -7
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +2 -3
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +2 -8
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +103 -0
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +22 -64
- package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +38 -76
- package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +10 -10
- package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +8 -20
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +7 -15
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +72 -41
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +2 -4
- package/.agents/scripts/lib/orchestration/file-assumptions.js +6 -5
- package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +1 -1
- package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +2 -2
- package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +1 -1
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +144 -0
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +3 -3
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +8 -8
- package/.agents/scripts/lib/orchestration/manifest-builder.js +5 -5
- package/.agents/scripts/lib/orchestration/parked-follow-ons.js +2 -2
- package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +5 -5
- package/.agents/scripts/lib/orchestration/post-merge/phases/notification.js +3 -3
- package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +3 -3
- package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +7 -7
- package/.agents/scripts/lib/orchestration/preflight-cache.js +36 -13
- package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +1 -1
- package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +1 -1
- package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +2 -2
- package/.agents/scripts/lib/orchestration/retro-runner.js +3 -3
- package/.agents/scripts/lib/orchestration/review-depth.js +1 -1
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +5 -60
- package/.agents/scripts/lib/orchestration/review-providers/native.js +7 -6
- package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +105 -0
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +7 -59
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +2 -4
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +1 -1
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +1 -1
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +2 -4
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +32 -35
- package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +1 -2
- package/.agents/scripts/lib/orchestration/spec-freshness.js +1 -1
- package/.agents/scripts/lib/orchestration/spec-renderer.js +36 -73
- package/.agents/scripts/lib/orchestration/spec-section-validator.js +1 -1
- package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +451 -503
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +8 -2
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +47 -2
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +2 -2
- package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +1 -1
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +358 -54
- package/.agents/scripts/lib/orchestration/story-close/phases/close.js +1 -1
- package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +3 -2
- package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +32 -5
- package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +5 -18
- package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +3 -3
- package/.agents/scripts/lib/orchestration/story-close-recovery.js +33 -16
- package/.agents/scripts/lib/orchestration/story-reachability.js +47 -0
- package/.agents/scripts/lib/orchestration/task-body-validator.js +6 -6
- package/.agents/scripts/lib/orchestration/ticket-lease.js +1 -1
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +4 -35
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +1 -10
- package/.agents/scripts/lib/orchestration/ticket-validator.js +25 -70
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +44 -73
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +16 -7
- package/.agents/scripts/lib/orchestration/ticketing/state.js +53 -439
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +471 -0
- package/.agents/scripts/lib/orchestration/ticketing.js +0 -1
- package/.agents/scripts/lib/orchestration/wave-record-notifications.js +3 -3
- package/.agents/scripts/lib/orchestration/wave-record-projection.js +2 -8
- package/.agents/scripts/lib/plan-phase-cleanup.js +1 -1
- package/.agents/scripts/lib/preflight-runner.js +1 -1
- package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +4 -5
- package/.agents/scripts/lib/presentation/manifest-builder.js +28 -34
- package/.agents/scripts/lib/presentation/manifest-formatter.js +3 -4
- package/.agents/scripts/lib/presentation/manifest-helpers.js +1 -1
- package/.agents/scripts/lib/presentation/manifest-procedures.js +4 -4
- package/.agents/scripts/lib/presentation/manifest-render-waves.js +4 -23
- package/.agents/scripts/lib/presentation/manifest-renderer.js +1 -1
- package/.agents/scripts/lib/presentation/manifest-story-views.js +2 -11
- package/.agents/scripts/lib/project-root.js +17 -0
- package/.agents/scripts/lib/signals/schema.js +1 -1
- package/.agents/scripts/lib/spec/index.js +1 -1
- package/.agents/scripts/lib/spec/loader.js +2 -2
- package/.agents/scripts/lib/spec/state.js +7 -16
- package/.agents/scripts/lib/story-adjacency.js +76 -0
- package/.agents/scripts/lib/story-init/context-resolver.js +3 -3
- package/.agents/scripts/lib/story-init/state-transitioner.js +2 -2
- package/.agents/scripts/lib/story-init/task-graph-builder.js +7 -7
- package/.agents/scripts/lib/story-lifecycle.js +9 -9
- package/.agents/scripts/lib/story-plan.js +1 -1
- package/.agents/scripts/lib/templates/decomposer-prompts.js +59 -52
- package/.agents/scripts/lib/transpile.js +93 -0
- package/.agents/scripts/lib/wave-runner/tick.js +4 -153
- package/.agents/scripts/lib/workers/crap-worker.js +1 -1
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +1 -1
- package/.agents/scripts/lib/worktree/lifecycle/creation.js +20 -2
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +90 -0
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +26 -8
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +74 -0
- package/.agents/scripts/lifecycle-emit-story-dispatch.js +1 -1
- package/.agents/scripts/lifecycle-emit.js +1 -1
- package/.agents/scripts/providers/github/board-add.js +1 -1
- package/.agents/scripts/providers/github/errors.js +1 -1
- package/.agents/scripts/providers/github/mappers.js +2 -2
- package/.agents/scripts/providers/github/tickets.js +114 -10
- package/.agents/scripts/resync-status-column.js +1 -1
- package/.agents/scripts/retro-run.js +2 -2
- package/.agents/scripts/run-lint.js +10 -1
- package/.agents/scripts/run-tests.js +24 -4
- package/.agents/scripts/single-story-init.js +1 -1
- package/.agents/scripts/stories-wave-tick.js +13 -10
- package/.agents/scripts/story-close.js +1 -1
- package/.agents/scripts/story-init.js +162 -26
- package/.agents/scripts/story-phase.js +5 -5
- package/.agents/scripts/story-plan.js +3 -3
- package/.agents/scripts/sync-branch-from-base.js +2 -2
- package/.agents/scripts/validate-docs-freshness.js +1 -1
- package/.agents/scripts/wave-tick.js +1 -1
- package/.agents/skills/core/analyze-execution/SKILL.md +2 -2
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +21 -26
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +23 -56
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +4 -4
- package/.agents/skills/core/hydrate-context/SKILL.md +2 -2
- package/.agents/skills/core/idea-refinement/SKILL.md +4 -4
- package/.agents/skills/core/knowledge-transfer/SKILL.md +2 -2
- package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +1 -1
- package/.agents/skills/core/scope-triage/SKILL.md +9 -10
- package/.agents/skills/core/using-agent-skills/SKILL.md +1 -1
- package/.agents/skills/skills.index.json +7 -7
- package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +1 -1
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/workflows/agents-update.md +2 -2
- package/.agents/workflows/audit-architecture.md +2 -2
- package/.agents/workflows/audit-clean-code.md +2 -2
- package/.agents/workflows/audit-dependencies.md +1 -1
- package/.agents/workflows/audit-devops.md +1 -1
- package/.agents/workflows/audit-documentation.md +226 -0
- package/.agents/workflows/audit-lighthouse.md +1 -1
- package/.agents/workflows/audit-performance.md +2 -2
- package/.agents/workflows/audit-privacy.md +1 -1
- package/.agents/workflows/audit-quality.md +2 -2
- package/.agents/workflows/audit-security.md +2 -2
- package/.agents/workflows/audit-seo.md +1 -1
- package/.agents/workflows/audit-sre.md +1 -1
- package/.agents/workflows/audit-to-stories.md +10 -10
- package/.agents/workflows/audit-ux-ui.md +1 -1
- package/.agents/workflows/deliver.md +85 -0
- package/.agents/workflows/explain.md +3 -3
- package/.agents/workflows/git-merge-pr.md +1 -1
- package/.agents/workflows/git-pr-all.md +13 -10
- package/.agents/workflows/git-push.md +6 -3
- package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
- package/.agents/workflows/helpers/acceptance-self-eval.md +1 -1
- package/.agents/workflows/helpers/code-review.md +5 -5
- package/.agents/workflows/{epic-deliver.md → helpers/deliver-epic.md} +59 -66
- package/.agents/workflows/{story-deliver.md → helpers/deliver-stories.md} +25 -25
- package/.agents/workflows/helpers/diagnose.md +1 -1
- package/.agents/workflows/helpers/epic-audit.md +6 -6
- package/.agents/workflows/helpers/epic-deliver-story.md +28 -39
- package/.agents/workflows/helpers/epic-plan-decompose.md +23 -23
- package/.agents/workflows/helpers/epic-plan-spec.md +6 -6
- package/.agents/workflows/helpers/epic-testing.md +3 -3
- package/.agents/workflows/helpers/parallel-tooling.md +1 -1
- package/.agents/workflows/{epic-plan.md → helpers/plan-epic.md} +84 -84
- package/.agents/workflows/{story-plan.md → helpers/plan-story.md} +43 -43
- package/.agents/workflows/helpers/signals.md +1 -1
- package/.agents/workflows/helpers/single-story-deliver.md +12 -11
- package/.agents/workflows/helpers/worktree-lifecycle.md +18 -18
- package/.agents/workflows/onboard.md +21 -20
- package/.agents/workflows/plan.md +89 -0
- package/.agents/workflows/qa-explore.md +1 -1
- package/.agents/workflows/qa-run-harness.md +1 -1
- package/README.md +17 -20
- package/docs/CHANGELOG.md +1149 -0
- package/lib/cli/__tests__/update-changelog-surface.test.js +357 -0
- package/lib/cli/__tests__/update-reexec.test.js +513 -0
- package/lib/cli/init.js +338 -0
- package/lib/cli/update.js +413 -52
- package/package.json +3 -1
- package/.agents/scripts/lib/auto-refresh-baselines.js +0 -308
- package/.agents/scripts/lib/close-validation.js +0 -897
- package/.agents/scripts/lib/orchestration/cascade-grouping.js +0 -275
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter.js +0 -69
- package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
- package/.agents/scripts/lib/orchestration/story-close/format-autofix-scoped.js +0 -221
- package/.agents/scripts/lib/orchestration/story-close/format-autofix-shared.js +0 -123
- package/.agents/scripts/lib/task-utils.js +0 -26
- package/.agents/scripts/story-deliver-prepare.js +0 -267
|
@@ -38,8 +38,8 @@ top-level keys are validation errors.
|
|
|
38
38
|
| ------------- | -------- | ---------------------------------------------------------------------------------- |
|
|
39
39
|
| `project` | **Yes** | Project-local paths, base branch, validation commands, and context-hydration files. |
|
|
40
40
|
| `github` | No | Ticketing provider config: owner/repo, branch protection, merge methods, notifications. |
|
|
41
|
-
| `planning` | No | `/
|
|
42
|
-
| `delivery` | No | `/
|
|
41
|
+
| `planning` | No | `/plan` tuning: ticket budget, risk heuristics, codebase snapshot, context cap. |
|
|
42
|
+
| `delivery` | No | `/deliver` and `/deliver` tuning: quality gates, worktree isolation, runners, lifecycle. |
|
|
43
43
|
| `$schema` | No | JSON Schema pointer for editor tooling. |
|
|
44
44
|
|
|
45
45
|
---
|
|
@@ -266,13 +266,13 @@ top-level keys are validation errors.
|
|
|
266
266
|
| `mergeWatch.intervalSeconds` | No | `integer` | `30` | Seconds between MergeWatcher polls. Default 30. |
|
|
267
267
|
| `mergeWatch.maxBudgetSeconds` | No | `integer` | `3600` | Total wall-clock budget (seconds) for the MergeWatcher poll loop. Default 3600 (60 minutes). |
|
|
268
268
|
| `epicAudit` | No | `object` | — | Nested configuration block. |
|
|
269
|
-
| `epicAudit.maxFixAttempts` | No | `integer` | — | Maximum auto-fix retry attempts per finding in /
|
|
269
|
+
| `epicAudit.maxFixAttempts` | No | `integer` | — | Maximum auto-fix retry attempts per finding in /deliver Phase 4 (epic-audit). 0 disables auto-fix. Default 3. |
|
|
270
270
|
| `epicAudit.maxFixScopeFiles` | No | `integer` | — | Maximum file count a single auto-fix may modify before escalating to agent::blocked. Default 5. |
|
|
271
271
|
| `codeReview` | No | `object` | — | Nested configuration block. |
|
|
272
272
|
| `codeReview.provider` | No | `"native"` \| `"codex"` \| `"security-review"` | `"native"` | Legacy single-adapter selection. ReviewProvider that produces the Finding[] consumed by runCodeReview(). Story #2833 registered `native` (in-process maintainability/lint); Story #2830 added `codex` (invokes `/codex:review` plugin); Story #2871 added `security-review` (shells out to `claude --print /security-review`). When `providers` (chain shape) is set this field is ignored with a warning. Selecting an adapter whose probe fails hard-fails at factory construction unless declared `optional: true` in the chain. |
|
|
273
273
|
| `codeReview.providers[]` | No | `array<object>` | — | Multi-provider chain (Story #2871). When set and non-empty, takes precedence over the legacy `provider` field. The orchestrator iterates inline entries in declaration order and merges their Finding[] before posting one structured comment; manual-prompt entries (e.g. ultrareview) contribute a trailing 'Manual review suggestions' section. Each item has: name, scopes, optional, manualPrompt, when. |
|
|
274
274
|
| `codeReview.providerConfig` | No | `object` | — | Optional escape hatch for adapter-specific configuration. No documented keys in Epic #2815; reserved so future adapters can be configured without another schema migration. |
|
|
275
|
-
| `codeReview.maxFixAttempts` | No | `integer` | — | Maximum auto-fix retry attempts per finding in /
|
|
275
|
+
| `codeReview.maxFixAttempts` | No | `integer` | — | Maximum auto-fix retry attempts per finding in /deliver Phase 5 (code-review). 0 disables auto-fix. Default 3. |
|
|
276
276
|
| `codeReview.maxFixScopeFiles` | No | `integer` | — | Maximum file count a single auto-fix may modify before escalating to agent::blocked. Default 5. |
|
|
277
277
|
| `retro` | No | `object` | — | Story #3042 (Epic #3019). Operator-tunable retro behaviour. Currently exposes `perfThresholds`, the gates the retro perf-signals classifier uses to decide which signals to surface in the `## Performance Signals` / `## Recommended Follow-Ons` retro sections. |
|
|
278
278
|
| `retro.perfThresholds` | No | `object` | — | Gates for `classifyPerfSignals` (lib/orchestration/retro-perf-heuristics.js). Defaults are 0.6 / 0.4 / 2. |
|
|
@@ -285,7 +285,7 @@ top-level keys are validation errors.
|
|
|
285
285
|
| `acceptanceEval.maxRounds` | No | `integer` | — | Maximum number of redraft rounds before escalation. Default 2; clamped into [1, hard ceiling] by lib/config/acceptance-eval.js so the cap can never be disabled (maxRounds: 0 clamps up to 1). |
|
|
286
286
|
| `ci` | No | `object` | — | Nested configuration block. |
|
|
287
287
|
| `ci.skipForStoryPushes` | No | `boolean` | — | Story #2899 (Epic #2880, F13). When true (default), pre-push tooling appends a '[skip ci]' trailer to Story-branch commit subjects so intermediate pushes do not stampede the CI fleet. The Epic-branch merge commit produced by story-close.js never carries the marker, regardless of this flag. |
|
|
288
|
-
| `preflight` | No | `object` | — | Story #2899 (Epic #2880, F13). Thresholds consumed by `.agents/scripts/epic-deliver-preflight.js`. When any value is exceeded the preflight envelope flags a breach and /
|
|
288
|
+
| `preflight` | No | `object` | — | Story #2899 (Epic #2880, F13). Thresholds consumed by `.agents/scripts/epic-deliver-preflight.js`. When any value is exceeded the preflight envelope flags a breach and /deliver Phase 1 surfaces it via agent::blocked. |
|
|
289
289
|
| `preflight.maxStories` | No | `integer` | — | — |
|
|
290
290
|
| `preflight.maxWaves` | No | `integer` | — | — |
|
|
291
291
|
| `preflight.maxInstallCostSeconds` | No | `integer` | — | — |
|
|
@@ -418,7 +418,7 @@ suppress a channel entirely, set its array to `[]`.
|
|
|
418
418
|
|
|
419
419
|
## `planning`
|
|
420
420
|
|
|
421
|
-
`/
|
|
421
|
+
`/plan` tuning. All fields optional.
|
|
422
422
|
|
|
423
423
|
| Field | Required | Default | Purpose |
|
|
424
424
|
| ------------------------------ | -------- | ---------- | ------------------------------------------------------------------------------------------------ |
|
|
@@ -429,7 +429,7 @@ suppress a channel entirely, set its array to `[]`.
|
|
|
429
429
|
|
|
430
430
|
### `planning.context`
|
|
431
431
|
|
|
432
|
-
Caps the size of `--emit-context` JSON payloads emitted during `/
|
|
432
|
+
Caps the size of `--emit-context` JSON payloads emitted during `/plan`
|
|
433
433
|
so a runaway PRD / Tech Spec can't blow the planning agent's context budget.
|
|
434
434
|
|
|
435
435
|
| Field | Required | Default | Purpose |
|
|
@@ -461,7 +461,7 @@ rather than a flat lexicographic slice — so a large, dot-prefixed tree like
|
|
|
461
461
|
the consumer's own `src/` / `lib/` source. When `.agents/scripts/**` is the
|
|
462
462
|
only matching tree (the Mandrel-repo dogfood case), the round-robin
|
|
463
463
|
degenerates to taking the first 250 sorted paths, so that snapshot stays
|
|
464
|
-
useful. When truncation occurs, `/
|
|
464
|
+
useful. When truncation occurs, `/plan` Phase 7 emits an
|
|
465
465
|
operator-visible warning naming the dropped file count and suggesting
|
|
466
466
|
`tier: "medium"` and/or a narrowed `include`. Opt into the richer `medium`
|
|
467
467
|
tier or narrow `include` if the partial skinny view is insufficient.
|
|
@@ -470,7 +470,7 @@ tier or narrow `include` if the partial skinny view is insufficient.
|
|
|
470
470
|
|
|
471
471
|
## `delivery`
|
|
472
472
|
|
|
473
|
-
`/
|
|
473
|
+
`/deliver` and `/deliver` tuning. All sub-blocks are optional and
|
|
474
474
|
fall back to documented defaults (or are no-ops when omitted).
|
|
475
475
|
|
|
476
476
|
### `delivery.execution`
|
|
@@ -500,7 +500,7 @@ fall back to documented defaults (or are no-ops when omitted).
|
|
|
500
500
|
|
|
501
501
|
### `delivery.worktreeIsolation`
|
|
502
502
|
|
|
503
|
-
Story-level worktree isolation. When `enabled: true`, `/
|
|
503
|
+
Story-level worktree isolation. When `enabled: true`, `/deliver` runs
|
|
504
504
|
each Story inside `.worktrees/story-<id>/` instead of moving the main
|
|
505
505
|
checkout's HEAD.
|
|
506
506
|
|
|
@@ -664,7 +664,7 @@ missing entries fall back to in-listener defaults.
|
|
|
664
664
|
|
|
665
665
|
### `delivery.epicAudit`
|
|
666
666
|
|
|
667
|
-
`/
|
|
667
|
+
`/deliver` Phase 4 (epic-audit) auto-fix budget.
|
|
668
668
|
|
|
669
669
|
| Field | Required | Default | Purpose |
|
|
670
670
|
| ------------------ | -------- | ------- | -------------------------------------------------------------------- |
|
|
@@ -674,7 +674,7 @@ missing entries fall back to in-listener defaults.
|
|
|
674
674
|
### `delivery.codeReview`
|
|
675
675
|
|
|
676
676
|
Configuration block for the code-review pipeline that runs at **both**
|
|
677
|
-
Story-close (`story-close.js`) and Epic-close (`/
|
|
677
|
+
Story-close (`story-close.js`) and Epic-close (`/deliver` Phase 5).
|
|
678
678
|
Selects the review backend, exposes an escape-hatch for adapter-specific
|
|
679
679
|
configuration, and sets the auto-fix budget enforced at each close scope.
|
|
680
680
|
|
|
@@ -700,7 +700,7 @@ points in the SDLC, using the **same configured values** for both scopes:
|
|
|
700
700
|
- **Story-close** — `story-close.js` runs `runCodeReview()` against the
|
|
701
701
|
Story branch's diff and applies the budget per finding before merging
|
|
702
702
|
into `epic/<epicId>`.
|
|
703
|
-
- **Epic-close** — `/
|
|
703
|
+
- **Epic-close** — `/deliver` Phase 5 runs `runCodeReview()` against
|
|
704
704
|
the integrated Epic branch and applies the same per-finding budget
|
|
705
705
|
before opening the PR to `main`.
|
|
706
706
|
|
|
@@ -730,7 +730,7 @@ number of keys.
|
|
|
730
730
|
|
|
731
731
|
| File | Audience | Role |
|
|
732
732
|
| --------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
733
|
-
| `.agentrc.json` (repo root) | The framework dogfooding itself | Live config used when running `/epic-*` and `/
|
|
733
|
+
| `.agentrc.json` (repo root) | The framework dogfooding itself | Live config used when running `/epic-*` and `/deliver` workflows against this repo. Exercises the framework end-to-end on its own source tree. |
|
|
734
734
|
| `.agents/starter-agentrc.json` | Downstream consumer repos | Bootstrap delta-seed a consumer copies via `cp .agents/starter-agentrc.json .agentrc.json`. Minimum schema-required keys only. |
|
|
735
735
|
| `.agents/docs/agentrc-reference.json` | Operators and reviewers | Exhaustive editor reference enumerating every schema key with its framework default. Not a copy target. |
|
|
736
736
|
|
|
@@ -874,8 +874,8 @@ under one identity. So each contributor sets their own in `.agentrc.local.json`:
|
|
|
874
874
|
carries only the non-personal placeholder `@[USERNAME]` (so CI and fresh clones
|
|
875
875
|
validate without naming a real person). The placeholder is **not** a usable
|
|
876
876
|
identity: [`normalizeOperatorHandle`](../scripts/lib/orchestration/ticket-lease.js)
|
|
877
|
-
resolves `@[USERNAME]` to `null`, and the lease guards (`/
|
|
878
|
-
`/
|
|
877
|
+
resolves `@[USERNAME]` to `null`, and the lease guards (`/plan`,
|
|
878
|
+
`/deliver`, `/deliver`) **fail closed** — they throw with a
|
|
879
879
|
"set your own handle in `.agentrc.local.json`" message rather than running an
|
|
880
880
|
ownerless, unguarded workflow. Your local overlay replaces the placeholder with
|
|
881
881
|
your real handle, and the guards proceed. By contrast, `github.owner` / `repo`
|
|
@@ -16,7 +16,7 @@ compose. This file is only for "which command does X?" lookups.
|
|
|
16
16
|
Every command file lives at `.agents/workflows/<name>.md` and is projected
|
|
17
17
|
into a flat `.claude/commands/` tree by `npm run sync:commands` (the
|
|
18
18
|
UserPromptSubmit hook keeps it current) so it shows up as a bare `/<name>`
|
|
19
|
-
slash command (e.g. `/
|
|
19
|
+
slash command (e.g. `/deliver`). The projection writes only
|
|
20
20
|
`.claude/commands/<name>.md` — there is no plugin manifest and no
|
|
21
21
|
marketplace listing. The commands load in every Claude Code environment.
|
|
22
22
|
|
|
@@ -25,7 +25,7 @@ by `node .agents/scripts/generate-workflows-doc.js`; `npm run docs:check`
|
|
|
25
25
|
fails when it drifts from the on-disk workflow set. To change a command’s
|
|
26
26
|
description, edit the workflow file’s front-matter and regenerate.
|
|
27
27
|
|
|
28
|
-
## Commands (
|
|
28
|
+
## Commands (27)
|
|
29
29
|
|
|
30
30
|
| Command | Description |
|
|
31
31
|
| --- | --- |
|
|
@@ -34,6 +34,7 @@ description, edit the workflow file’s front-matter and regenerate.
|
|
|
34
34
|
| `/audit-clean-code` | Audit code smells, dead code, complexity hotspots, and maintainability-index outliers; emit a structured findings report. |
|
|
35
35
|
| `/audit-dependencies` | Audit `package.json` for unused, outdated, and major-version-stale dependencies; surface Node-engine drift and propose upgrade batches. |
|
|
36
36
|
| `/audit-devops` | Audit CI/CD workflows, container images, infrastructure-as-code, and deployment pipelines; surface failure modes and hardening gaps. |
|
|
37
|
+
| `/audit-documentation` | Audit the repository's main documentation for staleness, semantic drift, and completeness; emit a structured High/Medium/Low findings report. |
|
|
37
38
|
| `/audit-lighthouse` | Run a Lighthouse audit (Performance / Accessibility / Best Practices / SEO) and produce a structured findings report |
|
|
38
39
|
| `/audit-performance` | Audit hot paths, algorithmic complexity, and I/O bottlenecks in the tooling surface (`epic-close`, dispatcher, gates); propose remediations. |
|
|
39
40
|
| `/audit-privacy` | Audit logs, telemetry, and persistence paths for PII leakage and retention violations; surface secrets exposure and consent gaps. |
|
|
@@ -41,19 +42,17 @@ description, edit the workflow file’s front-matter and regenerate.
|
|
|
41
42
|
| `/audit-security` | Audit dependency CVEs, input-validation gaps, secrets handling, and auth boundaries; emit a structured High/Medium/Low findings report. |
|
|
42
43
|
| `/audit-seo` | Audit SEO fundamentals and Generative Engine Optimization signals (meta, structured data, crawlability); only relevant for web targets. |
|
|
43
44
|
| `/audit-sre` | "Audit production-readiness for a release candidate: SLOs, observability, runbooks, error budgets, and rollback paths." |
|
|
44
|
-
| `/audit-to-stories` | Convert findings produced by the audit-\* workflows into actionable GitHub Stories. Reads temp/audits/audit-\*-results.md, groups findings cross-audit, deduplicates against existing Issues by fingerprint, and either chains into /
|
|
45
|
+
| `/audit-to-stories` | Convert findings produced by the audit-\* workflows into actionable GitHub Stories. Reads temp/audits/audit-\*-results.md, groups findings cross-audit, deduplicates against existing Issues by fingerprint, and either chains into /plan --idea or opens standalone Stories. |
|
|
45
46
|
| `/audit-ux-ui` | Audit UX/UI consistency and design system adherence |
|
|
46
|
-
| `/
|
|
47
|
-
| `/epic-plan` | Orchestrates end-to-end Epic planning (PRD, Tech Spec, Acceptance Spec, and Work Breakdown) for a GitHub Epic. |
|
|
47
|
+
| `/deliver` | Unified delivery entry point. Inspects the ticket type(s) and Epic-reference state of the supplied IDs, then routes to the Epic wave loop or the standalone multi-Story fan-out — preserving every flag and the parallel-delivery contract of the retired commands. |
|
|
48
48
|
| `/explain` | Walk the operator through a code change until they genuinely understand it. Targets a PR, a branch, or the working-tree diff, then drives the `core/knowledge-transfer` skill (restate-first, why-ladder, mastery gates, persistent checklist) with an operator-controlled stop at every checkpoint. |
|
|
49
49
|
| `/git-cleanup` | Tidy the local checkout in four phases: fast-forward `main`, prune stale remote-tracking refs, sweep merged branches (squash-aware), and triage `git stash` entries — each step gated by operator confirmation. |
|
|
50
50
|
| `/git-commit-all` | Stage every untracked and modified file, then create a single conventional-commit on the current branch (no push). |
|
|
51
51
|
| `/git-merge-pr` | Analyze, validate, resolve conflicts, and merge a given pull request by number. |
|
|
52
52
|
| `/git-pr-all` | Stage all outstanding changes, commit, push to a feature branch, and open a pull request with native auto-merge enabled. |
|
|
53
53
|
| `/git-push` | Commit all outstanding changes then push to the remote repository. |
|
|
54
|
-
| `/onboard` | Guided first-run onboarding for a freshly installed Mandrel. Detects the consumer stack, offers to scaffold any missing docsContextFiles, runs `mandrel doctor` as a readiness gate, and hands off to a started /
|
|
54
|
+
| `/onboard` | Guided first-run onboarding for a freshly installed Mandrel. Detects the consumer stack, offers to scaffold any missing docsContextFiles, runs `mandrel doctor` as a readiness gate, and hands off to a started /plan. The whole path is designed to take about 15 minutes from a clean checkout to a planned Epic. |
|
|
55
|
+
| `/plan` | Unified planning entry point. Routes a seed idea (via scope triage) or an existing Epic ID to the right planning path — the full Epic pipeline (PRD, Tech Spec, Acceptance Spec, decomposition) or the standalone-Story authoring path — and absorbs every planning flag. |
|
|
55
56
|
| `/qa-assist` | Human-led QA assist loop — ingest one operator observation, enrich it with repro + root-cause (file:line) + a coverage verdict, ask clarifying questions when it is ambiguous, and append a redacted ledger item to a persistent, resumable rolling session under temp/qa/ |
|
|
56
57
|
| `/qa-explore` | Agent-led exploratory-QA loop — the agent Plans a surface with an explicit static-vs-drive method choice, drives it (browser MCP or static), and captures ledger items read-only, then Triages — a bounded per-surface session, HITL-gated at every phase transition, routed through the shared dedup/coverage/classification/missing-test/redaction/session core under temp/qa/ |
|
|
57
58
|
| `/qa-run-harness` | Drive Gherkin scenarios through a real browser as an agent-driven QA sweep |
|
|
58
|
-
| `/story-deliver` | Deliver one or more standalone Stories end-to-end. Accepts 1+ Story IDs, computes a dependency-aware wave plan via `stories-wave-tick.js`, asks the operator to confirm the plan, then fans out parallel Agent calls per wave — each delegating to `helpers/single-story-deliver`. Stories without an `Epic: #N` reference only; Epic-attached Stories use `/epic-deliver`. |
|
|
59
|
-
| `/story-plan` | Author a standalone Story (no parent Epic) from a short prompt. Builds a context envelope, lets the host LLM draft the body, and creates the GitHub Issue with type::story and a persona label — ready to feed into /single-story-deliver. |
|
package/.agents/instructions.md
CHANGED
|
@@ -150,8 +150,8 @@ This protocol is not soft-prompt-only — it has a runtime substrate. While
|
|
|
150
150
|
executing as a Story delivery sub-agent (via `helpers/epic-deliver-story`
|
|
151
151
|
or `helpers/single-story-deliver`), you MUST emit a `story.heartbeat`
|
|
152
152
|
lifecycle event on every Task transition (or whenever you stall on a
|
|
153
|
-
long-running step) so the parent `/
|
|
154
|
-
`.agents/workflows/epic
|
|
153
|
+
long-running step) so the parent `/deliver` idle watchdog (§ 2e of
|
|
154
|
+
`.agents/workflows/helpers/deliver-epic.md`, re-ticked every 30 minutes via
|
|
155
155
|
`wave-tick.js --check-idle 30`) can distinguish a child still making
|
|
156
156
|
progress from a dead one. If you genuinely cannot proceed, transition to
|
|
157
157
|
`agent::blocked` and exit non-zero — never fall silent. A child with no
|
|
@@ -219,7 +219,7 @@ stops.
|
|
|
219
219
|
estimate (≈4 characters per token) and applies section-aware elision
|
|
220
220
|
(`elideEnvelope`) so oversized envelopes drop or summarize
|
|
221
221
|
lower-priority sections before you receive the prompt.
|
|
222
|
-
- **`delivery.preflight.*`** (optional): before `/
|
|
222
|
+
- **`delivery.preflight.*`** (optional): before `/deliver` fan-out,
|
|
223
223
|
`epic-deliver-preflight.js` compares **estimated** story count, waves,
|
|
224
224
|
install time, GitHub API volume, and Claude quota tokens against
|
|
225
225
|
configured ceilings (`maxClaudeQuotaTokens`, etc.). A breach surfaces
|
|
@@ -303,7 +303,7 @@ them automatically; agents commit on the execution branch only.
|
|
|
303
303
|
| Purpose | Format | Owner | Notes |
|
|
304
304
|
| ---------------- | ---------------------------- | ---------------------- | --------------------------------------------------------------------------------------------- |
|
|
305
305
|
| Story execution | `story-<storyId>` | `story-init.js` | Per-Story worktree at `.worktrees/story-<storyId>/`. All Story implementation commits land here. |
|
|
306
|
-
| Epic integration | `epic/<epicId>` | `/
|
|
306
|
+
| Epic integration | `epic/<epicId>` | `/deliver` slash command | Story branches merge into this branch with `--no-ff`. Pushed per wave. |
|
|
307
307
|
|
|
308
308
|
- **Verification**: After `story-init.js` returns, confirm
|
|
309
309
|
`git branch --show-current` reports `story-<storyId>` before making any
|
|
@@ -324,18 +324,19 @@ prompted.
|
|
|
324
324
|
Prioritize a clean `epic/[EPIC_ID]` branch. Story branches are merged into
|
|
325
325
|
the Epic branch automatically by `helpers/epic-deliver-story` (via
|
|
326
326
|
`story-close.js`); the Epic branch reaches `main` via the pull request that
|
|
327
|
-
`/
|
|
327
|
+
`/deliver` opens at the end of its run — the operator merges through
|
|
328
328
|
the GitHub UI. There is no in-script merge to `main`.
|
|
329
329
|
|
|
330
|
-
### D. Ticket hierarchy (
|
|
330
|
+
### D. Ticket hierarchy (2-tier)
|
|
331
331
|
|
|
332
|
-
Mandrel uses a **
|
|
332
|
+
Mandrel uses a **2-tier ticket hierarchy** (Epic → Story).
|
|
333
333
|
Acceptance criteria and verification steps live inline on the Story
|
|
334
|
-
body (`acceptance[]` / `verify[]`); there is no
|
|
335
|
-
layer.
|
|
334
|
+
body (`acceptance[]` / `verify[]`); there is no Feature tier and no
|
|
335
|
+
`type::task` ticket layer. Thematic grouping lives as prose in the
|
|
336
|
+
Epic body / Tech Spec.
|
|
336
337
|
|
|
337
|
-
- The decomposer emits only `type::epic
|
|
338
|
-
|
|
338
|
+
- The decomposer emits only `type::epic` and `type::story` issues;
|
|
339
|
+
Stories attach directly to the Epic.
|
|
339
340
|
- Each Story-implementation phase is executed by
|
|
340
341
|
`helpers/epic-deliver-story` (Epic-attached) or
|
|
341
342
|
`helpers/single-story-deliver` (standalone). There is no per-Task
|
|
@@ -51,7 +51,7 @@ Before permitting any code generation, you must enforce this workflow:
|
|
|
51
51
|
### C. Protocol Evolution (Self-Healing)
|
|
52
52
|
|
|
53
53
|
- **Friction Analysis:** During the retro phase (Phase 5 of
|
|
54
|
-
`/
|
|
54
|
+
`/deliver`, driven by `lib/orchestration/retro-runner.js`), you
|
|
55
55
|
MUST analyze the
|
|
56
56
|
`agent-friction-log.json` to identify systemic bottlenecks, repetitive tool
|
|
57
57
|
failures, or prompt ambiguities.
|
|
@@ -43,7 +43,7 @@ UI copy, metadata, and structural assumptions align with it.
|
|
|
43
43
|
### B. Epic Lifecycle & Retrospectives
|
|
44
44
|
|
|
45
45
|
- **Retrospectives:** Own the Epic retrospective process. Phase 5 of
|
|
46
|
-
`/
|
|
46
|
+
`/deliver` runs `lib/orchestration/retro-runner.js` in-process
|
|
47
47
|
to generate retro structured comments, analyze execution, and
|
|
48
48
|
formulate action items.
|
|
49
49
|
- **Epic Definition:** Lock upcoming features into a clear Epic scope.
|
|
@@ -9,7 +9,7 @@ prioritize **dependency clarity**, **parallel execution efficiency**, and
|
|
|
9
9
|
|
|
10
10
|
**Golden Rule:** You do not write implementation code. You write the GitHub
|
|
11
11
|
Issue hierarchy of instructions that other agent personas will execute.
|
|
12
|
-
The ticket hierarchy is **
|
|
12
|
+
The ticket hierarchy is **2-tier** (Epic → Story), with
|
|
13
13
|
acceptance criteria and verification steps inlined on the Story body.
|
|
14
14
|
There are no `type::task` children — Stories themselves carry the
|
|
15
15
|
implementation scope. If you catch yourself generating application code,
|
|
@@ -21,16 +21,16 @@ SQL, or UI components — stop immediately.
|
|
|
21
21
|
and Tech Spec (`context::tech-spec`) GitHub Issues, plus every file
|
|
22
22
|
listed in `project.docsContextFiles` (typically `architecture.md`
|
|
23
23
|
and the data dictionary).
|
|
24
|
-
2. **Decompose:** Break
|
|
24
|
+
2. **Decompose:** Break the Epic into **Stories** that carry their own
|
|
25
25
|
inline acceptance criteria and verification steps. Aim for roughly
|
|
26
26
|
five acceptance bullets per Story as a soft atomicity heuristic; if
|
|
27
27
|
a Story scope grows past that, split it into sequential sibling
|
|
28
|
-
Stories
|
|
28
|
+
Stories.
|
|
29
29
|
3. **Assign:** Dynamically select the appropriate Persona from
|
|
30
30
|
`.agents/personas/` for each Story based on its complexity and
|
|
31
31
|
domain, and tag the issue with the matching `persona::` label.
|
|
32
|
-
4. **Format:** Generate the
|
|
33
|
-
`/
|
|
32
|
+
4. **Format:** Generate the Story backlog using the
|
|
33
|
+
`/plan` workflow.
|
|
34
34
|
5. **Validate:** Ensure every Acceptance Criterion from the PRD has a
|
|
35
35
|
corresponding Story-body acceptance bullet. Do not drop business
|
|
36
36
|
logic.
|
|
@@ -39,12 +39,12 @@ SQL, or UI components — stop immediately.
|
|
|
39
39
|
|
|
40
40
|
### A. Epic Planning & Task Decomposition
|
|
41
41
|
|
|
42
|
-
- **Fan-Out Architecture:** Structure each Epic into
|
|
42
|
+
- **Fan-Out Architecture:** Structure each Epic into Stories
|
|
43
43
|
with explicit `blocked by` links so the dispatch graph can compute parallel
|
|
44
44
|
waves automatically.
|
|
45
|
-
- **Issue Linkage:** Every
|
|
45
|
+
- **Issue Linkage:** Every Story GitHub Issue must declare
|
|
46
46
|
its `parent` and (where applicable) `blocked by` relationships in the
|
|
47
|
-
body so `/
|
|
47
|
+
body so `/plan` can build a clean dispatch manifest.
|
|
48
48
|
- **Dependency Mapping:** Explicitly declare blockers via `blocked by` on
|
|
49
49
|
the GitHub Issue body. Ensure no Story references work that hasn't
|
|
50
50
|
been completed by a predecessor Story.
|
|
@@ -52,7 +52,7 @@ SQL, or UI components — stop immediately.
|
|
|
52
52
|
perform a limited number of logical steps — roughly five
|
|
53
53
|
acceptance/verification bullets per Story is a good soft heuristic.
|
|
54
54
|
When a Story grows beyond the heuristic, split it into sequential
|
|
55
|
-
sibling Stories
|
|
55
|
+
sibling Stories.
|
|
56
56
|
|
|
57
57
|
### B. Resource Allocation (Persona Routing)
|
|
58
58
|
|
|
@@ -68,11 +68,11 @@ SQL, or UI components — stop immediately.
|
|
|
68
68
|
- **QA Tasks:** Delegate QA Stories to the `/audit-quality` workflow. Do not
|
|
69
69
|
write custom QA instructions.
|
|
70
70
|
- **Retro Tasks:** Delegate the Epic retro to Phase 5 of
|
|
71
|
-
`/
|
|
71
|
+
`/deliver`, which runs `lib/orchestration/retro-runner.js`
|
|
72
72
|
in-process. Do not write custom retro instructions.
|
|
73
73
|
- **Story Finalization:** Ensure every Story's body incorporates a step
|
|
74
74
|
to self-verify its own context (PRD/Tech Spec linkage, parent
|
|
75
|
-
|
|
75
|
+
Epic) before starting work.
|
|
76
76
|
|
|
77
77
|
### D. Quality Control
|
|
78
78
|
|
|
@@ -80,15 +80,15 @@ SQL, or UI components — stop immediately.
|
|
|
80
80
|
every Acceptance Criterion in the PRD against the generated
|
|
81
81
|
Story-body acceptance bullets. Any missed AC is a planning failure.
|
|
82
82
|
- **Format Compliance:** Use the exact Issue body templates, label taxonomy,
|
|
83
|
-
and parent/blocked-by linkage rules required by `/
|
|
83
|
+
and parent/blocked-by linkage rules required by `/plan` so the
|
|
84
84
|
generated dispatch manifest validates against the schema.
|
|
85
85
|
|
|
86
86
|
## 4. Output Artifacts
|
|
87
87
|
|
|
88
88
|
- The GitHub Issue hierarchy under the parent Epic generated and linked
|
|
89
|
-
by `/
|
|
89
|
+
by `/plan` — a flat Story backlog.
|
|
90
90
|
- The Epic dispatch manifest (`temp/dispatch-manifest-<epicId>.json`)
|
|
91
|
-
emitted by `/
|
|
91
|
+
emitted by `/plan` for the runner to consume.
|
|
92
92
|
|
|
93
93
|
## 5. Scope Boundaries
|
|
94
94
|
|
|
@@ -38,7 +38,7 @@ wasn't in the room when it was built.
|
|
|
38
38
|
- **Release Notes:** Use the `generate-release-notes` workflow to produce
|
|
39
39
|
user-facing release notes. Focus on user impact, not implementation details.
|
|
40
40
|
- **Retrospectives:** Support `lib/orchestration/retro-runner.js`
|
|
41
|
-
(driven by Phase 5 of `/
|
|
41
|
+
(driven by Phase 5 of `/deliver`) with clean, well-structured
|
|
42
42
|
retro structured comments.
|
|
43
43
|
|
|
44
44
|
### B. Architecture & Reference Documentation
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This rule governs the shape of per-release entries in the project CHANGELOG
|
|
4
4
|
(typically `docs/CHANGELOG.md` or `CHANGELOG.md`). It applies whenever a
|
|
5
5
|
release entry is authored or edited — most commonly inside Story #N's
|
|
6
|
-
docs sweep before `/
|
|
6
|
+
docs sweep before `/deliver` opens the release PR.
|
|
7
7
|
|
|
8
8
|
The contract is **guidance-tier** in v1: no automated gate fails a close when
|
|
9
9
|
an entry drifts off-template. It still binds every author.
|
|
@@ -166,7 +166,7 @@ applies.
|
|
|
166
166
|
|
|
167
167
|
### Deliver tail auto-invokes pre-merge gates
|
|
168
168
|
|
|
169
|
-
`/
|
|
169
|
+
`/deliver` auto-invokes the code-review module (Phase 4) and
|
|
170
170
|
the retro runner (Phase 5) inline instead of halting to ask the
|
|
171
171
|
operator to run them separately. `--skip-code-review` available as
|
|
172
172
|
an override.
|
|
@@ -183,7 +183,7 @@ or a title starting with `📉 Epic Health:`, in addition to
|
|
|
183
183
|
well-known lock files (`index.lock`, `HEAD.lock`, `packed-refs.lock`,
|
|
184
184
|
`config.lock`, `shallow.lock`) whose mtime exceeds the threshold.
|
|
185
185
|
Fresh locks belonging to in-flight ops are skipped. Runs at
|
|
186
|
-
`/
|
|
186
|
+
`/deliver` start, before worktree GC.
|
|
187
187
|
```
|
|
188
188
|
|
|
189
189
|
Contract violations: five separate `###` sub-sections where one theme
|
|
@@ -210,12 +210,12 @@ worktree cleanup.
|
|
|
210
210
|
- **Shared-store worktrees.** Per-story worktrees link a shared
|
|
211
211
|
`node_modules` store, so parallel waves no longer duplicate installs
|
|
212
212
|
or leave residue that blocks reap.
|
|
213
|
-
- **`/
|
|
213
|
+
- **`/deliver` auto-invokes pre-merge gates** (code review, retro)
|
|
214
214
|
inline. `--skip-code-review` is available as an override.
|
|
215
215
|
- **Closure sweep covers Epic Health tickets** in addition to PRD and
|
|
216
216
|
Tech Spec tickets.
|
|
217
217
|
- **Stale-lock sweep** on the shared `.git/` directory runs at
|
|
218
|
-
`/
|
|
218
|
+
`/deliver` start, clearing lock files left behind by interrupted
|
|
219
219
|
operations.
|
|
220
220
|
```
|
|
221
221
|
|
|
@@ -18,8 +18,8 @@ All tasks within a Story MUST be committed to a shared **Story branch**:
|
|
|
18
18
|
`story-<storyId>` (e.g., `story-104`). The runtime owns Story branch
|
|
19
19
|
creation via `story-init.js`; agents commit on the active Story branch only.
|
|
20
20
|
|
|
21
|
-
> **Commit subjects.** Under the
|
|
22
|
-
> (Epic →
|
|
21
|
+
> **Commit subjects.** Under the 2-tier hierarchy
|
|
22
|
+
> (Epic → Story), Stories have no child tickets. Commits
|
|
23
23
|
> land on `story-<storyId>` directly from the agent and the
|
|
24
24
|
> Conventional Commit subject references the parent Story via
|
|
25
25
|
> `(refs #<storyId>)`. See
|
|
@@ -111,7 +111,7 @@ rejected by `pre-push` hooks):
|
|
|
111
111
|
## Meta Labels (Retrospective Signal Routing)
|
|
112
112
|
|
|
113
113
|
Two `meta::*` labels route retrospective signals into durable substrates so
|
|
114
|
-
the `/
|
|
114
|
+
the `/plan` Phase 0 fetcher (see
|
|
115
115
|
[`prior-feedback-fetcher.js`](../scripts/lib/feedback-loop/prior-feedback-fetcher.js))
|
|
116
116
|
can surface open feedback issues to the planner. Both labels live in
|
|
117
117
|
[`label-constants.js`](../scripts/lib/label-constants.js) under the
|
|
@@ -518,7 +518,7 @@
|
|
|
518
518
|
"maxFixAttempts": {
|
|
519
519
|
"type": "integer",
|
|
520
520
|
"minimum": 0,
|
|
521
|
-
"description": "Maximum auto-fix retry attempts per finding in /
|
|
521
|
+
"description": "Maximum auto-fix retry attempts per finding in /deliver Phase 4 (epic-audit). 0 disables auto-fix. Default 3."
|
|
522
522
|
},
|
|
523
523
|
"maxFixScopeFiles": {
|
|
524
524
|
"type": "integer",
|
|
@@ -600,7 +600,7 @@
|
|
|
600
600
|
"maxFixAttempts": {
|
|
601
601
|
"type": "integer",
|
|
602
602
|
"minimum": 0,
|
|
603
|
-
"description": "Maximum auto-fix retry attempts per finding in /
|
|
603
|
+
"description": "Maximum auto-fix retry attempts per finding in /deliver Phase 5 (code-review). 0 disables auto-fix. Default 3."
|
|
604
604
|
},
|
|
605
605
|
"maxFixScopeFiles": {
|
|
606
606
|
"type": "integer",
|
|
@@ -1383,7 +1383,7 @@
|
|
|
1383
1383
|
},
|
|
1384
1384
|
"preflight": {
|
|
1385
1385
|
"type": "object",
|
|
1386
|
-
"description": "Story #2899 (Epic #2880, F13). Thresholds consumed by `.agents/scripts/epic-deliver-preflight.js`. When any value is exceeded the preflight envelope flags a breach and /
|
|
1386
|
+
"description": "Story #2899 (Epic #2880, F13). Thresholds consumed by `.agents/scripts/epic-deliver-preflight.js`. When any value is exceeded the preflight envelope flags a breach and /deliver Phase 1 surfaces it via agent::blocked.",
|
|
1387
1387
|
"properties": {
|
|
1388
1388
|
"maxStories": {
|
|
1389
1389
|
"type": "integer",
|
|
@@ -73,6 +73,26 @@
|
|
|
73
73
|
"triggers": { "gates": ["gate4"] },
|
|
74
74
|
"substitutionKeys": []
|
|
75
75
|
},
|
|
76
|
+
"audit-documentation": {
|
|
77
|
+
"triggers": {
|
|
78
|
+
"gates": ["gate1", "gate3"],
|
|
79
|
+
"keywords": [
|
|
80
|
+
"documentation",
|
|
81
|
+
"docs",
|
|
82
|
+
"readme",
|
|
83
|
+
"changelog",
|
|
84
|
+
"runbook",
|
|
85
|
+
"stale docs"
|
|
86
|
+
],
|
|
87
|
+
"filePatterns": [
|
|
88
|
+
"**/*.md",
|
|
89
|
+
"docs/**",
|
|
90
|
+
".agents/docs/**",
|
|
91
|
+
".agents/workflows/**"
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"substitutionKeys": []
|
|
95
|
+
},
|
|
76
96
|
"audit-dependencies": {
|
|
77
97
|
"triggers": {
|
|
78
98
|
"gates": ["gate1", "gate3"],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "dispatch-manifest",
|
|
4
4
|
"title": "Dispatch Manifest",
|
|
5
|
-
"description": "Output of dispatcher.js (epic-dispatch variant) and orchestration/story-executor.js (story-execution variant). Written to temp/dispatch-manifest-<epicId>.json for the epic-dispatch variant. The two variants are discriminated by the `type` field.
|
|
5
|
+
"description": "Output of dispatcher.js (epic-dispatch variant) and orchestration/story-executor.js (story-execution variant). Written to temp/dispatch-manifest-<epicId>.json for the epic-dispatch variant. The two variants are discriminated by the `type` field. 2-tier shape only (Epic #3078): manifests are Story-only — there is no Task-level fan-out. Open-root by design — the AJV fixture drift test is the enforcement boundary; see docs/decisions.md ADR 20260427-868a.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": ["generatedAt", "dryRun"],
|
|
8
8
|
"properties": {
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
},
|
|
51
51
|
"hierarchy": {
|
|
52
52
|
"type": "string",
|
|
53
|
-
"const": "
|
|
54
|
-
"description": "Hierarchy identifier.
|
|
53
|
+
"const": "2-tier",
|
|
54
|
+
"description": "Hierarchy identifier. 2-tier is the only supported shape (Epic #3078)."
|
|
55
55
|
},
|
|
56
56
|
"summary": {
|
|
57
57
|
"type": "object",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"totalStories": {
|
|
67
67
|
"type": "integer",
|
|
68
68
|
"minimum": 0,
|
|
69
|
-
"description": "Story-centric count for the
|
|
69
|
+
"description": "Story-centric count for the 2-tier shape (Epic #3078)."
|
|
70
70
|
},
|
|
71
71
|
"doneStories": {
|
|
72
72
|
"type": "integer",
|