Contexto
O MVP Linux/WSL2 usa NBD como transporte validado. O suporte experimental a ublk não deve entrar na primeira release estável até alcançar o mesmo nível de segurança, lifecycle e evidência live.
Objetivo
Promover ublk de capacidade experimental/laboratorial para transporte formal de produto, sem substituir NBD antes da conclusão de todos os gates.
Trabalho necessário
- criar/revisar o fluxo SSDV3 completo: PRD → SPEC → AUDIT-2.5 → IMPL;
- definir propriedade de FDs, ring, worker, backend CUDA/VRAM e dispositivo de controle;
- implementar lifecycle completo
create → configure → start → I/O → drain → stop → delete;
- garantir
swapoff-first antes de encerrar ring, worker, backend ou dispositivo;
- tornar create/start/stop/delete idempotentes e seguros após repetição;
- implementar recuperação após crash do daemon, abort de FETCH/COMMIT e desconexão do worker;
- impedir dispositivos
/dev/ublkb*//dev/ublkc* órfãos e ghost swap;
- validar concorrência, queue depth > 1, I/O multipágina e limites de buffer;
- validar integridade antes/depois com BINARY_MATCH do daemon;
- adicionar watchdog externo, telemetria e timeout limitado;
- documentar instalação, requisitos de kernel, rollback e recuperação;
- comparar desempenho e estabilidade com NBD sem promover ublk apenas por microbenchmark.
Matriz mínima de testes
- unitários de uAPI/layout, encoding, ranges e estados ilegais;
- integração com backend RAM sem GPU;
- integração isolada com CUDA/VRAM;
- leitura/escrita concorrente e multipágina;
mkswap → swapon → carga limitada → swapoff;
- stop normal, stop repetido, crash do daemon e abort durante I/O;
- pressão até limite com watchdog, sem executar pressão ublk não supervisionada no WSL2 diário;
- verificação terminal: nenhum ublk ativo, nenhum swap gerenciado, daemon morto, VRAM liberada e zero ghost.
Critérios de aceite
- cobertura ≥80% em cada slice de lógica de negócio listado na SPEC;
- todas as linhas da matriz possuem testes nomeados;
- campanha live isolada registra
before → action → after;
- checksums coincidem em todas as rodadas;
swapoff e drain terminam dentro do timeout definido;
- crash/recovery não deixa dispositivo, processo, FD, ring ou swap residual;
- NBD continua sendo fallback estável até comparação formal aprovada;
- documentação e gap register atualizados somente após evidência real.
Fora de escopo
- bloquear ou atrasar o MVP Linux/WSL2 com NBD;
- executar pressão ublk não supervisionada no host WSL2 diário;
- declarar suporte apenas porque unit tests ou QEMU smoke passaram.
Rollback trigger
Reverter a promoção se ocorrer ghost swap, hang acima do timeout da SPEC, corrupção/checksum divergente, dispositivo ublk residual, daemon encerrado com swap ativo, falha de liberação de VRAM ou regressão superior ao limite de desempenho definido na SPEC.
Contexto
O MVP Linux/WSL2 usa NBD como transporte validado. O suporte experimental a ublk não deve entrar na primeira release estável até alcançar o mesmo nível de segurança, lifecycle e evidência live.
Objetivo
Promover ublk de capacidade experimental/laboratorial para transporte formal de produto, sem substituir NBD antes da conclusão de todos os gates.
Trabalho necessário
create → configure → start → I/O → drain → stop → delete;swapoff-firstantes de encerrar ring, worker, backend ou dispositivo;/dev/ublkb*//dev/ublkc*órfãos e ghost swap;Matriz mínima de testes
mkswap → swapon → carga limitada → swapoff;Critérios de aceite
before → action → after;swapoffe drain terminam dentro do timeout definido;Fora de escopo
Rollback trigger
Reverter a promoção se ocorrer ghost swap, hang acima do timeout da SPEC, corrupção/checksum divergente, dispositivo ublk residual, daemon encerrado com swap ativo, falha de liberação de VRAM ou regressão superior ao limite de desempenho definido na SPEC.