@luanpdd/kit-mcp 1.35.0 → 1.36.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/bin/cli.js +2 -2
- package/bin/mcp.js +6 -6
- package/bin/ui.js +74 -74
- package/gates/ai-prompt-stability.md +120 -120
- package/gates/budget-description.md +68 -68
- package/gates/confidence.md +29 -29
- package/gates/dependency-check.md +33 -33
- package/gates/dept-cycle-prevention.md +179 -179
- package/gates/golden-signals-coverage.md +133 -133
- package/gates/legacy-refactor-safety.md +178 -178
- package/gates/multi-tenant-rls-coverage.md +102 -102
- package/gates/no-personal-uuid.md +72 -72
- package/gates/obs-agents-mcp-supabase.md +86 -86
- package/gates/obs-skills-frontmatter.md +76 -76
- package/gates/observability-coverage.md +151 -151
- package/gates/omm-no-regression.md +83 -83
- package/gates/postmortem-template-required.md +127 -127
- package/gates/prr-checklist-coverage.md +128 -128
- package/gates/regression.md +32 -32
- package/gates/release-pipeline-policy.md +132 -132
- package/gates/secrets-scan.md +33 -33
- package/gates/service-role-not-in-user-facing.md +113 -113
- package/gates/skill-must-include.md +71 -71
- package/gates/sync-idempotent.md +62 -62
- package/gates/verify-phase-goal.md +34 -34
- package/kit/agents/designer-ui.md +216 -216
- package/kit/agents/workflow-generator.md +537 -167
- package/kit/commands/adicionar-backlog.md +1 -1
- package/kit/commands/adicionar-fase.md +1 -1
- package/kit/commands/adicionar-tarefa.md +1 -1
- package/kit/commands/auditar-observabilidade.md +103 -103
- package/kit/commands/auditar-toil.md +129 -129
- package/kit/commands/caracterizar-prompt.md +195 -195
- package/kit/commands/criar-workflow.md +158 -158
- package/kit/commands/definir-perfil.md +1 -1
- package/kit/commands/definir-slo.md +108 -108
- package/kit/commands/fio.md +1 -1
- package/kit/commands/golden-signals.md +142 -142
- package/kit/commands/instrumentar-fase.md +200 -200
- package/kit/commands/investigar-producao.md +162 -162
- package/kit/commands/observabilidade.md +118 -118
- package/kit/commands/postmortem.md +179 -179
- package/kit/commands/prr.md +205 -205
- package/kit/commands/publicar-rapido.md +207 -207
- package/kit/commands/risk-budget.md +220 -220
- package/kit/commands/sre.md +230 -230
- package/kit/file-manifest.json +424 -424
- package/kit/framework/references/output-style.md +22 -22
- package/kit/hooks/post-apply-migration.js +199 -199
- package/kit/hooks/sidecar-tool-publisher.js +210 -210
- package/kit/skills/_shared-dados-distribuidos/glossary.md +224 -224
- package/kit/skills/_shared-legacy/glossary.md +389 -389
- package/kit/skills/_shared-multi-tenant/glossary.md +186 -186
- package/kit/skills/_shared-observability/glossary.md +396 -396
- package/kit/skills/_shared-sre/glossary.md +712 -712
- package/kit/skills/_shared-supabase/glossary.md +234 -234
- package/kit/skills/blameless-postmortems/SKILL.md +340 -340
- package/kit/skills/burn-rate-alerting/SKILL.md +258 -258
- package/kit/skills/cascading-failures/SKILL.md +311 -311
- package/kit/skills/core-analysis-loop/SKILL.md +352 -352
- package/kit/skills/distributed-tracing/SKILL.md +362 -362
- package/kit/skills/dynamic-workflow-authoring/SKILL.md +327 -223
- package/kit/skills/eliminating-toil/SKILL.md +243 -243
- package/kit/skills/event-based-slos/SKILL.md +296 -296
- package/kit/skills/four-golden-signals/SKILL.md +314 -314
- package/kit/skills/hermetic-builds/SKILL.md +323 -323
- package/kit/skills/legacy-monster-methods/SKILL.md +444 -444
- package/kit/skills/llm-as-dependency/SKILL.md +436 -436
- package/kit/skills/load-shedding-graceful-degradation/SKILL.md +396 -396
- package/kit/skills/observability-driven-development/SKILL.md +315 -315
- package/kit/skills/observability-maturity-model/SKILL.md +222 -222
- package/kit/skills/opentelemetry-standard/SKILL.md +351 -351
- package/kit/skills/production-readiness-review/SKILL.md +305 -305
- package/kit/skills/release-engineering/SKILL.md +367 -367
- package/kit/skills/retry-strategies/SKILL.md +372 -372
- package/kit/skills/sre-risk-management/SKILL.md +221 -221
- package/kit/skills/structured-events/SKILL.md +265 -265
- package/kit/skills/supabase-cron-queues/SKILL.md +275 -275
- package/kit/skills/supabase-database-functions/SKILL.md +332 -332
- package/kit/skills/supabase-declarative-schema/SKILL.md +183 -183
- package/kit/skills/supabase-pgvector-rag/SKILL.md +253 -253
- package/kit/skills/supabase-postgres-style/SKILL.md +138 -138
- package/kit/skills/supabase-storage/SKILL.md +234 -234
- package/kit/skills/telemetry-pipelines/SKILL.md +259 -259
- package/kit/skills/telemetry-sampling/SKILL.md +256 -256
- package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
- package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
- package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
- package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
- package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
- package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
- package/kit/skills/ui-tipografia/SKILL.md +211 -211
- package/package.json +1 -1
- package/src/cli/index.js +1114 -1114
- package/src/cli/render.js +194 -194
- package/src/cli/upgrade-check.js +135 -135
- package/src/core/error-redaction.js +76 -76
- package/src/core/failures.js +153 -153
- package/src/core/gate-runner.js +205 -205
- package/src/core/gates.js +82 -82
- package/src/core/logger.js +170 -170
- package/src/core/manifest-verify.js +174 -174
- package/src/core/metrics.js +268 -268
- package/src/core/notify.js +60 -60
- package/src/core/path-safety.js +141 -141
- package/src/core/replays.js +120 -120
- package/src/core/ui.js +185 -185
- package/src/mcp-server/install.js +149 -149
- package/src/mcp-server/roots.js +124 -124
- package/src/ui/auto-spawn.js +113 -113
- package/src/ui/browser.js +78 -78
- package/src/ui/client.js +130 -130
- package/src/ui/events.js +65 -65
- package/src/ui/lockfile.js +191 -191
- package/src/ui/port.js +67 -67
- package/src/ui/server.js +547 -547
- package/src/ui/wrapper.js +129 -129
|
@@ -1,367 +1,367 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: release-engineering
|
|
3
|
-
description: Use ao desenhar/auditar pipeline de release — deployment philosophy, self-service, policy enforcement, canary, rollback, branching strategy, release invariants. Cap 8 livro Google SRE.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# SRE — Release Engineering
|
|
7
|
-
|
|
8
|
-
## Quando usar
|
|
9
|
-
|
|
10
|
-
LLM carrega esta skill ao desenhar pipeline de deploy ou ao investigar release fragility. Trigger phrases:
|
|
11
|
-
|
|
12
|
-
- "release pipeline", "deploy pipeline"
|
|
13
|
-
- "canary release", "rollback"
|
|
14
|
-
- "branching strategy", "trunk-based development"
|
|
15
|
-
- "deployment philosophy"
|
|
16
|
-
- "policy enforcement"
|
|
17
|
-
- "release engineering"
|
|
18
|
-
- "cap 8 Google SRE"
|
|
19
|
-
|
|
20
|
-
## Regras absolutas
|
|
21
|
-
|
|
22
|
-
- **Release engineering é DISCIPLINA SEPARADA.** Cuida de "código no merge → bits em prod". Não é dev (que produz código), não é SRE clássico (que opera prod). É a ponte.
|
|
23
|
-
- **4 invariantes canônicos (cap 8):**
|
|
24
|
-
1. **Self-service:** engineers deployam sozinhos via CLI/UI (sem aprovação manual SRE)
|
|
25
|
-
2. **High velocity:** deploy ≥ 1×/dia (ideal: cada merge)
|
|
26
|
-
3. **Hermetic builds:** input idêntico → output idêntico
|
|
27
|
-
4. **Policy enforcement:** policies em ferramenta, não em humano
|
|
28
|
-
- **Trunk-based development > GitFlow.** Main sempre deployable. Feature flags para work in progress. Branches longos = harder rollback + merge hell.
|
|
29
|
-
- **Canary release OBRIGATÓRIO em prod.** 1% → 10% → 50% → 100% com SLO check em cada estágio. Bug detectado em 1% afeta < 1% dos users.
|
|
30
|
-
- **Rollback < 5 min, exercitado.** Schema migrations sempre forward-compatible OR reversible. Artefato N-1 preservado.
|
|
31
|
-
- **Config separada de código (12-factor).** Config versionada, audit-able, GitOps. ConfigMaps, env vars, feature flags. NUNCA hardcoded em image.
|
|
32
|
-
- **Continuous build + test + deploy.** Cada commit dispara pipeline. Deploy contínuo (push tag → prod) preferred a continuous delivery (deploy disponível mas manual).
|
|
33
|
-
- **Release pipeline tem audit trail.** Quem deployou, quando, qual commit, qual artefato. Auto-gerado via CI logs + tags + GitHub Releases.
|
|
34
|
-
|
|
35
|
-
## Patterns canônicos
|
|
36
|
-
|
|
37
|
-
### Pattern 1: 4 invariantes canônicos
|
|
38
|
-
|
|
39
|
-
```text
|
|
40
|
-
1. SELF-SERVICE
|
|
41
|
-
============
|
|
42
|
-
ANTI: engineer abre ticket → SRE aprova → SRE deploya
|
|
43
|
-
CERTO: engineer roda `gh workflow run deploy.yml` → workflow valida policies →
|
|
44
|
-
deploy automático
|
|
45
|
-
Implementação: GitHub Actions / GitLab CI / Argo CD com approval rules.
|
|
46
|
-
|
|
47
|
-
2. HIGH VELOCITY
|
|
48
|
-
==============
|
|
49
|
-
Métrica DORA: deployment frequency
|
|
50
|
-
Elite: multiple per day
|
|
51
|
-
High: weekly
|
|
52
|
-
Medium: monthly
|
|
53
|
-
Low: < monthly (problem)
|
|
54
|
-
Implementação: trunk-based + feature flags + small commits + CI fast.
|
|
55
|
-
|
|
56
|
-
3. HERMETIC BUILDS (skill separada)
|
|
57
|
-
=================================
|
|
58
|
-
Mesmo commit + lockfile → mesmo artefato. SLSA Level 3+.
|
|
59
|
-
|
|
60
|
-
4. POLICY ENFORCEMENT
|
|
61
|
-
===================
|
|
62
|
-
Policies em ferramenta, não em humanos:
|
|
63
|
-
- branch protection (no direct push to main)
|
|
64
|
-
- required reviewers (≥ 1 ou ≥ 2 dependendo de criticality)
|
|
65
|
-
- required CI checks (build + test + lint + security scan)
|
|
66
|
-
- signed commits (GPG keys)
|
|
67
|
-
- production deploy só de tagged releases
|
|
68
|
-
Implementação: GitHub branch protection + CODEOWNERS + custom Actions.
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Pattern 2: Trunk-based development workflow
|
|
72
|
-
|
|
73
|
-
```text
|
|
74
|
-
Trunk-based (Google + Facebook + Netflix):
|
|
75
|
-
|
|
76
|
-
main (deployable)
|
|
77
|
-
├── feat/A (24-48h) → merge → DELETE branch
|
|
78
|
-
├── feat/B (24-48h) → merge → DELETE branch
|
|
79
|
-
└── ...
|
|
80
|
-
|
|
81
|
-
Pré-requisitos:
|
|
82
|
-
✓ Feature flags para work in progress (incomplete features hidden)
|
|
83
|
-
✓ CI rápido (≤ 10min) — feedback fast
|
|
84
|
-
✓ Tests forte (> 80% coverage; flaky < 1%)
|
|
85
|
-
✓ Pair programming OU async PR review
|
|
86
|
-
|
|
87
|
-
vs GitFlow:
|
|
88
|
-
- develop branch (3-7 dias)
|
|
89
|
-
- release branch (1-3 dias)
|
|
90
|
-
- hotfix branch (em incident)
|
|
91
|
-
- main reflete prod
|
|
92
|
-
PROBLEMS: merge hell, slow integration, branch divergence
|
|
93
|
-
|
|
94
|
-
Quando preferir GitFlow (raramente):
|
|
95
|
-
- Long release cycles obrigatórios (regulamentação healthcare/finance)
|
|
96
|
-
- Customers need múltiplas versões em paralelo (LTS branches)
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### Pattern 3: Canary release pipeline canônico
|
|
100
|
-
|
|
101
|
-
```yaml
|
|
102
|
-
# GitHub Actions deploy.yml — canary release
|
|
103
|
-
name: Deploy
|
|
104
|
-
|
|
105
|
-
on:
|
|
106
|
-
push:
|
|
107
|
-
tags: ['v*']
|
|
108
|
-
|
|
109
|
-
jobs:
|
|
110
|
-
build:
|
|
111
|
-
runs-on: ubuntu-latest
|
|
112
|
-
steps:
|
|
113
|
-
- uses: actions/checkout@v6
|
|
114
|
-
- run: pnpm install --frozen-lockfile
|
|
115
|
-
- run: pnpm build
|
|
116
|
-
- uses: actions/upload-artifact@v4
|
|
117
|
-
with: { name: dist, path: dist/ }
|
|
118
|
-
|
|
119
|
-
canary-1pct:
|
|
120
|
-
needs: build
|
|
121
|
-
runs-on: ubuntu-latest
|
|
122
|
-
steps:
|
|
123
|
-
- uses: actions/download-artifact@v4
|
|
124
|
-
- run: ./scripts/deploy-canary.sh --percent 1
|
|
125
|
-
- run: sleep 600 # observe por 10 min
|
|
126
|
-
- run: ./scripts/check-slo.sh --window 10m --threshold 99.9
|
|
127
|
-
# Se SLO falhar → workflow falha → human intervention
|
|
128
|
-
|
|
129
|
-
canary-10pct:
|
|
130
|
-
needs: canary-1pct
|
|
131
|
-
runs-on: ubuntu-latest
|
|
132
|
-
steps:
|
|
133
|
-
- run: ./scripts/deploy-canary.sh --percent 10
|
|
134
|
-
- run: sleep 600
|
|
135
|
-
- run: ./scripts/check-slo.sh --window 10m --threshold 99.9
|
|
136
|
-
|
|
137
|
-
canary-50pct:
|
|
138
|
-
needs: canary-10pct
|
|
139
|
-
runs-on: ubuntu-latest
|
|
140
|
-
steps:
|
|
141
|
-
- run: ./scripts/deploy-canary.sh --percent 50
|
|
142
|
-
- run: sleep 600
|
|
143
|
-
- run: ./scripts/check-slo.sh --window 10m --threshold 99.9
|
|
144
|
-
|
|
145
|
-
full-rollout:
|
|
146
|
-
needs: canary-50pct
|
|
147
|
-
runs-on: ubuntu-latest
|
|
148
|
-
steps:
|
|
149
|
-
- run: ./scripts/deploy-full.sh
|
|
150
|
-
- run: sleep 1800 # observe por 30 min
|
|
151
|
-
- run: ./scripts/check-slo.sh --window 30m --threshold 99.9
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
**SLO check em cada stage:** burn rate ≤ baseline × 2 = OK; > 2 = abort + rollback.
|
|
155
|
-
|
|
156
|
-
### Pattern 4: Rollback canônico
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
# PT-BR: rollback workflow
|
|
160
|
-
# Pré-requisito: artefato N-1 preservado (image registry, S3, etc.)
|
|
161
|
-
|
|
162
|
-
# 1. Detectar problema (manual OR auto via SLO burn alert v1.9)
|
|
163
|
-
# 2. Identificar versão atual + anterior
|
|
164
|
-
CURRENT=$(kubectl get deployment app -o jsonpath='{.spec.template.spec.containers[0].image}')
|
|
165
|
-
PREVIOUS=$(./scripts/get-previous-deploy.sh app)
|
|
166
|
-
|
|
167
|
-
# 3. Rollback (1 comando)
|
|
168
|
-
kubectl set image deployment/app app="$PREVIOUS"
|
|
169
|
-
|
|
170
|
-
# 4. Verificar — SLO burn estabilizou?
|
|
171
|
-
./scripts/check-slo.sh --window 5m --threshold 99.9
|
|
172
|
-
|
|
173
|
-
# 5. Audit trail — registrar em incident
|
|
174
|
-
echo "Rollback de $CURRENT para $PREVIOUS at $(date)" >> .planning/incidents/<id>.md
|
|
175
|
-
|
|
176
|
-
# Target: rollback < 5 min, da decisão à observabilidade estabilizada
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**Schema migration considerations:**
|
|
180
|
-
- ADD column nullable + default → forward-compatible (rollback OK)
|
|
181
|
-
- DROP column → NOT-rollback-able (forward-fix required)
|
|
182
|
-
- ALTER column NOT NULL com default → reversible se default preservado
|
|
183
|
-
- Sempre escrever migration UP + DOWN (mesmo que UP forward-only)
|
|
184
|
-
|
|
185
|
-
### Pattern 5: Configuration management (12-factor)
|
|
186
|
-
|
|
187
|
-
```text
|
|
188
|
-
12-factor app princípios canônicos:
|
|
189
|
-
|
|
190
|
-
I. Codebase — single repo per app
|
|
191
|
-
II. Dependencies — explicit (lockfile)
|
|
192
|
-
III. Config — env vars OR ConfigMap (NÃO hardcoded)
|
|
193
|
-
IV. Backing services — attached resources via env
|
|
194
|
-
V. Build/Release/Run — strict separation
|
|
195
|
-
VI. Processes — stateless
|
|
196
|
-
VII. Port binding — self-contained
|
|
197
|
-
VIII. Concurrency — scale via process model
|
|
198
|
-
IX. Disposability — fast startup + graceful shutdown
|
|
199
|
-
X. Dev/prod parity — same code, same DB type, same OS
|
|
200
|
-
XI. Logs — stdout/stderr (não files)
|
|
201
|
-
XII. Admin processes — one-off scripts em mesmo env
|
|
202
|
-
|
|
203
|
-
Implementação Supabase:
|
|
204
|
-
- Edge Function env vars: Deno.env.get('SUPABASE_URL') etc.
|
|
205
|
-
- Secrets via supabase secrets set
|
|
206
|
-
- Config NÃO commitado (tem .env.example, sem .env)
|
|
207
|
-
- Migrations via supabase/migrations (versionado)
|
|
208
|
-
- Feature flags via env OR Supabase row em config table
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
### Pattern 6: Branch protection + CODEOWNERS
|
|
212
|
-
|
|
213
|
-
```yaml
|
|
214
|
-
# .github/CODEOWNERS
|
|
215
|
-
# PT-BR: define quem revisa cada path
|
|
216
|
-
|
|
217
|
-
# Default — qualquer maintainer
|
|
218
|
-
* @luanpdd
|
|
219
|
-
|
|
220
|
-
# Critical paths — exigir aprovação SRE
|
|
221
|
-
/supabase/migrations/ @luanpdd @sre-team
|
|
222
|
-
/src/auth/ @luanpdd @security-team
|
|
223
|
-
/.github/workflows/ @luanpdd @sre-team
|
|
224
|
-
/gates/ @luanpdd
|
|
225
|
-
|
|
226
|
-
# UI changes — designer review
|
|
227
|
-
/src/components/ @luanpdd @design-team
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
```text
|
|
231
|
-
GitHub branch protection rules para `main`:
|
|
232
|
-
✓ Require pull request before merging
|
|
233
|
-
✓ Require approvals: 1 (or 2 for critical)
|
|
234
|
-
✓ Dismiss stale reviews on push
|
|
235
|
-
✓ Require review from CODEOWNERS
|
|
236
|
-
✓ Require status checks: build, test, lint
|
|
237
|
-
✓ Require branches up to date
|
|
238
|
-
✓ Require signed commits
|
|
239
|
-
✓ Restrict who can push: empty (force PR)
|
|
240
|
-
✗ Allow force push: NEVER
|
|
241
|
-
✗ Allow deletions: NEVER
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
### Pattern 7: Audit trail canônico
|
|
245
|
-
|
|
246
|
-
```text
|
|
247
|
-
Cada release tem audit trail completo:
|
|
248
|
-
|
|
249
|
-
1. Commit message (what + why)
|
|
250
|
-
2. PR description (context + breaking changes + migrations)
|
|
251
|
-
3. PR reviewers (who approved)
|
|
252
|
-
4. CI logs (build provenance + test results)
|
|
253
|
-
5. Deploy logs (who triggered, when, which artifact)
|
|
254
|
-
6. GitHub Release (changelog + tagged commit)
|
|
255
|
-
7. Monitoring (SLO/golden signals during/after deploy)
|
|
256
|
-
|
|
257
|
-
Tools:
|
|
258
|
-
- GitHub Releases — auto-generated changelog
|
|
259
|
-
- Sentry/Datadog — track release_id em events
|
|
260
|
-
- Slack/PagerDuty — notification em deploy
|
|
261
|
-
- SLSA attestation — provenance signed
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
## Anti-patterns
|
|
265
|
-
|
|
266
|
-
### ANTI: aprovação humana manual em release
|
|
267
|
-
|
|
268
|
-
```text
|
|
269
|
-
ANTI: cada deploy → SRE checa, aprova, deploya manualmente.
|
|
270
|
-
|
|
271
|
-
PROBLEMA: SRE bottleneck. Deploys raros (1×/semana). Velocity colapsa.
|
|
272
|
-
Toil para SRE.
|
|
273
|
-
|
|
274
|
-
CERTO: policies em ferramenta. Engineer self-deploys. SRE escreve
|
|
275
|
-
guard rails (canary, SLO check), não aprovações ad-hoc.
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### ANTI: deploy de branch local
|
|
279
|
-
|
|
280
|
-
```text
|
|
281
|
-
ANTI: dev faz `kubectl apply` da máquina dele.
|
|
282
|
-
|
|
283
|
-
PROBLEMA: drift entre git e prod. Sem audit trail. Sem CI check.
|
|
284
|
-
Quando precisa rollback, "qual era a versão?".
|
|
285
|
-
|
|
286
|
-
CERTO: deploy SOMENTE de CI. Local push to prod proibido em
|
|
287
|
-
branch protection. Pipeline valida + deploya + audit.
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
### ANTI: rollback "vai dar conta no forward-fix"
|
|
291
|
-
|
|
292
|
-
```text
|
|
293
|
-
ANTI: cultura "nunca rollback". Sempre forward-fix.
|
|
294
|
-
|
|
295
|
-
PROBLEMA: forward-fix sob pressão = mais bugs. Rollback nunca
|
|
296
|
-
exercitado, quando precisa não funciona.
|
|
297
|
-
|
|
298
|
-
CERTO: rollback < 5min em qualquer release, exercitado mensalmente.
|
|
299
|
-
Forward-fix é exception, não default.
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### ANTI: schema migration NOT NULL sem default
|
|
303
|
-
|
|
304
|
-
```text
|
|
305
|
-
ANTI: ALTER TABLE orders ADD COLUMN priority INTEGER NOT NULL;
|
|
306
|
-
|
|
307
|
-
PROBLEMA: migration falha em rows existentes. Rollback custoso.
|
|
308
|
-
Code novo + DB velho = error.
|
|
309
|
-
|
|
310
|
-
CERTO: ADD COLUMN priority INTEGER DEFAULT 0 NOT NULL;
|
|
311
|
-
Forward-compatible (old code ignora; new code usa).
|
|
312
|
-
Rollback de code OK porque DB tem default.
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
### ANTI: feature flag sem expiration
|
|
316
|
-
|
|
317
|
-
```text
|
|
318
|
-
ANTI: flags acumulam, nunca removidas. 50 flags em prod, 30 ativas.
|
|
319
|
-
|
|
320
|
-
PROBLEMA: cognitive load. Combinations untested. Flag Y desligado
|
|
321
|
-
há 6 meses ainda no código (dead code).
|
|
322
|
-
|
|
323
|
-
CERTO: flags têm DATA DE EXPIRAÇÃO. Após launch + 30d safe → REMOVE
|
|
324
|
-
flag (e código do branch perdedor). Cleanup é parte da
|
|
325
|
-
feature, não opcional.
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
### ANTI: hotfix direct push em main
|
|
329
|
-
|
|
330
|
-
```text
|
|
331
|
-
ANTI: incident → dev pushar direto em main "pra ser rápido".
|
|
332
|
-
|
|
333
|
-
PROBLEMA: bypass branch protection. Sem review. Sem CI.
|
|
334
|
-
Pode introduzir novo bug.
|
|
335
|
-
|
|
336
|
-
CERTO: hotfix ainda via PR (mesmo se rápido — 5min review). CI
|
|
337
|
-
roda. Branch protection ativa. Audit trail preserved.
|
|
338
|
-
"Rápido" não é desculpa pra atalhar safety.
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
## Verificação
|
|
342
|
-
|
|
343
|
-
1. Self-service deploy ativo (engineers deployam sozinhos)
|
|
344
|
-
2. Trunk-based OR justified GitFlow exception
|
|
345
|
-
3. Canary release pipeline (1% → 10% → 50% → 100% com SLO check)
|
|
346
|
-
4. Rollback testado mensalmente; < 5 min
|
|
347
|
-
5. Branch protection em main (no direct push, required PR + CI + reviewers)
|
|
348
|
-
6. CODEOWNERS para paths críticos
|
|
349
|
-
7. Lockfile commitado + frozen-install em CI
|
|
350
|
-
8. Build provenance via SLSA
|
|
351
|
-
9. Config 12-factor (env vars, GitOps)
|
|
352
|
-
10. Feature flags com expiration policy
|
|
353
|
-
11. Audit trail completo (commit + PR + CI + deploy + monitoring)
|
|
354
|
-
|
|
355
|
-
---
|
|
356
|
-
|
|
357
|
-
## Ver também
|
|
358
|
-
|
|
359
|
-
- [`_shared-sre/glossary.md`](../_shared-sre/glossary.md) — vocabulário (release pipeline, canary, rollback, etc.)
|
|
360
|
-
- [`hermetic-builds`](../hermetic-builds/SKILL.md) (v1.11) — fundação técnica
|
|
361
|
-
- [`production-readiness-review`](../production-readiness-review/SKILL.md) (v1.10) — PRR Axe 5 (Change Management)
|
|
362
|
-
- [`eliminating-toil`](../eliminating-toil/SKILL.md) (v1.10) — manual deployment é toil clássico
|
|
363
|
-
- [`release-pipeline-auditor`](../../agents/release-pipeline-auditor.md) (v1.11) — agent que audita
|
|
364
|
-
- [`/auditar-release`](../../commands/auditar-release.md) (v1.11) — comando
|
|
365
|
-
- [`/concluir-marco`](../../commands/concluir-marco.md) (framework + patch v1.11) — gate `release-pipeline-policy` opt-in
|
|
366
|
-
|
|
367
|
-
*Material-fonte: Site Reliability Engineering — Beyer/Jones/Petoff/Murphy (Google/O'Reilly, 2016) — Cap 8: "Release Engineering". Plus 12-factor app (12factor.net), DORA metrics.*
|
|
1
|
+
---
|
|
2
|
+
name: release-engineering
|
|
3
|
+
description: Use ao desenhar/auditar pipeline de release — deployment philosophy, self-service, policy enforcement, canary, rollback, branching strategy, release invariants. Cap 8 livro Google SRE.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SRE — Release Engineering
|
|
7
|
+
|
|
8
|
+
## Quando usar
|
|
9
|
+
|
|
10
|
+
LLM carrega esta skill ao desenhar pipeline de deploy ou ao investigar release fragility. Trigger phrases:
|
|
11
|
+
|
|
12
|
+
- "release pipeline", "deploy pipeline"
|
|
13
|
+
- "canary release", "rollback"
|
|
14
|
+
- "branching strategy", "trunk-based development"
|
|
15
|
+
- "deployment philosophy"
|
|
16
|
+
- "policy enforcement"
|
|
17
|
+
- "release engineering"
|
|
18
|
+
- "cap 8 Google SRE"
|
|
19
|
+
|
|
20
|
+
## Regras absolutas
|
|
21
|
+
|
|
22
|
+
- **Release engineering é DISCIPLINA SEPARADA.** Cuida de "código no merge → bits em prod". Não é dev (que produz código), não é SRE clássico (que opera prod). É a ponte.
|
|
23
|
+
- **4 invariantes canônicos (cap 8):**
|
|
24
|
+
1. **Self-service:** engineers deployam sozinhos via CLI/UI (sem aprovação manual SRE)
|
|
25
|
+
2. **High velocity:** deploy ≥ 1×/dia (ideal: cada merge)
|
|
26
|
+
3. **Hermetic builds:** input idêntico → output idêntico
|
|
27
|
+
4. **Policy enforcement:** policies em ferramenta, não em humano
|
|
28
|
+
- **Trunk-based development > GitFlow.** Main sempre deployable. Feature flags para work in progress. Branches longos = harder rollback + merge hell.
|
|
29
|
+
- **Canary release OBRIGATÓRIO em prod.** 1% → 10% → 50% → 100% com SLO check em cada estágio. Bug detectado em 1% afeta < 1% dos users.
|
|
30
|
+
- **Rollback < 5 min, exercitado.** Schema migrations sempre forward-compatible OR reversible. Artefato N-1 preservado.
|
|
31
|
+
- **Config separada de código (12-factor).** Config versionada, audit-able, GitOps. ConfigMaps, env vars, feature flags. NUNCA hardcoded em image.
|
|
32
|
+
- **Continuous build + test + deploy.** Cada commit dispara pipeline. Deploy contínuo (push tag → prod) preferred a continuous delivery (deploy disponível mas manual).
|
|
33
|
+
- **Release pipeline tem audit trail.** Quem deployou, quando, qual commit, qual artefato. Auto-gerado via CI logs + tags + GitHub Releases.
|
|
34
|
+
|
|
35
|
+
## Patterns canônicos
|
|
36
|
+
|
|
37
|
+
### Pattern 1: 4 invariantes canônicos
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
1. SELF-SERVICE
|
|
41
|
+
============
|
|
42
|
+
ANTI: engineer abre ticket → SRE aprova → SRE deploya
|
|
43
|
+
CERTO: engineer roda `gh workflow run deploy.yml` → workflow valida policies →
|
|
44
|
+
deploy automático
|
|
45
|
+
Implementação: GitHub Actions / GitLab CI / Argo CD com approval rules.
|
|
46
|
+
|
|
47
|
+
2. HIGH VELOCITY
|
|
48
|
+
==============
|
|
49
|
+
Métrica DORA: deployment frequency
|
|
50
|
+
Elite: multiple per day
|
|
51
|
+
High: weekly
|
|
52
|
+
Medium: monthly
|
|
53
|
+
Low: < monthly (problem)
|
|
54
|
+
Implementação: trunk-based + feature flags + small commits + CI fast.
|
|
55
|
+
|
|
56
|
+
3. HERMETIC BUILDS (skill separada)
|
|
57
|
+
=================================
|
|
58
|
+
Mesmo commit + lockfile → mesmo artefato. SLSA Level 3+.
|
|
59
|
+
|
|
60
|
+
4. POLICY ENFORCEMENT
|
|
61
|
+
===================
|
|
62
|
+
Policies em ferramenta, não em humanos:
|
|
63
|
+
- branch protection (no direct push to main)
|
|
64
|
+
- required reviewers (≥ 1 ou ≥ 2 dependendo de criticality)
|
|
65
|
+
- required CI checks (build + test + lint + security scan)
|
|
66
|
+
- signed commits (GPG keys)
|
|
67
|
+
- production deploy só de tagged releases
|
|
68
|
+
Implementação: GitHub branch protection + CODEOWNERS + custom Actions.
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Pattern 2: Trunk-based development workflow
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
Trunk-based (Google + Facebook + Netflix):
|
|
75
|
+
|
|
76
|
+
main (deployable)
|
|
77
|
+
├── feat/A (24-48h) → merge → DELETE branch
|
|
78
|
+
├── feat/B (24-48h) → merge → DELETE branch
|
|
79
|
+
└── ...
|
|
80
|
+
|
|
81
|
+
Pré-requisitos:
|
|
82
|
+
✓ Feature flags para work in progress (incomplete features hidden)
|
|
83
|
+
✓ CI rápido (≤ 10min) — feedback fast
|
|
84
|
+
✓ Tests forte (> 80% coverage; flaky < 1%)
|
|
85
|
+
✓ Pair programming OU async PR review
|
|
86
|
+
|
|
87
|
+
vs GitFlow:
|
|
88
|
+
- develop branch (3-7 dias)
|
|
89
|
+
- release branch (1-3 dias)
|
|
90
|
+
- hotfix branch (em incident)
|
|
91
|
+
- main reflete prod
|
|
92
|
+
PROBLEMS: merge hell, slow integration, branch divergence
|
|
93
|
+
|
|
94
|
+
Quando preferir GitFlow (raramente):
|
|
95
|
+
- Long release cycles obrigatórios (regulamentação healthcare/finance)
|
|
96
|
+
- Customers need múltiplas versões em paralelo (LTS branches)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Pattern 3: Canary release pipeline canônico
|
|
100
|
+
|
|
101
|
+
```yaml
|
|
102
|
+
# GitHub Actions deploy.yml — canary release
|
|
103
|
+
name: Deploy
|
|
104
|
+
|
|
105
|
+
on:
|
|
106
|
+
push:
|
|
107
|
+
tags: ['v*']
|
|
108
|
+
|
|
109
|
+
jobs:
|
|
110
|
+
build:
|
|
111
|
+
runs-on: ubuntu-latest
|
|
112
|
+
steps:
|
|
113
|
+
- uses: actions/checkout@v6
|
|
114
|
+
- run: pnpm install --frozen-lockfile
|
|
115
|
+
- run: pnpm build
|
|
116
|
+
- uses: actions/upload-artifact@v4
|
|
117
|
+
with: { name: dist, path: dist/ }
|
|
118
|
+
|
|
119
|
+
canary-1pct:
|
|
120
|
+
needs: build
|
|
121
|
+
runs-on: ubuntu-latest
|
|
122
|
+
steps:
|
|
123
|
+
- uses: actions/download-artifact@v4
|
|
124
|
+
- run: ./scripts/deploy-canary.sh --percent 1
|
|
125
|
+
- run: sleep 600 # observe por 10 min
|
|
126
|
+
- run: ./scripts/check-slo.sh --window 10m --threshold 99.9
|
|
127
|
+
# Se SLO falhar → workflow falha → human intervention
|
|
128
|
+
|
|
129
|
+
canary-10pct:
|
|
130
|
+
needs: canary-1pct
|
|
131
|
+
runs-on: ubuntu-latest
|
|
132
|
+
steps:
|
|
133
|
+
- run: ./scripts/deploy-canary.sh --percent 10
|
|
134
|
+
- run: sleep 600
|
|
135
|
+
- run: ./scripts/check-slo.sh --window 10m --threshold 99.9
|
|
136
|
+
|
|
137
|
+
canary-50pct:
|
|
138
|
+
needs: canary-10pct
|
|
139
|
+
runs-on: ubuntu-latest
|
|
140
|
+
steps:
|
|
141
|
+
- run: ./scripts/deploy-canary.sh --percent 50
|
|
142
|
+
- run: sleep 600
|
|
143
|
+
- run: ./scripts/check-slo.sh --window 10m --threshold 99.9
|
|
144
|
+
|
|
145
|
+
full-rollout:
|
|
146
|
+
needs: canary-50pct
|
|
147
|
+
runs-on: ubuntu-latest
|
|
148
|
+
steps:
|
|
149
|
+
- run: ./scripts/deploy-full.sh
|
|
150
|
+
- run: sleep 1800 # observe por 30 min
|
|
151
|
+
- run: ./scripts/check-slo.sh --window 30m --threshold 99.9
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**SLO check em cada stage:** burn rate ≤ baseline × 2 = OK; > 2 = abort + rollback.
|
|
155
|
+
|
|
156
|
+
### Pattern 4: Rollback canônico
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# PT-BR: rollback workflow
|
|
160
|
+
# Pré-requisito: artefato N-1 preservado (image registry, S3, etc.)
|
|
161
|
+
|
|
162
|
+
# 1. Detectar problema (manual OR auto via SLO burn alert v1.9)
|
|
163
|
+
# 2. Identificar versão atual + anterior
|
|
164
|
+
CURRENT=$(kubectl get deployment app -o jsonpath='{.spec.template.spec.containers[0].image}')
|
|
165
|
+
PREVIOUS=$(./scripts/get-previous-deploy.sh app)
|
|
166
|
+
|
|
167
|
+
# 3. Rollback (1 comando)
|
|
168
|
+
kubectl set image deployment/app app="$PREVIOUS"
|
|
169
|
+
|
|
170
|
+
# 4. Verificar — SLO burn estabilizou?
|
|
171
|
+
./scripts/check-slo.sh --window 5m --threshold 99.9
|
|
172
|
+
|
|
173
|
+
# 5. Audit trail — registrar em incident
|
|
174
|
+
echo "Rollback de $CURRENT para $PREVIOUS at $(date)" >> .planning/incidents/<id>.md
|
|
175
|
+
|
|
176
|
+
# Target: rollback < 5 min, da decisão à observabilidade estabilizada
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**Schema migration considerations:**
|
|
180
|
+
- ADD column nullable + default → forward-compatible (rollback OK)
|
|
181
|
+
- DROP column → NOT-rollback-able (forward-fix required)
|
|
182
|
+
- ALTER column NOT NULL com default → reversible se default preservado
|
|
183
|
+
- Sempre escrever migration UP + DOWN (mesmo que UP forward-only)
|
|
184
|
+
|
|
185
|
+
### Pattern 5: Configuration management (12-factor)
|
|
186
|
+
|
|
187
|
+
```text
|
|
188
|
+
12-factor app princípios canônicos:
|
|
189
|
+
|
|
190
|
+
I. Codebase — single repo per app
|
|
191
|
+
II. Dependencies — explicit (lockfile)
|
|
192
|
+
III. Config — env vars OR ConfigMap (NÃO hardcoded)
|
|
193
|
+
IV. Backing services — attached resources via env
|
|
194
|
+
V. Build/Release/Run — strict separation
|
|
195
|
+
VI. Processes — stateless
|
|
196
|
+
VII. Port binding — self-contained
|
|
197
|
+
VIII. Concurrency — scale via process model
|
|
198
|
+
IX. Disposability — fast startup + graceful shutdown
|
|
199
|
+
X. Dev/prod parity — same code, same DB type, same OS
|
|
200
|
+
XI. Logs — stdout/stderr (não files)
|
|
201
|
+
XII. Admin processes — one-off scripts em mesmo env
|
|
202
|
+
|
|
203
|
+
Implementação Supabase:
|
|
204
|
+
- Edge Function env vars: Deno.env.get('SUPABASE_URL') etc.
|
|
205
|
+
- Secrets via supabase secrets set
|
|
206
|
+
- Config NÃO commitado (tem .env.example, sem .env)
|
|
207
|
+
- Migrations via supabase/migrations (versionado)
|
|
208
|
+
- Feature flags via env OR Supabase row em config table
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Pattern 6: Branch protection + CODEOWNERS
|
|
212
|
+
|
|
213
|
+
```yaml
|
|
214
|
+
# .github/CODEOWNERS
|
|
215
|
+
# PT-BR: define quem revisa cada path
|
|
216
|
+
|
|
217
|
+
# Default — qualquer maintainer
|
|
218
|
+
* @luanpdd
|
|
219
|
+
|
|
220
|
+
# Critical paths — exigir aprovação SRE
|
|
221
|
+
/supabase/migrations/ @luanpdd @sre-team
|
|
222
|
+
/src/auth/ @luanpdd @security-team
|
|
223
|
+
/.github/workflows/ @luanpdd @sre-team
|
|
224
|
+
/gates/ @luanpdd
|
|
225
|
+
|
|
226
|
+
# UI changes — designer review
|
|
227
|
+
/src/components/ @luanpdd @design-team
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
```text
|
|
231
|
+
GitHub branch protection rules para `main`:
|
|
232
|
+
✓ Require pull request before merging
|
|
233
|
+
✓ Require approvals: 1 (or 2 for critical)
|
|
234
|
+
✓ Dismiss stale reviews on push
|
|
235
|
+
✓ Require review from CODEOWNERS
|
|
236
|
+
✓ Require status checks: build, test, lint
|
|
237
|
+
✓ Require branches up to date
|
|
238
|
+
✓ Require signed commits
|
|
239
|
+
✓ Restrict who can push: empty (force PR)
|
|
240
|
+
✗ Allow force push: NEVER
|
|
241
|
+
✗ Allow deletions: NEVER
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Pattern 7: Audit trail canônico
|
|
245
|
+
|
|
246
|
+
```text
|
|
247
|
+
Cada release tem audit trail completo:
|
|
248
|
+
|
|
249
|
+
1. Commit message (what + why)
|
|
250
|
+
2. PR description (context + breaking changes + migrations)
|
|
251
|
+
3. PR reviewers (who approved)
|
|
252
|
+
4. CI logs (build provenance + test results)
|
|
253
|
+
5. Deploy logs (who triggered, when, which artifact)
|
|
254
|
+
6. GitHub Release (changelog + tagged commit)
|
|
255
|
+
7. Monitoring (SLO/golden signals during/after deploy)
|
|
256
|
+
|
|
257
|
+
Tools:
|
|
258
|
+
- GitHub Releases — auto-generated changelog
|
|
259
|
+
- Sentry/Datadog — track release_id em events
|
|
260
|
+
- Slack/PagerDuty — notification em deploy
|
|
261
|
+
- SLSA attestation — provenance signed
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Anti-patterns
|
|
265
|
+
|
|
266
|
+
### ANTI: aprovação humana manual em release
|
|
267
|
+
|
|
268
|
+
```text
|
|
269
|
+
ANTI: cada deploy → SRE checa, aprova, deploya manualmente.
|
|
270
|
+
|
|
271
|
+
PROBLEMA: SRE bottleneck. Deploys raros (1×/semana). Velocity colapsa.
|
|
272
|
+
Toil para SRE.
|
|
273
|
+
|
|
274
|
+
CERTO: policies em ferramenta. Engineer self-deploys. SRE escreve
|
|
275
|
+
guard rails (canary, SLO check), não aprovações ad-hoc.
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### ANTI: deploy de branch local
|
|
279
|
+
|
|
280
|
+
```text
|
|
281
|
+
ANTI: dev faz `kubectl apply` da máquina dele.
|
|
282
|
+
|
|
283
|
+
PROBLEMA: drift entre git e prod. Sem audit trail. Sem CI check.
|
|
284
|
+
Quando precisa rollback, "qual era a versão?".
|
|
285
|
+
|
|
286
|
+
CERTO: deploy SOMENTE de CI. Local push to prod proibido em
|
|
287
|
+
branch protection. Pipeline valida + deploya + audit.
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### ANTI: rollback "vai dar conta no forward-fix"
|
|
291
|
+
|
|
292
|
+
```text
|
|
293
|
+
ANTI: cultura "nunca rollback". Sempre forward-fix.
|
|
294
|
+
|
|
295
|
+
PROBLEMA: forward-fix sob pressão = mais bugs. Rollback nunca
|
|
296
|
+
exercitado, quando precisa não funciona.
|
|
297
|
+
|
|
298
|
+
CERTO: rollback < 5min em qualquer release, exercitado mensalmente.
|
|
299
|
+
Forward-fix é exception, não default.
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### ANTI: schema migration NOT NULL sem default
|
|
303
|
+
|
|
304
|
+
```text
|
|
305
|
+
ANTI: ALTER TABLE orders ADD COLUMN priority INTEGER NOT NULL;
|
|
306
|
+
|
|
307
|
+
PROBLEMA: migration falha em rows existentes. Rollback custoso.
|
|
308
|
+
Code novo + DB velho = error.
|
|
309
|
+
|
|
310
|
+
CERTO: ADD COLUMN priority INTEGER DEFAULT 0 NOT NULL;
|
|
311
|
+
Forward-compatible (old code ignora; new code usa).
|
|
312
|
+
Rollback de code OK porque DB tem default.
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### ANTI: feature flag sem expiration
|
|
316
|
+
|
|
317
|
+
```text
|
|
318
|
+
ANTI: flags acumulam, nunca removidas. 50 flags em prod, 30 ativas.
|
|
319
|
+
|
|
320
|
+
PROBLEMA: cognitive load. Combinations untested. Flag Y desligado
|
|
321
|
+
há 6 meses ainda no código (dead code).
|
|
322
|
+
|
|
323
|
+
CERTO: flags têm DATA DE EXPIRAÇÃO. Após launch + 30d safe → REMOVE
|
|
324
|
+
flag (e código do branch perdedor). Cleanup é parte da
|
|
325
|
+
feature, não opcional.
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### ANTI: hotfix direct push em main
|
|
329
|
+
|
|
330
|
+
```text
|
|
331
|
+
ANTI: incident → dev pushar direto em main "pra ser rápido".
|
|
332
|
+
|
|
333
|
+
PROBLEMA: bypass branch protection. Sem review. Sem CI.
|
|
334
|
+
Pode introduzir novo bug.
|
|
335
|
+
|
|
336
|
+
CERTO: hotfix ainda via PR (mesmo se rápido — 5min review). CI
|
|
337
|
+
roda. Branch protection ativa. Audit trail preserved.
|
|
338
|
+
"Rápido" não é desculpa pra atalhar safety.
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## Verificação
|
|
342
|
+
|
|
343
|
+
1. Self-service deploy ativo (engineers deployam sozinhos)
|
|
344
|
+
2. Trunk-based OR justified GitFlow exception
|
|
345
|
+
3. Canary release pipeline (1% → 10% → 50% → 100% com SLO check)
|
|
346
|
+
4. Rollback testado mensalmente; < 5 min
|
|
347
|
+
5. Branch protection em main (no direct push, required PR + CI + reviewers)
|
|
348
|
+
6. CODEOWNERS para paths críticos
|
|
349
|
+
7. Lockfile commitado + frozen-install em CI
|
|
350
|
+
8. Build provenance via SLSA
|
|
351
|
+
9. Config 12-factor (env vars, GitOps)
|
|
352
|
+
10. Feature flags com expiration policy
|
|
353
|
+
11. Audit trail completo (commit + PR + CI + deploy + monitoring)
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Ver também
|
|
358
|
+
|
|
359
|
+
- [`_shared-sre/glossary.md`](../_shared-sre/glossary.md) — vocabulário (release pipeline, canary, rollback, etc.)
|
|
360
|
+
- [`hermetic-builds`](../hermetic-builds/SKILL.md) (v1.11) — fundação técnica
|
|
361
|
+
- [`production-readiness-review`](../production-readiness-review/SKILL.md) (v1.10) — PRR Axe 5 (Change Management)
|
|
362
|
+
- [`eliminating-toil`](../eliminating-toil/SKILL.md) (v1.10) — manual deployment é toil clássico
|
|
363
|
+
- [`release-pipeline-auditor`](../../agents/release-pipeline-auditor.md) (v1.11) — agent que audita
|
|
364
|
+
- [`/auditar-release`](../../commands/auditar-release.md) (v1.11) — comando
|
|
365
|
+
- [`/concluir-marco`](../../commands/concluir-marco.md) (framework + patch v1.11) — gate `release-pipeline-policy` opt-in
|
|
366
|
+
|
|
367
|
+
*Material-fonte: Site Reliability Engineering — Beyer/Jones/Petoff/Murphy (Google/O'Reilly, 2016) — Cap 8: "Release Engineering". Plus 12-factor app (12factor.net), DORA metrics.*
|