@ngocsangairvds/vsaf 5.1.5 → 5.1.7
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/package.json +1 -1
- package/packages/cli/dist/adapters/antigravity.d.ts.map +1 -1
- package/packages/cli/dist/adapters/antigravity.js +14 -30
- package/packages/cli/dist/adapters/antigravity.js.map +1 -1
- package/packages/cli/dist/adapters/claude.d.ts.map +1 -1
- package/packages/cli/dist/adapters/claude.js +8 -10
- package/packages/cli/dist/adapters/claude.js.map +1 -1
- package/packages/cli/dist/adapters/codex.d.ts.map +1 -1
- package/packages/cli/dist/adapters/codex.js +6 -9
- package/packages/cli/dist/adapters/codex.js.map +1 -1
- package/packages/cli/dist/adapters/cursor.d.ts.map +1 -1
- package/packages/cli/dist/adapters/cursor.js +22 -24
- package/packages/cli/dist/adapters/cursor.js.map +1 -1
- package/packages/cli/dist/commands/init.d.ts.map +1 -1
- package/packages/cli/dist/commands/init.js +7 -19
- package/packages/cli/dist/commands/init.js.map +1 -1
- package/packages/cli/dist/commands/install.d.ts +3 -6
- package/packages/cli/dist/commands/install.d.ts.map +1 -1
- package/packages/cli/dist/commands/install.js +27 -10
- package/packages/cli/dist/commands/install.js.map +1 -1
- package/packages/cli/dist/commands/skill.d.ts.map +1 -1
- package/packages/cli/dist/commands/skill.js +40 -16
- package/packages/cli/dist/commands/skill.js.map +1 -1
- package/packages/cli/dist/index.js +2 -2
- package/packages/cli/dist/index.js.map +1 -1
- package/packages/cli/dist/install/orchestrator.d.ts +0 -8
- package/packages/cli/dist/install/orchestrator.d.ts.map +1 -1
- package/packages/cli/dist/install/orchestrator.js +3 -54
- package/packages/cli/dist/install/orchestrator.js.map +1 -1
- package/packages/cli/dist/server/routes/runs.d.ts.map +1 -1
- package/packages/cli/dist/server/routes/runs.js +81 -3
- package/packages/cli/dist/server/routes/runs.js.map +1 -1
- package/packages/cli/dist/server/routes/workflows.d.ts.map +1 -1
- package/packages/cli/dist/server/routes/workflows.js +76 -17
- package/packages/cli/dist/server/routes/workflows.js.map +1 -1
- package/packages/cli/dist/server/services/execution-manager.d.ts +11 -1
- package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
- package/packages/cli/dist/server/services/execution-manager.js +88 -17
- package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
- package/packages/cli/dist/server/static.d.ts.map +1 -1
- package/packages/cli/dist/server/static.js +4 -1
- package/packages/cli/dist/server/static.js.map +1 -1
- package/packages/cli/dist/server/workflow-path.d.ts +3 -0
- package/packages/cli/dist/server/workflow-path.d.ts.map +1 -0
- package/packages/cli/dist/server/workflow-path.js +25 -0
- package/packages/cli/dist/server/workflow-path.js.map +1 -0
- package/packages/core/dist/store/recovery.d.ts.map +1 -1
- package/packages/core/dist/store/recovery.js +12 -1
- package/packages/core/dist/store/recovery.js.map +1 -1
- package/packages/core/dist/store/run-store.d.ts +3 -0
- package/packages/core/dist/store/run-store.d.ts.map +1 -1
- package/packages/core/dist/store/run-store.js +33 -0
- package/packages/core/dist/store/run-store.js.map +1 -1
- package/packages/core/dist/store/types.d.ts +2 -2
- package/packages/core/dist/store/types.d.ts.map +1 -1
- package/packages/core/dist/store/types.js.map +1 -1
- package/packages/core/dist/store/wal.js +1 -1
- package/packages/core/dist/store/wal.js.map +1 -1
- package/packages/web/dist/web/3rdpartylicenses.txt +26 -26
- package/packages/web/dist/web/browser/chunk-4YPNNQ2T.js +4 -0
- package/packages/web/dist/web/browser/chunk-E227ZHPJ.js +1 -0
- package/packages/web/dist/web/browser/chunk-JFBK3MNW.js +1 -0
- package/packages/web/dist/web/browser/chunk-L2VOQBBI.js +1 -0
- package/packages/web/dist/web/browser/chunk-OJJM5VOH.js +1 -0
- package/packages/web/dist/web/browser/chunk-U2H3QYAG.js +5 -0
- package/packages/web/dist/web/browser/chunk-VA7KFQOR.js +1 -0
- package/packages/web/dist/web/browser/chunk-WV3C6DNH.js +1 -0
- package/packages/web/dist/web/browser/index.html +2 -2
- package/packages/web/dist/web/browser/main-THGFWXYL.js +1 -0
- package/packages/web/dist/web/browser/{styles-JBPZVY54.css → styles-PWTTI45T.css} +1 -1
- package/skills/sdlc/architecture/current-state/SKILL.md +10 -0
- package/skills/sdlc/architecture/current-state/step.md +13 -0
- package/skills/sdlc/architecture/decision/SKILL.md +10 -0
- package/skills/sdlc/architecture/decision/step.md +21 -0
- package/skills/sdlc/architecture/epics/SKILL.md +10 -0
- package/skills/sdlc/architecture/epics/step.md +34 -0
- package/skills/sdlc/architecture/grill/SKILL.md +10 -0
- package/skills/sdlc/architecture/grill/step.md +26 -0
- package/skills/sdlc/architecture/prereq/SKILL.md +10 -0
- package/skills/sdlc/architecture/prereq/step.md +16 -0
- package/skills/sdlc/architecture/readiness/SKILL.md +10 -0
- package/skills/sdlc/architecture/readiness/step.md +76 -0
- package/skills/sdlc/complete/context/SKILL.md +10 -0
- package/skills/sdlc/complete/context/step.md +14 -0
- package/skills/sdlc/complete/knowledge/SKILL.md +10 -0
- package/skills/sdlc/complete/knowledge/step.md +22 -0
- package/skills/sdlc/complete/prereq/SKILL.md +10 -0
- package/skills/sdlc/complete/prereq/step.md +16 -0
- package/skills/sdlc/complete/reindex/SKILL.md +10 -0
- package/skills/sdlc/complete/reindex/step.md +24 -0
- package/skills/sdlc/complete/status/SKILL.md +10 -0
- package/skills/sdlc/complete/status/step.md +52 -0
- package/skills/sdlc/discovery/brainstorm/SKILL.md +10 -0
- package/skills/sdlc/discovery/brainstorm/step.md +27 -0
- package/skills/sdlc/discovery/domain/SKILL.md +10 -0
- package/skills/sdlc/discovery/domain/step.md +13 -0
- package/skills/sdlc/discovery/grill/SKILL.md +10 -0
- package/skills/sdlc/discovery/grill/step.md +22 -0
- package/skills/sdlc/discovery/prereq/SKILL.md +10 -0
- package/skills/sdlc/discovery/prereq/step.md +16 -0
- package/skills/sdlc/discovery/prfaq/SKILL.md +10 -0
- package/skills/sdlc/discovery/prfaq/step.md +68 -0
- package/skills/sdlc/discovery/system/SKILL.md +10 -0
- package/skills/sdlc/discovery/system/step.md +19 -0
- package/skills/sdlc/hotfix/analyze/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/entry/step.md +15 -0
- package/skills/sdlc/hotfix/analyze/exit/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/exit/step.md +19 -0
- package/skills/sdlc/hotfix/analyze/fix-strategy/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/fix-strategy/step.md +15 -0
- package/skills/sdlc/hotfix/analyze/gitnexus/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/gitnexus/step.md +17 -0
- package/skills/sdlc/hotfix/analyze/grill/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/grill/step.md +23 -0
- package/skills/sdlc/hotfix/analyze/reasoning/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/reasoning/step.md +29 -0
- package/skills/sdlc/hotfix/analyze/write/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/write/step.md +45 -0
- package/skills/sdlc/hotfix/implement/branch/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/branch/step.md +15 -0
- package/skills/sdlc/hotfix/implement/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/entry/step.md +20 -0
- package/skills/sdlc/hotfix/implement/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/gate/step.md +104 -0
- package/skills/sdlc/hotfix/implement/impact/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/impact/step.md +15 -0
- package/skills/sdlc/hotfix/implement/sonar/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/sonar/step.md +27 -0
- package/skills/sdlc/hotfix/implement/tdd/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/tdd/step.md +33 -0
- package/skills/sdlc/hotfix/implement/verify/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/verify/step.md +27 -0
- package/skills/sdlc/hotfix/prd/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/entry/step.md +20 -0
- package/skills/sdlc/hotfix/prd/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/gate/step.md +32 -0
- package/skills/sdlc/hotfix/prd/requirements/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/requirements/step.md +19 -0
- package/skills/sdlc/hotfix/prd/validate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/validate/step.md +19 -0
- package/skills/sdlc/hotfix/prd/write/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/write/step.md +38 -0
- package/skills/sdlc/hotfix/review/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/entry/step.md +13 -0
- package/skills/sdlc/hotfix/review/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/gate/step.md +51 -0
- package/skills/sdlc/hotfix/review/impact/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/impact/step.md +22 -0
- package/skills/sdlc/hotfix/review/minimality/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/minimality/step.md +18 -0
- package/skills/sdlc/hotfix/review/test-quality/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/test-quality/step.md +16 -0
- package/skills/sdlc/hotfix/ship/commit-pr/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/commit-pr/step.md +58 -0
- package/skills/sdlc/hotfix/ship/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/entry/step.md +20 -0
- package/skills/sdlc/hotfix/ship/exit/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/exit/step.md +31 -0
- package/skills/sdlc/hotfix/ship/gitignore/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/gitignore/step.md +22 -0
- package/skills/sdlc/hotfix/ship/report/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/report/step.md +47 -0
- package/skills/sdlc/hotfix/ship/test-gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/test-gate/step.md +17 -0
- package/skills/sdlc/implement/build-run/SKILL.md +10 -0
- package/skills/sdlc/implement/build-run/step.md +85 -0
- package/skills/sdlc/implement/checkpoint/SKILL.md +10 -0
- package/skills/sdlc/implement/checkpoint/step.md +20 -0
- package/skills/sdlc/implement/debug/SKILL.md +10 -0
- package/skills/sdlc/implement/debug/step.md +25 -0
- package/skills/sdlc/implement/impact/SKILL.md +10 -0
- package/skills/sdlc/implement/impact/step.md +12 -0
- package/skills/sdlc/implement/plan/SKILL.md +10 -0
- package/skills/sdlc/implement/plan/step.md +13 -0
- package/skills/sdlc/implement/prereq/SKILL.md +10 -0
- package/skills/sdlc/implement/prereq/step.md +21 -0
- package/skills/sdlc/implement/subagents/SKILL.md +10 -0
- package/skills/sdlc/implement/subagents/step.md +38 -0
- package/skills/sdlc/implement/tdd/SKILL.md +10 -0
- package/skills/sdlc/implement/tdd/step.md +24 -0
- package/skills/sdlc/init/SKILL.md +7 -0
- package/skills/sdlc/onboard-code/SKILL.md +7 -0
- package/skills/sdlc/onboard-docs/SKILL.md +7 -0
- package/skills/sdlc/pack.yaml +83 -16
- package/skills/sdlc/prd/blast-radius/SKILL.md +10 -0
- package/skills/sdlc/prd/blast-radius/step.md +76 -0
- package/skills/sdlc/prd/create/SKILL.md +10 -0
- package/skills/sdlc/prd/create/step.md +21 -0
- package/skills/sdlc/prd/elicitation/SKILL.md +10 -0
- package/skills/sdlc/prd/elicitation/step.md +12 -0
- package/skills/sdlc/prd/prereq/SKILL.md +10 -0
- package/skills/sdlc/prd/prereq/step.md +16 -0
- package/skills/sdlc/prd/validate/SKILL.md +10 -0
- package/skills/sdlc/prd/validate/step.md +24 -0
- package/skills/sdlc/review/code/SKILL.md +10 -0
- package/skills/sdlc/review/code/step.md +45 -0
- package/skills/sdlc/review/debate/SKILL.md +10 -0
- package/skills/sdlc/review/debate/step.md +84 -0
- package/skills/sdlc/review/impact/SKILL.md +10 -0
- package/skills/sdlc/review/impact/step.md +14 -0
- package/skills/sdlc/review/prereq/SKILL.md +10 -0
- package/skills/sdlc/review/prereq/step.md +18 -0
- package/skills/sdlc/review/verification/SKILL.md +10 -0
- package/skills/sdlc/review/verification/step.md +16 -0
- package/skills/sdlc/ship/commit/SKILL.md +10 -0
- package/skills/sdlc/ship/commit/step.md +23 -0
- package/skills/sdlc/ship/gitignore/SKILL.md +10 -0
- package/skills/sdlc/ship/gitignore/step.md +22 -0
- package/skills/sdlc/ship/pr/SKILL.md +10 -0
- package/skills/sdlc/ship/pr/step.md +34 -0
- package/skills/sdlc/ship/prereq/SKILL.md +10 -0
- package/skills/sdlc/ship/prereq/step.md +16 -0
- package/skills/sdlc/ship/report/SKILL.md +10 -0
- package/skills/sdlc/ship/report/step.md +74 -0
- package/skills/sdlc/srs/interface/SKILL.md +10 -0
- package/skills/sdlc/srs/interface/step.md +44 -0
- package/skills/sdlc/srs/prereq/SKILL.md +10 -0
- package/skills/sdlc/srs/prereq/step.md +19 -0
- package/skills/sdlc/srs/validate/SKILL.md +10 -0
- package/skills/sdlc/srs/validate/step.md +23 -0
- package/skills/sdlc/srs/write/SKILL.md +10 -0
- package/skills/sdlc/srs/write/step.md +19 -0
- package/skills/sdlc/test-design/boundary/SKILL.md +10 -0
- package/skills/sdlc/test-design/boundary/step.md +12 -0
- package/skills/sdlc/test-design/cases/SKILL.md +10 -0
- package/skills/sdlc/test-design/cases/step.md +22 -0
- package/skills/sdlc/test-design/coverage/SKILL.md +10 -0
- package/skills/sdlc/test-design/coverage/step.md +63 -0
- package/skills/sdlc/test-design/prereq/SKILL.md +10 -0
- package/skills/sdlc/test-design/prereq/step.md +15 -0
- package/{skills/sdlc/workflows → workflows/sdlc}/hotfix-tdd.yaml +2 -1
- package/{skills/sdlc/workflows → workflows/sdlc}/hotfix.yaml +8 -4
- package/workflows/sdlc/master-sdlc.yaml +64 -0
- package/workflows/sdlc/sdlc-architecture.yaml +43 -0
- package/workflows/sdlc/sdlc-build.yaml +51 -0
- package/workflows/sdlc/sdlc-design.yaml +61 -0
- package/workflows/sdlc/sdlc-discovery.yaml +43 -0
- package/workflows/sdlc/sdlc-feature-complete.yaml +36 -0
- package/workflows/sdlc/sdlc-hotfix-analyze.yaml +43 -0
- package/workflows/sdlc/sdlc-hotfix-implement.yaml +43 -0
- package/workflows/sdlc/sdlc-hotfix-prd.yaml +31 -0
- package/workflows/sdlc/sdlc-hotfix-review.yaml +31 -0
- package/workflows/sdlc/sdlc-hotfix-ship.yaml +37 -0
- package/workflows/sdlc/sdlc-implement.yaml +60 -0
- package/workflows/sdlc/sdlc-prd.yaml +36 -0
- package/workflows/sdlc/sdlc-qa.yaml +91 -0
- package/workflows/sdlc/sdlc-review.yaml +36 -0
- package/workflows/sdlc/sdlc-ship.yaml +36 -0
- package/workflows/sdlc/sdlc-srs.yaml +29 -0
- package/workflows/sdlc/sdlc-test-design.yaml +29 -0
- package/workflows/sdlc/sdlc-testcase.yaml +25 -0
- package/workflows/sdlc/sdlc-thinking.yaml +67 -0
- package/packages/web/dist/web/browser/chunk-IPMFXW6N.js +0 -1
- package/packages/web/dist/web/browser/chunk-IX2QWMX2.js +0 -1
- package/packages/web/dist/web/browser/chunk-QMAH5NZC.js +0 -1
- package/packages/web/dist/web/browser/chunk-RGFLNLPM.js +0 -1
- package/packages/web/dist/web/browser/chunk-RKWDHBN3.js +0 -5
- package/packages/web/dist/web/browser/chunk-XGYEZIV4.js +0 -1
- package/packages/web/dist/web/browser/main-IIUZVPMI.js +0 -1
- package/skills/sdlc/architecture/SKILL.md +0 -218
- package/skills/sdlc/discovery/SKILL.md +0 -197
- package/skills/sdlc/feature-complete/SKILL.md +0 -159
- package/skills/sdlc/hotfix-analyze/SKILL.md +0 -198
- package/skills/sdlc/hotfix-implement/SKILL.md +0 -272
- package/skills/sdlc/hotfix-prd/SKILL.md +0 -161
- package/skills/sdlc/hotfix-review/SKILL.md +0 -153
- package/skills/sdlc/hotfix-ship/SKILL.md +0 -221
- package/skills/sdlc/implement/SKILL.md +0 -264
- package/skills/sdlc/prd/SKILL.md +0 -182
- package/skills/sdlc/review/SKILL.md +0 -210
- package/skills/sdlc/ship/SKILL.md +0 -194
- package/skills/sdlc/srs/SKILL.md +0 -148
- package/skills/sdlc/test-design/SKILL.md +0 -132
- package/skills/sdlc/workflows/master-sdlc.yaml +0 -35
- package/skills/sdlc/workflows/sdlc-build.yaml +0 -18
- package/skills/sdlc/workflows/sdlc-design.yaml +0 -14
- package/skills/sdlc/workflows/sdlc-qa.yaml +0 -20
- package/skills/sdlc/workflows/sdlc-testcase.yaml +0 -8
- package/skills/sdlc/workflows/sdlc-thinking.yaml +0 -12
- /package/{skills/sdlc/workflows → workflows/sdlc}/onboarding.yaml +0 -0
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-hotfix-review
|
|
3
|
-
description: "Hotfix Phase 4 — Quick review — verify minimal fix, impact check, test quality, SonarQube on changed files"
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Hotfix Phase 4: Quick Review
|
|
9
|
-
|
|
10
|
-
You are a Tech Lead doing a focused hotfix review. Mission: verify the fix is minimal, the test is real, and nothing else broke.
|
|
11
|
-
|
|
12
|
-
## Language Rule
|
|
13
|
-
|
|
14
|
-
Output documents (02-review.md) MUST be written in Vietnamese. Only keep English for: IDs, technical terms, code references. The template below shows structure only — write actual content in Vietnamese.
|
|
15
|
-
|
|
16
|
-
## Progress Protocol
|
|
17
|
-
|
|
18
|
-
Print progress at each step:
|
|
19
|
-
```
|
|
20
|
-
[HOTFIX-REVIEW] [step/4] description... ⏳
|
|
21
|
-
[HOTFIX-REVIEW] [step/4] description... ✅
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Index Protection
|
|
25
|
-
|
|
26
|
-
⛔ Do NOT modify `graphify-out/` or `.gitnexus/` — READ only.
|
|
27
|
-
|
|
28
|
-
## Phase Entry Protocol
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
[HOTFIX-REVIEW] [1/4] Loading context... ⏳
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
1. Read `.vsaf/docs/hotfixes/{bug-id}/01-analysis.md` — understand what was supposed to change
|
|
35
|
-
2. Read `CONTEXT.md`
|
|
36
|
-
3. Identify all files changed in the GREEN phase (use git diff or read the phase report)
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
[HOTFIX-REVIEW] [1/4] Loading context... ✅
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Tasks
|
|
43
|
-
|
|
44
|
-
### Step 2: Minimality Verification
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
[HOTFIX-REVIEW] [2/4] Verifying fix is minimal... ⏳
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Check:
|
|
51
|
-
- [ ] Only files identified in the analysis were changed
|
|
52
|
-
- [ ] No unnecessary refactoring included
|
|
53
|
-
- [ ] No formatting-only changes on untouched code
|
|
54
|
-
- [ ] No unrelated fixes bundled in
|
|
55
|
-
- [ ] Diff size is proportional to the bug (a 1-line bug should not need 50 lines of changes)
|
|
56
|
-
|
|
57
|
-
If any check fails → flag as CHANGES_REQUESTED with specific reason.
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
[HOTFIX-REVIEW] [2/4] Verifying fix is minimal... ✅
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Step 3: Test Quality Check
|
|
64
|
-
|
|
65
|
-
```
|
|
66
|
-
[HOTFIX-REVIEW] [3/4] Verifying test quality... ⏳
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Read the reproduction test and verify:
|
|
70
|
-
- [ ] Test targets the specific bug (not a generic happy-path test)
|
|
71
|
-
- [ ] Test would FAIL without the fix (it's not trivially always-passing)
|
|
72
|
-
- [ ] Test exercises the exact code path from the root cause analysis
|
|
73
|
-
- [ ] Test has a descriptive name referencing the bug
|
|
74
|
-
- [ ] Test follows project conventions
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
[HOTFIX-REVIEW] [3/4] Verifying test quality... ✅
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Step 4: Impact Check + SonarQube
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
[HOTFIX-REVIEW] [4/4] Impact check + quality gate... ⏳
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
1. Use GitNexus `detect_changes` + `impact` — confirm blast radius matches the analysis
|
|
87
|
-
2. If blast radius is LARGER than analysis predicted → flag for human review
|
|
88
|
-
3. SonarQube rules on changed files only:
|
|
89
|
-
|
|
90
|
-
| Metric | Threshold |
|
|
91
|
-
|--------|-----------|
|
|
92
|
-
| Issues (Blocker) | 0 |
|
|
93
|
-
| Issues (Critical) | 0 |
|
|
94
|
-
| Security Hotspots | 0 |
|
|
95
|
-
| New code smells | 0 |
|
|
96
|
-
|
|
97
|
-
> **Standard (single source of truth):** **`.claude/skills/_shared/sdlc/sonar-viettel/quality-gate.md`** — full gate + 357-rule parameters + importable `sonar-viettel-profile.xml` / `sonar-viettel-gate.json`. Same file Phase 3 (`/sdlc-hotfix-implement`) coded against. If SonarQube is present, scan changed files against the `sonar-viettel` profile + gate; otherwise re-check manually. `New code smells = 0` is intentionally stricter than the gate's ≤20 for surgical fixes.
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
[HOTFIX-REVIEW] [4/4] Impact check + quality gate... ✅
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Gate
|
|
104
|
-
|
|
105
|
-
Write `## Gate: APPROVED` or `## Gate: CHANGES_REQUESTED` with reasons.
|
|
106
|
-
|
|
107
|
-
If CHANGES_REQUESTED:
|
|
108
|
-
- List specific issues with triage: MUST FIX / SHOULD FIX / NOTED
|
|
109
|
-
- Do NOT proceed to ship until all MUST FIX items are resolved
|
|
110
|
-
|
|
111
|
-
## Output
|
|
112
|
-
|
|
113
|
-
Write file: `.vsaf/docs/hotfixes/{bug-id}/02-review.md`
|
|
114
|
-
|
|
115
|
-
```markdown
|
|
116
|
-
# Hotfix Review: {bug-id}
|
|
117
|
-
|
|
118
|
-
## Minimality Check
|
|
119
|
-
{minimality check results}
|
|
120
|
-
|
|
121
|
-
## Test Quality Check
|
|
122
|
-
{test quality check results}
|
|
123
|
-
|
|
124
|
-
## Blast Radius
|
|
125
|
-
{blast radius confirmation — matches/exceeds analysis}
|
|
126
|
-
|
|
127
|
-
## SonarQube
|
|
128
|
-
{quality gate results on changed files}
|
|
129
|
-
|
|
130
|
-
## Conclusion
|
|
131
|
-
{overall assessment}
|
|
132
|
-
|
|
133
|
-
## Gate: {APPROVED / CHANGES_REQUESTED}
|
|
134
|
-
{reasons if changes requested}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Phase Exit Protocol
|
|
138
|
-
|
|
139
|
-
Print PHASE REPORT:
|
|
140
|
-
- Bug: {bug-id}
|
|
141
|
-
- Status: REVIEW COMPLETED
|
|
142
|
-
- Gate: {APPROVED / CHANGES_REQUESTED}
|
|
143
|
-
- Output: `.vsaf/docs/hotfixes/{bug-id}/02-review.md`
|
|
144
|
-
- Next step: `/sdlc-ship` (if approved)
|
|
145
|
-
|
|
146
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
147
|
-
|
|
148
|
-
## Rules
|
|
149
|
-
|
|
150
|
-
- ⛔ Do NOT modify code — review only
|
|
151
|
-
- ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
|
|
152
|
-
- A hotfix review is FAST but NOT sloppy — every check matters
|
|
153
|
-
- If the fix touches more files than the analysis predicted, escalate to human
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-hotfix-ship
|
|
3
|
-
description: "Hotfix Phase 4 — Ship: commit, PR on hotfix branch, ship report"
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Hotfix Phase 4: Ship
|
|
9
|
-
|
|
10
|
-
You are DevOps Engineer. Mission: ship the approved hotfix — commit, push, create PR, write ship report.
|
|
11
|
-
|
|
12
|
-
## Progress Protocol
|
|
13
|
-
|
|
14
|
-
Print progress at each step:
|
|
15
|
-
```
|
|
16
|
-
[HOTFIX-SHIP] [step/5] description... ⏳
|
|
17
|
-
[HOTFIX-SHIP] [step/5] description... ✅
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Phase Entry Protocol
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
[HOTFIX-SHIP] [1/5] Checking prerequisites... ⏳
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
1. Input: `.vsaf/docs/hotfixes/{bug-id}/` directory
|
|
27
|
-
2. Verify these files exist:
|
|
28
|
-
- `01-analysis.md` — root cause analysis
|
|
29
|
-
- `02-prd.md` — fix requirements (MUST have `## Gate: APPROVED`)
|
|
30
|
-
- `03-impl-log.md` — implementation log
|
|
31
|
-
3. Check `02-prd.md` has `## Gate: APPROVED`
|
|
32
|
-
- No Gate → Stop: "PRD not approved. Get approval before shipping."
|
|
33
|
-
4. Verify current branch is `hotfix/{bug-id}`
|
|
34
|
-
- Wrong branch → Stop: "Not on hotfix branch. Switch to `hotfix/{bug-id}`."
|
|
35
|
-
5. Read `CONTEXT.md`
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
[HOTFIX-SHIP] [1/5] Checking prerequisites... ✅
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Tasks
|
|
42
|
-
|
|
43
|
-
### Step 2: .gitignore Enforcement
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
[HOTFIX-SHIP] [2/5] Checking .gitignore... ⏳
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**MANDATORY** — verify before committing:
|
|
50
|
-
|
|
51
|
-
1. Check `.gitignore` contains:
|
|
52
|
-
```
|
|
53
|
-
graphify-out/
|
|
54
|
-
.gitnexus/
|
|
55
|
-
```
|
|
56
|
-
2. If MISSING → add automatically and notify user
|
|
57
|
-
3. Verify with `git status` — `graphify-out/` and `.gitnexus/` do NOT appear
|
|
58
|
-
4. If they appear → `git rm --cached -r graphify-out/ .gitnexus/`
|
|
59
|
-
|
|
60
|
-
⚠️ **ABSOLUTELY DO NOT commit `graphify-out/` or `.gitnexus/`**
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
[HOTFIX-SHIP] [2/5] Checking .gitignore... ✅
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Step 3: Final Test Gate
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
[HOTFIX-SHIP] [3/5] Final test verification... ⏳
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Run full test suite one last time before shipping:
|
|
73
|
-
```bash
|
|
74
|
-
npm test # or mvn test / gradle test / equivalent
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
- ALL tests MUST pass
|
|
78
|
-
- If FAIL → Stop: "Tests failing. Fix before shipping."
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
[HOTFIX-SHIP] [3/5] Final test verification... ✅
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Step 4: Commit + Push + PR
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
[HOTFIX-SHIP] [4/5] Commit + push + create PR... ⏳
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**Commit scope — ONLY commit:**
|
|
91
|
-
- Source code changes (the fix)
|
|
92
|
-
- `.vsaf/docs/hotfixes/{bug-id}/` (all artifacts)
|
|
93
|
-
- `.gitignore` (if updated)
|
|
94
|
-
|
|
95
|
-
**DO NOT commit:**
|
|
96
|
-
- `graphify-out/`
|
|
97
|
-
- `.gitnexus/`
|
|
98
|
-
|
|
99
|
-
**Commit message format:**
|
|
100
|
-
```
|
|
101
|
-
fix({area}): {short description}
|
|
102
|
-
|
|
103
|
-
Root cause: {one line from 01-analysis.md}
|
|
104
|
-
Closes: #{issue-number} (if applicable)
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
**Push + PR:**
|
|
108
|
-
```bash
|
|
109
|
-
git push -u origin hotfix/{bug-id}
|
|
110
|
-
gh pr create --title "fix({area}): {short description}" --body "{PR body}"
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**PR body template:**
|
|
114
|
-
```markdown
|
|
115
|
-
## Bug Fix: {bug-id}
|
|
116
|
-
|
|
117
|
-
### Root Cause
|
|
118
|
-
{from 01-analysis.md — one paragraph}
|
|
119
|
-
|
|
120
|
-
### Fix
|
|
121
|
-
{from 03-impl-log.md — what was changed and why}
|
|
122
|
-
|
|
123
|
-
### Tests
|
|
124
|
-
- Regression test: `{test file}:{test name}`
|
|
125
|
-
- Full suite: {total} tests, all PASS
|
|
126
|
-
|
|
127
|
-
### Affected Files
|
|
128
|
-
{list from 03-impl-log.md}
|
|
129
|
-
|
|
130
|
-
### Scope
|
|
131
|
-
- ✅ Fix only — no refactoring, no enhancements
|
|
132
|
-
- ✅ Regression test added
|
|
133
|
-
- ✅ Full test suite passing
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
> **Post-pull:** Run `npx gitnexus analyze` and `/graphify` to re-index locally.
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
[HOTFIX-SHIP] [4/5] Commit + push + create PR... ✅
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Step 5: Ship Report
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
[HOTFIX-SHIP] [5/5] Writing ship report... ⏳
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
Write file: `.vsaf/docs/hotfixes/{bug-id}/04-ship.md`
|
|
150
|
-
|
|
151
|
-
```markdown
|
|
152
|
-
# Ship Report: {bug-id}
|
|
153
|
-
|
|
154
|
-
## PR
|
|
155
|
-
- {repo}: PR #{number} — {url}
|
|
156
|
-
|
|
157
|
-
## Branch
|
|
158
|
-
`hotfix/{bug-id}` → `main`
|
|
159
|
-
|
|
160
|
-
## Commit Scope
|
|
161
|
-
- Source code: {N} files (minimal fix)
|
|
162
|
-
- .vsaf/docs/: {M} files (hotfix artifacts)
|
|
163
|
-
- Excluded: graphify-out/, .gitnexus/ (local index)
|
|
164
|
-
|
|
165
|
-
## Final Status
|
|
166
|
-
- Build: PASS
|
|
167
|
-
- Tests: all GREEN (including regression test)
|
|
168
|
-
- PRD Gate: APPROVED
|
|
169
|
-
|
|
170
|
-
## Bug Fix Summary
|
|
171
|
-
- Root cause: {from 01-analysis.md}
|
|
172
|
-
- Regression test: {test file}:{test name}
|
|
173
|
-
- Fix: {minimal diff description}
|
|
174
|
-
|
|
175
|
-
## Artifacts
|
|
176
|
-
- `01-analysis.md` — root cause analysis
|
|
177
|
-
- `02-prd.md` — fix requirements (approved)
|
|
178
|
-
- `03-impl-log.md` — TDD implementation log
|
|
179
|
-
- `04-ship.md` — this file
|
|
180
|
-
|
|
181
|
-
## Post-pull Setup
|
|
182
|
-
After pulling the code, run:
|
|
183
|
-
- `npx gitnexus analyze` — re-index code
|
|
184
|
-
- `/graphify` — rebuild knowledge graph
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
[HOTFIX-SHIP] [5/5] Writing ship report... ✅
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## Phase Exit Protocol
|
|
192
|
-
|
|
193
|
-
Print PHASE REPORT:
|
|
194
|
-
```
|
|
195
|
-
═══════════════════════════════════════════
|
|
196
|
-
HOTFIX SHIPPED: {bug-id}
|
|
197
|
-
═══════════════════════════════════════════
|
|
198
|
-
Flow: Analyze → PRD → Implement → Ship
|
|
199
|
-
|
|
200
|
-
PR: #{number} — {url}
|
|
201
|
-
Branch: hotfix/{bug-id}
|
|
202
|
-
Commit: source code + .vsaf/docs/ only
|
|
203
|
-
Excluded: graphify-out/, .gitnexus/
|
|
204
|
-
|
|
205
|
-
Artifacts: .vsaf/docs/hotfixes/{bug-id}/ (4 files)
|
|
206
|
-
|
|
207
|
-
Hotfix DONE.
|
|
208
|
-
═══════════════════════════════════════════
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Update `.vsaf/docs/STATUS.md` → move to "Completed Hotfixes".
|
|
212
|
-
|
|
213
|
-
## Rules
|
|
214
|
-
|
|
215
|
-
- ⛔ Do NOT review code — that happened during TDD (self-review via SonarQube)
|
|
216
|
-
- ⛔ Do NOT commit `graphify-out/` or `.gitnexus/`
|
|
217
|
-
- ⛔ Do NOT ship if tests are failing
|
|
218
|
-
- ⛔ Do NOT ship without PRD Gate: APPROVED
|
|
219
|
-
- Gate comes from PRD approval — no separate review phase needed
|
|
220
|
-
- PR description MUST be self-contained
|
|
221
|
-
- Commit message follows conventional format: `fix({area}): {description}`
|
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-implement
|
|
3
|
-
description: Phase 6 — TDD Implementation via subagent-driven development + SonarQube-during-code + GitNexus impact verification
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 6: Implementation (TDD + Subagent-Driven + SonarQube-In-Loop)
|
|
9
|
-
|
|
10
|
-
You are a Senior Software Engineer. Your mission: implement code following TDD — RED → GREEN → REFACTOR. Do not write code without a failing test first.
|
|
11
|
-
|
|
12
|
-
**TWO important changes compared to the old process:**
|
|
13
|
-
1. **MANDATORY use of subagent-driven development** — dispatch parallel subagents for stories/epics
|
|
14
|
-
2. **Apply SonarQube rules DURING coding** — do not wait for review phase to check
|
|
15
|
-
|
|
16
|
-
## Index Protection
|
|
17
|
-
|
|
18
|
-
⛔ **DO NOT modify** `graphify-out/` or `.gitnexus/` — READ only, never WRITE.
|
|
19
|
-
|
|
20
|
-
## Phase Entry Protocol
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
[IMPLEMENT] [1/8] Checking input artifacts... ⏳
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
1. Input:
|
|
27
|
-
- `.vsaf/docs/features/{feature-name}/06-testcases.md`
|
|
28
|
-
- `.vsaf/docs/features/{feature-name}/03-adr.md`
|
|
29
|
-
- `.vsaf/docs/features/{feature-name}/04-epics.md`
|
|
30
|
-
2. Verify ALL 3 files exist:
|
|
31
|
-
- Any file missing → Ask: "File not found. Have you pulled it yet?"
|
|
32
|
-
3. Read `.vsaf/docs/STATUS.md`
|
|
33
|
-
4. Read `CONTEXT.md`
|
|
34
|
-
5. Query `graph.json` for code structure
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
[IMPLEMENT] [1/8] Checking input artifacts... ✅
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
**Note:** This phase MUST run via `/superpowers:subagent-driven-development` — dispatch parallel subagents for each epic according to the Conflict Map in `04-epics.md`.
|
|
41
|
-
|
|
42
|
-
## Subagent-Driven Development Protocol
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
[IMPLEMENT] [2/8] Initializing subagent-driven development... ⏳
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**MANDATORY** — Check and activate `/superpowers:subagent-driven-development`:
|
|
49
|
-
1. If not already in subagent mode → **switch immediately**
|
|
50
|
-
2. Analyze `04-epics.md` → identify Conflict Map
|
|
51
|
-
3. Dispatch each epic/story as a separate subagent running in parallel
|
|
52
|
-
4. Each subagent follows the Conflict Map — only modify files assigned to its epic
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
[IMPLEMENT] [2/8] Initializing subagent-driven development... ✅
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## SonarQube Quality Gate — Apply DURING Coding
|
|
59
|
-
|
|
60
|
-
⚠️ **DO NOT wait for review phase.** Each subagent MUST self-check the `sonar-viettel` gate WHILE writing code.
|
|
61
|
-
|
|
62
|
-
> **Standard (single source of truth):** **`.claude/skills/_shared/sdlc/sonar-viettel/quality-gate.md`** — full New Code + Overall Code tables, the 357-rule parameters, and the importable `sonar-viettel-profile.xml` / `sonar-viettel-gate.json`. **Read it.** Phase 7 (`/sdlc-review`) re-checks the **same** file — anything that passes here must pass there. Do NOT invent stricter or looser values.
|
|
63
|
-
|
|
64
|
-
**Hard fails to self-check (summary — see the shared doc for the full gate):**
|
|
65
|
-
- New Code: Issues / Blocker / Critical / Major / Vulnerabilities = **0**; Code Smells **≤ 20**; Security Hotspots Reviewed = **100%**; Duplicated **≤ 45%**; Maintainability / Reliability / Security Rating **≥ A**.
|
|
66
|
-
- Overall Code: Bugs = **0**; Code Smells **≤ 50**; same Blocker/Critical/Major/Vuln/Duplication/rating rules.
|
|
67
|
-
- Honour the parametrised rules — S107 (params), S3776 (complexity), S110 (inheritance), S1479 (switch), S1192 (literals), S2068/S2077 (secrets/injection), S100/S101/S115 (naming). **Thresholds live authoritatively in the profile XML** — derive them via the snippet in the shared `quality-gate.md`, do not memorise numbers.
|
|
68
|
-
|
|
69
|
-
**How to apply during coding:**
|
|
70
|
-
- **After each function** → self-review: security vulnerabilities? code smells? duplication?
|
|
71
|
-
- **After each class** → check SOLID violations, naming conventions, interface segregation
|
|
72
|
-
- **Before each commit** → scan changed files for: SQL injection, XSS, command injection, hardcoded secrets, null dereference, resource leaks, concurrency issues, duplicated blocks
|
|
73
|
-
- **Auto-detect SonarQube:** check whether `sonar-scanner` is on PATH.
|
|
74
|
-
- Present → import the profile + gate from the shared folder, then run `sonar-scanner` incremental.
|
|
75
|
-
- Absent → print `Sonar not found → self-checklist mode` and self-review against the shared `quality-gate.md`. This is a fully supported path, not a fallback to apologise for — SonarQube is OPTIONAL.
|
|
76
|
-
|
|
77
|
-
**Goal:** Review phase should only need to RE-CHECK, not find bugs for the first time.
|
|
78
|
-
|
|
79
|
-
## Tasks
|
|
80
|
-
|
|
81
|
-
### Step 3: Task Planning
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
[IMPLEMENT] [3/8] Task planning from testcases + ADR... ⏳
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Use `/superpowers:writing-plans` — create granular task plan from testcases + ADR.
|
|
88
|
-
Each task maps to ≥1 FR/NFR.
|
|
89
|
-
Write to `07-impl-plan.md`.
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
[IMPLEMENT] [3/8] Task planning from testcases + ADR... ✅
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Step 3.5: Checkpoint Review (every 3-5 tasks)
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
[IMPLEMENT] [3.5/8] Checkpoint review... ⏳
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
After every 3-5 completed tasks: invoke `/bmad-checkpoint-preview` (human-in-the-loop walkthrough).
|
|
102
|
-
|
|
103
|
-
Purpose: pause and let the user review progress before continuing.
|
|
104
|
-
|
|
105
|
-
The checkpoint will:
|
|
106
|
-
- Summarize: what was done, which files changed, current tests status
|
|
107
|
-
- Highlight: points of concern, potential issues
|
|
108
|
-
- Ask user: continue / adjust / stop?
|
|
109
|
-
|
|
110
|
-
**Skip checkpoint if** the total plan has fewer than 5 tasks — checkpoint only at the end in that case.
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
[IMPLEMENT] [3.5/8] Checkpoint review... ✅
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Step 4: TDD Cycle (per subagent)
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
[IMPLEMENT] [4/8] TDD cycle — RED → GREEN → REFACTOR... ⏳
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Use `/superpowers:test-driven-development`:
|
|
123
|
-
|
|
124
|
-
For each test case in `06-testcases.md`:
|
|
125
|
-
1. **RED**: Write test → run → MUST FAIL
|
|
126
|
-
2. **GREEN**: Write minimal code → run → MUST PASS
|
|
127
|
-
- ⚠️ **While writing GREEN code** → apply SonarQube rules immediately:
|
|
128
|
-
- Do not create security vulnerabilities
|
|
129
|
-
- No code smells (long method, deep nesting)
|
|
130
|
-
- No duplicated code
|
|
131
|
-
- Null-safe, proper error handling
|
|
132
|
-
3. **REFACTOR**: Clean code, do not change behavior
|
|
133
|
-
- Refactor MUST improve SonarQube metrics, not degrade them
|
|
134
|
-
|
|
135
|
-
Use `/superpowers:executing-plans` — execute plan in order.
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
[IMPLEMENT] [4/8] TDD cycle — RED → GREEN → REFACTOR... ✅
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Step 5: Debug (if needed)
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
[IMPLEMENT] [5/8] Debug (if there are test failures)... ⏳
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Use `/superpowers:systematic-debugging` — when a test does not turn GREEN:
|
|
148
|
-
- Hypothesis → Experiment → Conclusion
|
|
149
|
-
- If it fails 3 times → STOP, escalate
|
|
150
|
-
|
|
151
|
-
**Scope-drift detection:**
|
|
152
|
-
|
|
153
|
-
If during implementation you detect the feature requires CHANGES NOT IN THE SRS:
|
|
154
|
-
1. Invoke `/bmad-correct-course` — assess impact + propose adjustments
|
|
155
|
-
2. If requirements have genuinely changed:
|
|
156
|
-
- STOP implementation
|
|
157
|
-
- Update SRS first via `/sdlc-srs` EDIT mode
|
|
158
|
-
- Re-run `/sdlc-test-design` to generate new test cases
|
|
159
|
-
- Restart Phase 6 from Step 3
|
|
160
|
-
3. If only minor adjustments needed: document the adjustment in `07-impl-plan.md` §Scope Adjustments and continue
|
|
161
|
-
4. If unclear whether scope changed: STOP and present to user — let them decide
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
[IMPLEMENT] [5/8] Debug (if there are test failures)... ✅
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### Step 6: Impact Verification
|
|
168
|
-
|
|
169
|
-
```
|
|
170
|
-
[IMPLEMENT] [6/8] Impact verification via GitNexus... ⏳
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Use GitNexus `impact` — verify no other code is broken.
|
|
174
|
-
Use GitNexus `rename` — safe multi-file refactoring if needed.
|
|
175
|
-
|
|
176
|
-
```
|
|
177
|
-
[IMPLEMENT] [6/8] Impact verification via GitNexus... ✅
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Step 7: Build & Run Verification
|
|
181
|
-
|
|
182
|
-
```
|
|
183
|
-
[IMPLEMENT] [7/8] Build & run verification... ⏳
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
**MANDATORY** — code MUST compile and run successfully before exiting the phase.
|
|
187
|
-
|
|
188
|
-
1. **Compile check**: Build the entire project → MUST have 0 errors
|
|
189
|
-
- Java: `mvn compile` or `gradle build`
|
|
190
|
-
- Node: `npm run build` / `tsc --noEmit`
|
|
191
|
-
- Angular: `ng build`
|
|
192
|
-
- Go: `go build ./...`
|
|
193
|
-
- If FAIL → fix immediately, DO NOT skip
|
|
194
|
-
|
|
195
|
-
2. **Run verification**: Start application → MUST start successfully
|
|
196
|
-
- If the project has `docker-compose.yml` → `docker compose up`
|
|
197
|
-
- If not → use native run command
|
|
198
|
-
- Check health endpoint / startup log OK
|
|
199
|
-
|
|
200
|
-
3. **Environment check**:
|
|
201
|
-
- Detect required runtime (JDK, Node, Python, Go, etc.)
|
|
202
|
-
- If runtime missing → ⚠️ **WARNING**: "Missing {runtime}. Cannot verify build."
|
|
203
|
-
- **Recommend Docker**: "Recommend using Docker to ensure a consistent environment. Create a Dockerfile if one does not exist."
|
|
204
|
-
- If Docker available → prefer building in container
|
|
205
|
-
|
|
206
|
-
4. **Test suite run**: `npm test` / `mvn test` / equivalent → All tests PASS
|
|
207
|
-
|
|
208
|
-
5. **Final SonarQube sweep**: Scan all new code one last time before exiting
|
|
209
|
-
- Confirm both New Code and Overall Code conditions are green per the shared `quality-gate.md` (single source of truth)
|
|
210
|
-
- If FAIL → fix immediately, this is a hard gate
|
|
211
|
-
|
|
212
|
-
⚠️ **DO NOT exit the phase if code does not compile.** This is a hard gate — no exceptions.
|
|
213
|
-
|
|
214
|
-
```
|
|
215
|
-
[IMPLEMENT] [7/8] Build & run verification... ✅
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
## Multi-machine Branching
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
Single repo:
|
|
222
|
-
main → feat/{feature} → feat/{feature}/epic-1 (Subagent A)
|
|
223
|
-
→ feat/{feature}/epic-2 (Subagent B)
|
|
224
|
-
|
|
225
|
-
Multi-repo:
|
|
226
|
-
Subagent A: cd user-service && git checkout -b feat/{feature}
|
|
227
|
-
Subagent B: cd payment-service && git checkout -b feat/{feature}
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## Output
|
|
231
|
-
|
|
232
|
-
- `.vsaf/docs/features/{feature-name}/07-impl-plan.md` — task plan + TDD log
|
|
233
|
-
- Code changes on feature branch
|
|
234
|
-
- All tests GREEN
|
|
235
|
-
- SonarQube metrics PASS (verified during coding)
|
|
236
|
-
|
|
237
|
-
## Phase Exit Protocol
|
|
238
|
-
|
|
239
|
-
In PHASE REPORT:
|
|
240
|
-
- Done: N tasks completed, M tests written, K subagents dispatched
|
|
241
|
-
- Result: all tests PASS/FAIL
|
|
242
|
-
- SonarQube (New Code): {PASS/FAIL vs shared gate} — Issues={N}, Blocker={N}, Critical={N}, Major={N}, Code Smells={N}, Vulns={N}, Hotspots Reviewed={N}%, Duplication={N}%
|
|
243
|
-
- SonarQube (Overall): {PASS/FAIL vs shared gate} — Bugs={N}, Code Smells={N}, Duplication={N}%, ratings={A..E}
|
|
244
|
-
- Output files: `07-impl-plan.md`
|
|
245
|
-
- Code changes: {list files changed}
|
|
246
|
-
- Suggestions: [1] Phase 7 Review (`/sdlc-review`) [2] Save artifacts
|
|
247
|
-
|
|
248
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
249
|
-
|
|
250
|
-
**Notify the user:**
|
|
251
|
-
> Artifacts have been saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
252
|
-
|
|
253
|
-
## Rules
|
|
254
|
-
|
|
255
|
-
- DO NOT write code without a failing test first (#2 TDD)
|
|
256
|
-
- **MANDATORY** use `/superpowers:subagent-driven-development` — do not run sequential
|
|
257
|
-
- **SonarQube rules apply DURING coding** — do not wait for review
|
|
258
|
-
- Follow the Conflict Map — only modify files assigned to your epic
|
|
259
|
-
- 3-strike rule: task fails 3 times → STOP, escalate
|
|
260
|
-
- Impact analysis MUST run before each commit
|
|
261
|
-
- Smart Zone: clear context every 5 tasks (#4)
|
|
262
|
-
- **Code MUST compile successfully** — hard gate, no exceptions
|
|
263
|
-
- **Recommend Docker** if runtime is missing or containerization is not set up
|
|
264
|
-
- ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
|