Paula Silva | Software Global Black Belt
Modernização de Legado

Modernização de legado com agentes no GitHub.

Como agentes especializados no GitHub Copilot ajudam a entender estates Natural, Adabas, COBOL e DB2.

Apresenta Paula Silva Software Global Black Belt · Microsoft
Duração 30 minutos
Data 11 jun 2026
Agenda

Quatro partes, um arco.

  1. I
  2. II
  3. III
  4. IV
  5. V
  6. VI
I

II

A tese

AI-Native Engineer pilota agentes. Não substitui agentes.

O time não escreve do zero. O agente lê, indexa, propõe. O humano revisa, valida, decide, assina.

Quatro agentes no GitHub Copilot Chat

@archaeologist lê legado · @architect escreve spec · @builder constrói · @evolution operacionaliza.

Mais o GitHub Copilot Coding Agent na nuvem

Recebe issues bem escritas pelo @evolution, executa em background, abre PR draft.

III

Um sistema, um exemplo

SIFAP. Sistema social federal. 29 anos em produção.

Sistema de Fiscalização e Administração de Pagamentos.

~3,2 M Beneficiários ativos
R$ 4,2 B Movimentação anual
29 anos Idade do código
2 Devs Natural ativos

É um exemplo. Pode ser o seu sistema de cobrança, seu core bancário, sua plataforma de RH.

SIFAP · TN3270 · host PRDMVS01 · LU T0001 · COM-PLETE

Antes

Depois

IV

@archaeologist

O que observar
01

02

03

Visual Studio Code · sifap-modernization · @archaeologist
⚲  sifap-modernization
EXPLORER
▾ sifap-modernization
▾ 01-arqueologia
▾ legado-sifap
▸ adabas-ddms
▾ natural-programs
▤ BATCHCON.NSN
▤ BATCHPGT.NSN
▤ CADBENEF.NSN
▤ CADPROG.NSN
▤ CALCBENF.NSN
▤ mysteries-found.mdM
▤ glossary.md
▤ business-rules-catalog.md
BATCHPGT.NSN
mysteries-found.md
125* CALC FATOR REGIONAL
126 IF #COD-REG >= 1 AND #COD-REG <= 25
127 MOVE #TAB-REG(#COD-REG) TO #FATOR-REG
128 ELSE
129 MOVE 1.0000 TO #FATOR-REG
130 END-IF * questão sobre #FATOR-REAJ aplicado na linha 282
131
132* CALC FATOR FAMILIAR
133 IF #NUM-DEP = 0
Chat+
Enter ↵
AgentClaude Opus 4.8 (copilot)
⎇ sifap-modern#142⟳ 0 ⚠ 0Live Share SonarQubeSpaces: 2UTF-8 GitHub Copilot
Os mistérios que o agente expõe

Em quatro horas de SIFAP, 187 regras catalogadas e 17 mistérios oficiais.

187 Regras de negócio catalogadas
17 Mistérios oficiais registrados
4 h Read-only, zero alteração no legado
MYS-003 · Fator-K

Constante mágica 0.347215 sem origem legal em CADPROG.NSN.

MYS-007 · CPF 00000000000

Institucionalizado no DDM como feature.

MYS-008 · Região 99

COD-REGIAO=99 pula todas as validações em VALELEG.NSN.

MYS-010 · RELAUDIT oculta EX

Filtra silenciosamente ACAO='EX' antes de imprimir auditoria.

01-arqueologia/business-rules-catalog.md @archaeologist · saída
Estágio 1 · /extract-business-rules · gerado 2026-05-27

Catálogo de Regras de Negócio · SIFAP Legado

Índice consolidado. As tabelas detalhadas (187 regras com fonte arquivo.NSN:Lstart-Lend, classificação EARS e notas) vivem nos 5 fragments em _fragments/, um por par. Não duplicamos as linhas aqui para manter rastreabilidade única.

Resumo geral

Programas Natural lidos15
DDMs cruzados4
Regras extraídas187
Confirmadas (cruzaram com docs)43
Inferidas (só código, sem doc)104
Mistérios (<!-- mystery: -->)44
Divergências críticas doc × código9

Razão Inferida/Confirmada ≈ 2.4×: a documentação histórica (1997/2008/2012) cobre menos de metade da lógica real. O Estágio 2 trata regras Inferidas como candidatas a entrevista com PO/SME, não como verdade pronta.

Fragmentos por par

ParProgramasRegrasMistérios
1 · VisãoCADBENEF, CADDEPEND, CADPROG3210
2 · ArquiteturaBATCHCON, BATCHPGT, BATCHREL4712
3 · ImplementaçãoCALCBENF, CALCCORR, CALCDSCT4411
4 · QualidadeVALBENEF, VALDOCS, VALELEG306
5 · OperaçõesCONSBENF, RELAUDIT, RELPGT345

Divergências cross-cutting (bloqueadores para o Estágio 2)

#TemaConflito
1Limite de dependentesRN-004 diz 3; CADDEPEND.NSN:L66-L69 aceita 5; CALCBENF aceita >3
2Fórmula do benefício (Fator Familiar)REGRAS-NEGOCIO-2012 §6 = aditiva; CALCBENF.NSN = multiplicativa
3Significado de STATUS-PGTO = PDoc 2012 = pendente; Manual 2008 = PAGO; RELPGT trata como pago
4Arredondamento × truncamentoManual 2008 §4 arredonda 5 casas; BATCHPGT trunca
5Fator K = 0.347215Constante mágica em CADPROG.NSN:L81 sem fonte legal/regulatória
6Desconto 3% × 30%Doc cita 3%; BATCHCON aplica 30%
7Validação de CPF duplicada em 4 lugaresCADBENEF, CADDEPEND, VALBENEF, VALDOCS reimplementam DV com variações
8RELAUDIT oculta ACAO='EX'Conflita com RN-011 (auditoria completa); flag de compliance
9Cap de desconto agregadoCALCDSCT aplica cap; RN-023 manda descartar por prioridade

Mistérios prioritários (top 10)

#Descrição
1Fator K = 0.347215 sem origem documentada (Par 1 + 2)
2Tabela de 25 fatores regionais 1.0000-1.4000 sem critério legal (Par 3)
3Faixas de renda hardcoded (R$ 300/600/1000/1500) sem indexação desde 2013 (Par 3)
4Bloco Plano Verão comentado, fatores 2.7500 e 1.4289 (Par 3)
5Status S para idade > 75 fora do domínio documentado A/E (Par 1)
6CPF 00000000000 aceito em CADDEPEND e por exceção em VALBENEF (Par 1 + 4)
7Região 99 ⇒ elegibilidade automática, backdoor em VALELEG (Par 4)
8Tabela de prefixos especiais em VALDOCS que anula erros de DV (Par 4)
9RELAUDIT oculta exclusões, viola auditoria completa (Par 5)
10Tabela IPCA estática 2010-2012, fora dessa janela correção é ignorada (Par 3)

Definition of Done

Todo bloco IF/THEN/ELSE/DECIDE/AT BREAK examinado (15 programas)
Cada regra tem fonte arquivo.NSN:Lstart-Lend (rastreabilidade nos fragments)
Regras confirmadas citam seção da doc (43 de 187)
Mistérios marcados com <!-- mystery: --> (44)
EARS proposto para cada regra confirmada
Divergências cross-cutting consolidadas (9) + matriz de rastreio dos 44
role para ver as 187 regras ↓
Onde os dados moram

O @archaeologist leu o código. Mas os dados moram num banco que pensa diferente de tudo que você aprendeu.

Adabas não tem tabelas planas com linhas. Tem um FDT, Field Definition Table, onde um registro carrega grupos inteiros dentro de si. Entender isso é entender por que a tradução é difícil.

O modelo que você conhece

Relacional: tabelas, linhas planas, chaves estrangeiras, índices B-tree. Um dependente é uma linha em outra tabela.

  • 1 linha = 1 entidade, sempre plana
  • Relações via JOIN entre tabelas
  • Índices e PKs explícitos no schema
  • NUMERIC, VARCHAR, tipos previsíveis
O modelo do Adabas

FDT: um registro de beneficiário carrega até 10 dependentes DENTRO dele. Sem tabela separada, sem JOIN.

  • Grupo periódico (PE): N ocorrências no mesmo registro
  • Campo multivalorado (MU): vários valores num campo só
  • Descritor e superdescritor no lugar de índice
  • Packed decimal: N9.2, N5.4, nunca DOUBLE
O território a mapear

Quatro DDMs descrevem todo o SIFAP. Cada um carrega sua própria estranheza e seus próprios mistérios.

BENEFICIARIOFNR 150

Base principal. Grupo periódico de dependentes (máx 10) e o CPF-sentinela 00000000000 vivem aqui.

~4,2M registros52 campos1 PE · 3 superdesc
PROGRAMA-SOCIALFNR 151

Tabela paramétrica. O campo FATOR-K (N5.4) está aqui, com ">>> NÃO DOCUMENTADO <<<" gravado no próprio FDT.

45 programas42 campos2 PE · 1 MU
PAGAMENTOFNR 152

Transacional, sem política de purge. Todos os registros desde 1998. Máquina de estados de 7 status num campo só.

~180M registros50 campos1 PE · 3 superdesc
AUDITORIAFNR 153

Imutável (INSERT ONLY), retenção indefinida por lei. Pares antes/depois em multivalor de até 20 campos.

~25M registros34 campos2 MU · 3 superdesc
Anatomia de um registro

Um registro de beneficiário, por dentro. Clique em cada parte para ver por que ela não vira uma linha de tabela.

RECORD · BENEFICIARIO · ISN 0042 AB · NUM-CPF A 11 · descriptor (DE) · S1 campo plano DA · GRP-DEPENDENTE (PE máx 10) occ 1 · CPF-DEP · NOME · PARENTESCO occ 2 · CPF-DEP · NOME · PARENTESCO occ 3 … até occ 10 (no mesmo registro) grupo periódico EA · TIPO-DSCT-APLIC (MU máx 8) { IR · JD · CS · PA · EM · TX · OU · EX } multivalor SUPERDESCRIPTORS S1 = AB · S2 = BG+CE · S3 = CA+CE índices compostos calculados, não colunas descritores ~850 bytes · packed decimals · ordem de campos congelada (Port. 847/2003)
Campo plano

O caso fácil

NUM-CPF é um campo escalar simples. É o único tipo de campo que vira diretamente uma coluna numa tabela relacional. Tudo abaixo dele é o que torna a migração difícil.

Adabas: AB · A 11 · DE → PostgreSQL: cpf CHAR(11) PRIMARY KEY

Clique nas outras partes do registro →

@dba

O que observar
01

02

03

@dba · lendo o FDT real
Visual Studio Code · sifap-modernization · @dba · DDM → JPA
⚲  sifap-modernization
EXPLORER
▾ sifap-modernization
▾ 01-arqueologia
▾ adabas-ddms
▤ BENEFICIARIO.ddm
▤ PROGRAMA-SOCIAL.ddm
▤ PAGAMENTO.ddm
▤ AUDITORIA.ddm
▾ entitiesU
▤ Beneficiary.java
BENEFICIARIO.ddm
Chat+
Enter ↵
AgentClaude Sonnet 4.6 (copilot)
⎇ sifap-modern#142⟳ 0 ⚠ 0Live Share SonarQubeSpaces: 2UTF-8 GitHub Copilot

Antes

Depois

Da descoberta à especificação

187 regras descobertas. Agora, como transformá-las em algo construível sem reintroduzir ambiguidade?

A resposta não é escrever código mais rápido. É escrever a especificação primeiro, e deixar o agente trabalhar dentro dela.

Vibe coding

"Construa o cálculo do benefício." A IA gera código na hora, adivinha a arquitetura, pula os requisitos. Funciona, mas não bate com a regra do legado. 40% do tempo vira retrabalho.

Determinístico

A regra do CALCBENF.NSN vira uma EARS testável, com source_legacy. O agente só implementa o que a spec diz. O que sai é verificável contra o legado.

Duas peças, uma camada

Spec-Kit é o método. Specky é o motor. Não competem, se empilham.

Spec-Kit github/spec-kit · open source

A metodologia. Define o QUÊ.

  • Notação EARS e os 6 padrões de requisito
  • Sequência com gates: specify → clarify → plan → tasks → analyze → implement
  • Modelo de constituição e templates de prompt que a IA lê e segue
  • Instala via specify CLI; comandos /speckit.* no GitHub Copilot
Leve. Ideal para aprender SDD e adotar rápido.
Specky paulasilvatech/specky · MCP toolkit

O motor. Força o COMO.

  • CLI toolkit: 13 agentes, 22 prompts, 8 skills, 16 hooks, 57 MCP tools
  • Máquina de estados de 10 fases que bloqueia pular etapa
  • Validador EARS por schema: frase vaga não passa
  • Análise cruzada spec↔design↔tasks e compliance (HIPAA, SOC2, GDPR)
A IA é o operador. Specky é o motor.
Spec-Kit

O que observar
01

02

03

Spec-Kit · o método
Visual Studio Code · sifap-modernization · Spec-Kit · /speckit.specify
⚲  sifap-modernization
EXPLORER
▾ sifap-modernization
▾ 01-arqueologia
▤ business-rules-catalog.md
▤ mysteries-found.md
▾ specs
▾ 002-calculo-beneficioU
▤ spec.md
▾ .specify
▤ memory/constitution.md
spec.md
Chat+
Enter ↵
AgentClaude Sonnet 4.6 (copilot)
⎇ sifap-modern#142⟳ 0 ⚠ 0Live Share SonarQubeSpaces: 2UTF-8 GitHub Copilot
Specky

O que observar
01

02

03

Specky · o motor
Visual Studio Code · sifap-modernization · Specky MCP · pipeline 10 fases
⚲  sifap-modernization
SDD PIPELINE
✓ 1 Init
✓ 2 Discover
▸ 3 Specify
· 4 Clarify
· 5 Design
· 6 Tasks
· 7 Analyze
· 8 Implement
· 9 Verify
· 10 Release
SPECIFICATION.md
Chat+
Enter ↵
AgentClaude Sonnet 4.6 (copilot)
⎇ sifap-modern#142⟳ 0 ⚠ 0Live Share SonarQubeSpaces: 2UTF-8 GitHub Copilot

Antes

Depois

@architect

O que observar
01

02

03

Visual Studio Code · sifap-modernization · @architect
⚲  sifap-modernization
EXPLORER
▾ sifap-modernization
▸ 01-arqueologia
▾ specs
▾ 001-geracao-ciclo-pagamentoU
▤ spec.md
▤ plan.md
▤ tasks.md
▾ .specify
▤ memory/constitution.md
spec.md
Chat+
Enter ↵
AgentClaude Opus 4.8 (copilot)
⎇ sifap-modern#142⟳ 0 ⚠ 0Live Share SonarQubeSpaces: 2UTF-8 GitHub Copilot
02-spec-moderna/bounded-contexts.md @architect · saída
Estágio 2 · Especificação

Mapa de Bounded Contexts · SIFAP 2.0

Produzido pelo @architect a partir de discovery-report.md §7 e dependency-map.md. Arquitetura-alvo: Modular Monolith (ver ADR-001).

Avaliação de hipóteses

HipóteseCoesãoAcoplamentoFreq. mudançaDecisão
A · Cálculo + Pagamento como um único contexto financeiroBaixaMédioDivergenteRejeitado
B · Auditoria embutida em cada contextoAlta (se isolada)Alto (se embutida)EstávelRejeitado
C · Cadastro único para Beneficiário + Dependente + ProgramaAltaBaixo (externo)CoerenteAceito

Conclusões: separar Cálculo e Pagamento (juntá-los criaria um módulo com duas razões de mudança). Auditoria vira contexto próprio com interface de escrita publicada. Cadastro é o aggregate raiz de identidade.

Bounded contexts finais

ContextoResponsabilidadeDados próprios
1 · CadastroCiclo de vida de beneficiários, dependentes e programas; validação de CPF e elegibilidade.BENEFICIARIO (150) · DEPENDENTE · PROGRAMA_SOCIAL (151)
2 · CálculoValor base, fatores (regional, etário, família, renda, Fator-K), descontos (cap 30% exceto judicial), correção IPCA.tabelas de config versionadas · resultados efêmeros
3 · PagamentoCiclo mensal, remessa CNAB 240, conciliação por match triplo, status G/P/E/R/D.PAGAMENTO (152, ~180M reg, particionado)
4 · AuditoriaTrilha append-only de todas as ações; relatórios incluindo exclusões (corrige MYS-010).AUDITORIA (153, append-only, particionada por ano)

Comunicação entre contextos

DeParaMecanismoDados
PagamentoCadastroChamada síncronaBeneficiários elegíveis por competência
PagamentoCálculoChamada síncrona(beneficiarioId, competencia) → valor calculado
CadastroAuditoriaDomain eventInclusão/alteração/exclusão de beneficiário
CálculoAuditoriaDomain eventEvento batch (BT) de cálculo executado
PagamentoAuditoriaDomain eventGeração de ciclo + conciliação

Regra: comunicação cross-context só via interface pública ou domain event, nunca acesso direto a repositório de outro módulo (ver ADR-001, anti-corruption layer).

Decisão registrada

ADR-001 Modular Monolith sobre microservices. Formato MADR, duas opções avaliadas, consequências documentadas.

role para ver os 4 contextos ↓

Antes

Depois

@builder

O que observar
01

02

03

Visual Studio Code · sifap-modernization · @builder · Claude Sonnet 4.6
⚲  sifap-modernization
BATCHPGT.NSN · Natural
240* CALC FATOR REGIONAL, tabela 27 itens, fixa desde 1997
241 IF #COD-REG >= 1 AND #COD-REG <= 25
242 MOVE #TAB-REG(#COD-REG) TO #FATOR-REG
243 ELSE
244 MOVE 1.0000 TO #FATOR-REG
245 END-IF
246
247* CALC FATOR FAMILIAR
248 IF #NUM-DEP = 0
249 MOVE 1.0000 TO #FATOR-FAM
250 ELSE
251 IF #NUM-DEP <= 2
252 COMPUTE #FATOR-FAM = 1.0000 + (#NUM-DEP * 0.0500)
PaymentFactorService.java · Java 21 · Spring 3.3
Chat+
Enter ↵
AgentClaude Sonnet 4.6 (copilot)
⎇ sifap-modern#142⟳ 0 ⚠ 0Live Share SonarQubeSpaces: 2UTF-8 GitHub Copilot

Antes

Depois

@evolution

O que observar
01

02

03

github.com/datacorp/sifap-modern · Issue #142 · GitHub Copilot Coding Agent
Search or jump to… Pull requestsIssuesCodespaces PS
datacorp / sifap-modern CodeIssues 142Pull requests 38Actions
@evolution · VS Code · Claude Sonnet 4.6 (copilot)
04-evolucao/agent-experience-report.md @evolution · saída
Estágio 4 · Evolução · preenchido pela equipe

Relatório de Experiência com GitHub Copilot Agent

Preenchido pela equipe ao final do Estágio 4. Seja honesto: queremos aprender o que funciona e o que não funciona. Avaliação positiva forçada não ajuda ninguém.

1 · Issues criadas e PRs gerados

IssuePRArquivosTestesAjuste manualMerge
#142 Cap descontos 30%#3124SimNãoApós revisão
#143 Auditoria inclui exclusões EX#3186SimPequenoApós revisão

2 · Retrospectiva da equipe (nas palavras da equipe)

Q1
Agente mais útil: o @archaeologist, leu 29 anos de Natural sem inventar regra. Economizou semanas de leitura manual.
Q2
Falha mais surpreendente: um teste gerado que passava sem testar nada de verdade. Pego na revisão.
Q3
O que mudaria: issues mais específicas desde o início. Issue vaga gera PR vago.
Q4
Confiança em produção: 7 de 10, sobe com mais cobertura de teste de equivalência.
Q5
Levar de volta: spec antes de código, sempre. O gate humano não é opcional.

3 · Tipos de falha encontrados

Imports incorretos ou circulares (import alucinado)
Teste que passava sem exercitar a regra
Scope creep, tocou arquivo fora do pedido
Todos pegos na revisão humana antes do merge

4 · Qualidade dos PRs (nota 1-5)

CritérioNota
Corretude do código4
Aderência à arquitetura4
Qualidade dos testes3
Documentação gerada4
Média geral3.8

5 · Usaria o agente novamente?

Sim, para tarefas simples e bem definidas. Para regra fiscal core, sempre com spec, testes de equivalência e revisão humana. O agente é contribuidor da equipe, não aprovador.

6 · Agent vs GitHub Copilot Chat vs Manual

AspectoAgentChatManual
VelocidadeAltaMédiaBaixa
ControleMédioAltoAlto
Quando usarTarefa definidaExploraçãoRegra crítica
role para ver a retrospectiva ↓

Antes

Depois

V

01

02

03

sifap-modern · localhost:3000 · Next.js 15 + Spring Boot 3.3 + PostgreSQL
▰▰ SIFAP 2.0 operator1 · ADM
▤ Beneficiários
▤ Cadastrar
▤ Pagamentos
▤ Ciclos
▤ Auditoria
▤ Relatório Gerencial
Beneficiários / 123.456.789-01
Beneficiária
Maria das Graças Silva
CPF 123.456.789-01 · 64 anos · Salvador, BA
BPCATIVO
Valor mensal
R$ 1.412,00
Próximo pagamento: 02/06/2026
Últimos pagamentos
05/2026R$ 1.412,00PAGO
04/2026R$ 1.412,00PAGO
03/2026R$ 1.412,00PAGO
source_legacy · A mesma Maria do legado. CBENF020.NSP agora vive em BeneficiaryController.findByCpf(). Regras BR-CBENF-001..014 cobertas por BeneficiaryServiceTest.
@dba

O que observar
01

02

03

@dba · extensão PostgreSQL + Azure
Visual Studio Code · PostgreSQL extension · Azure Database for PostgreSQL
⚲  sifap
POSTGRESQL · CONNECTIONS
▾ AzureDB
▾ 🟢 sifap-prod
▾ Databases
▾ sifap
▾ Schemas
▾ beneficiario
▾ Tables
▤ beneficiary
▤ beneficiary_dependent
▤ social_program
▤ payment
▤ audit_log
@dba · PostgreSQL Query Editor
Chat+
Connected to sifap-prod/sifap (read/write)
Enter ↵
AgentClaude Sonnet 4.6 (copilot)
⎇ sifap-modern#142⟳ 0 ⚠ 0Live Share SonarQubeSpaces: 2UTF-8 GitHub Copilot

Antes

Depois

VI

Qual fatia primeiro

Não comece pelo mais crítico. Comece pela fatia que prova o método sem te quebrar.

A primeira fatia é uma aposta de aprendizado, não de valor. Escolha algo pequeno o bastante para terminar em dias, real o bastante para convencer o time.

✓ Escolha se

Tem regra de negócio clara e testável (ex: cálculo de desconto), poucos integrantes downstream, e alguém vivo que conhece o domínio.

✗ Evite se

É o motor de pagamento inteiro, toca 180M de registros, ou ninguém sabe explicar por que funciona. Isso vem depois, com o método já provado.

→ No SIFAP seria

CALCDSCT: o cálculo de descontos. Regra isolada, divergência conhecida (cap 30% vs judicial), e um golden master fácil de montar.

Segunda de manhã, na prática

Três horizontes, comandos reais. GitHub Copilot é o ponto de partida; Azure entra conforme a complexidade.

01Semana 1

Habilite o GitHub Copilot, suba os 4 agentes custom num repo de teste e rode o @archaeologist na primeira fatia.

# habilita os agentes custom no repo
$ cp agents/*.md .github/agents/
$ gh extension install github/gh-copilot
# no GitHub Copilot Chat:
@archaeologist mapeie CALCDSCT.NSN
Saída: regras extraídas + mistérios da fatia.
02Mês 1

Instale o Spec-Kit, transforme os achados em spec assinada e ponha um CI mínimo no GitHub Actions.

# instala o método e o motor
$ uvx --from specify-cli specify init
$ npm i -g specky-sdd && specky install
# gera e valida a spec
/speckit.specify · /speckit.plan
Saída: spec.md rastreável + CI verde.
03Quando crescer

Com o método provado, integre o Azure conforme a fatia exigir: runtime, segredos e observabilidade.

# provisiona o que a fatia pedir
$ azd init && azd up
# AI Foundry · App Service
# Key Vault · App Insights
infra/ provisionada por IaC
Saída: fatia em produção, observável.
O que mata o projeto

Quatro armadilhas afundam modernização de legado. Todas têm o mesmo antídoto: entender antes de construir.

Big bang: reescrever tudo de uma vez, em paralelo ao legado que segue mudando.

Fatie. Uma regra por vez, com golden master contra o legado. Strangler fig, não substituição total.

Confiar no código como spec: "o sistema é a documentação, vamos só traduzir."

O código tem 44 mistérios e 9 divergências. Cada um vira [NEEDS CLARIFICATION], não uma suposição.

Vibe coding no legado: pedir pro agente "modernizar" sem spec nem teste de equivalência.

Spec primeiro, validada por schema. O agente só implementa o que a EARS declara, e o teste prova paridade.

Corrigir bugs em silêncio: "isso tá errado no legado, vou só consertar no novo."

Aquele "bug" pode ser regra fiscal de 20 anos. Escale a decisão; preserve ou corrija com respaldo, nunca por palpite.

Como você sabe que funcionou

Modernização sem métrica é fé. Estas quatro provam que a fatia está pronta, e seguem o método além dela.

100% das regras com source_legacy rastreável até arquivo:linha
paridade no golden master: novo e legado dão o mesmo resultado, centavo a centavo
0 mistérios não resolvidos virando código, todos viram decisão ou clarificação
dívida de intenção caindo a cada fatia, medida e visível no painel

Qual fatia do seu legado você levaria pro @archaeologist primeiro?

Essa é a fatia que começa segunda de manhã.

Encerramento

O método é entender antes de construir.

Contato

Paula Silva

Software Global Black Belt · Microsoft

paulasilva@microsoft.com

Próximo passo

Workshop de uma fatia

Um dia, time real, legado real, primeira fatia rodando

.github/copilot
agents:
  - { name: archaeologist, tools: [read, search] }
  - { name: architect,     tools: [read, search, edit] }
  - { name: builder,       tools: [read, search, edit, execute] }
  - { name: evolution,     tools: [read, search, edit, execute, web] }
speckit: { version: latest, integration: copilot }
Use para navegar · O overview · N notas
1 / 20