Artefatos e Sessões
Cada execução grava artefatos em um diretório de trabalho com timestamp:
migration-results/<timestamp>/
Artefatos obrigatórios:
migration-log.jsonlsummary.jsonfailed-tags.txt
Esses arquivos continuam sendo o contrato operacional público de cada execução. Runtime events podem espelhar o mesmo
estado para consumidores internos, mas operadores ainda devem tratar esses artefatos e gfrm resume como fonte de
verdade.
summary.json
Expectativas:
- schema version
2 - metadados do comando executado
- retry command quando houver falhas
- caminhos de artefatos que correspondem aos arquivos gravados na execução
Estrutura e Campos
Cada summary.json inclui:
{
"schema_version": 2,
"command": "migrate",
"order": "GitHub -> GitLab",
"source": "github.com/owner/repo",
"target": "gitlab.com/owner/repo",
"tag_range": {
"from": "<start>",
"to": "<end>"
},
"dry_run": false,
"skip_tag_migration": false,
"skip_release_migration": false,
"skip_release_asset_migration": false,
"counts": {
"tags_created": 10,
"tags_skipped": 2,
"tags_failed": 1,
"tags_would_create": 0,
"releases_created": 8,
"releases_updated": 0,
"releases_skipped": 2,
"releases_failed": 1,
"releases_would_create": 0
},
"paths": {
"jsonl_log": "migration-results/2026-04-20T20:30:00Z/migration-log.jsonl",
"checkpoint": "migration-results/2026-04-20T20:30:00Z/.checkpoint",
"workdir": "migration-results/2026-04-20T20:30:00Z",
"failed_tags": "migration-results/2026-04-20T20:30:00Z/failed-tags.txt"
},
"failed_tags": ["v2.3.0", "v3.1.0"],
"retry_command": "gfrm resume",
"retry_command_shell": "bash"
}
Campos principais:
schema_version: Versão do contrato (sempre2)command: Se foimigrateouresumeorderesource/target: Referências do provider e repositóriotag_range: Intervalo semver para filtragem de tags (<start>e<end>representam sem limite)dry_run: Se a execução estava em modo simulaçãoskip_tag_migration: Se a migração de tags foi pulada (de--skip-tags)skip_release_migration: Se a migração de releases foi pulada (de--skip-releases)skip_release_asset_migration: Se a migração de assets de releases foi pulada (de--skip-release-assets)counts: Divisão dos resultados da migração- Tags/releases criadas, puladas, falhadas ou que seriam criadas (dry-run)
- Apenas tags/releases não puladas pelos flags estão incluídas
paths: Localizações de todos os artefatosfailed_tags: Lista ordenada de tags que falharam (vazia se todas tiveram sucesso)retry_command: Comando de shell para retomar a migração (ex:gfrm resume)retry_command_shell: Dica de shell para o comando de retry (bashoupowershell)
Impacto dos flags de skip em retry:
Quando os flags skip_* são definidos, os contadores refletem itens que foram realmente migrados. Quando você retoma com gfrm resume:
- O contexto da sessão salva preserva os flags de skip do comando
migrateinicial - Itens que falharam da fase pulada não são retentados (ex: se
--skip-releasesfoi definido, apenas falhas de tags estão emfailed-tags.txt) - Você pode alterar os flags de skip na retomada para mudar o que será retentado (ex: retentar release depois de corrigir um problema temporário de asset)
Triagem e Retry
Campos comuns para inspecionar durante a triagem:
retry_commandpara continuar a execução comgfrm resumeskip_tag_migration,skip_release_migration,skip_release_asset_migrationpara entender quais fases estavam ativas- contadores de tags e releases para entender se a execução parou antes ou depois do início da publicação
- lista
failed_tagse arquivofailed-tags.txtpara identificar quais itens precisam de atenção
Quando o forge de destino não tem o histórico de commits necessário para tags pendentes, summary.json registra a
falha de preflight e deve ser lido junto com failed-tags.txt. O comando de retry verificará novamente o histórico de commits antes de prosseguir.
Runtime events
Este runtime também expõe um stream ordenado de eventos por execução para observabilidade, testes e futuros consumidores de GUI.
- sinks suportados nesta entrega: console, JSONL, in-memory e reducer
- os payloads dos eventos podem espelhar mudanças de status e caminhos de artefatos como
summary.jsonefailed-tags.txt - runtime events complementam a observabilidade, mas não substituem
summary.json,failed-tags.txt,migration-log.jsonlnemgfrm resume
Arquivos de sessão
Por padrão, o estado retomável é salvo em ./sessions/last-session.json, salvo se --session-file for usado.
Use gfrm resume para continuar trabalho incompleto. Não reexecute migrate apenas para recuperar uma execução parcial.
Se precisar diagnosticar por que um retry ainda não pode prosseguir, inspecione o arquivo de sessão junto com
summary.json e migration-log.jsonl.