@deftai/directive-runtime 0.126.0-beta.1 → 0.126.0-beta.3

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 (212) hide show
  1. package/UPGRADING.md +4 -3
  2. package/commands.md +9 -6
  3. package/contracts/design-critique.md +39 -1
  4. package/contracts/human-origin-authz.md +14 -8
  5. package/dist/coverage-hotspots.d.ts +3 -0
  6. package/dist/coverage-hotspots.js +42 -2
  7. package/dist/doctor-diagnose.d.ts +1 -1
  8. package/dist/doctor-diagnose.js +29 -3
  9. package/dist/doctor.js +1 -1
  10. package/dist/occupancy-release.d.ts +5 -0
  11. package/dist/occupancy-release.js +11 -3
  12. package/dist/policy.d.ts +2 -0
  13. package/dist/policy.js +6 -0
  14. package/dist/session-start.js +28 -1
  15. package/dist/triage-actions.js +10 -2
  16. package/dist/verify-review-monitor.d.ts +7 -0
  17. package/dist/verify-review-monitor.js +21 -0
  18. package/docs/framework-gap-filing.md +85 -0
  19. package/docs/getting-started.md +13 -1
  20. package/docs/product-signal.md +1 -1
  21. package/package.json +1 -1
  22. package/packs/skills/skills-pack-0.1.json +10 -7
  23. package/packs/strategies/strategies-pack-0.1.json +32 -19
  24. package/scm/github.md +1 -1
  25. package/skills/deft-directive-article-review/SKILL.md +104 -24
  26. package/skills/deft-directive-design-critique/SKILL.md +10 -9
  27. package/skills/deft-directive-feedback/SKILL.md +37 -21
  28. package/skills/deft-directive-pre-pr/SKILL.md +14 -0
  29. package/skills/deft-directive-product-signal/SKILL.md +1 -1
  30. package/skills/deft-directive-review-cycle/SKILL.md +18 -1
  31. package/skills/deft-directive-setup/SKILL.md +41 -11
  32. package/skills/deft-directive-swarm/references/host-grok-build.md +1 -1
  33. package/skills/deft-directive-tutorial/SKILL.md +1 -1
  34. package/strategies/README.md +1 -0
  35. package/strategies/artifact-guards.md +2 -2
  36. package/strategies/design-thinking.md +182 -0
  37. package/strategies/discuss.md +2 -0
  38. package/strategies/interview.md +76 -23
  39. package/strategies/rapid.md +22 -12
  40. package/templates/agents-entry.md +4 -3
  41. package/templates/design-critique-brief.md +5 -1
  42. package/tutorial/beats.json +2 -2
  43. package/vendor/directive-content/UPGRADING.md +4 -3
  44. package/vendor/directive-content/commands.md +9 -6
  45. package/vendor/directive-content/contracts/design-critique.md +39 -1
  46. package/vendor/directive-content/contracts/human-origin-authz.md +14 -8
  47. package/vendor/directive-content/docs/framework-gap-filing.md +85 -0
  48. package/vendor/directive-content/docs/getting-started.md +13 -1
  49. package/vendor/directive-content/docs/product-signal.md +1 -1
  50. package/vendor/directive-content/packs/skills/skills-pack-0.1.json +10 -7
  51. package/vendor/directive-content/packs/strategies/strategies-pack-0.1.json +32 -19
  52. package/vendor/directive-content/scm/github.md +1 -1
  53. package/vendor/directive-content/skills/deft-directive-article-review/SKILL.md +104 -24
  54. package/vendor/directive-content/skills/deft-directive-design-critique/SKILL.md +10 -9
  55. package/vendor/directive-content/skills/deft-directive-feedback/SKILL.md +37 -21
  56. package/vendor/directive-content/skills/deft-directive-pre-pr/SKILL.md +14 -0
  57. package/vendor/directive-content/skills/deft-directive-product-signal/SKILL.md +1 -1
  58. package/vendor/directive-content/skills/deft-directive-review-cycle/SKILL.md +18 -1
  59. package/vendor/directive-content/skills/deft-directive-setup/SKILL.md +41 -11
  60. package/vendor/directive-content/skills/deft-directive-swarm/references/host-grok-build.md +1 -1
  61. package/vendor/directive-content/skills/deft-directive-tutorial/SKILL.md +1 -1
  62. package/vendor/directive-content/strategies/README.md +1 -0
  63. package/vendor/directive-content/strategies/artifact-guards.md +2 -2
  64. package/vendor/directive-content/strategies/design-thinking.md +182 -0
  65. package/vendor/directive-content/strategies/discuss.md +2 -0
  66. package/vendor/directive-content/strategies/interview.md +76 -23
  67. package/vendor/directive-content/strategies/rapid.md +22 -12
  68. package/vendor/directive-content/templates/agents-entry.md +4 -3
  69. package/vendor/directive-content/templates/design-critique-brief.md +5 -1
  70. package/vendor/directive-content/tutorial/beats.json +2 -2
  71. package/vendor/directive-core/dist/.tsbuildinfo +1 -1
  72. package/vendor/directive-core/dist/content-contracts/skills/helpers.d.ts +11 -1
  73. package/vendor/directive-core/dist/content-contracts/skills/helpers.d.ts.map +1 -1
  74. package/vendor/directive-core/dist/content-contracts/skills/helpers.js +18 -5
  75. package/vendor/directive-core/dist/content-contracts/skills/helpers.js.map +1 -1
  76. package/vendor/directive-core/dist/coverage-applicability/evaluate.d.ts.map +1 -1
  77. package/vendor/directive-core/dist/coverage-applicability/evaluate.js +39 -0
  78. package/vendor/directive-core/dist/coverage-applicability/evaluate.js.map +1 -1
  79. package/vendor/directive-core/dist/coverage-hotspots/evaluate.d.ts +24 -5
  80. package/vendor/directive-core/dist/coverage-hotspots/evaluate.d.ts.map +1 -1
  81. package/vendor/directive-core/dist/coverage-hotspots/evaluate.js +89 -8
  82. package/vendor/directive-core/dist/coverage-hotspots/evaluate.js.map +1 -1
  83. package/vendor/directive-core/dist/design-critique/auto-stamp-path1.d.ts +40 -0
  84. package/vendor/directive-core/dist/design-critique/auto-stamp-path1.d.ts.map +1 -1
  85. package/vendor/directive-core/dist/design-critique/auto-stamp-path1.js +116 -0
  86. package/vendor/directive-core/dist/design-critique/auto-stamp-path1.js.map +1 -1
  87. package/vendor/directive-core/dist/design-critique/citation-grammar.d.ts +36 -0
  88. package/vendor/directive-core/dist/design-critique/citation-grammar.d.ts.map +1 -1
  89. package/vendor/directive-core/dist/design-critique/citation-grammar.js +60 -3
  90. package/vendor/directive-core/dist/design-critique/citation-grammar.js.map +1 -1
  91. package/vendor/directive-core/dist/design-critique/completed-arc-record.d.ts +103 -3
  92. package/vendor/directive-core/dist/design-critique/completed-arc-record.d.ts.map +1 -1
  93. package/vendor/directive-core/dist/design-critique/completed-arc-record.js +127 -5
  94. package/vendor/directive-core/dist/design-critique/completed-arc-record.js.map +1 -1
  95. package/vendor/directive-core/dist/design-critique/ingest-posture.d.ts +27 -0
  96. package/vendor/directive-core/dist/design-critique/ingest-posture.d.ts.map +1 -0
  97. package/vendor/directive-core/dist/design-critique/ingest-posture.js +66 -0
  98. package/vendor/directive-core/dist/design-critique/ingest-posture.js.map +1 -0
  99. package/vendor/directive-core/dist/design-critique/panel-handback-acceptance.d.ts +106 -7
  100. package/vendor/directive-core/dist/design-critique/panel-handback-acceptance.d.ts.map +1 -1
  101. package/vendor/directive-core/dist/design-critique/panel-handback-acceptance.js +284 -17
  102. package/vendor/directive-core/dist/design-critique/panel-handback-acceptance.js.map +1 -1
  103. package/vendor/directive-core/dist/docs/docs-impact.d.ts +13 -0
  104. package/vendor/directive-core/dist/docs/docs-impact.d.ts.map +1 -1
  105. package/vendor/directive-core/dist/docs/docs-impact.js +49 -4
  106. package/vendor/directive-core/dist/docs/docs-impact.js.map +1 -1
  107. package/vendor/directive-core/dist/doctor/main.d.ts +48 -0
  108. package/vendor/directive-core/dist/doctor/main.d.ts.map +1 -1
  109. package/vendor/directive-core/dist/doctor/main.js +221 -4
  110. package/vendor/directive-core/dist/doctor/main.js.map +1 -1
  111. package/vendor/directive-core/dist/hooks/dispatcher.d.ts.map +1 -1
  112. package/vendor/directive-core/dist/hooks/dispatcher.js +160 -14
  113. package/vendor/directive-core/dist/hooks/dispatcher.js.map +1 -1
  114. package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts +4 -0
  115. package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts.map +1 -1
  116. package/vendor/directive-core/dist/init-deposit/agent-hooks.js +25 -4
  117. package/vendor/directive-core/dist/init-deposit/agent-hooks.js.map +1 -1
  118. package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.d.ts.map +1 -1
  119. package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.js +15 -0
  120. package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.js.map +1 -1
  121. package/vendor/directive-core/dist/intake/issue-ingest.d.ts +15 -0
  122. package/vendor/directive-core/dist/intake/issue-ingest.d.ts.map +1 -1
  123. package/vendor/directive-core/dist/intake/issue-ingest.js +190 -22
  124. package/vendor/directive-core/dist/intake/issue-ingest.js.map +1 -1
  125. package/vendor/directive-core/dist/pr-closing-keywords/detect.d.ts.map +1 -1
  126. package/vendor/directive-core/dist/pr-closing-keywords/detect.js +52 -7
  127. package/vendor/directive-core/dist/pr-closing-keywords/detect.js.map +1 -1
  128. package/vendor/directive-core/dist/pr-watch/main.d.ts +5 -0
  129. package/vendor/directive-core/dist/pr-watch/main.d.ts.map +1 -1
  130. package/vendor/directive-core/dist/pr-watch/main.js.map +1 -1
  131. package/vendor/directive-core/dist/pr-watch/watch.d.ts.map +1 -1
  132. package/vendor/directive-core/dist/pr-watch/watch.js +5 -0
  133. package/vendor/directive-core/dist/pr-watch/watch.js.map +1 -1
  134. package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts.map +1 -1
  135. package/vendor/directive-core/dist/pre-pr-controller/controller.js +118 -12
  136. package/vendor/directive-core/dist/pre-pr-controller/controller.js.map +1 -1
  137. package/vendor/directive-core/dist/pre-pr-controller/index.d.ts +1 -1
  138. package/vendor/directive-core/dist/pre-pr-controller/index.d.ts.map +1 -1
  139. package/vendor/directive-core/dist/pre-pr-controller/index.js +1 -1
  140. package/vendor/directive-core/dist/pre-pr-controller/index.js.map +1 -1
  141. package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts +5 -0
  142. package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts.map +1 -1
  143. package/vendor/directive-core/dist/pre-pr-controller/phases.js +10 -0
  144. package/vendor/directive-core/dist/pre-pr-controller/phases.js.map +1 -1
  145. package/vendor/directive-core/dist/presentation-ceiling/evaluate.d.ts.map +1 -1
  146. package/vendor/directive-core/dist/presentation-ceiling/evaluate.js +3 -1
  147. package/vendor/directive-core/dist/presentation-ceiling/evaluate.js.map +1 -1
  148. package/vendor/directive-core/dist/release/auto-hatch.d.ts +6 -0
  149. package/vendor/directive-core/dist/release/auto-hatch.d.ts.map +1 -1
  150. package/vendor/directive-core/dist/release/auto-hatch.js +13 -4
  151. package/vendor/directive-core/dist/release/auto-hatch.js.map +1 -1
  152. package/vendor/directive-core/dist/review-monitor/record.d.ts +11 -0
  153. package/vendor/directive-core/dist/review-monitor/record.d.ts.map +1 -1
  154. package/vendor/directive-core/dist/review-monitor/record.js +23 -0
  155. package/vendor/directive-core/dist/review-monitor/record.js.map +1 -1
  156. package/vendor/directive-core/dist/run-summary/emit.d.ts +2 -1
  157. package/vendor/directive-core/dist/run-summary/emit.d.ts.map +1 -1
  158. package/vendor/directive-core/dist/run-summary/emit.js +3 -0
  159. package/vendor/directive-core/dist/run-summary/emit.js.map +1 -1
  160. package/vendor/directive-core/dist/run-summary/index.d.ts +1 -1
  161. package/vendor/directive-core/dist/run-summary/index.d.ts.map +1 -1
  162. package/vendor/directive-core/dist/run-summary/index.js.map +1 -1
  163. package/vendor/directive-core/dist/run-summary/types.d.ts +8 -2
  164. package/vendor/directive-core/dist/run-summary/types.d.ts.map +1 -1
  165. package/vendor/directive-core/dist/run-summary/types.js +1 -0
  166. package/vendor/directive-core/dist/run-summary/types.js.map +1 -1
  167. package/vendor/directive-core/dist/scope/delivery-evidence.d.ts +11 -0
  168. package/vendor/directive-core/dist/scope/delivery-evidence.d.ts.map +1 -1
  169. package/vendor/directive-core/dist/scope/delivery-evidence.js +34 -0
  170. package/vendor/directive-core/dist/scope/delivery-evidence.js.map +1 -1
  171. package/vendor/directive-core/dist/scope/promote-from-issue.d.ts +2 -1
  172. package/vendor/directive-core/dist/scope/promote-from-issue.d.ts.map +1 -1
  173. package/vendor/directive-core/dist/scope/promote-from-issue.js +17 -61
  174. package/vendor/directive-core/dist/scope/promote-from-issue.js.map +1 -1
  175. package/vendor/directive-core/dist/session/occupancy-recovery.d.ts +10 -0
  176. package/vendor/directive-core/dist/session/occupancy-recovery.d.ts.map +1 -1
  177. package/vendor/directive-core/dist/session/occupancy-recovery.js +43 -7
  178. package/vendor/directive-core/dist/session/occupancy-recovery.js.map +1 -1
  179. package/vendor/directive-core/dist/session/occupancy.d.ts +148 -1
  180. package/vendor/directive-core/dist/session/occupancy.d.ts.map +1 -1
  181. package/vendor/directive-core/dist/session/occupancy.js +516 -34
  182. package/vendor/directive-core/dist/session/occupancy.js.map +1 -1
  183. package/vendor/directive-core/dist/session/session-start.d.ts.map +1 -1
  184. package/vendor/directive-core/dist/session/session-start.js +6 -1
  185. package/vendor/directive-core/dist/session/session-start.js.map +1 -1
  186. package/vendor/directive-core/dist/swarm/cohort-review-monitors-cli.d.ts.map +1 -1
  187. package/vendor/directive-core/dist/swarm/cohort-review-monitors-cli.js +5 -1
  188. package/vendor/directive-core/dist/swarm/cohort-review-monitors-cli.js.map +1 -1
  189. package/vendor/directive-core/dist/swarm/cohort-review-monitors.d.ts +71 -0
  190. package/vendor/directive-core/dist/swarm/cohort-review-monitors.d.ts.map +1 -1
  191. package/vendor/directive-core/dist/swarm/cohort-review-monitors.js +125 -2
  192. package/vendor/directive-core/dist/swarm/cohort-review-monitors.js.map +1 -1
  193. package/vendor/directive-core/dist/telemetry-coverage/fake-trial.d.ts.map +1 -1
  194. package/vendor/directive-core/dist/telemetry-coverage/fake-trial.js +9 -0
  195. package/vendor/directive-core/dist/telemetry-coverage/fake-trial.js.map +1 -1
  196. package/vendor/directive-core/dist/telemetry-coverage/kinds.d.ts.map +1 -1
  197. package/vendor/directive-core/dist/telemetry-coverage/kinds.js +2 -0
  198. package/vendor/directive-core/dist/telemetry-coverage/kinds.js.map +1 -1
  199. package/vendor/directive-core/dist/triage/actions/index.d.ts +8 -5
  200. package/vendor/directive-core/dist/triage/actions/index.d.ts.map +1 -1
  201. package/vendor/directive-core/dist/triage/actions/index.js +248 -22
  202. package/vendor/directive-core/dist/triage/actions/index.js.map +1 -1
  203. package/vendor/directive-core/dist/triage/actions/types.d.ts +16 -2
  204. package/vendor/directive-core/dist/triage/actions/types.d.ts.map +1 -1
  205. package/vendor/directive-core/dist/triage/bulk/index.d.ts +8 -1
  206. package/vendor/directive-core/dist/triage/bulk/index.d.ts.map +1 -1
  207. package/vendor/directive-core/dist/triage/bulk/index.js +30 -11
  208. package/vendor/directive-core/dist/triage/bulk/index.js.map +1 -1
  209. package/vendor/directive-core/dist/value/feedback-file.d.ts +54 -6
  210. package/vendor/directive-core/dist/value/feedback-file.d.ts.map +1 -1
  211. package/vendor/directive-core/dist/value/feedback-file.js +470 -43
  212. package/vendor/directive-core/dist/value/feedback-file.js.map +1 -1
@@ -20,6 +20,7 @@ Development strategies define the workflow from idea to implementation.
20
20
  | [discuss.md](./discuss.md) | `/deft:run:discuss` | preparatory | Alignment before planning | Feynman technique → locked decisions → Chaining Gate |
21
21
  | [probe.md](./probe.md) | `/deft:run:probe` | preparatory | Adversarial plan stress-testing | Walk decision tree → challenge assumptions → surface risks → Chaining Gate |
22
22
  | [research.md](./research.md) | `/deft:run:research` | preparatory | Pre-implementation research | Research → Don't Hand-Roll + Common Pitfalls → Chaining Gate |
23
+ | [design-thinking.md](./design-thinking.md) | `/deft:run:design-thinking` | preparatory | End-user discovery + UAT planning | Empathize → Define → Ideate → UAT-planning → Chaining Gate |
23
24
  | [roadmap.md](./roadmap.md) | `/deft:run:roadmap` | preparatory | Roadmap maintenance | Discover → Triage → Cleanup |
24
25
  | [bdd.md](./bdd.md) | `/deft:run:bdd` | preparatory | Acceptance-test-first development | Scenarios → Failing Tests → Lock Decisions → Spec → Chaining Gate |
25
26
  | [rapid.md](./rapid.md) | `/deft:run:rapid` | spec-generating | Quick prototypes | Forced-Light path |
@@ -19,7 +19,7 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
19
19
  This file is not a standalone strategy — it is a shared guard referenced by other strategies. It activates automatically when a strategy writes to vBRIEF artifacts.
20
20
 
21
21
  - ! Referenced by spec-generating strategies: [speckit](./speckit.md), [enterprise](./enterprise.md), [rapid](./rapid.md), [interview](./interview.md), [yolo](./yolo.md)
22
- - ! Referenced by preparatory strategies: [bdd](./bdd.md), [discuss](./discuss.md), [research](./research.md), [map](./map.md), [probe](./probe.md)
22
+ - ! Referenced by preparatory strategies: [bdd](./bdd.md), [discuss](./discuss.md), [research](./research.md), [map](./map.md), [probe](./probe.md), [design-thinking](./design-thinking.md)
23
23
 
24
24
  ## Workflow
25
25
 
@@ -64,7 +64,7 @@ Applies to strategies that write project identity as `PROJECT-DEFINITION` (⊗ n
64
64
 
65
65
  ## Preparatory Guard (Light)
66
66
 
67
- Applies to strategies that write scoped records to `proposed/`: **bdd**, **discuss**, **research**, **map**, **probe**, and brownfield **Add scope** paths from interview/setup.
67
+ Applies to strategies that write scoped records to `proposed/`: **bdd**, **discuss**, **research**, **map**, **probe**, **design-thinking**, and brownfield **Add scope** paths from interview/setup.
68
68
 
69
69
  ! **Target folder resolution (xbrief-first)**: scan `./xbrief/proposed/` when it exists; else legacy `./vbrief/proposed/`. Prefer writing new scopes under the same root the project already uses.
70
70
 
@@ -0,0 +1,182 @@
1
+ <!-- AUTO-GENERATED by task packs:render -- DO NOT EDIT MANUALLY -->
2
+ <!-- Purpose: rendered strategy -->
3
+ <!-- Source of truth: packs/strategies/strategies-pack-0.1.json -->
4
+ <!-- Regenerate with: task packs:render -->
5
+ <!-- Edit the source, not this file. Slice instead of loading every strategy: task packs:slice strategies by-trigger --trigger <kw> (or list) -->
6
+
7
+ # Design-Thinking Strategy
8
+
9
+ End-user discovery that plans UAT on the fail-closed acceptance axis at scope-write time.
10
+
11
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
12
+
13
+ **⚠️ See also**: [strategies/interview.md](./interview.md) | [strategies/research.md](./research.md) | [strategies/bdd.md](./bdd.md) | [strategies/artifact-guards.md](./artifact-guards.md) | [vbrief/vbrief.md](../vbrief/vbrief.md) TrustLevel (#480)
14
+
15
+ > Empathize → Define → Ideate → UAT-planning → Chaining Gate. Validation lands on `x-directive/requires: uat` plan items (STRICT_ACCEPTANCE_AXES), not an unchecked Test Plan narrative. Adapted from BMAD CIS design-thinking (untrusted analysis only) and HBS Clarify/Ideate framing; HBS Develop/Implement stay after the Chaining Gate / build.
16
+
17
+ ---
18
+
19
+ ## When to Use
20
+
21
+ - ~ Designing products or features for people where user experience matters
22
+ - ~ Starting from user research, empathy work, or a who/need gap before sizing
23
+ - ~ Moving from insights to testable concepts that need real-user validation
24
+ - ~ Reimagining an existing experience with end-user discovery before spec generation
25
+
26
+ ## When to Skip (BMAD cases — disposition, not omit)
27
+
28
+ These cases do **not** omit the UAT-planning item. Keep ≥1 `x-directive/requires: uat` item and record a human-origin disposition after operator confirm (see [UAT-planning](#phase-4-uat-planning)):
29
+
30
+ - ? Pure technical problems without user interaction → disposition `not_applicable` when UAT is genuinely inapplicable
31
+ - ? Infrastructure or backend-only concerns → disposition `not_applicable` only when no affected end user exists; ⊗ infer "backend-only" alone means no user
32
+ - ? Timeframes that do not allow user validation → disposition `waived` or `deferred` (applicable work intentionally omitted/postponed), not `not_applicable`
33
+
34
+ ⊗ Ceremony-dial skip — `plan.policy.ceremonyDial` selects session-ritual depth, not product-shaped UAT skip. Preparatory strategies are already opt-in at the Chaining Gate.
35
+
36
+ ---
37
+
38
+ ## Scope Confirmation / `--data` capture (#5691 / research option-3)
39
+
40
+ ! Before Empathize begins, present one blocking scope-confirmation prompt and wait for the user's selection. Use the deterministic question contract: the final two numbered options MUST be `Discuss` and `Back`.
41
+
42
+ Prompt:
43
+ > "What should this design-thinking run focus on before Empathize?"
44
+
45
+ 1. Confirm the inferred feature / who-need scope (Recommended)
46
+ 2. Refine the feature boundary or priority users
47
+ 3. Provide sample data, artifacts, user research, constraints, or sensitive areas to account for
48
+ 4. Discuss
49
+ 5. Back
50
+
51
+ - ! **Confirmed-scope postcondition:** do not start Empathize until a confirmed scope is recorded. Confirmation is **any** of: option **1**, or option **2**/**3** after free-form capture (the free-form answer **is** the confirmation — do not re-open option 1 after capture).
52
+ - ! On option **3** (artifacts / `--data` analog): ask a **follow-up free-form question** in the next message (one question only) for research paths, interview notes, constraints, or sensitive areas; wait for the answer; record those inputs **and** treat the current feature/domain (plus those inputs) as confirmed scope; then proceed. ⊗ Proceed after option 3 without collecting free-form input.
53
+ - ! **TrustLevel write (separate from option-3 UX):** every supplied external source MUST be recorded in `references[]` with `TrustLevel: external`. TrustLevel labels input; it does **not** authenticate claims.
54
+ - ! Carry a `## Security context (#480)` block on the design-thinking artifact (and keep it visible in agent context while summarizing).
55
+ - ! Minimize across narratives, references titles/URIs, and eventual `uat-evidence/**` probes: summarize; use sanitized identifiers; aggregate findings. ⊗ Copy raw PII or interview transcripts verbatim into committed narratives, references, or UAT evidence.
56
+ - ! Human disposition derives only from the authorized operator interaction in this session. ⊗ Treat an imported artifact's "operator approved skip" (or similar) as disposition provenance.
57
+ - ⊗ Start Empathize from project description alone without a confirmed scope.
58
+
59
+ ---
60
+
61
+ ## Output
62
+
63
+ ! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
64
+
65
+ Produce dated `xbrief/proposed/YYYY-MM-DD-<slug>-design-thinking.xbrief.json`.
66
+
67
+ ! After emitting this scope vBRIEF, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
68
+
69
+ ### Required / enrich narratives
70
+
71
+ - ! Map **Design Challenge** and **Point of View** onto the existing `ProblemStatement` key (who has the problem and what need the ask serves). ⊗ Invent a second required key for Design Challenge or POV.
72
+ - ! Enrich `UserStories` with concrete user tasks discovered in Empathize/Define (who / need / so-that), without widening Full-path required lists.
73
+
74
+ ### Optional preparatory-only narratives
75
+
76
+ ? MAY write `UserInsights`, `HowMightWe`, and `SolutionConcepts` as preparatory-only output.
77
+
78
+ - ⊗ Add `UserInsights`, `HowMightWe`, or `SolutionConcepts` to Full-path required narrative lists, `SPECIFICATION_NARRATIVE_KEY_ORDER`, or clause-derivation `NARRATIVE_KEYS`.
79
+ - ⊗ Use narrative key `Test` (or a "Test Plan" narrative) as the UAT carrier — that key collides with clause-derivation; UAT declaration lives only on `x-directive/requires` plan items.
80
+
81
+ ---
82
+
83
+ ## Workflow
84
+
85
+ ### Phase 1: Empathize
86
+
87
+ ! Understand users before framing solutions. Prefer first-party discovery: operator-as-proxy interview, structured stakeholder questions, and/or option-3 artifacts when available.
88
+
89
+ - ! Capture who the humans are, what they are trying to do, and what hurts today
90
+ - ~ Empathy mapping, journey notes, and personas may land in optional `UserInsights`
91
+ - ⊗ Jump to a solution ("build a dashboard") before recording who/need
92
+
93
+ ### Phase 2: Define
94
+
95
+ ! Frame the problem as a user-centered Point of View.
96
+
97
+ - ! Write Design Challenge + POV into `ProblemStatement`
98
+ - ~ Reframe solution-first asks into who/need ("build a dashboard" → "what does the user need to see, and why now?")
99
+ - ~ Optional `HowMightWe` questions may be recorded as preparatory-only
100
+
101
+ ### Phase 3: Ideate
102
+
103
+ ! Diverge before converging. Generate multiple solution concepts, then narrow.
104
+
105
+ - ~ Optional `SolutionConcepts` may list promising ideas with brief rationales
106
+ - ⊗ Treat the first idea as final; ⊗ add HBS Develop / Implement as preparatory phases (those stay after Chaining Gate / build)
107
+
108
+ ### Phase 4: UAT-planning
109
+
110
+ ! Name this phase **UAT-planning** (not "Test completed"). `completedStrategies.design-thinking` means preparation finished only — not that users validated the concept.
111
+
112
+ ! Emit ≥1 `plan.items[]` entry with `x-directive/requires: uat` on the design-thinking artifact before chaining.
113
+
114
+ Each UAT-planning item MUST carry, in its acceptance description (title and/or `narrative.Acceptance`):
115
+
116
+ 1. **Audience** — who will perform or be observed in the probe
117
+ 2. **User task / hypothesis** — what the probe is trying to learn
118
+ 3. **Observable pass/fail criterion** — what evidence counts as pass vs fail
119
+ 4. **Intended `uat-evidence/**` probe intent** — where the kind:uat pointer will land under `uat-evidence/**`
120
+
121
+ - ! Keep the item `status` non-terminal (`pending` / `running`) until matching `kind:uat` evidence is stamped or a valid human-origin disposition is recorded via `stampNamespacedDisposition` / `parseDisposition` (or the CLI that wraps them)
122
+ - ! On BMAD skip after operator confirm: **keep** the uat item; write disposition only via `stampNamespacedDisposition` / `parseDisposition` with the correct kind (`not_applicable` vs `waived` / `deferred` per [When to Skip](#when-to-skip-bmad-cases--disposition-not-omit))
123
+ - ⊗ Omit the uat item on skip; ⊗ ceremonyDial skip; ⊗ agent-forged provenance; ⊗ invent a parallel disposition dialect
124
+
125
+ #### Handoff carrier (consuming interview / spec scope-write)
126
+
127
+ ! When a later interview / Light / Full / Add-scope / switched-strategy path loads a `completedStrategies` design-thinking artifact and emits a story scope, it MUST copy those `x-directive/requires`-bearing items into the emitted story `plan.items` with **stable source identity/trace** (preserve requires + any human disposition; keep a source id/path/trace so re-runs do not silently duplicate or drop axes).
128
+
129
+ ! At that boundary, run one thin **omission check** (source→destination compare of `x-directive/requires`-bearing items) covering:
130
+
131
+ 1. **missing-item** — design-thinking artifact declares requires:uat but the emitted story `plan.items` lack a matching transferred entry → **recovery:** copy the source item into the emitted story `plan.items` (preserve requires + source id/path/trace) before proceeding; do not invent a substitute axis
132
+ 2. **changed-scope / repeated-run** — a newer registered design-thinking revision supersedes an older one → transfer from the selected revision; do not silently inherit an obsolete skip into a changed who/need scope (fresh applicability decision when scope changed)
133
+ 3. **preserved-disposition** — if the source item already carries a valid human-origin disposition, preserve it on transfer; do not strip or re-forge provenance
134
+
135
+ ! Executable compare: apply `evaluateDesignThinkingUatOmissionCheck` (content-contract) — source→destination id/requires/disposition equality for every source `requires:uat` item. On miss, remediate with: design-thinking UAT omission: copy the source requires:uat item into the emitted story plan.items (preserve requires + source id/path/trace) before proceeding.
136
+
137
+ ! The handoff omission check verifies **transfer presence / identity / disposition preservation only**. Do **not** run `evaluateAcceptanceEvidenceGate` at the handoff boundary — newly transferred UAT items are deliberately non-terminal (`pending` / `running`) and must not be rejected for lacking `kind:uat` evidence yet.
138
+
139
+ ! Keep `evaluateAcceptanceEvidenceGate` at **`scope:complete`** on the completing brief's destination `plan.items` (the acceptance walker only sees the completing brief — preparatory orphans do not arm STRICT_ACCEPTANCE_AXES).
140
+
141
+ ⊗ Close UAT planning with LockedDecisions-style narrative flow-through alone and no item-transfer / omission check.
142
+ ⊗ Summarize the design-thinking artifact into narratives while dropping its requires:uat items.
143
+ ⊗ Run `evaluateAcceptanceEvidenceGate` immediately after handoff transfer (that gate is completion-time only).
144
+
145
+ ---
146
+
147
+ ## Then: Chaining Gate
148
+
149
+ After UAT-planning is recorded, return to the [chaining gate](./interview.md#chaining-gate) so the user can run additional preparatory strategies or proceed to spec generation.
150
+
151
+ - ! On completion, register artifacts in `./xbrief/plan.xbrief.json`:
152
+ - Update `completedStrategies`: increment `runCount` for `"design-thinking"`, append artifact path (`xbrief/proposed/YYYY-MM-DD-<slug>-design-thinking.xbrief.json`)
153
+ - Append the path to the flat `artifacts` array
154
+ - ! Return to [interview.md Chaining Gate](./interview.md#chaining-gate)
155
+ - ! Present the chaining gate as a blocking question and wait for a user selection before any spec generation or additional scope vBRIEF generation.
156
+ - ! Explain at handoff that `completedStrategies` records that design-thinking ran, while the dated proposed artifact remains a planning artifact until a later strategy promotes or consumes it — and that requires:uat items MUST transfer via the [handoff carrier](#handoff-carrier-consuming-interview--spec-scope-write).
157
+ - ⊗ Generate implementation scope vBRIEFs directly from design-thinking findings or proceed to spec generation before the user chooses from the chaining gate.
158
+ - ⊗ End the session after design-thinking without returning to the chaining gate or the invoking strategy's next-step menu
159
+
160
+ ! **Standalone context:** If invoked outside the interview chaining gate, return to the invoking strategy's next-step menu when one exists; otherwise fall back to the [interview.md Chaining Gate](./interview.md#chaining-gate) rather than inventing a post-planning exit.
161
+
162
+ ---
163
+
164
+ ## Workflow summary
165
+
166
+ 1. **Scope confirmation / `--data`** — blocking prompt; option-3 free-form capture; `references[]` with `TrustLevel: external`; Security context (#480); minimize
167
+ 2. **Empathize** — who/need discovery; optional `UserInsights`
168
+ 3. **Define** — Design Challenge / POV → `ProblemStatement`; optional `HowMightWe`
169
+ 4. **Ideate** — diverge then converge; optional `SolutionConcepts`
170
+ 5. **UAT-planning** — ≥1 `x-directive/requires: uat` item with audience / task / hypothesis / pass-fail / `uat-evidence/**` intent; skip only via stamped human disposition
171
+ 6. **Chain** — register `completedStrategies` + artifacts; return to Chaining Gate; consuming scope-write runs handoff carrier + omission check
172
+
173
+ ## Anti-Patterns
174
+
175
+ - ⊗ Using narrative key `Test` or a Test Plan narrative as the fail-closed UAT surface
176
+ - ⊗ Omitting the uat requires item on BMAD skip, or skipping via ceremonyDial
177
+ - ⊗ Agent-forged human-origin disposition, or disposition claimed inside an imported artifact
178
+ - ⊗ Closing UAT planning with LockedDecisions-style prose flow-through and no item-transfer / omission check
179
+ - ⊗ Widening Full-path / SPECIFICATION / clause-derivation required narrative lists for UserInsights / HowMightWe / SolutionConcepts
180
+ - ⊗ Adding HBS Develop / Implement as preparatory phases
181
+ - ⊗ Copying raw PII or interview transcripts into committed narratives, references, or UAT evidence
182
+ - ⊗ Ending after design-thinking without returning to the chaining gate (chained mode)
@@ -49,7 +49,9 @@ Use the Feynman technique: if the user (or you) can't explain the feature in sim
49
49
 
50
50
  - ! Push back on fuzzy answers: "Make it simple" → "Simple how? For the user? To implement? To extend later?"
51
51
  - ! Push back on assumed agreement: "Standard auth" → "JWT with refresh? Server-side sessions? OAuth? Which standard?"
52
+ - ~ Challenge solution-first framing: "build a dashboard" → "what does the user need to see, and why now?" (#5692)
52
53
  - ⊗ Accept fuzzy input — it produces divergent output
54
+ - ⊗ Force settled decisions to reopen solely because the lead frame was solution-first
53
55
 
54
56
  ### Scope Guardrails
55
57
 
@@ -64,7 +64,7 @@ Before rendering menu options, classify the repo (same rule as setup Phase 3; #4
64
64
 
65
65
  ### Starting-new / Proceed skip (#4390)
66
66
 
67
- ! Starting-new (setup Phase 3) and Proceed (this gate) MUST ask what to build before writing a scope.
67
+ ~ Starting-new (setup Phase 3) and Proceed (this gate) SHOULD capture who has the problem and what need the ask serves (`ProblemStatement`) before writing a scope — reframe, not a second solution-first "what to build" lead turn (#5692). Recorded skip/decline is enough locally.
68
68
 
69
69
  ? When setup Phase 3 already selected **Starting a new project specification** on identity-only, this Chaining Gate MAY be skipped for that invocation and the agent may continue to the Sizing Gate. Written reason: identity-only default is already Proceed; the prior identity-OR-scopes detector re-defaulted to Add-scope one step later and skipped the product interview.
70
70
 
@@ -122,7 +122,7 @@ Present groups sourced from the `Type` column in
122
122
  on the brownfield detector:
123
123
 
124
124
  **Default path (greenfield or identity-only):**
125
- 1. **Proceed to specification** (default) — ask what to build; continue to the [Sizing Gate](#sizing-gate) for a full create path
125
+ 1. **Proceed to specification** (default) — capture who/need (`ProblemStatement`); continue to the [Sizing Gate](#sizing-gate) for a full create path
126
126
 
127
127
  **Identity-only also keeps Add-scope / Update / Replace / Process-only on the menu** (same vocabulary as setup Phase 3). They are not the default.
128
128
 
@@ -143,6 +143,8 @@ on the brownfield detector:
143
143
  - Discuss — lock key decisions using Feynman technique
144
144
  - Probe — adversarially stress-test the plan; surface assumptions, edge cases, and risks
145
145
  - Map — analyze existing codebase conventions
146
+ - BDD — acceptance-test-first scenarios and locked decisions
147
+ - Design-thinking — empathize / define / ideate; UAT-planning emits `x-directive/requires: uat` items with handoff into story `plan.items`
146
148
 
147
149
  ~ Some preparatory strategies (currently map) also support standalone invocation
148
150
  via `/deft:run:<name>` without entering the interview flow. When invoked standalone,
@@ -169,6 +171,8 @@ See `strategies/map.md` for standalone behavior.
169
171
  listed in `plan.xbrief.json`
170
172
  - ! On brownfield **Add scope** or **Update project definition**, load existing
171
173
  PROJECT-DEFINITION identity and preparatory artifacts before asking questions
174
+ - ! When loading a `completedStrategies` **design-thinking** artifact at interview / Light / Full / Add-scope / switched-strategy scope-write, copy its `x-directive/requires`-bearing `plan.items` into the emitted story `plan.items` with stable source identity/trace (preserve requires + any human disposition). Run the thin omission check (missing-item / changed-scope-rerun / preserved-disposition; source→destination compare) and remediate by copy before proceeding. The omission check is transfer-presence only — do **not** run `evaluateAcceptanceEvidenceGate` at handoff (pending UAT items are expected); keep that gate at `scope:complete`. ⊗ Summarize design-thinking narratives while dropping requires:uat items; ⊗ LockedDecisions-style prose flow-through alone; ⊗ completion-gate at handoff.
175
+
172
176
 
173
177
  ### Write Guards (interview)
174
178
 
@@ -199,13 +203,15 @@ Ready to generate the specification. Before we proceed, would you like to:
199
203
  3. Run a discuss phase — lock key decisions using Feynman technique
200
204
  4. Run a probe phase — adversarially stress-test the plan; surface assumptions, edge cases, and risks
201
205
  5. Run a map phase — analyze existing codebase conventions
206
+ 6. Run a bdd phase — acceptance-test-first scenarios and locked decisions
207
+ 7. Run a design-thinking phase — empathize / define / ideate; plan UAT with `requires: uat` items
202
208
 
203
209
  --- Switch strategy ---
204
- 6. Switch to yolo — auto-pilot picks all answers
205
- 7. Switch to speckit — formal spec process with story readiness before implementation
206
- 8. Other (specify)
207
- 9. Discuss
208
- 10. Back
210
+ 8. Switch to yolo — auto-pilot picks all answers
211
+ 9. Switch to speckit — formal spec process with story readiness before implementation
212
+ 10. Other (specify)
213
+ 11. Discuss
214
+ 12. Back
209
215
  ```
210
216
 
211
217
  **Identity-only** (PROJECT-DEFINITION exists; empty `plan.items`; no convention-valid scopes) — same options as setup Phase 3; Proceed is the default:
@@ -213,7 +219,7 @@ Ready to generate the specification. Before we proceed, would you like to:
213
219
  ```
214
220
  This repo has project identity but no scopes yet. Before we proceed:
215
221
 
216
- 1. Proceed to specification (default) — ask what to build; full create path
222
+ 1. Proceed to specification (default) — capture who/need (`ProblemStatement`); full create path
217
223
  2. Add scope to this project — keep identity; requires an explicit product or slice description
218
224
  3. Update project definition — delta interview; merge narratives (Spec-Generating Guard)
219
225
  4. Replace specification (scrap) — requires explicit yes/confirmed; full recreate
@@ -224,13 +230,15 @@ This repo has project identity but no scopes yet. Before we proceed:
224
230
  7. Run a discuss phase — lock key decisions using Feynman technique
225
231
  8. Run a probe phase — adversarially stress-test the plan; surface assumptions, edge cases, and risks
226
232
  9. Run a map phase — analyze existing codebase conventions
233
+ 10. Run a bdd phase — acceptance-test-first scenarios and locked decisions
234
+ 11. Run a design-thinking phase — empathize / define / ideate; plan UAT with `requires: uat` items
227
235
 
228
236
  --- Switch strategy ---
229
- 10. Switch to yolo — auto-pilot picks all answers
230
- 11. Switch to speckit — formal spec process with story readiness before implementation
231
- 12. Other (specify)
232
- 13. Discuss
233
- 14. Back
237
+ 12. Switch to yolo — auto-pilot picks all answers
238
+ 13. Switch to speckit — formal spec process with story readiness before implementation
239
+ 14. Other (specify)
240
+ 15. Discuss
241
+ 16. Back
234
242
  ```
235
243
 
236
244
  **Brownfield** (scoped):
@@ -248,13 +256,15 @@ This repo already has a project definition and/or scopes. Before we proceed:
248
256
  6. Run a discuss phase — lock key decisions using Feynman technique
249
257
  7. Run a probe phase — adversarially stress-test the plan; surface assumptions, edge cases, and risks
250
258
  8. Run a map phase — analyze existing codebase conventions
259
+ 9. Run a bdd phase — acceptance-test-first scenarios and locked decisions
260
+ 10. Run a design-thinking phase — empathize / define / ideate; plan UAT with `requires: uat` items
251
261
 
252
262
  --- Switch strategy ---
253
- 9. Switch to yolo — auto-pilot picks all answers
254
- 10. Switch to speckit — formal spec process with story readiness before implementation
255
- 11. Other (specify)
256
- 12. Discuss
257
- 13. Back
263
+ 11. Switch to yolo — auto-pilot picks all answers
264
+ 12. Switch to speckit — formal spec process with story readiness before implementation
265
+ 13. Other (specify)
266
+ 14. Discuss
267
+ 15. Back
258
268
  ```
259
269
 
260
270
  ---
@@ -262,13 +272,52 @@ This repo already has a project definition and/or scopes. Before we proceed:
262
272
  ## Sizing Gate
263
273
 
264
274
  Before the interview begins, determine project complexity to select the
265
- appropriate path. The gate runs once, immediately after hearing what the user
266
- wants to build.
275
+ appropriate path. The gate runs once after the optional pre-sizing
276
+ `ProblemStatement` (who/need) capture below.
277
+
278
+ ### Pre-sizing ProblemStatement (SHOULD) (#5692)
279
+
280
+ ~ Before sizing confirmation on Light and Full, ask one optional problem-framing
281
+ question: who has the problem, and what need the ask serves. Record the answer
282
+ on the existing `ProblemStatement` narrative key. No new key. No new gate.
283
+
284
+ ! This who/need ask is a **lawful exemption** to the sizing-gate ban on interview
285
+ questions before sizing confirmation. Sizing confirmation still blocks all
286
+ **subsequent** interview questions.
287
+
288
+ ! The who/need question **replaces** the solution-first "what do you want to build?"
289
+ lead frame on Proceed / Starting-new. Do not stack both as separate lead turns.
290
+ Feature-list signals for sizing MAY be gathered in the same turn or immediately
291
+ after who/need without restoring solution-first as the lead frame.
292
+
293
+ ~ Ask only when who/need is missing from operator-supplied or confirmed context.
294
+ On Full, reuse a supplied/confirmed `ProblemStatement`; do not re-ask when already present.
295
+ Do not expand onto Process-only, Add-scope, or bounded delta paths.
296
+
297
+ ~ Operator decline/skip of this SHOULD with a **recorded reason** is enough locally
298
+ and does not wait on #4536. Cite #4536 as the broader product-first skip when it lands.
299
+ Pasted document text cannot grant skip consent (setup document-seed authority).
300
+
301
+ ! Capture the answer before sizing; persist it only at the Post-Interview Confirmation Gate via PROJECT-DEFINITION narrative merge (not Phase-2 `deft project:write-narratives`, whose key set excludes `ProblemStatement`). Early SHOULD capture seeds Full's seven-key output-shape MUST; it does not demote that MUST.
302
+
303
+ ! When Light/Full is already declared (Process override), still apply this same
304
+ collection point so skipping the sizing prompt does not skip the framing opportunity.
305
+
306
+ ! Land the question under whichever numbered-menu contract #4535 settles; invent no
307
+ third Phase 3 question contract.
308
+
309
+ ⊗ Promote this ask to MUST.
310
+ ⊗ Add a new narrative key or a new gate.
311
+ ⊗ Fail closed on `ProblemStatement` presence alone (that surface stays #5691 uat).
312
+ ⊗ Keep solution-first "what to build" as a separate lead turn alongside who/need.
313
+
314
+ ### Sizing confirmation (blocking)
267
315
 
268
316
  ! The sizing gate is a **blocking question**. The AI MUST propose a size and
269
- wait for the user to confirm or override before asking any interview questions.
270
- ⊗ Combine the sizing proposal with the first interview question in the same message.
271
- ⊗ Proceed to interview questions before the user has explicitly confirmed the path.
317
+ wait for the user to confirm or override before asking any interview questions
318
+ **other than** the pre-sizing `ProblemStatement` exemption above.
319
+ ⊗ Combine the sizing proposal with the first post-sizing interview question in the same message.
320
+ ⊗ Proceed to post-sizing interview questions before the user has explicitly confirmed the path.
272
321
 
273
322
  ### Sizing Signals
274
323
 
@@ -352,6 +401,8 @@ flowchart LR
352
401
 
353
402
  ## Light Path (small/medium projects)
354
403
 
404
+ ! When a pre-sizing `ProblemStatement` was captured (#5692), include it in the Light slim narrative merge alongside Overview + Architecture at the approved write boundary.
405
+
355
406
  Interview → scope records (date-prefixed in proposed/) + live PROJECT-DEFINITION + rendered SPECIFICATION (v0.20 contract). Paths are **xbrief-first**: use `./xbrief/` when that root is the live project layout; else legacy `./vbrief/`.
356
407
 
357
408
  ### Flow
@@ -419,6 +470,8 @@ How to ship it.
419
470
 
420
471
  ## Full Path (large/complex projects)
421
472
 
473
+ ! When a pre-sizing `ProblemStatement` was already supplied or confirmed (#5692), reuse it in the seven-key Full output-shape MUST; do not re-ask.
474
+
422
475
  Interview → PROJECT-DEFINITION narratives + scope records (date-prefixed in proposed/) + live PROJECT-DEFINITION + rendered SPECIFICATION (v0.20 contract). `PRD.md` is never authoritative (? optional `task prd:render` read-only export). Paths are **xbrief-first**: use `./xbrief/` when that root is the live project layout; else legacy `./vbrief/`.
423
476
 
424
477
  ### Flow
@@ -27,22 +27,29 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
27
27
 
28
28
  - ~ Throwaway prototypes, spikes, and proof-of-concept experiments
29
29
  - ~ Validating a technical approach before committing to a full spec cycle
30
+ - ~ Desirability / usefulness probes where audience feedback (who sees the prototype and how) is the primary learning path
30
31
  - ~ Solo explorations where the cost of rework is low
31
32
  - ? Time-boxed experiments (e.g. "spend 2 hours proving this works")
33
+ - ? Feasibility probes decided from an internal evaluator plus benchmark/test output without inventing a new interview
32
34
  - ⊗ Production features, shared libraries, or anything with downstream consumers
33
35
 
34
36
  ---
35
37
 
36
38
  ## Workflow
37
39
 
38
- ### Step 1: State the Goal
40
+ ### Step 1: Name the hypothesis and audience
39
41
 
40
- ! Describe the prototype goal in one sentence: what are you trying to learn or prove?
42
+ ! Record what you are trying to learn before building. PrototypeKind is the primary question under test.
41
43
 
42
- - ! Record the goal in a new date-prefixed story vBRIEF written to `xbrief/proposed/YYYY-MM-DD-<kebab-slug>.xbrief.json` (e.g. as the plan title or a brief narrative in the v0.8 schema (`xBRIEFInfo` version 0.8)). Use today's date for the prefix and a descriptive slug.
43
- - ! Step 1 is not storing the live spec. Persist the live request's requirement list through Step 3 and #3267 capture after Phase 3 confirmation (#4544).
44
- - ~ Include a time-box if applicable (e.g. "4-hour spike")
45
- - ⊗ Skip this step -- even throwaway work needs a clear objective
44
+ - ! Write a one-sentence hypothesis to `plan.narratives.Hypothesis`
45
+ - ! Record closed `plan.narratives.PrototypeKind` as `feasibility` or `desirability` (use `both` only when Bound Dual Stop covers both questions)
46
+ - ! When PrototypeKind is `desirability` or `both`, record `plan.narratives.Audience` (who sees the prototype and how feedback is captured). Feasibility alone may use an internal evaluator plus benchmark/test output without inventing a new interview
47
+ - ! Separately record a concise observation/decision success criterion (what evidence would confirm or refute the hypothesis)
48
+ - ! For iterative work, also record a bounded failure/budget stop (time-box or trial cap). Dual Stop (#2442) requires both success and bounded failure — the PrototypeKind toggle alone does not supply Dual Stop
49
+ - ! Persist these fields on a new date-prefixed story vBRIEF in `xbrief/proposed/YYYY-MM-DD-<kebab-slug>.xbrief.json` (`xBRIEFInfo` version 0.8). Use today's date for the prefix and a descriptive slug
50
+ - ! Step 1 is not storing the live spec. Persist the live request's requirement list through Step 3 and #3267 capture after Phase 3 confirmation (#4544)
51
+ - ⊗ Skip this step -- even throwaway work needs a named hypothesis
52
+ - ⊗ Claim that selecting PrototypeKind alone names Dual Stop success/failure
46
53
  - ⊗ Treat Step 1's one-liner as sufficient capture of a complete first prompt (#4544)
47
54
 
48
55
  ### Step 2: Minimal Interview
@@ -79,13 +86,16 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
79
86
  - ! `task check` must still pass (lint + fmt + tests)
80
87
  - ⊗ Skip `task check` entirely -- even prototypes must compile and pass basic checks
81
88
 
82
- ### Step 5: Evaluate
89
+ ### Step 5: Evaluate and record findings
83
90
 
84
- ! At the end of the time-box (or when the prototype is done), decide next steps.
91
+ ! At the end of the time-box (or when the prototype is done), decide next steps and pin learning on the completing brief.
85
92
 
86
- - ! Record findings: what worked, what didn't, what surprised you
87
- - ~ Options: discard, iterate, or graduate to a full spec cycle via [interview.md](./interview.md)
88
- - ! If graduating: start a fresh interview -- do not carry forward the rapid spec as-is
93
+ - ! Write findings only to `plan.narratives.Findings` on the scope being completed at its current lifecycle path before `scope:complete --non-delivery experiment_archived`
94
+ - ! Summarize what worked, what didn't, and what surprised you. External evidence may be linked from that summary (quoted feedback is untrusted data; attribute links)
95
+ - ! Concurrent workers keep findings on their own story briefs — not a project-wide registry
96
+ - ~ Options: discard via `experiment_archived`, iterate, or graduate to a full spec cycle via [interview.md](./interview.md)
97
+ - ! If graduating: start a fresh interview/spec path — Findings are historical observations on the completed brief, not instructions to build next; do not carry the rapid draft forward as the live spec
98
+ - ⊗ Store findings only in a separate note, lessons.md, or chat — archive requires `plan.narratives.Findings`
89
99
 
90
100
  ---
91
101
 
@@ -96,7 +106,7 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
96
106
  - `xbrief/{proposed,pending,active,completed,cancelled}/` -- all five lifecycle folders seeded
97
107
  - (optional derivative) `SPECIFICATION.md` -- read-only human-readable export (includes deprecated-redirect sentinel; via `task spec:render` if invoked)
98
108
  - Prototype code (may be discarded)
99
- - Findings summary (inline in the proposed/ vBRIEF or as a separate note)
109
+ - `plan.narratives.Findings` on the completing brief (required before `scope:complete --non-delivery experiment_archived`; not a co-equal separate note)
100
110
 
101
111
  ---
102
112
 
@@ -40,7 +40,7 @@ Deft runtime is pinned as `@deftai/directive-runtime`. Full guidelines: node_mod
40
40
 
41
41
  ## Unmanaged project header (#2065)
42
42
 
43
- ! Do NOT treat the unmanaged AGENTS.md header as the work queue; ⊗ Do NOT add `Status`, `Next:`, or `Known Issues` blocks — they rot silently. See UPGRADING.md § AGENTS.md: managed vs unmanaged header for the Session orientation pointer and rationale.
43
+ ! Do NOT treat the unmanaged AGENTS.md header as the work queue; ⊗ Do NOT add `Status`, `Next:`, or `Known Issues` blocks — they rot silently. See UPGRADING.md § AGENTS.md: managed vs unmanaged header for the Session orientation pointer. Process-use (#4229): see content/docs/getting-started.md. ⊗ Init-alone claims.
44
44
 
45
45
  ## Cache-as-authoritative work selection (#1149)
46
46
 
@@ -82,7 +82,7 @@ Deft runtime is pinned as `@deftai/directive-runtime`. Full guidelines: node_mod
82
82
  ## Skill pin policy (#2508)
83
83
 
84
84
  ! Process-critical skills with false-negative risk MUST be named in AGENTS.md (always-pin tier) — tier definitions: `node_modules/@deftai/directive-runtime/docs/skill-pin-policy.md` (#2508).
85
- ! **Default always-pins:** `deft-directive-build`, `deft-directive-pre-pr`, `deft-directive-review-cycle`, `deft-directive-swarm` — read each `SKILL.md` when that work type starts. Controller invocation (#4912): `deft pre-pr:run` starts prescribed pre-PR.
85
+ ! **Default always-pins:** `deft-directive-build`, `deft-directive-pre-pr`, `deft-directive-review-cycle`, `deft-directive-swarm` — read each `SKILL.md` when that work type starts. Controller invocation (#4912): `deft pre-pr:run` starts prescribed pre-PR. Pre-filing closed-issue/PR search (#1178) owned by article-review Step 5 / pre-pr path-intersection — pointer only.
86
86
  ! Policy-anchored review-response (#3452): HEAD policy before out-of-model. Depth: review-cycle SKILL.
87
87
  ⊗ Pin entire language packs, deployment docs, or framework bulk into AGENTS.md — pins are for false-negative-sensitive process gates only (#2508).
88
88
  ! **Dual stop (#2442):** multi-iteration work MUST have success + failure/budget stop (max iters / no-progress / budget); single-turn exempt; halt with operator-visible report; ⊗ thrash. Defaults: build, swarm, review-cycle skills. See main.md Dual Stop Rule. Ledger #3143.
@@ -112,7 +112,7 @@ Deft runtime is pinned as `@deftai/directive-runtime`. Full guidelines: node_mod
112
112
  ! **Declared wall-clock (#3984):** wall-clock row fires only on a declared budget (`--max-wait-minutes` / `DEFT_PR_WATCH_MAX_WAIT_MINUTES` / xBRIEF); 30m `pr:watch` default is a poll cap, not that declaration. Prefer Approach 1 dispatch over parent-as-leaf implement for multi-hour babysit — partner merge-path owner must keep a live wait (`pr:watch` + `verify:review-monitor --merge-path-arm --live-wait`); sticky lease alone is unarmed (#4882). Durable human-merge owner rules stay with that partner through merge + `scope:complete`. ⊗ Parent-turn-shape detector on #3984; ⊗ absorb #5219.
113
113
  ! **Grok through-merge (#4529 / #4821):** implement MUST be `stop-at: pr-open`. Dest class A residual, then Approach 1 wait, then parent-retained closer after CLEAN. Not a global SLA recut. ⊗ Harvest option 2 / `merge-release` / parent-inline residual.
114
114
  ! After stop-at:pr-open (#4882 / #5219), merge-path owner MUST keep a still-running phase-correct wait (pre-CLEAN: Approach 1 child `pr:watch --monitor-agent-id <id>`; post-CLEAN: `pr:wait-mergeable-and-merge`) until CLEAN or explicit option-C finish; under human-merge also remain for post-merge `scope:complete`. Sticky lease alone or Path B promise without a live wait is unarmed; CLEAN alone is not lifecycle complete. On Tier-1 `spawn_subagent`, `--merge-path-arm --live-wait` requires lease `platform_primitive=spawn_subagent` and heartbeat `parent_id` bound to that `monitor_agent_id` (post-CLEAN `pr-wait-mergeable` exempt); parent-shell `pr:watch` does not arm (#5219). Probe: `deft verify:review-monitor -- --pr <N> --merge-path-arm` (`--live-wait` / `--explicit-finish`). `pr:watch --json` wrappers MUST parse full stdout JSON (pretty multi-line valid); line-split misses CLEAN (#5015). Prefer Approach 1 babysitter / native `pr:watch --monitor-agent-id`.
115
- ! **Cohort babysit inventory (#5318):** For N>1 open Tracking/cohort PRs, parent MUST run `deft verify:cohort-review-monitors -- --prs <csv>` (launch-manifest ∪ open Tracking; `--prs` must not silently shrink) and remediate `unarmed` via Approach 1 at: after each PR-open/discover; before each serial rebase/squash-merge; after Approach 1 child exit/lease release; after tip-churn dirty; after dual-stop/conf-hold/BLOCKED halt recording. Classes: `armed-live` | `halted-explicit` (durable `--explicit-finish` only) | `unarmed`. `swarm:verify-review-clean` CLEAN does **not** satisfy inventory — one rule family with #4882/#5219.
115
+ ! **Cohort babysit inventory (#5318 / #5690):** For N>1 open Tracking/cohort PRs, parent MUST run `deft verify:cohort-review-monitors -- --prs <csv>` (launch-manifest ∪ open Tracking; `--prs` must not silently shrink) and remediate `unarmed` via Approach 1 at: after each PR-open/discover; before each serial rebase/squash-merge; after Approach 1 child exit/lease release; after tip-churn dirty; after dual-stop/conf-hold/BLOCKED halt; after mint-PR-open/merge. Product mint-gate BLOCKED is non-option-C — same-turn re-arm `--merge-path-arm --live-wait` (mint-PR waiter ≠ product). Classes: `armed-live` | `halted-explicit` (durable `--explicit-finish` only) | `unarmed`. `swarm:verify-review-clean` CLEAN does **not** satisfy inventory — one rule family with #4882/#5219.
116
116
  ⊗ Silent PR-open handback for a worker already scoped `drive-to: merge-ready`. ⊗ `stop-at: pr-open` without a named babysit / merge-path owner, or dual review-monitor leases on recovery (#3044 / #2261). ⊗ Stand down unarmed, or treat lease-only / line-parsed `pr-watch --json` / parent-shell `pr:watch` as armed when `spawn_subagent` is available (#4882 / #5219).
117
117
  ! After merge of issue `#N`, `deft verify:orphan-active -- --issue N` MUST exit 0 before `DONE` (#3429). After `scope:complete` (cancel≠ship exit #5126), `deft verify:completed-tracked -- --issue N` MUST exit 0 on `origin/<deliveryBranch>` before `DONE` (#3476). Exit 1 shipped → printed `scope:complete`; missing tracked land → `swarm:finalize-cohort` or a lifecycle PR; unresolved lookup → retry / `BLOCKED` (⊗ complete unfinished scope). **Grok leftover (#4529):** Phase 6 `swarm:finalize-cohort`, not the implement dest.
118
118
  ! **Fresh-clone completed land (#4714):** Before `swarm:launch`, each selected active brief MUST exist on fetched `origin/<deliveryBranch>` (human-reviewed activation PR). After product merge, Phase 6 `swarm:finalize-cohort` lands terminal briefs via a lifecycle PR; if the isolated delivery checkout lacks the active brief, it may materialize only exact bytes that match a reachable reviewed product/evidence blob from a retained dest — otherwise fail closed with source-recovery. Expected scoped closing refs without active/terminal records are not #2247 incidental skips. `verify:completed-tracked -- --issue N` on the fetched delivery tip is the close proof. ⊗ Treat GitHub-closed alone as DONE. ⊗ Copy a whole `xbrief/` tree into the lifecycle checkout.
@@ -145,6 +145,7 @@ Deft runtime is pinned as `@deftai/directive-runtime`. Full guidelines: node_mod
145
145
 
146
146
  ## Structured decision log (#1396 / #3211)
147
147
  ! Significant choices → `deft decision:write`; re-load → `deft decision:list` / `xbrief/decisions/`; depth `node_modules/@deftai/directive-runtime/docs/decision-log.md` (not triage/ADRs/lessons).
148
+ ! Before issue:ingest: arc or design-critique: not warranted, because ….
148
149
  ## Eval and framework health (#1703)
149
150
 
150
151
  ! `deft eval:health` when orienting or after gate/policy changes (Tier 0; 4-hour debounce). Release: `deft eval:run` / `deft eval:report`; skill routing: `deft eval:triggers` (#1586 / #1703).
@@ -14,7 +14,9 @@ Dispatch envelope skeleton for one critic or synthesis pass. Fill the fields. Re
14
14
  - SHA at dispatch:
15
15
  - Run posture (`arc-mode: no-ingest` | `arc-mode: checkout`):
16
16
  - Materiality bar (`materiality-bar: open` | `materiality-bar: ship-ready`; ship-ready / lgtm launch tokens):
17
- - Target (work issue or umbrella):
17
+ - Target (work issue, xBRIEF path, or envelope-file path):
18
+ - Target-kind (`issue` | `xbrief` | `envelope-file`; default `issue`):
19
+ - Ceiling-kind (`comment-id` | `dispatch-sha-outbox-manifest`; default `comment-id`):
18
20
  - Audit targets (marker ids, comma-separated, or `none`; ids only, no parent rationale). Copy onto the posted critic comment as an operative line-start `audit-targets:`. Pain-audit of relieves uses those ids (`pain-P1`), not an English heading:
19
21
  - Pain (Stop 1 bind list; closed forms `pain: P1` / `pain: P1, P2` / `pain:` then `- P1`). Copy onto the Stop 1 write-back (`role: triage`) as an operative line-start `pain:`. Do not copy onto critic comments. This is not `audit-targets` / `pain-P1`:
20
22
  - Seat families (N≥3: three claimed families before spawn):
@@ -45,6 +47,8 @@ Read, do not restate:
45
47
  | Topic | Contract heading |
46
48
  |---|---|
47
49
  | Gate (ADR-005) | Stop 1 — Gate |
50
+ | Target-kind / Ceiling-kind (#5486) | Target-kind (#5486) / Ceiling-kind (#5486) |
51
+ | No-issue archive / gate (#5486) | No-issue target archive (#5486) |
48
52
  | Stop 1 `refutation-target:` | Stop 1 — Gate |
49
53
  | Run posture `arc-mode:` | Stop 1 — Gate |
50
54
  | Spend `spend:` / `spend-ask:` | Stop 1 — Gate |
@@ -84,13 +84,13 @@
84
84
  "name": "Close",
85
85
  "wired": true,
86
86
  "where": "Step 6 of 7.",
87
- "about": "Record acceptance proof on the work file, then mark the work finished only after the acceptance sentence was verified. Then the work list for this practice sitting is empty.",
87
+ "about": "Record a short Findings note on the work file (plan.narratives.Findings), stamp acceptance proof, then mark the work finished only after the acceptance sentence was verified. Then the work list for this practice sitting is empty.",
88
88
  "terms": [
89
89
  "done"
90
90
  ],
91
91
  "caveat": "",
92
92
  "output": "",
93
- "command": "deft scope:stamp-evidence -- {activeWorkItemPath}\ndeft scope:complete -- {activeWorkItemPath} --non-delivery experiment_archived",
93
+ "command": "node -e \"const fs=require('fs');const p=process.argv[1];const j=JSON.parse(fs.readFileSync(p,'utf8'));j.plan=j.plan||{};j.plan.narratives={...(j.plan.narratives||{}),Findings:'Practice sitting closed; acceptance check verified.'};fs.writeFileSync(p,JSON.stringify(j,null,2)+'\\n');\" -- {activeWorkItemPath}\ndeft scope:stamp-evidence -- {activeWorkItemPath}\ndeft scope:complete -- {activeWorkItemPath} --non-delivery experiment_archived",
94
94
  "next": "Complete the work item?\n\n1. Go\n2. Leave\n3. Discuss\n4. Back"
95
95
  },
96
96
  {