bmad-method 4.37.0 → 4.39.0
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/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
- package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
- package/.github/workflows/discord.yaml +11 -2
- package/.github/workflows/format-check.yaml +42 -0
- package/.github/workflows/manual-release.yaml +173 -0
- package/.husky/pre-commit +3 -0
- package/.vscode/settings.json +26 -1
- package/CHANGELOG.md +2 -23
- package/README.md +2 -0
- package/bmad-core/agent-teams/team-all.yaml +1 -1
- package/bmad-core/agents/analyst.md +16 -15
- package/bmad-core/agents/architect.md +11 -11
- package/bmad-core/agents/bmad-master.md +23 -22
- package/bmad-core/agents/bmad-orchestrator.md +13 -17
- package/bmad-core/agents/dev.md +14 -11
- package/bmad-core/agents/pm.md +15 -14
- package/bmad-core/agents/po.md +9 -8
- package/bmad-core/agents/qa.md +42 -22
- package/bmad-core/agents/sm.md +7 -6
- package/bmad-core/agents/ux-expert.md +6 -5
- package/bmad-core/core-config.yaml +2 -0
- package/bmad-core/data/bmad-kb.md +1 -1
- package/bmad-core/data/test-levels-framework.md +146 -0
- package/bmad-core/data/test-priorities-matrix.md +172 -0
- package/bmad-core/tasks/apply-qa-fixes.md +148 -0
- package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
- package/bmad-core/tasks/nfr-assess.md +343 -0
- package/bmad-core/tasks/qa-gate.md +161 -0
- package/bmad-core/tasks/review-story.md +234 -74
- package/bmad-core/tasks/risk-profile.md +353 -0
- package/bmad-core/tasks/test-design.md +174 -0
- package/bmad-core/tasks/trace-requirements.md +264 -0
- package/bmad-core/templates/architecture-tmpl.yaml +49 -49
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
- package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
- package/bmad-core/templates/market-research-tmpl.yaml +2 -2
- package/bmad-core/templates/prd-tmpl.yaml +9 -9
- package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
- package/bmad-core/templates/qa-gate-tmpl.yaml +102 -0
- package/bmad-core/templates/story-tmpl.yaml +12 -12
- package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
- package/bmad-core/workflows/brownfield-service.yaml +1 -1
- package/bmad-core/workflows/brownfield-ui.yaml +1 -1
- package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
- package/bmad-core/workflows/greenfield-service.yaml +1 -1
- package/bmad-core/workflows/greenfield-ui.yaml +1 -1
- package/common/utils/bmad-doc-template.md +5 -5
- package/dist/agents/analyst.txt +1086 -1079
- package/dist/agents/architect.txt +1534 -1526
- package/dist/agents/bmad-master.txt +646 -632
- package/dist/agents/bmad-orchestrator.txt +40 -18
- package/dist/agents/dev.txt +158 -19
- package/dist/agents/pm.txt +1082 -1107
- package/dist/agents/po.txt +314 -332
- package/dist/agents/qa.txt +1754 -151
- package/dist/agents/sm.txt +88 -98
- package/dist/agents/ux-expert.txt +80 -87
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -146
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -86
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -48
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +1903 -1941
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +15 -50
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -195
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -15
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -37
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +2660 -2752
- package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +871 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +78 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +839 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +861 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +796 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +927 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +842 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1126 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +864 -0
- package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +5917 -0
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -27
- package/dist/teams/team-all.txt +5541 -3768
- package/dist/teams/team-fullstack.txt +3014 -2987
- package/dist/teams/team-ide-minimal.txt +2219 -469
- package/dist/teams/team-no-ui.txt +2993 -2966
- package/docs/enhanced-ide-development-workflow.md +220 -15
- package/docs/user-guide.md +271 -18
- package/docs/versioning-and-releases.md +122 -44
- package/docs/working-in-the-brownfield.md +264 -31
- package/eslint.config.mjs +119 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
- package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
- package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-creative-writing/README.md +132 -0
- package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +19 -0
- package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +91 -0
- package/expansion-packs/bmad-creative-writing/agents/book-critic.md +35 -0
- package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +41 -0
- package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +89 -0
- package/expansion-packs/bmad-creative-writing/agents/editor.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/world-builder.md +91 -0
- package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +18 -0
- package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +49 -0
- package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/config.yaml +11 -0
- package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +197 -0
- package/expansion-packs/bmad-creative-writing/data/story-structures.md +58 -0
- package/expansion-packs/bmad-creative-writing/docs/brief.md +183 -0
- package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +117 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +55 -0
- package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +22 -0
- package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/build-world.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +15 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +101 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +93 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +18 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +18 -0
- package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +15 -0
- package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +51 -0
- package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +81 -0
- package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +97 -0
- package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +77 -0
- package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +54 -0
- package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +88 -0
- package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +176 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +58 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +51 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +86 -0
- package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +79 -0
- package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +65 -0
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
- package/package.json +62 -39
- package/prettier.config.mjs +32 -0
- package/sync-version.sh +23 -0
- package/tools/bmad-npx-wrapper.js +10 -10
- package/tools/builders/web-builder.js +124 -130
- package/tools/bump-all-versions.js +42 -33
- package/tools/bump-expansion-version.js +23 -16
- package/tools/cli.js +10 -12
- package/tools/flattener/aggregate.js +10 -10
- package/tools/flattener/binary.js +44 -17
- package/tools/flattener/discovery.js +19 -18
- package/tools/flattener/files.js +6 -6
- package/tools/flattener/ignoreRules.js +125 -125
- package/tools/flattener/main.js +426 -70
- package/tools/flattener/projectRoot.js +186 -25
- package/tools/flattener/prompts.js +9 -9
- package/tools/flattener/stats.helpers.js +395 -0
- package/tools/flattener/stats.js +64 -14
- package/tools/flattener/test-matrix.js +413 -0
- package/tools/flattener/xml.js +33 -31
- package/tools/installer/bin/bmad.js +156 -113
- package/tools/installer/config/ide-agent-config.yaml +1 -1
- package/tools/installer/config/install.config.yaml +13 -3
- package/tools/installer/lib/config-loader.js +46 -42
- package/tools/installer/lib/file-manager.js +91 -113
- package/tools/installer/lib/ide-base-setup.js +57 -56
- package/tools/installer/lib/ide-setup.js +545 -399
- package/tools/installer/lib/installer.js +875 -714
- package/tools/installer/lib/memory-profiler.js +54 -53
- package/tools/installer/lib/module-manager.js +19 -15
- package/tools/installer/lib/resource-locator.js +26 -28
- package/tools/installer/package.json +19 -19
- package/tools/lib/dependency-resolver.js +26 -30
- package/tools/lib/yaml-utils.js +7 -7
- package/tools/preview-release-notes.js +66 -0
- package/tools/shared/bannerArt.js +3 -3
- package/tools/sync-installer-version.js +7 -9
- package/tools/update-expansion-version.js +14 -15
- package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
- package/tools/version-bump.js +41 -26
- package/tools/yaml-format.js +56 -43
- package/.github/workflows/release.yaml +0 -60
- package/.releaserc.json +0 -21
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
- package/tools/semantic-release-sync-installer.js +0 -30
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Test Priorities Matrix
|
|
2
|
+
|
|
3
|
+
Guide for prioritizing test scenarios based on risk, criticality, and business impact.
|
|
4
|
+
|
|
5
|
+
## Priority Levels
|
|
6
|
+
|
|
7
|
+
### P0 - Critical (Must Test)
|
|
8
|
+
|
|
9
|
+
**Criteria:**
|
|
10
|
+
|
|
11
|
+
- Revenue-impacting functionality
|
|
12
|
+
- Security-critical paths
|
|
13
|
+
- Data integrity operations
|
|
14
|
+
- Regulatory compliance requirements
|
|
15
|
+
- Previously broken functionality (regression prevention)
|
|
16
|
+
|
|
17
|
+
**Examples:**
|
|
18
|
+
|
|
19
|
+
- Payment processing
|
|
20
|
+
- Authentication/authorization
|
|
21
|
+
- User data creation/deletion
|
|
22
|
+
- Financial calculations
|
|
23
|
+
- GDPR/privacy compliance
|
|
24
|
+
|
|
25
|
+
**Testing Requirements:**
|
|
26
|
+
|
|
27
|
+
- Comprehensive coverage at all levels
|
|
28
|
+
- Both happy and unhappy paths
|
|
29
|
+
- Edge cases and error scenarios
|
|
30
|
+
- Performance under load
|
|
31
|
+
|
|
32
|
+
### P1 - High (Should Test)
|
|
33
|
+
|
|
34
|
+
**Criteria:**
|
|
35
|
+
|
|
36
|
+
- Core user journeys
|
|
37
|
+
- Frequently used features
|
|
38
|
+
- Features with complex logic
|
|
39
|
+
- Integration points between systems
|
|
40
|
+
- Features affecting user experience
|
|
41
|
+
|
|
42
|
+
**Examples:**
|
|
43
|
+
|
|
44
|
+
- User registration flow
|
|
45
|
+
- Search functionality
|
|
46
|
+
- Data import/export
|
|
47
|
+
- Notification systems
|
|
48
|
+
- Dashboard displays
|
|
49
|
+
|
|
50
|
+
**Testing Requirements:**
|
|
51
|
+
|
|
52
|
+
- Primary happy paths required
|
|
53
|
+
- Key error scenarios
|
|
54
|
+
- Critical edge cases
|
|
55
|
+
- Basic performance validation
|
|
56
|
+
|
|
57
|
+
### P2 - Medium (Nice to Test)
|
|
58
|
+
|
|
59
|
+
**Criteria:**
|
|
60
|
+
|
|
61
|
+
- Secondary features
|
|
62
|
+
- Admin functionality
|
|
63
|
+
- Reporting features
|
|
64
|
+
- Configuration options
|
|
65
|
+
- UI polish and aesthetics
|
|
66
|
+
|
|
67
|
+
**Examples:**
|
|
68
|
+
|
|
69
|
+
- Admin settings panels
|
|
70
|
+
- Report generation
|
|
71
|
+
- Theme customization
|
|
72
|
+
- Help documentation
|
|
73
|
+
- Analytics tracking
|
|
74
|
+
|
|
75
|
+
**Testing Requirements:**
|
|
76
|
+
|
|
77
|
+
- Happy path coverage
|
|
78
|
+
- Basic error handling
|
|
79
|
+
- Can defer edge cases
|
|
80
|
+
|
|
81
|
+
### P3 - Low (Test if Time Permits)
|
|
82
|
+
|
|
83
|
+
**Criteria:**
|
|
84
|
+
|
|
85
|
+
- Rarely used features
|
|
86
|
+
- Nice-to-have functionality
|
|
87
|
+
- Cosmetic issues
|
|
88
|
+
- Non-critical optimizations
|
|
89
|
+
|
|
90
|
+
**Examples:**
|
|
91
|
+
|
|
92
|
+
- Advanced preferences
|
|
93
|
+
- Legacy feature support
|
|
94
|
+
- Experimental features
|
|
95
|
+
- Debug utilities
|
|
96
|
+
|
|
97
|
+
**Testing Requirements:**
|
|
98
|
+
|
|
99
|
+
- Smoke tests only
|
|
100
|
+
- Can rely on manual testing
|
|
101
|
+
- Document known limitations
|
|
102
|
+
|
|
103
|
+
## Risk-Based Priority Adjustments
|
|
104
|
+
|
|
105
|
+
### Increase Priority When:
|
|
106
|
+
|
|
107
|
+
- High user impact (affects >50% of users)
|
|
108
|
+
- High financial impact (>$10K potential loss)
|
|
109
|
+
- Security vulnerability potential
|
|
110
|
+
- Compliance/legal requirements
|
|
111
|
+
- Customer-reported issues
|
|
112
|
+
- Complex implementation (>500 LOC)
|
|
113
|
+
- Multiple system dependencies
|
|
114
|
+
|
|
115
|
+
### Decrease Priority When:
|
|
116
|
+
|
|
117
|
+
- Feature flag protected
|
|
118
|
+
- Gradual rollout planned
|
|
119
|
+
- Strong monitoring in place
|
|
120
|
+
- Easy rollback capability
|
|
121
|
+
- Low usage metrics
|
|
122
|
+
- Simple implementation
|
|
123
|
+
- Well-isolated component
|
|
124
|
+
|
|
125
|
+
## Test Coverage by Priority
|
|
126
|
+
|
|
127
|
+
| Priority | Unit Coverage | Integration Coverage | E2E Coverage |
|
|
128
|
+
| -------- | ------------- | -------------------- | ------------------ |
|
|
129
|
+
| P0 | >90% | >80% | All critical paths |
|
|
130
|
+
| P1 | >80% | >60% | Main happy paths |
|
|
131
|
+
| P2 | >60% | >40% | Smoke tests |
|
|
132
|
+
| P3 | Best effort | Best effort | Manual only |
|
|
133
|
+
|
|
134
|
+
## Priority Assignment Rules
|
|
135
|
+
|
|
136
|
+
1. **Start with business impact** - What happens if this fails?
|
|
137
|
+
2. **Consider probability** - How likely is failure?
|
|
138
|
+
3. **Factor in detectability** - Would we know if it failed?
|
|
139
|
+
4. **Account for recoverability** - Can we fix it quickly?
|
|
140
|
+
|
|
141
|
+
## Priority Decision Tree
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
Is it revenue-critical?
|
|
145
|
+
├─ YES → P0
|
|
146
|
+
└─ NO → Does it affect core user journey?
|
|
147
|
+
├─ YES → Is it high-risk?
|
|
148
|
+
│ ├─ YES → P0
|
|
149
|
+
│ └─ NO → P1
|
|
150
|
+
└─ NO → Is it frequently used?
|
|
151
|
+
├─ YES → P1
|
|
152
|
+
└─ NO → Is it customer-facing?
|
|
153
|
+
├─ YES → P2
|
|
154
|
+
└─ NO → P3
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Test Execution Order
|
|
158
|
+
|
|
159
|
+
1. Execute P0 tests first (fail fast on critical issues)
|
|
160
|
+
2. Execute P1 tests second (core functionality)
|
|
161
|
+
3. Execute P2 tests if time permits
|
|
162
|
+
4. P3 tests only in full regression cycles
|
|
163
|
+
|
|
164
|
+
## Continuous Adjustment
|
|
165
|
+
|
|
166
|
+
Review and adjust priorities based on:
|
|
167
|
+
|
|
168
|
+
- Production incident patterns
|
|
169
|
+
- User feedback and complaints
|
|
170
|
+
- Usage analytics
|
|
171
|
+
- Test failure history
|
|
172
|
+
- Business priority changes
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# apply-qa-fixes
|
|
2
|
+
|
|
3
|
+
Implement fixes based on QA results (gate and assessments) for a specific story. This task is for the Dev agent to systematically consume QA outputs and apply code/test changes while only updating allowed sections in the story file.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
- Read QA outputs for a story (gate YAML + assessment markdowns)
|
|
8
|
+
- Create a prioritized, deterministic fix plan
|
|
9
|
+
- Apply code and test changes to close gaps and address issues
|
|
10
|
+
- Update only the allowed story sections for the Dev agent
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
required:
|
|
16
|
+
- story_id: '{epic}.{story}' # e.g., "2.2"
|
|
17
|
+
- qa_root: from `bmad-core/core-config.yaml` key `qa.qaLocation` (e.g., `docs/project/qa`)
|
|
18
|
+
- story_root: from `bmad-core/core-config.yaml` key `devStoryLocation` (e.g., `docs/project/stories`)
|
|
19
|
+
|
|
20
|
+
optional:
|
|
21
|
+
- story_title: '{title}' # derive from story H1 if missing
|
|
22
|
+
- story_slug: '{slug}' # derive from title (lowercase, hyphenated) if missing
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## QA Sources to Read
|
|
26
|
+
|
|
27
|
+
- Gate (YAML): `{qa_root}/gates/{epic}.{story}-*.yml`
|
|
28
|
+
- If multiple, use the most recent by modified time
|
|
29
|
+
- Assessments (Markdown):
|
|
30
|
+
- Test Design: `{qa_root}/assessments/{epic}.{story}-test-design-*.md`
|
|
31
|
+
- Traceability: `{qa_root}/assessments/{epic}.{story}-trace-*.md`
|
|
32
|
+
- Risk Profile: `{qa_root}/assessments/{epic}.{story}-risk-*.md`
|
|
33
|
+
- NFR Assessment: `{qa_root}/assessments/{epic}.{story}-nfr-*.md`
|
|
34
|
+
|
|
35
|
+
## Prerequisites
|
|
36
|
+
|
|
37
|
+
- Repository builds and tests run locally (Deno 2)
|
|
38
|
+
- Lint and test commands available:
|
|
39
|
+
- `deno lint`
|
|
40
|
+
- `deno test -A`
|
|
41
|
+
|
|
42
|
+
## Process (Do not skip steps)
|
|
43
|
+
|
|
44
|
+
### 0) Load Core Config & Locate Story
|
|
45
|
+
|
|
46
|
+
- Read `bmad-core/core-config.yaml` and resolve `qa_root` and `story_root`
|
|
47
|
+
- Locate story file in `{story_root}/{epic}.{story}.*.md`
|
|
48
|
+
- HALT if missing and ask for correct story id/path
|
|
49
|
+
|
|
50
|
+
### 1) Collect QA Findings
|
|
51
|
+
|
|
52
|
+
- Parse the latest gate YAML:
|
|
53
|
+
- `gate` (PASS|CONCERNS|FAIL|WAIVED)
|
|
54
|
+
- `top_issues[]` with `id`, `severity`, `finding`, `suggested_action`
|
|
55
|
+
- `nfr_validation.*.status` and notes
|
|
56
|
+
- `trace` coverage summary/gaps
|
|
57
|
+
- `test_design.coverage_gaps[]`
|
|
58
|
+
- `risk_summary.recommendations.must_fix[]` (if present)
|
|
59
|
+
- Read any present assessment markdowns and extract explicit gaps/recommendations
|
|
60
|
+
|
|
61
|
+
### 2) Build Deterministic Fix Plan (Priority Order)
|
|
62
|
+
|
|
63
|
+
Apply in order, highest priority first:
|
|
64
|
+
|
|
65
|
+
1. High severity items in `top_issues` (security/perf/reliability/maintainability)
|
|
66
|
+
2. NFR statuses: all FAIL must be fixed → then CONCERNS
|
|
67
|
+
3. Test Design `coverage_gaps` (prioritize P0 scenarios if specified)
|
|
68
|
+
4. Trace uncovered requirements (AC-level)
|
|
69
|
+
5. Risk `must_fix` recommendations
|
|
70
|
+
6. Medium severity issues, then low
|
|
71
|
+
|
|
72
|
+
Guidance:
|
|
73
|
+
|
|
74
|
+
- Prefer tests closing coverage gaps before/with code changes
|
|
75
|
+
- Keep changes minimal and targeted; follow project architecture and TS/Deno rules
|
|
76
|
+
|
|
77
|
+
### 3) Apply Changes
|
|
78
|
+
|
|
79
|
+
- Implement code fixes per plan
|
|
80
|
+
- Add missing tests to close coverage gaps (unit first; integration where required by AC)
|
|
81
|
+
- Keep imports centralized via `deps.ts` (see `docs/project/typescript-rules.md`)
|
|
82
|
+
- Follow DI boundaries in `src/core/di.ts` and existing patterns
|
|
83
|
+
|
|
84
|
+
### 4) Validate
|
|
85
|
+
|
|
86
|
+
- Run `deno lint` and fix issues
|
|
87
|
+
- Run `deno test -A` until all tests pass
|
|
88
|
+
- Iterate until clean
|
|
89
|
+
|
|
90
|
+
### 5) Update Story (Allowed Sections ONLY)
|
|
91
|
+
|
|
92
|
+
CRITICAL: Dev agent is ONLY authorized to update these sections of the story file. Do not modify any other sections (e.g., QA Results, Story, Acceptance Criteria, Dev Notes, Testing):
|
|
93
|
+
|
|
94
|
+
- Tasks / Subtasks Checkboxes (mark any fix subtask you added as done)
|
|
95
|
+
- Dev Agent Record →
|
|
96
|
+
- Agent Model Used (if changed)
|
|
97
|
+
- Debug Log References (commands/results, e.g., lint/tests)
|
|
98
|
+
- Completion Notes List (what changed, why, how)
|
|
99
|
+
- File List (all added/modified/deleted files)
|
|
100
|
+
- Change Log (new dated entry describing applied fixes)
|
|
101
|
+
- Status (see Rule below)
|
|
102
|
+
|
|
103
|
+
Status Rule:
|
|
104
|
+
|
|
105
|
+
- If gate was PASS and all identified gaps are closed → set `Status: Ready for Done`
|
|
106
|
+
- Otherwise → set `Status: Ready for Review` and notify QA to re-run the review
|
|
107
|
+
|
|
108
|
+
### 6) Do NOT Edit Gate Files
|
|
109
|
+
|
|
110
|
+
- Dev does not modify gate YAML. If fixes address issues, request QA to re-run `review-story` to update the gate
|
|
111
|
+
|
|
112
|
+
## Blocking Conditions
|
|
113
|
+
|
|
114
|
+
- Missing `bmad-core/core-config.yaml`
|
|
115
|
+
- Story file not found for `story_id`
|
|
116
|
+
- No QA artifacts found (neither gate nor assessments)
|
|
117
|
+
- HALT and request QA to generate at least a gate file (or proceed only with clear developer-provided fix list)
|
|
118
|
+
|
|
119
|
+
## Completion Checklist
|
|
120
|
+
|
|
121
|
+
- deno lint: 0 problems
|
|
122
|
+
- deno test -A: all tests pass
|
|
123
|
+
- All high severity `top_issues` addressed
|
|
124
|
+
- NFR FAIL → resolved; CONCERNS minimized or documented
|
|
125
|
+
- Coverage gaps closed or explicitly documented with rationale
|
|
126
|
+
- Story updated (allowed sections only) including File List and Change Log
|
|
127
|
+
- Status set according to Status Rule
|
|
128
|
+
|
|
129
|
+
## Example: Story 2.2
|
|
130
|
+
|
|
131
|
+
Given gate `docs/project/qa/gates/2.2-*.yml` shows
|
|
132
|
+
|
|
133
|
+
- `coverage_gaps`: Back action behavior untested (AC2)
|
|
134
|
+
- `coverage_gaps`: Centralized dependencies enforcement untested (AC4)
|
|
135
|
+
|
|
136
|
+
Fix plan:
|
|
137
|
+
|
|
138
|
+
- Add a test ensuring the Toolkit Menu "Back" action returns to Main Menu
|
|
139
|
+
- Add a static test verifying imports for service/view go through `deps.ts`
|
|
140
|
+
- Re-run lint/tests and update Dev Agent Record + File List accordingly
|
|
141
|
+
|
|
142
|
+
## Key Principles
|
|
143
|
+
|
|
144
|
+
- Deterministic, risk-first prioritization
|
|
145
|
+
- Minimal, maintainable changes
|
|
146
|
+
- Tests validate behavior and close gaps
|
|
147
|
+
- Strict adherence to allowed story update areas
|
|
148
|
+
- Gate ownership remains with QA; Dev signals readiness via Status
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# nfr-assess
|
|
2
|
+
|
|
3
|
+
Quick NFR validation focused on the core four: security, performance, reliability, maintainability.
|
|
4
|
+
|
|
5
|
+
## Inputs
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
required:
|
|
9
|
+
- story_id: '{epic}.{story}' # e.g., "1.3"
|
|
10
|
+
- story_path: `bmad-core/core-config.yaml` for the `devStoryLocation`
|
|
11
|
+
|
|
12
|
+
optional:
|
|
13
|
+
- architecture_refs: `bmad-core/core-config.yaml` for the `architecture.architectureFile`
|
|
14
|
+
- technical_preferences: `bmad-core/core-config.yaml` for the `technicalPreferences`
|
|
15
|
+
- acceptance_criteria: From story file
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Purpose
|
|
19
|
+
|
|
20
|
+
Assess non-functional requirements for a story and generate:
|
|
21
|
+
|
|
22
|
+
1. YAML block for the gate file's `nfr_validation` section
|
|
23
|
+
2. Brief markdown assessment saved to `qa.qaLocation/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md`
|
|
24
|
+
|
|
25
|
+
## Process
|
|
26
|
+
|
|
27
|
+
### 0. Fail-safe for Missing Inputs
|
|
28
|
+
|
|
29
|
+
If story_path or story file can't be found:
|
|
30
|
+
|
|
31
|
+
- Still create assessment file with note: "Source story not found"
|
|
32
|
+
- Set all selected NFRs to CONCERNS with notes: "Target unknown / evidence missing"
|
|
33
|
+
- Continue with assessment to provide value
|
|
34
|
+
|
|
35
|
+
### 1. Elicit Scope
|
|
36
|
+
|
|
37
|
+
**Interactive mode:** Ask which NFRs to assess
|
|
38
|
+
**Non-interactive mode:** Default to core four (security, performance, reliability, maintainability)
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
Which NFRs should I assess? (Enter numbers or press Enter for default)
|
|
42
|
+
[1] Security (default)
|
|
43
|
+
[2] Performance (default)
|
|
44
|
+
[3] Reliability (default)
|
|
45
|
+
[4] Maintainability (default)
|
|
46
|
+
[5] Usability
|
|
47
|
+
[6] Compatibility
|
|
48
|
+
[7] Portability
|
|
49
|
+
[8] Functional Suitability
|
|
50
|
+
|
|
51
|
+
> [Enter for 1-4]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Check for Thresholds
|
|
55
|
+
|
|
56
|
+
Look for NFR requirements in:
|
|
57
|
+
|
|
58
|
+
- Story acceptance criteria
|
|
59
|
+
- `docs/architecture/*.md` files
|
|
60
|
+
- `docs/technical-preferences.md`
|
|
61
|
+
|
|
62
|
+
**Interactive mode:** Ask for missing thresholds
|
|
63
|
+
**Non-interactive mode:** Mark as CONCERNS with "Target unknown"
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
No performance requirements found. What's your target response time?
|
|
67
|
+
> 200ms for API calls
|
|
68
|
+
|
|
69
|
+
No security requirements found. Required auth method?
|
|
70
|
+
> JWT with refresh tokens
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Unknown targets policy:** If a target is missing and not provided, mark status as CONCERNS with notes: "Target unknown"
|
|
74
|
+
|
|
75
|
+
### 3. Quick Assessment
|
|
76
|
+
|
|
77
|
+
For each selected NFR, check:
|
|
78
|
+
|
|
79
|
+
- Is there evidence it's implemented?
|
|
80
|
+
- Can we validate it?
|
|
81
|
+
- Are there obvious gaps?
|
|
82
|
+
|
|
83
|
+
### 4. Generate Outputs
|
|
84
|
+
|
|
85
|
+
## Output 1: Gate YAML Block
|
|
86
|
+
|
|
87
|
+
Generate ONLY for NFRs actually assessed (no placeholders):
|
|
88
|
+
|
|
89
|
+
```yaml
|
|
90
|
+
# Gate YAML (copy/paste):
|
|
91
|
+
nfr_validation:
|
|
92
|
+
_assessed: [security, performance, reliability, maintainability]
|
|
93
|
+
security:
|
|
94
|
+
status: CONCERNS
|
|
95
|
+
notes: 'No rate limiting on auth endpoints'
|
|
96
|
+
performance:
|
|
97
|
+
status: PASS
|
|
98
|
+
notes: 'Response times < 200ms verified'
|
|
99
|
+
reliability:
|
|
100
|
+
status: PASS
|
|
101
|
+
notes: 'Error handling and retries implemented'
|
|
102
|
+
maintainability:
|
|
103
|
+
status: CONCERNS
|
|
104
|
+
notes: 'Test coverage at 65%, target is 80%'
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Deterministic Status Rules
|
|
108
|
+
|
|
109
|
+
- **FAIL**: Any selected NFR has critical gap or target clearly not met
|
|
110
|
+
- **CONCERNS**: No FAILs, but any NFR is unknown/partial/missing evidence
|
|
111
|
+
- **PASS**: All selected NFRs meet targets with evidence
|
|
112
|
+
|
|
113
|
+
## Quality Score Calculation
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
quality_score = 100
|
|
117
|
+
- 20 for each FAIL attribute
|
|
118
|
+
- 10 for each CONCERNS attribute
|
|
119
|
+
Floor at 0, ceiling at 100
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
If `technical-preferences.md` defines custom weights, use those instead.
|
|
123
|
+
|
|
124
|
+
## Output 2: Brief Assessment Report
|
|
125
|
+
|
|
126
|
+
**ALWAYS save to:** `qa.qaLocation/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md`
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
# NFR Assessment: {epic}.{story}
|
|
130
|
+
|
|
131
|
+
Date: {date}
|
|
132
|
+
Reviewer: Quinn
|
|
133
|
+
|
|
134
|
+
<!-- Note: Source story not found (if applicable) -->
|
|
135
|
+
|
|
136
|
+
## Summary
|
|
137
|
+
|
|
138
|
+
- Security: CONCERNS - Missing rate limiting
|
|
139
|
+
- Performance: PASS - Meets <200ms requirement
|
|
140
|
+
- Reliability: PASS - Proper error handling
|
|
141
|
+
- Maintainability: CONCERNS - Test coverage below target
|
|
142
|
+
|
|
143
|
+
## Critical Issues
|
|
144
|
+
|
|
145
|
+
1. **No rate limiting** (Security)
|
|
146
|
+
- Risk: Brute force attacks possible
|
|
147
|
+
- Fix: Add rate limiting middleware to auth endpoints
|
|
148
|
+
|
|
149
|
+
2. **Test coverage 65%** (Maintainability)
|
|
150
|
+
- Risk: Untested code paths
|
|
151
|
+
- Fix: Add tests for uncovered branches
|
|
152
|
+
|
|
153
|
+
## Quick Wins
|
|
154
|
+
|
|
155
|
+
- Add rate limiting: ~2 hours
|
|
156
|
+
- Increase test coverage: ~4 hours
|
|
157
|
+
- Add performance monitoring: ~1 hour
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Output 3: Story Update Line
|
|
161
|
+
|
|
162
|
+
**End with this line for the review task to quote:**
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
NFR assessment: qa.qaLocation/assessments/{epic}.{story}-nfr-{YYYYMMDD}.md
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Output 4: Gate Integration Line
|
|
169
|
+
|
|
170
|
+
**Always print at the end:**
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
Gate NFR block ready → paste into qa.qaLocation/gates/{epic}.{story}-{slug}.yml under nfr_validation
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Assessment Criteria
|
|
177
|
+
|
|
178
|
+
### Security
|
|
179
|
+
|
|
180
|
+
**PASS if:**
|
|
181
|
+
|
|
182
|
+
- Authentication implemented
|
|
183
|
+
- Authorization enforced
|
|
184
|
+
- Input validation present
|
|
185
|
+
- No hardcoded secrets
|
|
186
|
+
|
|
187
|
+
**CONCERNS if:**
|
|
188
|
+
|
|
189
|
+
- Missing rate limiting
|
|
190
|
+
- Weak encryption
|
|
191
|
+
- Incomplete authorization
|
|
192
|
+
|
|
193
|
+
**FAIL if:**
|
|
194
|
+
|
|
195
|
+
- No authentication
|
|
196
|
+
- Hardcoded credentials
|
|
197
|
+
- SQL injection vulnerabilities
|
|
198
|
+
|
|
199
|
+
### Performance
|
|
200
|
+
|
|
201
|
+
**PASS if:**
|
|
202
|
+
|
|
203
|
+
- Meets response time targets
|
|
204
|
+
- No obvious bottlenecks
|
|
205
|
+
- Reasonable resource usage
|
|
206
|
+
|
|
207
|
+
**CONCERNS if:**
|
|
208
|
+
|
|
209
|
+
- Close to limits
|
|
210
|
+
- Missing indexes
|
|
211
|
+
- No caching strategy
|
|
212
|
+
|
|
213
|
+
**FAIL if:**
|
|
214
|
+
|
|
215
|
+
- Exceeds response time limits
|
|
216
|
+
- Memory leaks
|
|
217
|
+
- Unoptimized queries
|
|
218
|
+
|
|
219
|
+
### Reliability
|
|
220
|
+
|
|
221
|
+
**PASS if:**
|
|
222
|
+
|
|
223
|
+
- Error handling present
|
|
224
|
+
- Graceful degradation
|
|
225
|
+
- Retry logic where needed
|
|
226
|
+
|
|
227
|
+
**CONCERNS if:**
|
|
228
|
+
|
|
229
|
+
- Some error cases unhandled
|
|
230
|
+
- No circuit breakers
|
|
231
|
+
- Missing health checks
|
|
232
|
+
|
|
233
|
+
**FAIL if:**
|
|
234
|
+
|
|
235
|
+
- No error handling
|
|
236
|
+
- Crashes on errors
|
|
237
|
+
- No recovery mechanisms
|
|
238
|
+
|
|
239
|
+
### Maintainability
|
|
240
|
+
|
|
241
|
+
**PASS if:**
|
|
242
|
+
|
|
243
|
+
- Test coverage meets target
|
|
244
|
+
- Code well-structured
|
|
245
|
+
- Documentation present
|
|
246
|
+
|
|
247
|
+
**CONCERNS if:**
|
|
248
|
+
|
|
249
|
+
- Test coverage below target
|
|
250
|
+
- Some code duplication
|
|
251
|
+
- Missing documentation
|
|
252
|
+
|
|
253
|
+
**FAIL if:**
|
|
254
|
+
|
|
255
|
+
- No tests
|
|
256
|
+
- Highly coupled code
|
|
257
|
+
- No documentation
|
|
258
|
+
|
|
259
|
+
## Quick Reference
|
|
260
|
+
|
|
261
|
+
### What to Check
|
|
262
|
+
|
|
263
|
+
```yaml
|
|
264
|
+
security:
|
|
265
|
+
- Authentication mechanism
|
|
266
|
+
- Authorization checks
|
|
267
|
+
- Input validation
|
|
268
|
+
- Secret management
|
|
269
|
+
- Rate limiting
|
|
270
|
+
|
|
271
|
+
performance:
|
|
272
|
+
- Response times
|
|
273
|
+
- Database queries
|
|
274
|
+
- Caching usage
|
|
275
|
+
- Resource consumption
|
|
276
|
+
|
|
277
|
+
reliability:
|
|
278
|
+
- Error handling
|
|
279
|
+
- Retry logic
|
|
280
|
+
- Circuit breakers
|
|
281
|
+
- Health checks
|
|
282
|
+
- Logging
|
|
283
|
+
|
|
284
|
+
maintainability:
|
|
285
|
+
- Test coverage
|
|
286
|
+
- Code structure
|
|
287
|
+
- Documentation
|
|
288
|
+
- Dependencies
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Key Principles
|
|
292
|
+
|
|
293
|
+
- Focus on the core four NFRs by default
|
|
294
|
+
- Quick assessment, not deep analysis
|
|
295
|
+
- Gate-ready output format
|
|
296
|
+
- Brief, actionable findings
|
|
297
|
+
- Skip what doesn't apply
|
|
298
|
+
- Deterministic status rules for consistency
|
|
299
|
+
- Unknown targets → CONCERNS, not guesses
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Appendix: ISO 25010 Reference
|
|
304
|
+
|
|
305
|
+
<details>
|
|
306
|
+
<summary>Full ISO 25010 Quality Model (click to expand)</summary>
|
|
307
|
+
|
|
308
|
+
### All 8 Quality Characteristics
|
|
309
|
+
|
|
310
|
+
1. **Functional Suitability**: Completeness, correctness, appropriateness
|
|
311
|
+
2. **Performance Efficiency**: Time behavior, resource use, capacity
|
|
312
|
+
3. **Compatibility**: Co-existence, interoperability
|
|
313
|
+
4. **Usability**: Learnability, operability, accessibility
|
|
314
|
+
5. **Reliability**: Maturity, availability, fault tolerance
|
|
315
|
+
6. **Security**: Confidentiality, integrity, authenticity
|
|
316
|
+
7. **Maintainability**: Modularity, reusability, testability
|
|
317
|
+
8. **Portability**: Adaptability, installability
|
|
318
|
+
|
|
319
|
+
Use these when assessing beyond the core four.
|
|
320
|
+
|
|
321
|
+
</details>
|
|
322
|
+
|
|
323
|
+
<details>
|
|
324
|
+
<summary>Example: Deep Performance Analysis (click to expand)</summary>
|
|
325
|
+
|
|
326
|
+
```yaml
|
|
327
|
+
performance_deep_dive:
|
|
328
|
+
response_times:
|
|
329
|
+
p50: 45ms
|
|
330
|
+
p95: 180ms
|
|
331
|
+
p99: 350ms
|
|
332
|
+
database:
|
|
333
|
+
slow_queries: 2
|
|
334
|
+
missing_indexes: ['users.email', 'orders.user_id']
|
|
335
|
+
caching:
|
|
336
|
+
hit_rate: 0%
|
|
337
|
+
recommendation: 'Add Redis for session data'
|
|
338
|
+
load_test:
|
|
339
|
+
max_rps: 150
|
|
340
|
+
breaking_point: 200 rps
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
</details>
|