mandrel 1.59.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 +14 -14
- package/.agents/docs/SDLC.md +129 -134
- package/.agents/docs/configuration.md +16 -16
- package/.agents/docs/workflows.md +6 -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/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 +1 -1
- package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
- package/.agents/scripts/analyze-execution.js +2 -2
- package/.agents/scripts/audit-to-stories.js +1 -1
- package/.agents/scripts/check-doc-links.js +2 -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 +6 -6
- package/.agents/scripts/epic-deliver-prepare.js +1 -1
- package/.agents/scripts/epic-execute-record-wave.js +4 -4
- 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 +1 -1
- package/.agents/scripts/generate-workflows-doc.js +1 -1
- package/.agents/scripts/hierarchy-gate.js +7 -11
- 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/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/codebase-snapshot.js +1 -1
- package/.agents/scripts/lib/config/explain.js +1 -1
- 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-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/duplicate-search.js +1 -1
- package/.agents/scripts/lib/dynamic-workflow/capability.js +1 -1
- 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/label-constants.js +3 -4
- package/.agents/scripts/lib/label-taxonomy.js +3 -8
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +1 -1
- package/.agents/scripts/lib/orchestration/code-review.js +5 -5
- 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 +9 -25
- package/.agents/scripts/lib/orchestration/epic-cleanup.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +8 -8
- 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-lease-guard.js +26 -13
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +1 -1
- 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 +2 -2
- 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 +6 -21
- package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +7 -7
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +2 -2
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +8 -8
- package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +4 -4
- 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 +2 -2
- 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 +3 -3
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +1 -1
- 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 +1 -1
- 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/ticket-closure.js +3 -3
- package/.agents/scripts/lib/orchestration/preflight-cache.js +1 -1
- 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/single-story-close/phases/wrong-tree-guard.js +1 -1
- 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/baseline-friction-body.js +1 -1
- package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +2 -2
- 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 +2 -2
- 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 +5 -12
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +8 -8
- package/.agents/scripts/lib/orchestration/ticketing/state.js +3 -3
- package/.agents/scripts/lib/orchestration/wave-record-notifications.js +2 -2
- package/.agents/scripts/lib/orchestration/wave-record-projection.js +1 -1
- 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/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-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 +8 -8
- package/.agents/scripts/lib/story-plan.js +1 -1
- package/.agents/scripts/lib/templates/decomposer-prompts.js +59 -52
- package/.agents/scripts/lib/wave-runner/tick.js +1 -1
- 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 +4 -4
- package/.agents/scripts/resync-status-column.js +1 -1
- package/.agents/scripts/retro-run.js +2 -2
- package/.agents/scripts/run-lint.js +1 -1
- package/.agents/scripts/single-story-init.js +1 -1
- package/.agents/scripts/stories-wave-tick.js +5 -5
- package/.agents/scripts/story-close.js +1 -1
- package/.agents/scripts/story-init.js +13 -16
- package/.agents/scripts/story-phase.js +5 -5
- package/.agents/scripts/story-plan.js +3 -3
- package/.agents/scripts/sync-branch-from-base.js +1 -1
- 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/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 +2 -2
- 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} +43 -43
- 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 +13 -13
- 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 +11 -11
- package/.agents/workflows/helpers/worktree-lifecycle.md +18 -18
- package/.agents/workflows/onboard.md +17 -17
- 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 +4 -12
- 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 +31 -29
- package/lib/cli/update.js +413 -52
- package/package.json +2 -1
- package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
|
@@ -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
|
|
@@ -130,7 +130,7 @@ The Step 0 result envelope carries a `prepare.renderedBody` field — the
|
|
|
130
130
|
markdown body for the initial Story-phase table. **Relay it verbatim to
|
|
131
131
|
chat** so operators see the initial progress block before the first commit
|
|
132
132
|
lands. Do the same after every transition in Step 1 / Step 3 (the body is
|
|
133
|
-
the Story-level rollup the parent `/
|
|
133
|
+
the Story-level rollup the parent `/deliver` aggregator reads).
|
|
134
134
|
|
|
135
135
|
---
|
|
136
136
|
|
|
@@ -291,7 +291,7 @@ When run as a sub-agent, return one JSON object:
|
|
|
291
291
|
> existing `storyId` / `branchDeleted` / `phase` / `detail` /
|
|
292
292
|
> `renderedBody` fields — do **not** add new envelope fields). Do not
|
|
293
293
|
> narrate the steps you took to get there, and do not prescribe how
|
|
294
|
-
> `/
|
|
294
|
+
> `/deliver`'s aggregator should do its job downstream. The parent
|
|
295
295
|
> reads structured state from this envelope and the `story-run-progress`
|
|
296
296
|
> snapshot; prose process commentary only bloats the hydrated prompt
|
|
297
297
|
> (`delivery.maxTokenBudget` elision).
|
|
@@ -307,7 +307,7 @@ regardless of the reap status.
|
|
|
307
307
|
`renderedBody` is the **most recent** `renderedBody` returned by
|
|
308
308
|
`story-phase.js` (typically the `phase: 'done'` snapshot at close,
|
|
309
309
|
or the `phase: 'blocked'` snapshot on a blocker). The parent
|
|
310
|
-
`/
|
|
310
|
+
`/deliver` may inline a digest of this in its wave-level Notable
|
|
311
311
|
section. When run interactively (no parent), omit it — the chat already
|
|
312
312
|
has the latest body relayed during Step 1 / Step 3.
|
|
313
313
|
|
|
@@ -328,7 +328,7 @@ running this helper against an already-closed Story is safe.
|
|
|
328
328
|
only integration target is the parent Epic's integration branch. If
|
|
329
329
|
`story-close.js` short-circuits, no-ops, or otherwise fails to merge,
|
|
330
330
|
**do NOT** fall back to `gh pr create --base main`, **do NOT** invoke
|
|
331
|
-
`/
|
|
331
|
+
`/deliver` on the same Story, and **do NOT** open a PR by
|
|
332
332
|
hand against `main`. Such a PR orphans the change on `main` and forces
|
|
333
333
|
a manual `git merge origin/main` back into `epic/<id>` to recover (the
|
|
334
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)
|