mandrel 1.71.0 → 1.73.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/docs/configuration.md +13 -0
- package/.agents/instructions.md +14 -6
- package/.agents/personas/devops-engineer.md +4 -2
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +430 -0
- package/.agents/scripts/lib/bootstrap/manifest.js +8 -0
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +36 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +35 -5
- package/.agents/scripts/lib/story-body/story-body.js +5 -2
- package/.agents/scripts/lib/story-plan.js +41 -4
- package/.agents/scripts/lint-issue-body.js +261 -0
- package/.agents/skills/core/documentation-and-adrs/SKILL.md +38 -2
- package/.agents/templates/docs/architecture.md +4 -1
- package/.agents/templates/docs/decisions/_template.md +35 -0
- package/.agents/templates/docs/decisions.index.md +49 -0
- package/.agents/templates/docs/decisions.md +11 -0
- package/.agents/workflows/helpers/plan-epic.md +51 -8
- package/.agents/workflows/helpers/plan-story.md +19 -3
- package/.agents/workflows/plan.md +71 -3
- package/docs/CHANGELOG.md +20 -0
- package/package.json +1 -1
|
@@ -44,6 +44,7 @@ forwards them to the active path helper:
|
|
|
44
44
|
| `--force` | Epic | Close + recreate an existing ticket tree on re-plan. |
|
|
45
45
|
| `--force-review` | Epic | Force the operator review gate even when risk routing would skip it. |
|
|
46
46
|
| `--allow-over-budget` | Epic | Permit a decomposition that exceeds the framework `maxTickets` reviewability budget. |
|
|
47
|
+
| `--yes` | both | **Non-interactive / headless mode.** Deterministically auto-proceeds the two `/plan` HITL STOP gates — the ideation one-pager / scope-triage confirm (gate #1) and the Phase-7 Epic operator review gate (gate #2) — without waiting for operator input. Parallel to [`/deliver --yes`](deliver.md). Composes with `--allow-over-budget` and with the risk-routed Phase-7 skip (it forces a proceed where those do not apply). Default (flag absent) behavior is unchanged: both gates still STOP for interactive use. |
|
|
47
48
|
| `--steal` | Epic | Forcibly transfer a foreign Epic-lease. |
|
|
48
49
|
| `--dry-run` | both | Author + validate without GitHub writes. |
|
|
49
50
|
| `--body <path>` | Story | Pre-authored Story body file; validate (and create, unless `--dry-run`) without re-authoring. |
|
|
@@ -58,6 +59,71 @@ commands (story-sized Epic ↘ Story; epic-sized Story draft ↗ Epic) is now
|
|
|
58
59
|
an **internal branch switch** inside this router: same skills, same
|
|
59
60
|
helpers, no command hop and no operator re-entry.
|
|
60
61
|
|
|
62
|
+
### Headless / non-interactive mode (`--yes`)
|
|
63
|
+
|
|
64
|
+
`--yes` is the headless escape hatch for an unattended driver (CI, a
|
|
65
|
+
benchmark harness, or any `claude -p` run with no human at the keyboard). It
|
|
66
|
+
is the `/plan`-side parallel of [`/deliver --yes`](deliver.md), which
|
|
67
|
+
suppresses that command's segment-plan confirmation. `/plan` has exactly
|
|
68
|
+
**two** HITL STOP gates, and `--yes` deterministically auto-proceeds **both**
|
|
69
|
+
without waiting for operator input:
|
|
70
|
+
|
|
71
|
+
1. **Gate #1 — the ideation one-pager / scope-triage / clarity confirm.**
|
|
72
|
+
This single conceptual gate has three faces depending on the entry form,
|
|
73
|
+
and `--yes` auto-proceeds **all three**:
|
|
74
|
+
- On the `--idea` Epic path,
|
|
75
|
+
[`helpers/plan-epic.md`](helpers/plan-epic.md) Phase 1 (folding in the
|
|
76
|
+
Phase 1.5 scope-triage verdict) STOPs to confirm the sharpened one-pager.
|
|
77
|
+
- On the `--idea` Story path,
|
|
78
|
+
[`helpers/plan-story.md`](helpers/plan-story.md) Phase 2 STOPs to
|
|
79
|
+
confirm the drafted Story body.
|
|
80
|
+
- On the existing-Epic (`/plan <epicId>`) path, the Phase 6 Epic Clarity
|
|
81
|
+
Gate's **needs-refinement** branch STOPs to confirm the refined-body
|
|
82
|
+
diff before persisting it.
|
|
83
|
+
|
|
84
|
+
Under `--yes` each auto-proceeds: the one-pager / draft / refined-body
|
|
85
|
+
confirm resolves as **approved**, and a `story` / `borderline` triage
|
|
86
|
+
verdict resolves to its **recommended** branch (the one the gate prose
|
|
87
|
+
marks "Recommended") rather than prompting the three-way choice. The
|
|
88
|
+
verdict / clarity scoring is still recorded in chat (one line); only the
|
|
89
|
+
*wait* is suppressed. The clarity-gate *scoring* itself (deterministic
|
|
90
|
+
section-presence in Phase 6 step 1) still runs — `--yes` suppresses only
|
|
91
|
+
the operator confirm of the proposed refinement.
|
|
92
|
+
2. **Gate #2 — the Phase-7 Epic operator review gate.** When risk routing
|
|
93
|
+
forces a review (`planningRisk.requiresReview === true`, or the operator
|
|
94
|
+
also passed `--force-review`),
|
|
95
|
+
[`helpers/plan-epic.md`](helpers/plan-epic.md) Phase 7 STOPs for operator
|
|
96
|
+
approval of the PRD / Tech Spec / Acceptance Spec before decomposition.
|
|
97
|
+
Under `--yes` this review auto-proceeds straight to Phase 8 — the three
|
|
98
|
+
context tickets stay **open** through delivery exactly as on the low-risk
|
|
99
|
+
auto-proceed path.
|
|
100
|
+
|
|
101
|
+
**Composition.** `--yes` is orthogonal to the other planning flags and
|
|
102
|
+
composes cleanly:
|
|
103
|
+
|
|
104
|
+
- With **`--allow-over-budget`**: `--yes` suppresses the gate *waits* while
|
|
105
|
+
`--allow-over-budget` still governs the `maxTickets` over-budget persist —
|
|
106
|
+
passing `--yes` alone does **not** waive the budget gate.
|
|
107
|
+
- With the **risk-routed Phase-7 skip**: when risk routing already skips the
|
|
108
|
+
Phase-7 review (low-risk, no `--force-review`), `--yes` is a no-op for that
|
|
109
|
+
gate — it only *forces a proceed where the gate would otherwise STOP*, it
|
|
110
|
+
never *adds* a stop or relaxes any non-HITL validator.
|
|
111
|
+
|
|
112
|
+
**`--yes` suppresses only the HITL operator *waits* above.** It does **not**
|
|
113
|
+
relax any deterministic gate — the Phase 6 Epic Clarity Gate **scoring**
|
|
114
|
+
(section-presence), the Phase 7.5 Tech Spec Section Gate, the file-assumption
|
|
115
|
+
/ DAG validators, the Phase 10 readiness healthcheck, and the `agent::blocked`
|
|
116
|
+
runtime pause all behave exactly as without the flag. A `--yes` run that hits
|
|
117
|
+
one of those still fails closed; the flag is an operator-input suppressor, not
|
|
118
|
+
a validation override. The other operator-input *waits* in the pipeline also
|
|
119
|
+
auto-proceed under `--yes` — the non-blocking Phase 2 duplicate-search pause
|
|
120
|
+
(distinct-Epic confirmed), the Phase 6 clarity refinement-diff confirm
|
|
121
|
+
(refined body approved), and the advisory Phase 8.3/8.4/8.5
|
|
122
|
+
consolidation/critic diffs (consolidated/critic output applied) — since they
|
|
123
|
+
are operator-input waits, not validators. The two *named* HITL STOP gates the
|
|
124
|
+
Story tracks (gate #1, gate #2) are the load-bearing pair; these additional
|
|
125
|
+
waits are auto-proceeded for the same headless reason.
|
|
126
|
+
|
|
61
127
|
## First-run preflight
|
|
62
128
|
|
|
63
129
|
Before routing to a path helper, run a **first-run preflight** to catch
|
|
@@ -109,9 +175,11 @@ stubbed docs, or an unready doctor verdict).
|
|
|
109
175
|
[`core/scope-triage`](../skills/core/scope-triage/SKILL.md) skill on the
|
|
110
176
|
seed. Record the verdict in chat (one line).
|
|
111
177
|
4. **Delegate.** Read the selected path helper **in full** and execute it
|
|
112
|
-
from its entry phase, forwarding the absorbed flags
|
|
113
|
-
numbering, HITL gates, and scripts are unchanged — this
|
|
114
|
-
phase content.
|
|
178
|
+
from its entry phase, forwarding the absorbed flags (including `--yes`).
|
|
179
|
+
The helper's phase numbering, HITL gates, and scripts are unchanged — this
|
|
180
|
+
router adds no phase content. When `--yes` is present, the two HITL STOP
|
|
181
|
+
gates auto-proceed per [Headless / non-interactive mode](#headless--non-interactive-mode---yes)
|
|
182
|
+
above; every deterministic gate still runs.
|
|
115
183
|
5. **Internal returns.** When a path helper would historically have handed
|
|
116
184
|
off to the other planning command, switch helpers in-place and continue;
|
|
117
185
|
surface the switch to the operator as a one-line note.
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.73.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.72.0...mandrel-v1.73.0) (2026-06-17)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
* generate GitHub issue forms from the Story/Epic body SSOT (human↔agent ticket consistency) ([#4227](https://github.com/dsj1984/mandrel/issues/4227)) ([#4233](https://github.com/dsj1984/mandrel/issues/4233)) ([d42b0cb](https://github.com/dsj1984/mandrel/commit/d42b0cb6122f46d8528d4bbb3793f27be2854bc1))
|
|
11
|
+
* **plan:** robust tech-stack hydrator resolution (refs [#4228](https://github.com/dsj1984/mandrel/issues/4228)) ([#4230](https://github.com/dsj1984/mandrel/issues/4230)) ([4f1ad3c](https://github.com/dsj1984/mandrel/commit/4f1ad3c13b9a50f4e436d63282c7f6c2f461ab0e))
|
|
12
|
+
|
|
13
|
+
## [1.72.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.71.0...mandrel-v1.72.0) (2026-06-17)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
* **plan:** add a headless/non-interactive flag to suppress the ideation one-pager + Phase-7 review gate ([#4223](https://github.com/dsj1984/mandrel/issues/4223)) ([#4226](https://github.com/dsj1984/mandrel/issues/4226)) ([9ffa355](https://github.com/dsj1984/mandrel/commit/9ffa35543f897199c096ad45a568de39b0424ba7))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
* **deliver:** fail open on unparseable code-review severity bullets in auto-merge gate (refs [#4222](https://github.com/dsj1984/mandrel/issues/4222)) ([#4224](https://github.com/dsj1984/mandrel/issues/4224)) ([ca949bd](https://github.com/dsj1984/mandrel/commit/ca949bd7d98eea440571db6636f8be2f2128c3b9))
|
|
24
|
+
|
|
5
25
|
## [1.71.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.70.0...mandrel-v1.71.0) (2026-06-16)
|
|
6
26
|
|
|
7
27
|
|
package/package.json
CHANGED