@eltonssouza/development-utility-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/analyst.md +198 -0
- package/.claude/agents/backend-developer.md +126 -0
- package/.claude/agents/brain-keeper.md +229 -0
- package/.claude/agents/code-reviewer.md +181 -0
- package/.claude/agents/database-engineer.md +94 -0
- package/.claude/agents/devops-engineer.md +141 -0
- package/.claude/agents/frontend-developer.md +97 -0
- package/.claude/agents/gate-keeper.md +118 -0
- package/.claude/agents/migrator.md +291 -0
- package/.claude/agents/mobile-developer.md +80 -0
- package/.claude/agents/n8n-specialist.md +94 -0
- package/.claude/agents/product-owner.md +115 -0
- package/.claude/agents/qa-engineer.md +232 -0
- package/.claude/agents/release-engineer.md +204 -0
- package/.claude/agents/scaffold.md +87 -0
- package/.claude/agents/security-engineer.md +199 -0
- package/.claude/agents/sprint-runner.md +44 -0
- package/.claude/agents/stack-resolver.md +84 -0
- package/.claude/agents/tech-lead.md +182 -0
- package/.claude/agents/update-template.md +54 -0
- package/.claude/agents/ux-designer.md +118 -0
- package/.claude/settings.json +44 -0
- package/.claude/skills/README.md +332 -0
- package/.claude/skills/active-project/SKILL.md +129 -0
- package/.claude/skills/api-integration-test/SKILL.md +64 -0
- package/.claude/skills/auto-test-guard/SKILL.md +237 -0
- package/.claude/skills/auto-test-guard/resources/backend-tests.md +20 -0
- package/.claude/skills/auto-test-guard/resources/e2e-tests.md +24 -0
- package/.claude/skills/auto-test-guard/resources/execution-report.md +49 -0
- package/.claude/skills/auto-test-guard/resources/frontend-tests.md +18 -0
- package/.claude/skills/auto-test-guard/resources/initial-setup.md +108 -0
- package/.claude/skills/auto-test-guard/resources/run-suite.md +48 -0
- package/.claude/skills/auto-test-guard/resources/senior-gate.md +19 -0
- package/.claude/skills/brain-keeper/SKILL.md +60 -0
- package/.claude/skills/brain-keeper/obsidian/app.json +9 -0
- package/.claude/skills/brain-keeper/obsidian/appearance.json +4 -0
- package/.claude/skills/brain-keeper/obsidian/core-plugins.json +20 -0
- package/.claude/skills/brain-keeper/obsidian/daily-notes.json +5 -0
- package/.claude/skills/brain-keeper/obsidian/graph.json +32 -0
- package/.claude/skills/brain-keeper/obsidian/snippets/folder-colors.css +90 -0
- package/.claude/skills/brain-keeper/obsidian/templates.json +5 -0
- package/.claude/skills/brain-keeper/templates/README.md +51 -0
- package/.claude/skills/brain-keeper/templates/adr.md +40 -0
- package/.claude/skills/brain-keeper/templates/bug.md +35 -0
- package/.claude/skills/brain-keeper/templates/daily.md +38 -0
- package/.claude/skills/brain-keeper/templates/feature.md +62 -0
- package/.claude/skills/brain-keeper/templates/meeting.md +34 -0
- package/.claude/skills/brain-keeper/templates/tech-debt.md +21 -0
- package/.claude/skills/caveman/SKILL.md +187 -0
- package/.claude/skills/create-stack-pack/SKILL.md +281 -0
- package/.claude/skills/grill-me/SKILL.md +79 -0
- package/.claude/skills/honcho-memory/SKILL.md +207 -0
- package/.claude/skills/honcho-memory/docs/api-endpoints-verified.md +75 -0
- package/.claude/skills/honcho-memory/hooks/on-prompt-submit.js +221 -0
- package/.claude/skills/honcho-memory/hooks/on-stop.js +193 -0
- package/.claude/skills/honcho-memory/lib/honcho-client.js +363 -0
- package/.claude/skills/honcho-memory/lib/memory-injector.js +93 -0
- package/.claude/skills/honcho-memory/package.json +32 -0
- package/.claude/skills/honcho-memory/scripts/cli.js +370 -0
- package/.claude/skills/honcho-memory/scripts/setup.js +109 -0
- package/.claude/skills/honcho-memory/tests/t001-api-endpoints-verified.test.js +89 -0
- package/.claude/skills/honcho-memory/tests/t002-structure.test.js +97 -0
- package/.claude/skills/honcho-memory/tests/t003-honcho-client.test.js +162 -0
- package/.claude/skills/honcho-memory/tests/t004-soft-delete.test.js +259 -0
- package/.claude/skills/honcho-memory/tests/t005-memory-injector.test.js +175 -0
- package/.claude/skills/honcho-memory/tests/t006-on-prompt-submit.test.js +215 -0
- package/.claude/skills/honcho-memory/tests/t007-on-stop.test.js +165 -0
- package/.claude/skills/honcho-memory/tests/t008-cli.test.js +214 -0
- package/.claude/skills/honcho-memory/tests/t009-setup.test.js +232 -0
- package/.claude/skills/honcho-memory/tests/t010-skill-md.test.js +114 -0
- package/.claude/skills/honcho-memory/tests/t011-settings-hooks.test.js +105 -0
- package/.claude/skills/honcho-memory/tests/t012-docs-update.test.js +106 -0
- package/.claude/skills/honcho-memory/tests/t013-smoke-e2e.test.js +90 -0
- package/.claude/skills/pair-debug/SKILL.md +288 -0
- package/.claude/skills/prd-ready-check/SKILL.md +58 -0
- package/.claude/skills/project-manager/SKILL.md +167 -0
- package/.claude/skills/quality-standards/SKILL.md +201 -0
- package/.claude/skills/quick-feature/SKILL.md +264 -0
- package/.claude/skills/run-sprint/SKILL.md +342 -0
- package/.claude/skills/scaffold/SKILL.md +58 -0
- package/.claude/skills/stack-discovery/SKILL.md +159 -0
- package/.claude/skills/test-coverage-auditor/SKILL.md +59 -0
- package/.claude/skills/to-issues/SKILL.md +163 -0
- package/.claude/skills/to-prd/SKILL.md +130 -0
- package/.claude/skills/update-template/SKILL.md +254 -0
- package/.claude/stacks/CODEOWNERS +30 -0
- package/.claude/stacks/README.md +88 -0
- package/.claude/stacks/_template.md +116 -0
- package/.claude/stacks/java/spring-boot-3.md +376 -0
- package/.claude/stacks/java/spring-boot-4.md +438 -0
- package/.claude/stacks/typescript/angular-18.md +420 -0
- package/.claude/stacks/typescript/angular-19.md +397 -0
- package/.claude/stacks/typescript/angular-21.md +494 -0
- package/CLAUDE.md +453 -0
- package/README.md +391 -0
- package/bin/cli.js +773 -0
- package/bin/lib/backup.js +62 -0
- package/bin/lib/detect-stack.js +476 -0
- package/bin/lib/help.js +233 -0
- package/bin/lib/identity.js +108 -0
- package/bin/lib/local-dir.js +69 -0
- package/bin/lib/manifest.js +236 -0
- package/bin/lib/sync-all.js +394 -0
- package/bin/lib/version-check.js +398 -0
- package/dashboard/db.js +199 -0
- package/dashboard/package.json +22 -0
- package/dashboard/public/app.js +709 -0
- package/dashboard/public/content/docs/agents-reference.en.md +911 -0
- package/dashboard/public/content/docs/architecture-overview.en.md +260 -0
- package/dashboard/public/content/docs/autonomy-matrix.en.md +186 -0
- package/dashboard/public/content/docs/git-flow.en.md +525 -0
- package/dashboard/public/content/docs/honcho-memory.en.md +394 -0
- package/dashboard/public/content/docs/hooks-reference.en.md +420 -0
- package/dashboard/public/content/docs/pipeline.en.md +400 -0
- package/dashboard/public/content/docs/quality-gate.en.md +315 -0
- package/dashboard/public/content/docs/skills-reference.en.md +500 -0
- package/dashboard/public/content/docs/stack-rules.en.md +362 -0
- package/dashboard/public/content/docs/troubleshooting.en.md +637 -0
- package/dashboard/public/content/manifest.json +102 -0
- package/dashboard/public/content/manual/backend.en.md +1138 -0
- package/dashboard/public/content/manual/existing-project.en.md +831 -0
- package/dashboard/public/content/manual/frontend.en.md +1065 -0
- package/dashboard/public/content/manual/fullstack.en.md +1508 -0
- package/dashboard/public/content/manual/mobile.en.md +866 -0
- package/dashboard/public/index.html +108 -0
- package/dashboard/public/style.css +610 -0
- package/dashboard/public/vendor/marked.min.js +69 -0
- package/dashboard/rtk.js +143 -0
- package/dashboard/server-app.js +403 -0
- package/dashboard/server.js +104 -0
- package/dashboard/test/sprint1.test.js +406 -0
- package/dashboard/test/sprint2.test.js +571 -0
- package/dashboard/test/sprint3.test.js +560 -0
- package/package.json +33 -0
- package/scripts/hooks/subagent-telemetry.sh +14 -0
- package/scripts/hooks/telemetry-writer.js +250 -0
- package/scripts/latest-versions.json +56 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# Quality Gate Senior+
|
|
2
|
+
|
|
3
|
+
The senior+ gate is **non-negotiable**. A task is only complete after `auto-test-guard` GREEN on **all** items. No exception. `tech-lead` blocks the merge if any item fails.
|
|
4
|
+
|
|
5
|
+
This policy exists because the harness was built to deliver production code, not a fragile MVP. Coverage below threshold, high vulnerability, broken a11y, or poor Lighthouse score do not pass — regardless of deadline pressure. When the gate blocks, the correct path is to **fix the code**, not lower the threshold.
|
|
6
|
+
|
|
7
|
+
## Full threshold table
|
|
8
|
+
|
|
9
|
+
| Metric | Threshold | Tool |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| Backend coverage (lines) | >= **85%** | JaCoCo |
|
|
12
|
+
| Backend coverage (branches) | >= **80%** | JaCoCo |
|
|
13
|
+
| **Backend mutation score** | >= **70%** in `domain/` + `application/` | **PIT (Pitest)** |
|
|
14
|
+
| Frontend coverage (statements) | >= **85%** | Jest --coverage |
|
|
15
|
+
| Frontend coverage (branches) | >= **80%** | Jest --coverage |
|
|
16
|
+
| SpotBugs | 0 CRITICAL, 0 HIGH | SpotBugs Maven plugin |
|
|
17
|
+
| SonarLint/SonarQube (if configured) | 0 CRITICAL, 0 HIGH, 0 unreviewed hotspot | Sonar |
|
|
18
|
+
| OWASP dependency-check | 0 CVE with CVSS >= 7.0 | OWASP DC plugin |
|
|
19
|
+
| npm audit | 0 HIGH, 0 CRITICAL | `npm audit --audit-level=high` |
|
|
20
|
+
| ESLint frontend | 0 errors, 0 warnings on new code | `eslint --max-warnings 0` |
|
|
21
|
+
| Playwright E2E | 100% green, critical flows covered | Playwright |
|
|
22
|
+
| Browser console in E2E | 0 errors | Chrome MCP |
|
|
23
|
+
| **A11y violations (component)** | 0 `serious` / 0 `critical` | jest-axe |
|
|
24
|
+
| **A11y violations (E2E)** | 0 `serious` / 0 `critical` | @axe-core/playwright |
|
|
25
|
+
| **Performance score (Lighthouse)** | >= **0.80** (median of 3 runs) | @lhci/cli |
|
|
26
|
+
| **LCP (Largest Contentful Paint)** | <= **2500ms** | @lhci/cli |
|
|
27
|
+
| **CLS (Cumulative Layout Shift)** | <= **0.1** | @lhci/cli |
|
|
28
|
+
| **TBT (Total Blocking Time)** | <= **300ms** | @lhci/cli |
|
|
29
|
+
| **Testing pyramid ratio (E2E)** | <= **30%** of total (hard-fail above; ideal <= 15%) | `auto-test-guard` count |
|
|
30
|
+
|
|
31
|
+
## How to run each validation
|
|
32
|
+
|
|
33
|
+
The commands below are run automatically by `gate-keeper`; they are documented here so devs can reproduce locally before the gate.
|
|
34
|
+
|
|
35
|
+
### Backend (Java + Spring Boot)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Unit tests + JaCoCo coverage
|
|
39
|
+
./mvnw test
|
|
40
|
+
|
|
41
|
+
# Mutation testing (PIT) — enable pitest profile
|
|
42
|
+
./mvnw verify -Ppitest
|
|
43
|
+
|
|
44
|
+
# SpotBugs static analysis
|
|
45
|
+
./mvnw spotbugs:check
|
|
46
|
+
|
|
47
|
+
# OWASP dependency audit
|
|
48
|
+
./mvnw dependency-check:check
|
|
49
|
+
|
|
50
|
+
# Sonar (if configured)
|
|
51
|
+
./mvnw verify sonar:sonar -Dsonar.host.url=<url>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Frontend (Angular)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Jest with coverage
|
|
58
|
+
npm test -- --coverage
|
|
59
|
+
|
|
60
|
+
# Dependency audit
|
|
61
|
+
npm audit --audit-level=high
|
|
62
|
+
|
|
63
|
+
# ESLint with no warnings
|
|
64
|
+
npx eslint src --max-warnings 0
|
|
65
|
+
|
|
66
|
+
# Playwright E2E
|
|
67
|
+
npx playwright test
|
|
68
|
+
|
|
69
|
+
# Lighthouse CI
|
|
70
|
+
npx lhci autorun
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Test pyramid
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Count done by gate-keeper
|
|
77
|
+
# total_e2e / (total_unit + total_integration + total_e2e) <= 0.30
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Minimal configuration
|
|
81
|
+
|
|
82
|
+
Projects generated by the harness already come configured. For legacy projects adopted (`update-template`), check the following.
|
|
83
|
+
|
|
84
|
+
### pom.xml — JaCoCo + PIT + SpotBugs + OWASP
|
|
85
|
+
|
|
86
|
+
```xml
|
|
87
|
+
<!-- JaCoCo -->
|
|
88
|
+
<plugin>
|
|
89
|
+
<groupId>org.jacoco</groupId>
|
|
90
|
+
<artifactId>jacoco-maven-plugin</artifactId>
|
|
91
|
+
<executions>
|
|
92
|
+
<execution>
|
|
93
|
+
<goals><goal>prepare-agent</goal></goals>
|
|
94
|
+
</execution>
|
|
95
|
+
<execution>
|
|
96
|
+
<id>report</id>
|
|
97
|
+
<phase>verify</phase>
|
|
98
|
+
<goals><goal>report</goal></goals>
|
|
99
|
+
</execution>
|
|
100
|
+
<execution>
|
|
101
|
+
<id>jacoco-check</id>
|
|
102
|
+
<goals><goal>check</goal></goals>
|
|
103
|
+
<configuration>
|
|
104
|
+
<rules>
|
|
105
|
+
<rule>
|
|
106
|
+
<element>BUNDLE</element>
|
|
107
|
+
<limits>
|
|
108
|
+
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.85</minimum></limit>
|
|
109
|
+
<limit><counter>BRANCH</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit>
|
|
110
|
+
</limits>
|
|
111
|
+
</rule>
|
|
112
|
+
</rules>
|
|
113
|
+
</configuration>
|
|
114
|
+
</execution>
|
|
115
|
+
</executions>
|
|
116
|
+
</plugin>
|
|
117
|
+
|
|
118
|
+
<!-- PIT (mutation testing) -->
|
|
119
|
+
<profile>
|
|
120
|
+
<id>pitest</id>
|
|
121
|
+
<build>
|
|
122
|
+
<plugins>
|
|
123
|
+
<plugin>
|
|
124
|
+
<groupId>org.pitest</groupId>
|
|
125
|
+
<artifactId>pitest-maven</artifactId>
|
|
126
|
+
<configuration>
|
|
127
|
+
<targetClasses>
|
|
128
|
+
<param>com.company.project.domain.*</param>
|
|
129
|
+
<param>com.company.project.application.*</param>
|
|
130
|
+
</targetClasses>
|
|
131
|
+
<mutationThreshold>70</mutationThreshold>
|
|
132
|
+
<outputFormats><param>HTML</param><param>XML</param></outputFormats>
|
|
133
|
+
</configuration>
|
|
134
|
+
<executions>
|
|
135
|
+
<execution>
|
|
136
|
+
<goals><goal>mutationCoverage</goal></goals>
|
|
137
|
+
</execution>
|
|
138
|
+
</executions>
|
|
139
|
+
</plugin>
|
|
140
|
+
</plugins>
|
|
141
|
+
</build>
|
|
142
|
+
</profile>
|
|
143
|
+
|
|
144
|
+
<!-- SpotBugs -->
|
|
145
|
+
<plugin>
|
|
146
|
+
<groupId>com.github.spotbugs</groupId>
|
|
147
|
+
<artifactId>spotbugs-maven-plugin</artifactId>
|
|
148
|
+
<configuration>
|
|
149
|
+
<effort>Max</effort>
|
|
150
|
+
<threshold>High</threshold>
|
|
151
|
+
<failOnError>true</failOnError>
|
|
152
|
+
</configuration>
|
|
153
|
+
</plugin>
|
|
154
|
+
|
|
155
|
+
<!-- OWASP dependency-check -->
|
|
156
|
+
<plugin>
|
|
157
|
+
<groupId>org.owasp</groupId>
|
|
158
|
+
<artifactId>dependency-check-maven</artifactId>
|
|
159
|
+
<configuration>
|
|
160
|
+
<failBuildOnCVSS>7</failBuildOnCVSS>
|
|
161
|
+
</configuration>
|
|
162
|
+
</plugin>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Jest config (jest.config.ts)
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
export default {
|
|
169
|
+
coverageThreshold: {
|
|
170
|
+
global: {
|
|
171
|
+
statements: 85,
|
|
172
|
+
branches: 80,
|
|
173
|
+
functions: 85,
|
|
174
|
+
lines: 85,
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
collectCoverageFrom: [
|
|
178
|
+
'src/**/*.ts',
|
|
179
|
+
'!src/**/*.spec.ts',
|
|
180
|
+
'!src/main.ts',
|
|
181
|
+
],
|
|
182
|
+
};
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Playwright + axe-core (playwright.config.ts)
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
import { defineConfig } from '@playwright/test';
|
|
189
|
+
|
|
190
|
+
export default defineConfig({
|
|
191
|
+
reporter: [['html'], ['list']],
|
|
192
|
+
use: {
|
|
193
|
+
baseURL: 'http://localhost:4200',
|
|
194
|
+
trace: 'on-first-retry',
|
|
195
|
+
},
|
|
196
|
+
projects: [
|
|
197
|
+
{ name: 'chromium', use: { browserName: 'chromium' } },
|
|
198
|
+
],
|
|
199
|
+
});
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Lighthouse CI (lighthouserc.json)
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"ci": {
|
|
207
|
+
"collect": {
|
|
208
|
+
"url": ["http://localhost:4200"],
|
|
209
|
+
"numberOfRuns": 3
|
|
210
|
+
},
|
|
211
|
+
"assert": {
|
|
212
|
+
"assertions": {
|
|
213
|
+
"categories:performance": ["error", { "minScore": 0.80 }],
|
|
214
|
+
"largest-contentful-paint": ["error", { "maxNumericValue": 2500 }],
|
|
215
|
+
"cumulative-layout-shift": ["error", { "maxNumericValue": 0.1 }],
|
|
216
|
+
"total-blocking-time": ["error", { "maxNumericValue": 300 }]
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Test pyramid
|
|
224
|
+
|
|
225
|
+
The pyramid is a structural rule, not just a metric. Hard-fail if E2E exceeds 30% of total.
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
/\
|
|
229
|
+
/ \
|
|
230
|
+
/E2E \ <= 30% of total (ideal <= 15%)
|
|
231
|
+
/------\
|
|
232
|
+
/ \
|
|
233
|
+
/Integration\ ~20-30%
|
|
234
|
+
/------------\
|
|
235
|
+
/ \
|
|
236
|
+
/ Unit \ ~50-70%
|
|
237
|
+
/------------------\
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Why this ratio?
|
|
241
|
+
- **Unit**: fast, isolated, great coverage of domain rules.
|
|
242
|
+
- **Integration**: validates boundaries (HTTP, DB, queue). Slower than unit, cheaper than E2E.
|
|
243
|
+
- **E2E**: expensive, fragile, validates user flow end-to-end. Use sparingly.
|
|
244
|
+
|
|
245
|
+
When E2E exceeds 30%, it usually means domain rules are being tested via UI clicks — anti-pattern. The fix is to move logic to a domain service and cover with unit tests.
|
|
246
|
+
|
|
247
|
+
## Blocking flow
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
sprint-runner finishes task
|
|
251
|
+
│
|
|
252
|
+
▼
|
|
253
|
+
gate-keeper runs all checks
|
|
254
|
+
│
|
|
255
|
+
├─ all GREEN ──────────────► code-reviewer ──► tech-lead ──► merge
|
|
256
|
+
│
|
|
257
|
+
└─ any failure ─────────────► block + return to responsible task
|
|
258
|
+
│
|
|
259
|
+
▼
|
|
260
|
+
developer fixes
|
|
261
|
+
│
|
|
262
|
+
▼
|
|
263
|
+
gate-keeper runs again
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
At the end of the PLAN, before the final merge, `prd-ready-check` re-runs the full gate + adds:
|
|
267
|
+
- Zero `@Disabled` / `.skip()` in tests
|
|
268
|
+
- Zero `// TODO` in production code
|
|
269
|
+
- Zero hardcoded secrets (regex against common patterns + ggshield if available)
|
|
270
|
+
- ADRs referenced by the PLAN have Status: Accepted
|
|
271
|
+
|
|
272
|
+
## How to request an exception
|
|
273
|
+
|
|
274
|
+
**You do not request one.** There is no exception to the senior+ gate.
|
|
275
|
+
|
|
276
|
+
What exists is the path of **documented technical debt**:
|
|
277
|
+
|
|
278
|
+
1. If a threshold genuinely cannot be reached this sprint (e.g. external legacy lib with no way to mock), `tech-lead` creates an entry in `docs/brain/tech-debt.md` with:
|
|
279
|
+
- Threshold that fell below
|
|
280
|
+
- Technical reason
|
|
281
|
+
- Recovery plan (sprint, owner)
|
|
282
|
+
- Risk explicitly accepted
|
|
283
|
+
2. An ADR is created documenting the temporary exception.
|
|
284
|
+
3. Even so, the gate **runs** — the exception shows in the report as "P0 deferred".
|
|
285
|
+
|
|
286
|
+
Without an ADR + tech-debt entry, no exception. `gate-keeper` has no key to open the door.
|
|
287
|
+
|
|
288
|
+
## ADR references
|
|
289
|
+
|
|
290
|
+
- **ADR-007**: a11y + Lighthouse + test pyramid thresholds.
|
|
291
|
+
- **ADR-008**: standard senior+ flow (V5.18.0+).
|
|
292
|
+
|
|
293
|
+
Both live in the harness `docs/decisions/` and are copied to new projects via scaffold.
|
|
294
|
+
|
|
295
|
+
## Standard senior+ flow
|
|
296
|
+
|
|
297
|
+
Summary of what `gate-keeper` enforces, in order:
|
|
298
|
+
|
|
299
|
+
1. `product-owner` decides requirements.
|
|
300
|
+
2. `analyst` produces PLAN_*.md with goal-ready DoD.
|
|
301
|
+
3. `architect` proposes ADR when there is a macro decision; `tech-lead` approves.
|
|
302
|
+
4. `sprint-runner` executes Sprint N delegating to `backend-developer` + `frontend-developer` + `database-engineer` in parallel; `qa-engineer` writes tests.
|
|
303
|
+
5. `gate-keeper` generates missing tests + runs the full senior+ gate (coverage, mutation, a11y, Lighthouse, pyramid).
|
|
304
|
+
6. `code-reviewer` does initial review.
|
|
305
|
+
7. `tech-lead` does final review → approves merge OR returns.
|
|
306
|
+
|
|
307
|
+
**Human never interrupted** — except in the 4 PO cases or 3 TL cases (see [Autonomy matrix](autonomy-matrix)).
|
|
308
|
+
|
|
309
|
+
## Cross-references
|
|
310
|
+
|
|
311
|
+
- [Pipeline](pipeline) — where the gate runs in the end-to-end flow
|
|
312
|
+
- [Agents reference](agents-reference) — role of `gate-keeper`, `qa-engineer`, `tech-lead`
|
|
313
|
+
- [Stack rules](stack-rules) — test conventions per stack
|
|
314
|
+
- [Architecture overview](architecture-overview) — macro model
|
|
315
|
+
- [Autonomy matrix](autonomy-matrix) — authority of `gate-keeper` to block without human
|