@luanpdd/kit-mcp 1.33.0 → 1.34.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/LICENSE +21 -21
- package/README.md +168 -168
- package/gates/agent-no-recursive-dispatch.md +84 -84
- package/kit/COMANDOS.md +138 -138
- package/kit/COMPATIBILITY.md +70 -70
- package/kit/README.md +76 -76
- package/kit/agents/advisor-researcher.md +109 -109
- package/kit/agents/ai-mutation-tester.md +289 -289
- package/kit/agents/assumptions-analyzer.md +110 -110
- package/kit/agents/audit-log-implementer.md +314 -314
- package/kit/agents/auditor-consistencia-isolamento.md +414 -414
- package/kit/agents/b2b-saas-architect.md +157 -157
- package/kit/agents/burn-rate-forecaster.md +153 -153
- package/kit/agents/cascading-failures-auditor.md +299 -299
- package/kit/agents/codebase-mapper.md +769 -769
- package/kit/agents/crm-pipeline-implementer.md +257 -257
- package/kit/agents/debugger.md +814 -814
- package/kit/agents/designer-ui.md +216 -216
- package/kit/agents/detector-tenant-quente.md +338 -338
- package/kit/agents/evolution-go-integrator.md +201 -201
- package/kit/agents/example-reviewer.md +22 -22
- package/kit/agents/executor.md +565 -565
- package/kit/agents/golden-signals-instrumenter.md +232 -232
- package/kit/agents/incident-investigator.md +238 -238
- package/kit/agents/integration-checker.md +203 -203
- package/kit/agents/invite-flow-implementer.md +190 -190
- package/kit/agents/legacy-characterizer.md +369 -369
- package/kit/agents/lgpd-compliance-auditor.md +296 -296
- package/kit/agents/load-shedding-instrumenter.md +290 -290
- package/kit/agents/multi-tenant-isolation-auditor.md +254 -254
- package/kit/agents/multi-tenant-rls-writer.md +341 -341
- package/kit/agents/nyquist-auditor.md +181 -181
- package/kit/agents/observability-coverage-auditor.md +316 -316
- package/kit/agents/observability-instrumenter.md +191 -191
- package/kit/agents/omm-auditor.md +291 -291
- package/kit/agents/org-onboarding-implementer.md +224 -224
- package/kit/agents/payload-capture-instrumenter.md +274 -274
- package/kit/agents/phase-researcher.md +697 -697
- package/kit/agents/plan-checker.md +275 -275
- package/kit/agents/planner.md +923 -923
- package/kit/agents/postmortem-writer.md +273 -273
- package/kit/agents/project-researcher.md +653 -653
- package/kit/agents/prr-conductor.md +287 -287
- package/kit/agents/refactor-safety-auditor.md +405 -405
- package/kit/agents/release-pipeline-auditor.md +364 -364
- package/kit/agents/research-synthesizer.md +246 -246
- package/kit/agents/roadmapper.md +678 -678
- package/kit/agents/schema-checker.md +160 -160
- package/kit/agents/seam-finder.md +360 -360
- package/kit/agents/shotgun-surgery-detector.md +350 -350
- package/kit/agents/slo-engineer.md +217 -217
- package/kit/agents/storytelling-analyst.md +300 -300
- package/kit/agents/supabase-architect.md +249 -249
- package/kit/agents/supabase-auth-bootstrapper.md +400 -400
- package/kit/agents/supabase-auth-hook-writer.md +418 -418
- package/kit/agents/supabase-branching-architect.md +563 -563
- package/kit/agents/supabase-cicd-pipeline-implementer.md +778 -778
- package/kit/agents/supabase-column-privileges-writer.md +400 -400
- package/kit/agents/supabase-edge-fn-tester.md +288 -288
- package/kit/agents/supabase-edge-fn-writer.md +341 -341
- package/kit/agents/supabase-mfa-implementer.md +439 -439
- package/kit/agents/supabase-migration-writer.md +386 -386
- package/kit/agents/supabase-oauth-server-implementer.md +507 -507
- package/kit/agents/supabase-rbac-implementer.md +393 -393
- package/kit/agents/supabase-realtime-implementer.md +364 -364
- package/kit/agents/supabase-rls-hardener.md +522 -522
- package/kit/agents/supabase-rls-writer.md +324 -324
- package/kit/agents/supabase-roles-implementer.md +356 -356
- package/kit/agents/supabase-social-auth-implementer.md +451 -451
- package/kit/agents/supabase-sso-saml-architect.md +549 -549
- package/kit/agents/supabase-storage-implementer.md +407 -407
- package/kit/agents/super-admin-implementer.md +282 -282
- package/kit/agents/toil-auditor.md +268 -268
- package/kit/agents/ui-auditor.md +438 -438
- package/kit/agents/ui-checker.md +305 -305
- package/kit/agents/ui-researcher.md +356 -356
- package/kit/agents/user-profiler.md +176 -176
- package/kit/agents/validador-evolucao-schema.md +336 -336
- package/kit/agents/verifier.md +729 -729
- package/kit/commands/adicionar-backlog.md +75 -75
- package/kit/commands/adicionar-fase.md +42 -42
- package/kit/commands/adicionar-tarefa.md +45 -45
- package/kit/commands/adicionar-testes.md +41 -41
- package/kit/commands/ajuda.md +21 -21
- package/kit/commands/atualizar.md +37 -37
- package/kit/commands/auditar-cascading.md +111 -111
- package/kit/commands/auditar-marco.md +179 -179
- package/kit/commands/auditar-observabilidade-cobertura-workflow.md +121 -0
- package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
- package/kit/commands/auditar-refactor.md +219 -219
- package/kit/commands/auditar-release.md +109 -109
- package/kit/commands/auditar-uat.md +23 -23
- package/kit/commands/autonomo.md +40 -40
- package/kit/commands/branch-pr.md +24 -24
- package/kit/commands/burn-rate-status.md +408 -408
- package/kit/commands/capturar-payloads.md +193 -193
- package/kit/commands/caracterizar.md +212 -212
- package/kit/commands/concluir-marco.md +247 -247
- package/kit/commands/configuracoes.md +36 -36
- package/kit/commands/dados-distribuidos.md +188 -188
- package/kit/commands/definir-perfil.md +10 -10
- package/kit/commands/depurar.md +190 -190
- package/kit/commands/detectar-duplicacao.md +197 -197
- package/kit/commands/discutir-fase.md +131 -131
- package/kit/commands/encontrar-seams.md +136 -136
- package/kit/commands/entrar-discord.md +17 -17
- package/kit/commands/estatisticas.md +18 -18
- package/kit/commands/example-greeting.md +33 -33
- package/kit/commands/executar-fase.md +58 -58
- package/kit/commands/expresso.md +56 -56
- package/kit/commands/fase-ui.md +34 -34
- package/kit/commands/fazer.md +57 -57
- package/kit/commands/fio.md +125 -125
- package/kit/commands/fluxos-trabalho.md +64 -64
- package/kit/commands/forense.md +176 -176
- package/kit/commands/gerenciador.md +38 -38
- package/kit/commands/inserir-fase.md +31 -31
- package/kit/commands/legacy.md +263 -263
- package/kit/commands/limpeza.md +17 -17
- package/kit/commands/listar-hipoteses-fase.md +45 -45
- package/kit/commands/listar-workspaces.md +18 -18
- package/kit/commands/load-shedding.md +117 -117
- package/kit/commands/mapear-codebase.md +70 -70
- package/kit/commands/multi-tenant.md +163 -163
- package/kit/commands/nota.md +33 -33
- package/kit/commands/novo-marco.md +43 -43
- package/kit/commands/novo-projeto.md +41 -41
- package/kit/commands/novo-workspace.md +43 -43
- package/kit/commands/pausar-trabalho.md +37 -37
- package/kit/commands/perfil-usuario.md +45 -45
- package/kit/commands/pesquisar-fase.md +195 -195
- package/kit/commands/planejar-fase.md +67 -67
- package/kit/commands/planejar-lacunas.md +33 -33
- package/kit/commands/plantar-ideia.md +25 -25
- package/kit/commands/progresso.md +24 -24
- package/kit/commands/proximo.md +30 -30
- package/kit/commands/publicar.md +490 -490
- package/kit/commands/rapido.md +35 -35
- package/kit/commands/reaplicar-patches.md +124 -124
- package/kit/commands/refactor-seguro.md +321 -321
- package/kit/commands/relatorio-sessao.md +19 -19
- package/kit/commands/remover-fase.md +31 -31
- package/kit/commands/remover-workspace.md +26 -26
- package/kit/commands/resumo-marco.md +50 -50
- package/kit/commands/retomar-trabalho.md +40 -40
- package/kit/commands/revisar-backlog.md +60 -60
- package/kit/commands/revisar-ui.md +32 -32
- package/kit/commands/revisar.md +37 -37
- package/kit/commands/saude.md +21 -21
- package/kit/commands/setup-notion.md +93 -93
- package/kit/commands/storytelling.md +179 -179
- package/kit/commands/supabase.md +238 -238
- package/kit/commands/sync-main.md +68 -68
- package/kit/commands/validar-fase.md +35 -35
- package/kit/commands/verificar-tarefas.md +44 -44
- package/kit/commands/verificar-trabalho.md +64 -64
- package/kit/file-manifest.json +13 -11
- package/kit/framework/bin/lib/commands.cjs +959 -959
- package/kit/framework/bin/lib/config.cjs +442 -442
- package/kit/framework/bin/lib/core.cjs +1230 -1230
- package/kit/framework/bin/lib/frontmatter.cjs +336 -336
- package/kit/framework/bin/lib/init.cjs +1442 -1442
- package/kit/framework/bin/lib/milestone.cjs +252 -252
- package/kit/framework/bin/lib/model-profiles.cjs +68 -68
- package/kit/framework/bin/lib/phase.cjs +888 -888
- package/kit/framework/bin/lib/profile-output.cjs +952 -952
- package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
- package/kit/framework/bin/lib/roadmap.cjs +329 -329
- package/kit/framework/bin/lib/security.cjs +382 -382
- package/kit/framework/bin/lib/state.cjs +1031 -1031
- package/kit/framework/bin/lib/template.cjs +222 -222
- package/kit/framework/bin/lib/uat.cjs +282 -282
- package/kit/framework/bin/lib/verify.cjs +888 -888
- package/kit/framework/bin/lib/workstream.cjs +491 -491
- package/kit/framework/bin/tools.cjs +918 -918
- package/kit/framework/commands/workstreams.md +63 -63
- package/kit/framework/references/checkpoints.md +778 -778
- package/kit/framework/references/continuation-format.md +249 -249
- package/kit/framework/references/decimal-phase-calculation.md +64 -64
- package/kit/framework/references/git-integration.md +295 -295
- package/kit/framework/references/git-planning-commit.md +38 -38
- package/kit/framework/references/model-profile-resolution.md +36 -36
- package/kit/framework/references/model-profiles.md +139 -139
- package/kit/framework/references/phase-argument-parsing.md +61 -61
- package/kit/framework/references/planning-config.md +202 -202
- package/kit/framework/references/questioning.md +162 -162
- package/kit/framework/references/tdd.md +263 -263
- package/kit/framework/references/ui-brand.md +160 -160
- package/kit/framework/references/user-profiling.md +657 -657
- package/kit/framework/references/verification-patterns.md +612 -612
- package/kit/framework/references/workstream-flag.md +58 -58
- package/kit/framework/templates/DEBUG.md +164 -164
- package/kit/framework/templates/UAT.md +265 -265
- package/kit/framework/templates/UI-SPEC.md +100 -100
- package/kit/framework/templates/VALIDATION.md +76 -76
- package/kit/framework/templates/claude-md.md +122 -122
- package/kit/framework/templates/codebase/architecture.md +185 -185
- package/kit/framework/templates/codebase/concerns.md +205 -205
- package/kit/framework/templates/codebase/conventions.md +204 -204
- package/kit/framework/templates/codebase/integrations.md +192 -192
- package/kit/framework/templates/codebase/stack.md +158 -158
- package/kit/framework/templates/codebase/structure.md +199 -199
- package/kit/framework/templates/codebase/testing.md +301 -301
- package/kit/framework/templates/config.json +44 -44
- package/kit/framework/templates/context.md +352 -352
- package/kit/framework/templates/continue-here.md +78 -78
- package/kit/framework/templates/copilot-instructions.md +7 -7
- package/kit/framework/templates/debug-subagent-prompt.md +91 -91
- package/kit/framework/templates/dev-preferences.md +20 -20
- package/kit/framework/templates/discovery.md +146 -146
- package/kit/framework/templates/discussion-log.md +63 -63
- package/kit/framework/templates/milestone-archive.md +123 -123
- package/kit/framework/templates/milestone.md +115 -115
- package/kit/framework/templates/phase-prompt.md +610 -610
- package/kit/framework/templates/planner-subagent-prompt.md +117 -117
- package/kit/framework/templates/project.md +186 -186
- package/kit/framework/templates/requirements.md +231 -231
- package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
- package/kit/framework/templates/research-project/FEATURES.md +147 -147
- package/kit/framework/templates/research-project/PITFALLS.md +200 -200
- package/kit/framework/templates/research-project/STACK.md +120 -120
- package/kit/framework/templates/research-project/SUMMARY.md +170 -170
- package/kit/framework/templates/research.md +419 -419
- package/kit/framework/templates/retrospective.md +54 -54
- package/kit/framework/templates/roadmap.md +202 -202
- package/kit/framework/templates/state.md +176 -176
- package/kit/framework/templates/summary-complex.md +59 -59
- package/kit/framework/templates/summary-minimal.md +41 -41
- package/kit/framework/templates/summary-standard.md +48 -48
- package/kit/framework/templates/summary.md +209 -209
- package/kit/framework/templates/user-profile.md +146 -146
- package/kit/framework/templates/user-setup.md +256 -256
- package/kit/framework/templates/verification-report.md +258 -258
- package/kit/framework/workflows/add-phase.md +112 -112
- package/kit/framework/workflows/add-tests.md +351 -351
- package/kit/framework/workflows/add-todo.md +158 -158
- package/kit/framework/workflows/audit-milestone.md +340 -340
- package/kit/framework/workflows/audit-uat.md +109 -109
- package/kit/framework/workflows/autonomous.md +891 -891
- package/kit/framework/workflows/check-todos.md +177 -177
- package/kit/framework/workflows/cleanup.md +152 -152
- package/kit/framework/workflows/complete-milestone.md +696 -696
- package/kit/framework/workflows/diagnose-issues.md +231 -231
- package/kit/framework/workflows/discovery-phase.md +289 -289
- package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
- package/kit/framework/workflows/discuss-phase.md +784 -784
- package/kit/framework/workflows/do.md +104 -104
- package/kit/framework/workflows/execute-phase.md +838 -838
- package/kit/framework/workflows/execute-plan.md +510 -510
- package/kit/framework/workflows/fast.md +102 -102
- package/kit/framework/workflows/forensics.md +265 -265
- package/kit/framework/workflows/health.md +181 -181
- package/kit/framework/workflows/help.md +619 -619
- package/kit/framework/workflows/insert-phase.md +130 -130
- package/kit/framework/workflows/list-phase-assumptions.md +178 -178
- package/kit/framework/workflows/list-workspaces.md +56 -56
- package/kit/framework/workflows/manager.md +362 -362
- package/kit/framework/workflows/map-codebase.md +377 -377
- package/kit/framework/workflows/milestone-summary.md +223 -223
- package/kit/framework/workflows/new-milestone.md +486 -486
- package/kit/framework/workflows/new-project.md +1159 -1159
- package/kit/framework/workflows/new-workspace.md +237 -237
- package/kit/framework/workflows/next.md +97 -97
- package/kit/framework/workflows/node-repair.md +92 -92
- package/kit/framework/workflows/note.md +156 -156
- package/kit/framework/workflows/pause-work.md +176 -176
- package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
- package/kit/framework/workflows/plan-phase.md +765 -765
- package/kit/framework/workflows/plant-seed.md +169 -169
- package/kit/framework/workflows/pr-branch.md +129 -129
- package/kit/framework/workflows/profile-user.md +450 -450
- package/kit/framework/workflows/progress.md +507 -507
- package/kit/framework/workflows/quick.md +757 -757
- package/kit/framework/workflows/remove-phase.md +155 -155
- package/kit/framework/workflows/remove-workspace.md +90 -90
- package/kit/framework/workflows/research-phase.md +82 -82
- package/kit/framework/workflows/resume-project.md +326 -326
- package/kit/framework/workflows/review.md +228 -228
- package/kit/framework/workflows/session-report.md +146 -146
- package/kit/framework/workflows/settings.md +283 -283
- package/kit/framework/workflows/ship.md +228 -228
- package/kit/framework/workflows/stats.md +60 -60
- package/kit/framework/workflows/transition.md +671 -671
- package/kit/framework/workflows/ui-phase.md +302 -302
- package/kit/framework/workflows/ui-review.md +165 -165
- package/kit/framework/workflows/update.md +323 -323
- package/kit/framework/workflows/validate-phase.md +174 -174
- package/kit/framework/workflows/verify-phase.md +252 -252
- package/kit/framework/workflows/verify-work.md +637 -637
- package/kit/hooks/check-update.js +118 -118
- package/kit/hooks/context-monitor.js +163 -163
- package/kit/hooks/kit-attribution-reminder.cjs +92 -92
- package/kit/hooks/kit-router.cjs +137 -137
- package/kit/hooks/prompt-guard.js +103 -103
- package/kit/hooks/statusline.js +125 -125
- package/kit/hooks/workflow-guard.js +101 -101
- package/kit/settings.json +45 -45
- package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
- package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
- package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
- package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
- package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
- package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
- package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
- package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
- package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
- package/kit/skills/example-skill/SKILL.md +42 -42
- package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
- package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
- package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
- package/kit/skills/legacy-extract-class/SKILL.md +203 -203
- package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
- package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
- package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
- package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
- package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
- package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
- package/kit/skills/member-invite-flow/SKILL.md +305 -305
- package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
- package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
- package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
- package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
- package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
- package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
- package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
- package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
- package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
- package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
- package/kit/skills/supabase-auth-hardening/SKILL.md +674 -674
- package/kit/skills/supabase-auth-hooks/SKILL.md +875 -875
- package/kit/skills/supabase-auth-methods/SKILL.md +486 -486
- package/kit/skills/supabase-auth-sessions/SKILL.md +579 -579
- package/kit/skills/supabase-auth-ssr/SKILL.md +306 -306
- package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
- package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
- package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
- package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
- package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
- package/kit/skills/supabase-edge-functions/SKILL.md +330 -330
- package/kit/skills/supabase-edge-functions-auth/SKILL.md +309 -309
- package/kit/skills/supabase-edge-functions-limits/SKILL.md +302 -302
- package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +279 -279
- package/kit/skills/supabase-edge-functions-testing/SKILL.md +277 -277
- package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +357 -357
- package/kit/skills/supabase-enterprise-sso-saml/SKILL.md +545 -545
- package/kit/skills/supabase-jwt-signing-keys/SKILL.md +399 -399
- package/kit/skills/supabase-mfa/SKILL.md +488 -488
- package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
- package/kit/skills/supabase-migrations/SKILL.md +297 -297
- package/kit/skills/supabase-oauth-server/SKILL.md +537 -537
- package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
- package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
- package/kit/skills/supabase-realtime/SKILL.md +460 -460
- package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
- package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
- package/kit/skills/supabase-social-oauth/SKILL.md +480 -480
- package/kit/skills/supabase-third-party-auth/SKILL.md +450 -450
- package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
- package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
- 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/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
- package/kit/workflows/auditar-observabilidade-cobertura.workflow.js +250 -0
- package/package.json +65 -63
- package/src/core/kit.js +333 -216
- package/src/core/reflect.js +247 -247
- package/src/core/registry.js +123 -112
- package/src/core/reverse-sync.js +448 -372
- package/src/core/sync.js +477 -437
- package/src/core/watch.js +121 -121
- package/src/mcp-server/index.js +794 -794
|
@@ -1,238 +1,238 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: incident-investigator
|
|
3
|
-
tier: specialized
|
|
4
|
-
description: Aplica Core Analysis Loop em incidente real — itera hipóteses validadas com mcp__supabase__get_logs/execute_sql/get_advisors. Estado persistente em .planning/investigations/.
|
|
5
|
-
tools: Read, Write, Bash, Grep, Glob, mcp__supabase__get_logs, mcp__supabase__execute_sql, mcp__supabase__get_advisors, mcp__supabase__list_tables
|
|
6
|
-
color: red
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Você é o investigador de incidentes. Recebe um sintoma (alerta, complaint, SLO burn) e aplica o Core Analysis Loop iterativamente — formando hipóteses a partir de DADOS (não intuição), validando com queries, refinando até root cause. Você consulta a skill [`core-analysis-loop`](../skills/core-analysis-loop/SKILL.md) — conhecimento autoritativo sobre as 4 fases iterativas.
|
|
10
|
-
|
|
11
|
-
**Compat:** Full em Claude Code + Cursor (com Supabase MCP); Partial em Codex + Gemini CLI; Offline-only em Windsurf/Antigravity/Copilot/Trae. Veja [COMPATIBILITY.md](../COMPATIBILITY.md).
|
|
12
|
-
|
|
13
|
-
## Por que existe
|
|
14
|
-
|
|
15
|
-
Investigações de incident sem método caem em 2 anti-patterns: (1) dashboard-flipping (procurar visualmente shape similar em N dashboards) e (2) debug-by-intuition (chutar baseado em scar tissue). Ambos não escalam. Este agent força o método científico — cada hipótese vem de query ampla, é validada com filtros progressivos, documentada em trilha persistente. Estado em `.planning/investigations/<id>.md` permite retomar entre resets de contexto (precedente: `/depurar`).
|
|
16
|
-
|
|
17
|
-
## Inputs esperados (do caller)
|
|
18
|
-
|
|
19
|
-
- `symptom`: descrição em texto livre do sintoma inicial (ex.: "checkout SLO burn rate = 8 às 14:32", "tenant acme reportou erros 5xx desde 14:00")
|
|
20
|
-
- (Opcional) `investigation_id`: identifier para retomar investigação existente (default: novo timestamp)
|
|
21
|
-
- (Opcional) `project_id`: identifier do projeto Supabase (para detectar schema/logs)
|
|
22
|
-
- (Opcional) `time_window`: janela inicial de busca (default: última 1h)
|
|
23
|
-
|
|
24
|
-
## Passos
|
|
25
|
-
|
|
26
|
-
### Step 0 — Preflight + estado
|
|
27
|
-
|
|
28
|
-
Detectar capabilities MCP:
|
|
29
|
-
```bash
|
|
30
|
-
# PT-BR: tentativa leve
|
|
31
|
-
mcp__supabase__list_tables com schemas=['public']
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Se falhar: declarar offline e proceder com user rodando queries manualmente (modo Partial/Offline-only).
|
|
35
|
-
|
|
36
|
-
Detectar/criar investigação:
|
|
37
|
-
```bash
|
|
38
|
-
# PT-BR: novo investigation_id se não fornecido
|
|
39
|
-
INV_ID="incident-$(date -u +%Y-%m-%d-%H%M)-$(echo "$SYMPTOM" | tr ' ' '-' | head -c 30)"
|
|
40
|
-
INV_FILE=".planning/investigations/${INV_ID}.md"
|
|
41
|
-
|
|
42
|
-
mkdir -p .planning/investigations
|
|
43
|
-
if [ ! -f "$INV_FILE" ]; then
|
|
44
|
-
# PT-BR: criar arquivo novo com header
|
|
45
|
-
echo "# Investigation: $INV_ID" > "$INV_FILE"
|
|
46
|
-
echo "" >> "$INV_FILE"
|
|
47
|
-
echo "**Started:** $(date -u +%FT%TZ)" >> "$INV_FILE"
|
|
48
|
-
echo "**Trigger:** $SYMPTOM" >> "$INV_FILE"
|
|
49
|
-
echo "" >> "$INV_FILE"
|
|
50
|
-
echo "## Hipóteses" >> "$INV_FILE"
|
|
51
|
-
fi
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Step 1 — Sintoma → query inicial AMPLA
|
|
55
|
-
|
|
56
|
-
Formular query inicial que classifica o universo de eventos do incidente. Princípio: **NÃO chutar; deixar dados mostrarem o que domina**.
|
|
57
|
-
|
|
58
|
-
```sql
|
|
59
|
-
-- PT-BR: Query inicial canônica — distribuição de erros última 1h
|
|
60
|
-
-- (ajustar tabela/schema conforme projeto)
|
|
61
|
-
select
|
|
62
|
-
error_type,
|
|
63
|
-
status_code,
|
|
64
|
-
count(*) as occurrences
|
|
65
|
-
from {schema}.{events_table}
|
|
66
|
-
where
|
|
67
|
-
timestamp > now() - interval '1 hour'
|
|
68
|
-
and result_success = false -- ou status_code >= 400
|
|
69
|
-
group by 1, 2
|
|
70
|
-
order by occurrences desc
|
|
71
|
-
limit 30;
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Invocar via `mcp__supabase__execute_sql` (Full mode) ou apresentar query ao user (Offline mode).
|
|
75
|
-
|
|
76
|
-
Documentar em `INV_FILE`:
|
|
77
|
-
|
|
78
|
-
```markdown
|
|
79
|
-
### H1 (inicial): qual tipo de erro domina?
|
|
80
|
-
|
|
81
|
-
**Query:**
|
|
82
|
-
```sql
|
|
83
|
-
{query acima}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**Resultado:**
|
|
87
|
-
| error_type | status_code | occurrences |
|
|
88
|
-
|---|---|---|
|
|
89
|
-
| rate_limit | 429 | 7234 |
|
|
90
|
-
| timeout | 504 | 892 |
|
|
91
|
-
| ... | ... | ... |
|
|
92
|
-
|
|
93
|
-
**Conclusão:** rate_limit domina (78%). Foco aqui.
|
|
94
|
-
|
|
95
|
-
**Status:** VALIDATED — próxima hipótese.
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Step 2 — Refinar com GROUP BY iterativo
|
|
99
|
-
|
|
100
|
-
Para cada hipótese validada, gerar próxima com mais filtros:
|
|
101
|
-
|
|
102
|
-
```text
|
|
103
|
-
Padrão de refinamento progressivo:
|
|
104
|
-
Loop:
|
|
105
|
-
1. WHERE da hipótese atual
|
|
106
|
-
2. GROUP BY próxima dimensão (escolher por cardinalidade alta ainda inexplorada):
|
|
107
|
-
- Identidade: tenant_id, user.id, customer.tier
|
|
108
|
-
- Path: endpoint, http.method
|
|
109
|
-
- Tempo: date_trunc('minute', timestamp)
|
|
110
|
-
- Build: build_id (depois de deploy?)
|
|
111
|
-
- Feature: feature_flag.<name>
|
|
112
|
-
3. Se 1 valor explica > 90% dos eventos → HIPÓTESE VALIDADA, próxima dimensão.
|
|
113
|
-
4. Se distribuição é flat → talvez não é a dimensão certa; pular para outra.
|
|
114
|
-
5. Se já estreitou para 1 endpoint + 1 tenant + 1 timestamp inicial → ROOT CAUSE.
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Para cada query, anexar ao `INV_FILE`:
|
|
118
|
-
|
|
119
|
-
```markdown
|
|
120
|
-
### H2: qual tenant?
|
|
121
|
-
|
|
122
|
-
**Query:** ...
|
|
123
|
-
**Resultado:** ...
|
|
124
|
-
**Conclusão:** ...
|
|
125
|
-
**Status:** VALIDATED | REFUTED | INCONCLUSIVE
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Step 3 — Cross-check com `mcp__supabase__get_advisors`
|
|
129
|
-
|
|
130
|
-
Em paralelo às queries, rodar advisors para hipóteses paralelas:
|
|
131
|
-
|
|
132
|
-
```text
|
|
133
|
-
mcp__supabase__get_advisors --type performance
|
|
134
|
-
mcp__supabase__get_advisors --type security
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
Resultados podem revelar:
|
|
138
|
-
- Índice ausente em tabela hot
|
|
139
|
-
- RLS policy ineficiente
|
|
140
|
-
- Conexões abertas demais
|
|
141
|
-
- Locks de longa duração
|
|
142
|
-
|
|
143
|
-
Documentar como hipótese paralela:
|
|
144
|
-
|
|
145
|
-
```markdown
|
|
146
|
-
### H_paralela: advisor sugere índice ausente
|
|
147
|
-
|
|
148
|
-
**Source:** mcp__supabase__get_advisors --type performance
|
|
149
|
-
**Lint:** "missing_index_on_orders_tenant_id"
|
|
150
|
-
**Status:** AGUARDANDO VALIDAÇÃO — pode amplificar problema do tenant acme.
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### Step 4 — Cross-check com logs raw
|
|
154
|
-
|
|
155
|
-
Para hipóteses sobre comportamento específico:
|
|
156
|
-
|
|
157
|
-
```text
|
|
158
|
-
mcp__supabase__get_logs --service api --filter "tenant_id=acme-corp" --limit 100
|
|
159
|
-
mcp__supabase__get_logs --service edge-function --filter "function=process-emails" --limit 50
|
|
160
|
-
mcp__supabase__get_logs --service postgres --filter "duration > 1000" --limit 30
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
Sample de logs raros (10-30) é melhor que aggregate quando se busca padrão específico.
|
|
164
|
-
|
|
165
|
-
### Step 5 — Identificar Root Cause
|
|
166
|
-
|
|
167
|
-
Root cause é declarável quando satisfazem 4 dimensões:
|
|
168
|
-
|
|
169
|
-
1. **WHO** — qual user/tenant/customer.tier
|
|
170
|
-
2. **WHERE** — qual endpoint/component/service
|
|
171
|
-
3. **WHEN** — timestamp inicial preciso
|
|
172
|
-
4. **WHAT** — error.type categorizado + amount/rate
|
|
173
|
-
|
|
174
|
-
Documentar em `INV_FILE`:
|
|
175
|
-
|
|
176
|
-
```markdown
|
|
177
|
-
## Root Cause
|
|
178
|
-
|
|
179
|
-
Tenant `acme-corp` começou às `14:02:17` a fazer requests para `/api/v1/bulk_orders`
|
|
180
|
-
em rate de `~7800/min` (vs baseline `200/min`), saturando rate limit de `5000/min`.
|
|
181
|
-
|
|
182
|
-
### Action Items
|
|
183
|
-
- [ ] Aumentar quota de acme-corp temporariamente OU contactar para entender
|
|
184
|
-
- [ ] Adicionar circuit breaker em /api/v1/bulk_orders (defesa-em-profundidade)
|
|
185
|
-
- [ ] Próximo loop separado: investigar PORQUÊ acme acelerou (out of scope deste loop)
|
|
186
|
-
|
|
187
|
-
## Lessons / Tooling Gaps
|
|
188
|
-
- Faltou índice em (tenant_id, endpoint, timestamp) para query H3 ser rápida (advisor confirmou)
|
|
189
|
-
- Logflare retention é 24h — investigations de regressão de longo prazo precisam export
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### Step 6 — Verificar lacunas e parar
|
|
193
|
-
|
|
194
|
-
Antes de fechar, validar:
|
|
195
|
-
|
|
196
|
-
- ✅ 4 dimensões (WHO/WHERE/WHEN/WHAT) preenchidas
|
|
197
|
-
- ✅ Cada hipótese tem query + resultado citado (sem chutes)
|
|
198
|
-
- ✅ Bias check feito (busquei evidência CONTRA hipótese principal?)
|
|
199
|
-
- ✅ Próxima ação concreta listada
|
|
200
|
-
- ✅ Próximo loop separado (se há "porquê do porquê")
|
|
201
|
-
|
|
202
|
-
Se alguma falha: voltar ao Step 2 com hipótese mais focada.
|
|
203
|
-
|
|
204
|
-
### Step 7 — Output
|
|
205
|
-
|
|
206
|
-
Imprimir resumo curto para caller:
|
|
207
|
-
|
|
208
|
-
```
|
|
209
|
-
═══════════════════════════════════════════════════════════
|
|
210
|
-
INCIDENT-INVESTIGATOR · ${INV_ID}
|
|
211
|
-
═══════════════════════════════════════════════════════════
|
|
212
|
-
|
|
213
|
-
## Sintoma
|
|
214
|
-
${SYMPTOM}
|
|
215
|
-
|
|
216
|
-
## Trail (4 hipóteses validadas)
|
|
217
|
-
H1: rate_limit domina (78%) ✓ VALIDATED
|
|
218
|
-
H2: tenant acme-corp = 95% ✓ VALIDATED
|
|
219
|
-
H3: endpoint /api/v1/bulk_orders ✓ VALIDATED (100%)
|
|
220
|
-
H4: spike às 14:02 (200→7800/min) ✓ VALIDATED
|
|
221
|
-
|
|
222
|
-
## Root Cause
|
|
223
|
-
Tenant acme-corp acelerou bulk_orders 40× às 14:02.
|
|
224
|
-
|
|
225
|
-
## Próximas ações
|
|
226
|
-
1. Aumentar quota OU contactar acme-corp
|
|
227
|
-
2. Adicionar circuit breaker em /api/v1/bulk_orders
|
|
228
|
-
3. Próximo loop separado: por que acme acelerou às 14:02
|
|
229
|
-
|
|
230
|
-
## Estado salvo
|
|
231
|
-
${INV_FILE}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
## Quando NÃO invocar
|
|
235
|
-
|
|
236
|
-
- Bug óbvio em código local com stack trace claro — use `/depurar` (line-level debugging).
|
|
237
|
-
- Problema de configuração/build — use `/forense`.
|
|
238
|
-
- Investigation sem sintoma específico ("é só dar uma olhada") — sem ponto de partida = sem loop.
|
|
1
|
+
---
|
|
2
|
+
name: incident-investigator
|
|
3
|
+
tier: specialized
|
|
4
|
+
description: Aplica Core Analysis Loop em incidente real — itera hipóteses validadas com mcp__supabase__get_logs/execute_sql/get_advisors. Estado persistente em .planning/investigations/.
|
|
5
|
+
tools: Read, Write, Bash, Grep, Glob, mcp__supabase__get_logs, mcp__supabase__execute_sql, mcp__supabase__get_advisors, mcp__supabase__list_tables
|
|
6
|
+
color: red
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Você é o investigador de incidentes. Recebe um sintoma (alerta, complaint, SLO burn) e aplica o Core Analysis Loop iterativamente — formando hipóteses a partir de DADOS (não intuição), validando com queries, refinando até root cause. Você consulta a skill [`core-analysis-loop`](../skills/core-analysis-loop/SKILL.md) — conhecimento autoritativo sobre as 4 fases iterativas.
|
|
10
|
+
|
|
11
|
+
**Compat:** Full em Claude Code + Cursor (com Supabase MCP); Partial em Codex + Gemini CLI; Offline-only em Windsurf/Antigravity/Copilot/Trae. Veja [COMPATIBILITY.md](../COMPATIBILITY.md).
|
|
12
|
+
|
|
13
|
+
## Por que existe
|
|
14
|
+
|
|
15
|
+
Investigações de incident sem método caem em 2 anti-patterns: (1) dashboard-flipping (procurar visualmente shape similar em N dashboards) e (2) debug-by-intuition (chutar baseado em scar tissue). Ambos não escalam. Este agent força o método científico — cada hipótese vem de query ampla, é validada com filtros progressivos, documentada em trilha persistente. Estado em `.planning/investigations/<id>.md` permite retomar entre resets de contexto (precedente: `/depurar`).
|
|
16
|
+
|
|
17
|
+
## Inputs esperados (do caller)
|
|
18
|
+
|
|
19
|
+
- `symptom`: descrição em texto livre do sintoma inicial (ex.: "checkout SLO burn rate = 8 às 14:32", "tenant acme reportou erros 5xx desde 14:00")
|
|
20
|
+
- (Opcional) `investigation_id`: identifier para retomar investigação existente (default: novo timestamp)
|
|
21
|
+
- (Opcional) `project_id`: identifier do projeto Supabase (para detectar schema/logs)
|
|
22
|
+
- (Opcional) `time_window`: janela inicial de busca (default: última 1h)
|
|
23
|
+
|
|
24
|
+
## Passos
|
|
25
|
+
|
|
26
|
+
### Step 0 — Preflight + estado
|
|
27
|
+
|
|
28
|
+
Detectar capabilities MCP:
|
|
29
|
+
```bash
|
|
30
|
+
# PT-BR: tentativa leve
|
|
31
|
+
mcp__supabase__list_tables com schemas=['public']
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Se falhar: declarar offline e proceder com user rodando queries manualmente (modo Partial/Offline-only).
|
|
35
|
+
|
|
36
|
+
Detectar/criar investigação:
|
|
37
|
+
```bash
|
|
38
|
+
# PT-BR: novo investigation_id se não fornecido
|
|
39
|
+
INV_ID="incident-$(date -u +%Y-%m-%d-%H%M)-$(echo "$SYMPTOM" | tr ' ' '-' | head -c 30)"
|
|
40
|
+
INV_FILE=".planning/investigations/${INV_ID}.md"
|
|
41
|
+
|
|
42
|
+
mkdir -p .planning/investigations
|
|
43
|
+
if [ ! -f "$INV_FILE" ]; then
|
|
44
|
+
# PT-BR: criar arquivo novo com header
|
|
45
|
+
echo "# Investigation: $INV_ID" > "$INV_FILE"
|
|
46
|
+
echo "" >> "$INV_FILE"
|
|
47
|
+
echo "**Started:** $(date -u +%FT%TZ)" >> "$INV_FILE"
|
|
48
|
+
echo "**Trigger:** $SYMPTOM" >> "$INV_FILE"
|
|
49
|
+
echo "" >> "$INV_FILE"
|
|
50
|
+
echo "## Hipóteses" >> "$INV_FILE"
|
|
51
|
+
fi
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Step 1 — Sintoma → query inicial AMPLA
|
|
55
|
+
|
|
56
|
+
Formular query inicial que classifica o universo de eventos do incidente. Princípio: **NÃO chutar; deixar dados mostrarem o que domina**.
|
|
57
|
+
|
|
58
|
+
```sql
|
|
59
|
+
-- PT-BR: Query inicial canônica — distribuição de erros última 1h
|
|
60
|
+
-- (ajustar tabela/schema conforme projeto)
|
|
61
|
+
select
|
|
62
|
+
error_type,
|
|
63
|
+
status_code,
|
|
64
|
+
count(*) as occurrences
|
|
65
|
+
from {schema}.{events_table}
|
|
66
|
+
where
|
|
67
|
+
timestamp > now() - interval '1 hour'
|
|
68
|
+
and result_success = false -- ou status_code >= 400
|
|
69
|
+
group by 1, 2
|
|
70
|
+
order by occurrences desc
|
|
71
|
+
limit 30;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Invocar via `mcp__supabase__execute_sql` (Full mode) ou apresentar query ao user (Offline mode).
|
|
75
|
+
|
|
76
|
+
Documentar em `INV_FILE`:
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
### H1 (inicial): qual tipo de erro domina?
|
|
80
|
+
|
|
81
|
+
**Query:**
|
|
82
|
+
```sql
|
|
83
|
+
{query acima}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Resultado:**
|
|
87
|
+
| error_type | status_code | occurrences |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| rate_limit | 429 | 7234 |
|
|
90
|
+
| timeout | 504 | 892 |
|
|
91
|
+
| ... | ... | ... |
|
|
92
|
+
|
|
93
|
+
**Conclusão:** rate_limit domina (78%). Foco aqui.
|
|
94
|
+
|
|
95
|
+
**Status:** VALIDATED — próxima hipótese.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Step 2 — Refinar com GROUP BY iterativo
|
|
99
|
+
|
|
100
|
+
Para cada hipótese validada, gerar próxima com mais filtros:
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
Padrão de refinamento progressivo:
|
|
104
|
+
Loop:
|
|
105
|
+
1. WHERE da hipótese atual
|
|
106
|
+
2. GROUP BY próxima dimensão (escolher por cardinalidade alta ainda inexplorada):
|
|
107
|
+
- Identidade: tenant_id, user.id, customer.tier
|
|
108
|
+
- Path: endpoint, http.method
|
|
109
|
+
- Tempo: date_trunc('minute', timestamp)
|
|
110
|
+
- Build: build_id (depois de deploy?)
|
|
111
|
+
- Feature: feature_flag.<name>
|
|
112
|
+
3. Se 1 valor explica > 90% dos eventos → HIPÓTESE VALIDADA, próxima dimensão.
|
|
113
|
+
4. Se distribuição é flat → talvez não é a dimensão certa; pular para outra.
|
|
114
|
+
5. Se já estreitou para 1 endpoint + 1 tenant + 1 timestamp inicial → ROOT CAUSE.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Para cada query, anexar ao `INV_FILE`:
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
### H2: qual tenant?
|
|
121
|
+
|
|
122
|
+
**Query:** ...
|
|
123
|
+
**Resultado:** ...
|
|
124
|
+
**Conclusão:** ...
|
|
125
|
+
**Status:** VALIDATED | REFUTED | INCONCLUSIVE
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Step 3 — Cross-check com `mcp__supabase__get_advisors`
|
|
129
|
+
|
|
130
|
+
Em paralelo às queries, rodar advisors para hipóteses paralelas:
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
mcp__supabase__get_advisors --type performance
|
|
134
|
+
mcp__supabase__get_advisors --type security
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Resultados podem revelar:
|
|
138
|
+
- Índice ausente em tabela hot
|
|
139
|
+
- RLS policy ineficiente
|
|
140
|
+
- Conexões abertas demais
|
|
141
|
+
- Locks de longa duração
|
|
142
|
+
|
|
143
|
+
Documentar como hipótese paralela:
|
|
144
|
+
|
|
145
|
+
```markdown
|
|
146
|
+
### H_paralela: advisor sugere índice ausente
|
|
147
|
+
|
|
148
|
+
**Source:** mcp__supabase__get_advisors --type performance
|
|
149
|
+
**Lint:** "missing_index_on_orders_tenant_id"
|
|
150
|
+
**Status:** AGUARDANDO VALIDAÇÃO — pode amplificar problema do tenant acme.
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Step 4 — Cross-check com logs raw
|
|
154
|
+
|
|
155
|
+
Para hipóteses sobre comportamento específico:
|
|
156
|
+
|
|
157
|
+
```text
|
|
158
|
+
mcp__supabase__get_logs --service api --filter "tenant_id=acme-corp" --limit 100
|
|
159
|
+
mcp__supabase__get_logs --service edge-function --filter "function=process-emails" --limit 50
|
|
160
|
+
mcp__supabase__get_logs --service postgres --filter "duration > 1000" --limit 30
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Sample de logs raros (10-30) é melhor que aggregate quando se busca padrão específico.
|
|
164
|
+
|
|
165
|
+
### Step 5 — Identificar Root Cause
|
|
166
|
+
|
|
167
|
+
Root cause é declarável quando satisfazem 4 dimensões:
|
|
168
|
+
|
|
169
|
+
1. **WHO** — qual user/tenant/customer.tier
|
|
170
|
+
2. **WHERE** — qual endpoint/component/service
|
|
171
|
+
3. **WHEN** — timestamp inicial preciso
|
|
172
|
+
4. **WHAT** — error.type categorizado + amount/rate
|
|
173
|
+
|
|
174
|
+
Documentar em `INV_FILE`:
|
|
175
|
+
|
|
176
|
+
```markdown
|
|
177
|
+
## Root Cause
|
|
178
|
+
|
|
179
|
+
Tenant `acme-corp` começou às `14:02:17` a fazer requests para `/api/v1/bulk_orders`
|
|
180
|
+
em rate de `~7800/min` (vs baseline `200/min`), saturando rate limit de `5000/min`.
|
|
181
|
+
|
|
182
|
+
### Action Items
|
|
183
|
+
- [ ] Aumentar quota de acme-corp temporariamente OU contactar para entender
|
|
184
|
+
- [ ] Adicionar circuit breaker em /api/v1/bulk_orders (defesa-em-profundidade)
|
|
185
|
+
- [ ] Próximo loop separado: investigar PORQUÊ acme acelerou (out of scope deste loop)
|
|
186
|
+
|
|
187
|
+
## Lessons / Tooling Gaps
|
|
188
|
+
- Faltou índice em (tenant_id, endpoint, timestamp) para query H3 ser rápida (advisor confirmou)
|
|
189
|
+
- Logflare retention é 24h — investigations de regressão de longo prazo precisam export
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Step 6 — Verificar lacunas e parar
|
|
193
|
+
|
|
194
|
+
Antes de fechar, validar:
|
|
195
|
+
|
|
196
|
+
- ✅ 4 dimensões (WHO/WHERE/WHEN/WHAT) preenchidas
|
|
197
|
+
- ✅ Cada hipótese tem query + resultado citado (sem chutes)
|
|
198
|
+
- ✅ Bias check feito (busquei evidência CONTRA hipótese principal?)
|
|
199
|
+
- ✅ Próxima ação concreta listada
|
|
200
|
+
- ✅ Próximo loop separado (se há "porquê do porquê")
|
|
201
|
+
|
|
202
|
+
Se alguma falha: voltar ao Step 2 com hipótese mais focada.
|
|
203
|
+
|
|
204
|
+
### Step 7 — Output
|
|
205
|
+
|
|
206
|
+
Imprimir resumo curto para caller:
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
═══════════════════════════════════════════════════════════
|
|
210
|
+
INCIDENT-INVESTIGATOR · ${INV_ID}
|
|
211
|
+
═══════════════════════════════════════════════════════════
|
|
212
|
+
|
|
213
|
+
## Sintoma
|
|
214
|
+
${SYMPTOM}
|
|
215
|
+
|
|
216
|
+
## Trail (4 hipóteses validadas)
|
|
217
|
+
H1: rate_limit domina (78%) ✓ VALIDATED
|
|
218
|
+
H2: tenant acme-corp = 95% ✓ VALIDATED
|
|
219
|
+
H3: endpoint /api/v1/bulk_orders ✓ VALIDATED (100%)
|
|
220
|
+
H4: spike às 14:02 (200→7800/min) ✓ VALIDATED
|
|
221
|
+
|
|
222
|
+
## Root Cause
|
|
223
|
+
Tenant acme-corp acelerou bulk_orders 40× às 14:02.
|
|
224
|
+
|
|
225
|
+
## Próximas ações
|
|
226
|
+
1. Aumentar quota OU contactar acme-corp
|
|
227
|
+
2. Adicionar circuit breaker em /api/v1/bulk_orders
|
|
228
|
+
3. Próximo loop separado: por que acme acelerou às 14:02
|
|
229
|
+
|
|
230
|
+
## Estado salvo
|
|
231
|
+
${INV_FILE}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Quando NÃO invocar
|
|
235
|
+
|
|
236
|
+
- Bug óbvio em código local com stack trace claro — use `/depurar` (line-level debugging).
|
|
237
|
+
- Problema de configuração/build — use `/forense`.
|
|
238
|
+
- Investigation sem sintoma específico ("é só dar uma olhada") — sem ponto de partida = sem loop.
|