yadflow 3.18.0 → 3.19.0-next.2

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +11 -11
  3. package/bin/yad.mjs +8 -8
  4. package/cli/artifact-status.mjs +4 -4
  5. package/cli/checkpoint.mjs +25 -25
  6. package/cli/commit.mjs +1 -1
  7. package/cli/companion.mjs +2 -2
  8. package/cli/doctor.mjs +10 -10
  9. package/cli/epic-state.mjs +29 -29
  10. package/cli/errors.mjs +1 -1
  11. package/cli/gate.mjs +32 -33
  12. package/cli/hook.mjs +4 -4
  13. package/cli/hubcommit.mjs +1 -1
  14. package/cli/ledger.mjs +3 -3
  15. package/cli/lib.mjs +23 -9
  16. package/cli/manifest.mjs +42 -21
  17. package/cli/migrate.mjs +54 -12
  18. package/cli/next.mjs +5 -5
  19. package/cli/openpr.mjs +8 -8
  20. package/cli/plan.mjs +28 -9
  21. package/cli/platform.mjs +1 -1
  22. package/cli/report.mjs +1 -1
  23. package/cli/review.mjs +5 -5
  24. package/cli/setup.mjs +22 -10
  25. package/cli/ship.mjs +1 -1
  26. package/cli/skip.mjs +1 -1
  27. package/cli/thread.mjs +1 -1
  28. package/cli/tidy.mjs +2 -2
  29. package/cli/update-commit.mjs +1 -1
  30. package/package.json +1 -1
  31. package/skills/sdlc/config.yaml +30 -30
  32. package/skills/sdlc/module-help.csv +21 -21
  33. package/skills/yad-analysis/SKILL.md +10 -10
  34. package/skills/yad-architecture/SKILL.md +10 -10
  35. package/skills/yad-architecture/references/contract-format.md +2 -3
  36. package/skills/yad-backfill/SKILL.md +5 -5
  37. package/skills/yad-change/SKILL.md +13 -13
  38. package/skills/yad-change/references/triage.md +2 -3
  39. package/skills/yad-checks/SKILL.md +34 -16
  40. package/skills/yad-checks/references/check-gates.md +63 -19
  41. package/skills/yad-checks/templates/checks/build-test-lint.sh +25 -7
  42. package/skills/yad-checks/templates/checks/epic-open.sh +1 -1
  43. package/skills/yad-checks/templates/checks/install-deps.sh +46 -0
  44. package/skills/yad-checks/templates/checks/ledger-guard.sh +41 -12
  45. package/skills/yad-checks/templates/checks/package-manager.sh +140 -0
  46. package/skills/yad-checks/templates/checks/reconcile-debt-check.sh +3 -3
  47. package/skills/yad-checks/templates/github/yad-checks.yml +24 -3
  48. package/skills/yad-checks/templates/github/yad-hub-checks.yml +2 -2
  49. package/skills/yad-checks/templates/github/yad-verified-commits.yml +1 -1
  50. package/skills/yad-checks/templates/gitlab/.gitlab-ci.yml +7 -1
  51. package/skills/yad-checks/templates/gitlab/yad-checks.gitlab-ci.yml +12 -3
  52. package/skills/yad-checks/templates/gitlab/yad-hub-checks.gitlab-ci.yml +2 -2
  53. package/skills/yad-checks/templates/gitlab/yad-verified-commits.gitlab-ci.yml +1 -1
  54. package/skills/yad-checks/templates/hooks/ledger-guard.sh +1 -1
  55. package/skills/yad-commit/SKILL.md +2 -2
  56. package/skills/yad-connect-design/SKILL.md +1 -1
  57. package/skills/yad-connect-docs/SKILL.md +1 -1
  58. package/skills/yad-connect-repos/SKILL.md +32 -15
  59. package/skills/yad-connect-repos/references/code-context.md +2 -2
  60. package/skills/yad-connect-repos/references/hub-config.md +25 -11
  61. package/skills/yad-connect-repos/references/repos-registry.md +3 -3
  62. package/skills/yad-connect-testing/SKILL.md +1 -1
  63. package/skills/yad-defects/SKILL.md +1 -1
  64. package/skills/yad-discovery/SKILL.md +6 -6
  65. package/skills/yad-discovery/references/discovery-schema.md +1 -1
  66. package/skills/yad-docs/SKILL.md +3 -3
  67. package/skills/yad-docs/templates/app/package-lock.json +65 -51
  68. package/skills/yad-docs/templates/app/package.json +1 -1
  69. package/skills/yad-docs-overview/SKILL.md +3 -3
  70. package/skills/yad-docs-overview/references/pipeline-model.md +17 -11
  71. package/skills/yad-engineer-review/SKILL.md +9 -9
  72. package/skills/yad-engineer-review/references/ship-and-record.md +8 -8
  73. package/skills/yad-epic/SKILL.md +15 -15
  74. package/skills/yad-epic/references/state-schema.md +30 -30
  75. package/skills/yad-hub-bridge/SKILL.md +14 -14
  76. package/skills/yad-hub-bridge/references/bridge.md +17 -17
  77. package/skills/yad-hub-bridge/references/login-roster.md +3 -3
  78. package/skills/yad-hub-bridge/templates/checks/hub-route.sh +1 -1
  79. package/skills/yad-hub-bridge/templates/gitlab/yad-gate-sync.gitlab-ci.yml +1 -1
  80. package/skills/yad-implement/SKILL.md +3 -3
  81. package/skills/yad-open-pr/SKILL.md +4 -4
  82. package/skills/yad-pair-review/SKILL.md +12 -12
  83. package/skills/yad-pair-review/references/session-state.md +3 -3
  84. package/skills/yad-pr-template/SKILL.md +4 -4
  85. package/skills/yad-pr-template/references/risk-routing.md +1 -1
  86. package/skills/yad-pr-template/templates/checks/pr-template.sh +18 -10
  87. package/skills/yad-pr-template/templates/checks/pr-title.sh +7 -7
  88. package/skills/yad-pr-template/templates/hub/github/pull_request_template.md +1 -1
  89. package/skills/yad-pr-template/templates/hub/gitlab/merge_request_templates/Default.md +1 -1
  90. package/skills/yad-reconcile/SKILL.md +1 -1
  91. package/skills/yad-report/SKILL.md +1 -1
  92. package/skills/yad-review-companion/SKILL.md +7 -7
  93. package/skills/yad-review-gate/SKILL.md +18 -18
  94. package/skills/yad-review-gate/references/gating.md +3 -3
  95. package/skills/yad-run/SKILL.md +10 -10
  96. package/skills/yad-run/references/run-loop.md +8 -8
  97. package/skills/yad-ship/SKILL.md +4 -4
  98. package/skills/yad-spec/SKILL.md +10 -11
  99. package/skills/yad-status/SKILL.md +13 -13
  100. package/skills/yad-stories/SKILL.md +12 -12
  101. package/skills/yad-stories/references/story-schema.md +3 -3
  102. package/skills/yad-stub/SKILL.md +3 -3
  103. package/skills/yad-sync-repos/SKILL.md +1 -1
  104. package/skills/yad-test-cases/SKILL.md +12 -13
  105. package/skills/yad-test-cases/references/test-cases-schema.md +1 -1
  106. package/skills/yad-ui/SKILL.md +10 -10
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: yad-ship
3
- description: 'Build-half helper of the gated SDLC — commit AND open the task PR/MR in one step. A thin orchestration over yad-commit then yad-open-pr: commit the staged atomic change by the conventions (Conventional-Commits subject, Task → Contract-Change trailers, an OPTIONAL Co-Authored-By footer that is OFF by default and added only when --ai <id> is explicitly passed, ≤3-file atomic guard), then push the branch and open the PR/MR from the committed template with the roster auto-assigned. The PR step runs ONLY if the commit lands (a failed commit, tripped guard, or --dry-run stops before pushing). Drives the `yad ship` CLI; never merges. Use when the user says "ship this task", "commit and open the PR", or "commit and raise the MR". (For the engineer review + merge, use yad-engineer-review.)'
3
+ description: 'Build helper of the gated SDLC — commit AND open the task PR/MR in one step. A thin orchestration over yad-commit then yad-open-pr: commit the staged atomic change by the conventions (Conventional-Commits subject, Task → Contract-Change trailers, an OPTIONAL Co-Authored-By footer that is OFF by default and added only when --ai <id> is explicitly passed, ≤3-file atomic guard), then push the branch and open the PR/MR from the committed template with the roster auto-assigned. The PR step runs ONLY if the commit lands (a failed commit, tripped guard, or --dry-run stops before pushing). Drives the `yad ship` CLI; never merges. Use when the user says "ship this task", "commit and open the PR", or "commit and raise the MR". (For the engineer review + merge, use yad-engineer-review.)'
4
4
  ---
5
5
 
6
- # SDLC — Commit + Open PR/MR (build-half helper)
6
+ # SDLC — Commit + Open PR/MR (Build helper)
7
7
 
8
- **Goal:** Do the two routine build-half hand-actions for ONE atomic task in a single step — **commit by
8
+ **Goal:** Do the two routine Build hand-actions for ONE atomic task in a single step — **commit by
9
9
  convention, then open the task PR/MR** — so an implemented diff becomes a reviewable PR/MR without two
10
10
  separate invocations. It is a thin wrapper over `yad-commit` and `yad-open-pr`; it holds no logic of
11
11
  its own and **never merges**. The engineer review + merge are Step E (`yad-engineer-review`).
@@ -23,7 +23,7 @@ its own and **never merges**. The engineer review + merge are Step E (`yad-engin
23
23
  - **Order matters:** the PR/MR is opened **only if the commit lands**. A failed commit, a tripped
24
24
  atomic guard, or `--dry-run` stops the step before anything is pushed.
25
25
  - **Stage-aware on the product hub** (via `yad-open-pr`): on a `review/EP-*` branch `ship` opens the
26
- front-half **artifact-review** PR (delegating to `yad gate open` — `--title` is ignored); on any
26
+ Shape **artifact-review** PR (delegating to `yad gate open` — `--title` is ignored); on any
27
27
  other hub branch it opens the **code-task** PR from the bundled code-task template. In a code repo
28
28
  it is unchanged.
29
29
 
@@ -1,17 +1,17 @@
1
1
  ---
2
2
  name: yad-spec
3
- description: 'Build-half Step A of the gated SDLC. For one ready-for-build story and one of its repos, run the heavy Spec Kit ceremony ONCE (specify → clarify → plan → analyze → checklist → tasks) inside that code repo, writing specs/<story-id>/ in Spec Kit''s own layout. Drives /speckit.* as harness slash-commands when installed; authors the same files by hand and records speckit: not-installed when absent. References the locked contract — never re-invents the surface. Writes link.md back to the story. Never auto-advances. Use when the user says "spec story <id> in <repo>" or after a story is ready-for-build.'
3
+ description: 'Build Step A of the gated SDLC. For one ready-for-build story and one of its repos, run the heavy Spec Kit ceremony ONCE (specify → clarify → plan → analyze → checklist → tasks) inside that code repo, writing specs/<story-id>/ in Spec Kit''s own layout. Drives /speckit.* as harness slash-commands when installed; authors the same files by hand and records speckit: not-installed when absent. References the locked contract — never re-invents the surface. Writes link.md back to the story. Never auto-advances. Use when the user says "spec story <id> in <repo>" or after a story is ready-for-build.'
4
4
  ---
5
5
 
6
- # SDLC — Author Spec (build-half Step A)
6
+ # SDLC — Author Spec (Build Step A)
7
7
 
8
8
  **Goal:** Turn ONE `ready-for-build` story into a per-repo Spec Kit spec/plan/tasks inside that
9
9
  story's code repo. The heavy spec ceremony runs **once per story per repo**; the light
10
10
  tasks → implement loop is **Step B** (`yad-implement`). This step **never re-locks the contract** —
11
11
  the cross-repo surface is owned upstream by the architecture gate (build plan §A, Cross-cutting
12
- "Heavy spec once per story, light loop per task"). It does not advance the front-half state machine;
12
+ "Heavy spec once per story, light loop per task"). It does not advance the Shape state machine;
13
13
  when driven by the orchestrator (`yad-run`, Phase 4) it records a `spec`/`tasks` trust signal
14
- (Step 8) — but it never auto-advances a contract change or a front state.
14
+ (Step 8) — but it never auto-advances a contract change or a Shape step.
15
15
 
16
16
  Spec Kit is driven as **harness slash-commands** (`/speckit.*`), not a subprocess CLI (Phase 0
17
17
  Deviation 3). When Spec Kit is not installed, the same files are hand-authored in Spec Kit's exact
@@ -43,11 +43,10 @@ is the same graceful-degradation pattern `yad-ui` uses for Impeccable.
43
43
 
44
44
  ### Step 1 — Resolve the story and check readiness
45
45
  Read `{project-root}/epics/<epic>/.sdlc/state.json`. Proceed only when
46
- `currentStep == "ready-for-build"` (the gating front half — through the **stories** gate — is `done`).
47
- The **`test-cases` track may still be `in_progress`**: it is parallel and non-blocking, so the build
48
- half runs alongside it — its status does not affect readiness here. Read the story file
46
+ `currentStep == "ready-for-build"` (the gating Shape — through the **stories** gate — is `done`).
47
+ The **`test-cases` track may still be `in_progress`**: it is parallel and non-blocking, so Build runs alongside it — its status does not affect readiness here. Read the story file
49
48
  `epics/<epic>/stories/<story>.md`; confirm `repo` is in its `repos`. If the epic is not ready, STOP
50
- and point the user at `yad-status`. **Do not mutate front-half state** — `ready-for-build` semantics
49
+ and point the user at `yad-status`. **Do not mutate Shape state** — `ready-for-build` semantics
51
50
  stay intact.
52
51
 
53
52
  ### Step 2 — Resolve the target code repo
@@ -87,13 +86,13 @@ frontmatter linking the spec back to the product repo: `story`, `epic`, `repo`,
87
86
  in the code repo), `speckit` (`installed | not-installed`), `generated` (date). This `link.md` plus the
88
87
  spec folder is the authoritative record that this story's spec exists.
89
88
 
90
- ### Step 7 — Stop (front-half state untouched)
89
+ ### Step 7 — Stop (Shape state untouched)
91
90
  Report: the spec folder path, the files written, whether Spec Kit was used, the task count from
92
91
  `tasks.md`, and that the next action is **Step B — `yad-implement`**. Do **not** edit the epic's
93
- `state.json`, `approvals.json`, or `contract-lock.json`. Step A is a generation step, not a front gate.
92
+ `state.json`, `approvals.json`, or `contract-lock.json`. Step A is a generation step, not a Shape gate.
94
93
 
95
94
  ### Step 8 — Record the `spec` trust signal (Phase 4b)
96
- When this step runs under the orchestrator (`yad-run`), the generated spec is a back-half run that the
95
+ When this step runs under the orchestrator (`yad-run`), the generated spec is a Build run that the
97
96
  trust log measures (it is the evidence that could later earn the `spec` step a `machine_advance`). The
98
97
  verdict is **anchored to the human who accepts the spec**, never self-graded:
99
98
  - the human approves the generated `specs/<story>/` untouched → `approved-unchanged`;
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: yad-status
3
- description: 'Read-only view of an SDLC epic: prints the current step, each step''s dials (assistance/automation) and status, and which approvals are still required at the active gate. For stories in the build half it also prints each back-half step''s automation dial, status, and trust record (runs / % approved-unchanged / whether it clears the threshold to be earned), plus the system-wide kill-switch state — so the team can see WHY a step is automated and reverse it with evidence. Also prints the cross-cutting personal skills-log roll-up from the LOCAL-ONLY learning ledger (gitignored, never committed/pushed — the local learner''s own learning, by stage). Surfaces the Phase 5 instrumentation signals: per-step "earned but manual" (nudge cost) and, across multiple epics, a fleet roll-up (scale of read). Use when the user says "yad status", "where is epic EP-...", "what is blocking the gate", "show the trust record", "team skills", or "fleet status".'
3
+ description: 'Read-only view of an SDLC epic: prints the current step, each step''s dials (assistance/automation) and status, and which approvals are still required at the active gate. For stories in Build it also prints each Build step''s automation dial, status, and trust record (runs / % approved-unchanged / whether it clears the threshold to be earned), plus the system-wide kill-switch state — so the team can see WHY a step is automated and reverse it with evidence. Also prints the cross-cutting personal skills-log roll-up from the LOCAL-ONLY learning ledger (gitignored, never committed/pushed — the local learner''s own learning, by stage). Surfaces the Phase 5 instrumentation signals: per-step "earned but manual" (nudge cost) and, across multiple epics, a fleet roll-up (scale of read). Use when the user says "yad status", "where is epic EP-...", "what is blocking the gate", "show the trust record", "team skills", or "fleet status".'
4
4
  ---
5
5
 
6
6
  # SDLC — Status (read-only)
@@ -20,7 +20,7 @@ report all if the user asked for an overview).
20
20
 
21
21
  ### Step 2 — Read state
22
22
  Read `.sdlc/state.json`, `.sdlc/approvals.json`, `epic.md` frontmatter (for `repos`), and — if present
23
- — `.sdlc/contract-lock.json`. For the build half (Phase 4), also read — if present — every
23
+ — `.sdlc/contract-lock.json`. For Build (Phase 4), also read — if present — every
24
24
  `.sdlc/build-state/<story-id>.json`, and the trust ledger read as the **union** of the folded
25
25
  `.sdlc/trust-log.json` `runs` PLUS every loose `.sdlc/trust-log/` shard (concatenate — every shard is a
26
26
  distinct run; never dedup by story/repo/step — but DO skip a shard whose full identity
@@ -40,13 +40,13 @@ Print, in this order:
40
40
  absent) — followed by `epicId`, then `status` from `epic.md` frontmatter, `currentStep`, and `repos`
41
41
  (the touched domains). Example: `Defect EP-checkout-queue-filter — draft @ stories`. A bug is a defect
42
42
  (`kind: defect`) — there is no separate noun. This is presentation only; the artifact is still an epic.
43
- 2. **Steps table** — for every front step in `steps[]` order (10, or 12 when the optional analysis step
43
+ 2. **Steps table** — for every Shape step in `steps[]` order (10, or 12 when the optional analysis step
44
44
  was run): `id`, `type`, `status`, `assistance`, `automation`, `locked`, and `risk_tags`. Mark the
45
45
  `currentStep` with `→`. The gating chain is `[analysis → analysis-review →] epic → epic-review →
46
46
  architecture → architecture-review → ui-design → ui-design-review → stories → stories-review` →
47
47
  **`ready-for-build`** (the bracketed `analysis` prefix is present only when `yad-analysis` seeded it).
48
48
  `test-cases → test-cases-review` is a **parallel, non-blocking track**: it opens when `stories-review`
49
- passes and runs alongside the build half, so when `currentStep` is `ready-for-build` the `test-cases`
49
+ passes and runs alongside Build, so when `currentStep` is `ready-for-build` the `test-cases`
50
50
  step may still be `in_progress`/`in_review` — show its status, and note "parallel" so it is clear it
51
51
  does not gate the build. Always render exactly the steps present in `steps[]`.
52
52
  - **Skipped (N/A) steps:** the optional `ui-design` step may be marked N/A for an epic with no
@@ -78,25 +78,25 @@ Print, in this order:
78
78
  (and, when at/after `architecture-review`, whether the current surface still matches it).
79
79
  5. **Stories** — if `stories/` has files, list each story `id` and its `repos` tags.
80
80
  6. **Files** — list the review records present under `reviews/` for the current artifact.
81
- 7. **Build half (per story, per repo)** — if any `.sdlc/build-state/<story-id>.json` exists, then for
82
- each such story and each of its repos print the back-half chain
81
+ 7. **Build (per story, per repo)** — if any `.sdlc/build-state/<story-id>.json` exists, then for
82
+ each such story and each of its repos print the Build chain
83
83
  `spec → tasks → implement → checks → engineer-review`, marking each step's `status`, its
84
84
  `automation` dial, and `locked`. Mark that repo's `currentStep` with `→`. This shows, at a glance,
85
- which back steps are automated and where a run is waiting. (For the single *next* build sub-step to
85
+ which Build steps are automated and where a run is waiting. (For the single *next* build sub-step to
86
86
  take per story/repo — rather than this full status view — point the user at `yad next <epic>`, which
87
87
  reads the same `build-state` files.)
88
88
  8. **Automation & trust** — print the system-wide **kill switch** state from `config.yaml`
89
89
  `automation.kill_switch` (when `on`, note that every step is forced to `human_approve`). Then, for
90
- each back-half step that has entries in the trust ledger — the **union** of the folded
90
+ each Build step that has entries in the trust ledger — the **union** of the folded
91
91
  `.sdlc/trust-log.json` `runs` plus every loose `.sdlc/trust-log/` shard — print its **trust record**:
92
92
  number of runs, the fraction with `verdict == "approved-unchanged"`, and whether that clears
93
93
  `automation.trust_threshold` (`min_runs`, `min_approved_unchanged`) — i.e. whether the step is
94
94
  **earned** (eligible to be flipped to `machine_advance`) or still **gathering evidence**. Restate
95
95
  the predicate (self-contained): `earned = runs >= min_runs AND unchanged/runs >= min_approved_unchanged`.
96
- Never recommend flipping a locked step or a front state — those can never be `machine_advance`.
96
+ Never recommend flipping a locked step or a Shape step — those can never be `machine_advance`.
97
97
 
98
- **Nudge-cost signal (Phase 5 instrumentation).** For each back step that is **earned but its dial
99
- is still `human_approve`** (and it is not locked / not a front state), flag it:
98
+ **Nudge-cost signal (Phase 5 instrumentation).** For each Build step that is **earned but its dial
99
+ is still `human_approve`** (and it is not locked / not a Shape step), flag it:
100
100
  `⚠ earned but manual — could be machine_advance`. This is the *nudge cost* the Phase 5 trigger
101
101
  watches: automation that is proven safe but still hand-started. It is a read-only observation, not a
102
102
  recommendation to flip — earning the evidence and flipping the dial stay deliberate human acts
@@ -117,10 +117,10 @@ Print, in this order:
117
117
 
118
118
  10. **Fleet roll-up (overview only).** When the user asked for an overview, or more than one epic exists
119
119
  under `{project-root}/epics/`, print a one-line-per-epic roll-up across the fleet: each epic's
120
- `currentStep` (front gate) and, for stories in the build half, a count of back-half steps **waiting
120
+ `currentStep` (Shape gate) and, for stories in Build, a count of Build steps **waiting
121
121
  at a human gate** and of steps flagged **earned-but-manual**, plus a **local skills-log** count (records
122
122
  in the local-only `learning-records.json`: learned / in-progress). Close with fleet totals (epics at
123
- each front gate; total earned-but-manual back steps; total concepts learned locally across the fleet).
123
+ each Shape gate; total earned-but-manual Build steps; total concepts learned locally across the fleet).
124
124
  This is the
125
125
  *scale-of-read* signal the Phase 5 trigger watches — when this roll-up stops fitting in one glance,
126
126
  that is the measured bottleneck. Still strictly read-only; it only scans the per-epic files.
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: yad-stories
3
- description: 'Front state 7 of the gated SDLC. With the pm, break the approved epic into user stories, each tagged with the repos that must implement it. Assigns zero-padded EP-<slug>-S0N IDs and writes one file per story under stories/. Reads epic + architecture + contract + UI as input. Never auto-advances — hands off to the team review gate (per-repo reviewer routing). Use when the user says "author the stories" or after the UI gate passes.'
3
+ description: 'Shape step 7 of the gated SDLC. With the pm, break the approved epic into user stories, each tagged with the repos that must implement it. Assigns zero-padded EP-<slug>-S0N IDs and writes one file per story under stories/. Reads epic + architecture + contract + UI as input. Never auto-advances — hands off to the team review gate (per-repo reviewer routing). Use when the user says "author the stories" or after the UI gate passes.'
4
4
  ---
5
5
 
6
- # SDLC — Author Stories (front state 7)
6
+ # SDLC — Author Stories (Shape step 7)
7
7
 
8
8
  **Goal:** Break an approved epic into human-authored, AI-assisted user stories, each with a stable
9
- `EP-<slug>-S0N` ID and a `repos` tag listing which repos must implement it. This is a **front state**:
9
+ `EP-<slug>-S0N` ID and a `repos` tag listing which repos must implement it. This is a **Shape step**:
10
10
  human-authored with AI assist, **never auto-advances**. When the stories are drafted, control passes
11
11
  to `yad-review-gate`, which routes **per-repo reviewers** (each repo's engineer reviews the stories
12
12
  touching their repo).
@@ -38,7 +38,7 @@ Open the stories authoring branch `stories/EP-<slug>` per the shared procedure
38
38
  (`../yad-epic/references/state-schema.md` → "Authoring branches"): git-safe (skip with a note
39
39
  if `{project-root}` is not a git work tree), check out the branch if it exists, else create it from the
40
40
  hub's default branch. Author and commit the story files under `stories/` on it. This is **distinct**
41
- from the bridge's `review/…` branch.
41
+ from the verified ledger's `review/…` branch.
42
42
 
43
43
  ### Step 2 — Read inputs
44
44
  Read `epic.md` (scope, acceptance signals, `repos`), `architecture.md` (components by repo, flows),
@@ -102,9 +102,9 @@ As a <role>, I want <capability>, so that <outcome>.
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`.
105
+ **verified mode** is `platform` set AND `ledger: "verified"` — or, on a project that has not run `yad migrate` yet, `bridge_enabled` (or legacy `bridge`) `true`. `ledger` wins whenever it is present.
106
106
 
107
- **Bridge mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
107
+ **verified mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
108
108
  any non-bot commit touching `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or
109
109
  `epics/*/reviews/*.md`, `yad gate open` deliberately skips this write for the same reason, and
110
110
  `yad gate ci --merged` performs the whole transition when the review PR merges. Making the edit here
@@ -112,26 +112,26 @@ fails the gate if it rides the review PR, and desynchronises the ledger CI is ab
112
112
  is pushed around the gate. Commit **the story files under `stories/` only** — nothing else
113
113
  under `.sdlc/` — then hand off to `yad-review-gate`.
114
114
 
115
- **Otherwise — file-only, or a platform with no gate-sync CI — write it.** In `state.json`: set
115
+ **Otherwise — local, or a platform with no gate-sync CI — write it.** In `state.json`: set
116
116
  `stories.status: "done"`, set `stories-review.status: "in_review"`, and set
117
117
  `currentStep: "stories-review"`. Write `state.json`. Do **not** touch `approvals.json`.
118
118
 
119
- > **File-only branch only.** Since 3.11 the CLI also closes the authoring step when its review gate
119
+ > **local branch only.** Since 3.11 the CLI also closes the authoring step when its review gate
120
120
  > opens or advances, so this edit is a no-op once `yad gate open` has run. A `stories` step left
121
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 —
122
+ > (`YAD-STATE-005`). In verified mode `gate open` writes nothing and local `gate sync` is advisory —
123
123
  > `gate ci` closes the step at merge.
124
124
 
125
125
  ### Step 7 — Stop at the gate (do NOT advance)
126
126
  Report: the story IDs created, the repos each touches, and that the next action is **review** via
127
127
  `yad-review-gate`. Note that this review routes **per-repo reviewers**: owner + 1 reviewer **plus**, for
128
128
  each repo appearing in any story's `repos`, a `domain-owner` approval for that repo. When this gate
129
- passes the epic becomes **`ready-for-build`** — the build half can start **and** the parallel
129
+ passes the epic becomes **`ready-for-build`** — Build can start **and** the parallel
130
130
  **`test-cases`** track opens for the tester (`yad-test-cases`); the two run at the same time. **Never record
131
- approval here.** Front states do not auto-advance. When the hub has a platform, the gate opens a review
131
+ approval here.** Shape steps do not auto-advance. When the hub has a platform, the gate opens a review
132
132
  PR on the hub (via `yad-hub-bridge`, with a `domain:<repo>` label per touched repo) and
133
133
  `yad-review-gate action: sync` pulls platform approvals/comments into the ledger; otherwise the review
134
- is recorded file-only.
134
+ is recorded local.
135
135
 
136
136
  ## Reference
137
137
  - Story frontmatter and body template: `references/story-schema.md`.
@@ -1,6 +1,6 @@
1
1
  # Story schema
2
2
 
3
- Each story authored at front state 7 is one Markdown file under `epics/EP-<slug>/stories/`, named
3
+ Each story authored at Shape step 7 is one Markdown file under `epics/EP-<slug>/stories/`, named
4
4
  `EP-<slug>-S0N.md` (zero-padded, never renamed).
5
5
 
6
6
  ## Frontmatter
@@ -9,10 +9,10 @@ Each story authored at front state 7 is one Markdown file under `epics/EP-<slug>
9
9
  |-------|--------|---------|
10
10
  | `id` | `EP-<slug>-S0N` | Stable story ID. Engine-assigned, zero-padded, never renamed. |
11
11
  | `epic` | `EP-<slug>` | Parent epic ID — the unbroken link back to the epic. |
12
- | `owner` | name | Inherited from `epic.md` `owner` (the single source — not retyped per story). Carries the responsible owner through to the build half. |
12
+ | `owner` | name | Inherited from `epic.md` `owner` (the single source — not retyped per story). Carries the responsible owner through to Build. |
13
13
  | `status` | `draft` \| `in_review` \| `approved` | Story lifecycle within the stories gate. |
14
14
  | `repos` | subset of the epic's `repos` | Which repos must implement this story. **Drives per-repo review routing now and (Phase 3) where specs are scaffolded.** |
15
- | `code-context` | `{ repos: [<name@sha>], loaded: <date> }` | Optional. Which connected-repo code-maps anchored "Notes for build" (front state 7 Step 2b). The `@sha` (a repo's `syncedHead`) is recommended so freshness is recorded but may be omitted; the SKILL templates show the empty placeholder `{ repos: [], loaded: <date or none> }`. `none` / `[]` when no repos are connected. |
15
+ | `code-context` | `{ repos: [<name@sha>], loaded: <date> }` | Optional. Which connected-repo code-maps anchored "Notes for build" (Shape step 7 Step 2b). The `@sha` (a repo's `syncedHead`) is recommended so freshness is recorded but may be omitted; the SKILL templates show the empty placeholder `{ repos: [], loaded: <date or none> }`. `none` / `[]` when no repos are connected. |
16
16
 
17
17
  ## Body
18
18
 
@@ -86,7 +86,7 @@ Leave `owner` for the human to set. Set `repos` to the code repo(s) the feature
86
86
 
87
87
  ### Step 5 — Seed the stub `state.json` (a `backfill-pending` sentinel)
88
88
  Create `{project-root}/epics/EP-<slug>/.sdlc/state.json`. It carries the top-level marker
89
- `kind: "stub"` and the sentinel `currentStep: "backfill-pending"`, and the **same 10-step front chain**
89
+ `kind: "stub"` and the sentinel `currentStep: "backfill-pending"`, and the **same 10-step Shape chain**
90
90
  as a normal epic (`yad-epic` Step 5) but with **every step `status: "blocked"`** — so the state is valid
91
91
  (`validateState` needs a non-empty `steps` + a string `currentStep`) and `promote` can later "wake" it
92
92
  into normal authoring with zero re-seeding.
@@ -117,7 +117,7 @@ Also create the empty ledgers `{.sdlc/approvals.json}` and `{.sdlc/comments.json
117
117
  `reviews/` directory. **Do NOT** write a `contract-lock.json` — a stub has no locked surface yet.
118
118
 
119
119
  Commit the seed on this step's authoring branch; it reaches the hub's default branch through the
120
- epic's **first** review PR/MR (or, for a stub, the PR that carries the stub itself). In bridge mode
120
+ epic's **first** review PR/MR (or, for a stub, the PR that carries the stub itself). In verified mode
121
121
  `ledger-guard` exempts a new epic's ledger — creation, not mutation (#162) — while every later change
122
122
  to it stays CI's. See `../yad-epic/references/state-schema.md`, "Authoring branches".
123
123
 
@@ -130,7 +130,7 @@ Report the new `EP-<slug>`, that it is a **stub (backfill pending)**, and the tw
130
130
  - **Make it real later:** `yad-backfill` for the code repo, then `yad-backfill promote EP-<slug>` to flip
131
131
  the stub to `verified: true`.
132
132
 
133
- Front states do not auto-advance. Suggest `yad next EP-<slug>` (prints the backfill-pending guidance) and
133
+ Shape steps do not auto-advance. Suggest `yad next EP-<slug>` (prints the backfill-pending guidance) and
134
134
  `yad thread EP-<slug>` to see the anchor and everything threaded off it.
135
135
 
136
136
  ## Hard rules
@@ -5,7 +5,7 @@ description: 'Brings every connected code repo up to date in one shot: switches
5
5
 
6
6
  # SDLC — Sync Connected Repos (one command, every repo on its default branch)
7
7
 
8
- **Goal:** Before front/build work starts, get every connected code repo onto its default branch at the
8
+ **Goal:** Before Shape/Build work starts, get every connected code repo onto its default branch at the
9
9
  latest commit, so nobody implements on a stale or wrong branch. This is the deterministic counterpart to
10
10
  the `sync-before-implementation` discipline: one command instead of N manual `git checkout && git pull`.
11
11
 
@@ -1,17 +1,17 @@
1
1
  ---
2
2
  name: yad-test-cases
3
- description: 'Front state 9 of the gated SDLC — a PARALLEL, non-blocking track. Opens when the stories gate passes (the epic is already ready-for-build, so the build half can start at the same time) and runs alongside implementation. With the test architect (Murat), author test-cases.md for the approved stories, and — when a testing tool is connected — generate/link the actual automation tests in it; otherwise produce the test-case artifact only. Reads epic + architecture + contract + UI + stories as input. Never auto-advances — hands off to the team review gate. Use when the user says "author the test cases" or after the stories gate passes.'
3
+ description: 'Shape step 9 of the gated SDLC — a PARALLEL, non-blocking track. Opens when the stories gate passes (the epic is already ready-for-build, so Build can start at the same time) and runs alongside implementation. With the test architect (Murat), author test-cases.md for the approved stories, and — when a testing tool is connected — generate/link the actual automation tests in it; otherwise produce the test-case artifact only. Reads epic + architecture + contract + UI + stories as input. Never auto-advances — hands off to the team review gate. Use when the user says "author the test cases" or after the stories gate passes.'
4
4
  ---
5
5
 
6
- # SDLC — Author Test Cases (front state 9 — parallel, non-blocking)
6
+ # SDLC — Author Test Cases (Shape step 9 — parallel, non-blocking)
7
7
 
8
8
  **Goal:** Produce a human-authored, AI-assisted `test-cases.md` for an approved epic — the risk-based
9
9
  test cases that cover the stories' acceptance criteria — **and**, when a testing tool is connected, the
10
10
  **actual automation tests** inside the connected code repo(s), linked back from the artifact. This is a
11
- **front state**: human-authored with AI assist, **never auto-advances**. When the test cases are
11
+ **Shape step**: human-authored with AI assist, **never auto-advances**. When the test cases are
12
12
  drafted, control passes to `yad-review-gate` (base rule: owner + 1 reviewer).
13
13
 
14
- **This step does NOT block the build half.** It opens when the **stories** gate passes — at which point
14
+ **This step does NOT block Build.** It opens when the **stories** gate passes — at which point
15
15
  the epic is already `ready-for-build`, so implementation (`yad-spec` → `yad-implement` → …) can start
16
16
  **at the same time** the tester works here. The test-cases track is driven by its own step `status`
17
17
  (it opens to `in_progress` when `stories-review` passes) and its review **never moves `currentStep`
@@ -51,7 +51,7 @@ the stories review has not passed.
51
51
  Open the test-cases authoring branch `test-cases/EP-<slug>` per the shared procedure
52
52
  (`../yad-epic/references/state-schema.md` → "Authoring branches"): git-safe (skip with a note if
53
53
  `{project-root}` is not a git work tree), check out the branch if it exists, else create it from the
54
- hub's default branch. Author and commit `test-cases.md` on it. This is **distinct** from the bridge's
54
+ hub's default branch. Author and commit `test-cases.md` on it. This is **distinct** from the verified ledger's
55
55
  `review/…` branch.
56
56
 
57
57
  ### Step 2 — Read inputs
@@ -163,9 +163,9 @@ degraded (`testing: none`), do **not** write `test-links.json`.
163
163
 
164
164
  ### Step 5 — Advance the authoring step (NOT the gate)
165
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`.
166
+ **verified mode** is `platform` set AND `ledger: "verified"` — or, on a project that has not run `yad migrate` yet, `bridge_enabled` (or legacy `bridge`) `true`. `ledger` wins whenever it is present.
167
167
 
168
- **Bridge mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
168
+ **verified mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
169
169
  any non-bot commit touching `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or
170
170
  `epics/*/reviews/*.md`, `yad gate open` deliberately skips this write for the same reason, and
171
171
  `yad gate ci --merged` performs the whole transition when the review PR merges. Making the edit here
@@ -174,21 +174,20 @@ is pushed around the gate. Commit the artifact set — **`test-cases.md` and, wh
174
174
  tool was used, `.sdlc/test-links.json`** (artifact-side, not ledger; generated tests live in their
175
175
  own code repo, not here) — then hand off to `yad-review-gate`.
176
176
 
177
- **Otherwise — file-only, or a platform with no gate-sync CI — write it.** In `state.json`: set
177
+ **Otherwise — local, or a platform with no gate-sync CI — write it.** In `state.json`: set
178
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`
179
+ `ready-for-build`** — this is the parallel track; moving `currentStep` would pull it back from Build. Write `state.json`. Do **not** touch `approvals.json`. On this branch `yad gate open`
181
180
  makes the same edit — `markInReview` leaves `currentStep` alone once it is `ready-for-build`
182
181
  (`cli/epic-state.mjs`) — so it is a no-op once the gate has run.
183
182
 
184
183
  ### Step 6 — Stop at the gate (do NOT advance)
185
184
  Report: the path to `test-cases.md`, the connected testing tool and what it produced (e.g. "Playwright —
186
185
  6 tests generated", the suite path + `test-links.json` path, or "no testing tool — artifacts-only"), that
187
- the build half may already be underway in parallel, and that the next action is **review** via
188
- `yad-review-gate` (base rule: owner + 1 reviewer). **Never record approval here.** Front states do not
186
+ Build may already be underway in parallel, and that the next action is **review** via
187
+ `yad-review-gate` (base rule: owner + 1 reviewer). **Never record approval here.** Shape steps do not
189
188
  auto-advance. When the hub has a platform, the gate opens a review
190
189
  PR on the hub (via `yad-hub-bridge`) and `yad-review-gate action: sync` pulls platform approvals/comments
191
- into the ledger; otherwise the review is recorded file-only.
190
+ into the ledger; otherwise the review is recorded local.
192
191
 
193
192
  ## Reference
194
193
  - Test-cases frontmatter, body template, and the `test-links.json` schema: `references/test-cases-schema.md`.
@@ -1,6 +1,6 @@
1
1
  # Test-cases schema
2
2
 
3
- The test cases authored at front state 9 are one Markdown file under `epics/EP-<slug>/`, named
3
+ The test cases authored at Shape step 9 are one Markdown file under `epics/EP-<slug>/`, named
4
4
  `test-cases.md` (one per epic — mirrors `ui-design.md`, not a per-story folder). The optional automation
5
5
  linkage is a sibling `test-links.json`.
6
6
 
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: yad-ui
3
- description: 'Front state 5 of the gated SDLC. With the ux-designer, author ui-design.md and DESIGN.md for an approved architecture, driving Impeccable as harness slash-commands (document/extract/craft) when installed, or authoring directly when not. Reads epic + architecture as input. Never auto-advances — hands off to the team review gate. Use when the user says "author the UI design" or after the architecture gate passes.'
3
+ description: 'Shape step 5 of the gated SDLC. With the ux-designer, author ui-design.md and DESIGN.md for an approved architecture, driving Impeccable as harness slash-commands (document/extract/craft) when installed, or authoring directly when not. Reads epic + architecture as input. Never auto-advances — hands off to the team review gate. Use when the user says "author the UI design" or after the architecture gate passes.'
4
4
  ---
5
5
 
6
- # SDLC — Author UI Design (front state 5)
6
+ # SDLC — Author UI Design (Shape step 5)
7
7
 
8
8
  **Goal:** Produce a human-authored, AI-assisted `ui-design.md` and `DESIGN.md` for an approved
9
9
  architecture **and**, when a design tool is connected, the **actual feature design** — the mobile
10
10
  screens and/or web pages — inside that tool (e.g. Figma), linked back from the artifacts. This is a
11
- **front state**: human-authored with AI assist, **never auto-advances**. When the UI is drafted, control
11
+ **Shape step**: human-authored with AI assist, **never auto-advances**. When the UI is drafted, control
12
12
  passes to `yad-review-gate` (base rule: owner + 1 reviewer).
13
13
 
14
14
  UI work is shaped by **Impeccable**, invoked as **harness slash-commands** (not a subprocess CLI) per
@@ -60,7 +60,7 @@ Open the UI authoring branch `ui-design/EP-<slug>` per the shared procedure
60
60
  (`../yad-epic/references/state-schema.md` → "Authoring branches"): git-safe (skip with a note
61
61
  if `{project-root}` is not a git work tree), check out the branch if it exists, else create it from the
62
62
  hub's default branch. Author and commit `ui-design.md` / `DESIGN.md` on it. This is **distinct** from
63
- the bridge's `review/…` branch.
63
+ the verified ledger's `review/…` branch.
64
64
 
65
65
  ### Step 2 — Read inputs
66
66
  Read `epic.md` (user-level acceptance signals, scope) and `architecture.md` (flows, components by
@@ -92,7 +92,7 @@ components/tokens into the design system; `/impeccable craft` is shape-then-buil
92
92
  **Graceful degradation:** if Impeccable is not installed (no `/impeccable …` commands available), the
93
93
  `ux-designer` lens authors `ui-design.md` and `DESIGN.md` directly, and you **note in `ui-design.md`
94
94
  that Impeccable was not used**. Do not run `npx impeccable skills install` as part of this step — tool
95
- installation is out of scope for the front half.
95
+ installation is out of scope for Shape.
96
96
 
97
97
  ### Step 3b — Materialize the design in the connected tool (generate or link)
98
98
  Read `{project-root}/.sdlc/design.json` (`config.yaml` `design.registry`). Decide the path:
@@ -172,9 +172,9 @@ Keep the `## Design (<tool>)` section of `ui-design.md` in step with this file.
172
172
 
173
173
  ### Step 5 — Advance the authoring step (NOT the gate)
174
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`.
175
+ **verified mode** is `platform` set AND `ledger: "verified"` — or, on a project that has not run `yad migrate` yet, `bridge_enabled` (or legacy `bridge`) `true`. `ledger` wins whenever it is present.
176
176
 
177
- **Bridge mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
177
+ **verified mode — do NOT write `state.json`.** The ledger is CI-owned: the `ledger-guard` check rejects
178
178
  any non-bot commit touching `epics/*/.sdlc/{state,approvals,comments,hub-prs}.json` or
179
179
  `epics/*/reviews/*.md`, `yad gate open` deliberately skips this write for the same reason, and
180
180
  `yad gate ci --merged` performs the whole transition when the review PR merges. Making the edit here
@@ -183,7 +183,7 @@ is pushed around the gate. Commit the artifact set — **`ui-design.md`, `DESIGN
183
183
  design tool was used, `.sdlc/design-links.json`** (artifact-side, not ledger) — then hand off to
184
184
  `yad-review-gate`.
185
185
 
186
- **Otherwise — file-only, or a platform with no gate-sync CI — write it.** In `state.json`: set
186
+ **Otherwise — local, or a platform with no gate-sync CI — write it.** In `state.json`: set
187
187
  `ui-design.status: "done"`, set `ui-design-review.status: "in_review"`, and set
188
188
  `currentStep: "ui-design-review"`. Write `state.json`. Do **not** touch `approvals.json`. On this
189
189
  branch `yad gate open` makes the same edit, so it is a no-op once the gate has run.
@@ -192,9 +192,9 @@ branch `yad gate open` makes the same edit, so it is a no-op once the gate has r
192
192
  Report: the paths to `ui-design.md` and `DESIGN.md`, whether Impeccable was used, the connected design
193
193
  tool and what it produced (e.g. "Figma — 4 screens generated", the file URL + `design-links.json` path,
194
194
  or "no design tool — markdown-only"), and that the next action is **review** via `yad-review-gate` (base
195
- rule: owner + 1 reviewer). **Never record approval here.** Front states do not auto-advance. When the hub has a platform, the gate opens a review PR on the
195
+ rule: owner + 1 reviewer). **Never record approval here.** Shape steps do not auto-advance. When the hub has a platform, the gate opens a review PR on the
196
196
  hub (via `yad-hub-bridge`) and `yad-review-gate action: sync` pulls platform approvals/comments into
197
- the ledger; otherwise the review is recorded file-only.
197
+ the ledger; otherwise the review is recorded local.
198
198
 
199
199
  ## Reference
200
200
  - Impeccable commands and the slash-command-vs-CLI deviation: `RESEARCH-NOTES.md` §4 + Deviation 3.