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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: >-
|
|
3
3
|
Helper — not a slash command. Execute one Epic-attached Story end-to-end on
|
|
4
|
-
behalf of `/
|
|
4
|
+
behalf of `/deliver`. Calls `story-init.js`, `cd`s into the worktree,
|
|
5
5
|
runs the Story-implementation phase against the inline acceptance[] /
|
|
6
6
|
verify[] arrays, writes a `story-run-progress` snapshot per transition, and
|
|
7
7
|
finally calls `story-close.js` to merge into the Epic branch and reap the
|
|
@@ -13,19 +13,19 @@ caller: epic-deliver.md
|
|
|
13
13
|
|
|
14
14
|
> **Not a slash command.** This file lives in `helpers/` and is not projected
|
|
15
15
|
> into the mandrel plugin command tree. It is invoked exclusively by the
|
|
16
|
-
> [`/
|
|
17
|
-
> call (`subagent_type: general-purpose`). Run `/
|
|
16
|
+
> [`/deliver`](deliver-epic.md) per-wave fan-out via an `Agent` tool
|
|
17
|
+
> call (`subagent_type: general-purpose`). Run `/deliver <epicId>` from
|
|
18
18
|
> the operator surface, not this helper directly.
|
|
19
19
|
|
|
20
20
|
## Overview
|
|
21
21
|
|
|
22
22
|
`epic-deliver-story` is the **single-Story worker** for Epic-attached Stories.
|
|
23
|
-
It sits below [`/
|
|
23
|
+
It sits below [`/deliver`](deliver-epic.md) (which fans out one Story
|
|
24
24
|
sub-agent per slot, per wave) and runs one Story from init to close in one
|
|
25
25
|
invocation.
|
|
26
26
|
|
|
27
27
|
```text
|
|
28
|
-
/
|
|
28
|
+
/deliver <epicId>
|
|
29
29
|
→ for each wave N:
|
|
30
30
|
Agent tool × concurrencyCap parallel calls (one assistant turn):
|
|
31
31
|
helpers/epic-deliver-story <storyId>
|
|
@@ -36,10 +36,10 @@ invocation.
|
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
The argument is always a **Story ID** (`type::story`). Epic IDs go through
|
|
39
|
-
[`/
|
|
39
|
+
[`/deliver`](deliver-epic.md).
|
|
40
40
|
|
|
41
41
|
**Standalone Stories** (no `Epic: #N` in body) use
|
|
42
|
-
[`/
|
|
42
|
+
[`/deliver`](deliver-stories.md) instead — that workflow's helper
|
|
43
43
|
branches from `main`, opens its PR directly to `main`, and skips the
|
|
44
44
|
Epic-scoped machinery (cascade, dispatch manifest, dashboard regen). This
|
|
45
45
|
helper requires a parent Epic and will refuse to initialize a Story that lacks
|
|
@@ -56,7 +56,7 @@ the `Epic: #N` reference.
|
|
|
56
56
|
|
|
57
57
|
## Non-interactive execution contract
|
|
58
58
|
|
|
59
|
-
`epic-deliver-story` runs as a sub-agent of `/
|
|
59
|
+
`epic-deliver-story` runs as a sub-agent of `/deliver`'s per-wave fan-out
|
|
60
60
|
(common case) or interactively for a single Story. Sub-agent runs share
|
|
61
61
|
the parent's permissions but have **no input channel** mid-run.
|
|
62
62
|
|
|
@@ -93,7 +93,7 @@ node .agents/scripts/story-init.js --story <storyId>
|
|
|
93
93
|
> prevention is cheaper: just give Bash the 10-minute timeout and block.
|
|
94
94
|
|
|
95
95
|
The script validates `type::story`, checks blockers, traces the
|
|
96
|
-
|
|
96
|
+
Epic → PRD/Tech-Spec hierarchy, seeds `story-<id>` from the
|
|
97
97
|
Epic branch, and (when worktree isolation is on) runs `git worktree add`
|
|
98
98
|
at `.worktrees/story-<id>/`. The Story flips to `agent::executing`. A
|
|
99
99
|
`story-init` structured comment is upserted with the Story's inline
|
|
@@ -120,21 +120,17 @@ tri-state carries one of three values:
|
|
|
120
120
|
|
|
121
121
|
### Step 0.6 — Initial `story-run-progress` snapshot
|
|
122
122
|
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
Story #4017 inlined the former standalone prepare CLI into
|
|
124
|
+
`story-init.js`: Step 0's init run already applied the install tri-state
|
|
125
|
+
in-process (retrying the install command when
|
|
126
|
+
`dependenciesInstalled === 'false'`, default `npm ci`) and rendered the
|
|
127
|
+
initial snapshot (`phase: "init"`). There is no separate command to run.
|
|
125
128
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
(default `npm ci`; override with `--install-cmd "<cmd>"`).
|
|
132
|
-
|
|
133
|
-
The CLI's stdout JSON envelope carries a `renderedBody` field — the markdown
|
|
134
|
-
body that was upserted onto the Story ticket. **Relay it verbatim to chat**
|
|
135
|
-
so operators see the initial progress block before the first commit lands.
|
|
136
|
-
Do the same after every transition in Step 1 / Step 3 (the body is the
|
|
137
|
-
Story-level rollup the parent `/epic-deliver` aggregator reads).
|
|
129
|
+
The Step 0 result envelope carries a `prepare.renderedBody` field — the
|
|
130
|
+
markdown body for the initial Story-phase table. **Relay it verbatim to
|
|
131
|
+
chat** so operators see the initial progress block before the first commit
|
|
132
|
+
lands. Do the same after every transition in Step 1 / Step 3 (the body is
|
|
133
|
+
the Story-level rollup the parent `/deliver` aggregator reads).
|
|
138
134
|
|
|
139
135
|
---
|
|
140
136
|
|
|
@@ -295,30 +291,23 @@ When run as a sub-agent, return one JSON object:
|
|
|
295
291
|
> existing `storyId` / `branchDeleted` / `phase` / `detail` /
|
|
296
292
|
> `renderedBody` fields — do **not** add new envelope fields). Do not
|
|
297
293
|
> narrate the steps you took to get there, and do not prescribe how
|
|
298
|
-
> `/
|
|
294
|
+
> `/deliver`'s aggregator should do its job downstream. The parent
|
|
299
295
|
> reads structured state from this envelope and the `story-run-progress`
|
|
300
296
|
> snapshot; prose process commentary only bloats the hydrated prompt
|
|
301
297
|
> (`delivery.maxTokenBudget` elision).
|
|
302
298
|
|
|
303
299
|
`branchDeleted` is sourced from the `branchDeleted` field of the
|
|
304
|
-
`story-close.js` result envelope
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
deleted; a pending-cleanup entry is recorded so the next post-close drain
|
|
311
|
-
(or the next plan-time sweep) clears the stale `.git/worktrees/<name>/`
|
|
312
|
-
registry entry. Treat `stale-registry-entry` as operationally complete
|
|
313
|
-
when computing your return contract: `status: 'done'` is appropriate when
|
|
314
|
-
all Tasks are closed and `branchDeleted: true`, regardless of whether
|
|
315
|
-
`worktreeReap.status` is `'removed'`, `'removed-after-drain'`, or
|
|
316
|
-
`'stale-registry-entry'`.
|
|
300
|
+
`story-close.js` result envelope. It is **independent** of
|
|
301
|
+
`worktreeReap.status` — every reap outcome the close reports (including
|
|
302
|
+
the Windows-only `stale-registry-entry`, which queues a pending-cleanup
|
|
303
|
+
entry for the next drain) is operationally complete. `status: 'done'` is
|
|
304
|
+
appropriate when the Story is closed and `branchDeleted: true`,
|
|
305
|
+
regardless of the reap status.
|
|
317
306
|
|
|
318
307
|
`renderedBody` is the **most recent** `renderedBody` returned by
|
|
319
308
|
`story-phase.js` (typically the `phase: 'done'` snapshot at close,
|
|
320
309
|
or the `phase: 'blocked'` snapshot on a blocker). The parent
|
|
321
|
-
`/
|
|
310
|
+
`/deliver` may inline a digest of this in its wave-level Notable
|
|
322
311
|
section. When run interactively (no parent), omit it — the chat already
|
|
323
312
|
has the latest body relayed during Step 1 / Step 3.
|
|
324
313
|
|
|
@@ -339,7 +328,7 @@ running this helper against an already-closed Story is safe.
|
|
|
339
328
|
only integration target is the parent Epic's integration branch. If
|
|
340
329
|
`story-close.js` short-circuits, no-ops, or otherwise fails to merge,
|
|
341
330
|
**do NOT** fall back to `gh pr create --base main`, **do NOT** invoke
|
|
342
|
-
`/
|
|
331
|
+
`/deliver` on the same Story, and **do NOT** open a PR by
|
|
343
332
|
hand against `main`. Such a PR orphans the change on `main` and forces
|
|
344
333
|
a manual `git merge origin/main` back into `epic/<id>` to recover (the
|
|
345
334
|
Epic #2880 wave-5 / Story #2960 friction note). The framework refuses
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: >-
|
|
3
3
|
Phase 8 of sprint planning — decompose an Epic's PRD and Tech Spec into a
|
|
4
|
-
|
|
4
|
+
backlog of child Stories, persist the backlog, and flip the Epic to
|
|
5
5
|
`agent::ready`. Host-LLM authored; no external API calls.
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Sprint Plan — Decompose Phase (helper)
|
|
9
9
|
|
|
10
|
-
> **Helper module.** Not a slash command. Invoked by `/
|
|
11
|
-
> To run the decompose phase interactively, use `/
|
|
10
|
+
> **Helper module.** Not a slash command. Invoked by `/plan` (Phase 8).
|
|
11
|
+
> To run the decompose phase interactively, use `/plan [Epic_ID]` — it
|
|
12
12
|
> delegates here after the spec phase.
|
|
13
13
|
|
|
14
14
|
## Role
|
|
@@ -19,9 +19,9 @@ Director / Architect
|
|
|
19
19
|
|
|
20
20
|
This helper is the **decompose phase** of the split planning pipeline. It
|
|
21
21
|
reads the PRD and Tech Spec previously produced by the spec phase helper
|
|
22
|
-
([`epic-plan-spec.md`](epic-plan-spec.md)), generates the
|
|
23
|
-
Story
|
|
24
|
-
`agent::ready` (parking) so a human can run `/
|
|
22
|
+
([`epic-plan-spec.md`](epic-plan-spec.md)), generates the Epic's child
|
|
23
|
+
Story tickets, persists them to GitHub, and flips the Epic to
|
|
24
|
+
`agent::ready` (parking) so a human can run `/deliver` when
|
|
25
25
|
execution should begin.
|
|
26
26
|
|
|
27
27
|
The ticket array is authored **directly by you, the host LLM**.
|
|
@@ -29,8 +29,8 @@ The ticket array is authored **directly by you, the host LLM**.
|
|
|
29
29
|
authoring context you need and (b) validates, persists, and transitions the
|
|
30
30
|
Epic lifecycle state.
|
|
31
31
|
|
|
32
|
-
The ticket array contains `type::
|
|
33
|
-
|
|
32
|
+
The ticket array contains `type::story` tickets only — no Feature
|
|
33
|
+
containers and no `type::task` children. Acceptance criteria and verification
|
|
34
34
|
steps are inlined on each Story body via the `acceptance[]` and
|
|
35
35
|
`verify[]` fields. The decomposer system prompt lives in the
|
|
36
36
|
[`epic-plan-decompose-author`](../../skills/core/epic-plan-decompose-author/SKILL.md)
|
|
@@ -41,13 +41,13 @@ skill.
|
|
|
41
41
|
- **Do not** run this skill until the spec phase is complete. The Epic must
|
|
42
42
|
have linked `context::prd` and `context::tech-spec` issues; the script will
|
|
43
43
|
refuse to proceed otherwise.
|
|
44
|
-
- **Do not**
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
- **Do not** restructure the Story set after the decomposition
|
|
45
|
+
writes — the `epic-plan-state` checkpoint records the structure as
|
|
46
|
+
committed. Use `--force` to rebuild from scratch.
|
|
47
47
|
- **Every** temp file must include the Epic ID in its name. Multiple Epics
|
|
48
48
|
may be decomposed concurrently; bare names will collide.
|
|
49
49
|
- **Do not** flip the Epic past `agent::ready` from this helper. Execution
|
|
50
|
-
begins when an operator runs `/
|
|
50
|
+
begins when an operator runs `/deliver [Epic_ID]`.
|
|
51
51
|
|
|
52
52
|
## Prerequisites
|
|
53
53
|
|
|
@@ -70,7 +70,7 @@ decomposer system prompt, and the `maxTickets` **reviewability budget**
|
|
|
70
70
|
## Step 2 — Author the ticket array
|
|
71
71
|
|
|
72
72
|
Read `temp/epic-[Epic_ID]/decomposer-context.json`. Produce a JSON array of
|
|
73
|
-
|
|
73
|
+
Story objects that conforms to the schema in the system prompt
|
|
74
74
|
and write it to `temp/epic-[Epic_ID]/tickets.json`.
|
|
75
75
|
|
|
76
76
|
When the Tech Spec carries a `## Delivery Slicing` section, author toward the
|
|
@@ -95,12 +95,12 @@ skill with `[Epic_ID]` as input. It reads the draft
|
|
|
95
95
|
- a human-readable `temp/epic-[Epic_ID]/consolidation-report.md` (rationale +
|
|
96
96
|
before/after diff).
|
|
97
97
|
|
|
98
|
-
The pass is constrained to scope-preserving operations only — **merge
|
|
99
|
-
|
|
100
|
-
It
|
|
101
|
-
|
|
102
|
-
`
|
|
103
|
-
backstop.
|
|
98
|
+
The pass is constrained to scope-preserving operations only — **merge sibling
|
|
99
|
+
Stories and rewire `depends_on`**. It MUST NOT add scope or invent tickets.
|
|
100
|
+
It consolidates fragmented slices by merging them into a cohesive Story,
|
|
101
|
+
never by splitting one into two; the `assertAllTicketsAreStories` validator
|
|
102
|
+
(in `lib/orchestration/ticket-validator.js`) stays as the post-consolidation
|
|
103
|
+
backstop that rejects any non-Story ticket the pass might emit.
|
|
104
104
|
|
|
105
105
|
> **HITL diff gate.** Show the operator
|
|
106
106
|
> `temp/epic-[Epic_ID]/consolidation-report.md` (the before/after diff +
|
|
@@ -141,7 +141,7 @@ On success the script:
|
|
|
141
141
|
Delegate the structural invariants (hierarchy completeness, dependency DAG
|
|
142
142
|
acyclicity, missing complexity labels) to `epic-plan-healthcheck.js`. It is
|
|
143
143
|
the single source of truth for post-decompose validation — the Phase 10 run
|
|
144
|
-
inside `/
|
|
144
|
+
inside `/plan` calls the same script, so local and remote flows agree.
|
|
145
145
|
|
|
146
146
|
```bash
|
|
147
147
|
node .agents/scripts/epic-plan-healthcheck.js --epic [Epic_ID] --paranoid
|
|
@@ -156,7 +156,7 @@ checks without performing any I/O — it is not a substitute for
|
|
|
156
156
|
The script exits 0 regardless of findings (non-blocking), but lists any
|
|
157
157
|
`ERR`-level findings that must be addressed before execution:
|
|
158
158
|
|
|
159
|
-
- Missing `type::
|
|
159
|
+
- Missing `type::story` tickets.
|
|
160
160
|
- Stories without `complexity::` labels.
|
|
161
161
|
- Dependency cycles across Stories.
|
|
162
162
|
|
|
@@ -183,11 +183,11 @@ is the single source of truth for which temp paths this phase owns.
|
|
|
183
183
|
- Surface the backlog summary and the Wave 0 candidates to the operator:
|
|
184
184
|
|
|
185
185
|
> "Decomposition complete. Epic #[ID] is on `agent::ready` with NN ticket(s)
|
|
186
|
-
> across MM Stories. Run `/
|
|
186
|
+
> across MM Stories. Run `/deliver [Epic_ID]` to begin execution."
|
|
187
187
|
|
|
188
188
|
## Troubleshooting
|
|
189
189
|
|
|
190
|
-
- "Epic #N is missing a linked PRD or Tech Spec" — run `/
|
|
190
|
+
- "Epic #N is missing a linked PRD or Tech Spec" — run `/plan [Epic_ID]`
|
|
191
191
|
first (it will run the spec phase if the PRD / Tech Spec are missing).
|
|
192
192
|
- Validator rejects the tickets file — the most common causes are a
|
|
193
193
|
Story whose `parent_slug` does not point at a Feature, a missing
|
|
@@ -7,8 +7,8 @@ description: >-
|
|
|
7
7
|
|
|
8
8
|
# Sprint Plan — Spec Phase (helper)
|
|
9
9
|
|
|
10
|
-
> **Helper module.** Not a slash command. Invoked by `/
|
|
11
|
-
> To run the spec phase interactively, use `/
|
|
10
|
+
> **Helper module.** Not a slash command. Invoked by `/plan` (Phase 7).
|
|
11
|
+
> To run the spec phase interactively, use `/plan [Epic_ID]` — it
|
|
12
12
|
> delegates here.
|
|
13
13
|
|
|
14
14
|
## Role
|
|
@@ -27,7 +27,7 @@ reviewer can read the artifacts on GitHub before decomposition.
|
|
|
27
27
|
> **Single prose home.** The canonical, full-detail spec-phase contract
|
|
28
28
|
> (idempotent context tickets, the three-ticket rationale, the
|
|
29
29
|
> `acceptance::n-a` waiver, the Epic-lease preflight) lives in
|
|
30
|
-
> [`epic-plan.md` § Phase 7](
|
|
30
|
+
> [`epic-plan.md` § Phase 7](plan-epic.md). This helper carries only the
|
|
31
31
|
> operational step list; when the two disagree, `epic-plan.md` wins.
|
|
32
32
|
|
|
33
33
|
The PRD and Tech Spec are authored **directly by you, the host LLM**.
|
|
@@ -36,7 +36,7 @@ context you need and (b) persists the artifacts and transitions the Epic
|
|
|
36
36
|
lifecycle state.
|
|
37
37
|
|
|
38
38
|
The complementary Phase 8 helper is
|
|
39
|
-
[`epic-plan-decompose.md`](epic-plan-decompose.md). The `/
|
|
39
|
+
[`epic-plan-decompose.md`](epic-plan-decompose.md). The `/plan`
|
|
40
40
|
wrapper chains both helpers with a confirmation gate in between.
|
|
41
41
|
|
|
42
42
|
## Constraint
|
|
@@ -101,7 +101,7 @@ Using `systemPrompts.acceptanceSpec`, the PRD, and the Tech Spec, write the
|
|
|
101
101
|
Acceptance Spec to `temp/epic-[Epic_ID]/acceptance-spec.md`. It captures the
|
|
102
102
|
stable-ID acceptance criteria table
|
|
103
103
|
(`| AC ID | Outcome | Feature File | Scenario | Disposition |`) that drives
|
|
104
|
-
close-time reconciliation in `/
|
|
104
|
+
close-time reconciliation in `/deliver` Phase 6.
|
|
105
105
|
|
|
106
106
|
**Skip this step only** when the Epic carries the `acceptance::n-a` waiver
|
|
107
107
|
label (refactor-only or docs-only Epics); in that case omit `--acceptance-spec`
|
|
@@ -166,7 +166,7 @@ JSON (`planningRisk`, `reviewRouting`):
|
|
|
166
166
|
URLs to the operator:
|
|
167
167
|
|
|
168
168
|
> "Spec phase complete for Epic #[ID]. Review PRD (#XX) and Tech Spec (#YY)
|
|
169
|
-
> on GitHub. When you're ready, re-run `/
|
|
169
|
+
> on GitHub. When you're ready, re-run `/plan [Epic_ID]` — the wrapper
|
|
170
170
|
> will pick up where it left off and run the decompose phase."
|
|
171
171
|
|
|
172
172
|
- **Low risk — auto-proceed.** Relay `reviewRouting.operatorMessage` and
|
|
@@ -5,7 +5,7 @@ description: QA Epic-testing workflow — ingest the agent-driven QA harness swe
|
|
|
5
5
|
# Epic Testing (helper)
|
|
6
6
|
|
|
7
7
|
> **Helper module.** Not a slash command. Invoked from the QA gate during
|
|
8
|
-
> `/
|
|
8
|
+
> `/deliver` or directly by an operator when the Epic-testing ticket
|
|
9
9
|
> needs refreshed evidence. For ad-hoc acceptance runs use `/qa-run-harness` —
|
|
10
10
|
> this helper owns the Epic-evidence ticket lifecycle on top of it.
|
|
11
11
|
|
|
@@ -15,7 +15,7 @@ evidence artifact is the **agent-driven QA harness sweep report** produced by
|
|
|
15
15
|
findings), **not** a hand-ticked markdown checklist.
|
|
16
16
|
|
|
17
17
|
> **When to run**: During the QA phase of an Epic, after all Story merges
|
|
18
|
-
> have landed on the Epic branch and before `/
|
|
18
|
+
> have landed on the Epic branch and before `/deliver`. Also run ad-hoc
|
|
19
19
|
> when a regression is suspected mid-Epic.
|
|
20
20
|
>
|
|
21
21
|
> **Persona**: `qa-engineer` · **Skills**:
|
|
@@ -84,7 +84,7 @@ do not paste — large artifacts.
|
|
|
84
84
|
- One-line symptom.
|
|
85
85
|
- Link to the failing scenario's snapshot or trace.
|
|
86
86
|
|
|
87
|
-
Do not close the Epic-testing ticket on a failed run. `/
|
|
87
|
+
Do not close the Epic-testing ticket on a failed run. `/deliver`
|
|
88
88
|
depends on green evidence.
|
|
89
89
|
|
|
90
90
|
## Deprecated — Markdown Checklist Flow
|
|
@@ -57,7 +57,7 @@ the same shape as Rule 1 but at the sub-agent layer.
|
|
|
57
57
|
|
|
58
58
|
- **Tool primitives:** `Agent` (one call per independent unit, all in one
|
|
59
59
|
turn).
|
|
60
|
-
- **When:** wave-level Story fan-out from `/
|
|
60
|
+
- **When:** wave-level Story fan-out from `/deliver`, per-dimension
|
|
61
61
|
audit dispatch, any "for each X in Xs run /Y X" loop where the Xs do not
|
|
62
62
|
share write paths.
|
|
63
63
|
- **Anti-pattern:** serial `Agent` calls (`Agent` → wait → `Agent` → wait)
|