mandrel 1.59.0 → 1.61.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 +86 -44
- package/.agents/docs/SDLC.md +135 -141
- package/.agents/docs/configuration.md +77 -20
- package/.agents/docs/quality-gates.md +796 -0
- package/.agents/docs/workflows.md +6 -9
- 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/runtime-deps.json +2 -2
- 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 +2 -2
- package/.agents/scripts/acceptance-eval.js +1 -1
- package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
- package/.agents/scripts/agents-bootstrap-github.js +23 -119
- 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 +47 -1
- package/.agents/scripts/lib/bootstrap/commit-push.js +2 -2
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +7 -9
- package/.agents/scripts/lib/bootstrap/manifest.js +21 -1
- package/.agents/scripts/lib/bootstrap/merge-methods.js +31 -16
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +32 -11
- 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/sync-agentrc.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/detect-package-manager.js +72 -0
- 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/errors/index.js +4 -4
- 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 +5 -10
- package/.agents/scripts/lib/onboard/detect-stack.js +10 -10
- package/.agents/scripts/lib/onboard/init-tail.js +218 -0
- package/.agents/scripts/lib/onboard/scaffold-docs.js +18 -3
- 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/runtime-deps/preflight.js +6 -6
- 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/lib/worktree/node-modules-strategy.js +5 -2
- 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 +16 -31
- 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/agents-sync-config.md +3 -2
- 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/plan.md +131 -0
- package/.agents/workflows/qa-explore.md +1 -1
- package/.agents/workflows/qa-run-harness.md +1 -1
- package/README.md +19 -39
- package/bin/mandrel.js +235 -16
- package/docs/CHANGELOG.md +1173 -0
- package/lib/cli/doctor.js +45 -3
- package/lib/cli/init.js +97 -36
- package/lib/cli/registry.js +41 -145
- package/lib/cli/sync.js +122 -23
- package/lib/cli/uninstall.js +42 -7
- package/lib/cli/update.js +524 -210
- package/lib/cli/version-helpers.js +59 -0
- package/package.json +7 -6
- package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
- package/.agents/workflows/onboard.md +0 -208
- package/lib/cli/__tests__/migrate.test.js +0 -268
- package/lib/cli/__tests__/sync-local-zone.test.js +0 -247
- package/lib/cli/__tests__/sync.test.js +0 -372
- package/lib/cli/__tests__/update-major.test.js +0 -217
- package/lib/cli/__tests__/update.test.js +0 -696
- package/lib/cli/__tests__/version-check.test.js +0 -398
- package/lib/migrations/__tests__/index.test.js +0 -216
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: >-
|
|
3
3
|
npm-era upgrade wraparound for a Mandrel consumer. Runs `mandrel update`
|
|
4
|
-
(resolve newest
|
|
4
|
+
(resolve newest published version → install → re-materialize `.agents/` →
|
|
5
5
|
migrate → doctor → surface changelog) as the single mechanical step, then
|
|
6
6
|
walks the operator through the judgment wraparound the CLI deliberately
|
|
7
7
|
leaves unowned: reconcile `.agentrc.json`, install the Epic #1386
|
|
@@ -23,7 +23,7 @@ description: >-
|
|
|
23
23
|
|
|
24
24
|
## Overview
|
|
25
25
|
|
|
26
|
-
`/agents-update` advances the consumer repo to the newest
|
|
26
|
+
`/agents-update` advances the consumer repo to the newest published
|
|
27
27
|
`mandrel` release, re-materializes `.agents/`, and regenerates the
|
|
28
28
|
flat `.claude/commands/` tree (invoked as `/<name>`) against the new workflow
|
|
29
29
|
set — then reconciles the consumer's own config, harness allowlist, and
|
|
@@ -40,11 +40,10 @@ The upgrade contract:
|
|
|
40
40
|
- **CI honours the committed lockfile.** Consumer CI runs `npm ci` against
|
|
41
41
|
the committed `package-lock.json`, so it installs exactly the version the
|
|
42
42
|
lockfile pins — never "whatever the registry's newest is today."
|
|
43
|
-
- **
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
gated.
|
|
43
|
+
- **Majors apply like any other bump.** Mandrel ships hard cutovers
|
|
44
|
+
(`.agents/rules/git-conventions.md` § Contract Cutovers), so a major
|
|
45
|
+
crossing is applied directly — the surfaced changelog is the migration
|
|
46
|
+
guide.
|
|
48
47
|
- **The CLI never commits.** The npm bump rewrites `package.json` /
|
|
49
48
|
`package-lock.json` and leaves them **staged on disk** for operator review;
|
|
50
49
|
`mandrel update` performs no `git add` / `git commit`. Staging and
|
|
@@ -55,8 +54,7 @@ The upgrade contract:
|
|
|
55
54
|
authoritative writer of the generated flat command tree
|
|
56
55
|
(`.claude/commands/`) is
|
|
57
56
|
[`sync-claude-commands.js`](../scripts/sync-claude-commands.js), which
|
|
58
|
-
prepends the `<!-- AUTO-GENERATED -->` header
|
|
59
|
-
`/agents-bootstrap-project` parity-checks. Nothing else copies workflow
|
|
57
|
+
prepends the `<!-- AUTO-GENERATED -->` header. Nothing else copies workflow
|
|
60
58
|
files.
|
|
61
59
|
|
|
62
60
|
> **Persona**: `devops-engineer` · **Skills**:
|
|
@@ -71,7 +69,7 @@ mandrel update --dry-run
|
|
|
71
69
|
mandrel update
|
|
72
70
|
```
|
|
73
71
|
|
|
74
|
-
`mandrel update --dry-run` resolves the newest
|
|
72
|
+
`mandrel update --dry-run` resolves the newest published version and prints
|
|
75
73
|
the ordered step plan (`npm-update → runSync → runMigrations → doctor →
|
|
76
74
|
surface changelog`) without invoking any effectful seam — no dependency bump,
|
|
77
75
|
no sync, no migrations, no doctor, nothing written. Read the planned target
|
|
@@ -82,23 +80,19 @@ version before applying.
|
|
|
82
80
|
1. **Resolve target** — the newest published `mandrel` version (via
|
|
83
81
|
the daily freshness cache in `temp/version-check.json`) and the currently
|
|
84
82
|
installed version.
|
|
85
|
-
2. **
|
|
86
|
-
declines, prints the `docs/upgrade-major.md` pointer, and exits non-zero
|
|
87
|
-
without touching anything. Re-run with `--major` only after reviewing that
|
|
88
|
-
runbook.
|
|
89
|
-
3. **No-op short-circuit** — already on the newest version ⇒ prints
|
|
83
|
+
2. **No-op short-circuit** — already on the newest version ⇒ prints
|
|
90
84
|
`Already up to date` and exits 0.
|
|
91
|
-
|
|
85
|
+
3. **Install** — bumps the dependency (default
|
|
92
86
|
`npm install mandrel@<target>`; pass
|
|
93
87
|
`--install-cmd "<pm> <args>"` for a pnpm/yarn workspace). The lockfile
|
|
94
88
|
change is left **staged** for review; the CLI never commits.
|
|
95
|
-
|
|
89
|
+
4. **runSync** — re-materializes `.agents/` from the freshly installed
|
|
96
90
|
payload, which also regenerates the flat `.claude/commands/` tree via
|
|
97
91
|
`sync-claude-commands.js`.
|
|
98
|
-
|
|
92
|
+
5. **runMigrations** — applies any version-keyed migration steps for the
|
|
99
93
|
crossed range.
|
|
100
|
-
|
|
101
|
-
|
|
94
|
+
6. **doctor** — runs the check registry to verify the resulting install.
|
|
95
|
+
7. **Surface changelog** — prints the `docs/CHANGELOG.md` section(s) covering
|
|
102
96
|
the applied range `(current, target]`. Capture this output — Step 4
|
|
103
97
|
reconciles the consumer's own instructions against it.
|
|
104
98
|
|
|
@@ -222,7 +216,7 @@ The four `quality-bootstrap` outcomes:
|
|
|
222
216
|
|
|
223
217
|
The `baselines-layout-migration` step relocates per-Epic snapshots
|
|
224
218
|
into the `temp/epic/<id>/baselines/` namespace (Story #1467: ephemeral
|
|
225
|
-
scratch state, not committed, reaped on `/
|
|
219
|
+
scratch state, not committed, reaped on `/deliver` merge with the
|
|
226
220
|
rest of the per-Epic temp tree):
|
|
227
221
|
|
|
228
222
|
- Loose `baselines/epic-<id>-{maintainability,crap}.json` files →
|
|
@@ -246,7 +240,7 @@ guarantee `agents-update`'s idempotence contract requires.
|
|
|
246
240
|
A framework bump frequently introduces new helper scripts and `node
|
|
247
241
|
.agents/scripts/<name>.js` invocations the consumer's
|
|
248
242
|
`.claude/settings.json` allowlist has never seen. Left alone, the next
|
|
249
|
-
`/
|
|
243
|
+
`/deliver` or `/deliver` run trips a fresh wave of
|
|
250
244
|
permission prompts that operators answer by hand — and those hand-tuned
|
|
251
245
|
allowlists drift across projects.
|
|
252
246
|
|
|
@@ -371,12 +365,6 @@ no-op.
|
|
|
371
365
|
|
|
372
366
|
## Troubleshooting
|
|
373
367
|
|
|
374
|
-
- **`a newer MAJOR version (X.0.0) is available`** — `mandrel update`
|
|
375
|
-
hit the major gate and exited non-zero without touching anything. A
|
|
376
|
-
major crossing is a breaking upgrade. Read `docs/upgrade-major.md`,
|
|
377
|
-
then re-run `mandrel update --major` only after you have absorbed the
|
|
378
|
-
migration steps that runbook describes.
|
|
379
|
-
|
|
380
368
|
- **`doctor reported failures: …`** — the dependency bumped and `.agents/`
|
|
381
369
|
re-materialized, but a doctor check failed (and the run exited
|
|
382
370
|
non-zero). Run `mandrel doctor` for the per-check remedies. The lockfile
|
|
@@ -402,9 +390,6 @@ no-op.
|
|
|
402
390
|
- **Idempotent.** A second `mandrel update` immediately after a successful
|
|
403
391
|
run resolves the same newest version, hits the no-op short-circuit, and
|
|
404
392
|
prints `Already up to date` — exit 0, nothing bumped.
|
|
405
|
-
- **Non-major only by default.** The major axis is gated behind an explicit
|
|
406
|
-
`--major`; routine minor/patch bumps within the current major apply
|
|
407
|
-
without a gate.
|
|
408
393
|
- **No auto-commit.** `mandrel update` leaves the lockfile bump staged on
|
|
409
394
|
disk and never runs git. The operator reviews the surfaced changelog and
|
|
410
395
|
writes the commit message (Step 5) — the CLI does not know whether the
|
|
@@ -19,7 +19,7 @@ existing external APIs or business logic.
|
|
|
19
19
|
## Execution strategy (dual-path)
|
|
20
20
|
|
|
21
21
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
22
|
-
report contract (Step 3); downstream consumers (`/
|
|
22
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
23
23
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
24
24
|
|
|
25
25
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -72,7 +72,7 @@ degrade to the sequential path.
|
|
|
72
72
|
|
|
73
73
|
## Scope (Epic mode)
|
|
74
74
|
|
|
75
|
-
When this lens is invoked from `/
|
|
75
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
76
76
|
following block is populated with the Epic's change-set file list.
|
|
77
77
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
78
78
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -17,7 +17,7 @@ velocity.
|
|
|
17
17
|
|
|
18
18
|
## Scope (Epic mode)
|
|
19
19
|
|
|
20
|
-
When this lens is invoked from `/
|
|
20
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
21
21
|
following block is populated with the Epic's change-set file list.
|
|
22
22
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
23
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -39,7 +39,7 @@ before this section existed.
|
|
|
39
39
|
## Execution strategy (dual-path)
|
|
40
40
|
|
|
41
41
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
42
|
-
report contract (Step 3); downstream consumers (`/
|
|
42
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
43
43
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
44
44
|
|
|
45
45
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -16,7 +16,7 @@ system stability.
|
|
|
16
16
|
|
|
17
17
|
## Scope (Epic mode)
|
|
18
18
|
|
|
19
|
-
When this lens is invoked from `/
|
|
19
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
20
20
|
following block is populated with the Epic's change-set file list.
|
|
21
21
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
22
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -17,7 +17,7 @@ without making any immediate changes.
|
|
|
17
17
|
|
|
18
18
|
## Scope (Epic mode)
|
|
19
19
|
|
|
20
|
-
When this lens is invoked from `/
|
|
20
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
21
21
|
following block is populated with the Epic's change-set file list.
|
|
22
22
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
23
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -49,7 +49,7 @@ semantic review beyond Step 1's deterministic checks.
|
|
|
49
49
|
|
|
50
50
|
## Scope (Epic mode)
|
|
51
51
|
|
|
52
|
-
When this lens is invoked from `/
|
|
52
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
53
53
|
following block is populated with the Epic's change-set file list.
|
|
54
54
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
55
55
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -71,7 +71,7 @@ before this section existed.
|
|
|
71
71
|
## Execution strategy (dual-path)
|
|
72
72
|
|
|
73
73
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
74
|
-
report contract (Step 3); downstream consumers (`/
|
|
74
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
75
75
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
76
76
|
|
|
77
77
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -31,7 +31,7 @@ inflate Performance scores misleadingly.
|
|
|
31
31
|
|
|
32
32
|
## Scope (Epic mode)
|
|
33
33
|
|
|
34
|
-
When this lens is invoked from `/
|
|
34
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
35
35
|
following block is populated with the Epic's change-set file list.
|
|
36
36
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
37
37
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -16,7 +16,7 @@ load.
|
|
|
16
16
|
|
|
17
17
|
## Scope (Epic mode)
|
|
18
18
|
|
|
19
|
-
When this lens is invoked from `/
|
|
19
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
20
20
|
following block is populated with the Epic's change-set file list.
|
|
21
21
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
22
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -38,7 +38,7 @@ before this section existed.
|
|
|
38
38
|
## Execution strategy (dual-path)
|
|
39
39
|
|
|
40
40
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
41
|
-
report contract (Step 3); downstream consumers (`/
|
|
41
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
42
42
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
43
43
|
|
|
44
44
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -17,7 +17,7 @@ insecure storage, or unnecessary collection of sensitive data.
|
|
|
17
17
|
|
|
18
18
|
## Scope (Epic mode)
|
|
19
19
|
|
|
20
|
-
When this lens is invoked from `/
|
|
20
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
21
21
|
following block is populated with the Epic's change-set file list.
|
|
22
22
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
23
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -26,7 +26,7 @@ integrations, and test environment stability.
|
|
|
26
26
|
|
|
27
27
|
## Scope (Epic mode)
|
|
28
28
|
|
|
29
|
-
When this lens is invoked from `/
|
|
29
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
30
30
|
following block is populated with the Epic's change-set file list.
|
|
31
31
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
32
32
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -48,7 +48,7 @@ before this section existed.
|
|
|
48
48
|
## Execution strategy (dual-path)
|
|
49
49
|
|
|
50
50
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
51
|
-
report contract (Step 3); downstream consumers (`/
|
|
51
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
52
52
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
53
53
|
|
|
54
54
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -16,7 +16,7 @@ potential attack vectors.
|
|
|
16
16
|
|
|
17
17
|
## Scope (Epic mode)
|
|
18
18
|
|
|
19
|
-
When this lens is invoked from `/
|
|
19
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
20
20
|
following block is populated with the Epic's change-set file list.
|
|
21
21
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
22
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -38,7 +38,7 @@ before this section existed.
|
|
|
38
38
|
## Execution strategy (dual-path)
|
|
39
39
|
|
|
40
40
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
41
|
-
report contract (Step 3); downstream consumers (`/
|
|
41
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
42
42
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
43
43
|
|
|
44
44
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -20,7 +20,7 @@ indexes and AI-powered answer engines — without making any immediate changes.
|
|
|
20
20
|
|
|
21
21
|
## Scope (Epic mode)
|
|
22
22
|
|
|
23
|
-
When this lens is invoked from `/
|
|
23
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
24
24
|
following block is populated with the Epic's change-set file list.
|
|
25
25
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
26
26
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -17,7 +17,7 @@ actionable report that can be handed off for remediation before deployment.
|
|
|
17
17
|
|
|
18
18
|
## Scope (Epic mode)
|
|
19
19
|
|
|
20
|
-
When this lens is invoked from `/
|
|
20
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
21
21
|
following block is populated with the Epic's change-set file list.
|
|
22
22
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
23
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -3,7 +3,7 @@ description:
|
|
|
3
3
|
Convert findings produced by the audit-* workflows into actionable
|
|
4
4
|
GitHub Stories. Reads temp/audits/audit-*-results.md, groups findings
|
|
5
5
|
cross-audit, deduplicates against existing Issues by fingerprint, and
|
|
6
|
-
either chains into /
|
|
6
|
+
either chains into /plan --idea or opens standalone Stories.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# /audit-to-stories [audit-file-or-glob]
|
|
@@ -22,7 +22,7 @@ Dimension / Category, Current State, Recommendation, Agent Prompt).
|
|
|
22
22
|
`/audit-to-stories` closes the loop: it parses those reports, groups
|
|
23
23
|
related findings (including across audit dimensions), classifies each
|
|
24
24
|
group as eligible-to-create or already-tracked, and — at the operator's
|
|
25
|
-
choice — either chains into `/
|
|
25
|
+
choice — either chains into `/plan --idea` for a single planned
|
|
26
26
|
Epic or opens standalone Stories directly.
|
|
27
27
|
|
|
28
28
|
The audit producers themselves are **not modified** by this workflow.
|
|
@@ -117,8 +117,8 @@ Ask:
|
|
|
117
117
|
|
|
118
118
|
> How would you like these `<M>` Stories created?
|
|
119
119
|
>
|
|
120
|
-
> - **Single Epic via `/
|
|
121
|
-
> then chains into `/
|
|
120
|
+
> - **Single Epic via `/plan`** **[Recommended]** — opens one Epic,
|
|
121
|
+
> then chains into `/plan --idea` so the standard PRD / Tech Spec
|
|
122
122
|
> / WBS authoring handles decomposition. Grouped Stories become the
|
|
123
123
|
> seed for Phase 7 decomposition.
|
|
124
124
|
> - **Individual standalone Stories** — opens one GitHub Issue per
|
|
@@ -128,7 +128,7 @@ Ask:
|
|
|
128
128
|
|
|
129
129
|
## Phase 5a — Single-Epic path
|
|
130
130
|
|
|
131
|
-
Build the `/
|
|
131
|
+
Build the `/plan` idea seed from the filtered plan envelope:
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
134
|
node .agents/scripts/audit-to-stories.js --emit-epic-seed \
|
|
@@ -138,16 +138,16 @@ node .agents/scripts/audit-to-stories.js --emit-epic-seed \
|
|
|
138
138
|
|
|
139
139
|
The seed renders the canonical one-pager sections — Problem Statement,
|
|
140
140
|
Recommended Direction, Key Assumptions (with links to every source
|
|
141
|
-
report), MVP Scope (the M proposed Stories), Key Files (so `/
|
|
141
|
+
report), MVP Scope (the M proposed Stories), Key Files (so `/plan`
|
|
142
142
|
Phase 7 decompose has concrete anchors), Not Doing.
|
|
143
143
|
|
|
144
144
|
Chain into the existing planning entrypoint:
|
|
145
145
|
|
|
146
146
|
```text
|
|
147
|
-
/
|
|
147
|
+
/plan --idea "<path-to-seed>"
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
`/
|
|
150
|
+
`/plan` then runs ideation → duplicate-search → render Epic body
|
|
151
151
|
→ open Epic → Phase 7 / 8 decompose, as documented in its workflow.
|
|
152
152
|
Each Story it spawns from the seed carries `context::audit:
|
|
153
153
|
<reportLink>` and `audit-fingerprint: <sha>` in its body so future
|
|
@@ -225,7 +225,7 @@ summarising the run:
|
|
|
225
225
|
- Final tally: `"<M> groups planned · <K> created · <J> skipped (open)
|
|
226
226
|
· <L> skipped (re-occurring)"`.
|
|
227
227
|
|
|
228
|
-
When the Single-Epic path ran, link the Epic the chained `/
|
|
228
|
+
When the Single-Epic path ran, link the Epic the chained `/plan`
|
|
229
229
|
opened. When the Standalone-Stories path ran, list every Issue URL.
|
|
230
230
|
|
|
231
231
|
## Constraints
|
|
@@ -250,7 +250,7 @@ opened. When the Standalone-Stories path ran, list every Issue URL.
|
|
|
250
250
|
|
|
251
251
|
## See also
|
|
252
252
|
|
|
253
|
-
- [`/
|
|
253
|
+
- [`/plan`](helpers/plan-epic.md) — the planning pipeline `/audit-to-stories`
|
|
254
254
|
chains into for the Single-Epic grouping mode.
|
|
255
255
|
- [`lib/findings/route-finding.js`](../scripts/lib/findings/route-finding.js) —
|
|
256
256
|
the shared fingerprint/dedup/route helper this workflow and `qa-explore`
|
|
@@ -16,7 +16,7 @@ and cohesive.
|
|
|
16
16
|
|
|
17
17
|
## Scope (Epic mode)
|
|
18
18
|
|
|
19
|
-
When this lens is invoked from `/
|
|
19
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
20
20
|
following block is populated with the Epic's change-set file list.
|
|
21
21
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
22
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
description:
|
|
3
|
+
Unified delivery entry point. Inspects the ticket type(s) and
|
|
4
|
+
Epic-reference state of the supplied IDs, then routes to the Epic wave
|
|
5
|
+
loop or the standalone multi-Story fan-out — preserving every flag and
|
|
6
|
+
the parallel-delivery contract of the retired commands.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /deliver [Epic ID] | [Story IDs...]
|
|
10
|
+
|
|
11
|
+
## Role
|
|
12
|
+
|
|
13
|
+
Router. `/deliver` owns input classification and path selection only — all
|
|
14
|
+
phase content lives in the two path helpers:
|
|
15
|
+
|
|
16
|
+
- [`helpers/deliver-epic.md`](helpers/deliver-epic.md) — the full Epic
|
|
17
|
+
delivery loop (preflight, wave loop fanning out
|
|
18
|
+
[`helpers/epic-deliver-story`](helpers/epic-deliver-story.md),
|
|
19
|
+
close-validation, epic-audit, code-review, retro, finalize, watch,
|
|
20
|
+
auto-merge gate, cleanup).
|
|
21
|
+
- [`helpers/deliver-stories.md`](helpers/deliver-stories.md) — the
|
|
22
|
+
standalone multi-Story path (`stories-wave-tick.js` wave plan, operator
|
|
23
|
+
confirmation, parallel fan-out to
|
|
24
|
+
[`helpers/single-story-deliver`](helpers/single-story-deliver.md)).
|
|
25
|
+
|
|
26
|
+
## Input matrix (authoritative)
|
|
27
|
+
|
|
28
|
+
Fetch each supplied ID's labels and body (`type::*` label, `Epic: #N`
|
|
29
|
+
reference) before routing:
|
|
30
|
+
|
|
31
|
+
| Input | Route |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Exactly one `type::epic` ID | **Epic path** — run [`helpers/deliver-epic.md`](helpers/deliver-epic.md) Phases 1–9 unchanged. |
|
|
34
|
+
| One or more `type::story` IDs, none carrying an `Epic: #N` reference | **Standalone path** — run [`helpers/deliver-stories.md`](helpers/deliver-stories.md) Phases 0–3. |
|
|
35
|
+
| Any Story carrying an `Epic: #N` reference | **Error**, naming the fix: `Story #<id> belongs to Epic #<n> — run /deliver <n>`. |
|
|
36
|
+
| Mixed Epic + Story IDs, or more than one Epic | **Error**: separate invocations — one `/deliver <epicId>` per Epic, one `/deliver <id> [<id>...]` for the standalone set. |
|
|
37
|
+
|
|
38
|
+
## Flags (forwarded per path)
|
|
39
|
+
|
|
40
|
+
| Path | Flags |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| Epic | `--skip-epic-audit`, `--skip-code-review`, `--skip-retro`, `--full-retro`, `--steal`, `--as <handle>` |
|
|
43
|
+
| Story | `--dep <from>:<to>`, `--yes`, `--concurrency <n>` |
|
|
44
|
+
|
|
45
|
+
A flag passed to the wrong path is reported once as a no-op warning and
|
|
46
|
+
ignored — never an error.
|
|
47
|
+
|
|
48
|
+
**Multi-Story parallel contract (preserved verbatim).**
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
/deliver <id> <id> … --dep <from>:<to> --concurrency <n> --yes
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
behaves exactly as the retired multi-Story command did: the same
|
|
55
|
+
`stories-wave-tick.js` wave plan, the same operator confirmation gate
|
|
56
|
+
(suppressed by `--yes`), and the same parallel fan-out — one Agent call per
|
|
57
|
+
Story per wave, capped by the resolved `concurrencyCap` — to
|
|
58
|
+
[`helpers/single-story-deliver`](helpers/single-story-deliver.md).
|
|
59
|
+
|
|
60
|
+
## Procedure
|
|
61
|
+
|
|
62
|
+
1. **Parse args.** At least one positive-integer ID is required.
|
|
63
|
+
2. **Classify.** Fetch each ticket's labels + body and apply the input
|
|
64
|
+
matrix above. Refuse ambiguous input with the matrix's error messages —
|
|
65
|
+
never guess a route.
|
|
66
|
+
3. **Delegate.** Read the selected path helper **in full** and execute it
|
|
67
|
+
from its entry phase, forwarding the absorbed flags. The helper's phase
|
|
68
|
+
numbering, watchdogs, gates, and scripts are unchanged — this router
|
|
69
|
+
adds no phase content.
|
|
70
|
+
|
|
71
|
+
## Constraints
|
|
72
|
+
|
|
73
|
+
- `/deliver` requires a planned ticket: an Epic at `agent::ready` (the
|
|
74
|
+
Epic helper's preflight enforces this) or well-formed standalone Stories.
|
|
75
|
+
Planning happens in [`/plan`](plan.md); the plan-review gate between the
|
|
76
|
+
two commands is a hard boundary.
|
|
77
|
+
- The router performs no git or label mutations itself; the path helpers
|
|
78
|
+
own every script invocation.
|
|
79
|
+
|
|
80
|
+
## See also
|
|
81
|
+
|
|
82
|
+
- [`/plan`](plan.md) — the unified planning entry point.
|
|
83
|
+
- [`helpers/deliver-epic.md`](helpers/deliver-epic.md) /
|
|
84
|
+
[`helpers/deliver-stories.md`](helpers/deliver-stories.md) — the path
|
|
85
|
+
helpers.
|
|
@@ -14,7 +14,7 @@ description:
|
|
|
14
14
|
landed (or is about to) and you want to be sure you actually understand it —
|
|
15
15
|
the problem it solves, why it was solved this way, the design decisions, the
|
|
16
16
|
edge cases, and the blast radius. It is the after-the-fact counterpart to
|
|
17
|
-
[`/
|
|
17
|
+
[`/plan`](helpers/plan-epic.md) Phase 11 (which walks the operator through a
|
|
18
18
|
*plan* before delivery); both drive the same engine.
|
|
19
19
|
|
|
20
20
|
```text
|
|
@@ -39,7 +39,7 @@ contract.
|
|
|
39
39
|
| Understand a change that already merged | `/explain <PR#>` |
|
|
40
40
|
| Understand a branch before merging it | `/explain <branch>` |
|
|
41
41
|
| Understand what you are about to commit | `/explain --staged` |
|
|
42
|
-
| Understand a freshly planned Epic backlog | `/
|
|
42
|
+
| Understand a freshly planned Epic backlog | `/plan` Phase 11 (automatic) |
|
|
43
43
|
|
|
44
44
|
## Step 1 — Resolve the subject
|
|
45
45
|
|
|
@@ -111,7 +111,7 @@ structured-question mechanism when it sharpens understanding.
|
|
|
111
111
|
|
|
112
112
|
- [`core/knowledge-transfer`](../skills/core/knowledge-transfer/SKILL.md) —
|
|
113
113
|
the comprehension engine this command drives.
|
|
114
|
-
- [`/
|
|
114
|
+
- [`/plan`](helpers/plan-epic.md) — Phase 11 runs the same engine over a plan
|
|
115
115
|
before delivery.
|
|
116
116
|
- `/code-review` (Claude Code built-in) — correctness review of a diff. A
|
|
117
117
|
different concern: `/explain` builds *operator* understanding, not a defect
|
|
@@ -235,7 +235,7 @@ Merge the PR as a squash commit and delete the head branch. Call
|
|
|
235
235
|
|
|
236
236
|
After the merge command returns, perform a conflict marker scan to confirm no
|
|
237
237
|
stray markers entered the base branch. Delegate to `detect-merges.js` — it
|
|
238
|
-
owns the scan logic and is the same script used by `/
|
|
238
|
+
owns the scan logic and is the same script used by `/deliver` Phase 5.3.
|
|
239
239
|
|
|
240
240
|
```powershell
|
|
241
241
|
git checkout [BASE_BRANCH]
|
|
@@ -7,7 +7,7 @@ description: >-
|
|
|
7
7
|
# /git-pr-all [Message] [--draft] [--no-auto-merge] [--branch <name>] [--base <branch>]
|
|
8
8
|
|
|
9
9
|
This workflow is the **ad-hoc PR ergonomics** counterpart to the heavyweight
|
|
10
|
-
`/
|
|
10
|
+
`/deliver` pipeline. Use it when you have outstanding changes that do not
|
|
11
11
|
belong to a planned Epic (typo fixes, file deletions, doc tweaks, dependency
|
|
12
12
|
bumps, operator housekeeping) and you want a single command to take them from
|
|
13
13
|
the working tree to a PR queued for auto-merge.
|
|
@@ -19,7 +19,7 @@ names. Quality gates remain enforced by the existing pre-push hook; this
|
|
|
19
19
|
workflow does not bypass them.
|
|
20
20
|
|
|
21
21
|
> **When to run**: After making changes on `main` (or any base branch) that
|
|
22
|
-
> are too small or too out-of-band for `/
|
|
22
|
+
> are too small or too out-of-band for `/plan` + `/deliver` but
|
|
23
23
|
> still need to land via the PR-required flow.
|
|
24
24
|
>
|
|
25
25
|
> **Persona**: `devops-engineer` · **Skills**:
|
|
@@ -123,7 +123,7 @@ git add -A
|
|
|
123
123
|
|
|
124
124
|
> **Why `-A` and not explicit paths?** `/git-pr-all` is operator-driven
|
|
125
125
|
> (not parallel-agent-driven), so the single-tree assumption that
|
|
126
|
-
> blocks `git add .` inside `/
|
|
126
|
+
> blocks `git add .` inside `/deliver` does not apply here. See
|
|
127
127
|
> the parallel-execution warning at the bottom of this file.
|
|
128
128
|
|
|
129
129
|
Commit:
|
|
@@ -210,7 +210,7 @@ Print a single block to the operator:
|
|
|
210
210
|
auto-merge: <enabled | draft | disabled>
|
|
211
211
|
```
|
|
212
212
|
|
|
213
|
-
Do **not** poll CI. That is the `/
|
|
213
|
+
Do **not** poll CI. That is the `/deliver` Phase 7 job and is
|
|
214
214
|
overkill for ad-hoc changes. The operator (or GitHub's email
|
|
215
215
|
notification) is the next watcher.
|
|
216
216
|
|
|
@@ -253,13 +253,13 @@ notification) is the next watcher.
|
|
|
253
253
|
- **Never** force-push from `/git-pr-all`. This workflow is for opening
|
|
254
254
|
new PRs, not for rewriting history. Force-pushes belong to
|
|
255
255
|
`/git-merge-pr` (with `--force-with-lease` after a rebase) and
|
|
256
|
-
`/
|
|
256
|
+
`/deliver` Phase 7 (with the operator's explicit context).
|
|
257
257
|
- **Always** delete the head branch on merge (Step 6's
|
|
258
258
|
`--delete-branch` flag handles this for `--auto` mode; for
|
|
259
259
|
`--no-auto-merge` PRs the operator is responsible for the cleanup).
|
|
260
260
|
- **Always** prefer `--auto --squash --delete-branch` unless the
|
|
261
261
|
operator explicitly opts out. The squash + auto-merge default gives
|
|
262
|
-
the same merge ergonomics `/
|
|
262
|
+
the same merge ergonomics `/deliver` produces, so main's commit
|
|
263
263
|
history stays uniform across both surfaces.
|
|
264
264
|
|
|
265
265
|
---
|
|
@@ -267,11 +267,14 @@ notification) is the next watcher.
|
|
|
267
267
|
## ⚠️ Parallel Story Execution
|
|
268
268
|
|
|
269
269
|
Do **not** use this workflow from inside a parallel story-execution
|
|
270
|
-
context (`/
|
|
270
|
+
context (`/deliver #<storyId>`, `/deliver` wave dispatch).
|
|
271
271
|
`git add -A` sweeps any untracked files in the working tree, which in
|
|
272
|
-
a shared working directory may belong to another agent.
|
|
273
|
-
explicit
|
|
274
|
-
`
|
|
272
|
+
a shared working directory may belong to another agent. In those
|
|
273
|
+
contexts stage explicit paths only and confirm
|
|
274
|
+
`git branch --show-current` reports the expected `story-<id>` branch
|
|
275
|
+
before committing — see
|
|
276
|
+
[`helpers/worktree-lifecycle.md`](helpers/worktree-lifecycle.md) for the
|
|
277
|
+
shared-tree hazard and the worktree-isolation model that contains it.
|
|
275
278
|
|
|
276
279
|
The same warning applies to any workflow that calls `git add .` or
|
|
277
280
|
`git add -A`; this is not unique to `/git-pr-all` (see
|
|
@@ -54,7 +54,10 @@ attempting to commit or push again.
|
|
|
54
54
|
## ⚠️ Parallel Story Execution
|
|
55
55
|
|
|
56
56
|
Do **not** use this workflow from inside a parallel story-execution context
|
|
57
|
-
(`/
|
|
57
|
+
(`/deliver #<storyId>`). `git add .` sweeps any untracked files in the
|
|
58
58
|
working tree, which in a shared working directory may belong to another agent.
|
|
59
|
-
In that context,
|
|
60
|
-
|
|
59
|
+
In that context, stage explicit paths only and confirm
|
|
60
|
+
`git branch --show-current` reports the expected `story-<id>` branch before
|
|
61
|
+
committing — see
|
|
62
|
+
[`helpers/worktree-lifecycle.md`](helpers/worktree-lifecycle.md) for the
|
|
63
|
+
shared-tree hazard and the worktree-isolation model that contains it.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Merge Conflict Resolution — Shared Procedure
|
|
2
2
|
|
|
3
3
|
Canonical, workflow-agnostic procedure for resolving merge / rebase conflicts.
|
|
4
|
-
Referenced by `git-merge-pr.md`, `
|
|
4
|
+
Referenced by `git-merge-pr.md`, `deliver-stories.md`, and `deliver-epic.md`.
|
|
5
5
|
|
|
6
6
|
## Procedure
|
|
7
7
|
|
|
@@ -26,7 +26,7 @@ The loop is **always on** (a hard cutover — there is no flag to disable it) an
|
|
|
26
26
|
**bounded** by `delivery.acceptanceEval.maxRounds` (default 2), which the
|
|
27
27
|
resolver clamps into `[1, hard ceiling]` so the cap can never be switched off or
|
|
28
28
|
run unbounded. It is **distinct from** the Epic-level acceptance-spec
|
|
29
|
-
reconciliation in `/
|
|
29
|
+
reconciliation in `/deliver` Phase 7.1 (which fires once at finalize and
|
|
30
30
|
only checks `@ac-*` Gherkin tag presence): this loop is per-Story,
|
|
31
31
|
per-criterion, mid-delivery, and evaluates the actual work product.
|
|
32
32
|
|
|
@@ -68,8 +68,9 @@ node .agents/scripts/sync-agentrc.js
|
|
|
68
68
|
The script:
|
|
69
69
|
|
|
70
70
|
1. Reads `.agentrc.json` from the working directory (`--cwd <path>` to
|
|
71
|
-
override). When the file is missing, prints
|
|
72
|
-
|
|
71
|
+
override). When the file is missing, prints an error asking the
|
|
72
|
+
operator to run `mandrel init` (new project) or
|
|
73
|
+
`node .agents/scripts/bootstrap.js` (existing project) and exits 1.
|
|
73
74
|
2. Validates the parsed config against the framework AJV schema
|
|
74
75
|
(`getAgentrcValidator()`). On any failure, prints a single-line error
|
|
75
76
|
list and exits 1 — the operator must fix the typo / missing required
|