yadflow 3.15.3 → 3.15.4
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/CHANGELOG.md +2 -0
- package/package.json +1 -1
- package/skills/yad-architecture/SKILL.md +16 -3
- package/skills/yad-backfill/SKILL.md +6 -0
- package/skills/yad-epic/SKILL.md +25 -8
- package/skills/yad-review-gate/SKILL.md +18 -6
- package/skills/yad-stories/SKILL.md +18 -4
- package/skills/yad-test-cases/SKILL.md +18 -3
- package/skills/yad-ui/SKILL.md +16 -2
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yadflow",
|
|
3
|
-
"version": "3.15.
|
|
3
|
+
"version": "3.15.4",
|
|
4
4
|
"description": "Yadflow — the gated, team, multi-repo SDLC: author → review → build with a PR-driven review gate and a zero-dependency `yad` CLI (setup, gate, commit, open-pr, ship, repo, thread, reconcile). A BMAD module + 38 yad-* skills.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "AbdelRahman Nasr",
|
|
@@ -178,9 +178,22 @@ awk '/CONTRACT-SURFACE:BEGIN/{f=1;next} /CONTRACT-SURFACE:END/{f=0} f' \
|
|
|
178
178
|
> of hash-binding.
|
|
179
179
|
|
|
180
180
|
### Step 6 — Advance the authoring step (NOT the gate)
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
**Check the mode first — the two modes have opposite instructions here.** Read `.sdlc/hub.json`:
|
|
182
|
+
**bridge mode** is `platform` set AND `bridge_enabled` (or legacy `bridge`) `true`.
|
|
183
|
+
|
|
184
|
+
**Bridge mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
|
|
185
|
+
any non-bot commit touching `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or
|
|
186
|
+
`epics/*/reviews/*.md`, `yad gate open` deliberately skips this write for the same reason, and
|
|
187
|
+
`yad gate ci --merged` performs the whole transition when the review PR merges. Making the edit here
|
|
188
|
+
fails the gate if it rides the review PR, and desynchronises the ledger CI is about to rewrite if it
|
|
189
|
+
is pushed around the gate. Commit the artifact set — **`architecture.md`, `contract.md`, and
|
|
190
|
+
`.sdlc/contract-lock.json`** (artifact-side, not ledger) — then hand off to `yad-review-gate`.
|
|
191
|
+
|
|
192
|
+
**Otherwise — file-only, or a platform with no gate-sync CI — write it.** In `state.json`: set
|
|
193
|
+
`architecture.status: "done"`, set `architecture-review.status: "in_review"`, and set
|
|
194
|
+
`currentStep: "architecture-review"`. Write `state.json`. Do **not** touch `approvals.json` — only
|
|
195
|
+
real reviewers approve, through the gate. On this branch `yad gate open` makes the same edit, so it
|
|
196
|
+
is a no-op once the gate has run.
|
|
184
197
|
|
|
185
198
|
### Step 7 — Stop at the gate (do NOT advance)
|
|
186
199
|
Report: the paths to `architecture.md`, `contract.md`, and `contract-lock.json`; the contract hash;
|
|
@@ -99,6 +99,12 @@ thread off it, `promote` is what makes that anchor real — run it once the feat
|
|
|
99
99
|
"wake" the state chain — set `currentStep: "epic"`, `epic` step `status: "in_progress"` — then run
|
|
100
100
|
`yad-epic` → `yad-architecture` → … the normal way. This re-locks a contract that subsequent thread
|
|
101
101
|
changes will inherit.
|
|
102
|
+
- **Bridge mode — promote is not wired.** The `state.json` edits above mutate an epic whose ledger is
|
|
103
|
+
already on the base ref, so the `#162` seed exemption does not apply and `ledger-guard` rejects the
|
|
104
|
+
commit; unlike the authoring steps there is no `yad backfill` CLI and no `gate ci` path that performs
|
|
105
|
+
the promotion instead. On a bridge hub, STOP and report this — the promotion needs the gate bot (or a
|
|
106
|
+
maintainer landing it out of band). Only the `epic.md` half is safe to commit. Tracked as a gap; do
|
|
107
|
+
**not** push the ledger edit around the guard.
|
|
102
108
|
- Never auto-advances; a human confirms the promotion.
|
|
103
109
|
|
|
104
110
|
### Step 7 — Stop (no auto-advance)
|
package/skills/yad-epic/SKILL.md
CHANGED
|
@@ -169,14 +169,31 @@ Notes:
|
|
|
169
169
|
|
|
170
170
|
### Step 5b — Advance the authoring step — analysis-ran only
|
|
171
171
|
*(Only when analysis ran — `state.json` already exists from `yad-analysis`.)*
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
172
|
+
**Check the mode first — the two modes have opposite instructions here.** Read `.sdlc/hub.json`:
|
|
173
|
+
**bridge mode** is `platform` set AND `bridge_enabled` (or legacy `bridge`) `true`.
|
|
174
|
+
|
|
175
|
+
**Bridge mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
|
|
176
|
+
any non-bot commit touching `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or
|
|
177
|
+
`epics/*/reviews/*.md`, `yad gate open` deliberately skips this write for the same reason, and
|
|
178
|
+
`yad gate ci --merged` performs the whole transition when the review PR merges. Making the edit here
|
|
179
|
+
fails the gate if it rides the review PR, and desynchronises the ledger CI is about to rewrite if it
|
|
180
|
+
is pushed around the gate. Commit **`epic.md` only** — nothing else under `.sdlc/` — then hand off
|
|
181
|
+
to `yad-review-gate`.
|
|
182
|
+
|
|
183
|
+
> **This is not the Step 5 seed exemption.** `ledger-guard` exempts a *brand-new* epic's ledger
|
|
184
|
+
> (creation, not mutation, #162). On this path `state.json` already exists from `yad-analysis` and
|
|
185
|
+
> reached the base ref through the analysis review — so the guard is absolute here.
|
|
186
|
+
|
|
187
|
+
**Otherwise — file-only, or a platform with no gate-sync CI — write it.** In `state.json`: set
|
|
188
|
+
`epic.status: "done"`, set `epic-review.status: "in_review"`, and set `currentStep: "epic-review"`.
|
|
189
|
+
Write `state.json`. Do **not** re-seed and do **not** touch `approvals.json` — only real reviewers
|
|
190
|
+
approve, through the gate.
|
|
191
|
+
|
|
192
|
+
> **File-only branch only.** Since 3.11 the CLI closes the authoring step itself whenever its review
|
|
193
|
+
> gate opens or advances (`yad gate open` / `sync`), so this edit is a no-op when the gate has already
|
|
194
|
+
> run. It keeps `state.json` truthful before the gate opens, but it is no longer load-bearing: an epic
|
|
195
|
+
> whose author step is left `in_progress` used to strand forever (`YAD-STATE-005`). In bridge mode
|
|
196
|
+
> `gate open` writes nothing and local `gate sync` is advisory — `gate ci` closes the step at merge.
|
|
180
197
|
|
|
181
198
|
### Step 6 — Stop at the gate (do NOT advance)
|
|
182
199
|
Report: epic ID, the path to `epic.md`, and that the next action is **review** via
|
|
@@ -54,16 +54,28 @@ touched `repos` — never a forked or copied gate.
|
|
|
54
54
|
|
|
55
55
|
### Step 2 — Dispatch on `action`
|
|
56
56
|
|
|
57
|
+
> **Check the mode first — in bridge mode you write nothing to the ledger.** Read `.sdlc/hub.json`:
|
|
58
|
+
> **bridge mode** is `platform` set AND `bridge_enabled` (or legacy `bridge`) `true`. Under the bridge
|
|
59
|
+
> the ledger is CI-owned — `ledger-guard` rejects any non-bot commit touching
|
|
60
|
+
> `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or `epics/*/reviews/*.md`, local `yad gate
|
|
61
|
+
> sync` is advisory, and `yad gate ci --merged` writes the whole transition when the review PR merges.
|
|
62
|
+
> So every "set / append / write" instruction below is the **file-only, or a platform with no
|
|
63
|
+
> gate-sync CI** path. In bridge mode do the human-facing half — present the artifact, route the
|
|
64
|
+
> required reviewers, help the owner address comments — and let the platform PR/MR carry the review
|
|
65
|
+
> state; the approvals, comments, review records and the advance all land through CI at merge.
|
|
66
|
+
|
|
57
67
|
**`open`** — Present the artifact for review. Summarise what changed, list the required reviewers per
|
|
58
68
|
the rule above, and tell reviewers how to comment/approve. Set the step `status` to `in_review` and
|
|
59
69
|
`currentStep` to this step in `state.json` if not already. Do not advance.
|
|
60
70
|
|
|
61
|
-
If `.sdlc/hub.json` has a non-null `platform
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
(
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
If `.sdlc/hub.json` has a non-null `platform` and `bridge_enabled: true` (or legacy `bridge: true` —
|
|
72
|
+
`.sdlc/hub.json` is the only source the CLI reads, see `isBridge` in `cli/gate.mjs`), and `gh`/`glab`
|
|
73
|
+
is authenticated, **also open a review PR/MR on the hub** by invoking `yad-hub-bridge action: open`
|
|
74
|
+
(epic + artifact), and report the URL + required reviewers. **CI records the PR** in
|
|
75
|
+
`epics/<epic>/.sdlc/hub-prs.json` (`{step, artifact, platform, number, url, branch, lastSyncedAt}`) —
|
|
76
|
+
write that file yourself only on the file-only path. Otherwise (no platform / disabled / no CLI)
|
|
77
|
+
proceed **file-only** exactly as before — no error. Opening the PR records no approvals and never
|
|
78
|
+
advances.
|
|
67
79
|
|
|
68
80
|
**`comment`** — Capture reviewer feedback. Append/create a review file
|
|
69
81
|
`reviews/<artifact-base>--<YYYY-MM-DD>--comments.md` with a heading per reviewer:
|
|
@@ -101,12 +101,26 @@ As a <role>, I want <capability>, so that <outcome>.
|
|
|
101
101
|
`repos` is the field the later build phase reads to know where to scaffold specs — set it precisely.
|
|
102
102
|
|
|
103
103
|
### Step 6 — Advance the authoring step (NOT the gate)
|
|
104
|
-
|
|
104
|
+
**Check the mode first — the two modes have opposite instructions here.** Read `.sdlc/hub.json`:
|
|
105
|
+
**bridge mode** is `platform` set AND `bridge_enabled` (or legacy `bridge`) `true`.
|
|
106
|
+
|
|
107
|
+
**Bridge mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
|
|
108
|
+
any non-bot commit touching `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or
|
|
109
|
+
`epics/*/reviews/*.md`, `yad gate open` deliberately skips this write for the same reason, and
|
|
110
|
+
`yad gate ci --merged` performs the whole transition when the review PR merges. Making the edit here
|
|
111
|
+
fails the gate if it rides the review PR, and desynchronises the ledger CI is about to rewrite if it
|
|
112
|
+
is pushed around the gate. Commit **the story files under `stories/` only** — nothing else
|
|
113
|
+
under `.sdlc/` — then hand off to `yad-review-gate`.
|
|
114
|
+
|
|
115
|
+
**Otherwise — file-only, or a platform with no gate-sync CI — write it.** In `state.json`: set
|
|
116
|
+
`stories.status: "done"`, set `stories-review.status: "in_review"`, and set
|
|
105
117
|
`currentStep: "stories-review"`. Write `state.json`. Do **not** touch `approvals.json`.
|
|
106
118
|
|
|
107
|
-
> Since 3.11 the CLI also closes the authoring step when its review gate
|
|
108
|
-
> edit is a no-op once `yad gate open` has run. A `stories` step left
|
|
109
|
-
> `stories-review` used to block the parallel `test-cases` track
|
|
119
|
+
> **File-only branch only.** Since 3.11 the CLI also closes the authoring step when its review gate
|
|
120
|
+
> opens or advances, so this edit is a no-op once `yad gate open` has run. A `stories` step left
|
|
121
|
+
> `in_progress` behind a passed `stories-review` used to block the parallel `test-cases` track
|
|
122
|
+
> (`YAD-STATE-005`). In bridge mode `gate open` writes nothing and local `gate sync` is advisory —
|
|
123
|
+
> `gate ci` closes the step at merge.
|
|
110
124
|
|
|
111
125
|
### Step 7 — Stop at the gate (do NOT advance)
|
|
112
126
|
Report: the story IDs created, the repos each touches, and that the next action is **review** via
|
|
@@ -162,9 +162,24 @@ Keep the `## Automation (<tool>)` section of `test-cases.md` in step with this f
|
|
|
162
162
|
degraded (`testing: none`), do **not** write `test-links.json`.
|
|
163
163
|
|
|
164
164
|
### Step 5 — Advance the authoring step (NOT the gate)
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
**Check the mode first — the two modes have opposite instructions here.** Read `.sdlc/hub.json`:
|
|
166
|
+
**bridge mode** is `platform` set AND `bridge_enabled` (or legacy `bridge`) `true`.
|
|
167
|
+
|
|
168
|
+
**Bridge mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
|
|
169
|
+
any non-bot commit touching `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or
|
|
170
|
+
`epics/*/reviews/*.md`, `yad gate open` deliberately skips this write for the same reason, and
|
|
171
|
+
`yad gate ci --merged` performs the whole transition when the review PR merges. Making the edit here
|
|
172
|
+
fails the gate if it rides the review PR, and desynchronises the ledger CI is about to rewrite if it
|
|
173
|
+
is pushed around the gate. Commit the artifact set — **`test-cases.md` and, when a testing
|
|
174
|
+
tool was used, `.sdlc/test-links.json`** (artifact-side, not ledger; generated tests live in their
|
|
175
|
+
own code repo, not here) — then hand off to `yad-review-gate`.
|
|
176
|
+
|
|
177
|
+
**Otherwise — file-only, or a platform with no gate-sync CI — write it.** In `state.json`: set
|
|
178
|
+
`test-cases.status: "done"` and set `test-cases-review.status: "in_review"`. **Leave `currentStep` at
|
|
179
|
+
`ready-for-build`** — this is the parallel track; moving `currentStep` would pull it back from the
|
|
180
|
+
build half. Write `state.json`. Do **not** touch `approvals.json`. On this branch `yad gate open`
|
|
181
|
+
makes the same edit — `markInReview` leaves `currentStep` alone once it is `ready-for-build`
|
|
182
|
+
(`cli/epic-state.mjs`) — so it is a no-op once the gate has run.
|
|
168
183
|
|
|
169
184
|
### Step 6 — Stop at the gate (do NOT advance)
|
|
170
185
|
Report: the path to `test-cases.md`, the connected testing tool and what it produced (e.g. "Playwright —
|
package/skills/yad-ui/SKILL.md
CHANGED
|
@@ -171,8 +171,22 @@ Keep the `## Design (<tool>)` section of `ui-design.md` in step with this file.
|
|
|
171
171
|
(`design: none`), do **not** write `design-links.json`.
|
|
172
172
|
|
|
173
173
|
### Step 5 — Advance the authoring step (NOT the gate)
|
|
174
|
-
|
|
175
|
-
`
|
|
174
|
+
**Check the mode first — the two modes have opposite instructions here.** Read `.sdlc/hub.json`:
|
|
175
|
+
**bridge mode** is `platform` set AND `bridge_enabled` (or legacy `bridge`) `true`.
|
|
176
|
+
|
|
177
|
+
**Bridge mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
|
|
178
|
+
any non-bot commit touching `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or
|
|
179
|
+
`epics/*/reviews/*.md`, `yad gate open` deliberately skips this write for the same reason, and
|
|
180
|
+
`yad gate ci --merged` performs the whole transition when the review PR merges. Making the edit here
|
|
181
|
+
fails the gate if it rides the review PR, and desynchronises the ledger CI is about to rewrite if it
|
|
182
|
+
is pushed around the gate. Commit the artifact set — **`ui-design.md`, `DESIGN.md`, and, when a
|
|
183
|
+
design tool was used, `.sdlc/design-links.json`** (artifact-side, not ledger) — then hand off to
|
|
184
|
+
`yad-review-gate`.
|
|
185
|
+
|
|
186
|
+
**Otherwise — file-only, or a platform with no gate-sync CI — write it.** In `state.json`: set
|
|
187
|
+
`ui-design.status: "done"`, set `ui-design-review.status: "in_review"`, and set
|
|
188
|
+
`currentStep: "ui-design-review"`. Write `state.json`. Do **not** touch `approvals.json`. On this
|
|
189
|
+
branch `yad gate open` makes the same edit, so it is a no-op once the gate has run.
|
|
176
190
|
|
|
177
191
|
### Step 6 — Stop at the gate (do NOT advance)
|
|
178
192
|
Report: the paths to `ui-design.md` and `DESIGN.md`, whether Impeccable was used, the connected design
|