musubi-sdd 5.0.0 → 5.6.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/README.ja.md +106 -48
- package/README.md +110 -32
- package/bin/musubi-analyze.js +74 -67
- package/bin/musubi-browser.js +27 -26
- package/bin/musubi-change.js +48 -47
- package/bin/musubi-checkpoint.js +10 -7
- package/bin/musubi-convert.js +25 -25
- package/bin/musubi-costs.js +27 -10
- package/bin/musubi-gui.js +52 -46
- package/bin/musubi-init.js +1952 -10
- package/bin/musubi-orchestrate.js +327 -239
- package/bin/musubi-remember.js +69 -56
- package/bin/musubi-resolve.js +53 -45
- package/bin/musubi-trace.js +51 -22
- package/bin/musubi-validate.js +39 -30
- package/bin/musubi-workflow.js +33 -34
- package/bin/musubi.js +39 -2
- package/package.json +1 -1
- package/src/agents/agent-loop.js +94 -95
- package/src/agents/agentic/code-generator.js +119 -109
- package/src/agents/agentic/code-reviewer.js +105 -108
- package/src/agents/agentic/index.js +4 -4
- package/src/agents/browser/action-executor.js +13 -13
- package/src/agents/browser/ai-comparator.js +11 -10
- package/src/agents/browser/context-manager.js +6 -6
- package/src/agents/browser/index.js +5 -5
- package/src/agents/browser/nl-parser.js +31 -46
- package/src/agents/browser/screenshot.js +2 -2
- package/src/agents/browser/test-generator.js +6 -4
- package/src/agents/function-tool.js +71 -65
- package/src/agents/index.js +7 -7
- package/src/agents/schema-generator.js +98 -94
- package/src/analyzers/ast-extractor.js +164 -145
- package/src/analyzers/codegraph-auto-update.js +858 -0
- package/src/analyzers/complexity-analyzer.js +536 -0
- package/src/analyzers/context-optimizer.js +247 -125
- package/src/analyzers/impact-analyzer.js +1 -1
- package/src/analyzers/large-project-analyzer.js +766 -0
- package/src/analyzers/repository-map.js +83 -80
- package/src/analyzers/security-analyzer.js +19 -11
- package/src/analyzers/stuck-detector.js +19 -17
- package/src/converters/index.js +78 -57
- package/src/converters/ir/types.js +12 -12
- package/src/converters/parsers/musubi-parser.js +134 -126
- package/src/converters/parsers/openapi-parser.js +70 -53
- package/src/converters/parsers/speckit-parser.js +239 -175
- package/src/converters/writers/musubi-writer.js +123 -118
- package/src/converters/writers/speckit-writer.js +124 -113
- package/src/generators/rust-migration-generator.js +512 -0
- package/src/gui/public/index.html +1365 -1211
- package/src/gui/server.js +41 -40
- package/src/gui/services/file-watcher.js +23 -8
- package/src/gui/services/project-scanner.js +26 -20
- package/src/gui/services/replanning-service.js +27 -23
- package/src/gui/services/traceability-service.js +8 -8
- package/src/gui/services/workflow-service.js +14 -7
- package/src/index.js +151 -0
- package/src/integrations/cicd.js +90 -104
- package/src/integrations/codegraph-mcp.js +643 -0
- package/src/integrations/documentation.js +142 -103
- package/src/integrations/examples.js +95 -80
- package/src/integrations/github-client.js +17 -17
- package/src/integrations/index.js +5 -5
- package/src/integrations/mcp/index.js +21 -21
- package/src/integrations/mcp/mcp-context-provider.js +76 -78
- package/src/integrations/mcp/mcp-discovery.js +74 -72
- package/src/integrations/mcp/mcp-tool-registry.js +99 -94
- package/src/integrations/mcp-connector.js +70 -66
- package/src/integrations/platforms.js +50 -49
- package/src/integrations/tool-discovery.js +37 -31
- package/src/llm-providers/anthropic-provider.js +11 -11
- package/src/llm-providers/base-provider.js +16 -18
- package/src/llm-providers/copilot-provider.js +22 -19
- package/src/llm-providers/index.js +26 -25
- package/src/llm-providers/ollama-provider.js +11 -11
- package/src/llm-providers/openai-provider.js +12 -12
- package/src/managers/agent-memory.js +36 -24
- package/src/managers/checkpoint-manager.js +4 -8
- package/src/managers/delta-spec.js +19 -19
- package/src/managers/index.js +13 -4
- package/src/managers/memory-condenser.js +35 -45
- package/src/managers/repo-skill-manager.js +57 -31
- package/src/managers/skill-loader.js +25 -22
- package/src/managers/skill-tools.js +36 -72
- package/src/managers/workflow.js +30 -22
- package/src/monitoring/cost-tracker.js +53 -44
- package/src/monitoring/incident-manager.js +123 -103
- package/src/monitoring/index.js +144 -134
- package/src/monitoring/observability.js +82 -59
- package/src/monitoring/quality-dashboard.js +51 -39
- package/src/monitoring/release-manager.js +70 -50
- package/src/orchestration/agent-skill-binding.js +39 -47
- package/src/orchestration/error-handler.js +65 -107
- package/src/orchestration/guardrails/base-guardrail.js +26 -24
- package/src/orchestration/guardrails/guardrail-rules.js +50 -64
- package/src/orchestration/guardrails/index.js +5 -5
- package/src/orchestration/guardrails/input-guardrail.js +58 -45
- package/src/orchestration/guardrails/output-guardrail.js +104 -81
- package/src/orchestration/guardrails/safety-check.js +79 -79
- package/src/orchestration/index.js +38 -55
- package/src/orchestration/mcp-tool-adapters.js +96 -99
- package/src/orchestration/orchestration-engine.js +21 -21
- package/src/orchestration/pattern-registry.js +60 -45
- package/src/orchestration/patterns/auto.js +34 -47
- package/src/orchestration/patterns/group-chat.js +59 -65
- package/src/orchestration/patterns/handoff.js +67 -65
- package/src/orchestration/patterns/human-in-loop.js +51 -72
- package/src/orchestration/patterns/nested.js +25 -40
- package/src/orchestration/patterns/sequential.js +35 -34
- package/src/orchestration/patterns/swarm.js +63 -56
- package/src/orchestration/patterns/triage.js +150 -109
- package/src/orchestration/reasoning/index.js +9 -9
- package/src/orchestration/reasoning/planning-engine.js +143 -140
- package/src/orchestration/reasoning/reasoning-engine.js +206 -144
- package/src/orchestration/reasoning/self-correction.js +121 -128
- package/src/orchestration/replanning/adaptive-goal-modifier.js +107 -112
- package/src/orchestration/replanning/alternative-generator.js +37 -42
- package/src/orchestration/replanning/config.js +63 -59
- package/src/orchestration/replanning/goal-progress-tracker.js +98 -100
- package/src/orchestration/replanning/index.js +24 -20
- package/src/orchestration/replanning/plan-evaluator.js +49 -50
- package/src/orchestration/replanning/plan-monitor.js +32 -28
- package/src/orchestration/replanning/proactive-path-optimizer.js +175 -178
- package/src/orchestration/replanning/replan-history.js +33 -26
- package/src/orchestration/replanning/replanning-engine.js +106 -108
- package/src/orchestration/skill-executor.js +107 -109
- package/src/orchestration/skill-registry.js +85 -89
- package/src/orchestration/workflow-examples.js +228 -231
- package/src/orchestration/workflow-executor.js +65 -68
- package/src/orchestration/workflow-orchestrator.js +72 -73
- package/src/phase4-integration.js +47 -40
- package/src/phase5-integration.js +89 -30
- package/src/reporters/coverage-report.js +82 -30
- package/src/reporters/hierarchical-reporter.js +498 -0
- package/src/reporters/traceability-matrix-report.js +29 -20
- package/src/resolvers/issue-resolver.js +43 -31
- package/src/steering/advanced-validation.js +133 -124
- package/src/steering/auto-updater.js +60 -73
- package/src/steering/index.js +6 -6
- package/src/steering/quality-metrics.js +41 -35
- package/src/steering/steering-auto-update.js +83 -86
- package/src/steering/steering-validator.js +98 -106
- package/src/steering/template-constraints.js +53 -54
- package/src/templates/agents/claude-code/CLAUDE.md +32 -32
- package/src/templates/agents/claude-code/skills/agent-assistant/SKILL.md +13 -5
- package/src/templates/agents/claude-code/skills/ai-ml-engineer/mlops-guide.md +23 -23
- package/src/templates/agents/claude-code/skills/ai-ml-engineer/model-card-template.md +60 -41
- package/src/templates/agents/claude-code/skills/api-designer/api-patterns.md +27 -19
- package/src/templates/agents/claude-code/skills/api-designer/openapi-template.md +11 -7
- package/src/templates/agents/claude-code/skills/bug-hunter/SKILL.md +4 -3
- package/src/templates/agents/claude-code/skills/bug-hunter/root-cause-analysis.md +37 -15
- package/src/templates/agents/claude-code/skills/change-impact-analyzer/dependency-graph-patterns.md +36 -42
- package/src/templates/agents/claude-code/skills/change-impact-analyzer/impact-analysis-template.md +69 -60
- package/src/templates/agents/claude-code/skills/cloud-architect/aws-patterns.md +31 -38
- package/src/templates/agents/claude-code/skills/cloud-architect/azure-patterns.md +28 -23
- package/src/templates/agents/claude-code/skills/code-reviewer/SKILL.md +61 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/best-practices.md +27 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/review-checklist.md +29 -10
- package/src/templates/agents/claude-code/skills/code-reviewer/review-standards.md +29 -24
- package/src/templates/agents/claude-code/skills/constitution-enforcer/SKILL.md +8 -6
- package/src/templates/agents/claude-code/skills/constitution-enforcer/constitutional-articles.md +62 -26
- package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md +35 -16
- package/src/templates/agents/claude-code/skills/database-administrator/backup-recovery.md +27 -17
- package/src/templates/agents/claude-code/skills/database-administrator/tuning-guide.md +25 -20
- package/src/templates/agents/claude-code/skills/database-schema-designer/schema-patterns.md +39 -22
- package/src/templates/agents/claude-code/skills/devops-engineer/ci-cd-templates.md +25 -22
- package/src/templates/agents/claude-code/skills/issue-resolver/SKILL.md +24 -21
- package/src/templates/agents/claude-code/skills/orchestrator/SKILL.md +148 -63
- package/src/templates/agents/claude-code/skills/orchestrator/patterns.md +35 -16
- package/src/templates/agents/claude-code/skills/orchestrator/selection-matrix.md +69 -64
- package/src/templates/agents/claude-code/skills/performance-engineer/optimization-playbook.md +47 -47
- package/src/templates/agents/claude-code/skills/performance-optimizer/SKILL.md +69 -0
- package/src/templates/agents/claude-code/skills/performance-optimizer/benchmark-template.md +63 -45
- package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md +33 -35
- package/src/templates/agents/claude-code/skills/project-manager/SKILL.md +7 -6
- package/src/templates/agents/claude-code/skills/project-manager/agile-ceremonies.md +47 -28
- package/src/templates/agents/claude-code/skills/project-manager/project-templates.md +94 -78
- package/src/templates/agents/claude-code/skills/quality-assurance/SKILL.md +20 -17
- package/src/templates/agents/claude-code/skills/quality-assurance/qa-plan-template.md +63 -49
- package/src/templates/agents/claude-code/skills/release-coordinator/SKILL.md +5 -5
- package/src/templates/agents/claude-code/skills/release-coordinator/feature-flag-guide.md +30 -26
- package/src/templates/agents/claude-code/skills/release-coordinator/release-plan-template.md +67 -35
- package/src/templates/agents/claude-code/skills/requirements-analyst/ears-format.md +54 -42
- package/src/templates/agents/claude-code/skills/requirements-analyst/validation-rules.md +36 -33
- package/src/templates/agents/claude-code/skills/security-auditor/SKILL.md +77 -19
- package/src/templates/agents/claude-code/skills/security-auditor/audit-checklists.md +24 -24
- package/src/templates/agents/claude-code/skills/security-auditor/owasp-top-10.md +61 -20
- package/src/templates/agents/claude-code/skills/security-auditor/vulnerability-patterns.md +43 -11
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/incident-response-template.md +55 -25
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/observability-patterns.md +78 -68
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/slo-sli-guide.md +73 -53
- package/src/templates/agents/claude-code/skills/software-developer/solid-principles.md +83 -37
- package/src/templates/agents/claude-code/skills/software-developer/test-first-workflow.md +38 -31
- package/src/templates/agents/claude-code/skills/steering/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +31 -0
- package/src/templates/agents/claude-code/skills/system-architect/adr-template.md +25 -7
- package/src/templates/agents/claude-code/skills/system-architect/c4-model-guide.md +74 -61
- package/src/templates/agents/claude-code/skills/technical-writer/doc-templates/documentation-templates.md +70 -52
- package/src/templates/agents/claude-code/skills/test-engineer/SKILL.md +2 -0
- package/src/templates/agents/claude-code/skills/test-engineer/ears-test-mapping.md +75 -71
- package/src/templates/agents/claude-code/skills/test-engineer/test-types.md +85 -63
- package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +39 -36
- package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +22 -17
- package/src/templates/agents/claude-code/skills/ui-ux-designer/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/ui-ux-designer/accessibility-guidelines.md +49 -75
- package/src/templates/agents/claude-code/skills/ui-ux-designer/design-system-components.md +71 -59
- package/src/templates/agents/codex/AGENTS.md +74 -42
- package/src/templates/agents/cursor/AGENTS.md +74 -42
- package/src/templates/agents/gemini-cli/GEMINI.md +74 -42
- package/src/templates/agents/github-copilot/AGENTS.md +83 -51
- package/src/templates/agents/qwen-code/QWEN.md +74 -42
- package/src/templates/agents/windsurf/AGENTS.md +74 -42
- package/src/templates/architectures/README.md +41 -0
- package/src/templates/architectures/clean-architecture/README.md +113 -0
- package/src/templates/architectures/event-driven/README.md +162 -0
- package/src/templates/architectures/hexagonal/README.md +130 -0
- package/src/templates/index.js +6 -1
- package/src/templates/locale-manager.js +16 -16
- package/src/templates/shared/delta-spec-template.md +20 -13
- package/src/templates/shared/github-actions/musubi-issue-resolver.yml +5 -5
- package/src/templates/shared/github-actions/musubi-security-check.yml +3 -3
- package/src/templates/shared/github-actions/musubi-validate.yml +4 -4
- package/src/templates/shared/steering/structure.md +95 -0
- package/src/templates/skills/browser-agent.md +21 -16
- package/src/templates/skills/web-gui.md +8 -0
- package/src/templates/template-constraints.js +50 -53
- package/src/validators/advanced-validation.js +30 -36
- package/src/validators/constitutional-validator.js +77 -73
- package/src/validators/critic-system.js +49 -59
- package/src/validators/delta-format.js +59 -55
- package/src/validators/traceability-validator.js +7 -11
|
@@ -52,19 +52,19 @@ interface FeatureFlag {
|
|
|
52
52
|
|
|
53
53
|
function isFeatureEnabled(flag: FeatureFlag, user: User): boolean {
|
|
54
54
|
if (!flag.enabled) return false;
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
// Check user allowlist
|
|
57
57
|
if (flag.allowedUsers?.includes(user.id)) return true;
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
// Check role allowlist
|
|
60
60
|
if (flag.allowedRoles?.some(role => user.roles.includes(role))) return true;
|
|
61
|
-
|
|
61
|
+
|
|
62
62
|
// Check percentage rollout
|
|
63
63
|
if (flag.percentage !== undefined) {
|
|
64
64
|
const hash = hashUserId(user.id);
|
|
65
65
|
return hash % 100 < flag.percentage;
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
|
|
68
68
|
return flag.enabled;
|
|
69
69
|
}
|
|
70
70
|
```
|
|
@@ -142,14 +142,14 @@ const currentFlags = flags[process.env.NODE_ENV];
|
|
|
142
142
|
|
|
143
143
|
```typescript
|
|
144
144
|
// Good: Clear, descriptive names
|
|
145
|
-
'enable-new-checkout-v2'
|
|
146
|
-
'show-dark-mode-toggle'
|
|
147
|
-
'use-graphql-api'
|
|
145
|
+
'enable-new-checkout-v2';
|
|
146
|
+
'show-dark-mode-toggle';
|
|
147
|
+
'use-graphql-api';
|
|
148
148
|
|
|
149
149
|
// Bad: Vague or cryptic
|
|
150
|
-
'flag1'
|
|
151
|
-
'test'
|
|
152
|
-
'temp'
|
|
150
|
+
'flag1';
|
|
151
|
+
'test';
|
|
152
|
+
'temp';
|
|
153
153
|
```
|
|
154
154
|
|
|
155
155
|
### 2. Default to Off
|
|
@@ -165,7 +165,7 @@ function getFlag(name: string): boolean {
|
|
|
165
165
|
```typescript
|
|
166
166
|
/**
|
|
167
167
|
* Feature Flag: new-payment-provider
|
|
168
|
-
*
|
|
168
|
+
*
|
|
169
169
|
* Purpose: Enable new Stripe payment integration
|
|
170
170
|
* Owner: payments-team
|
|
171
171
|
* Created: 2024-01-15
|
|
@@ -192,7 +192,7 @@ describe('Checkout', () => {
|
|
|
192
192
|
setFlag('new-checkout', true);
|
|
193
193
|
// test new checkout
|
|
194
194
|
});
|
|
195
|
-
|
|
195
|
+
|
|
196
196
|
it('works with new checkout disabled', () => {
|
|
197
197
|
setFlag('new-checkout', false);
|
|
198
198
|
// test legacy checkout
|
|
@@ -207,11 +207,11 @@ describe('Checkout', () => {
|
|
|
207
207
|
```typescript
|
|
208
208
|
class FeatureFlagService {
|
|
209
209
|
private flags: Map<string, FeatureFlag> = new Map();
|
|
210
|
-
|
|
210
|
+
|
|
211
211
|
constructor(private config: FlagConfig) {
|
|
212
212
|
this.loadFlags();
|
|
213
213
|
}
|
|
214
|
-
|
|
214
|
+
|
|
215
215
|
async loadFlags(): Promise<void> {
|
|
216
216
|
// Load from remote config
|
|
217
217
|
const response = await fetch('/api/flags');
|
|
@@ -220,13 +220,13 @@ class FeatureFlagService {
|
|
|
220
220
|
this.flags.set(flag.name, flag);
|
|
221
221
|
});
|
|
222
222
|
}
|
|
223
|
-
|
|
223
|
+
|
|
224
224
|
isEnabled(name: string, context?: FlagContext): boolean {
|
|
225
225
|
const flag = this.flags.get(name);
|
|
226
226
|
if (!flag) return false;
|
|
227
227
|
return evaluateFlag(flag, context);
|
|
228
228
|
}
|
|
229
|
-
|
|
229
|
+
|
|
230
230
|
getAllFlags(): FeatureFlag[] {
|
|
231
231
|
return Array.from(this.flags.values());
|
|
232
232
|
}
|
|
@@ -243,7 +243,7 @@ const FeatureFlagContext = createContext<FeatureFlagService>(null);
|
|
|
243
243
|
|
|
244
244
|
export function FeatureFlagProvider({ children }) {
|
|
245
245
|
const flagService = useMemo(() => new FeatureFlagService(), []);
|
|
246
|
-
|
|
246
|
+
|
|
247
247
|
return (
|
|
248
248
|
<FeatureFlagContext.Provider value={flagService}>
|
|
249
249
|
{children}
|
|
@@ -255,18 +255,18 @@ export function FeatureFlagProvider({ children }) {
|
|
|
255
255
|
export function useFeatureFlag(name: string): boolean {
|
|
256
256
|
const flagService = useContext(FeatureFlagContext);
|
|
257
257
|
const [enabled, setEnabled] = useState(false);
|
|
258
|
-
|
|
258
|
+
|
|
259
259
|
useEffect(() => {
|
|
260
260
|
setEnabled(flagService.isEnabled(name));
|
|
261
261
|
}, [name, flagService]);
|
|
262
|
-
|
|
262
|
+
|
|
263
263
|
return enabled;
|
|
264
264
|
}
|
|
265
265
|
|
|
266
266
|
// Component usage
|
|
267
267
|
function MyComponent() {
|
|
268
268
|
const showNewUI = useFeatureFlag('new-ui');
|
|
269
|
-
|
|
269
|
+
|
|
270
270
|
return showNewUI ? <NewUI /> : <LegacyUI />;
|
|
271
271
|
}
|
|
272
272
|
```
|
|
@@ -275,17 +275,18 @@ function MyComponent() {
|
|
|
275
275
|
|
|
276
276
|
## Flag Audit Checklist
|
|
277
277
|
|
|
278
|
-
| Flag Name
|
|
279
|
-
|
|
280
|
-
| new-checkout | @alice | 2024-01 | Active | -
|
|
281
|
-
| dark-mode
|
|
282
|
-
| old-api
|
|
278
|
+
| Flag Name | Owner | Created | Status | Cleanup Date |
|
|
279
|
+
| ------------ | ------ | ------- | ------ | ------------ |
|
|
280
|
+
| new-checkout | @alice | 2024-01 | Active | - |
|
|
281
|
+
| dark-mode | @bob | 2024-02 | Sunset | 2024-04-01 |
|
|
282
|
+
| old-api | @carol | 2023-06 | Remove | Overdue! |
|
|
283
283
|
|
|
284
284
|
---
|
|
285
285
|
|
|
286
286
|
## Anti-Patterns
|
|
287
287
|
|
|
288
288
|
### ❌ Too Many Flags
|
|
289
|
+
|
|
289
290
|
```typescript
|
|
290
291
|
// Bad: Feature flag soup
|
|
291
292
|
if (flagA && flagB && !flagC && (flagD || flagE)) {
|
|
@@ -294,14 +295,17 @@ if (flagA && flagB && !flagC && (flagD || flagE)) {
|
|
|
294
295
|
```
|
|
295
296
|
|
|
296
297
|
### ❌ Permanent Flags
|
|
298
|
+
|
|
297
299
|
```typescript
|
|
298
300
|
// Bad: Flag that's been on for 2 years
|
|
299
|
-
if (flags.newLoginPage) {
|
|
301
|
+
if (flags.newLoginPage) {
|
|
302
|
+
// Added in 2022
|
|
300
303
|
// This should just be the code now
|
|
301
304
|
}
|
|
302
305
|
```
|
|
303
306
|
|
|
304
307
|
### ❌ Complex Flag Logic
|
|
308
|
+
|
|
305
309
|
```typescript
|
|
306
310
|
// Bad: Flag with side effects
|
|
307
311
|
if (flags.experimentX) {
|
package/src/templates/agents/claude-code/skills/release-coordinator/release-plan-template.md
CHANGED
|
@@ -13,22 +13,24 @@ Template for planning and executing software releases.
|
|
|
13
13
|
|
|
14
14
|
## Release Information
|
|
15
15
|
|
|
16
|
-
| Field
|
|
17
|
-
|
|
18
|
-
| Version
|
|
19
|
-
| Codename
|
|
20
|
-
| Release Date
|
|
21
|
-
| Release Manager | [Name]
|
|
22
|
-
| Status
|
|
16
|
+
| Field | Value |
|
|
17
|
+
| --------------- | --------------------------- |
|
|
18
|
+
| Version | v[X.Y.Z] |
|
|
19
|
+
| Codename | [Optional] |
|
|
20
|
+
| Release Date | YYYY-MM-DD |
|
|
21
|
+
| Release Manager | [Name] |
|
|
22
|
+
| Status | Planning / Ready / Released |
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
26
|
## 1. Release Summary
|
|
27
27
|
|
|
28
28
|
### Highlights
|
|
29
|
+
|
|
29
30
|
[Brief summary of major changes in this release]
|
|
30
31
|
|
|
31
32
|
### Release Type
|
|
33
|
+
|
|
32
34
|
- [ ] Major (breaking changes)
|
|
33
35
|
- [ ] Minor (new features, backwards compatible)
|
|
34
36
|
- [ ] Patch (bug fixes only)
|
|
@@ -38,32 +40,37 @@ Template for planning and executing software releases.
|
|
|
38
40
|
## 2. Features & Changes
|
|
39
41
|
|
|
40
42
|
### New Features
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
|
|
44
|
+
| ID | Feature | Owner | Status |
|
|
45
|
+
| -------- | ------------- | ------ | ------- |
|
|
43
46
|
| FEAT-001 | [Description] | [Name] | ✅ Done |
|
|
44
47
|
| FEAT-002 | [Description] | [Name] | ✅ Done |
|
|
45
48
|
|
|
46
49
|
### Bug Fixes
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
|
50
|
-
| BUG-
|
|
50
|
+
|
|
51
|
+
| ID | Description | Severity | Status |
|
|
52
|
+
| ------- | ------------- | -------- | -------- |
|
|
53
|
+
| BUG-001 | [Description] | High | ✅ Fixed |
|
|
54
|
+
| BUG-002 | [Description] | Medium | ✅ Fixed |
|
|
51
55
|
|
|
52
56
|
### Breaking Changes
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
|
|
58
|
+
| Change | Migration Path |
|
|
59
|
+
| -------------------------- | ---------------- |
|
|
55
60
|
| [Describe breaking change] | [How to migrate] |
|
|
56
61
|
|
|
57
62
|
### Deprecations
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
|
63
|
+
|
|
64
|
+
| Feature | Deprecated In | Remove In |
|
|
65
|
+
| --------- | ------------- | ---------- |
|
|
66
|
+
| [Feature] | v[X.Y.Z] | v[X+1.0.0] |
|
|
61
67
|
|
|
62
68
|
---
|
|
63
69
|
|
|
64
70
|
## 3. Quality Checklist
|
|
65
71
|
|
|
66
72
|
### Testing
|
|
73
|
+
|
|
67
74
|
- [ ] All unit tests passing
|
|
68
75
|
- [ ] Integration tests passing
|
|
69
76
|
- [ ] E2E tests passing
|
|
@@ -71,12 +78,14 @@ Template for planning and executing software releases.
|
|
|
71
78
|
- [ ] Security scan completed
|
|
72
79
|
|
|
73
80
|
### Documentation
|
|
81
|
+
|
|
74
82
|
- [ ] README updated
|
|
75
83
|
- [ ] API docs updated
|
|
76
84
|
- [ ] CHANGELOG updated
|
|
77
85
|
- [ ] Migration guide (if breaking)
|
|
78
86
|
|
|
79
87
|
### Review
|
|
88
|
+
|
|
80
89
|
- [ ] Code review completed
|
|
81
90
|
- [ ] Security review completed
|
|
82
91
|
- [ ] Product owner sign-off
|
|
@@ -86,13 +95,15 @@ Template for planning and executing software releases.
|
|
|
86
95
|
## 4. Deployment Plan
|
|
87
96
|
|
|
88
97
|
### Pre-Release Tasks
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
98
|
+
|
|
99
|
+
| Task | Owner | Due Date | Status |
|
|
100
|
+
| --------------------- | ------ | -------- | ------ |
|
|
101
|
+
| Freeze feature branch | [Name] | MM/DD | ⬜ |
|
|
102
|
+
| Create release branch | [Name] | MM/DD | ⬜ |
|
|
103
|
+
| Final QA testing | [Name] | MM/DD | ⬜ |
|
|
94
104
|
|
|
95
105
|
### Deployment Steps
|
|
106
|
+
|
|
96
107
|
1. [ ] Create Git tag
|
|
97
108
|
2. [ ] Build release artifacts
|
|
98
109
|
3. [ ] Deploy to staging
|
|
@@ -102,12 +113,15 @@ Template for planning and executing software releases.
|
|
|
102
113
|
7. [ ] Announce release
|
|
103
114
|
|
|
104
115
|
### Rollback Plan
|
|
116
|
+
|
|
105
117
|
**Trigger conditions**:
|
|
118
|
+
|
|
106
119
|
- Error rate > 1%
|
|
107
120
|
- P1 bug discovered
|
|
108
121
|
- Performance degradation > 20%
|
|
109
122
|
|
|
110
123
|
**Rollback steps**:
|
|
124
|
+
|
|
111
125
|
1. Revert to previous version
|
|
112
126
|
2. Notify stakeholders
|
|
113
127
|
3. Create incident ticket
|
|
@@ -117,29 +131,33 @@ Template for planning and executing software releases.
|
|
|
117
131
|
## 5. Communication
|
|
118
132
|
|
|
119
133
|
### Internal
|
|
120
|
-
|
|
121
|
-
|
|
134
|
+
|
|
135
|
+
| Audience | Channel | When |
|
|
136
|
+
| ----------- | --------------- | -------------- |
|
|
122
137
|
| Engineering | Slack #releases | Day of release |
|
|
123
|
-
| Support
|
|
124
|
-
| All Hands
|
|
138
|
+
| Support | Email | Day of release |
|
|
139
|
+
| All Hands | Meeting | Next all-hands |
|
|
125
140
|
|
|
126
141
|
### External
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
|
130
|
-
|
|
|
131
|
-
|
|
|
142
|
+
|
|
143
|
+
| Audience | Channel | When |
|
|
144
|
+
| -------- | ------------- | -------------- |
|
|
145
|
+
| Users | Release Notes | Day of release |
|
|
146
|
+
| Blog | Blog Post | Day of release |
|
|
147
|
+
| Social | Twitter | Day of release |
|
|
132
148
|
|
|
133
149
|
---
|
|
134
150
|
|
|
135
151
|
## 6. Post-Release
|
|
136
152
|
|
|
137
153
|
### Monitoring
|
|
154
|
+
|
|
138
155
|
- [ ] Error rates monitored for 24h
|
|
139
156
|
- [ ] Performance metrics tracked
|
|
140
157
|
- [ ] User feedback collected
|
|
141
158
|
|
|
142
159
|
### Follow-up
|
|
160
|
+
|
|
143
161
|
- [ ] Retro scheduled
|
|
144
162
|
- [ ] Metrics reviewed
|
|
145
163
|
- [ ] Lessons documented
|
|
@@ -149,12 +167,14 @@ Template for planning and executing software releases.
|
|
|
149
167
|
## Appendix
|
|
150
168
|
|
|
151
169
|
### A. Version History
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
|
170
|
+
|
|
171
|
+
| Version | Date | Notes |
|
|
172
|
+
| ---------- | ----- | ---------------- |
|
|
173
|
+
| v[X.Y.Z] | MM/DD | Current release |
|
|
155
174
|
| v[X.Y.Z-1] | MM/DD | Previous release |
|
|
156
175
|
|
|
157
176
|
### B. Related Links
|
|
177
|
+
|
|
158
178
|
- [Release Branch]
|
|
159
179
|
- [Test Reports]
|
|
160
180
|
- [CHANGELOG]
|
|
@@ -165,24 +185,28 @@ Template for planning and executing software releases.
|
|
|
165
185
|
## Release Checklist
|
|
166
186
|
|
|
167
187
|
### 1 Week Before
|
|
188
|
+
|
|
168
189
|
- [ ] Feature freeze
|
|
169
190
|
- [ ] Create release branch
|
|
170
191
|
- [ ] Update version number
|
|
171
192
|
- [ ] Begin final testing
|
|
172
193
|
|
|
173
194
|
### 1 Day Before
|
|
195
|
+
|
|
174
196
|
- [ ] All tests passing
|
|
175
197
|
- [ ] Documentation complete
|
|
176
198
|
- [ ] CHANGELOG finalized
|
|
177
199
|
- [ ] Stakeholder sign-off
|
|
178
200
|
|
|
179
201
|
### Release Day
|
|
202
|
+
|
|
180
203
|
- [ ] Create Git tag
|
|
181
204
|
- [ ] Build and publish
|
|
182
205
|
- [ ] Deploy to production
|
|
183
206
|
- [ ] Announce release
|
|
184
207
|
|
|
185
208
|
### 1 Day After
|
|
209
|
+
|
|
186
210
|
- [ ] Monitor metrics
|
|
187
211
|
- [ ] Address urgent issues
|
|
188
212
|
- [ ] Collect feedback
|
|
@@ -202,29 +226,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
202
226
|
## [Unreleased]
|
|
203
227
|
|
|
204
228
|
### Added
|
|
229
|
+
|
|
205
230
|
- New features
|
|
206
231
|
|
|
207
232
|
### Changed
|
|
233
|
+
|
|
208
234
|
- Changes in existing functionality
|
|
209
235
|
|
|
210
236
|
### Deprecated
|
|
237
|
+
|
|
211
238
|
- Features to be removed in future
|
|
212
239
|
|
|
213
240
|
### Removed
|
|
241
|
+
|
|
214
242
|
- Removed features
|
|
215
243
|
|
|
216
244
|
### Fixed
|
|
245
|
+
|
|
217
246
|
- Bug fixes
|
|
218
247
|
|
|
219
248
|
### Security
|
|
249
|
+
|
|
220
250
|
- Security improvements
|
|
221
251
|
|
|
222
252
|
## [X.Y.Z] - YYYY-MM-DD
|
|
223
253
|
|
|
224
254
|
### Added
|
|
255
|
+
|
|
225
256
|
- Feature A (#123)
|
|
226
257
|
- Feature B (#124)
|
|
227
258
|
|
|
228
259
|
### Fixed
|
|
260
|
+
|
|
229
261
|
- Bug C (#125)
|
|
230
262
|
```
|
|
@@ -15,6 +15,7 @@ EARS is a structured syntax for writing unambiguous, testable requirements. All
|
|
|
15
15
|
**Use When**: Requirement applies at all times, unconditionally.
|
|
16
16
|
|
|
17
17
|
**Examples**:
|
|
18
|
+
|
|
18
19
|
```markdown
|
|
19
20
|
REQ-001: The system SHALL encrypt all passwords using bcrypt with minimum 12 rounds.
|
|
20
21
|
REQ-002: The API SHALL return responses in JSON format.
|
|
@@ -30,6 +31,7 @@ REQ-003: The application SHALL log all authentication attempts.
|
|
|
30
31
|
**Use When**: Requirement is triggered by a specific event or user action.
|
|
31
32
|
|
|
32
33
|
**Examples**:
|
|
34
|
+
|
|
33
35
|
```markdown
|
|
34
36
|
REQ-010: WHEN user submits login form, the system SHALL validate credentials within 2 seconds.
|
|
35
37
|
REQ-011: WHEN payment is processed, the system SHALL send confirmation email.
|
|
@@ -46,6 +48,7 @@ REQ-013: WHEN session expires, the system SHALL redirect user to login page.
|
|
|
46
48
|
**Use When**: Requirement applies during a specific system state or condition.
|
|
47
49
|
|
|
48
50
|
**Examples**:
|
|
51
|
+
|
|
49
52
|
```markdown
|
|
50
53
|
REQ-020: WHILE user is authenticated, the system SHALL display user dashboard.
|
|
51
54
|
REQ-021: WHILE database connection is lost, the system SHALL queue write operations.
|
|
@@ -62,6 +65,7 @@ REQ-023: WHILE rate limit is exceeded, the system SHALL return 429 status.
|
|
|
62
65
|
**Use When**: Requirement depends on optional feature being enabled.
|
|
63
66
|
|
|
64
67
|
**Examples**:
|
|
68
|
+
|
|
65
69
|
```markdown
|
|
66
70
|
REQ-030: WHERE two-factor authentication is enabled, the system SHALL require OTP after password.
|
|
67
71
|
REQ-031: WHERE dark mode is selected, the system SHALL apply dark theme CSS.
|
|
@@ -78,6 +82,7 @@ REQ-033: WHERE email notifications are enabled, the system SHALL send daily dige
|
|
|
78
82
|
**Use When**: Defining how system should handle errors, exceptions, or edge cases.
|
|
79
83
|
|
|
80
84
|
**Examples**:
|
|
85
|
+
|
|
81
86
|
```markdown
|
|
82
87
|
REQ-040: IF login fails 5 times, THEN the system SHALL lock account for 30 minutes.
|
|
83
88
|
REQ-041: IF payment gateway timeout occurs, THEN the system SHALL retry 3 times.
|
|
@@ -92,15 +97,16 @@ REQ-043: IF disk space is below 10%, THEN the system SHALL alert administrators.
|
|
|
92
97
|
**Template**: Combine patterns for complex scenarios.
|
|
93
98
|
|
|
94
99
|
**Examples**:
|
|
100
|
+
|
|
95
101
|
```markdown
|
|
96
|
-
REQ-050: WHILE user is authenticated, WHEN session is about to expire,
|
|
97
|
-
|
|
102
|
+
REQ-050: WHILE user is authenticated, WHEN session is about to expire,
|
|
103
|
+
the system SHALL display warning 5 minutes before expiration.
|
|
98
104
|
|
|
99
|
-
REQ-051: WHERE premium subscription is active, WHEN user uploads file,
|
|
100
|
-
|
|
105
|
+
REQ-051: WHERE premium subscription is active, WHEN user uploads file,
|
|
106
|
+
the system SHALL allow files up to 100MB.
|
|
101
107
|
|
|
102
|
-
REQ-052: IF payment fails, THEN WHILE retry count < 3,
|
|
103
|
-
|
|
108
|
+
REQ-052: IF payment fails, THEN WHILE retry count < 3,
|
|
109
|
+
the system SHALL attempt payment again after 30 seconds.
|
|
104
110
|
```
|
|
105
111
|
|
|
106
112
|
---
|
|
@@ -109,26 +115,27 @@ REQ-052: IF payment fails, THEN WHILE retry count < 3,
|
|
|
109
115
|
|
|
110
116
|
### Required Keywords (SHALL/MUST)
|
|
111
117
|
|
|
112
|
-
| Keyword
|
|
113
|
-
|
|
114
|
-
| **SHALL** | Mandatory requirement | Primary choice
|
|
115
|
-
| **MUST**
|
|
118
|
+
| Keyword | Meaning | Use |
|
|
119
|
+
| --------- | --------------------- | -------------------- |
|
|
120
|
+
| **SHALL** | Mandatory requirement | Primary choice |
|
|
121
|
+
| **MUST** | Mandatory requirement | Alternative to SHALL |
|
|
116
122
|
|
|
117
123
|
### Forbidden Keywords (Ambiguous)
|
|
118
124
|
|
|
119
|
-
| Keyword | Problem
|
|
120
|
-
|
|
121
|
-
| should
|
|
122
|
-
| may
|
|
123
|
-
| could
|
|
124
|
-
| might
|
|
125
|
-
| would
|
|
125
|
+
| Keyword | Problem | Replace With |
|
|
126
|
+
| ------- | --------------------- | --------------- |
|
|
127
|
+
| should | Ambiguous obligation | SHALL |
|
|
128
|
+
| may | Unclear optionality | WHERE + SHALL |
|
|
129
|
+
| could | Vague possibility | SHALL or remove |
|
|
130
|
+
| might | Uncertain behavior | SHALL or remove |
|
|
131
|
+
| would | Conditional ambiguity | SHALL |
|
|
126
132
|
|
|
127
133
|
---
|
|
128
134
|
|
|
129
135
|
## Requirement ID Format
|
|
130
136
|
|
|
131
137
|
### Standard Format
|
|
138
|
+
|
|
132
139
|
```
|
|
133
140
|
REQ-[Category]-[Number]
|
|
134
141
|
|
|
@@ -141,43 +148,47 @@ REQ-NF-001 # Non-functional requirement
|
|
|
141
148
|
|
|
142
149
|
### Categories
|
|
143
150
|
|
|
144
|
-
| Category | Description
|
|
145
|
-
|
|
146
|
-
| AUTH
|
|
147
|
-
| USER
|
|
148
|
-
| PAY
|
|
149
|
-
| UI
|
|
150
|
-
| API
|
|
151
|
-
| DATA
|
|
152
|
-
| SEC
|
|
153
|
-
| PERF
|
|
154
|
-
| NF
|
|
151
|
+
| Category | Description |
|
|
152
|
+
| -------- | ------------------------------ |
|
|
153
|
+
| AUTH | Authentication & Authorization |
|
|
154
|
+
| USER | User Management |
|
|
155
|
+
| PAY | Payment & Billing |
|
|
156
|
+
| UI | User Interface |
|
|
157
|
+
| API | API & Integration |
|
|
158
|
+
| DATA | Data Management |
|
|
159
|
+
| SEC | Security |
|
|
160
|
+
| PERF | Performance |
|
|
161
|
+
| NF | Non-Functional |
|
|
155
162
|
|
|
156
163
|
---
|
|
157
164
|
|
|
158
165
|
## Validation Rules
|
|
159
166
|
|
|
160
167
|
### Rule 1: One Requirement Per Statement
|
|
168
|
+
|
|
161
169
|
```
|
|
162
170
|
❌ BAD: The system SHALL validate credentials AND send welcome email.
|
|
163
|
-
✅ GOOD:
|
|
171
|
+
✅ GOOD:
|
|
164
172
|
REQ-001: The system SHALL validate credentials.
|
|
165
173
|
REQ-002: WHEN login succeeds, the system SHALL send welcome email.
|
|
166
174
|
```
|
|
167
175
|
|
|
168
176
|
### Rule 2: Measurable Actions
|
|
177
|
+
|
|
169
178
|
```
|
|
170
179
|
❌ BAD: The system SHALL be fast.
|
|
171
180
|
✅ GOOD: The system SHALL respond within 200ms for 95% of requests.
|
|
172
181
|
```
|
|
173
182
|
|
|
174
183
|
### Rule 3: No Implementation Details
|
|
184
|
+
|
|
175
185
|
```
|
|
176
186
|
❌ BAD: The system SHALL use Redis for caching.
|
|
177
187
|
✅ GOOD: The system SHALL cache frequently accessed data.
|
|
178
188
|
```
|
|
179
189
|
|
|
180
190
|
### Rule 4: Testable Conditions
|
|
191
|
+
|
|
181
192
|
```
|
|
182
193
|
❌ BAD: WHEN user is unhappy, the system SHALL improve experience.
|
|
183
194
|
✅ GOOD: WHEN user rating is below 3, the system SHALL prompt for feedback.
|
|
@@ -191,6 +202,7 @@ REQ-NF-001 # Non-functional requirement
|
|
|
191
202
|
# Requirements Specification: [Feature Name]
|
|
192
203
|
|
|
193
204
|
## Document Information
|
|
205
|
+
|
|
194
206
|
- **Version**: 1.0
|
|
195
207
|
- **Date**: YYYY-MM-DD
|
|
196
208
|
- **Author**: requirements-analyst
|
|
@@ -200,21 +212,21 @@ REQ-NF-001 # Non-functional requirement
|
|
|
200
212
|
|
|
201
213
|
### 1.1 Authentication
|
|
202
214
|
|
|
203
|
-
REQ-AUTH-001: WHEN user submits login form with valid credentials,
|
|
204
|
-
|
|
215
|
+
REQ-AUTH-001: WHEN user submits login form with valid credentials,
|
|
216
|
+
the system SHALL authenticate user and create session.
|
|
205
217
|
|
|
206
|
-
REQ-AUTH-002: IF login credentials are invalid,
|
|
207
|
-
|
|
218
|
+
REQ-AUTH-002: IF login credentials are invalid,
|
|
219
|
+
THEN the system SHALL display error message.
|
|
208
220
|
|
|
209
|
-
REQ-AUTH-003: IF login fails 5 consecutive times,
|
|
210
|
-
|
|
221
|
+
REQ-AUTH-003: IF login fails 5 consecutive times,
|
|
222
|
+
THEN the system SHALL lock account for 30 minutes.
|
|
211
223
|
|
|
212
224
|
### 1.2 User Management
|
|
213
225
|
|
|
214
226
|
REQ-USER-001: The system SHALL store user profiles with name, email, and avatar.
|
|
215
227
|
|
|
216
|
-
REQ-USER-002: WHEN user updates profile,
|
|
217
|
-
|
|
228
|
+
REQ-USER-002: WHEN user updates profile,
|
|
229
|
+
the system SHALL validate and save changes.
|
|
218
230
|
|
|
219
231
|
## 2. Non-Functional Requirements
|
|
220
232
|
|
|
@@ -236,11 +248,11 @@ REQ-NF-005: The system SHALL maintain 99.9% uptime.
|
|
|
236
248
|
|
|
237
249
|
## 3. Traceability
|
|
238
250
|
|
|
239
|
-
| REQ ID
|
|
240
|
-
|
|
241
|
-
| REQ-AUTH-001 | Auth Service
|
|
242
|
-
| REQ-AUTH-002 | Auth Service
|
|
243
|
-
| REQ-USER-001 | User Service
|
|
251
|
+
| REQ ID | Design Component | Priority | Status |
|
|
252
|
+
| ------------ | ---------------- | -------- | -------- |
|
|
253
|
+
| REQ-AUTH-001 | Auth Service | P1 | Approved |
|
|
254
|
+
| REQ-AUTH-002 | Auth Service | P1 | Approved |
|
|
255
|
+
| REQ-USER-001 | User Service | P2 | Draft |
|
|
244
256
|
```
|
|
245
257
|
|
|
246
258
|
---
|