MODULO 5.6

โฌ†๏ธ Promotion: 3-strikes โ†’ CLAUDE.md

Quando um padrao aparece 3+ vezes, vira regra permanente em CLAUDE.md. Memoria se graduou em sabedoria.

6
Topicos
35
Minutos
Avancado
Nivel
Lifecycle
Tipo
1

๐ŸŽฏ O que e promotion

Padrao visto 3 ou mais vezes prova valor. Viram regra em CLAUDE.md, originais arquivam.

๐Ÿ“ Ciclo de promotion

Observacao #1 โ†’ knowledge/patterns/idempotency-stripe.md
Observacao #2 โ†’ knowledge/patterns/idempotency-retry.md
Observacao #3 โ†’ knowledge/patterns/idempotency-refund.md
                           โ”‚
                           โ–ผ
              Script detecta similaridade
                           โ”‚
                           โ–ผ
          promotions/pending.md criada
                           โ”‚
                           โ–ผ
              Voce revisa e aprova
                           โ”‚
                           โ–ผ
       CLAUDE.md: "Sempre usar idempotency
                    key em payment webhook."
                           โ”‚
                           โ–ผ
      3 observacoes movem para archive/promoted/

๐Ÿ’ก E um pipeline, nao magica

Promotion nao e detectada magicamente. E script explicito que voce roda periodicamente. Tudo transparente.

2

๐Ÿง  Detectando padrao (LLM-assisted)

Regex nao pega similaridade semantica. LLM pequeno resolve em segundos.

๐Ÿ“ Deteccao via LLM

#!/usr/bin/env python3
# promote.py โ€” versao LLM-assisted

def find_clusters(memories, threshold=3):
    # 1. Gera embedding de cada memoria
    embs = embed_all([m.body for m in memories])

    # 2. Clustering com similarity > 0.85
    clusters = []
    for i, emb_i in enumerate(embs):
        for cluster in clusters:
            if cosine(emb_i, cluster[0].emb) > 0.85:
                cluster.append(memories[i])
                break
        else:
            clusters.append([memories[i]])

    # 3. Retornar clusters com threshold+
    return [c for c in clusters if len(c) >= threshold]

# Uso
candidates = find_clusters(load_memories('knowledge/patterns/'))
for cluster in candidates:
    write_proposal(cluster, 'promotions/pending.md')

๐Ÿ’ก Custo minimo

Embeddings locais (fastembed) = 0 recorrente. Clustering passa por 200-500 memorias em ~2 segundos.

3

โœ๏ธ Formato da regra promovida

Formato prescritivo vence descritivo. Claude age sobre um, menciona o outro.

โœ“ Prescritivo (usar)

  • โœ“'Sempre usar idempotency key em payment webhook'
  • โœ“'Sempre logar tempo de execucao em hooks'
  • โœ“'Nunca commitar .env; usar .env.example'
  • โœ“'Ao abrir PR, rodar ruff check primeiro'

โœ— Descritivo (evitar)

  • โœ—'Observamos que idempotency key ajuda em webhooks'
  • โœ—'Ja vimos que logar tempo e util'
  • โœ—'Geralmente nao commitamos .env'
  • โœ—'Costumamos rodar ruff antes de PR'
4

๐Ÿ” Aprovacao humana

NUNCA promova automatico direto ao CLAUDE.md. Sempre com review.

๐Ÿ“ Fluxo com approval

# Script cria proposta
$ python3 promote.py
3 padroes candidatos criados em:
  ~/.memory/promotions/pending.md

# Voce revisa
$ cat ~/.memory/promotions/pending.md

## Proposta 1 (3 ocorrencias)
Origem: patterns/idempotency-{stripe,retry,refund}.md

Regra sugerida:
"Sempre usar idempotency key em payment webhook
 para evitar processamento duplicado."

[APROVAR] [REJEITAR] [EDITAR]

# Apos editar/aprovar
$ python3 promote.py --apply

Aprovou: 2 regras adicionadas a CLAUDE.md
Rejeitou: 1 proposta descartada
Movidas: 6 memorias originais para archive/promoted/

โš ๏ธ CLAUDE.md poluido e pior que vazio

Uma regra mal escrita contamina a atencao para todas. Qualidade da curadoria importa mais que velocidade.

5

๐Ÿ—‘๏ธ O que acontece com os originais

Arquivam, nao deletam. Rastreio preservado para revisao futura.

๐Ÿ“ Archive com rastreio

archive/promoted/
โ””โ”€โ”€ 2026-Q2/
    โ””โ”€โ”€ idempotency-webhook-rule/
        โ”œโ”€โ”€ SOURCE_MEMORIES/
        โ”‚   โ”œโ”€โ”€ idempotency-stripe.md
        โ”‚   โ”œโ”€โ”€ idempotency-retry.md
        โ”‚   โ””โ”€โ”€ idempotency-refund.md
        โ””โ”€โ”€ PROMOTED_RULE.md
            "Extraida em 2026-04-22. Adicionada a CLAUDE.md.
             Regra: 'Sempre usar idempotency key em payment webhook.'"

# Se 6 meses depois voce revisita regra:
# โ†’ acha rastreamento
# โ†’ ve as 3 observacoes originais
# โ†’ entende o porque completo

๐Ÿ’ก Provenance importa

Dali 1 ano, voce pode perguntar 'por que temos essa regra?'. Archive responde.

6

๐Ÿ“ Exemplo ponta a ponta

Seguindo o ciclo inteiro: 3 observacoes โ†’ regra permanente.

1

Observacao 1 (2026-04-10)

Sessao resolve bug na Stripe webhook. Voce nota: 'idempotency key evitou dupla cobranca'. Salvo em patterns/idempotency-stripe.md

2

Observacao 2 (2026-04-15)

Bug similar em webhook de retry. 'Idempotency key aqui tambem resolveu.' Salvo em patterns/idempotency-retry.md

3

Observacao 3 (2026-04-20)

Agora no refund webhook. 'Mesmo padrao.' Salvo em patterns/idempotency-refund.md

4

promote.py roda (2026-04-22)

Detecta cluster com similaridade 0.91. Cria proposal em pending.md

5

Voce aprova

Regra 'Sempre usar idempotency key em payment webhook' adicionada a CLAUDE.md

6

Originais arquivam

3 memorias movem para archive/promoted/2026-Q2/idempotency-webhook-rule/

7

Sessoes futuras

Claude ja sabe aplicar. Voce nunca mais explica. Memoria virou sabedoria.

๐Ÿ’ก Meta alcancada

Esse e o sistema de memoria maduro: capta observacoes, deteta padroes, graduacao automatica (com approval), resultado e Claude mais inteligente no seu contexto especifico.

๐Ÿ“ Resumo do Modulo

โœ“
3x e o gatilho โ€” menos e cedo demais.
โœ“
LLM faz clustering โ€” regex nao pega similaridade semantica.
โœ“
Formato prescritivo โ€” 'sempre X quando Y' > 'observamos X'.
โœ“
Aprovacao humana obrigatoria โ€” CLAUDE.md ruim e pior que ausente.

Proximo:

Trilha 6 โ€” Projeto pratico e integracoes