bmad-method 4.42.1 → 4.43.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 (105) hide show
  1. package/CONTRIBUTING.md +2 -9
  2. package/README.md +0 -98
  3. package/bmad-core/agents/bmad-master.md +6 -6
  4. package/bmad-core/data/bmad-kb.md +1 -0
  5. package/bmad-core/tasks/validate-next-story.md +1 -1
  6. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +5 -5
  7. package/dist/agents/analyst.txt +1 -0
  8. package/dist/agents/architect.txt +5 -5
  9. package/dist/agents/bmad-master.txt +12 -11
  10. package/dist/agents/bmad-orchestrator.txt +1 -0
  11. package/dist/agents/dev.txt +1 -1
  12. package/dist/agents/po.txt +1 -1
  13. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +1 -1
  14. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +1 -1
  15. package/dist/expansion-packs/bmad-godot-game-dev/agents/bmad-orchestrator.txt +1513 -0
  16. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-analyst.txt +3190 -0
  17. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-architect.txt +4499 -0
  18. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-designer.txt +3925 -0
  19. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-developer.txt +666 -0
  20. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-pm.txt +2381 -0
  21. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-po.txt +1612 -0
  22. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-qa.txt +1745 -0
  23. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-sm.txt +1208 -0
  24. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-ux-expert.txt +958 -0
  25. package/dist/expansion-packs/bmad-godot-game-dev/teams/godot-game-team.txt +27721 -0
  26. package/dist/teams/team-all.txt +7 -6
  27. package/dist/teams/team-fullstack.txt +7 -6
  28. package/dist/teams/team-ide-minimal.txt +2 -1
  29. package/dist/teams/team-no-ui.txt +7 -6
  30. package/docs/GUIDING-PRINCIPLES.md +3 -3
  31. package/docs/expansion-packs.md +3 -83
  32. package/docs/flattener.md +91 -0
  33. package/docs/versions.md +1 -1
  34. package/docs/working-in-the-brownfield.md +15 -6
  35. package/expansion-packs/bmad-godot-game-dev/README.md +244 -0
  36. package/expansion-packs/bmad-godot-game-dev/agent-teams/godot-game-team.yaml +18 -0
  37. package/expansion-packs/bmad-godot-game-dev/agents/bmad-orchestrator.md +147 -0
  38. package/expansion-packs/bmad-godot-game-dev/agents/game-analyst.md +84 -0
  39. package/expansion-packs/bmad-godot-game-dev/agents/game-architect.md +146 -0
  40. package/expansion-packs/bmad-godot-game-dev/agents/game-designer.md +78 -0
  41. package/expansion-packs/bmad-godot-game-dev/agents/game-developer.md +124 -0
  42. package/expansion-packs/bmad-godot-game-dev/agents/game-pm.md +82 -0
  43. package/expansion-packs/bmad-godot-game-dev/agents/game-po.md +115 -0
  44. package/expansion-packs/bmad-godot-game-dev/agents/game-qa.md +160 -0
  45. package/expansion-packs/bmad-godot-game-dev/agents/game-sm.md +66 -0
  46. package/expansion-packs/bmad-godot-game-dev/agents/game-ux-expert.md +75 -0
  47. package/expansion-packs/bmad-godot-game-dev/checklists/game-architect-checklist.md +377 -0
  48. package/expansion-packs/bmad-godot-game-dev/checklists/game-change-checklist.md +250 -0
  49. package/expansion-packs/bmad-godot-game-dev/checklists/game-design-checklist.md +225 -0
  50. package/expansion-packs/bmad-godot-game-dev/checklists/game-po-checklist.md +448 -0
  51. package/expansion-packs/bmad-godot-game-dev/checklists/game-story-dod-checklist.md +202 -0
  52. package/expansion-packs/bmad-godot-game-dev/config.yaml +30 -0
  53. package/expansion-packs/bmad-godot-game-dev/data/bmad-kb.md +811 -0
  54. package/expansion-packs/bmad-godot-game-dev/data/brainstorming-techniques.md +36 -0
  55. package/expansion-packs/bmad-godot-game-dev/data/development-guidelines.md +893 -0
  56. package/expansion-packs/bmad-godot-game-dev/data/elicitation-methods.md +156 -0
  57. package/expansion-packs/bmad-godot-game-dev/data/technical-preferences.md +3 -0
  58. package/expansion-packs/bmad-godot-game-dev/tasks/advanced-elicitation.md +110 -0
  59. package/expansion-packs/bmad-godot-game-dev/tasks/apply-qa-fixes.md +224 -0
  60. package/expansion-packs/bmad-godot-game-dev/tasks/brownfield-create-epic.md +162 -0
  61. package/expansion-packs/bmad-godot-game-dev/tasks/brownfield-create-story.md +149 -0
  62. package/expansion-packs/bmad-godot-game-dev/tasks/correct-course-game.md +159 -0
  63. package/expansion-packs/bmad-godot-game-dev/tasks/create-deep-research-prompt.md +278 -0
  64. package/expansion-packs/bmad-godot-game-dev/tasks/create-doc.md +103 -0
  65. package/expansion-packs/bmad-godot-game-dev/tasks/create-game-story.md +202 -0
  66. package/expansion-packs/bmad-godot-game-dev/tasks/document-project.md +343 -0
  67. package/expansion-packs/bmad-godot-game-dev/tasks/execute-checklist.md +88 -0
  68. package/expansion-packs/bmad-godot-game-dev/tasks/facilitate-brainstorming-session.md +136 -0
  69. package/expansion-packs/bmad-godot-game-dev/tasks/game-brownfield-create-epic.md +160 -0
  70. package/expansion-packs/bmad-godot-game-dev/tasks/game-brownfield-create-story.md +147 -0
  71. package/expansion-packs/bmad-godot-game-dev/tasks/game-design-brainstorming.md +290 -0
  72. package/expansion-packs/bmad-godot-game-dev/tasks/game-risk-profile.md +368 -0
  73. package/expansion-packs/bmad-godot-game-dev/tasks/game-test-design.md +219 -0
  74. package/expansion-packs/bmad-godot-game-dev/tasks/generate-ai-frontend-prompt.md +51 -0
  75. package/expansion-packs/bmad-godot-game-dev/tasks/kb-mode-interaction.md +77 -0
  76. package/expansion-packs/bmad-godot-game-dev/tasks/review-game-story.md +364 -0
  77. package/expansion-packs/bmad-godot-game-dev/tasks/shard-doc.md +187 -0
  78. package/expansion-packs/bmad-godot-game-dev/tasks/validate-game-story.md +208 -0
  79. package/expansion-packs/bmad-godot-game-dev/templates/brainstorming-output-tmpl.yaml +156 -0
  80. package/expansion-packs/bmad-godot-game-dev/templates/brownfield-prd-tmpl.yaml +281 -0
  81. package/expansion-packs/bmad-godot-game-dev/templates/competitor-analysis-tmpl.yaml +306 -0
  82. package/expansion-packs/bmad-godot-game-dev/templates/game-architecture-tmpl.yaml +1111 -0
  83. package/expansion-packs/bmad-godot-game-dev/templates/game-brief-tmpl.yaml +356 -0
  84. package/expansion-packs/bmad-godot-game-dev/templates/game-design-doc-tmpl.yaml +724 -0
  85. package/expansion-packs/bmad-godot-game-dev/templates/game-prd-tmpl.yaml +209 -0
  86. package/expansion-packs/bmad-godot-game-dev/templates/game-qa-gate-tmpl.yaml +186 -0
  87. package/expansion-packs/bmad-godot-game-dev/templates/game-story-tmpl.yaml +406 -0
  88. package/expansion-packs/bmad-godot-game-dev/templates/game-ui-spec-tmpl.yaml +601 -0
  89. package/expansion-packs/bmad-godot-game-dev/templates/level-design-doc-tmpl.yaml +620 -0
  90. package/expansion-packs/bmad-godot-game-dev/templates/market-research-tmpl.yaml +418 -0
  91. package/expansion-packs/bmad-godot-game-dev/utils/bmad-doc-template.md +327 -0
  92. package/expansion-packs/bmad-godot-game-dev/utils/workflow-management.md +71 -0
  93. package/expansion-packs/bmad-godot-game-dev/workflows/game-dev-greenfield.yaml +245 -0
  94. package/expansion-packs/bmad-godot-game-dev/workflows/game-prototype.yaml +213 -0
  95. package/package.json +1 -1
  96. package/release_notes.md +19 -2
  97. package/tools/flattener/ignoreRules.js +2 -0
  98. package/tools/installer/bin/bmad.js +37 -1
  99. package/tools/installer/config/install.config.yaml +35 -7
  100. package/tools/installer/lib/ide-setup.js +285 -80
  101. package/tools/installer/lib/installer.js +6 -1
  102. package/tools/installer/package.json +1 -1
  103. package/tools/upgraders/v3-to-v4-upgrader.js +1 -0
  104. package/test.md +0 -1
  105. /package/{implement-fork-friendly-ci.sh → tools/implement-fork-friendly-ci.sh} +0 -0
@@ -0,0 +1,209 @@
1
+ # <!-- Powered by BMAD™ Core -->
2
+ template:
3
+ id: game-prd-template-v2
4
+ name: Product Requirements Document
5
+ version: 2.0
6
+ output:
7
+ format: markdown
8
+ filename: docs/game-prd.md
9
+ title: "{{project_name}} Godot Product Requirements Document (PRD)"
10
+
11
+ workflow:
12
+ mode: interactive
13
+ elicitation: advanced-elicitation
14
+
15
+ sections:
16
+ - id: goals-context
17
+ title: Goals and Background Context
18
+ instruction: |
19
+ Ask if Project Brief document is available. If NO Project Brief exists, STRONGLY recommend creating one first using game-brief-tmpl (it provides essential foundation: problem statement, target users, success metrics, MVP scope, constraints). If user insists on PRD without brief, gather this information during Goals section. If Project Brief exists, review and use it to populate Goals (bullet list of desired outcomes) and Background Context (1-2 paragraphs on what this solves and why) so we can determine what is and is not in scope for PRD mvp. Either way this is critical to determine the requirements. Include Change Log table.
20
+ sections:
21
+ - id: goals
22
+ title: Goals
23
+ type: bullet-list
24
+ instruction: Bullet list of 1 line desired outcomes the game will deliver if successful - player experiences and gameplay goals
25
+ - id: background
26
+ title: Background Context
27
+ type: paragraphs
28
+ instruction: 1-2 short paragraphs summarizing the game concept, target audience, genre influences, what player need or desire this game fulfills, competitive landscape
29
+ - id: changelog
30
+ title: Change Log
31
+ type: table
32
+ columns: [Date, Version, Description, Author]
33
+ instruction: Track document versions and changes
34
+
35
+ - id: requirements
36
+ title: Requirements
37
+ instruction: Draft the list of functional and non functional requirements under the two child sections
38
+ elicit: true
39
+ sections:
40
+ - id: functional
41
+ title: Functional
42
+ type: numbered-list
43
+ prefix: FR
44
+ instruction: Each Requirement will be a bullet markdown and an identifier sequence starting with FR
45
+ examples:
46
+ - "FR6: The player character can double jump after collecting the Wing Boots power-up."
47
+ - "FR7: Enemy AI uses Godot's NavigationAgent2D to pathfind around obstacles."
48
+ - "FR8: The inventory system supports drag-and-drop item management."
49
+ - id: non-functional
50
+ title: Non Functional
51
+ type: numbered-list
52
+ prefix: NFR
53
+ instruction: Each Requirement will be a bullet markdown and an identifier sequence starting with NFR
54
+ examples:
55
+ - "NFR1: Game must maintain 60 FPS on mid-range hardware (GTX 1060 or equivalent)."
56
+ - "NFR2: All UI elements must be readable at 720p resolution minimum."
57
+ - "NFR3: Save files must be compatible across all target platforms."
58
+
59
+ - id: ui-goals
60
+ title: Game UI/UX Design Goals
61
+ condition: Game has UI/menu requirements
62
+ instruction: |
63
+ Capture high-level game UI/UX vision to guide Game Designer and inform implementation. Steps:
64
+
65
+ 1. Pre-fill all subsections with educated guesses based on game genre and platform
66
+ 2. Present the complete rendered section to user
67
+ 3. Clearly let the user know where assumptions were made
68
+ 4. Ask targeted questions for unclear/missing elements or areas needing more specification
69
+ 5. This is NOT detailed UI spec - focus on player experience and game feel
70
+ elicit: true
71
+ choices:
72
+ accessibility: [None, Basic, Colorblind Support, Full Accessibility]
73
+ platforms: [PC Only, Mobile Only, PC + Mobile, PC + Console, All Platforms]
74
+ sections:
75
+ - id: ux-vision
76
+ title: Overall Game UX Vision
77
+ - id: interaction-paradigms
78
+ title: Control Schemes and Input Methods
79
+ - id: core-screens
80
+ title: Core Game Screens and Menus
81
+ instruction: From a game design perspective, what are the most critical screens, menus, and HUD elements necessary to deliver the gameplay experience? This is meant to be Conceptual High Level to Drive Rough Epic or Game Stories
82
+ examples:
83
+ - "Main Menu"
84
+ - "Game HUD (health, score, inventory)"
85
+ - "Pause Menu"
86
+ - "Level Select Screen"
87
+ - "Character Customization"
88
+ - "Settings/Options Menu"
89
+ - id: accessibility
90
+ title: "Accessibility: {None|Basic|Colorblind Support|Full Accessibility}"
91
+ - id: branding
92
+ title: Branding
93
+ instruction: Any known branding elements or style guides that must be incorporated?
94
+ examples:
95
+ - "Pixel art style inspired by 16-bit era JRPGs with modern lighting effects."
96
+ - "Dark fantasy aesthetic with muted colors and Gothic UI elements."
97
+ - "Vibrant cartoon style with thick outlines and cel-shading."
98
+ - id: target-platforms
99
+ title: "Target Platforms: {PC Only|Mobile Only|PC + Mobile|PC + Console|All Platforms}"
100
+ examples:
101
+ - "Windows, Linux, Mac via Steam"
102
+ - "iOS and Android via App Stores"
103
+ - "PC (Steam) + Nintendo Switch"
104
+ - "Web export for itch.io"
105
+
106
+ - id: technical-assumptions
107
+ title: Godot Technical Assumptions
108
+ instruction: |
109
+ Gather Godot-specific technical decisions that will guide development. Steps:
110
+
111
+ 1. Check if {root}/data/godot-preferences.yaml or an attached technical-preferences file exists - use it to pre-populate choices
112
+ 2. Ask user about: Godot version, 2D/3D, GDScript/C#, plugins/addons, target platforms, networking needs
113
+ 3. For unknowns, offer guidance based on game type and target platforms
114
+ 4. Document ALL technical choices with rationale (why this choice fits the game)
115
+ 5. These become constraints for development - be specific and complete
116
+ elicit: true
117
+ choices:
118
+ godot_version: [Godot 4.4, Godot 4.3, Godot 3.x]
119
+ architecture: [Single Player, Local Multiplayer, Online Multiplayer, MMO]
120
+ testing: [Manual Playtesting, Automated Tests, Both]
121
+ sections:
122
+ - id: godot-version
123
+ title: "Godot Version: {4.4|4.3|3.x}"
124
+ - id: game-architecture
125
+ title: Game Architecture
126
+ instruction: "CRITICAL DECISION - Document the game architecture (e.g., Single Player, Local Co-op, Online PvP, Server-Authoritative Multiplayer, P2P)."
127
+ - id: testing-requirements
128
+ title: Testing & QA Requirements
129
+ instruction: "CRITICAL DECISION - Document playtesting approach, automated testing needs (if any), performance profiling requirements, platform certification requirements."
130
+ - id: additional-assumptions
131
+ title: Additional Godot Technical Assumptions
132
+ instruction: Throughout the entire process of drafting this document, if any other Godot-specific technical assumptions are raised (rendering pipeline, physics engine settings, audio system, input handling), add them here as additional bulleted items
133
+
134
+ - id: epic-list
135
+ title: Epic List
136
+ instruction: |
137
+ Present a high-level list of all epics for user approval. Each epic should have a title and a short (1 sentence) goal statement. This allows the user to review the overall structure before diving into details.
138
+
139
+ CRITICAL: Epics MUST be logically sequential following agile best practices:
140
+
141
+ - Each epic should deliver a significant, end-to-end, fully deployable increment of testable functionality
142
+ - Epic 1 must establish foundational project infrastructure (app setup, Git, CI/CD, core services) unless we are adding new functionality to an existing app, while also delivering an initial piece of functionality, even as simple as a health-check route or display of a simple canary page - remember this when we produce the stories for the first epic!
143
+ - Each subsequent epic builds upon previous epics' functionality delivering major blocks of functionality that provide tangible value to users or business when deployed
144
+ - Not every project needs multiple epics, an epic needs to deliver value. For example, an API completed can deliver value even if a UI is not complete and planned for a separate epic.
145
+ - Err on the side of less epics, but let the user know your rationale and offer options for splitting them if it seems some are too large or focused on disparate things.
146
+ - Cross Cutting Concerns should flow through epics and stories and not be final stories. For example, adding a logging framework as a last story of an epic, or at the end of a project as a final epic or story would be terrible as we would not have logging from the beginning.
147
+ elicit: true
148
+ examples:
149
+ - "Epic 1: Foundation & Core Systems: Setup Godot project, implement player controller, and basic game loop"
150
+ - "Epic 2: Core Gameplay Mechanics: Implement primary game mechanics, combat/interaction systems"
151
+ - "Epic 3: Level Design & Content: Create levels, enemies, and game progression"
152
+ - "Epic 4: Polish & Game Feel: Add VFX, audio, juice, and game polish"
153
+ - "Epic 5: Menus & Meta Systems: Implement save/load, settings, achievements"
154
+
155
+ - id: epic-details
156
+ title: Epic {{epic_number}} {{epic_title}}
157
+ repeatable: true
158
+ instruction: |
159
+ After the epic list is approved, present each epic with all its stories and acceptance criteria as a complete review unit.
160
+
161
+ For each epic provide expanded goal (2-3 sentences describing the objective and value all the stories will achieve).
162
+
163
+ CRITICAL STORY SEQUENCING REQUIREMENTS:
164
+
165
+ - Stories within each epic MUST be logically sequential
166
+ - Each story should be a "vertical slice" delivering complete functionality aside from early enabler stories for project foundation
167
+ - No story should depend on work from a later story or epic
168
+ - Identify and note any direct prerequisite stories
169
+ - Focus on "what" and "why" not "how" (leave technical implementation to Architect) yet be precise enough to support a logical sequential order of operations from story to story.
170
+ - Ensure each story delivers clear user or business value, try to avoid enablers and build them into stories that deliver value.
171
+ - Size stories for AI agent execution: Each story must be completable by a single AI agent in one focused session without context overflow
172
+ - Think "junior developer working for 2-4 hours" - stories must be small, focused, and self-contained
173
+ - If a story seems complex, break it down further as long as it can deliver a vertical slice
174
+ elicit: true
175
+ template: "{{epic_goal}}"
176
+ sections:
177
+ - id: story
178
+ title: Story {{epic_number}}.{{story_number}} {{story_title}}
179
+ repeatable: true
180
+ template: |
181
+ As a {{user_type}},
182
+ I want {{action}},
183
+ so that {{benefit}}.
184
+ sections:
185
+ - id: acceptance-criteria
186
+ title: Acceptance Criteria
187
+ type: numbered-list
188
+ item_template: "{{criterion_number}}: {{criteria}}"
189
+ repeatable: true
190
+ instruction: |
191
+ Define clear, comprehensive, and testable acceptance criteria that:
192
+
193
+ - Precisely define what "done" means from a functional perspective
194
+ - Are unambiguous and serve as basis for verification
195
+ - Include any critical non-functional requirements from the PRD
196
+ - Consider local testability for backend/data components
197
+ - Specify UI/UX requirements and framework adherence where applicable
198
+ - Avoid cross-cutting concerns that should be in other stories or PRD sections
199
+
200
+ - id: checklist-results
201
+ title: Checklist Results Report
202
+ instruction: Before running the checklist and drafting the prompts, offer to output the full updated PRD. If outputting it, confirm with the user that you will be proceeding to run the checklist and produce the report. Once the user confirms, execute the pm-checklist and populate the results in this section.
203
+
204
+ - id: next-steps
205
+ title: Next Steps
206
+ sections:
207
+ - id: architect-prompt
208
+ title: Game Architect Prompt
209
+ instruction: This section will contain the prompt for the Game Architect, keep it short and to the point to initiate Godot architecture design using this document as input.
@@ -0,0 +1,186 @@
1
+ template:
2
+ id: godot-qa-gate-template-v2
3
+ name: Godot Game Quality Gate Decision
4
+ version: 2.0
5
+ output:
6
+ format: yaml
7
+ filename: docs/qa/gates/{{epic_num}}.{{story_num}}-{{story_slug}}.yml
8
+ title: "Godot Quality Gate: {{epic_num}}.{{story_num}}"
9
+
10
+ # Required fields (keep these first)
11
+ schema: 1
12
+ story: "{{epic_num}}.{{story_num}}"
13
+ story_title: "{{story_title}}"
14
+ gate: "{{gate_status}}" # PASS|CONCERNS|FAIL|WAIVED
15
+ status_reason: "{{status_reason}}" # 1-2 sentence summary focusing on TDD compliance and 60+ FPS performance
16
+ reviewer: "Linus (Godot Game Test Architect)"
17
+ updated: "{{iso_timestamp}}"
18
+
19
+ # Always present but only active when WAIVED
20
+ waiver: { active: false }
21
+
22
+ # Godot-specific Issues (if any) - Use fixed severity: low | medium | high
23
+ top_issues: [] # Focus on performance drops below 60 FPS, missing TDD tests, wrong language choices
24
+
25
+ # Risk summary (from risk-profile task if run)
26
+ risk_summary:
27
+ totals: { critical: 0, high: 0, medium: 0, low: 0 }
28
+ recommendations:
29
+ must_fix: []
30
+ monitor: []
31
+
32
+ # Godot examples section using block scalars for clarity
33
+ examples:
34
+ with_issues: |
35
+ top_issues:
36
+ - id: "PERF-001"
37
+ severity: high # ONLY: low|medium|high
38
+ finding: "Frame rate drops to 45 FPS during particle spawning"
39
+ suggested_action: "Implement object pooling for particle systems"
40
+ - id: "TDD-001"
41
+ severity: high
42
+ finding: "No GUT tests for player controller despite GDScript implementation"
43
+ suggested_action: "Add GUT test coverage before marking story complete"
44
+ - id: "LANG-001"
45
+ severity: medium
46
+ finding: "Physics system using GDScript instead of C# causing performance issues"
47
+ suggested_action: "Refactor physics calculations to C# for better performance"
48
+
49
+ when_waived: |
50
+ waiver:
51
+ active: true
52
+ reason: "Performance at 55 FPS acceptable for early access - optimization planned for next sprint"
53
+ approved_by: "Product Owner"
54
+
55
+ # ============ Optional Extended Fields ============
56
+ # Uncomment and use if your team wants more detail
57
+ # CRITICAL: Gates should FAIL if performance drops below 60 FPS or TDD is not followed
58
+
59
+ optional_fields_examples:
60
+ quality_and_expiry: |
61
+ quality_score: 75 # 100 - (20*FAILs) - (10*CONCERNS) - (5*FPS_drops_below_60)
62
+ expires: "2025-01-26T00:00:00Z" # Optional gate freshness window
63
+
64
+ evidence: |
65
+ evidence:
66
+ gut_tests_reviewed: 15 # GDScript tests
67
+ godottest_reviewed: 8 # C# tests
68
+ performance_validated: true # 60+ FPS confirmed
69
+ language_strategy_verified: true # GDScript/C# choices appropriate
70
+ trace:
71
+ ac_covered: [1, 2, 3] # AC numbers with GUT/GoDotTest coverage
72
+ ac_gaps: [4] # AC numbers lacking TDD coverage
73
+ fps_validation: "60+ FPS on all target platforms"
74
+
75
+ nfr_validation: |
76
+ nfr_validation:
77
+ performance: { status: PASS, notes: "60+ FPS maintained, frame time <16.67ms" }
78
+ tdd_compliance: { status: PASS, notes: "GUT coverage 85%, GoDotTest coverage 80%" }
79
+ language_strategy: { status: PASS, notes: "GDScript for logic, C# for physics - appropriate" }
80
+ object_pooling: { status: CONCERNS, notes: "Pooling missing for bullet spawns" }
81
+ signal_cleanup: { status: PASS, notes: "All signals properly disconnected" }
82
+ platform_exports: { status: PASS, notes: "Export templates configured for all targets" }
83
+
84
+ history: |
85
+ history: # Append-only audit trail
86
+ - at: "2025-01-12T10:00:00Z"
87
+ gate: FAIL
88
+ note: "Initial review - FPS dropped to 45, no GUT tests"
89
+ - at: "2025-01-12T15:00:00Z"
90
+ gate: CONCERNS
91
+ note: "GUT tests added, FPS improved to 58 - needs object pooling"
92
+
93
+ risk_summary: |
94
+ risk_summary: # From Godot risk-profile task
95
+ totals:
96
+ critical: 0 # FPS < 30 or no TDD
97
+ high: 0 # FPS < 60 or wrong language choice
98
+ medium: 0 # Missing optimizations
99
+ low: 0 # Minor issues
100
+ # 'highest' is emitted only when risks exist
101
+ recommendations:
102
+ must_fix: [] # Performance below 60 FPS, missing TDD
103
+ monitor: [] # Language strategy concerns
104
+
105
+ recommendations: |
106
+ recommendations:
107
+ immediate: # Must fix before production
108
+ - action: "Implement object pooling for all spawned entities"
109
+ refs: ["res://scripts/spawners/bullet_spawner.gd:42-68"]
110
+ - action: "Add GUT tests for player controller"
111
+ refs: ["res://scripts/player/player_controller.gd"]
112
+ - action: "Optimize particle system to maintain 60+ FPS"
113
+ refs: ["res://scenes/effects/particles.tscn"]
114
+ future: # Can be addressed later
115
+ - action: "Consider migrating physics to C# for 20% performance gain"
116
+ refs: ["res://scripts/physics/physics_manager.gd"]
117
+ - action: "Add performance benchmarks to GUT test suite"
118
+ refs: ["res://tests/"]
119
+
120
+ godot_performance_metrics: |
121
+ godot_metrics:
122
+ frame_rate:
123
+ current: 62 # Current FPS
124
+ target: 60 # Minimum acceptable (FAIL if below)
125
+ peak: 120 # Best achieved
126
+ frame_time:
127
+ current_ms: 16.1 # Current frame time
128
+ target_ms: 16.67 # Maximum for 60 FPS
129
+ memory:
130
+ scene_mb: 45 # Scene memory usage
131
+ texture_mb: 128 # Texture memory
132
+ pool_count: 5 # Active object pools
133
+ draw_calls:
134
+ current: 85
135
+ budget: 100 # Platform-specific budget
136
+ language_distribution:
137
+ gdscript_files: 45 # With static typing
138
+ csharp_files: 12 # Performance-critical systems
139
+
140
+ test_coverage_metrics: |
141
+ test_coverage:
142
+ gut_tests:
143
+ total: 45
144
+ passing: 43
145
+ coverage_percent: 85
146
+ performance_tests: 8 # Tests validating 60+ FPS
147
+ godottest_tests:
148
+ total: 20
149
+ passing: 20
150
+ coverage_percent: 80
151
+ physics_tests: 15 # C# physics validation
152
+ tdd_compliance:
153
+ stories_with_tests_first: 18
154
+ stories_without_tests: 2
155
+ compliance_percent: 90
156
+
157
+ # ============ Godot Gate Decision Criteria ============
158
+ # Apply these rules in order to determine gate status:
159
+
160
+ gate_decision_rules: |
161
+ 1. AUTOMATIC FAIL CONDITIONS:
162
+ - Performance below 60 FPS on any target platform
163
+ - No TDD tests (neither GUT nor GoDotTest)
164
+ - Memory leaks detected (signals not cleaned up)
165
+ - Wrong language choice causing performance issues
166
+ - Object pooling missing for frequently spawned entities
167
+
168
+ 2. CONCERNS CONDITIONS:
169
+ - Performance between 55-59 FPS
170
+ - TDD coverage below 80%
171
+ - Static typing not used in GDScript
172
+ - LINQ usage in C# hot paths
173
+ - Scene transitions exceeding 3 seconds
174
+
175
+ 3. PASS CONDITIONS:
176
+ - Consistent 60+ FPS across all platforms
177
+ - GUT/GoDotTest coverage >= 80%
178
+ - Appropriate language choices (GDScript for logic, C# for performance)
179
+ - Object pooling implemented for all spawned entities
180
+ - All signals properly connected and cleaned up
181
+
182
+ 4. WAIVER ONLY WITH:
183
+ - Product Owner approval
184
+ - Clear remediation plan
185
+ - Timeline for fixing issues
186
+ - Risk acceptance documented