# Spec 022 — Tasks ## Backend Desk (VM122) - [x] `carbonio_release_store.py` — tabela, detecção ACCOUNT_EXISTS, upsert, resolve (lock optimista) - [x] `carbonio_release_routes.py` — list, get, resolve (senha técnico + confirm email) - [x] Hook webhook `onboarding.failed` em `main.py` - [x] `vm112_domains.delete_carbonio_account()` - [x] Módulo `carbonio-release` no registry ## VM112 Wizard - [x] `POST /api/admin/accounts/{email}/delete` — zmprov da - [x] Router `admin_accounts` registado em `main.py` ## Frontend Desk - [x] Aba Eventos → **Bloqueios Carbonio** + guia técnico - [x] Painel de resolução no detalhe do ticket (vm112-onboard) - [x] Formulário: confirmar e-mail + senha Desk - [x] Todos os perfis com leitura de tickets (incl. NOC) ## Deploy & validação - [x] Build api + frontend (`docker-compose.mvp.yml`) - [x] Teste E2E: webhook ACCOUNT_EXISTS → bloqueio #1 + ticket #41 → resolve → VM112 OK - [x] Confirmar 409 quando segundo técnico tenta resolver ## Fora de escopo v1 - Purge domínio / portal / Cloudflare - Outros códigos de erro além de ACCOUNT_EXISTS