bmad-overlay 0.1.1

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 (73) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +21 -0
  3. package/PUBLISH.md +82 -0
  4. package/QUICKSTART.md +69 -0
  5. package/README.md +84 -0
  6. package/agents/orchestrator.md +94 -0
  7. package/config/agent-map.yaml +40 -0
  8. package/customizations/bmm-dev.customize.yaml +25 -0
  9. package/customizations/bmm-pm.customize.yaml +24 -0
  10. package/customizations/bmm-qa.customize.yaml +23 -0
  11. package/install/INSTALL.md +151 -0
  12. package/install/check-package.mjs +21 -0
  13. package/install/install-overlay.mjs +279 -0
  14. package/install/install-overlay.sh +14 -0
  15. package/install/merge-bmad-customizations.mjs +179 -0
  16. package/package.json +32 -0
  17. package/policies/routing-policy.md +60 -0
  18. package/runtime/README.md +112 -0
  19. package/runtime/STAGE_RUNNER.md +53 -0
  20. package/runtime/codex-orchestrator.js +922 -0
  21. package/runtime/codex-stage-runner.js +747 -0
  22. package/skills/README.md +38 -0
  23. package/skills/orchestrator-advance-stage/SKILL.md +55 -0
  24. package/skills/orchestrator-advance-stage/bmad-skill-manifest.yaml +1 -0
  25. package/skills/orchestrator-advance-stage/workflow.md +47 -0
  26. package/skills/orchestrator-block-stage/SKILL.md +44 -0
  27. package/skills/orchestrator-block-stage/bmad-skill-manifest.yaml +1 -0
  28. package/skills/orchestrator-block-stage/workflow.md +44 -0
  29. package/skills/orchestrator-close-run/SKILL.md +59 -0
  30. package/skills/orchestrator-close-run/bmad-skill-manifest.yaml +1 -0
  31. package/skills/orchestrator-close-run/workflow.md +47 -0
  32. package/skills/orchestrator-execute-active-stage/SKILL.md +50 -0
  33. package/skills/orchestrator-execute-active-stage/bmad-skill-manifest.yaml +1 -0
  34. package/skills/orchestrator-execute-active-stage/workflow.md +42 -0
  35. package/skills/orchestrator-launch-council/SKILL.md +53 -0
  36. package/skills/orchestrator-launch-council/bmad-skill-manifest.yaml +1 -0
  37. package/skills/orchestrator-launch-council/workflow.md +43 -0
  38. package/skills/orchestrator-resume-stage/SKILL.md +47 -0
  39. package/skills/orchestrator-resume-stage/bmad-skill-manifest.yaml +1 -0
  40. package/skills/orchestrator-resume-stage/workflow.md +45 -0
  41. package/skills/orchestrator-start-run/SKILL.md +62 -0
  42. package/skills/orchestrator-start-run/bmad-skill-manifest.yaml +1 -0
  43. package/skills/orchestrator-start-run/workflow.md +47 -0
  44. package/templates/CLAUDE.md +51 -0
  45. package/templates/analysis-synthesis.md +25 -0
  46. package/templates/analyst-seat-output.yaml +7 -0
  47. package/templates/architecture-handoff.yaml +8 -0
  48. package/templates/architecture-seat-output.yaml +7 -0
  49. package/templates/architecture-synthesis.md +23 -0
  50. package/templates/current-stage.yaml +26 -0
  51. package/templates/delivery-seat-output.yaml +7 -0
  52. package/templates/delivery-synthesis.md +27 -0
  53. package/templates/docs-index.md +19 -0
  54. package/templates/docs-studio-layout.md +88 -0
  55. package/templates/feature-index.md +21 -0
  56. package/templates/intake-request.yaml +12 -0
  57. package/templates/pm-handoff.yaml +11 -0
  58. package/templates/pm-seat-output.yaml +7 -0
  59. package/templates/pm-synthesis.md +25 -0
  60. package/templates/qa-review-findings.yaml +7 -0
  61. package/templates/qa-review-handoff.yaml +10 -0
  62. package/templates/qa-review-seat-output.yaml +7 -0
  63. package/templates/qa-review-summary.md +21 -0
  64. package/templates/run-manifest.md +46 -0
  65. package/templates/stage-handoff.yaml +8 -0
  66. package/workflows/councils/analyst-council.md +229 -0
  67. package/workflows/councils/architecture-council.md +240 -0
  68. package/workflows/councils/delivery-council.md +379 -0
  69. package/workflows/councils/orchestrator-governance.md +474 -0
  70. package/workflows/councils/pm-council.md +241 -0
  71. package/workflows/councils/qa-review-council.md +241 -0
  72. package/workflows/new-saas.md +51 -0
  73. package/workflows/orchestrated-saas-studio.md +155 -0
@@ -0,0 +1,62 @@
1
+ # orchestrator-start-run
2
+
3
+ ## Purpose
4
+
5
+ Start or safely resume an orchestration run.
6
+
7
+ ## When To Use
8
+
9
+ Use this skill when the visible orchestrator needs to:
10
+
11
+ - start a new run
12
+ - decide whether to reuse an active `run_id`
13
+ - initialize control files
14
+ - establish the first active stage
15
+
16
+ ## Inputs
17
+
18
+ - user request
19
+ - `docs/index.md` when present
20
+ - `docs/studio/current-stage.yaml` when present
21
+ - `docs/studio/run-manifest.md` when present
22
+
23
+ ## Required Decisions
24
+
25
+ The skill must decide:
26
+
27
+ 1. reuse current `run_id` or create a new one
28
+ 2. what the first active stage is
29
+ 3. what `current_council_spec` should be
30
+ 4. what `resume_read_order` should be
31
+
32
+ ## Procedure
33
+
34
+ 1. Read the current control files if they exist.
35
+ 2. Determine whether an active run is recoverable.
36
+ 3. If recoverable and still authoritative, reuse the same `run_id`.
37
+ 4. Otherwise create a new `run_id`.
38
+ 5. Create `docs/studio/runs/<run_id>/` if needed.
39
+ 6. Initialize or refresh:
40
+ - `docs/studio/current-stage.yaml`
41
+ - `docs/studio/run-manifest.md`
42
+ 7. Set:
43
+ - `run_id`
44
+ - `active_run_dir`
45
+ - `active_stage`
46
+ - `current_council_spec`
47
+ - `next_planned_stage`
48
+ - `allowed_transition_types`
49
+ 8. Write initial `resume_read_order`.
50
+
51
+ ## Outputs
52
+
53
+ - updated `docs/studio/current-stage.yaml`
54
+ - updated `docs/studio/run-manifest.md`
55
+ - active run directory under `docs/studio/runs/<run_id>/`
56
+
57
+ ## Success Criteria
58
+
59
+ - active run is unambiguous
60
+ - first stage is explicit
61
+ - control files point to the same run
62
+ - the next agent can resume from disk only
@@ -0,0 +1,47 @@
1
+ # Start Run Workflow
2
+
3
+ ## Goal
4
+
5
+ Initialize or safely resume a run for the overlay orchestrator.
6
+
7
+ ## Role
8
+
9
+ You are a deterministic run initializer.
10
+ You decide whether to reuse an active `run_id` or create a new one, then you align the control files.
11
+
12
+ ## Inputs
13
+
14
+ - user request
15
+ - `docs/index.md` when present
16
+ - `docs/studio/current-stage.yaml` when present
17
+ - `docs/studio/run-manifest.md` when present
18
+
19
+ ## Procedure
20
+
21
+ 1. Read current control files if they exist.
22
+ 2. Decide whether the active run is still authoritative and recoverable.
23
+ 3. If yes, reuse the same `run_id`.
24
+ 4. If no, create a new `run_id`.
25
+ 5. Ensure `docs/studio/runs/<run_id>/` exists.
26
+ 6. Initialize or refresh:
27
+ - `docs/studio/current-stage.yaml`
28
+ - `docs/studio/run-manifest.md`
29
+ 7. Set:
30
+ - `run_id`
31
+ - `active_run_dir`
32
+ - `active_stage`
33
+ - `current_council_spec`
34
+ - `next_planned_stage`
35
+ - `allowed_transition_types`
36
+ 8. Write the initial `resume_read_order`.
37
+
38
+ ## Outputs
39
+
40
+ - updated `docs/studio/current-stage.yaml`
41
+ - updated `docs/studio/run-manifest.md`
42
+
43
+ ## Success Criteria
44
+
45
+ - the active run is unambiguous
46
+ - control files point to the same run
47
+ - the next stage is explicit
@@ -0,0 +1,51 @@
1
+ # Project Agent Constitution
2
+
3
+ ## Role of the visible agent
4
+
5
+ You are the single visible orchestrator for this project.
6
+ You may delegate internally, but the user should not need to switch between agents manually.
7
+
8
+ ## Mandatory reading order
9
+
10
+ Before asking questions or making a plan, read in this order when available:
11
+
12
+ 1. `docs/index.md`
13
+ 2. `docs/features/<feature>/index.md`
14
+ 3. `docs/features/<feature>/handoff.md`
15
+ 4. `docs/features/<feature>/journal.md`
16
+ 5. `_bmad-output/project-context.md`
17
+
18
+ ## Interruption policy
19
+
20
+ Do not interrupt the user for:
21
+
22
+ - local naming choices
23
+ - file placement choices consistent with the repo
24
+ - minor refactors
25
+ - documentation updates
26
+ - reasonable test additions
27
+
28
+ Escalate only for:
29
+
30
+ - product ambiguity
31
+ - conflicting sources of truth
32
+ - architecture changes with broad impact
33
+ - external cost or security risk
34
+
35
+ ## Documentation policy
36
+
37
+ Before ending substantial work, update:
38
+
39
+ - the relevant feature `journal.md`
40
+ - the relevant feature `handoff.md`
41
+ - `docs/index.md` if navigation changed
42
+
43
+ ## Source of truth order
44
+
45
+ If sources conflict, prefer:
46
+
47
+ 1. explicit user instruction
48
+ 2. feature-local docs
49
+ 3. project-wide docs
50
+ 4. `_bmad-output/project-context.md`
51
+ 5. codebase conventions inferred from code
@@ -0,0 +1,25 @@
1
+ # Analysis Synthesis
2
+
3
+ ## Request Summary
4
+
5
+ ## Problem Statement
6
+
7
+ ## Primary ICP
8
+
9
+ ## Top Pains and Outcomes
10
+
11
+ ## Alternatives Today
12
+
13
+ ## Value Proposition
14
+
15
+ ## V1 Scope Boundary
16
+
17
+ ## Assumptions To Validate
18
+
19
+ ## Feasibility Constraints
20
+
21
+ ## Adversarial Findings
22
+
23
+ ## Council Decision
24
+
25
+ ## Recommended Input To PM Council
@@ -0,0 +1,7 @@
1
+ seat: ""
2
+ focus: ""
3
+ key_findings: []
4
+ risks: []
5
+ assumptions: []
6
+ recommendation: ""
7
+ confidence: "high|medium|low"
@@ -0,0 +1,8 @@
1
+ stage: "architecture-council"
2
+ decision: "continue|narrow|reject"
3
+ why: ""
4
+ must_read_next: []
5
+ artifacts_updated: []
6
+ open_questions: []
7
+ blocked_by: []
8
+ recommended_next_stage: "delivery-council|orchestrator"
@@ -0,0 +1,7 @@
1
+ seat: ""
2
+ focus: ""
3
+ key_findings: []
4
+ risks: []
5
+ assumptions: []
6
+ recommendation: ""
7
+ confidence: "high|medium|low"
@@ -0,0 +1,23 @@
1
+ # Architecture Synthesis
2
+
3
+ ## Request Summary
4
+
5
+ ## Product and Scope Anchors
6
+
7
+ ## Key Technical Decisions
8
+
9
+ ## System Boundaries
10
+
11
+ ## Data and State Decisions
12
+
13
+ ## API and Module Decisions
14
+
15
+ ## Delivery Slices
16
+
17
+ ## Constraints and Risks
18
+
19
+ ## Deferred Decisions
20
+
21
+ ## Council Decision
22
+
23
+ ## Recommended Input To Delivery Council
@@ -0,0 +1,26 @@
1
+ active_stage: ""
2
+ active_lead: ""
3
+ parallel_workers: []
4
+ authoritative_synthesis: ""
5
+ authoritative_handoff: ""
6
+ next_stage_blocked_on: []
7
+ stage_status: "idle"
8
+ run_id: ""
9
+ active_run_dir: ""
10
+ current_council_spec: ""
11
+ lead_task_file: ""
12
+ seat_output_files: []
13
+ seat_task_files: []
14
+ required_files_missing: []
15
+ last_completed_stage: ""
16
+ resume_read_order: []
17
+ recommended_next_action: ""
18
+ run_status: "active"
19
+ prior_run_ids: []
20
+ abandon_reason: ""
21
+ transition_reason: ""
22
+ next_planned_stage: ""
23
+ allowed_transition_types: []
24
+ control_last_updated_at: ""
25
+ blocking_reason: ""
26
+ restart_count: 0
@@ -0,0 +1,7 @@
1
+ seat: ""
2
+ focus: ""
3
+ key_findings: []
4
+ risks: []
5
+ assumptions: []
6
+ recommendation: ""
7
+ confidence: "high|medium|low"
@@ -0,0 +1,27 @@
1
+ # Delivery Synthesis
2
+
3
+ ## Request Summary
4
+
5
+ ## Plan Summary
6
+
7
+ ## Stories
8
+
9
+ ## Dependencies
10
+
11
+ ## Parallelizable Slices
12
+
13
+ ## Serialized Slices
14
+
15
+ ## Write Scopes
16
+
17
+ ## Implemented Slices
18
+
19
+ ## Files Changed
20
+
21
+ ## Tests Added Or Updated
22
+
23
+ ## Known Gaps
24
+
25
+ ## Risks
26
+
27
+ ## QA Handoff
@@ -0,0 +1,19 @@
1
+ # Documentation Index
2
+
3
+ ## Start Here
4
+
5
+ - `docs/index.md`: global entrypoint
6
+ - `docs/features/`: feature-specific state and handoff
7
+ - `docs/architecture/`: architectural rules and major decisions
8
+ - `_bmad-output/`: BMAD-generated artifacts
9
+
10
+ ## Active Features
11
+
12
+ - Add one line per feature:
13
+ - `docs/features/<feature>/index.md` - purpose and current status
14
+
15
+ ## Source of Truth
16
+
17
+ - Product and delivery artifacts: `_bmad-output/planning-artifacts/`
18
+ - Implementation rules: `_bmad-output/project-context.md`
19
+ - Feature continuation state: `docs/features/<feature>/handoff.md`
@@ -0,0 +1,88 @@
1
+ # docs/studio Layout
2
+
3
+ ## Purpose
4
+
5
+ Define the canonical file layout for a full overlay run.
6
+
7
+ ## Global Control Files
8
+
9
+ - `docs/studio/current-stage.yaml`
10
+ - `docs/studio/run-manifest.md`
11
+
12
+ ## Run ID Strategy
13
+
14
+ Every orchestration run gets a unique `run_id`.
15
+
16
+ Recommended layout:
17
+
18
+ - `docs/studio/runs/<run_id>/`
19
+
20
+ Control files stay at the root of `docs/studio/`, but they point to the active run directory.
21
+
22
+ ## Stage Files
23
+
24
+ ### Analyst Council
25
+
26
+ - `docs/studio/runs/<run_id>/analysis-market-analyst.yaml`
27
+ - `docs/studio/runs/<run_id>/analysis-user-problem-analyst.yaml`
28
+ - `docs/studio/runs/<run_id>/analysis-feasibility-analyst.yaml`
29
+ - `docs/studio/runs/<run_id>/analysis-adversarial-analyst.yaml`
30
+ - `docs/studio/runs/<run_id>/analysis-synthesis.md`
31
+ - `docs/studio/runs/<run_id>/analysis-handoff.yaml`
32
+
33
+ ### PM Council
34
+
35
+ - `docs/studio/runs/<run_id>/pm-mvp-pm.yaml`
36
+ - `docs/studio/runs/<run_id>/pm-growth-pm.yaml`
37
+ - `docs/studio/runs/<run_id>/pm-risk-pm.yaml`
38
+ - `docs/studio/runs/<run_id>/pm-ux-pm.yaml`
39
+ - `docs/studio/runs/<run_id>/pm-synthesis.md`
40
+ - `docs/studio/runs/<run_id>/pm-handoff.yaml`
41
+
42
+ ### Architecture Council
43
+
44
+ - `docs/studio/runs/<run_id>/architecture-application-architect.yaml`
45
+ - `docs/studio/runs/<run_id>/architecture-data-architect.yaml`
46
+ - `docs/studio/runs/<run_id>/architecture-delivery-architect.yaml`
47
+ - `docs/studio/runs/<run_id>/architecture-constraint-reviewer.yaml`
48
+ - `docs/studio/runs/<run_id>/architecture-synthesis.md`
49
+ - `docs/studio/runs/<run_id>/architecture-handoff.yaml`
50
+
51
+ ### Delivery Council
52
+
53
+ - `docs/studio/runs/<run_id>/delivery-story-planner.yaml`
54
+ - `docs/studio/runs/<run_id>/delivery-dependency-planner.yaml`
55
+ - `docs/studio/runs/<run_id>/delivery-dev-representative.yaml`
56
+ - `docs/studio/runs/<run_id>/delivery-frontend-dev.yaml`
57
+ - `docs/studio/runs/<run_id>/delivery-backend-dev.yaml`
58
+ - `docs/studio/runs/<run_id>/delivery-data-dev.yaml`
59
+ - `docs/studio/runs/<run_id>/delivery-integration-dev.yaml`
60
+ - `docs/studio/runs/<run_id>/delivery-quick-fix-dev.yaml`
61
+ - `docs/studio/runs/<run_id>/delivery-plan.md`
62
+ - `docs/studio/runs/<run_id>/delivery-synthesis.md`
63
+ - `docs/studio/runs/<run_id>/delivery-handoff.yaml`
64
+
65
+ ### QA / Review Council
66
+
67
+ - `docs/studio/runs/<run_id>/qa-review-qa-engineer.yaml`
68
+ - `docs/studio/runs/<run_id>/qa-review-edge-case-reviewer.yaml`
69
+ - `docs/studio/runs/<run_id>/qa-review-docs-continuity-reviewer.yaml`
70
+ - `docs/studio/runs/<run_id>/qa-review-release-gatekeeper.yaml`
71
+ - `docs/studio/runs/<run_id>/qa-review-summary.md`
72
+ - `docs/studio/runs/<run_id>/qa-review-findings.yaml`
73
+ - `docs/studio/runs/<run_id>/qa-review-handoff.yaml`
74
+
75
+ ## Naming Rules
76
+
77
+ - stage prefix first: `analysis`, `pm`, `architecture`, `delivery`, `qa-review`
78
+ - seat file second: `<stage>-<seat>.yaml`
79
+ - authoritative lead outputs use fixed names:
80
+ - `<stage>-synthesis.md`
81
+ - `<stage>-handoff.yaml`
82
+ - summary-only review stage may use `qa-review-summary.md`
83
+ - all stage artifacts are namespaced under `runs/<run_id>/`
84
+
85
+ ## Persistence Rule
86
+
87
+ These files are durable working memory for the overlay.
88
+ They should be readable enough for a later agent to resume work without chat history.
@@ -0,0 +1,21 @@
1
+ # Feature Index Template
2
+
3
+ ## Summary
4
+
5
+ - Feature name:
6
+ - Owner:
7
+ - Status:
8
+
9
+ ## Read In Order
10
+
11
+ 1. `index.md`
12
+ 2. `handoff.md`
13
+ 3. `journal.md`
14
+
15
+ ## Relevant Code
16
+
17
+ - `path/to/file`
18
+
19
+ ## Relevant Decisions
20
+
21
+ - Link or summarize major decisions here
@@ -0,0 +1,12 @@
1
+ request:
2
+ name: ""
3
+ goal: ""
4
+ mode_hint: "quick"
5
+ domain: ""
6
+ audience: ""
7
+ stack: ""
8
+ constraints: []
9
+ integrations: []
10
+ risks: []
11
+ success_metrics: []
12
+ out_of_scope: []
@@ -0,0 +1,11 @@
1
+ stage: "pm-council"
2
+ decision: "continue|narrow|reject"
3
+ why: ""
4
+ must_read_next:
5
+ - "docs/studio/pm-synthesis.md"
6
+ artifacts_updated:
7
+ - "docs/studio/pm-synthesis.md"
8
+ - "docs/studio/pm-handoff.yaml"
9
+ open_questions: []
10
+ blocked_by: []
11
+ recommended_next_stage: "architecture-council|orchestrator"
@@ -0,0 +1,7 @@
1
+ seat: ""
2
+ focus: ""
3
+ key_findings: []
4
+ risks: []
5
+ assumptions: []
6
+ recommendation: ""
7
+ confidence: "high|medium|low"
@@ -0,0 +1,25 @@
1
+ # PM Synthesis
2
+
3
+ ## Request Summary
4
+
5
+ ## Product Goal
6
+
7
+ ## Target User
8
+
9
+ ## Desired Outcomes
10
+
11
+ ## MVP Boundary
12
+
13
+ ## In Scope
14
+
15
+ ## Out of Scope
16
+
17
+ ## Success Metrics
18
+
19
+ ## Activation and Retention Considerations
20
+
21
+ ## Product Risks
22
+
23
+ ## Deferred Decisions
24
+
25
+ ## Recommended Input To Architecture Council
@@ -0,0 +1,7 @@
1
+ seat: ""
2
+ focus: ""
3
+ status: "pass|warn|fail"
4
+ key_findings: []
5
+ blocking_findings: []
6
+ follow_up: []
7
+ confidence: "high|medium|low"
@@ -0,0 +1,10 @@
1
+ stage: "qa-review-council"
2
+ decision: "pass|warn|fail"
3
+ why: ""
4
+ blocking_issues: []
5
+ non_blocking_issues: []
6
+ test_status: "passed|partial|not_run|failed"
7
+ doc_continuity_status: "clean|warn|broken"
8
+ must_read_next: []
9
+ artifacts_updated: []
10
+ recommended_next_stage: "orchestrator|implementation|release-closeout"
@@ -0,0 +1,7 @@
1
+ seat: ""
2
+ focus: ""
3
+ status: "pass|warn|fail"
4
+ key_findings: []
5
+ blocking_findings: []
6
+ follow_up: []
7
+ confidence: "high|medium|low"
@@ -0,0 +1,21 @@
1
+ # QA Review Summary
2
+
3
+ ## Review Summary
4
+
5
+ ## Scope Reviewed
6
+
7
+ ## Test Status
8
+
9
+ ## Functional Findings
10
+
11
+ ## Edge-Case Findings
12
+
13
+ ## Documentation Continuity Findings
14
+
15
+ ## Blocking Issues
16
+
17
+ ## Non-Blocking Issues
18
+
19
+ ## Release Recommendation
20
+
21
+ ## Next Action
@@ -0,0 +1,46 @@
1
+ # Run Manifest
2
+
3
+ ## Purpose
4
+
5
+ Track the artifact set for one active orchestration run.
6
+
7
+ ## Run Metadata
8
+
9
+ - `run_id`:
10
+ - `created_at`:
11
+ - `status`: `active|closed|abandoned`
12
+ - `active_stage`:
13
+ - `last_completed_stage`:
14
+ - `next_planned_stage`:
15
+ - `run_dir`: `docs/studio/runs/<run_id>/`
16
+ - `parent_run_id`:
17
+ - `closure_reason`:
18
+ - `abandon_reason`:
19
+ - `last_updated_at`:
20
+ - `transition_reason`:
21
+
22
+ ## Active Artifacts
23
+
24
+ - `docs/studio/current-stage.yaml`
25
+ - stage-specific seat outputs
26
+ - stage synthesis
27
+ - stage handoff
28
+
29
+ ## Reading Order For Resume
30
+
31
+ 1. `docs/studio/current-stage.yaml`
32
+ 2. current stage handoff or latest completed handoff
33
+ 3. current stage synthesis or latest completed synthesis
34
+ 4. current stage seat outputs
35
+
36
+ ## Lifecycle Notes
37
+
38
+ - create a new run for a new orchestration or a hard restart
39
+ - reuse a run only when continuing the same active thread
40
+ - close a run when the orchestration loop is complete
41
+ - abandon a run when it is superseded or no longer safely resumable
42
+
43
+ ## Runtime Notes
44
+
45
+ - update `run-manifest.md` before `current-stage.yaml`
46
+ - treat `current-stage.yaml` as the last authoritative pointer
@@ -0,0 +1,8 @@
1
+ stage: ""
2
+ decision: ""
3
+ why: ""
4
+ must_read_next: []
5
+ artifacts_updated: []
6
+ open_questions: []
7
+ blocked_by: []
8
+ recommended_next_stage: ""