# 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
