HUG-039 — contrato de execução
Plano: v3.0 · fase: C · lane: B · prioridade: first_slice.
Estado inicial: backlog; nenhuma implementação ou qualificação declarada. A aprovação/merge do PR de planejamento e as pré-condições do WP precedem execução. Fechar por evidência, não por merge automático.
Contrato imutável: work package completo. Fonte normativa.
Identidade do plano: ddcc59c538f269881c05b98017c11c79dae67a7339257facc22a2b1d2a9a7889. Commit da especificação: 0b7f629dd0259515608517bcd692e5ec4d2b6ee3.
Hugit é 100% standalone. Intent = goal capturado por hook; nenhuma dependência de CoreLink, conta, runner remoto ou registro voluntário pelo LLM.
Acompanhamento: #379.
Dependências e admissão
#396 (HUG-017), #399 (HUG-020), #407 (HUG-027), #415 (HUG-035)
- Todos os predecessores possuem evidência integrada e interfaces versionadas compatíveis.
- Owner B aceita write-set exato e budget B-EXPORT; HUG-001 distingue arquivos existentes dos novos.
- Os casos P/N/Q/R e os oráculos estão especificados antes do dispatch; fixtures e testes executáveis são entregues pelo próprio pacote ou predecessor. Documentação/descoberta usa oráculos de artefato, não um falso bug de runtime.
- Qualquer dado de fonte ainda não observado bloqueia o consumidor; descobrir no pacote predecessor, sem inventar payload.
- Freeze runtime de HUG-059 já integrado é obrigatório.
Protocolos: P00@3.0 · 5d737267087e24bbcca9548488c719f4cca46fa3435a0ccf31b7b98696fde5cc, P02@3.0 · 85eae8e64cbdfe8f597e2811f3a482d40f5096373e9f43a74890ba3f3d19e8f8, P06@3.0 · 2e6d36db28e0cd10d7ec732507b96a8428c4c6dcc6ad7e0c0a9b4cdb5cf27fc9, P08@3.0 · 0d6a0d18c9b72c52ff3eef81f0b156b20e753a501bbd95027a4da8ba2b0c46e2
Outputs e coordenação
crates/hugit-cli/src/export/bundle_v2.rs
crates/hugit-cli/src/restore.rs
scripts/verify_bundle_v2.py
Caminhos propostos: HUG-001 resolve existentes/novos contra o checkout. Cargo.lock/Cargo.toml/lib.rs/main.rs/registries: solicitar patch ao integrador; não editar fora da lease de arquivo.
Unidades verificáveis
- HUG-039.S1 — Backup privado byte-preserving separado de derivado compartilhável sanitizado; selection cut materializado por SQLite backup API e pin set, sem longa read transaction durante cópia.
- HUG-039.S2 — Export seleciona e copia sob leases em staging; publica somente pelo gate P06 com journal. Restore separa recovery/clone/viewer, policy authority preservada/cold unknown e identidade de origem versus collector.
- HUG-039.S3 — Verificador offline inspeciona manifest/path/digest/omissões sem executar conteúdo; destino existente recusa; cold policy unknown bloqueia privado; grant/publish final e revoke são coordenados pelo gate P06, não check isolado de epoch.
Completeness criteria
-
HUG-039-CC01 — obrigatório: Três modos recovery/clone/viewer e import namespaces implementados.
Assertions: A-HUG-039-CC01. Famílias: T-HUG-039-P.
-
HUG-039-CC02 — obrigatório: Pacote carrega histórico canônico ou declaração de derivação, digest e versões.
Assertions: A-HUG-039-CC02. Famílias: T-HUG-039-P.
-
HUG-039-CC03 — obrigatório: Restore não depende de HUG-018: pacote v2 novo funciona; migrador usa bootstrap HUG-058 separado.
Assertions: A-HUG-039-CC03. Famílias: T-HUG-039-P.
Success criteria
-
HUG-039-SC01 — obrigatório: Mesmo corpus hook→run→report→pack exporta e restaura offline; duas restaurações produzem novos eventos sem colisões e repeated import não duplica fatos.
Assertions: A-HUG-039-SC01. Famílias: T-HUG-039-P.
-
HUG-039-SC02 — obrigatório: GC/export race, policy revoke, blob faltante, JSON sensível, case collision e archive traversal resultam erro ou omitted explícito, nunca backup completo falso.
Assertions: A-HUG-039-SC02. Famílias: T-HUG-039-N.
Quality standards
-
HUG-039-QS01 — obrigatório: Cada blob do manifesto é retido sob pin/lease até finish; transação SQL curta.
Assertions: A-HUG-039-QS01. Famílias: T-HUG-039-Q.
-
HUG-039-QS02 — obrigatório: Backups já entregues são limite de revogação, informado no manifest.
Assertions: A-HUG-039-QS02. Famílias: T-HUG-039-Q.
-
HUG-039-QS03 — obrigatório: P02/P08/P06: selection pin+DB snapshot, cópia sob quota de destino fora de reader longo/gate; publicação final pelo gate de entrega compartilhado com revoke e journal; no-overwrite por default.
Assertions: A-HUG-039-QS03. Famílias: T-HUG-039-Q.
Definition of Done — DoD
-
HUG-039-DOD01 — obrigatório: Fechar HUG-039 somente quando a implementação/artefato de 'Backup/export/restore por corte com identidade nova de produtor' satisfaz suas assertions e observáveis obrigatórios; uma suite verde sem resultado individual não fecha os axiomas.
Assertions: A-HUG-039-DOD01. Famílias: T-HUG-039-Q.
-
HUG-039-DOD02 — obrigatório: Todos os outputs crates/hugit-cli/src/export/bundle_v2.rs, crates/hugit-cli/src/restore.rs, scripts/verify_bundle_v2.py entregues nos write sets resolvidos; erros de P00, P02, P06, P08 e mudanças de interface revisados pelo owner do contrato.
Assertions: A-HUG-039-DOD02. Famílias: T-HUG-039-Q.
-
HUG-039-DOD03 — obrigatório: Recovery deste pacote ensaiado: Antes de atomic publish: remover staging por ownership e liberar pins; após pacote entregue não há revogação retroativa, emitir manifesto corrigido. Restore falho mantém destino original intocado; nunca fazer downgrade implícito de formato.
Assertions: A-HUG-039-DOD03. Famílias: T-HUG-039-R.
-
HUG-039-DOD04 — obrigatório: Qualificar HUG-039 sobre o sujeito A identificado por digest; anexar em B assertions verificadas e aprovação de revisor diferente do autor. Resultados não alteram A; revalidar no candidato final as obrigações atingidas. Nenhum axioma obrigatório dispensado.
Assertions: A-HUG-039-DOD04. Famílias: T-HUG-039-Q.
Invariants
-
HUG-039-INV01 — obrigatório: Restore não reativa hooks do autor.
Assertions: A-HUG-039-INV01. Famílias: T-HUG-039-N.
-
HUG-039-INV02 — obrigatório: História preservada não reutiliza identidade de novos producers.
Assertions: A-HUG-039-INV02. Famílias: T-HUG-039-N.
-
HUG-039-INV03 — obrigatório: Export sanitizado não se anuncia como cadeia original byte-idêntica.
Assertions: A-HUG-039-INV03. Famílias: T-HUG-039-N.
Verificação e evidências
T-HUG-039-N: linux-x64-ext4, macos-arm64-apfs, macos-intel-apfs, windows-x64-ntfs; etapa pre_promotion.
T-HUG-039-P: linux-x64-ext4, macos-arm64-apfs, macos-intel-apfs, windows-x64-ntfs; etapa pre_promotion.
T-HUG-039-Q: linux-x64-ext4, macos-arm64-apfs, macos-intel-apfs, windows-x64-ntfs; etapa pre_promotion.
T-HUG-039-R: linux-x64-ext4, macos-arm64-apfs, macos-intel-apfs, windows-x64-ntfs; etapa pre_promotion.
Catálogo detalhado, preparo, predicados e artifacts: contrato completo. Evidência por sujeito A, assertion, célula e tentativa; pacote B destacado, promoção C separada. Não usar Closes em PR intermediário.
Budget e recovery
P02/P08/P06: seleção protegida e snapshot independente; reserva de destino e staging fora do gate; rename/readback final coordenado com revoke e journal; nenhuma transação SQL por toda cópia.
Rollback/recovery específico: Antes de atomic publish: remover staging por ownership e liberar pins; após pacote entregue não há revogação retroativa, emitir manifesto corrigido. Restore falho mantém destino original intocado; nunca fazer downgrade implícito de formato.
Política de fechamento
Todos os cinco axiomas e suas assertions devem estar demonstrados no candidato integrado, com recovery ensaiado e revisão distinta da autoria. Suite verde ou issue fechada não substitui a qualificação. HUG-056 só fecha após publicação e pós-verificação.
HUG-039 — contrato de execução
Plano: v3.0 · fase: C · lane: B · prioridade: first_slice.
Estado inicial: backlog; nenhuma implementação ou qualificação declarada. A aprovação/merge do PR de planejamento e as pré-condições do WP precedem execução. Fechar por evidência, não por merge automático.
Contrato imutável: work package completo. Fonte normativa.
Identidade do plano:
ddcc59c538f269881c05b98017c11c79dae67a7339257facc22a2b1d2a9a7889. Commit da especificação:0b7f629dd0259515608517bcd692e5ec4d2b6ee3.Hugit é 100% standalone. Intent = goal capturado por hook; nenhuma dependência de CoreLink, conta, runner remoto ou registro voluntário pelo LLM.
Acompanhamento: #379.
Dependências e admissão
#396 (
HUG-017), #399 (HUG-020), #407 (HUG-027), #415 (HUG-035)Protocolos: P00@3.0 ·
5d737267087e24bbcca9548488c719f4cca46fa3435a0ccf31b7b98696fde5cc, P02@3.0 ·85eae8e64cbdfe8f597e2811f3a482d40f5096373e9f43a74890ba3f3d19e8f8, P06@3.0 ·2e6d36db28e0cd10d7ec732507b96a8428c4c6dcc6ad7e0c0a9b4cdb5cf27fc9, P08@3.0 ·0d6a0d18c9b72c52ff3eef81f0b156b20e753a501bbd95027a4da8ba2b0c46e2Outputs e coordenação
crates/hugit-cli/src/export/bundle_v2.rscrates/hugit-cli/src/restore.rsscripts/verify_bundle_v2.pyCaminhos propostos: HUG-001 resolve existentes/novos contra o checkout. Cargo.lock/Cargo.toml/lib.rs/main.rs/registries: solicitar patch ao integrador; não editar fora da lease de arquivo.
Unidades verificáveis
Completeness criteria
HUG-039-CC01 — obrigatório: Três modos recovery/clone/viewer e import namespaces implementados.
Assertions:
A-HUG-039-CC01. Famílias:T-HUG-039-P.HUG-039-CC02 — obrigatório: Pacote carrega histórico canônico ou declaração de derivação, digest e versões.
Assertions:
A-HUG-039-CC02. Famílias:T-HUG-039-P.HUG-039-CC03 — obrigatório: Restore não depende de HUG-018: pacote v2 novo funciona; migrador usa bootstrap HUG-058 separado.
Assertions:
A-HUG-039-CC03. Famílias:T-HUG-039-P.Success criteria
HUG-039-SC01 — obrigatório: Mesmo corpus hook→run→report→pack exporta e restaura offline; duas restaurações produzem novos eventos sem colisões e repeated import não duplica fatos.
Assertions:
A-HUG-039-SC01. Famílias:T-HUG-039-P.HUG-039-SC02 — obrigatório: GC/export race, policy revoke, blob faltante, JSON sensível, case collision e archive traversal resultam erro ou omitted explícito, nunca backup completo falso.
Assertions:
A-HUG-039-SC02. Famílias:T-HUG-039-N.Quality standards
HUG-039-QS01 — obrigatório: Cada blob do manifesto é retido sob pin/lease até finish; transação SQL curta.
Assertions:
A-HUG-039-QS01. Famílias:T-HUG-039-Q.HUG-039-QS02 — obrigatório: Backups já entregues são limite de revogação, informado no manifest.
Assertions:
A-HUG-039-QS02. Famílias:T-HUG-039-Q.HUG-039-QS03 — obrigatório: P02/P08/P06: selection pin+DB snapshot, cópia sob quota de destino fora de reader longo/gate; publicação final pelo gate de entrega compartilhado com revoke e journal; no-overwrite por default.
Assertions:
A-HUG-039-QS03. Famílias:T-HUG-039-Q.Definition of Done — DoD
HUG-039-DOD01 — obrigatório: Fechar HUG-039 somente quando a implementação/artefato de 'Backup/export/restore por corte com identidade nova de produtor' satisfaz suas assertions e observáveis obrigatórios; uma suite verde sem resultado individual não fecha os axiomas.
Assertions:
A-HUG-039-DOD01. Famílias:T-HUG-039-Q.HUG-039-DOD02 — obrigatório: Todos os outputs crates/hugit-cli/src/export/bundle_v2.rs, crates/hugit-cli/src/restore.rs, scripts/verify_bundle_v2.py entregues nos write sets resolvidos; erros de P00, P02, P06, P08 e mudanças de interface revisados pelo owner do contrato.
Assertions:
A-HUG-039-DOD02. Famílias:T-HUG-039-Q.HUG-039-DOD03 — obrigatório: Recovery deste pacote ensaiado: Antes de atomic publish: remover staging por ownership e liberar pins; após pacote entregue não há revogação retroativa, emitir manifesto corrigido. Restore falho mantém destino original intocado; nunca fazer downgrade implícito de formato.
Assertions:
A-HUG-039-DOD03. Famílias:T-HUG-039-R.HUG-039-DOD04 — obrigatório: Qualificar HUG-039 sobre o sujeito A identificado por digest; anexar em B assertions verificadas e aprovação de revisor diferente do autor. Resultados não alteram A; revalidar no candidato final as obrigações atingidas. Nenhum axioma obrigatório dispensado.
Assertions:
A-HUG-039-DOD04. Famílias:T-HUG-039-Q.Invariants
HUG-039-INV01 — obrigatório: Restore não reativa hooks do autor.
Assertions:
A-HUG-039-INV01. Famílias:T-HUG-039-N.HUG-039-INV02 — obrigatório: História preservada não reutiliza identidade de novos producers.
Assertions:
A-HUG-039-INV02. Famílias:T-HUG-039-N.HUG-039-INV03 — obrigatório: Export sanitizado não se anuncia como cadeia original byte-idêntica.
Assertions:
A-HUG-039-INV03. Famílias:T-HUG-039-N.Verificação e evidências
T-HUG-039-N: linux-x64-ext4, macos-arm64-apfs, macos-intel-apfs, windows-x64-ntfs; etapa pre_promotion.T-HUG-039-P: linux-x64-ext4, macos-arm64-apfs, macos-intel-apfs, windows-x64-ntfs; etapa pre_promotion.T-HUG-039-Q: linux-x64-ext4, macos-arm64-apfs, macos-intel-apfs, windows-x64-ntfs; etapa pre_promotion.T-HUG-039-R: linux-x64-ext4, macos-arm64-apfs, macos-intel-apfs, windows-x64-ntfs; etapa pre_promotion.Catálogo detalhado, preparo, predicados e artifacts: contrato completo. Evidência por sujeito A, assertion, célula e tentativa; pacote B destacado, promoção C separada. Não usar
Closesem PR intermediário.Budget e recovery
P02/P08/P06: seleção protegida e snapshot independente; reserva de destino e staging fora do gate; rename/readback final coordenado com revoke e journal; nenhuma transação SQL por toda cópia.
Rollback/recovery específico: Antes de atomic publish: remover staging por ownership e liberar pins; após pacote entregue não há revogação retroativa, emitir manifesto corrigido. Restore falho mantém destino original intocado; nunca fazer downgrade implícito de formato.
Política de fechamento
Todos os cinco axiomas e suas assertions devem estar demonstrados no candidato integrado, com recovery ensaiado e revisão distinta da autoria. Suite verde ou issue fechada não substitui a qualificação. HUG-056 só fecha após publicação e pós-verificação.