@agile-vibe-coding/avc 0.1.1 → 0.3.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.
- package/cli/agent-loader.js +21 -0
- package/cli/agents/agent-selector.md +152 -0
- package/cli/agents/architecture-recommender.md +418 -0
- package/cli/agents/code-implementer.md +117 -0
- package/cli/agents/code-validator.md +80 -0
- package/cli/agents/context-reviewer-epic.md +101 -0
- package/cli/agents/context-reviewer-story.md +92 -0
- package/cli/agents/context-writer-epic.md +145 -0
- package/cli/agents/context-writer-story.md +111 -0
- package/cli/agents/database-deep-dive.md +470 -0
- package/cli/agents/database-recommender.md +634 -0
- package/cli/agents/doc-distributor.md +176 -0
- package/cli/agents/doc-writer-epic.md +42 -0
- package/cli/agents/doc-writer-story.md +43 -0
- package/cli/agents/documentation-updater.md +203 -0
- package/cli/agents/duplicate-detector.md +110 -0
- package/cli/agents/epic-story-decomposer.md +559 -0
- package/cli/agents/feature-context-generator.md +91 -0
- package/cli/agents/gap-checker-epic.md +52 -0
- package/cli/agents/impact-checker-story.md +51 -0
- package/cli/agents/migration-guide-generator.md +305 -0
- package/cli/agents/mission-scope-generator.md +143 -0
- package/cli/agents/mission-scope-validator.md +146 -0
- package/cli/agents/project-context-extractor.md +122 -0
- package/cli/agents/project-documentation-creator.json +226 -0
- package/cli/agents/project-documentation-creator.md +595 -0
- package/cli/agents/question-prefiller.md +269 -0
- package/cli/agents/refiner-epic.md +39 -0
- package/cli/agents/refiner-story.md +42 -0
- package/cli/agents/scaffolding-generator.md +99 -0
- package/cli/agents/seed-validator.md +71 -0
- package/cli/agents/story-doc-enricher.md +133 -0
- package/cli/agents/story-scope-reviewer.md +147 -0
- package/cli/agents/story-splitter.md +83 -0
- package/cli/agents/suggestion-business-analyst.md +88 -0
- package/cli/agents/suggestion-deployment-architect.md +263 -0
- package/cli/agents/suggestion-product-manager.md +129 -0
- package/cli/agents/suggestion-security-specialist.md +156 -0
- package/cli/agents/suggestion-technical-architect.md +269 -0
- package/cli/agents/suggestion-ux-researcher.md +93 -0
- package/cli/agents/task-subtask-decomposer.md +188 -0
- package/cli/agents/validator-documentation.json +183 -0
- package/cli/agents/validator-documentation.md +455 -0
- package/cli/agents/validator-selector.md +211 -0
- package/cli/ansi-colors.js +21 -0
- package/cli/api-reference-tool.js +368 -0
- package/cli/build-docs.js +29 -8
- package/cli/ceremony-history.js +369 -0
- package/cli/checks/catalog.json +76 -0
- package/cli/checks/code/quality.json +26 -0
- package/cli/checks/code/testing.json +14 -0
- package/cli/checks/code/traceability.json +26 -0
- package/cli/checks/cross-refs/epic.json +171 -0
- package/cli/checks/cross-refs/story.json +149 -0
- package/cli/checks/epic/api.json +114 -0
- package/cli/checks/epic/backend.json +126 -0
- package/cli/checks/epic/cloud.json +126 -0
- package/cli/checks/epic/data.json +102 -0
- package/cli/checks/epic/database.json +114 -0
- package/cli/checks/epic/developer.json +182 -0
- package/cli/checks/epic/devops.json +174 -0
- package/cli/checks/epic/frontend.json +162 -0
- package/cli/checks/epic/mobile.json +102 -0
- package/cli/checks/epic/qa.json +90 -0
- package/cli/checks/epic/security.json +184 -0
- package/cli/checks/epic/solution-architect.json +192 -0
- package/cli/checks/epic/test-architect.json +90 -0
- package/cli/checks/epic/ui.json +102 -0
- package/cli/checks/epic/ux.json +90 -0
- package/cli/checks/fixes/epic-fix-template.md +10 -0
- package/cli/checks/fixes/story-fix-template.md +10 -0
- package/cli/checks/story/api.json +186 -0
- package/cli/checks/story/backend.json +102 -0
- package/cli/checks/story/cloud.json +102 -0
- package/cli/checks/story/data.json +210 -0
- package/cli/checks/story/database.json +102 -0
- package/cli/checks/story/developer.json +168 -0
- package/cli/checks/story/devops.json +102 -0
- package/cli/checks/story/frontend.json +174 -0
- package/cli/checks/story/mobile.json +102 -0
- package/cli/checks/story/qa.json +210 -0
- package/cli/checks/story/security.json +198 -0
- package/cli/checks/story/solution-architect.json +230 -0
- package/cli/checks/story/test-architect.json +210 -0
- package/cli/checks/story/ui.json +102 -0
- package/cli/checks/story/ux.json +102 -0
- package/cli/coding-order.js +401 -0
- package/cli/command-logger.js +49 -12
- package/cli/components/static-output.js +63 -0
- package/cli/console-output-manager.js +94 -0
- package/cli/dependency-checker.js +72 -0
- package/cli/docs-sync.js +306 -0
- package/cli/epic-story-validator.js +659 -0
- package/cli/evaluation-prompts.js +1008 -0
- package/cli/execution-context.js +195 -0
- package/cli/generate-summary-table.js +340 -0
- package/cli/init-model-config.js +704 -0
- package/cli/init.js +1737 -278
- package/cli/kanban-server-manager.js +227 -0
- package/cli/llm-claude.js +150 -1
- package/cli/llm-gemini.js +109 -0
- package/cli/llm-local.js +493 -0
- package/cli/llm-mock.js +233 -0
- package/cli/llm-openai.js +454 -0
- package/cli/llm-provider.js +379 -3
- package/cli/llm-token-limits.js +211 -0
- package/cli/llm-verifier.js +662 -0
- package/cli/llm-xiaomi.js +143 -0
- package/cli/message-constants.js +49 -0
- package/cli/message-manager.js +334 -0
- package/cli/message-types.js +96 -0
- package/cli/messaging-api.js +291 -0
- package/cli/micro-check-fixer.js +335 -0
- package/cli/micro-check-runner.js +449 -0
- package/cli/micro-check-scorer.js +148 -0
- package/cli/micro-check-validator.js +538 -0
- package/cli/model-pricing.js +192 -0
- package/cli/model-query-engine.js +468 -0
- package/cli/model-recommendation-analyzer.js +495 -0
- package/cli/model-selector.js +270 -0
- package/cli/output-buffer.js +107 -0
- package/cli/process-manager.js +73 -2
- package/cli/prompt-logger.js +57 -0
- package/cli/repl-ink.js +4625 -1094
- package/cli/repl-old.js +3 -4
- package/cli/seed-processor.js +962 -0
- package/cli/sprint-planning-processor.js +4162 -0
- package/cli/template-processor.js +2149 -105
- package/cli/templates/project.md +25 -8
- package/cli/templates/vitepress-config.mts.template +5 -4
- package/cli/token-tracker.js +547 -0
- package/cli/tools/generate-story-validators.js +317 -0
- package/cli/tools/generate-validators.js +669 -0
- package/cli/update-checker.js +19 -17
- package/cli/update-notifier.js +4 -4
- package/cli/validation-router.js +667 -0
- package/cli/verification-tracker.js +563 -0
- package/cli/worktree-runner.js +654 -0
- package/kanban/README.md +386 -0
- package/kanban/client/README.md +205 -0
- package/kanban/client/components.json +20 -0
- package/kanban/client/dist/assets/index-D_KC5EQT.css +1 -0
- package/kanban/client/dist/assets/index-DjY5zqW7.js +351 -0
- package/kanban/client/dist/index.html +16 -0
- package/kanban/client/dist/vite.svg +1 -0
- package/kanban/client/index.html +15 -0
- package/kanban/client/package-lock.json +9442 -0
- package/kanban/client/package.json +44 -0
- package/kanban/client/postcss.config.js +6 -0
- package/kanban/client/public/vite.svg +1 -0
- package/kanban/client/src/App.jsx +651 -0
- package/kanban/client/src/components/ProjectFileEditorPopup.jsx +117 -0
- package/kanban/client/src/components/ceremony/AskArchPopup.jsx +420 -0
- package/kanban/client/src/components/ceremony/AskModelPopup.jsx +629 -0
- package/kanban/client/src/components/ceremony/CeremonyWorkflowModal.jsx +1133 -0
- package/kanban/client/src/components/ceremony/EpicStorySelectionModal.jsx +254 -0
- package/kanban/client/src/components/ceremony/ProviderSwitcherButton.jsx +290 -0
- package/kanban/client/src/components/ceremony/SponsorCallModal.jsx +686 -0
- package/kanban/client/src/components/ceremony/SprintPlanningModal.jsx +838 -0
- package/kanban/client/src/components/ceremony/steps/ArchitectureStep.jsx +150 -0
- package/kanban/client/src/components/ceremony/steps/CompleteStep.jsx +136 -0
- package/kanban/client/src/components/ceremony/steps/DatabaseStep.jsx +202 -0
- package/kanban/client/src/components/ceremony/steps/DeploymentStep.jsx +123 -0
- package/kanban/client/src/components/ceremony/steps/MissionStep.jsx +106 -0
- package/kanban/client/src/components/ceremony/steps/ReviewAnswersStep.jsx +329 -0
- package/kanban/client/src/components/ceremony/steps/RunningStep.jsx +249 -0
- package/kanban/client/src/components/kanban/CardDetailModal.jsx +646 -0
- package/kanban/client/src/components/kanban/EpicSection.jsx +146 -0
- package/kanban/client/src/components/kanban/FilterToolbar.jsx +222 -0
- package/kanban/client/src/components/kanban/GroupingSelector.jsx +63 -0
- package/kanban/client/src/components/kanban/KanbanBoard.jsx +211 -0
- package/kanban/client/src/components/kanban/KanbanCard.jsx +147 -0
- package/kanban/client/src/components/kanban/KanbanColumn.jsx +90 -0
- package/kanban/client/src/components/kanban/RefineWorkItemPopup.jsx +784 -0
- package/kanban/client/src/components/kanban/RunButton.jsx +162 -0
- package/kanban/client/src/components/kanban/SeedButton.jsx +176 -0
- package/kanban/client/src/components/layout/LoadingScreen.jsx +82 -0
- package/kanban/client/src/components/process/ProcessMonitorBar.jsx +80 -0
- package/kanban/client/src/components/settings/AgentEditorPopup.jsx +171 -0
- package/kanban/client/src/components/settings/AgentsTab.jsx +381 -0
- package/kanban/client/src/components/settings/ApiKeysTab.jsx +142 -0
- package/kanban/client/src/components/settings/CeremonyModelsTab.jsx +105 -0
- package/kanban/client/src/components/settings/CheckEditorPopup.jsx +507 -0
- package/kanban/client/src/components/settings/CostThresholdsTab.jsx +95 -0
- package/kanban/client/src/components/settings/ModelPricingTab.jsx +269 -0
- package/kanban/client/src/components/settings/OpenAIAuthSection.jsx +412 -0
- package/kanban/client/src/components/settings/ServersTab.jsx +121 -0
- package/kanban/client/src/components/settings/SettingsModal.jsx +84 -0
- package/kanban/client/src/components/stats/CostModal.jsx +384 -0
- package/kanban/client/src/components/ui/badge.jsx +27 -0
- package/kanban/client/src/components/ui/dialog.jsx +121 -0
- package/kanban/client/src/components/ui/tabs.jsx +85 -0
- package/kanban/client/src/hooks/__tests__/useGrouping.test.js +232 -0
- package/kanban/client/src/hooks/useGrouping.js +177 -0
- package/kanban/client/src/hooks/useWebSocket.js +120 -0
- package/kanban/client/src/lib/__tests__/api.test.js +196 -0
- package/kanban/client/src/lib/__tests__/status-grouping.test.js +94 -0
- package/kanban/client/src/lib/api.js +515 -0
- package/kanban/client/src/lib/status-grouping.js +154 -0
- package/kanban/client/src/lib/utils.js +11 -0
- package/kanban/client/src/main.jsx +10 -0
- package/kanban/client/src/store/__tests__/kanbanStore.test.js +164 -0
- package/kanban/client/src/store/ceremonyStore.js +172 -0
- package/kanban/client/src/store/filterStore.js +201 -0
- package/kanban/client/src/store/kanbanStore.js +123 -0
- package/kanban/client/src/store/processStore.js +65 -0
- package/kanban/client/src/store/sprintPlanningStore.js +33 -0
- package/kanban/client/src/styles/globals.css +59 -0
- package/kanban/client/tailwind.config.js +77 -0
- package/kanban/client/vite.config.js +28 -0
- package/kanban/client/vitest.config.js +28 -0
- package/kanban/dev-start.sh +47 -0
- package/kanban/package.json +12 -0
- package/kanban/server/index.js +537 -0
- package/kanban/server/routes/ceremony.js +454 -0
- package/kanban/server/routes/costs.js +163 -0
- package/kanban/server/routes/openai-oauth.js +366 -0
- package/kanban/server/routes/processes.js +50 -0
- package/kanban/server/routes/settings.js +736 -0
- package/kanban/server/routes/websocket.js +281 -0
- package/kanban/server/routes/work-items.js +487 -0
- package/kanban/server/services/CeremonyService.js +1441 -0
- package/kanban/server/services/FileSystemScanner.js +95 -0
- package/kanban/server/services/FileWatcher.js +144 -0
- package/kanban/server/services/HierarchyBuilder.js +196 -0
- package/kanban/server/services/ProcessRegistry.js +122 -0
- package/kanban/server/services/TaskRunnerService.js +261 -0
- package/kanban/server/services/WorkItemReader.js +123 -0
- package/kanban/server/services/WorkItemRefineService.js +510 -0
- package/kanban/server/start.js +49 -0
- package/kanban/server/utils/kanban-logger.js +132 -0
- package/kanban/server/utils/markdown.js +91 -0
- package/kanban/server/utils/status-grouping.js +107 -0
- package/kanban/server/workers/run-task-worker.js +121 -0
- package/kanban/server/workers/seed-worker.js +94 -0
- package/kanban/server/workers/sponsor-call-worker.js +92 -0
- package/kanban/server/workers/sprint-planning-worker.js +212 -0
- package/package.json +19 -7
- package/cli/agents/documentation.md +0 -302
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"perspective": "devops",
|
|
3
|
+
"scope": "story",
|
|
4
|
+
"checks": [
|
|
5
|
+
{
|
|
6
|
+
"id": "devops-story-01",
|
|
7
|
+
"tier": 1,
|
|
8
|
+
"perspective": "devops",
|
|
9
|
+
"severity": "critical",
|
|
10
|
+
"category": "acceptance-criteria",
|
|
11
|
+
"universal": false,
|
|
12
|
+
"applicabilityQuestion": "Does this story involve deployment, CI/CD, infrastructure, or operational concerns?",
|
|
13
|
+
"question": "Is each acceptance criterion testable and measurable?",
|
|
14
|
+
"failDescription": "One or more acceptance criteria are not testable or measurable",
|
|
15
|
+
"failSuggestion": "Make each AC testable: specify exact expected outcome, metric, or verifiable condition"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "devops-story-02",
|
|
19
|
+
"tier": 1,
|
|
20
|
+
"perspective": "devops",
|
|
21
|
+
"severity": "major",
|
|
22
|
+
"category": "acceptance-criteria",
|
|
23
|
+
"universal": false,
|
|
24
|
+
"applicabilityQuestion": "Does this story involve deployment, CI/CD, infrastructure, or operational concerns?",
|
|
25
|
+
"question": "Do criteria cover happy path, edge cases, and error scenarios?",
|
|
26
|
+
"failDescription": "Criteria do not cover edge cases or error scenarios",
|
|
27
|
+
"failSuggestion": "Add edge case and error scenario ACs: failed deployment rollback, resource limits exceeded, network failures"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "devops-story-03",
|
|
31
|
+
"tier": 1,
|
|
32
|
+
"perspective": "devops",
|
|
33
|
+
"severity": "major",
|
|
34
|
+
"category": "acceptance-criteria",
|
|
35
|
+
"universal": false,
|
|
36
|
+
"applicabilityQuestion": "Does this story involve deployment, CI/CD, infrastructure, or operational concerns?",
|
|
37
|
+
"question": "Are DevOps requirements explicitly stated?",
|
|
38
|
+
"failDescription": "DevOps requirements are not explicitly stated in acceptance criteria",
|
|
39
|
+
"failSuggestion": "State DevOps requirements explicitly: deployment target, environment, monitoring hooks, rollback criteria"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "devops-story-04",
|
|
43
|
+
"tier": 1,
|
|
44
|
+
"perspective": "devops",
|
|
45
|
+
"severity": "major",
|
|
46
|
+
"category": "implementation-clarity",
|
|
47
|
+
"universal": false,
|
|
48
|
+
"applicabilityQuestion": "Does this story involve deployment, CI/CD, infrastructure, or operational concerns?",
|
|
49
|
+
"question": "Does the story provide enough DevOps detail for implementation?",
|
|
50
|
+
"failDescription": "Insufficient DevOps detail for implementation",
|
|
51
|
+
"failSuggestion": "Add DevOps implementation details: specific tools, configuration values, environment variables, pipeline steps"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "devops-story-05",
|
|
55
|
+
"tier": 1,
|
|
56
|
+
"perspective": "devops",
|
|
57
|
+
"severity": "minor",
|
|
58
|
+
"category": "implementation-clarity",
|
|
59
|
+
"universal": false,
|
|
60
|
+
"applicabilityQuestion": "Does this story involve deployment, CI/CD, infrastructure, or operational concerns?",
|
|
61
|
+
"question": "Are DevOps patterns and approaches specified?",
|
|
62
|
+
"failDescription": "DevOps patterns and approaches are not specified",
|
|
63
|
+
"failSuggestion": "Specify DevOps patterns: deployment strategy, IaC approach, monitoring integration, log aggregation"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "devops-story-06",
|
|
67
|
+
"tier": 1,
|
|
68
|
+
"perspective": "devops",
|
|
69
|
+
"severity": "major",
|
|
70
|
+
"category": "testability",
|
|
71
|
+
"universal": false,
|
|
72
|
+
"applicabilityQuestion": "Does this story involve deployment, CI/CD, infrastructure, or operational concerns?",
|
|
73
|
+
"question": "Does the story have a test-boundary AC naming specific scenarios a developer must test?",
|
|
74
|
+
"failDescription": "Story lacks a test-boundary AC — no specific test scenarios named",
|
|
75
|
+
"failSuggestion": "Add test-boundary AC: 'Tests must cover: (1) successful deployment, (2) rollback on failure, (3) health check pass, (4) resource limit behavior'"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "devops-story-07",
|
|
79
|
+
"tier": 1,
|
|
80
|
+
"perspective": "devops",
|
|
81
|
+
"severity": "minor",
|
|
82
|
+
"category": "scope-dependencies",
|
|
83
|
+
"universal": false,
|
|
84
|
+
"applicabilityQuestion": "Does this story involve deployment, CI/CD, infrastructure, or operational concerns?",
|
|
85
|
+
"question": "Are dependencies on other stories explicit?",
|
|
86
|
+
"failDescription": "Dependencies on other stories are not explicit",
|
|
87
|
+
"failSuggestion": "Make dependencies explicit: reference specific story IDs and what they provide"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "devops-story-08",
|
|
91
|
+
"tier": 1,
|
|
92
|
+
"perspective": "devops",
|
|
93
|
+
"severity": "minor",
|
|
94
|
+
"category": "best-practices",
|
|
95
|
+
"universal": false,
|
|
96
|
+
"applicabilityQuestion": "Does this story involve deployment, CI/CD, infrastructure, or operational concerns?",
|
|
97
|
+
"question": "Does the story follow DevOps best practices?",
|
|
98
|
+
"failDescription": "DevOps best practices are not followed",
|
|
99
|
+
"failSuggestion": "Follow DevOps best practices: infrastructure as code, automated testing, immutable deployments"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
{
|
|
2
|
+
"perspective": "frontend",
|
|
3
|
+
"scope": "story",
|
|
4
|
+
"checks": [
|
|
5
|
+
{
|
|
6
|
+
"id": "fe-story-01",
|
|
7
|
+
"tier": 1,
|
|
8
|
+
"perspective": "frontend",
|
|
9
|
+
"severity": "major",
|
|
10
|
+
"category": "async-state-coverage",
|
|
11
|
+
"universal": false,
|
|
12
|
+
"applicabilityQuestion": "Does this story involve asynchronous operations in the UI? (Does it fetch data, submit forms, or call APIs from the frontend?)",
|
|
13
|
+
"question": "Does every async operation have a described loading indicator (skeleton, spinner, disabled button)?",
|
|
14
|
+
"failDescription": "Async operations lack loading state descriptions",
|
|
15
|
+
"failSuggestion": "Describe loading state for each async operation: 'While request is in flight, show spinner on button / skeleton rows / disable form'"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "fe-story-02",
|
|
19
|
+
"tier": 1,
|
|
20
|
+
"perspective": "frontend",
|
|
21
|
+
"severity": "major",
|
|
22
|
+
"category": "async-state-coverage",
|
|
23
|
+
"universal": false,
|
|
24
|
+
"applicabilityQuestion": "Does this story involve asynchronous operations in the UI?",
|
|
25
|
+
"question": "Are error states described by HTTP code (401 -> redirect, 403 -> forbidden, 422 -> inline errors, 500 -> toast)?",
|
|
26
|
+
"failDescription": "Error states are not described per HTTP status code",
|
|
27
|
+
"failSuggestion": "Describe error states by code: 401 -> redirect to login, 403 -> forbidden message, 422 -> inline field errors, 500 -> toast"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "fe-story-03",
|
|
31
|
+
"tier": 1,
|
|
32
|
+
"perspective": "frontend",
|
|
33
|
+
"severity": "major",
|
|
34
|
+
"category": "async-state-coverage",
|
|
35
|
+
"universal": false,
|
|
36
|
+
"applicabilityQuestion": "Does this story display lists or search results?",
|
|
37
|
+
"question": "Do lists and search results define what renders when data is empty (data: [])?",
|
|
38
|
+
"failDescription": "Empty state is not defined for list/search views",
|
|
39
|
+
"failSuggestion": "Define empty state: what renders when data is empty — illustration, message, call-to-action"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "fe-story-04",
|
|
43
|
+
"tier": 1,
|
|
44
|
+
"perspective": "frontend",
|
|
45
|
+
"severity": "minor",
|
|
46
|
+
"category": "async-state-coverage",
|
|
47
|
+
"universal": false,
|
|
48
|
+
"applicabilityQuestion": "Does this story involve data mutations from the UI?",
|
|
49
|
+
"question": "Do mutation stories state whether UI updates before or after server confirmation (optimistic updates)?",
|
|
50
|
+
"failDescription": "Optimistic update strategy is not stated for mutations",
|
|
51
|
+
"failSuggestion": "State optimistic update strategy: 'UI updates immediately and rolls back on failure' or 'UI waits for server confirmation'"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "fe-story-05",
|
|
55
|
+
"tier": 1,
|
|
56
|
+
"perspective": "frontend",
|
|
57
|
+
"severity": "major",
|
|
58
|
+
"category": "form-input-ux",
|
|
59
|
+
"universal": false,
|
|
60
|
+
"applicabilityQuestion": "Does this story include a form with user input fields?",
|
|
61
|
+
"question": "Does the story specify inline field validation timing (on blur, on submit, or real-time)?",
|
|
62
|
+
"failDescription": "Form validation timing is not specified",
|
|
63
|
+
"failSuggestion": "Specify validation timing: 'Field validation runs on blur / on submit / after 500ms debounce'"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "fe-story-06",
|
|
67
|
+
"tier": 1,
|
|
68
|
+
"perspective": "frontend",
|
|
69
|
+
"severity": "major",
|
|
70
|
+
"category": "form-input-ux",
|
|
71
|
+
"universal": false,
|
|
72
|
+
"applicabilityQuestion": "Does this story include a form with a submit action?",
|
|
73
|
+
"question": "Is the submit button state defined during inflight requests (disabled during request, re-enabled on completion)?",
|
|
74
|
+
"failDescription": "Submit button state during inflight requests is not defined",
|
|
75
|
+
"failSuggestion": "Define submit button state: 'disabled with spinner during request, re-enabled on success or failure'"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "fe-story-07",
|
|
79
|
+
"tier": 1,
|
|
80
|
+
"perspective": "frontend",
|
|
81
|
+
"severity": "major",
|
|
82
|
+
"category": "form-input-ux",
|
|
83
|
+
"universal": false,
|
|
84
|
+
"applicabilityQuestion": "Does this story submit data that could result in server-side validation errors?",
|
|
85
|
+
"question": "Are server-side 422 errors mapped to field-level messages (not just a generic toast)?",
|
|
86
|
+
"failDescription": "Server-side validation errors are not mapped to individual form fields",
|
|
87
|
+
"failSuggestion": "Map server-side 422 errors to field-level messages: display error next to the specific field that failed validation"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "fe-story-08",
|
|
91
|
+
"tier": 1,
|
|
92
|
+
"perspective": "frontend",
|
|
93
|
+
"severity": "major",
|
|
94
|
+
"category": "form-input-ux",
|
|
95
|
+
"universal": false,
|
|
96
|
+
"applicabilityQuestion": "Does this story involve a successful mutation (create, update, or delete)?",
|
|
97
|
+
"question": "Is success feedback defined — what changes in the UI on successful mutation (navigate, toast, refresh)?",
|
|
98
|
+
"failDescription": "Post-mutation success feedback is not defined",
|
|
99
|
+
"failSuggestion": "Define success feedback: 'On success, navigate to [route]' or 'show toast and refresh list' or 'close modal and update row'"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "fe-story-09",
|
|
103
|
+
"tier": 1,
|
|
104
|
+
"perspective": "frontend",
|
|
105
|
+
"severity": "minor",
|
|
106
|
+
"category": "component-navigation",
|
|
107
|
+
"universal": false,
|
|
108
|
+
"applicabilityQuestion": "Does this story involve protected routes? (Does it have pages that require authentication?)",
|
|
109
|
+
"question": "Is route protection behavior stated (what happens when unauthenticated user hits a protected route)?",
|
|
110
|
+
"failDescription": "Route protection behavior is not stated",
|
|
111
|
+
"failSuggestion": "State route protection: 'Unauthenticated user is redirected to /login with return URL preserved'"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "fe-story-10",
|
|
115
|
+
"tier": 1,
|
|
116
|
+
"perspective": "frontend",
|
|
117
|
+
"severity": "major",
|
|
118
|
+
"category": "component-navigation",
|
|
119
|
+
"universal": false,
|
|
120
|
+
"applicabilityQuestion": "Does this story involve create, delete, or update actions?",
|
|
121
|
+
"question": "Are navigation flows after actions defined (where does user land after create/delete/update)?",
|
|
122
|
+
"failDescription": "Post-action navigation flows are not defined",
|
|
123
|
+
"failSuggestion": "Define navigation after actions: 'After create, navigate to detail page' or 'After delete, return to list'"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"id": "fe-story-11",
|
|
127
|
+
"tier": 1,
|
|
128
|
+
"perspective": "frontend",
|
|
129
|
+
"severity": "minor",
|
|
130
|
+
"category": "component-navigation",
|
|
131
|
+
"universal": false,
|
|
132
|
+
"applicabilityQuestion": "Does this story involve state that should persist across navigation?",
|
|
133
|
+
"question": "Is state persistence described (does component state survive tab switch or navigation)?",
|
|
134
|
+
"failDescription": "State persistence behavior across navigation is not described",
|
|
135
|
+
"failSuggestion": "Describe state persistence: server-state cache survives navigation (React Query), form drafts are preserved or discarded"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "fe-story-12",
|
|
139
|
+
"tier": 1,
|
|
140
|
+
"perspective": "frontend",
|
|
141
|
+
"severity": "minor",
|
|
142
|
+
"category": "accessibility-quality",
|
|
143
|
+
"universal": false,
|
|
144
|
+
"applicabilityQuestion": "Does this story include interactive elements? (Does it have forms, modals, or dropdowns?)",
|
|
145
|
+
"question": "Are interactive elements keyboard-navigable (forms, modals, dropdowns)?",
|
|
146
|
+
"failDescription": "Keyboard navigation is not specified for interactive elements",
|
|
147
|
+
"failSuggestion": "Require keyboard navigation: Tab through fields, Enter to submit, Escape to close modals"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "fe-story-13",
|
|
151
|
+
"tier": 1,
|
|
152
|
+
"perspective": "frontend",
|
|
153
|
+
"severity": "minor",
|
|
154
|
+
"category": "accessibility-quality",
|
|
155
|
+
"universal": false,
|
|
156
|
+
"applicabilityQuestion": "Does this story display error messages for form inputs?",
|
|
157
|
+
"question": "Are error messages programmatically associated with inputs (aria-describedby or equivalent)?",
|
|
158
|
+
"failDescription": "Error messages are not programmatically associated with form inputs",
|
|
159
|
+
"failSuggestion": "Associate errors with inputs: use aria-describedby to link error message to input field"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"id": "fe-story-14",
|
|
163
|
+
"tier": 1,
|
|
164
|
+
"perspective": "frontend",
|
|
165
|
+
"severity": "minor",
|
|
166
|
+
"category": "accessibility-quality",
|
|
167
|
+
"universal": false,
|
|
168
|
+
"applicabilityQuestion": "Does this story involve dynamic content updates? (Does it have live data, notifications, or async-loaded content?)",
|
|
169
|
+
"question": "Are screen reader announcements specified for async state changes (aria-live regions)?",
|
|
170
|
+
"failDescription": "Screen reader announcements are not specified for dynamic content",
|
|
171
|
+
"failSuggestion": "Add aria-live regions for async updates: loading announcements, error announcements, success confirmations"
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"perspective": "mobile",
|
|
3
|
+
"scope": "story",
|
|
4
|
+
"checks": [
|
|
5
|
+
{
|
|
6
|
+
"id": "mob-story-01",
|
|
7
|
+
"tier": 1,
|
|
8
|
+
"perspective": "mobile",
|
|
9
|
+
"severity": "critical",
|
|
10
|
+
"category": "acceptance-criteria",
|
|
11
|
+
"universal": false,
|
|
12
|
+
"applicabilityQuestion": "Does this story involve mobile application features? (Does it target iOS, Android, or cross-platform mobile?)",
|
|
13
|
+
"question": "Is each acceptance criterion testable and measurable?",
|
|
14
|
+
"failDescription": "One or more acceptance criteria are not testable or measurable",
|
|
15
|
+
"failSuggestion": "Make each AC testable: specify exact mobile behavior, platform-specific outcomes, or measurable criteria"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "mob-story-02",
|
|
19
|
+
"tier": 1,
|
|
20
|
+
"perspective": "mobile",
|
|
21
|
+
"severity": "major",
|
|
22
|
+
"category": "acceptance-criteria",
|
|
23
|
+
"universal": false,
|
|
24
|
+
"applicabilityQuestion": "Does this story involve mobile application features?",
|
|
25
|
+
"question": "Do criteria cover happy path, edge cases, and error scenarios?",
|
|
26
|
+
"failDescription": "Criteria do not cover mobile edge cases or error scenarios",
|
|
27
|
+
"failSuggestion": "Add mobile edge cases: offline behavior, poor connectivity, background/foreground transitions, orientation changes"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "mob-story-03",
|
|
31
|
+
"tier": 1,
|
|
32
|
+
"perspective": "mobile",
|
|
33
|
+
"severity": "major",
|
|
34
|
+
"category": "acceptance-criteria",
|
|
35
|
+
"universal": false,
|
|
36
|
+
"applicabilityQuestion": "Does this story involve mobile application features?",
|
|
37
|
+
"question": "Are mobile requirements explicitly stated?",
|
|
38
|
+
"failDescription": "Mobile requirements are not explicitly stated",
|
|
39
|
+
"failSuggestion": "State mobile requirements: target platforms, minimum OS versions, device capabilities, offline support"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "mob-story-04",
|
|
43
|
+
"tier": 1,
|
|
44
|
+
"perspective": "mobile",
|
|
45
|
+
"severity": "major",
|
|
46
|
+
"category": "implementation-clarity",
|
|
47
|
+
"universal": false,
|
|
48
|
+
"applicabilityQuestion": "Does this story involve mobile application features?",
|
|
49
|
+
"question": "Does the story provide enough mobile detail for implementation?",
|
|
50
|
+
"failDescription": "Insufficient mobile detail for implementation",
|
|
51
|
+
"failSuggestion": "Add mobile details: navigation pattern, gesture handling, local storage strategy, native API usage"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "mob-story-05",
|
|
55
|
+
"tier": 1,
|
|
56
|
+
"perspective": "mobile",
|
|
57
|
+
"severity": "minor",
|
|
58
|
+
"category": "implementation-clarity",
|
|
59
|
+
"universal": false,
|
|
60
|
+
"applicabilityQuestion": "Does this story involve mobile application features?",
|
|
61
|
+
"question": "Are mobile patterns and approaches specified?",
|
|
62
|
+
"failDescription": "Mobile patterns and approaches are not specified",
|
|
63
|
+
"failSuggestion": "Specify mobile patterns: offline-first, data sync strategy, platform-specific UX, push notification handling"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "mob-story-06",
|
|
67
|
+
"tier": 1,
|
|
68
|
+
"perspective": "mobile",
|
|
69
|
+
"severity": "major",
|
|
70
|
+
"category": "testability",
|
|
71
|
+
"universal": false,
|
|
72
|
+
"applicabilityQuestion": "Does this story involve mobile application features?",
|
|
73
|
+
"question": "Does the story have a test-boundary AC naming specific scenarios a developer must test?",
|
|
74
|
+
"failDescription": "Story lacks a test-boundary AC",
|
|
75
|
+
"failSuggestion": "Add test-boundary AC: 'Tests must cover: (1) happy path, (2) offline mode, (3) slow network, (4) platform-specific behavior'"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "mob-story-07",
|
|
79
|
+
"tier": 1,
|
|
80
|
+
"perspective": "mobile",
|
|
81
|
+
"severity": "minor",
|
|
82
|
+
"category": "scope-dependencies",
|
|
83
|
+
"universal": false,
|
|
84
|
+
"applicabilityQuestion": "Does this story involve mobile application features?",
|
|
85
|
+
"question": "Are dependencies on other stories explicit?",
|
|
86
|
+
"failDescription": "Dependencies on other stories are not explicit",
|
|
87
|
+
"failSuggestion": "Make dependencies explicit: reference API stories, shared component stories, native module dependencies"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "mob-story-08",
|
|
91
|
+
"tier": 1,
|
|
92
|
+
"perspective": "mobile",
|
|
93
|
+
"severity": "minor",
|
|
94
|
+
"category": "best-practices",
|
|
95
|
+
"universal": false,
|
|
96
|
+
"applicabilityQuestion": "Does this story involve mobile application features?",
|
|
97
|
+
"question": "Does the story follow mobile best practices?",
|
|
98
|
+
"failDescription": "Mobile best practices are not followed",
|
|
99
|
+
"failSuggestion": "Follow mobile best practices: platform-native patterns, battery efficiency, responsive layouts, accessibility"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
{
|
|
2
|
+
"perspective": "qa",
|
|
3
|
+
"scope": "story",
|
|
4
|
+
"checks": [
|
|
5
|
+
{
|
|
6
|
+
"id": "qa-story-01",
|
|
7
|
+
"tier": 1,
|
|
8
|
+
"perspective": "qa",
|
|
9
|
+
"severity": "critical",
|
|
10
|
+
"category": "acceptance-criteria-quality",
|
|
11
|
+
"universal": false,
|
|
12
|
+
"applicabilityQuestion": "Does this story define acceptance criteria that need QA validation?",
|
|
13
|
+
"question": "Is each acceptance criterion testable and measurable with clear pass/fail conditions?",
|
|
14
|
+
"failDescription": "Acceptance criteria lack clear pass/fail conditions — QA cannot determine if the story passes",
|
|
15
|
+
"failSuggestion": "Rewrite each AC with explicit pass/fail conditions: given X input, when Y action, then Z observable result"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "qa-story-02",
|
|
19
|
+
"tier": 1,
|
|
20
|
+
"perspective": "qa",
|
|
21
|
+
"severity": "critical",
|
|
22
|
+
"category": "acceptance-criteria-quality",
|
|
23
|
+
"universal": false,
|
|
24
|
+
"applicabilityQuestion": "Does this story involve user-facing functionality?",
|
|
25
|
+
"question": "Do criteria cover happy path, edge cases, and error scenarios comprehensively?",
|
|
26
|
+
"failDescription": "Criteria do not cover edge cases and error scenarios — QA will find gaps during testing",
|
|
27
|
+
"failSuggestion": "Add ACs for: happy path (normal flow), edge cases (boundary values, empty inputs), and error scenarios (invalid data, timeout, permission denied)"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "qa-story-03",
|
|
31
|
+
"tier": 1,
|
|
32
|
+
"perspective": "qa",
|
|
33
|
+
"severity": "critical",
|
|
34
|
+
"category": "acceptance-criteria-quality",
|
|
35
|
+
"universal": false,
|
|
36
|
+
"applicabilityQuestion": "Does this story have multiple acceptance criteria?",
|
|
37
|
+
"question": "Are acceptance criteria independent and non-overlapping — can each be tested in isolation?",
|
|
38
|
+
"failDescription": "Acceptance criteria overlap or depend on each other — cannot be tested in isolation",
|
|
39
|
+
"failSuggestion": "Ensure each AC is independently testable: remove dependencies between ACs, eliminate overlapping conditions"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "qa-story-04",
|
|
43
|
+
"tier": 1,
|
|
44
|
+
"perspective": "qa",
|
|
45
|
+
"severity": "critical",
|
|
46
|
+
"category": "acceptance-criteria-quality",
|
|
47
|
+
"universal": false,
|
|
48
|
+
"applicabilityQuestion": "Does this story involve QA-specific requirements (test environments, test data, regression)?",
|
|
49
|
+
"question": "Are QA requirements explicitly stated — test environment needs, regression scope, and acceptance test criteria?",
|
|
50
|
+
"failDescription": "QA requirements are not explicitly stated — unclear what environment, data, or regression scope is needed",
|
|
51
|
+
"failSuggestion": "State QA requirements: test environment setup, required test data, regression test scope, and acceptance test entry/exit criteria"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "qa-story-05",
|
|
55
|
+
"tier": 1,
|
|
56
|
+
"perspective": "qa",
|
|
57
|
+
"severity": "major",
|
|
58
|
+
"category": "implementation-clarity",
|
|
59
|
+
"universal": false,
|
|
60
|
+
"applicabilityQuestion": "Does this story require QA to understand implementation details for effective testing?",
|
|
61
|
+
"question": "Does the story provide enough detail for QA to design test cases — expected behaviors, boundary conditions, and data constraints?",
|
|
62
|
+
"failDescription": "Insufficient detail for QA test case design — expected behaviors or boundary conditions are missing",
|
|
63
|
+
"failSuggestion": "Add details for test design: expected behavior per scenario, boundary values (min/max/empty), data type constraints, and state preconditions"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "qa-story-06",
|
|
67
|
+
"tier": 1,
|
|
68
|
+
"perspective": "qa",
|
|
69
|
+
"severity": "major",
|
|
70
|
+
"category": "implementation-clarity",
|
|
71
|
+
"universal": false,
|
|
72
|
+
"applicabilityQuestion": "Does this story have technical constraints that affect QA testing?",
|
|
73
|
+
"question": "Are technical constraints and assumptions explicit — performance thresholds, browser/device support, API contract versions?",
|
|
74
|
+
"failDescription": "Technical constraints are not explicit — QA cannot validate non-functional requirements",
|
|
75
|
+
"failSuggestion": "State technical constraints: response time thresholds, supported browsers/devices, API version compatibility, concurrency limits"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "qa-story-07",
|
|
79
|
+
"tier": 1,
|
|
80
|
+
"perspective": "qa",
|
|
81
|
+
"severity": "major",
|
|
82
|
+
"category": "implementation-clarity",
|
|
83
|
+
"universal": false,
|
|
84
|
+
"applicabilityQuestion": "Does this story involve QA patterns such as test automation, regression testing, or test data management?",
|
|
85
|
+
"question": "Are QA patterns and approaches specified — manual vs automated testing, regression strategy, and test data management?",
|
|
86
|
+
"failDescription": "QA patterns are not specified — unclear whether tests are manual or automated, and what regression approach to use",
|
|
87
|
+
"failSuggestion": "Specify QA approach: manual/automated split, regression test suite to update, test data setup/teardown strategy"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "qa-story-08",
|
|
91
|
+
"tier": 1,
|
|
92
|
+
"perspective": "qa",
|
|
93
|
+
"severity": "major",
|
|
94
|
+
"category": "testability",
|
|
95
|
+
"universal": false,
|
|
96
|
+
"applicabilityQuestion": "Does this story have functionality that needs testing at multiple levels?",
|
|
97
|
+
"question": "Can the story be tested at multiple levels — unit, integration, and end-to-end — with clear boundaries between each?",
|
|
98
|
+
"failDescription": "Testing levels are unclear — no distinction between unit, integration, and e2e test scope",
|
|
99
|
+
"failSuggestion": "Define testing levels: unit tests for business logic, integration tests for API/DB interactions, e2e tests for user workflows"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "qa-story-09",
|
|
103
|
+
"tier": 1,
|
|
104
|
+
"perspective": "qa",
|
|
105
|
+
"severity": "major",
|
|
106
|
+
"category": "testability",
|
|
107
|
+
"universal": false,
|
|
108
|
+
"applicabilityQuestion": "Does this story require specific test data for QA validation?",
|
|
109
|
+
"question": "Are test data requirements clear — specific datasets, user roles, precondition states, and cleanup procedures?",
|
|
110
|
+
"failDescription": "Test data requirements are unclear — QA cannot prepare the test environment",
|
|
111
|
+
"failSuggestion": "Define test data: required user roles and permissions, precondition database states, test datasets, and post-test cleanup procedures"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "qa-story-10",
|
|
115
|
+
"tier": 1,
|
|
116
|
+
"perspective": "qa",
|
|
117
|
+
"severity": "major",
|
|
118
|
+
"category": "testability",
|
|
119
|
+
"universal": false,
|
|
120
|
+
"applicabilityQuestion": "Does this story produce outcomes that QA needs to verify?",
|
|
121
|
+
"question": "Are expected outcomes precisely defined — exact response bodies, UI states, database changes, or event emissions?",
|
|
122
|
+
"failDescription": "Expected outcomes are not precisely defined — QA cannot write deterministic test assertions",
|
|
123
|
+
"failSuggestion": "Define precise outcomes: exact HTTP response codes and bodies, specific UI states, database record changes, or event payloads"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"id": "qa-story-11",
|
|
127
|
+
"tier": 1,
|
|
128
|
+
"perspective": "qa",
|
|
129
|
+
"severity": "minor",
|
|
130
|
+
"category": "scope-dependencies",
|
|
131
|
+
"universal": false,
|
|
132
|
+
"applicabilityQuestion": "Does this story involve QA effort that could span multiple days?",
|
|
133
|
+
"question": "Is the story appropriately scoped — QA effort focused on a single cohesive capability including test design, execution, and regression?",
|
|
134
|
+
"failDescription": "Story may be too broad for QA — testing effort spans too many concerns",
|
|
135
|
+
"failSuggestion": "Split large stories: separate core functionality from edge cases, or split by test type (functional, integration, performance)"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "qa-story-12",
|
|
139
|
+
"tier": 1,
|
|
140
|
+
"perspective": "qa",
|
|
141
|
+
"severity": "minor",
|
|
142
|
+
"category": "scope-dependencies",
|
|
143
|
+
"universal": false,
|
|
144
|
+
"applicabilityQuestion": "Does this story depend on other stories, services, or test infrastructure?",
|
|
145
|
+
"question": "Are dependencies on other stories, test environments, or infrastructure explicitly identified?",
|
|
146
|
+
"failDescription": "Dependencies are not explicitly identified — QA may be blocked by unresolved dependencies",
|
|
147
|
+
"failSuggestion": "List all dependencies: prerequisite stories, required test environment services, third-party API availability, and test infrastructure needs"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "qa-story-13",
|
|
151
|
+
"tier": 1,
|
|
152
|
+
"perspective": "qa",
|
|
153
|
+
"severity": "minor",
|
|
154
|
+
"category": "scope-dependencies",
|
|
155
|
+
"universal": false,
|
|
156
|
+
"applicabilityQuestion": "Does this story deliver functionality incrementally?",
|
|
157
|
+
"question": "Is the story independent enough to be tested and delivered incrementally without blocking other QA work?",
|
|
158
|
+
"failDescription": "Story is not independently testable — may block or be blocked by other QA work",
|
|
159
|
+
"failSuggestion": "Ensure independent testability: define stub/mock strategy for unavailable dependencies, identify parallel testing opportunities"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"id": "qa-story-14",
|
|
163
|
+
"tier": 1,
|
|
164
|
+
"perspective": "qa",
|
|
165
|
+
"severity": "minor",
|
|
166
|
+
"category": "best-practices",
|
|
167
|
+
"universal": false,
|
|
168
|
+
"applicabilityQuestion": "Does this story involve QA activities?",
|
|
169
|
+
"question": "Does the story follow QA best practices — traceability from requirements to tests, regression impact analysis, and defect prevention?",
|
|
170
|
+
"failDescription": "Story does not address QA best practices",
|
|
171
|
+
"failSuggestion": "Address QA best practices: requirements-to-test traceability matrix, regression impact analysis, and risk-based test prioritization"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"id": "qa-story-15",
|
|
175
|
+
"tier": 1,
|
|
176
|
+
"perspective": "qa",
|
|
177
|
+
"severity": "minor",
|
|
178
|
+
"category": "best-practices",
|
|
179
|
+
"universal": false,
|
|
180
|
+
"applicabilityQuestion": "Does this story have testing approaches that could lead to anti-patterns?",
|
|
181
|
+
"question": "Does the story avoid QA anti-patterns — no testing in production only, no missing regression coverage, no undefined exit criteria?",
|
|
182
|
+
"failDescription": "Story may contain QA anti-patterns",
|
|
183
|
+
"failSuggestion": "Check for anti-patterns: testing only in production (add staging), missing regression (define regression suite), undefined exit criteria (add done definition)"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"id": "qa-story-16",
|
|
187
|
+
"tier": 1,
|
|
188
|
+
"perspective": "qa",
|
|
189
|
+
"severity": "major",
|
|
190
|
+
"category": "acceptance-criteria-quality",
|
|
191
|
+
"universal": false,
|
|
192
|
+
"applicabilityQuestion": "Does this story use vague language in its acceptance criteria?",
|
|
193
|
+
"question": "Do all ACs avoid vague phrases ('handle gracefully', 'validate properly', 'appropriate response') without specifying concrete outcomes?",
|
|
194
|
+
"failDescription": "ACs use vague language without specifying concrete, testable outcomes",
|
|
195
|
+
"failSuggestion": "Replace vague phrases with testable outcomes: instead of 'handle errors gracefully', specify 'display error code ERR_001 with message text and retry button'"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"id": "qa-story-17",
|
|
199
|
+
"tier": 1,
|
|
200
|
+
"perspective": "qa",
|
|
201
|
+
"severity": "major",
|
|
202
|
+
"category": "testability",
|
|
203
|
+
"universal": false,
|
|
204
|
+
"applicabilityQuestion": "Does this story have logic paths that need testing?",
|
|
205
|
+
"question": "Does at least one AC explicitly list concrete test scenarios (named test cases, boundary values, or error paths)?",
|
|
206
|
+
"failDescription": "Story lacks a test-boundary AC — no AC names the specific scenarios a developer must test",
|
|
207
|
+
"failSuggestion": "Add one AC: 'Developer tests must cover: (1) happy path, (2) missing required field, (3) domain-specific error, (4) authentication failure, (5) authorization failure'"
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
}
|