agentic-qe 3.6.4 → 3.6.6
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/.claude/helpers/statusline-v3.cjs +7 -1
- package/.claude/helpers/v3/product-factors/sfdipot-reference-template.html +958 -0
- package/.claude/helpers/v3/quality-criteria/evidence-classification.md +116 -0
- package/.claude/helpers/v3/quality-criteria/htsm-categories.md +139 -0
- package/.claude/helpers/v3/quality-criteria/quality-criteria-reference-template.html +811 -0
- package/.claude/helpers/v3/quality-criteria/validate-quality-criteria.ts +167 -0
- package/.claude/skills/README.md +21 -8
- package/.claude/skills/skills-manifest.json +1 -1
- package/README.md +45 -49
- package/package.json +1 -1
- package/v3/CHANGELOG.md +30 -0
- package/v3/assets/agents/v3/README.md +9 -70
- package/v3/assets/agents/v3/qe-accessibility-auditor.md +8 -7
- package/v3/assets/agents/v3/qe-bdd-generator.md +8 -7
- package/v3/assets/agents/v3/qe-chaos-engineer.md +9 -8
- package/v3/assets/agents/v3/qe-code-complexity.md +8 -7
- package/v3/assets/agents/v3/qe-code-intelligence.md +8 -7
- package/v3/assets/agents/v3/qe-contract-validator.md +8 -7
- package/v3/assets/agents/v3/qe-coverage-specialist.md +8 -7
- package/v3/assets/agents/v3/qe-defect-predictor.md +8 -7
- package/v3/assets/agents/v3/qe-dependency-mapper.md +8 -7
- package/v3/assets/agents/v3/qe-deployment-advisor.md +8 -7
- package/v3/assets/agents/v3/qe-flaky-hunter.md +8 -7
- package/v3/assets/agents/v3/qe-fleet-commander.md +8 -7
- package/v3/assets/agents/v3/qe-gap-detector.md +8 -7
- package/v3/assets/agents/v3/qe-graphql-tester.md +8 -7
- package/v3/assets/agents/v3/qe-impact-analyzer.md +8 -7
- package/v3/assets/agents/v3/qe-kg-builder.md +8 -7
- package/v3/assets/agents/v3/qe-load-tester.md +8 -7
- package/v3/assets/agents/v3/qe-message-broker-tester.md +15 -10
- package/v3/assets/agents/v3/qe-metrics-optimizer.md +8 -7
- package/v3/assets/agents/v3/qe-middleware-validator.md +15 -10
- package/v3/assets/agents/v3/qe-mutation-tester.md +8 -7
- package/v3/assets/agents/v3/qe-odata-contract-tester.md +17 -12
- package/v3/assets/agents/v3/qe-performance-tester.md +8 -7
- package/v3/assets/agents/v3/qe-property-tester.md +8 -7
- package/v3/assets/agents/v3/qe-qx-partner.md +74 -14
- package/v3/assets/agents/v3/qe-regression-analyzer.md +8 -7
- package/v3/assets/agents/v3/qe-requirements-validator.md +8 -7
- package/v3/assets/agents/v3/qe-responsive-tester.md +8 -7
- package/v3/assets/agents/v3/qe-retry-handler.md +8 -7
- package/v3/assets/agents/v3/qe-risk-assessor.md +8 -7
- package/v3/assets/agents/v3/qe-root-cause-analyzer.md +8 -7
- package/v3/assets/agents/v3/qe-sap-idoc-tester.md +16 -11
- package/v3/assets/agents/v3/qe-sap-rfc-tester.md +15 -10
- package/v3/assets/agents/v3/qe-security-auditor.md +12 -7
- package/v3/assets/agents/v3/qe-security-scanner.md +9 -8
- package/v3/assets/agents/v3/qe-soap-tester.md +15 -10
- package/v3/assets/agents/v3/qe-sod-analyzer.md +17 -12
- package/v3/assets/agents/v3/qe-test-architect.md +8 -7
- package/v3/assets/agents/v3/qe-transfer-specialist.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-code-reviewer.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-integration-reviewer.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-performance-reviewer.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-security-reviewer.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-tdd-green.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-tdd-red.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-tdd-refactor.md +8 -7
- package/v3/assets/agents/v3/templates/qx-report-template.html +26 -22
- package/v3/dist/cli/bundle.js +1984 -1923
- package/v3/dist/cli/commands/hooks.d.ts.map +1 -1
- package/v3/dist/cli/commands/hooks.js +17 -15
- package/v3/dist/cli/commands/hooks.js.map +1 -1
- package/v3/dist/cli/commands/learning.d.ts.map +1 -1
- package/v3/dist/cli/commands/learning.js +15 -14
- package/v3/dist/cli/commands/learning.js.map +1 -1
- package/v3/dist/init/phases/11-claude-md.d.ts.map +1 -1
- package/v3/dist/init/phases/11-claude-md.js +94 -16
- package/v3/dist/init/phases/11-claude-md.js.map +1 -1
- package/v3/dist/integrations/embeddings/cache/EmbeddingCache.js +2 -2
- package/v3/dist/integrations/embeddings/cache/EmbeddingCache.js.map +1 -1
- package/v3/dist/kernel/constants.d.ts +1 -1
- package/v3/dist/kernel/constants.js +1 -1
- package/v3/dist/kernel/unified-memory.d.ts.map +1 -1
- package/v3/dist/kernel/unified-memory.js +2 -3
- package/v3/dist/kernel/unified-memory.js.map +1 -1
- package/v3/dist/learning/pattern-store.d.ts.map +1 -1
- package/v3/dist/learning/pattern-store.js +4 -2
- package/v3/dist/learning/pattern-store.js.map +1 -1
- package/v3/dist/learning/qe-reasoning-bank.d.ts.map +1 -1
- package/v3/dist/learning/qe-reasoning-bank.js +3 -2
- package/v3/dist/learning/qe-reasoning-bank.js.map +1 -1
- package/v3/dist/learning/qe-unified-memory.d.ts.map +1 -1
- package/v3/dist/learning/qe-unified-memory.js +8 -7
- package/v3/dist/learning/qe-unified-memory.js.map +1 -1
- package/v3/dist/learning/sqlite-persistence.d.ts.map +1 -1
- package/v3/dist/learning/sqlite-persistence.js +1 -2
- package/v3/dist/learning/sqlite-persistence.js.map +1 -1
- package/v3/dist/learning/v2-to-v3-migration.d.ts.map +1 -1
- package/v3/dist/learning/v2-to-v3-migration.js +1 -2
- package/v3/dist/learning/v2-to-v3-migration.js.map +1 -1
- package/v3/dist/mcp/bundle.js +525 -850
- package/v3/dist/mcp/tools/coherence/audit.js +1 -1
- package/v3/package.json +2 -2
|
@@ -0,0 +1,811 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Quality Criteria Recommendations - {EPIC_TITLE}</title>
|
|
7
|
+
<style>
|
|
8
|
+
/* ============================================
|
|
9
|
+
QUALITY CRITERIA REFERENCE TEMPLATE
|
|
10
|
+
Template Version: 1.0.0 (Semantic Analysis)
|
|
11
|
+
|
|
12
|
+
USAGE: Copy this template structure exactly.
|
|
13
|
+
Only replace {PLACEHOLDER} values with actual data.
|
|
14
|
+
DO NOT modify CSS or HTML structure.
|
|
15
|
+
============================================ */
|
|
16
|
+
|
|
17
|
+
:root {
|
|
18
|
+
--critical: #dc3545;
|
|
19
|
+
--critical-bg: #fff5f5;
|
|
20
|
+
--high: #fd7e14;
|
|
21
|
+
--high-bg: #fff8f0;
|
|
22
|
+
--medium: #ffc107;
|
|
23
|
+
--medium-bg: #fffdf5;
|
|
24
|
+
--low: #28a745;
|
|
25
|
+
--low-bg: #f5fff5;
|
|
26
|
+
--primary: #1a1a2e;
|
|
27
|
+
--secondary: #16213e;
|
|
28
|
+
--accent: #0f3460;
|
|
29
|
+
--text: #333;
|
|
30
|
+
--text-light: #666;
|
|
31
|
+
--border: #e4e8ec;
|
|
32
|
+
--bg: #f8f9fa;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
36
|
+
|
|
37
|
+
body {
|
|
38
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
39
|
+
line-height: 1.7;
|
|
40
|
+
color: var(--text);
|
|
41
|
+
background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ec 100%);
|
|
42
|
+
min-height: 100vh;
|
|
43
|
+
padding: 2rem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.container { max-width: 1200px; margin: 0 auto; }
|
|
47
|
+
|
|
48
|
+
/* Header */
|
|
49
|
+
.header {
|
|
50
|
+
background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
|
|
51
|
+
color: white;
|
|
52
|
+
padding: 2.5rem;
|
|
53
|
+
border-radius: 16px;
|
|
54
|
+
margin-bottom: 2rem;
|
|
55
|
+
box-shadow: 0 10px 40px rgba(26, 26, 46, 0.2);
|
|
56
|
+
}
|
|
57
|
+
.header h1 { font-size: 1.75rem; margin-bottom: 0.5rem; }
|
|
58
|
+
.header-subtitle { opacity: 0.9; font-size: 1.1rem; margin-bottom: 1rem; }
|
|
59
|
+
.header-meta { display: flex; gap: 2rem; flex-wrap: wrap; opacity: 0.85; font-size: 0.9rem; }
|
|
60
|
+
|
|
61
|
+
/* Executive Summary */
|
|
62
|
+
.executive-summary {
|
|
63
|
+
background: white;
|
|
64
|
+
border-radius: 16px;
|
|
65
|
+
padding: 2rem;
|
|
66
|
+
margin-bottom: 2rem;
|
|
67
|
+
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
|
|
68
|
+
border-left: 5px solid var(--accent);
|
|
69
|
+
}
|
|
70
|
+
.executive-summary h2 { color: var(--primary); margin-bottom: 1rem; }
|
|
71
|
+
.key-message {
|
|
72
|
+
font-size: 1.15rem;
|
|
73
|
+
font-weight: 500;
|
|
74
|
+
color: var(--primary);
|
|
75
|
+
padding: 1rem;
|
|
76
|
+
background: var(--bg);
|
|
77
|
+
border-radius: 8px;
|
|
78
|
+
margin-bottom: 1.5rem;
|
|
79
|
+
}
|
|
80
|
+
.priorities-grid {
|
|
81
|
+
display: grid;
|
|
82
|
+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
83
|
+
gap: 1.5rem;
|
|
84
|
+
}
|
|
85
|
+
.priority-box {
|
|
86
|
+
padding: 1rem;
|
|
87
|
+
border-radius: 8px;
|
|
88
|
+
}
|
|
89
|
+
.priority-box.critical { background: var(--critical-bg); border-left: 4px solid var(--critical); }
|
|
90
|
+
.priority-box.high { background: var(--high-bg); border-left: 4px solid var(--high); }
|
|
91
|
+
.priority-box h4 { margin-bottom: 0.5rem; }
|
|
92
|
+
.priority-box ul { margin-left: 1.2rem; }
|
|
93
|
+
.priority-box li { margin-bottom: 0.25rem; }
|
|
94
|
+
|
|
95
|
+
/* Quick Reference Table */
|
|
96
|
+
.quick-reference {
|
|
97
|
+
background: white;
|
|
98
|
+
border-radius: 16px;
|
|
99
|
+
padding: 2rem;
|
|
100
|
+
margin-bottom: 2rem;
|
|
101
|
+
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
|
|
102
|
+
}
|
|
103
|
+
.quick-reference h2 { color: var(--primary); margin-bottom: 1rem; }
|
|
104
|
+
.quick-reference table {
|
|
105
|
+
width: 100%;
|
|
106
|
+
border-collapse: collapse;
|
|
107
|
+
}
|
|
108
|
+
.quick-reference th, .quick-reference td {
|
|
109
|
+
padding: 0.75rem;
|
|
110
|
+
text-align: left;
|
|
111
|
+
border-bottom: 1px solid var(--border);
|
|
112
|
+
}
|
|
113
|
+
.quick-reference th { background: var(--bg); font-weight: 600; }
|
|
114
|
+
.quick-reference tr:hover { background: #f8f9fa; }
|
|
115
|
+
|
|
116
|
+
/* Priority Sections */
|
|
117
|
+
.priority-section {
|
|
118
|
+
margin-bottom: 2rem;
|
|
119
|
+
}
|
|
120
|
+
.section-header {
|
|
121
|
+
padding: 1rem 1.5rem;
|
|
122
|
+
border-radius: 12px 12px 0 0;
|
|
123
|
+
color: white;
|
|
124
|
+
display: flex;
|
|
125
|
+
justify-content: space-between;
|
|
126
|
+
align-items: center;
|
|
127
|
+
}
|
|
128
|
+
.section-header.critical { background: var(--critical); }
|
|
129
|
+
.section-header.high { background: var(--high); }
|
|
130
|
+
.section-header.medium { background: var(--medium); color: var(--text); }
|
|
131
|
+
.section-header.low { background: var(--low); }
|
|
132
|
+
.section-header h2 { font-size: 1.25rem; margin: 0; }
|
|
133
|
+
.section-description {
|
|
134
|
+
padding: 1rem 1.5rem;
|
|
135
|
+
background: white;
|
|
136
|
+
border-left: 1px solid var(--border);
|
|
137
|
+
border-right: 1px solid var(--border);
|
|
138
|
+
color: var(--text-light);
|
|
139
|
+
font-style: italic;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Recommendation Cards */
|
|
143
|
+
.rec-card {
|
|
144
|
+
background: white;
|
|
145
|
+
border: 1px solid var(--border);
|
|
146
|
+
border-radius: 0 0 12px 12px;
|
|
147
|
+
overflow: hidden;
|
|
148
|
+
margin-bottom: 1rem;
|
|
149
|
+
}
|
|
150
|
+
.rec-card:not(:last-child) {
|
|
151
|
+
border-radius: 0;
|
|
152
|
+
}
|
|
153
|
+
.rec-header {
|
|
154
|
+
padding: 1.5rem;
|
|
155
|
+
border-bottom: 1px solid var(--border);
|
|
156
|
+
}
|
|
157
|
+
.rec-title-row {
|
|
158
|
+
display: flex;
|
|
159
|
+
justify-content: space-between;
|
|
160
|
+
align-items: flex-start;
|
|
161
|
+
margin-bottom: 0.5rem;
|
|
162
|
+
}
|
|
163
|
+
.rec-category {
|
|
164
|
+
font-size: 1.25rem;
|
|
165
|
+
font-weight: 600;
|
|
166
|
+
color: var(--primary);
|
|
167
|
+
}
|
|
168
|
+
/* REMOVED: confidence-badge - confidence percentages were arbitrary without methodology */
|
|
169
|
+
/* Use evidence-type badges instead to classify evidence quality */
|
|
170
|
+
|
|
171
|
+
/* Evidence Type Badges - Classifies evidence quality */
|
|
172
|
+
.evidence-type {
|
|
173
|
+
padding: 0.2rem 0.5rem;
|
|
174
|
+
border-radius: 4px;
|
|
175
|
+
font-size: 0.7rem;
|
|
176
|
+
font-weight: 600;
|
|
177
|
+
text-transform: uppercase;
|
|
178
|
+
white-space: nowrap;
|
|
179
|
+
}
|
|
180
|
+
.evidence-type.direct {
|
|
181
|
+
background: #dcfce7;
|
|
182
|
+
color: #166534;
|
|
183
|
+
border: 1px solid #86efac;
|
|
184
|
+
}
|
|
185
|
+
.evidence-type.inferred {
|
|
186
|
+
background: #fef3c7;
|
|
187
|
+
color: #92400e;
|
|
188
|
+
border: 1px solid #fcd34d;
|
|
189
|
+
}
|
|
190
|
+
.evidence-type.claimed {
|
|
191
|
+
background: #fee2e2;
|
|
192
|
+
color: #991b1b;
|
|
193
|
+
border: 1px solid #fca5a5;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.htsm-question {
|
|
197
|
+
font-style: italic;
|
|
198
|
+
color: var(--text-light);
|
|
199
|
+
padding: 0.75rem;
|
|
200
|
+
background: var(--bg);
|
|
201
|
+
border-radius: 8px;
|
|
202
|
+
border-left: 3px solid var(--accent);
|
|
203
|
+
margin-top: 0.5rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Why It Matters */
|
|
207
|
+
.why-section {
|
|
208
|
+
padding: 1.5rem;
|
|
209
|
+
background: #fafbfc;
|
|
210
|
+
border-bottom: 1px solid var(--border);
|
|
211
|
+
}
|
|
212
|
+
.why-section h4 {
|
|
213
|
+
color: var(--accent);
|
|
214
|
+
margin-bottom: 0.75rem;
|
|
215
|
+
display: flex;
|
|
216
|
+
align-items: center;
|
|
217
|
+
gap: 0.5rem;
|
|
218
|
+
}
|
|
219
|
+
.why-section p { line-height: 1.8; }
|
|
220
|
+
|
|
221
|
+
/* Evidence Section (Semantic Analysis) */
|
|
222
|
+
.evidence-section {
|
|
223
|
+
padding: 1.5rem;
|
|
224
|
+
background: #f0f7ff;
|
|
225
|
+
border-bottom: 1px solid var(--border);
|
|
226
|
+
}
|
|
227
|
+
.evidence-section h4 {
|
|
228
|
+
color: #1e40af;
|
|
229
|
+
margin-bottom: 0.75rem;
|
|
230
|
+
}
|
|
231
|
+
.evidence-table {
|
|
232
|
+
width: 100%;
|
|
233
|
+
border-collapse: collapse;
|
|
234
|
+
font-size: 0.9rem;
|
|
235
|
+
}
|
|
236
|
+
.evidence-table th {
|
|
237
|
+
background: #e0e7ff;
|
|
238
|
+
text-align: left;
|
|
239
|
+
padding: 0.5rem;
|
|
240
|
+
}
|
|
241
|
+
.evidence-table td {
|
|
242
|
+
padding: 0.5rem;
|
|
243
|
+
border-bottom: 1px solid #c7d2fe;
|
|
244
|
+
}
|
|
245
|
+
.evidence-reasoning {
|
|
246
|
+
font-style: italic;
|
|
247
|
+
color: var(--text-light);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* Risk Warnings */
|
|
251
|
+
.risk-warnings {
|
|
252
|
+
padding: 1rem 1.5rem;
|
|
253
|
+
background: var(--critical-bg);
|
|
254
|
+
border-bottom: 1px solid var(--border);
|
|
255
|
+
}
|
|
256
|
+
.risk-warning {
|
|
257
|
+
display: flex;
|
|
258
|
+
align-items: flex-start;
|
|
259
|
+
gap: 0.75rem;
|
|
260
|
+
padding: 0.5rem 0;
|
|
261
|
+
color: var(--critical);
|
|
262
|
+
}
|
|
263
|
+
.risk-warning:not(:last-child) { border-bottom: 1px dashed rgba(220,53,69,0.3); }
|
|
264
|
+
|
|
265
|
+
/* Recommended Actions */
|
|
266
|
+
.actions-section {
|
|
267
|
+
padding: 1.5rem;
|
|
268
|
+
}
|
|
269
|
+
.collapsible-header {
|
|
270
|
+
display: flex;
|
|
271
|
+
justify-content: space-between;
|
|
272
|
+
align-items: center;
|
|
273
|
+
cursor: pointer;
|
|
274
|
+
padding: 0.5rem 0;
|
|
275
|
+
border-bottom: 1px solid var(--border);
|
|
276
|
+
margin-bottom: 1rem;
|
|
277
|
+
}
|
|
278
|
+
.collapsible-header h4 { color: var(--primary); margin: 0; }
|
|
279
|
+
.collapse-icon { font-size: 0.8rem; color: var(--text-light); }
|
|
280
|
+
.collapsible-content.collapsed { display: none; }
|
|
281
|
+
|
|
282
|
+
.action-item {
|
|
283
|
+
display: grid;
|
|
284
|
+
grid-template-columns: auto 1fr;
|
|
285
|
+
gap: 1rem;
|
|
286
|
+
padding: 1rem;
|
|
287
|
+
margin-bottom: 0.75rem;
|
|
288
|
+
background: var(--bg);
|
|
289
|
+
border-radius: 8px;
|
|
290
|
+
border-left: 3px solid var(--accent);
|
|
291
|
+
}
|
|
292
|
+
.action-type {
|
|
293
|
+
padding: 0.25rem 0.75rem;
|
|
294
|
+
border-radius: 4px;
|
|
295
|
+
font-size: 0.7rem;
|
|
296
|
+
font-weight: 600;
|
|
297
|
+
text-transform: uppercase;
|
|
298
|
+
white-space: nowrap;
|
|
299
|
+
height: fit-content;
|
|
300
|
+
}
|
|
301
|
+
.action-type.engineering { background: #e3f2fd; color: #1565c0; }
|
|
302
|
+
.action-type.user_story { background: #f3e5f5; color: #7b1fa2; }
|
|
303
|
+
.action-type.testing { background: #e8f5e9; color: #2e7d32; }
|
|
304
|
+
.action-type.governance { background: #fff3e0; color: #e65100; }
|
|
305
|
+
.action-type.security { background: #ffebee; color: #c62828; }
|
|
306
|
+
.action-type.pi_planning { background: #e0f7fa; color: #00838f; }
|
|
307
|
+
.action-type.performance { background: #fce4ec; color: #ad1457; }
|
|
308
|
+
.action-content h5 { margin-bottom: 0.25rem; color: var(--primary); }
|
|
309
|
+
.action-content p { font-size: 0.9rem; color: var(--text-light); margin: 0; }
|
|
310
|
+
|
|
311
|
+
/* Cross-Cutting Concerns */
|
|
312
|
+
.cross-cutting {
|
|
313
|
+
background: white;
|
|
314
|
+
border-radius: 16px;
|
|
315
|
+
padding: 2rem;
|
|
316
|
+
margin-bottom: 2rem;
|
|
317
|
+
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
|
|
318
|
+
}
|
|
319
|
+
.cross-cutting h2 { color: var(--primary); margin-bottom: 1rem; }
|
|
320
|
+
.concern-card {
|
|
321
|
+
padding: 1.5rem;
|
|
322
|
+
background: var(--bg);
|
|
323
|
+
border-radius: 8px;
|
|
324
|
+
margin-bottom: 1rem;
|
|
325
|
+
border-left: 4px solid var(--accent);
|
|
326
|
+
}
|
|
327
|
+
.concern-card h4 { margin-bottom: 0.5rem; color: var(--primary); }
|
|
328
|
+
.concern-categories {
|
|
329
|
+
display: flex;
|
|
330
|
+
flex-wrap: wrap;
|
|
331
|
+
gap: 0.5rem;
|
|
332
|
+
margin-top: 0.75rem;
|
|
333
|
+
}
|
|
334
|
+
.concern-category {
|
|
335
|
+
background: var(--secondary);
|
|
336
|
+
color: white;
|
|
337
|
+
padding: 0.25rem 0.75rem;
|
|
338
|
+
border-radius: 12px;
|
|
339
|
+
font-size: 0.75rem;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/* PI Planning */
|
|
343
|
+
.pi-planning {
|
|
344
|
+
background: white;
|
|
345
|
+
border-radius: 16px;
|
|
346
|
+
padding: 2rem;
|
|
347
|
+
margin-bottom: 2rem;
|
|
348
|
+
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
|
|
349
|
+
}
|
|
350
|
+
.pi-planning h2 { color: var(--primary); margin-bottom: 1rem; }
|
|
351
|
+
.pi-table {
|
|
352
|
+
width: 100%;
|
|
353
|
+
border-collapse: collapse;
|
|
354
|
+
}
|
|
355
|
+
.pi-table th, .pi-table td {
|
|
356
|
+
padding: 1rem;
|
|
357
|
+
text-align: left;
|
|
358
|
+
border: 1px solid var(--border);
|
|
359
|
+
}
|
|
360
|
+
.pi-table th {
|
|
361
|
+
background: var(--primary);
|
|
362
|
+
color: white;
|
|
363
|
+
}
|
|
364
|
+
.pi-table tr:nth-child(even) { background: var(--bg); }
|
|
365
|
+
.sprint-badge {
|
|
366
|
+
background: var(--accent);
|
|
367
|
+
color: white;
|
|
368
|
+
padding: 0.25rem 0.5rem;
|
|
369
|
+
border-radius: 4px;
|
|
370
|
+
font-weight: 600;
|
|
371
|
+
white-space: nowrap;
|
|
372
|
+
}
|
|
373
|
+
.criteria-tags {
|
|
374
|
+
display: flex;
|
|
375
|
+
flex-wrap: wrap;
|
|
376
|
+
gap: 0.25rem;
|
|
377
|
+
}
|
|
378
|
+
.criteria-tag {
|
|
379
|
+
background: var(--bg);
|
|
380
|
+
padding: 0.15rem 0.5rem;
|
|
381
|
+
border-radius: 4px;
|
|
382
|
+
font-size: 0.75rem;
|
|
383
|
+
border: 1px solid var(--border);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/* Footer */
|
|
387
|
+
.footer {
|
|
388
|
+
text-align: center;
|
|
389
|
+
padding: 2rem;
|
|
390
|
+
color: var(--text-light);
|
|
391
|
+
font-size: 0.875rem;
|
|
392
|
+
}
|
|
393
|
+
.footer a { color: var(--accent); text-decoration: none; }
|
|
394
|
+
|
|
395
|
+
/* Info Sections (About/Help) */
|
|
396
|
+
.info-section {
|
|
397
|
+
background: rgba(255,255,255,0.1);
|
|
398
|
+
border-radius: 8px;
|
|
399
|
+
margin-top: 12px;
|
|
400
|
+
}
|
|
401
|
+
.info-header {
|
|
402
|
+
padding: 15px 20px;
|
|
403
|
+
cursor: pointer;
|
|
404
|
+
display: flex;
|
|
405
|
+
justify-content: space-between;
|
|
406
|
+
align-items: center;
|
|
407
|
+
}
|
|
408
|
+
.info-header h3 {
|
|
409
|
+
margin: 0;
|
|
410
|
+
font-size: 1rem;
|
|
411
|
+
opacity: 0.95;
|
|
412
|
+
}
|
|
413
|
+
.info-content {
|
|
414
|
+
padding: 0 20px 20px 20px;
|
|
415
|
+
overflow: hidden;
|
|
416
|
+
transition: max-height 0.3s ease-out, padding 0.3s ease-out;
|
|
417
|
+
max-height: 1000px;
|
|
418
|
+
}
|
|
419
|
+
.info-section.collapsed .info-content {
|
|
420
|
+
max-height: 0 !important;
|
|
421
|
+
padding-top: 0 !important;
|
|
422
|
+
padding-bottom: 0 !important;
|
|
423
|
+
}
|
|
424
|
+
.info-section.collapsed .collapse-icon {
|
|
425
|
+
transform: rotate(-90deg);
|
|
426
|
+
}
|
|
427
|
+
.info-content blockquote {
|
|
428
|
+
margin: 0 0 15px 0;
|
|
429
|
+
padding: 12px 15px;
|
|
430
|
+
border-left: 3px solid rgba(255,255,255,0.4);
|
|
431
|
+
font-style: italic;
|
|
432
|
+
opacity: 0.9;
|
|
433
|
+
}
|
|
434
|
+
.info-content p {
|
|
435
|
+
margin: 0 0 12px 0;
|
|
436
|
+
opacity: 0.9;
|
|
437
|
+
line-height: 1.7;
|
|
438
|
+
}
|
|
439
|
+
.info-content a {
|
|
440
|
+
color: #93c5fd;
|
|
441
|
+
text-decoration: underline;
|
|
442
|
+
}
|
|
443
|
+
.checklist-item {
|
|
444
|
+
margin-bottom: 8px;
|
|
445
|
+
line-height: 1.8;
|
|
446
|
+
}
|
|
447
|
+
.checklist-item strong {
|
|
448
|
+
color: white;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/* Badge styles */
|
|
452
|
+
.badge {
|
|
453
|
+
display: inline-block;
|
|
454
|
+
padding: 0.25rem 0.5rem;
|
|
455
|
+
border-radius: 4px;
|
|
456
|
+
font-size: 0.75rem;
|
|
457
|
+
font-weight: 600;
|
|
458
|
+
}
|
|
459
|
+
.badge.critical { background: var(--critical); color: white; }
|
|
460
|
+
.badge.high { background: var(--high); color: white; }
|
|
461
|
+
.badge.medium { background: var(--medium); color: var(--text); }
|
|
462
|
+
.badge.low { background: var(--low); color: white; }
|
|
463
|
+
|
|
464
|
+
@media (max-width: 768px) {
|
|
465
|
+
body { padding: 1rem; }
|
|
466
|
+
.header h1 { font-size: 1.5rem; }
|
|
467
|
+
.header-meta { flex-direction: column; gap: 0.5rem; }
|
|
468
|
+
.priorities-grid { grid-template-columns: 1fr; }
|
|
469
|
+
.pi-table { font-size: 0.85rem; }
|
|
470
|
+
.pi-table th, .pi-table td { padding: 0.5rem; }
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
</style>
|
|
474
|
+
</head>
|
|
475
|
+
<body>
|
|
476
|
+
<div class="container">
|
|
477
|
+
|
|
478
|
+
<!-- ============================================
|
|
479
|
+
HEADER SECTION
|
|
480
|
+
Replace: {EPIC_TITLE}, {EPIC_ID}, {DATE}, {CRITERIA_COUNT}, {COVERAGE}
|
|
481
|
+
============================================ -->
|
|
482
|
+
<header class="header">
|
|
483
|
+
<h1>Quality Criteria Recommendations</h1>
|
|
484
|
+
<div class="header-subtitle">{EPIC_TITLE}</div>
|
|
485
|
+
<div class="header-meta">
|
|
486
|
+
<span>{EPIC_ID}</span>
|
|
487
|
+
<span>{DATE}</span>
|
|
488
|
+
<span>{CRITERIA_COUNT} Quality Criteria Identified</span>
|
|
489
|
+
<span>{ANALYZED_COUNT} of 10 HTSM Categories Analyzed</span>
|
|
490
|
+
<span style="font-size: 0.8rem;">Omitted: {OMITTED_CATEGORIES}</span>
|
|
491
|
+
</div>
|
|
492
|
+
|
|
493
|
+
<!-- How can this report help you? -->
|
|
494
|
+
<div class="info-section collapsed">
|
|
495
|
+
<div class="info-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
496
|
+
<h3>How can this report help you?</h3>
|
|
497
|
+
<span class="collapse-icon" style="transition: transform 0.2s;">▼</span>
|
|
498
|
+
</div>
|
|
499
|
+
<div class="info-content">
|
|
500
|
+
<blockquote>
|
|
501
|
+
"Quality is value to some person." <span style="opacity: 0.7;">— Jerry Weinberg</span>
|
|
502
|
+
</blockquote>
|
|
503
|
+
<p>This report is generated by the <strong>Quality Criteria Recommender</strong>, one of the core agents based on the <strong>QCSD (Quality Conscious Software Delivery)</strong> framework. The QCSD framework recommends conducting Quality Criteria sessions early in the development lifecycle — ideally during PI Planning or Sprint Planning — to align the entire team on what "quality" means for each feature before a single line of code is written.</p>
|
|
504
|
+
<p>This analysis uses <strong>AI semantic understanding</strong> to identify relevant Quality Criteria from James Bach's <a href="https://www.satisfice.com/download/heuristic-test-strategy-model">Heuristic Test Strategy Model (HTSM) v6.3</a>. Unlike simple keyword matching, it understands the <em>meaning and implications</em> of your requirements to surface quality dimensions that may not be explicitly stated but are critical for user satisfaction.</p>
|
|
505
|
+
<p>A guided discussion based on this analysis helps teams uncover hidden quality risks, define testable acceptance criteria, create clearer development plans, identify gaps and dependencies early, improve estimation accuracy, and most importantly — <strong>avoid costly rework</strong> caused by discovering quality issues halfway through development. Research shows that defects found in production cost 30x more to fix than those found during requirements. If we want to save time and cost while still delivering quality software, <strong>it is always cheaper to do things right the first time</strong>.</p>
|
|
506
|
+
<p>Quality Criteria help answer fundamental questions: <em>What aspects of quality are most important for this feature? Where should we focus our testing effort? What risks exist if we neglect certain quality dimensions? How do we build quality in rather than test it in later?</em></p>
|
|
507
|
+
</div>
|
|
508
|
+
</div>
|
|
509
|
+
|
|
510
|
+
<!-- When to generate this report? -->
|
|
511
|
+
<div class="info-section collapsed">
|
|
512
|
+
<div class="info-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
513
|
+
<h3>When to generate this report?</h3>
|
|
514
|
+
<span class="collapse-icon" style="transition: transform 0.2s;">▼</span>
|
|
515
|
+
</div>
|
|
516
|
+
<div class="info-content">
|
|
517
|
+
<p><strong>During PI Planning & Sprint Planning (QCSD Recommended):</strong> The QCSD framework recommends generating this report as soon as Epic/Feature requirements are available — ideally before Sprint Planning begins. This enables teams to conduct a <em>Quality Criteria Session</em> where programmers, testers, Product Owners, Designers, and Architects align on quality expectations before development starts.</p>
|
|
518
|
+
<p><strong>Shift-Left Quality Engineering:</strong> The cost of fixing defects increases exponentially as they move through the SDLC (1x in requirements → 5x in design → 10x in coding → 30x in production). Use this report to shift quality discussions left — informing architecture decisions, refining acceptance criteria, identifying non-functional requirements gaps, and allocating appropriate testing effort before the first commit.</p>
|
|
519
|
+
<p><strong>Before Three Amigos / Refinement Sessions:</strong> Share this report with the team before refinement sessions to facilitate meaningful conversations about quality trade-offs. When everyone understands which quality dimensions matter most, the team can make informed decisions about scope, risk acceptance, and technical approach.</p>
|
|
520
|
+
<p><strong>As a Living Document:</strong> Regenerate this report when requirements change significantly. Quality criteria priorities may shift as the feature scope evolves — what was medium priority may become critical based on new information.</p>
|
|
521
|
+
</div>
|
|
522
|
+
</div>
|
|
523
|
+
|
|
524
|
+
<!-- How to use this report? -->
|
|
525
|
+
<div class="info-section collapsed">
|
|
526
|
+
<div class="info-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
527
|
+
<h3>How to use this report?</h3>
|
|
528
|
+
<span class="collapse-icon" style="transition: transform 0.2s;">▼</span>
|
|
529
|
+
</div>
|
|
530
|
+
<div class="info-content">
|
|
531
|
+
<p style="margin-bottom: 12px;">In this report you will find:</p>
|
|
532
|
+
<div style="margin-left: 5px; line-height: 1.8;">
|
|
533
|
+
<div class="checklist-item">☐ <strong>Executive Summary</strong> - Key message and critical priorities at a glance.</div>
|
|
534
|
+
<div class="checklist-item">☐ <strong>Quick Reference Table</strong> - All quality criteria with priorities and HTSM questions.</div>
|
|
535
|
+
<div class="checklist-item">☐ <strong>Priority-Based Recommendations</strong> - Detailed analysis with evidence-based reasoning.</div>
|
|
536
|
+
<div class="checklist-item">☐ <strong>Actionable Tasks</strong> - Engineering tasks, User Stories, and Testing activities.</div>
|
|
537
|
+
<div class="checklist-item">☐ <strong>Cross-Cutting Concerns</strong> - Quality aspects spanning multiple criteria.</div>
|
|
538
|
+
<div class="checklist-item">☐ <strong>PI Planning Guidance</strong> - Sprint-by-sprint quality focus.</div>
|
|
539
|
+
</div>
|
|
540
|
+
</div>
|
|
541
|
+
</div>
|
|
542
|
+
</header>
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
<!-- ============================================
|
|
546
|
+
EXECUTIVE SUMMARY
|
|
547
|
+
Replace: {KEY_MESSAGE}, {CRITICAL_PRIORITIES}, {QUICK_WINS}
|
|
548
|
+
============================================ -->
|
|
549
|
+
<section class="executive-summary">
|
|
550
|
+
<h2>Executive Summary</h2>
|
|
551
|
+
<div class="key-message">{KEY_MESSAGE}</div>
|
|
552
|
+
|
|
553
|
+
<div class="priorities-grid">
|
|
554
|
+
<!-- Critical Priorities (if any) -->
|
|
555
|
+
<div class="priority-box critical">
|
|
556
|
+
<h4>🚨 Critical Priorities</h4>
|
|
557
|
+
<ul>
|
|
558
|
+
<!-- {CRITICAL_PRIORITIES} - List items -->
|
|
559
|
+
</ul>
|
|
560
|
+
</div>
|
|
561
|
+
|
|
562
|
+
<!-- Quick Wins -->
|
|
563
|
+
<div class="priority-box high">
|
|
564
|
+
<h4>⚡ Quick Wins</h4>
|
|
565
|
+
<ul>
|
|
566
|
+
<!-- {QUICK_WINS} - List items -->
|
|
567
|
+
</ul>
|
|
568
|
+
</div>
|
|
569
|
+
</div>
|
|
570
|
+
</section>
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
<!-- ============================================
|
|
574
|
+
QUICK REFERENCE TABLE
|
|
575
|
+
Replace: Table rows with actual criteria data
|
|
576
|
+
============================================ -->
|
|
577
|
+
<section class="quick-reference">
|
|
578
|
+
<h2>Quick Reference</h2>
|
|
579
|
+
<table>
|
|
580
|
+
<thead>
|
|
581
|
+
<tr>
|
|
582
|
+
<th>Quality Criteria</th>
|
|
583
|
+
<th>Priority</th>
|
|
584
|
+
<th>Key Question</th>
|
|
585
|
+
<th>Primary Focus</th>
|
|
586
|
+
</tr>
|
|
587
|
+
</thead>
|
|
588
|
+
<tbody>
|
|
589
|
+
<!-- TEMPLATE ROW - Repeat for each quality criteria identified -->
|
|
590
|
+
<tr>
|
|
591
|
+
<td><strong>{CATEGORY_NAME}</strong></td>
|
|
592
|
+
<td><span class="badge {PRIORITY_CLASS}">{PRIORITY_LABEL}</span></td>
|
|
593
|
+
<td style="font-style: italic;">{HTSM_QUESTION}</td>
|
|
594
|
+
<td>{PRIMARY_FOCUS}</td>
|
|
595
|
+
</tr>
|
|
596
|
+
<!-- END TEMPLATE ROW -->
|
|
597
|
+
</tbody>
|
|
598
|
+
</table>
|
|
599
|
+
|
|
600
|
+
<!-- Priority Legend -->
|
|
601
|
+
<div style="margin-top: 1.5rem; padding: 1rem; background: #f8fafc; border-radius: 8px; border: 1px solid var(--border);">
|
|
602
|
+
<h4 style="margin: 0 0 1rem 0; color: var(--primary);">Priority Levels</h4>
|
|
603
|
+
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem;">
|
|
604
|
+
<div style="padding: 0.75rem; background: var(--critical-bg); border-left: 4px solid var(--critical); border-radius: 4px;">
|
|
605
|
+
<strong style="color: var(--critical);">P0 - CRITICAL</strong>
|
|
606
|
+
<p style="margin: 0.25rem 0 0 0; font-size: 0.85rem; color: var(--text-light);">Failure causes immediate business/user harm.</p>
|
|
607
|
+
</div>
|
|
608
|
+
<div style="padding: 0.75rem; background: var(--high-bg); border-left: 4px solid var(--high); border-radius: 4px;">
|
|
609
|
+
<strong style="color: var(--high);">P1 - HIGH</strong>
|
|
610
|
+
<p style="margin: 0.25rem 0 0 0; font-size: 0.85rem; color: var(--text-light);">Critical to core user value proposition.</p>
|
|
611
|
+
</div>
|
|
612
|
+
<div style="padding: 0.75rem; background: var(--medium-bg); border-left: 4px solid var(--medium); border-radius: 4px;">
|
|
613
|
+
<strong style="color: #b45309;">P2 - MEDIUM</strong>
|
|
614
|
+
<p style="margin: 0.25rem 0 0 0; font-size: 0.85rem; color: var(--text-light);">Affects satisfaction but not blocking.</p>
|
|
615
|
+
</div>
|
|
616
|
+
<div style="padding: 0.75rem; background: var(--low-bg); border-left: 4px solid var(--low); border-radius: 4px;">
|
|
617
|
+
<strong style="color: var(--low);">P3 - LOW</strong>
|
|
618
|
+
<p style="margin: 0.25rem 0 0 0; font-size: 0.85rem; color: var(--text-light);">Nice-to-have quality improvements.</p>
|
|
619
|
+
</div>
|
|
620
|
+
</div>
|
|
621
|
+
</div>
|
|
622
|
+
</section>
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
<!-- ============================================
|
|
626
|
+
PRIORITY SECTIONS
|
|
627
|
+
Create one section per priority level (Critical, High, Medium, Low)
|
|
628
|
+
============================================ -->
|
|
629
|
+
|
|
630
|
+
<!-- CRITICAL PRIORITY SECTION (if applicable) -->
|
|
631
|
+
<section class="priority-section">
|
|
632
|
+
<div class="section-header critical">
|
|
633
|
+
<h2>Critical Priority Quality Criteria</h2>
|
|
634
|
+
<span>{CRITICAL_COUNT} criteria</span>
|
|
635
|
+
</div>
|
|
636
|
+
<div class="section-description">These quality criteria MUST be addressed immediately - failure poses unacceptable risk.</div>
|
|
637
|
+
|
|
638
|
+
<!-- RECOMMENDATION CARD TEMPLATE -->
|
|
639
|
+
<div class="rec-card">
|
|
640
|
+
<div class="rec-header">
|
|
641
|
+
<div class="rec-title-row">
|
|
642
|
+
<span class="rec-category">{CATEGORY_NAME}</span>
|
|
643
|
+
<span class="confidence-badge" title="Confidence based on evidence strength">{CONFIDENCE}% confidence</span>
|
|
644
|
+
</div>
|
|
645
|
+
<div class="htsm-question">"{HTSM_QUESTION}"</div>
|
|
646
|
+
</div>
|
|
647
|
+
|
|
648
|
+
<div class="why-section">
|
|
649
|
+
<h4>💡 Why This Matters</h4>
|
|
650
|
+
<p>{SEMANTIC_RATIONALE}</p>
|
|
651
|
+
<p style="margin-top: 0.75rem;"><strong>Business Impact:</strong> {BUSINESS_IMPACT}</p>
|
|
652
|
+
</div>
|
|
653
|
+
|
|
654
|
+
<!-- EVIDENCE SECTION (Semantic Analysis) -->
|
|
655
|
+
<div class="evidence-section">
|
|
656
|
+
<h4>📊 Evidence Analysis</h4>
|
|
657
|
+
<table class="evidence-table">
|
|
658
|
+
<thead>
|
|
659
|
+
<tr>
|
|
660
|
+
<th>Source Reference</th>
|
|
661
|
+
<th>Type</th>
|
|
662
|
+
<th>Quality Implication</th>
|
|
663
|
+
<th>Reasoning</th>
|
|
664
|
+
</tr>
|
|
665
|
+
</thead>
|
|
666
|
+
<tbody>
|
|
667
|
+
<!-- EVIDENCE ROW TEMPLATE - Type must be Direct/Inferred/Claimed -->
|
|
668
|
+
<tr>
|
|
669
|
+
<td><code>{SOURCE_REF}</code></td>
|
|
670
|
+
<td><span class="evidence-type {TYPE_CLASS}">{EVIDENCE_TYPE}</span></td>
|
|
671
|
+
<td>{QUALITY_IMPLICATION}</td>
|
|
672
|
+
<td class="evidence-reasoning">{REASONING}</td>
|
|
673
|
+
</tr>
|
|
674
|
+
<!-- END EVIDENCE ROW TEMPLATE -->
|
|
675
|
+
</tbody>
|
|
676
|
+
</table>
|
|
677
|
+
</div>
|
|
678
|
+
|
|
679
|
+
<div class="risk-warnings">
|
|
680
|
+
<h4 style="margin-bottom: 0.5rem; color: var(--critical);">⚠️ Risk Warnings</h4>
|
|
681
|
+
<!-- RISK WARNING TEMPLATE -->
|
|
682
|
+
<div class="risk-warning">
|
|
683
|
+
<span>⚠️</span>
|
|
684
|
+
<span>{RISK_WARNING}</span>
|
|
685
|
+
</div>
|
|
686
|
+
<!-- END RISK WARNING TEMPLATE -->
|
|
687
|
+
</div>
|
|
688
|
+
|
|
689
|
+
<div class="actions-section">
|
|
690
|
+
<div class="collapsible-header" onclick="this.nextElementSibling.classList.toggle('collapsed')">
|
|
691
|
+
<h4>📋 Recommended Actions</h4>
|
|
692
|
+
<span class="collapse-icon">▼</span>
|
|
693
|
+
</div>
|
|
694
|
+
<div class="collapsible-content">
|
|
695
|
+
<!-- ACTION ITEM TEMPLATE -->
|
|
696
|
+
<div class="action-item">
|
|
697
|
+
<span class="action-type {ACTION_TYPE_CLASS}">{ACTION_TYPE}</span>
|
|
698
|
+
<div class="action-content">
|
|
699
|
+
<h5>{ACTION_TITLE}</h5>
|
|
700
|
+
<p>{ACTION_DESCRIPTION}</p>
|
|
701
|
+
</div>
|
|
702
|
+
</div>
|
|
703
|
+
<!-- END ACTION ITEM TEMPLATE -->
|
|
704
|
+
</div>
|
|
705
|
+
</div>
|
|
706
|
+
</div>
|
|
707
|
+
<!-- END RECOMMENDATION CARD TEMPLATE -->
|
|
708
|
+
|
|
709
|
+
</section>
|
|
710
|
+
|
|
711
|
+
<!-- HIGH PRIORITY SECTION -->
|
|
712
|
+
<section class="priority-section">
|
|
713
|
+
<div class="section-header high">
|
|
714
|
+
<h2>High Priority Quality Criteria</h2>
|
|
715
|
+
<span>{HIGH_COUNT} criteria</span>
|
|
716
|
+
</div>
|
|
717
|
+
<div class="section-description">These quality criteria SHOULD be addressed to ensure product success and user satisfaction.</div>
|
|
718
|
+
<!-- Repeat recommendation cards for each high priority criteria -->
|
|
719
|
+
</section>
|
|
720
|
+
|
|
721
|
+
<!-- MEDIUM PRIORITY SECTION -->
|
|
722
|
+
<section class="priority-section">
|
|
723
|
+
<div class="section-header medium">
|
|
724
|
+
<h2>Medium Priority Quality Criteria</h2>
|
|
725
|
+
<span>{MEDIUM_COUNT} criteria</span>
|
|
726
|
+
</div>
|
|
727
|
+
<div class="section-description">These quality criteria enhance product quality and should be planned for upcoming sprints.</div>
|
|
728
|
+
<!-- Repeat recommendation cards for each medium priority criteria -->
|
|
729
|
+
</section>
|
|
730
|
+
|
|
731
|
+
<!-- LOW PRIORITY SECTION (if applicable) -->
|
|
732
|
+
<section class="priority-section">
|
|
733
|
+
<div class="section-header low">
|
|
734
|
+
<h2>Low Priority Quality Criteria</h2>
|
|
735
|
+
<span>{LOW_COUNT} criteria</span>
|
|
736
|
+
</div>
|
|
737
|
+
<div class="section-description">These quality criteria are nice-to-have improvements for the backlog.</div>
|
|
738
|
+
<!-- Repeat recommendation cards for each low priority criteria -->
|
|
739
|
+
</section>
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
<!-- ============================================
|
|
743
|
+
CROSS-CUTTING CONCERNS
|
|
744
|
+
============================================ -->
|
|
745
|
+
<section class="cross-cutting">
|
|
746
|
+
<h2>Cross-Cutting Concerns</h2>
|
|
747
|
+
<p style="margin-bottom: 1.5rem; color: var(--text-light);">These quality aspects span multiple criteria and require coordinated attention across the implementation.</p>
|
|
748
|
+
|
|
749
|
+
<!-- CONCERN CARD TEMPLATE -->
|
|
750
|
+
<div class="concern-card">
|
|
751
|
+
<h4>{CONCERN_TITLE}</h4>
|
|
752
|
+
<p>{CONCERN_DESCRIPTION}</p>
|
|
753
|
+
<div class="concern-categories">
|
|
754
|
+
<!-- CATEGORY TAG TEMPLATE -->
|
|
755
|
+
<span class="concern-category">{AFFECTED_CATEGORY}</span>
|
|
756
|
+
<!-- END CATEGORY TAG TEMPLATE -->
|
|
757
|
+
</div>
|
|
758
|
+
</div>
|
|
759
|
+
<!-- END CONCERN CARD TEMPLATE -->
|
|
760
|
+
</section>
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
<!-- ============================================
|
|
764
|
+
PI PLANNING GUIDANCE
|
|
765
|
+
============================================ -->
|
|
766
|
+
<section class="pi-planning">
|
|
767
|
+
<h2>PI Planning Guidance</h2>
|
|
768
|
+
<p style="margin-bottom: 1.5rem; color: var(--text-light);">Suggested sprint-by-sprint approach to systematically address quality criteria.</p>
|
|
769
|
+
|
|
770
|
+
<table class="pi-table">
|
|
771
|
+
<thead>
|
|
772
|
+
<tr>
|
|
773
|
+
<th>Sprint</th>
|
|
774
|
+
<th>Quality Focus</th>
|
|
775
|
+
<th>Key Activities</th>
|
|
776
|
+
<th>Criteria Coverage</th>
|
|
777
|
+
</tr>
|
|
778
|
+
</thead>
|
|
779
|
+
<tbody>
|
|
780
|
+
<!-- PI ROW TEMPLATE -->
|
|
781
|
+
<tr>
|
|
782
|
+
<td><span class="sprint-badge">{SPRINT_NAME}</span></td>
|
|
783
|
+
<td>{QUALITY_FOCUS}</td>
|
|
784
|
+
<td>{KEY_ACTIVITIES}</td>
|
|
785
|
+
<td>
|
|
786
|
+
<div class="criteria-tags">
|
|
787
|
+
<!-- CRITERIA TAG TEMPLATE -->
|
|
788
|
+
<span class="criteria-tag">{CRITERIA}</span>
|
|
789
|
+
<!-- END CRITERIA TAG TEMPLATE -->
|
|
790
|
+
</div>
|
|
791
|
+
</td>
|
|
792
|
+
</tr>
|
|
793
|
+
<!-- END PI ROW TEMPLATE -->
|
|
794
|
+
</tbody>
|
|
795
|
+
</table>
|
|
796
|
+
</section>
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
<!-- ============================================
|
|
800
|
+
FOOTER
|
|
801
|
+
============================================ -->
|
|
802
|
+
<footer class="footer">
|
|
803
|
+
<p>Generated by <a href="https://github.com/agentic-qe/agentic-qe">Agentic QE</a> — <strong>qe-quality-criteria-recommender</strong> (Core QCSD Agent)</p>
|
|
804
|
+
<p>Analysis Method: AI Semantic Understanding | Framework: James Bach's HTSM v6.3 Quality Criteria</p>
|
|
805
|
+
<p>Part of the <strong>QCSD Framework</strong> — Quality Conscious Software Delivery for shift-left quality engineering</p>
|
|
806
|
+
<p style="margin-top: 0.5rem; font-style: italic; opacity: 0.8;">Recommendations require domain expert validation. Use this report to facilitate team discussions, not replace them.</p>
|
|
807
|
+
</footer>
|
|
808
|
+
|
|
809
|
+
</div>
|
|
810
|
+
</body>
|
|
811
|
+
</html>
|