Migração OneDrive → Cadencia Cloud (2026-08-09) — processo replicável¶
O que aconteceu¶
12 pastas de cliente migradas de OneDrive\Documentos\Customer Success\ (regra anterior DEV-1043) para D:\PD-Cloud\Clientes\ (regra atual DEV-1726, na CAIXA1). Fonte migrou de OneDrive comercial pra Cadencia Cloud self-hosted.
Motivo: OneDrive Files On-Demand deixava placeholders (arquivos não baixados localmente) → backup restic pegava só o que estava baixado, cobertura incompleta. Adicionalmente: share link OneDrive é ruim pro cliente externo (exige conta MS ou expiração toscas), e OneDrive só sincroniza com notebook ligado.
Solução: consolidar em Cadencia Cloud (CAIXA1 24×7, HD dedicado, HTTPS via Filebrowser+Tunnel, backup incluso).
Timeline¶
| Passo | O quê |
|---|---|
| Análise superfície | grep de refs OneDrive em skills/foundation/CLAUDE.md dos clientes |
| Habilitar share SMB | New-SmbShare -Name PDCloud -Path D:\PD-Cloud -FullAccess USUARIO na CAIXA1 |
| Migração física | robocopy do notebook → \\caixa1.taild6079b.ts.net\PDCloud\Clientes\ (SMB Tailscale) |
| Validação | count files + soma tamanho: 20 arquivos = 6,37 MB (bate origem) |
| Atualizar 10 CLAUDE.md clientes | Script Python replace() — path OneDrive → path Cadencia Cloud |
Atualizar skill /ativar-cliente | Skill canônica em times/cs/skills/ + junction em stamper/skills/ + .opencode/agents/ |
| Atualizar docs canônicas | _core/CLIENT-FILES-POLICY.md reescrita + _core/CAIXA1-STORAGE-MAP.md consolidado |
| Atualizar foundation | times/cs/foundation/padrao-pasta-cliente.md + template-manual-da-marca.md |
| Atualizar decisions | Nova decisão D em times/cs/memory/decisions.md (append-only) |
| Atualizar worker | times/cs/workers/conferencia-cobranca-pasta/state.json (path Ariane) |
| Limpeza refs OneDrive | CLAUDE.md raiz + AGENTS.md + MEMORY.md + reference_caixa1_storage_map.md |
| Commit + push | 2 commits em main (feat + chore de limpeza) |
| Publicar cadencia-docs | Cópia dos 5 docs pra docs/_infra/backup-caixa1/ |
Descoberta importante: Files On-Demand placeholder¶
OneDrive Files On-Demand — feature que deixa arquivos como "shortcuts" na pasta local sem baixar o conteúdo. Ícone com nuvem em vez de check verde. Arquivo aparece no Explorer mas ocupa 0 bytes locais.
Consequência pro backup/robocopy: só o que estava marcado "Always keep on this device" (ícone verde) foi migrado. Placeholders NÃO foram — robocopy não força download, só copia o que está localmente presente.
No caso: 20 arquivos migrados = ~6 MB. Suspeita: OneDrive tem MUITO mais que isso não-baixado. Pra migrar 100%, precisa forçar download antes:
# Forçar download recursivo de tudo em Customer Success\
Get-ChildItem "C:\Users\felip\OneDrive\Documentos\Customer Success" -Recurse -File |
ForEach-Object { attrib -P +A $_.FullName }
Depois espera OneDrive baixar tudo (pode levar horas dependendo do volume) → refaz robocopy → migração 100% completa.
Estado atual: OneDrive fica como fallback read-only até 2026-09-09. Se algum cliente pedir material antigo que não foi migrado, forçar download só desse arquivo → mover manual pra Cadencia Cloud.
Processo replicável (se precisar migrar outra fonte no futuro)¶
Passo 1 — Preparar destino¶
# Criar estrutura base na CAIXA1
ssh vps-local 'powershell -Command "New-Item -ItemType Directory -Force -Path D:\PD-Cloud\<NovoEscopo>"'
# Habilitar SMB share (se ainda não)
ssh vps-local 'powershell -Command "New-SmbShare -Name PDCloud -Path D:\PD-Cloud -FullAccess USUARIO -ErrorAction SilentlyContinue"'
# Mapear no notebook
$pwd = op item get 'VPS Local - senha acesso' --vault Hosts --fields password --reveal
net use '\\caixa1.taild6079b.ts.net\PDCloud' /user:USUARIO $pwd
Passo 2 — Migrar arquivos¶
robocopy "<origem>" "\\caixa1.taild6079b.ts.net\PDCloud\<NovoEscopo>" /E /NFL /NDL /NJH /NJS /MT:8 /R:1 /W:2
Flags: - /E — recursivo incluindo pastas vazias - /NFL /NDL — suprime lista de files/dirs no log - /NJH /NJS — suprime header/summary - /MT:8 — 8 threads paralelas - /R:1 /W:2 — 1 retry, 2s de wait
Passo 3 — Validar contagem¶
$srcCount = (Get-ChildItem "<origem>" -Recurse -File -Force).Count
$dstCount = (Get-ChildItem "\\caixa1.taild6079b.ts.net\PDCloud\<NovoEscopo>" -Recurse -File -Force).Count
Write-Host "src=$srcCount dst=$dstCount match=$($srcCount -eq $dstCount)"
Se não bater: investigar antes de prosseguir (comum: Files On-Demand, permissões, symlinks quebrados).
Passo 4 — Atualizar references no framework¶
grep -rln "<path-antigo>" times/ stamper/ _core/ .opencode/ --include="*.md" --include="*.py" --include="*.ps1" --include="*.json"- Script Python
replace()sobre a lista - Verificar refs residuais (
grepde novo) - Skills com refs: canônica em
times/<squad>/skills/E junction emstamper/skills/E cópia em.opencode/agents/(regenerar da fonte)
Passo 5 — Atualizar CLAUDE.md e decisions¶
CLAUDE.mdraiz: seção da regra vigenteAGENTS.md: mirror_core/<POLICY>.md: reescrever regra clean; menção histórica só em## Históricotimes/<squad>/memory/decisions.md: append nova decisão com contexto + racional + o que muda
Passo 6 — Commit + espelhar¶
git add -A && git commit -m "feat(<squad>): migrar <origem> → <destino>"
git push
# Cópia em cadencia-docs se público-consumível
Passo 7 — Definir prazo de aposentadoria da fonte antiga¶
- Fonte antiga fica read-only por N dias como fallback (padrão: 30 dias)
- Depois: arquivar em
G:\PD-Arquivo\legacy-<origem>\na CAIXA1 e apagar da origem
Anti-padrões evitados¶
- ❌ Migrar sem validar contagem — descobre depois que Files On-Demand deixou 80% pra trás
- ❌ Apagar fonte imediatamente — sempre 30 dias de fallback
- ❌ Não atualizar CLAUDE.md dos clientes — próximo agente que abre cliente lê path errado
- ❌ Deixar refs históricas nas regras vigentes — agente confuso mistura passado e presente
- ❌ Migrar 1 cliente por vez — inconsistência temporária, gap de skill (funciona só pra alguns)
- ❌ Não atualizar
.opencode/agents/— Codex/OpenCode leem daí, ficam com skill velha
Custos do processo (referência)¶
Migração 2026-08-09: - Tempo total: ~2h (planejamento + execução + limpeza) - Downtime cliente: 0 (migração paralela, sem interrupção) - Risco de perda: 0 (fonte original preservada como fallback) - Rollback path: reverter regra + skills apontarem OneDrive de novo (todos os dados originais intactos)
Refs¶
- Regra anterior (histórico): DEV-1043 — OneDrive
Customer Success\ - Regra atual: DEV-1726 — Cadencia Cloud
D:\PD-Cloud\Clientes\ - Decisão detalhada:
times/cs/memory/decisions.md§ 2026-08-09 - Política atual:
_core/CLIENT-FILES-POLICY.md - Matriz storage:
_core/CAIXA1-STORAGE-MAP.md - Session log:
sessions-log/2026-08-09/backup-cloud-caixa1-f0-f6-done...md