@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.
- package/UPGRADING.md +4 -3
- package/commands.md +9 -6
- package/contracts/design-critique.md +39 -1
- package/contracts/human-origin-authz.md +14 -8
- package/dist/coverage-hotspots.d.ts +3 -0
- package/dist/coverage-hotspots.js +42 -2
- package/dist/doctor-diagnose.d.ts +1 -1
- package/dist/doctor-diagnose.js +29 -3
- package/dist/doctor.js +1 -1
- package/dist/occupancy-release.d.ts +5 -0
- package/dist/occupancy-release.js +11 -3
- package/dist/policy.d.ts +2 -0
- package/dist/policy.js +6 -0
- package/dist/session-start.js +28 -1
- package/dist/triage-actions.js +10 -2
- package/dist/verify-review-monitor.d.ts +7 -0
- package/dist/verify-review-monitor.js +21 -0
- package/docs/framework-gap-filing.md +85 -0
- package/docs/getting-started.md +13 -1
- package/docs/product-signal.md +1 -1
- package/package.json +1 -1
- package/packs/skills/skills-pack-0.1.json +10 -7
- package/packs/strategies/strategies-pack-0.1.json +32 -19
- package/scm/github.md +1 -1
- package/skills/deft-directive-article-review/SKILL.md +104 -24
- package/skills/deft-directive-design-critique/SKILL.md +10 -9
- package/skills/deft-directive-feedback/SKILL.md +37 -21
- package/skills/deft-directive-pre-pr/SKILL.md +14 -0
- package/skills/deft-directive-product-signal/SKILL.md +1 -1
- package/skills/deft-directive-review-cycle/SKILL.md +18 -1
- package/skills/deft-directive-setup/SKILL.md +41 -11
- package/skills/deft-directive-swarm/references/host-grok-build.md +1 -1
- package/skills/deft-directive-tutorial/SKILL.md +1 -1
- package/strategies/README.md +1 -0
- package/strategies/artifact-guards.md +2 -2
- package/strategies/design-thinking.md +182 -0
- package/strategies/discuss.md +2 -0
- package/strategies/interview.md +76 -23
- package/strategies/rapid.md +22 -12
- package/templates/agents-entry.md +4 -3
- package/templates/design-critique-brief.md +5 -1
- package/tutorial/beats.json +2 -2
- package/vendor/directive-content/UPGRADING.md +4 -3
- package/vendor/directive-content/commands.md +9 -6
- package/vendor/directive-content/contracts/design-critique.md +39 -1
- package/vendor/directive-content/contracts/human-origin-authz.md +14 -8
- package/vendor/directive-content/docs/framework-gap-filing.md +85 -0
- package/vendor/directive-content/docs/getting-started.md +13 -1
- package/vendor/directive-content/docs/product-signal.md +1 -1
- package/vendor/directive-content/packs/skills/skills-pack-0.1.json +10 -7
- package/vendor/directive-content/packs/strategies/strategies-pack-0.1.json +32 -19
- package/vendor/directive-content/scm/github.md +1 -1
- package/vendor/directive-content/skills/deft-directive-article-review/SKILL.md +104 -24
- package/vendor/directive-content/skills/deft-directive-design-critique/SKILL.md +10 -9
- package/vendor/directive-content/skills/deft-directive-feedback/SKILL.md +37 -21
- package/vendor/directive-content/skills/deft-directive-pre-pr/SKILL.md +14 -0
- package/vendor/directive-content/skills/deft-directive-product-signal/SKILL.md +1 -1
- package/vendor/directive-content/skills/deft-directive-review-cycle/SKILL.md +18 -1
- package/vendor/directive-content/skills/deft-directive-setup/SKILL.md +41 -11
- package/vendor/directive-content/skills/deft-directive-swarm/references/host-grok-build.md +1 -1
- package/vendor/directive-content/skills/deft-directive-tutorial/SKILL.md +1 -1
- package/vendor/directive-content/strategies/README.md +1 -0
- package/vendor/directive-content/strategies/artifact-guards.md +2 -2
- package/vendor/directive-content/strategies/design-thinking.md +182 -0
- package/vendor/directive-content/strategies/discuss.md +2 -0
- package/vendor/directive-content/strategies/interview.md +76 -23
- package/vendor/directive-content/strategies/rapid.md +22 -12
- package/vendor/directive-content/templates/agents-entry.md +4 -3
- package/vendor/directive-content/templates/design-critique-brief.md +5 -1
- package/vendor/directive-content/tutorial/beats.json +2 -2
- package/vendor/directive-core/dist/.tsbuildinfo +1 -1
- package/vendor/directive-core/dist/content-contracts/skills/helpers.d.ts +11 -1
- package/vendor/directive-core/dist/content-contracts/skills/helpers.d.ts.map +1 -1
- package/vendor/directive-core/dist/content-contracts/skills/helpers.js +18 -5
- package/vendor/directive-core/dist/content-contracts/skills/helpers.js.map +1 -1
- package/vendor/directive-core/dist/coverage-applicability/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/coverage-applicability/evaluate.js +39 -0
- package/vendor/directive-core/dist/coverage-applicability/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.d.ts +24 -5
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.js +89 -8
- package/vendor/directive-core/dist/coverage-hotspots/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/design-critique/auto-stamp-path1.d.ts +40 -0
- package/vendor/directive-core/dist/design-critique/auto-stamp-path1.d.ts.map +1 -1
- package/vendor/directive-core/dist/design-critique/auto-stamp-path1.js +116 -0
- package/vendor/directive-core/dist/design-critique/auto-stamp-path1.js.map +1 -1
- package/vendor/directive-core/dist/design-critique/citation-grammar.d.ts +36 -0
- package/vendor/directive-core/dist/design-critique/citation-grammar.d.ts.map +1 -1
- package/vendor/directive-core/dist/design-critique/citation-grammar.js +60 -3
- package/vendor/directive-core/dist/design-critique/citation-grammar.js.map +1 -1
- package/vendor/directive-core/dist/design-critique/completed-arc-record.d.ts +103 -3
- package/vendor/directive-core/dist/design-critique/completed-arc-record.d.ts.map +1 -1
- package/vendor/directive-core/dist/design-critique/completed-arc-record.js +127 -5
- package/vendor/directive-core/dist/design-critique/completed-arc-record.js.map +1 -1
- package/vendor/directive-core/dist/design-critique/ingest-posture.d.ts +27 -0
- package/vendor/directive-core/dist/design-critique/ingest-posture.d.ts.map +1 -0
- package/vendor/directive-core/dist/design-critique/ingest-posture.js +66 -0
- package/vendor/directive-core/dist/design-critique/ingest-posture.js.map +1 -0
- package/vendor/directive-core/dist/design-critique/panel-handback-acceptance.d.ts +106 -7
- package/vendor/directive-core/dist/design-critique/panel-handback-acceptance.d.ts.map +1 -1
- package/vendor/directive-core/dist/design-critique/panel-handback-acceptance.js +284 -17
- package/vendor/directive-core/dist/design-critique/panel-handback-acceptance.js.map +1 -1
- package/vendor/directive-core/dist/docs/docs-impact.d.ts +13 -0
- package/vendor/directive-core/dist/docs/docs-impact.d.ts.map +1 -1
- package/vendor/directive-core/dist/docs/docs-impact.js +49 -4
- package/vendor/directive-core/dist/docs/docs-impact.js.map +1 -1
- package/vendor/directive-core/dist/doctor/main.d.ts +48 -0
- package/vendor/directive-core/dist/doctor/main.d.ts.map +1 -1
- package/vendor/directive-core/dist/doctor/main.js +221 -4
- package/vendor/directive-core/dist/doctor/main.js.map +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.d.ts.map +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.js +160 -14
- package/vendor/directive-core/dist/hooks/dispatcher.js.map +1 -1
- package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts +4 -0
- package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts.map +1 -1
- package/vendor/directive-core/dist/init-deposit/agent-hooks.js +25 -4
- package/vendor/directive-core/dist/init-deposit/agent-hooks.js.map +1 -1
- package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.d.ts.map +1 -1
- package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.js +15 -0
- package/vendor/directive-core/dist/init-deposit/skill-discovery-deposit.js.map +1 -1
- package/vendor/directive-core/dist/intake/issue-ingest.d.ts +15 -0
- package/vendor/directive-core/dist/intake/issue-ingest.d.ts.map +1 -1
- package/vendor/directive-core/dist/intake/issue-ingest.js +190 -22
- package/vendor/directive-core/dist/intake/issue-ingest.js.map +1 -1
- package/vendor/directive-core/dist/pr-closing-keywords/detect.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-closing-keywords/detect.js +52 -7
- package/vendor/directive-core/dist/pr-closing-keywords/detect.js.map +1 -1
- package/vendor/directive-core/dist/pr-watch/main.d.ts +5 -0
- package/vendor/directive-core/dist/pr-watch/main.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-watch/main.js.map +1 -1
- package/vendor/directive-core/dist/pr-watch/watch.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-watch/watch.js +5 -0
- package/vendor/directive-core/dist/pr-watch/watch.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/controller.js +118 -12
- package/vendor/directive-core/dist/pre-pr-controller/controller.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.d.ts +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.js +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/index.js.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts +5 -0
- package/vendor/directive-core/dist/pre-pr-controller/phases.d.ts.map +1 -1
- package/vendor/directive-core/dist/pre-pr-controller/phases.js +10 -0
- package/vendor/directive-core/dist/pre-pr-controller/phases.js.map +1 -1
- package/vendor/directive-core/dist/presentation-ceiling/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/presentation-ceiling/evaluate.js +3 -1
- package/vendor/directive-core/dist/presentation-ceiling/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/release/auto-hatch.d.ts +6 -0
- package/vendor/directive-core/dist/release/auto-hatch.d.ts.map +1 -1
- package/vendor/directive-core/dist/release/auto-hatch.js +13 -4
- package/vendor/directive-core/dist/release/auto-hatch.js.map +1 -1
- package/vendor/directive-core/dist/review-monitor/record.d.ts +11 -0
- package/vendor/directive-core/dist/review-monitor/record.d.ts.map +1 -1
- package/vendor/directive-core/dist/review-monitor/record.js +23 -0
- package/vendor/directive-core/dist/review-monitor/record.js.map +1 -1
- package/vendor/directive-core/dist/run-summary/emit.d.ts +2 -1
- package/vendor/directive-core/dist/run-summary/emit.d.ts.map +1 -1
- package/vendor/directive-core/dist/run-summary/emit.js +3 -0
- package/vendor/directive-core/dist/run-summary/emit.js.map +1 -1
- package/vendor/directive-core/dist/run-summary/index.d.ts +1 -1
- package/vendor/directive-core/dist/run-summary/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/run-summary/index.js.map +1 -1
- package/vendor/directive-core/dist/run-summary/types.d.ts +8 -2
- package/vendor/directive-core/dist/run-summary/types.d.ts.map +1 -1
- package/vendor/directive-core/dist/run-summary/types.js +1 -0
- package/vendor/directive-core/dist/run-summary/types.js.map +1 -1
- package/vendor/directive-core/dist/scope/delivery-evidence.d.ts +11 -0
- package/vendor/directive-core/dist/scope/delivery-evidence.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope/delivery-evidence.js +34 -0
- package/vendor/directive-core/dist/scope/delivery-evidence.js.map +1 -1
- package/vendor/directive-core/dist/scope/promote-from-issue.d.ts +2 -1
- package/vendor/directive-core/dist/scope/promote-from-issue.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope/promote-from-issue.js +17 -61
- package/vendor/directive-core/dist/scope/promote-from-issue.js.map +1 -1
- package/vendor/directive-core/dist/session/occupancy-recovery.d.ts +10 -0
- package/vendor/directive-core/dist/session/occupancy-recovery.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/occupancy-recovery.js +43 -7
- package/vendor/directive-core/dist/session/occupancy-recovery.js.map +1 -1
- package/vendor/directive-core/dist/session/occupancy.d.ts +148 -1
- package/vendor/directive-core/dist/session/occupancy.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/occupancy.js +516 -34
- package/vendor/directive-core/dist/session/occupancy.js.map +1 -1
- package/vendor/directive-core/dist/session/session-start.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/session-start.js +6 -1
- package/vendor/directive-core/dist/session/session-start.js.map +1 -1
- package/vendor/directive-core/dist/swarm/cohort-review-monitors-cli.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/cohort-review-monitors-cli.js +5 -1
- package/vendor/directive-core/dist/swarm/cohort-review-monitors-cli.js.map +1 -1
- package/vendor/directive-core/dist/swarm/cohort-review-monitors.d.ts +71 -0
- package/vendor/directive-core/dist/swarm/cohort-review-monitors.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/cohort-review-monitors.js +125 -2
- package/vendor/directive-core/dist/swarm/cohort-review-monitors.js.map +1 -1
- package/vendor/directive-core/dist/telemetry-coverage/fake-trial.d.ts.map +1 -1
- package/vendor/directive-core/dist/telemetry-coverage/fake-trial.js +9 -0
- package/vendor/directive-core/dist/telemetry-coverage/fake-trial.js.map +1 -1
- package/vendor/directive-core/dist/telemetry-coverage/kinds.d.ts.map +1 -1
- package/vendor/directive-core/dist/telemetry-coverage/kinds.js +2 -0
- package/vendor/directive-core/dist/telemetry-coverage/kinds.js.map +1 -1
- package/vendor/directive-core/dist/triage/actions/index.d.ts +8 -5
- package/vendor/directive-core/dist/triage/actions/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/triage/actions/index.js +248 -22
- package/vendor/directive-core/dist/triage/actions/index.js.map +1 -1
- package/vendor/directive-core/dist/triage/actions/types.d.ts +16 -2
- package/vendor/directive-core/dist/triage/actions/types.d.ts.map +1 -1
- package/vendor/directive-core/dist/triage/bulk/index.d.ts +8 -1
- package/vendor/directive-core/dist/triage/bulk/index.d.ts.map +1 -1
- package/vendor/directive-core/dist/triage/bulk/index.js +30 -11
- package/vendor/directive-core/dist/triage/bulk/index.js.map +1 -1
- package/vendor/directive-core/dist/value/feedback-file.d.ts +54 -6
- package/vendor/directive-core/dist/value/feedback-file.d.ts.map +1 -1
- package/vendor/directive-core/dist/value/feedback-file.js +470 -43
- 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
|
-
|
|
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) —
|
|
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
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
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) —
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
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
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
|
266
|
-
|
|
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
|
-
|
|
271
|
-
⊗
|
|
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:
|
|
40
|
+
### Step 1: Name the hypothesis and audience
|
|
39
41
|
|
|
40
|
-
!
|
|
42
|
+
! Record what you are trying to learn before building. PrototypeKind is the primary question under test.
|
|
41
43
|
|
|
42
|
-
- !
|
|
43
|
-
- !
|
|
44
|
-
-
|
|
45
|
-
-
|
|
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
|
-
- !
|
|
87
|
-
-
|
|
88
|
-
- !
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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": "
|
|
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
|
{
|