"Use when running a full core drift analysis, generating an ADR candidate for pattern promotion, or comparing pattern maturity across projects"
Resources
1Install
npx skillscat add marciohideaki/enterprise-hseos/enterprise-governance-agent-skills-core-drift Install via the SkillsCat registry.
Core Drift — Full Reference
Tier 2: use para análise de promoção completa, geração de ADR candidato, ou quando SKILL-QUICK não for suficiente.
1. Core Registry Protocol
O Core Registry vive em {vault}/_cores/. É a fonte de verdade sobre o que cada core repo oferece.
Estrutura:
_cores/
README.md ← índice da camada, hierarquia de dependência
platform-core.md ← contratos agnósticos (auth, logging, messaging, observability)
backend-core.md ← abstrações backend por stack (.NET, Java, Node, Go, PHP)
frontend-core.md ← padrões React/TypeScript
design-system-core.md ← tokens visuais e componentes
mobile-core.md ← padrões React Native e Flutter
promotion-backlog.md ← fila de candidatos a promoçãoFormato de cada arquivo de core:
## O Que Oferece— módulos disponíveis com status## Consumo Atual— quais projetos usam e como## Gaps Conhecidos— o que falta, candidatos a implementar## Candidatos de Entrada— features de projetos que deveriam migrar para este core
Regra de leitura: ler apenas o core relevante ao domínio da task. Nunca carregar todos os cores simultaneamente.
2. Pre-Implementation Check (GHOST)
Protocolo completo antes de implementar qualquer story com código novo:
2.1 Identificar domínio da story
Mapear a story para os domínios técnicos: messaging, cache, persistence, auth, compliance, UI, observability, etc.
2.2 Consultar FEATURE-CATALOG
Ler: {vault}/_index/FEATURE-CATALOG.md
Buscar: feature com nome similar ao que será implementado
Verificar: coluna "Fonte"Resultado A — Fonte = core/{repo}:
→ Feature está no core. NÃO reimplementar.
→ Ler _cores/{repo}.md §"Como Consumir" para instruções.
→ Se projeto ainda não usa o core: implementar o consumo, não a feature.
Resultado B — Fonte = project/{nome}:
→ Feature existe em projeto. Avaliar reuso vs reimplementação.
→ Ler _features/{slug}.md para localização exata do código.
→ Se for copiar: documentar origem no código e em decisions.md do projeto.
→ Se for reimplementar por razão técnica: registrar ADR local.
Resultado C — Feature não encontrada no FEATURE-CATALOG:
→ Implementar normalmente.
→ Registrar internamente como "feature nova" para avaliação QUILL ao fim do epic.
2.3 Verificar Gaps nos cores relevantes
Ler: {vault}/_cores/{core-relevante}.md §"Gaps Conhecidos"Se a story resolve um Gap documentado:
- Implementar seguindo as convenções do core
- Ao fim do epic, QUILL deve propor promoção com prioridade alta
3. Post-Epic Evaluation (QUILL)
Protocolo ao encerrar Phase 10:
3.1 Listar features novas do epic
Extrair do trabalho do epic todas as implementações que não existiam antes.
3.2 Para cada feature nova
Verificação 1 — Já está em algum core?
Buscar em FEATURE-CATALOG coluna "Fonte" = core/*- Se sim e o projeto não estava usando: registrar como drift em
gotchas.md - Se sim e o projeto estava usando: OK, nenhuma ação
Verificação 2 — É candidata a promoção?
Critérios (qualquer um suficiente para candidatura):
- 2+ projetos já usam a mesma implementação
- Resolve Gap documentado em
_cores/ - Domain-agnostic + usado em contexto genérico (não regra de negócio)
- Implementação é de qualidade production-grade
Verificação 3 — Quantos projetos já usam?
Buscar no FEATURE-CATALOG e nos módulos dos outros projetos.
3.3 Registrar candidatos
Append em {vault}/_cores/promotion-backlog.md:
| {YYYY-MM-DD} | {feature} | {projeto-origem} | {N projetos} | {core-alvo} | {critério} | candidato |3.4 Gerar ADR candidato (se 3+ projetos ou gap crítico)
Criar {vault}/_decisions/hseos/ADR-promote-{feature}-{YYYY-MM-DD}.md:
---
tags: [decision, hseos, core-promotion]
status: draft
created: YYYY-MM-DD
---
# Proposta: Promover {Feature} para {core-alvo}
**Tipo:** Core Promotion Proposal
**Gerado por:** HSEOS QUILL — Phase 10, epic {epic-id}
## Contexto
{Feature} foi implementada em {projeto-origem} e identificada em {N} projetos do portfólio:
- {projeto1}: {caminho}
- {projeto2}: {caminho}
## Proposta
Promover a implementação canônica de {projeto-origem} para `{core-alvo}/{módulo}/`.
## Justificativa
- Domain-agnostic: {explicação}
- Reuso confirmado: {N} projetos
- {outros critérios}
## Impacto
- Projetos que precisariam migrar: {lista}
- Esforço estimado de migração: {baixo/médio/alto}
- Risco de breaking change: {sim/não}
## Reversibilidade
{Fácil/Difícil} — {explicação}
## Próximos Passos
- [ ] Revisão humana desta proposta
- [ ] Se aprovado: abrir PR em {core-alvo} com implementação
- [ ] Atualizar FEATURE-CATALOG coluna "Fonte" após merge
- [ ] Migrar projetos consumidores4. Promotion Criteria — Guia Completo
Promover ao core (todos necessários):
- Domain-agnostic — não contém regra de negócio específica
- Testado em produção ou POC estável — não é experimento
- 2+ projetos usam OU resolve Gap documentado no core
- Human reviewed — QUILL propõe, humano decide
- Sem breaking changes para projetos existentes (ou breaking change justificado com plano de migração)
NÃO promover ao core:
- Workaround temporário
- Específico de regulação de um domínio (KYC, AML, CTR — ficam em projects)
- Implementação ainda experimental
- Feature com dívida técnica conhecida que seria "propagada" para o core
Zona cinza — escalar para humano:
- Feature FinTech usada em 3+ projetos (KYC, AML) — pode ser
fintech-coreno futuro? - Feature Python sem representação em backend-core — falta de cobertura do core ou projeto específico?
5. Promotion ADR Template
Ver §3.4 acima para o template completo.
Após gerado, registrar no activity log:
## [YYYY-MM-DD HH:MM] decision | ADR candidato de promoção: {feature} → {core}6. Drift Detection
Drift = projeto reimplementou algo que já existe (ou deveria existir) em algum core.
Tipos de drift:
| Tipo | Exemplo | Severidade |
|---|---|---|
| Reimplementação exata | Projeto C copiou Lock de projeto A sem registrar | Média |
| Adaptação não documentada | Projeto usou padrão do core mas modificou sem ADR | Alta |
| Ignorância do core | Feature nova sem consultar FEATURE-CATALOG | Baixa |
| Versão desatualizada | Core foi atualizado, projeto ficou para trás | Média |
Registro de drift:
Append em {vault}/_knowledge/projects/{nome}/gotchas.md:
### Drift: {feature} reimplementada (deveria usar {core}/{módulo})
**Problema:** {feature} foi implementada localmente em vez de consumir {core}/{módulo}.
**Solução/Contexto:** Migrar para {core}/{módulo} quando houver oportunidade. Ver {FEATURE-CATALOG link}.7. Escalation
Parar e escalar para humano quando:
- Uma feature candidata a promoção introduziria breaking change em 2+ projetos
- O core repo alvo está em estado "planned" (não existe ainda)
- Há conflito entre implementações de dois projetos (qual é a canônica?)
- A promoção requereria mudanças na governança do core repo