2025-08-19T16:44:05Z - 2026-08-19T16:44:05Z
Overview
7 pull requests merged by 1 user
Merged
#859 fix: Odoo conexão perdida — web.base.url /odoo
Merged
#858 feat: VM123 deploy full + FINANCE_RELEASE=GREEN
Merged
#857 docs: checklist deploy único nas rules Cursor
Merged
#856 feat: milestones Forgejo por spec (47)
Merged
#855 fix: Forgejo org ligbox visível para todos os users
Merged
#854 docs: CT130 Git workflow PR
Merged
#853 release: workflow develop + PR obrigatório para main
431 issues closed from 1 user
Closed
#834 [spec-044] FOSS Support nativo em VM123 (sem bridge) — FOSS Support nativo em VM123 (sem bridge)
Closed
#833 [spec-044] UI Desk mostra wizard_ticket_id (OB-) no painel ticket — UI Desk mostra wizard_ticket_id (OB-) no painel ticket
Closed
#832 [spec-044] Portal OB- → Desk via onboarding.escalated (VM112) — Portal OB- → Desk via onboarding.escalated (VM112)
Closed
#831 [spec-044] Sync Obsidian VM130 — Sync Obsidian VM130
Closed
#830 [spec-044] Ligações cruzadas specs 010/012/024/041/043 — Ligações cruzadas specs 010/012/024/041/043
Closed
#829 [spec-044] Registo em SPEC-REGISTRY.md — Registo em SPEC-REGISTRY.md
Closed
#828 [spec-044] Contrato contracts/ticket-sync-api.md — Contrato contracts/ticket-sync-api.md
Closed
#827 [spec-044] Contrato contracts/ticket-field-mapping.md — Contrato contracts/ticket-field-mapping.md
Closed
#826 [spec-044] Spec índice spec.md — Spec índice spec.md
Closed
#823 [spec-043] WebmailReleaseModal.jsx no wizard onboarding — WebmailReleaseModal.jsx no wizard onboarding
Closed
#822 [spec-043] Aviso rodapé login Carbonio (sync_webmail_user_notice) — Aviso rodapé login Carbonio (sync_webmail_user_notice)
Closed
#821 [spec-043] Backend VM112 company_gate.py + API /gate/* — Backend VM112 company_gate.py + API /gate/*
Closed
#820 [spec-043] Contrato contracts/webmail-release-gate.md — Contrato contracts/webmail-release-gate.md
Closed
#819 [spec-043] E2E Roger: domínio teste wizard → activate → FOSS+OP+Odoo (d — E2E Roger: domínio teste wizard → activate → FOSS+OP+Odoo (dratcoin.com #2, 2026-07-01)
Closed
#818 [spec-043] Unit: test_client_activation_043.py (4) — happy path, idem — Unit: test_client_activation_043.py (4) — happy path, idempotência FOSS, reject active
Closed
#817 [spec-043] Unit: test_activation_mapper_043.py (3) — Unit: test_activation_mapper_043.py (3)
Closed
#816 [spec-043] Script deploy/vm123-finance-stack/create-foss-mail-business — Script deploy/vm123-finance-stack/create-foss-mail-business.sh`
Closed
#815 [spec-043] Produto FOSS product_id=3 slug ligbox-mail-business — Produto FOSS product_id=3 slug ligbox-mail-business
Closed
#814 [spec-043] Plano hosting hp_id=2 — Plano hosting hp_id=2
Closed
#813 [spec-043] **Deploy VM112** — 2026-07-01 · OPS_INTERNAL_TOKEN + endpo — **Deploy VM112** — 2026-07-01 · OPS_INTERNAL_TOKEN + endpoint activo
Closed
#812 [spec-043] wizard_client.provision_mail_bundle() → VM112 — wizard_client.provision_mail_bundle() → VM112
Closed
#811 [spec-043] Webhook POST /billing/webhook/foss/order-activated — Webhook POST /billing/webhook/foss/order-activated
Closed
#810 [spec-043] POST /billing/accounts/{id}/activate com provision_mail — POST /billing/accounts/{id}/activate com provision_mail
Closed
#809 [spec-043] Código mail_bundle.py + internal_provision.py (repo) — Código mail_bundle.py + internal_provision.py (repo)
Closed
#808 [spec-043] Contrato contracts/mail-bundle-api.md — Contrato contracts/mail-bundle-api.md
Closed
#807 [spec-043] Deep-link Odoo na ficha cliente — Deep-link Odoo na ficha cliente
Closed
#806 [spec-043] Coluna odoo_partner_id em billing_accounts — Coluna odoo_partner_id em billing_accounts
Closed
#805 [spec-043] odoo_client.upsert_customer_partner() conforme mapa §6 — odoo_client.upsert_customer_partner() conforme mapa §6
Closed
#804 [spec-043] Idempotência user exists — Idempotência user exists
Closed
#803 [spec-043] Persistir openpanel_username em company_profile_json — Persistir openpanel_username em company_profile_json
Closed
#802 [spec-043] Bridge directo (provision_user_safe) + metadata JSON — Bridge directo (provision_user_safe) + metadata JSON
Closed
#801 [spec-043] Persistir external_customer_id + external_subscription_id — Persistir external_customer_id + external_subscription_id`
Closed
#800 [spec-043] Custom fields FOSS via config (domain, manager_*) — Custom fields FOSS via config (domain, manager_*)
Closed
#799 [spec-043] foss_client.create_order() + activate hosting — foss_client.create_order() + activate hosting
Closed
#798 [spec-043] foss_client.create_client() conforme mapa §4 — foss_client.create_client() conforme mapa §4
Closed
#797 [spec-043] Deploy VM122 + validação Roger (teste manual) — Deploy VM122 + validação Roger (teste manual)
Closed
#796 [spec-043] Modal confirmação com 3 colunas FOSS / OpenPanel / Odoo — Modal confirmação com 3 colunas FOSS / OpenPanel / Odoo
Closed
#795 [spec-043] Botão **Activar conta** em billing-ui.js (só roles autoriz — Botão **Activar conta** em billing-ui.js (só roles autorizados)
Closed
#794 [spec-043] GET /billing/accounts/{id}/activation-preview — GET /billing/accounts/{id}/activation-preview
Closed
#793 [spec-043] ROLLBACK.md com tags Git — ROLLBACK.md com tags Git
Closed
#792 [spec-043] Registo em SPEC-REGISTRY.md — Registo em SPEC-REGISTRY.md
Closed
#791 [spec-043] Ligações cruzadas specs 023/024/028/035 — Ligações cruzadas specs 023/024/028/035
Closed
#790 [spec-043] Contrato API desk-activate-account-api.md — Contrato API desk-activate-account-api.md
Closed
#789 [spec-043] Contrato activation-field-mapping.md — Contrato activation-field-mapping.md
Closed
#788 [spec-043] Spec índice spec.md — Spec índice spec.md
Closed
#779 [spec-042] UI React build servida na raiz — UI React build servida na raiz
Closed
#778 [spec-042] Fase B — 20/23 ferramentas API (3 stubs fase C) — Fase B — 20/23 ferramentas API (3 stubs fase C)
Closed
#777 [spec-042] Traefik CT114 → VM130:8091 — Traefik CT114 → VM130:8091
Closed
#776 [spec-042] DNS nettools.ligbox.com.br Cloudflare — DNS nettools.ligbox.com.br Cloudflare
Closed
#763 [spec-042] systemd ligbox-nettools.service — systemd ligbox-nettools.service
Closed
#762 [spec-042] bootstrap-vm130.sh + smoke OK (23 tools, nslookup MX) — bootstrap-vm130.sh + smoke OK (23 tools, nslookup MX)
Closed
#761 [spec-042] Deploy /opt/ligbox-nettools/ VM130 isolado — Deploy /opt/ligbox-nettools/ VM130 isolado
Closed
#760 [spec-042] Criar projects/nettools/ skeleton (README, docker-compose, — Criar projects/nettools/ skeleton (README, docker-compose, FastAPI hello)
Closed
#759 [spec-042] contracts/nettools-api.md — contracts/nettools-api.md
Closed
#758 [spec-042] infrastructure.md — infrastructure.md
Closed
#757 [spec-042] architecture.md — architecture.md
Closed
#756 [spec-042] tools-catalog.md (23 ferramentas) — tools-catalog.md (23 ferramentas)
Closed
#755 [spec-042] Spec 042 spec.md — Spec 042 spec.md
Closed
#749 [spec-041] T006 — T006 Deploy VM122
Closed
#748 [spec-041] T005 — T005 Nav «Central Operacional»
Closed
#747 [spec-041] T004 — T004 Substituir renderMessages() → DeskOperationalFeed
Closed
#746 [spec-041] T003 — T003 OF-FE-001 operational-feed.js
Closed
#745 [spec-041] T002 — T002 OF-API-002 ops_inbox_routes.py
Closed
#744 [spec-041] T001 — T001 OF-API-001 ops_inbox_store.py + seed
Closed
#740 [spec-040] T007 — T007 Deploy VM122 v0.13.0
Closed
#739 [spec-040] T006 — T006 DS-FE-004 access-control-hub.js
Closed
#738 [spec-040] T005 — T005 DS-FE-003 user-wizard.js
Closed
#737 [spec-040] T004 — T004 DS-FE-001 ligbox-ds.css
Closed
#736 [spec-040] T003 — T003 DS-API-002 governance_routes.py
Closed
#735 [spec-040] T002 — T002 DS-API-001 desk_governance_store.py
Closed
#734 [spec-040] T001 — T001 Snapshot v0.12.2-pre-ds-20260625
Closed
#727 [spec-038] Documentar SPEC na VM130 (Spec Hub) — Documentar SPEC na VM130 (Spec Hub)
Closed
#726 [spec-038] Validar regressão mail.ligbox.com.br → HTTP 200 — Validar regressão mail.ligbox.com.br → HTTP 200
Closed
#725 [spec-038] Validar WAN: supported/config/login → HTTP 200 — Validar WAN: supported/config/login → HTTP 200
Closed
#724 [spec-038] Configurar tmpfiles.d para /run/carbonio — Configurar tmpfiles.d para /run/carbonio
Closed
#723 [spec-038] Implementar systemd path watcher — Implementar systemd path watcher
Closed
#722 [spec-038] Implementar check-nutranik-proxy.sh + cron 15 min — Implementar check-nutranik-proxy.sh + cron 15 min
Closed
#721 [spec-038] Implementar ensure-nutranik-proxy.sh — Implementar ensure-nutranik-proxy.sh
Closed
#720 [spec-038] Adicionar include persistente em nginx.conf.web — Adicionar include persistente em nginx.conf.web
Closed
#719 [spec-038] Sincronizar certificado SSL da VM108 — Sincronizar certificado SSL da VM108
Closed
#718 [spec-038] Criar server block proxy mail.nutranik.com na VM112 — Criar server block proxy mail.nutranik.com na VM112
Closed
#717 [spec-038] Criar upstream nutranik_vm108_https na VM112 — Criar upstream nutranik_vm108_https na VM112
Closed
#716 [spec-038] Confirmar arquitectura: WAN → VM112, Nutranik → VM108 — Confirmar arquitectura: WAN → VM112, Nutranik → VM108
Closed
#715 [spec-038] Diagnosticar falha WAN mail.nutranik.com (404/500 em /zx/ — Diagnosticar falha WAN mail.nutranik.com (404/500 em /zx/login/*`)
Closed
#712 [spec-037] V3 Console /admin/dominio consume viewer API — VM123 2026- — V3 Console /admin/dominio consume viewer API — VM123 2026-06-25
Closed
#711 [spec-037] V2 OpenPanel BIND records (openpanel_dns.py) — VM122 2026- — V2 OpenPanel BIND records (openpanel_dns.py) — VM122 2026-06-25
Closed
#710 [spec-037] V1b Desk UI unificada (dns-viewer.js + Overview/IaaS modal — V1b Desk UI unificada (dns-viewer.js + Overview/IaaS modal)
Closed
#709 [spec-037] V1 GET /api/v1/dns/viewer/{domain} — CF + public + planned — V1 GET /api/v1/dns/viewer/{domain} — CF + public + planned (deploy VM122 2026-06-25)
Closed
#708 [spec-037] Spec rollback + scripts deploy (deploy/DNS-VIEWER-*.md, d — Spec rollback + scripts deploy (deploy/DNS-VIEWER-*.md, deploy/scripts/*`)
Closed
#707 [spec-037] V0 Desk CF only — cloudflare_dns.py + Overview modal — V0 Desk CF only — cloudflare_dns.py + Overview modal
Closed
#704 [spec-037] cf_client_accounts/ registry — cf_client_accounts/ registry
Closed
#703 [spec-037] handoff-manager (stub registo) — handoff-manager (stub registo)
Closed
#702 [spec-037] provision-client-account (fallback zona partilhada) — provision-client-account (fallback zona partilhada)
Closed
#698 [spec-037] Maestro delegação REST (/run/proj-mail, /run/cf-zone) — Maestro delegação REST (/run/proj-mail, /run/cf-zone)
Closed
#697 [spec-037] DO stubs ProjMailAgent, CfZoneAgent, CfHandoffAgent — DO stubs ProjMailAgent, CfZoneAgent, CfHandoffAgent
Closed
#693 [spec-037] Worker → VM112 proj-mail E2E OK — Worker → VM112 proj-mail E2E OK
Closed
#692 [spec-037] Deploy Worker — https://ligbox-onboard-agents.ibytera.worker — Deploy Worker — https://ligbox-onboard-agents.ibytera.workers.dev
Closed
#691 [spec-037] HTTP client VM112 — HTTP client VM112
Closed
#690 [spec-037] OnboardMaestro estado sessão — OnboardMaestro estado sessão
Closed
#689 [spec-037] projects/cloudflare-agents/onboard/ wrangler + DO scaffold — projects/cloudflare-agents/onboard/ wrangler + DO scaffold
Closed
#686 [spec-037] Webhook ligbox_project_email (apply + account + project) — Webhook ligbox_project_email (apply + account + project)
Closed
#685 [spec-037] UI painel credenciais proj_* — UI painel credenciais proj_*
Closed
#684 [spec-037] GET /project/{domain} VM112 — GET /project/{domain} VM112
Closed
#683 [spec-037] POST /project/provision-email VM112 ✅ smoke proj_001@ — POST /project/provision-email VM112 ✅ smoke proj_001@
Closed
#682 [spec-037] project_identity.py monorepo + VM112 — project_identity.py monorepo + VM112
Closed
#681 [spec-037] Multi-conta resolve + BYO + provision-zone — Multi-conta resolve + BYO + provision-zone
Closed
#673 [spec-035] contracts/status-snapshot.md — contracts/status-snapshot.md
Closed
#672 [spec-035] contracts/stack-services.yaml — contracts/stack-services.yaml
Closed
#671 [spec-035] quickstart.md — quickstart.md
Closed
#670 [spec-035] specs/035-ligbox-watchman/spec.md — specs/035-ligbox-watchman/spec.md
Closed
#653 [spec-035] Spec 035 + contracts/stack-services.yaml — Spec 035 + contracts/stack-services.yaml
Closed
#649 [spec-035] Implementar GET /api/v1/dns/viewer/{domain} (Desk VM122 + — Implementar GET /api/v1/dns/viewer/{domain} (Desk VM122 + proxy Console VM123 2026-06-25)
Closed
#648 [spec-035] Spec 037-DNS-VIEWER dns-viewer.md + §5.5 domain-manager ac — Spec 037-DNS-VIEWER dns-viewer.md + §5.5 domain-manager actualizado
Closed
#643 [spec-035] API Desk domain_console_sandbox*.py — create-only produção — API Desk domain_console_sandbox*.py — create-only produção
Closed
#642 [spec-035] mockups/domain-manager-sandbox.html — UI sandbox (Mock + L — mockups/domain-manager-sandbox.html — UI sandbox (Mock + Live create-only)
Closed
#641 [spec-035] foss-products.md (template) — foss-products.md (template)
Closed
#640 [spec-035] tasks.md — tasks.md
Closed
#639 [spec-035] Spec 035 spec.md — Spec 035 spec.md
Closed
#617 [spec-035] GET /api/v1/domain-console/dns/viewer/{domain} (VM122 2026 — GET /api/v1/domain-console/dns/viewer/{domain} (VM122 2026-06-25)
Closed
#612 [spec-035] /admin/dominio V3 deploy VM123 2026-06-25 (AdminDominio.j — /admin/dominio V3 deploy VM123 2026-06-25 (AdminDominio.jsx, DnsViewerPanel.jsx`)
Closed
#601 [spec-035] Produto FOSS ligbox-mail-business (id=3) — ver [foss-produ — Produto FOSS ligbox-mail-business (id=3) — ver [foss-products.md](./foss-products.md)
Closed
#590 [spec-034] 034-console-process-ui.md — visão processo Console — 034-console-process-ui.md — visão processo Console
Closed
#589 [spec-034] contracts/nextcloud-provisioning-api.md — contracts/nextcloud-provisioning-api.md
Closed
#588 [spec-034] quickstart.md — quickstart.md
Closed
#587 [spec-034] infrastructure.md — infrastructure.md
Closed
#586 [spec-034] Spec 034 spec.md — Spec 034 spec.md
Closed
#563 [spec-034] deploy/vm116-nextcloud/ — docker-compose + scripts + Traef — deploy/vm116-nextcloud/ — docker-compose + scripts + Traefik snippet
Closed
#560 [spec-034] Roger: **VM124** após VM123 (não VM118) · 2 vCPU · 4 GB · 50 — Roger: **VM124** após VM123 (não VM118) · 2 vCPU · 4 GB · 500 GB
Closed
#549 [spec-030] C6 Poll 30s quando view activa — C6 Poll 30s quando view activa
Closed
#548 [spec-030] C5 Atalho teclado R refresh, Esc deselect — C5 Atalho teclado R refresh, Esc deselect
Closed
#547 [spec-030] C4 Pulse animation agente com incidente open — C4 Pulse animation agente com incidente open
Closed
#546 [spec-030] C3 Empty states + skeleton loading — C3 Empty states + skeleton loading
Closed
#545 [spec-030] C2 Mobile tabs (Board / Frota / Contexto) — C2 Mobile tabs (Board / Frota / Contexto)
Closed
#544 [spec-030] C1 Run timeline (lista ticks) — C1 Run timeline (lista ticks)
Closed
#543 [spec-030] B6 Testes test_agents_030.py — B6 Testes test_agents_030.py
Closed
#542 [spec-030] B5 Backfill automático no boot (backfill_incidents) — B5 Backfill automático no boot (backfill_incidents)
Closed
#541 [spec-030] B4 Endpoints /overview, /incidents, /incidents/{id}/ack — B4 Endpoints /overview, /incidents, /incidents/{id}/ack, /timeline`
Closed
#540 [spec-030] B3 Refactor notify_finding_to_operators — reutilizar threa — B3 Refactor notify_finding_to_operators — reutilizar thread
Closed
#539 [spec-030] B2 store.upsert_incident() no runner tick — B2 store.upsert_incident() no runner tick
Closed
#538 [spec-030] B1 Migration agent_incidents + índices — B1 Migration agent_incidents + índices
Closed
#537 [spec-030] A8 Deploy produção + staging — A8 Deploy produção + staging
Closed
#536 [spec-030] A7 Fleet rail compacto — A7 Fleet rail compacto
Closed
#535 [spec-030] A6 ContextPanel — thread + reply + chat — A6 ContextPanel — thread + reply + chat
Closed
#534 [spec-030] A5 IncidentCard — click selecciona + highlight — A5 IncidentCard — click selecciona + highlight
Closed
#533 [spec-030] A4 Dedup via API /incidents (UI-B) — A4 Dedup via API /incidents (UI-B)
Closed
#532 [spec-030] A3 Componente MissionBoard — 4 colunas severidade — A3 Componente MissionBoard — 4 colunas severidade
Closed
#531 [spec-030] A2 Componente AgenticStatusBar (health + action-log last t — A2 Componente AgenticStatusBar (health + action-log last tick)
Closed
#530 [spec-030] A1 Criar agentic-ops.css (grid ao-*, tokens agente) — A1 Criar agentic-ops.css (grid ao-*, tokens agente)
Closed
#525 [spec-029] G4 Registar homologação — 2026-06-19 VM122 — G4 Registar homologação — 2026-06-19 VM122
Closed
#524 [spec-029] G3 Verificar produção intacta — /api/v1/agents/health 200 — G3 Verificar produção intacta — /api/v1/agents/health 200 tier t1
Closed
#523 [spec-029] G2 Deploy produção :8080 (api + worker + frontend) — versã — G2 Deploy produção :8080 (api + worker + frontend) — versão 0.9.7-spec029-agentic
Closed
#522 [spec-029] G1 Merge branch → main (pendente push remoto se aplicável) — G1 Merge branch → main (pendente push remoto se aplicável)
Closed
#521 [spec-029] F4 Inbox com finding simulado (VM123 finance + OpenPanel bri — F4 Inbox com finding simulado (VM123 finance + OpenPanel bridge)
Closed
#520 [spec-029] F3 Chat T1 com Ollama online (health tier t1; resposta LLM ~ — F3 Chat T1 com Ollama online (health tier t1; resposta LLM ~2min qwen2.5:7b)
Closed
#519 [spec-029] F2 Checklist quickstart.md — F2 Checklist quickstart.md
Closed
#518 [spec-029] F1 Deploy docker-compose.agentic-staging.yml (:8180/:8192) — F1 Deploy docker-compose.agentic-staging.yml (:8180/:8192)
Closed
#517 [spec-029] E5 E-mail high/critical via Postfix — E5 E-mail high/critical via Postfix
Closed
#516 [spec-029] E4 UI Desk 3 colunas (roster/inbox/contexto) — E4 UI Desk 3 colunas (roster/inbox/contexto)
Closed
#515 [spec-029] E3 Reply humano + ack — E3 Reply humano + ack
Closed
#514 [spec-029] E2 Inbox por role — E2 Inbox por role
Closed
#513 [spec-029] E1 agent_threads + agent_messages — E1 agent_threads + agent_messages
Closed
#512 [spec-029] D3 Map cenário → agente (A1, A2, A6, sentinel) — D3 Map cenário → agente (A1, A2, A6, sentinel)
Closed
#511 [spec-029] D2 agents-roster.md — D2 agents-roster.md
Closed
#510 [spec-029] D1 catalog.py roster — D1 catalog.py roster
Closed
#509 [spec-029] C4 KB Curator index specs — C4 KB Curator index specs
Closed
#508 [spec-029] C3 chat_context copiloto — C3 chat_context copiloto
Closed
#507 [spec-029] C2 advise_human_action em findings warn+ — C2 advise_human_action em findings warn+
Closed
#506 [spec-029] C1 Ollama VM123 qwen2.5:7b-instruct — C1 Ollama VM123 qwen2.5:7b-instruct
Closed
#505 [spec-029] B3 POST /internal/tick — B3 POST /internal/tick
Closed
#504 [spec-029] B2 AGENTIC_INTERVAL_SEC=300 — B2 AGENTIC_INTERVAL_SEC=300
Closed
#503 [spec-029] B1 agentic_tick() no worker — B1 agentic_tick() no worker
Closed
#502 [spec-029] A5 Checks T0 (checks.py) — A5 Checks T0 (checks.py)
Closed
#501 [spec-029] A4 Cenários registry.yaml (9 cenários) — A4 Cenários registry.yaml (9 cenários)
Closed
#500 [spec-029] A3 init_agent_schema no boot — A3 init_agent_schema no boot
Closed
#499 [spec-029] A2 Router /api/v1/agents/* montado em main.py — A2 Router /api/v1/agents/* montado em main.py
Closed
#498 [spec-029] A1 Tabelas SQLite (agent_scenarios, agent_runs, agent_f — A1 Tabelas SQLite (agent_scenarios, agent_runs, agent_findings, agent_action_log, agent_kb_chunks`)
Closed
#496 [spec-028] Limpeza users E2E de teste — Limpeza users E2E de teste
Closed
#495 [spec-028] Cron reaplicar patch após opencli update — Cron reaplicar patch após opencli update
Closed
#494 [spec-028] CREDENCIAIS_SERVICOS_VM123.txt actualizado — CREDENCIAIS_SERVICOS_VM123.txt actualizado
Closed
#493 [spec-028] Publicar no Spec Hub VM130 (Forgejo) — Publicar no Spec Hub VM130 (Forgejo)
Closed
#492 [spec-028] Spec 028 no repositório — Spec 028 no repositório
Closed
#491 [spec-028] Adendo [CONFIRMACAO-TESTE-API.md](CONFIRMACAO-TESTE-API.md) — Adendo [CONFIRMACAO-TESTE-API.md](CONFIRMACAO-TESTE-API.md)
Closed
#490 [spec-028] Botão **Testar multidomínio** no Menu Infra Desk — Botão **Testar multidomínio** no Menu Infra Desk
Closed
#489 [spec-028] POST /api/v1/vm123/openpanel/test-confirm — suite 7 passos — POST /api/v1/vm123/openpanel/test-confirm — suite 7 passos
Closed
#488 [spec-028] scripts/test-openpanel-multidomain-api.sh — CLI repetível — scripts/test-openpanel-multidomain-api.sh — CLI repetível
Closed
#487 [spec-028] Último run: order #6, user ab69b548, domain test95452.ligbox — Último run: order #6, user ab69b548, domain test95452.ligbox.com.br
Closed
#486 [spec-028] test-foss-openpanel-order.sh — 7 passos E2E — test-foss-openpanel-order.sh — 7 passos E2E
Closed
#485 [spec-028] Login OpenAdmin validado — Login OpenAdmin validado
Closed
#484 [spec-028] labadmin + labreseller via SQLite (issue #795) — labadmin + labreseller via SQLite (issue #795)
Closed
#483 [spec-028] provision-openpanel-hosting.sh — provision-openpanel-hosting.sh
Closed
#482 [spec-028] diarissima, myvexx, testeops, authverify, e2eportal, funnel, — diarissima, myvexx, testeops, authverify, e2eportal, funnel, verify
Closed
#481 [spec-028] Order config array PHP (config[domain][...]) — Order config array PHP (config[domain][...])
Closed
#480 [spec-028] Servidor FOSS → port 18087 HTTP — Servidor FOSS → port 18087 HTTP
Closed
#479 [spec-028] patch-foss-openpanel-domain.sh — campo domain em createA — patch-foss-openpanel-domain.sh — campo domain em createAccount
Closed
#478 [spec-028] openpanel-foss-bridge.service activo :18087 — openpanel-foss-bridge.service activo :18087
Closed
#477 [spec-028] Endpoints GET/PATCH/DELETE users — Endpoints GET/PATCH/DELETE users
Closed
#476 [spec-028] bridge.py — user-add + domains-add + normalização domínio — bridge.py — user-add + domains-add + normalização domínio
Closed
#475 [spec-028] Backup opencli em .ligbox-backup-* — Backup opencli em .ligbox-backup-*
Closed
#474 [spec-028] Fix /etc/bind/named.conf (openpanel_dns) — Fix /etc/bind/named.conf (openpanel_dns)
Closed
#473 [spec-028] key=ligbox-local-enterprise em openpanel.config — key=ligbox-local-enterprise em openpanel.config
Closed
#472 [spec-028] patch-openpanel-ce-unlock.sh — hosting ilimitado + API + a — patch-openpanel-ce-unlock.sh — hosting ilimitado + API + admin + email
Closed
#465 [spec-025] Smoke: teste001@exuberanti.com.br reconcilia sem HTTP 400 — Smoke: teste001@exuberanti.com.br reconcilia sem HTTP 400
Closed
#464 [spec-025] Frontend passos 2–3 — banners e botões dinâmicos — Frontend passos 2–3 — banners e botões dinâmicos
Closed
#463 [spec-025] POST /api/onboarding/account/create idempotente (reconcil — POST /api/onboarding/account/create idempotente (reconciled: true`)
Closed
#462 [spec-025] GET /api/onboarding/account/status — VM112 — GET /api/onboarding/account/status — VM112
Closed
#461 [spec-025] spec.md — fluxo alvo e critérios de aceite — spec.md — fluxo alvo e critérios de aceite
Closed
#456 [spec-024] Links conta cliente → financeiro.ligbox.com.br (billing_sto — Links conta cliente → financeiro.ligbox.com.br (billing_store.py`)
Closed
#455 [spec-024] Validar HTTPS financeiro / odoo / openpanel — Validar HTTPS financeiro / odoo / openpanel
Closed
#454 [spec-024] Rotas Traefik CT114 (FOSS raiz, /odoo, openpanel, admin.open — Rotas Traefik CT114 (FOSS raiz, /odoo, openpanel, admin.openpanel)
Closed
#453 [spec-024] DNS financeiro + openpanel → IP público (Cloudflare) — DNS financeiro + openpanel → IP público (Cloudflare)
Closed
#452 [spec-024] Provisionamento OpenPanel validado (bridge E2E + testprov1 m — Provisionamento OpenPanel validado (bridge E2E + testprov1 manual)
Closed
#451 [spec-024] Test connection FOSS → bridge OK — Test connection FOSS → bridge OK
Closed
#450 [spec-024] Planos hosting — ligbox-site-cms (id 3) — Planos hosting — ligbox-site-cms (id 3)
Closed
#449 [spec-024] Bridge Community API (install-openpanel-community-bridge.sh — Bridge Community API (install-openpanel-community-bridge.sh`) porta 18087
Closed
#448 [spec-024] install-openpanel.sh — Community 1.7.60 — install-openpanel.sh — Community 1.7.60
Closed
#447 [spec-024] Antispam honeypot lb_hp_x9k2 (setup-foss-antispam.sh) — Antispam honeypot lb_hp_x9k2 (setup-foss-antispam.sh)
Closed
#446 [spec-024] setup-foss-openpanel-module.sh — setup-foss-openpanel-module.sh
Closed
#445 [spec-024] Wizard Odoo 16 (base ligbox) — Wizard Odoo 16 (base ligbox)
Closed
#444 [spec-024] Wizard FOSSBilling (admin@ligbox.com.br) — Wizard FOSSBilling (admin@ligbox.com.br)
Closed
#443 [spec-024] docker compose up -d em /opt/vm123-finance-stack — docker compose up -d em /opt/vm123-finance-stack
Closed
#442 [spec-024] Swap 2 GB — Swap 2 GB
Closed
#441 [spec-024] Wazuh agent → 10.10.10.104 — Wazuh agent → 10.10.10.104
Closed
#440 [spec-024] fail2ban activo — fail2ban activo
Closed
#439 [spec-024] bootstrap-vm123.sh — mini, admin, root (805353) — bootstrap-vm123.sh — mini, admin, root (805353)
Closed
#438 [spec-024] DNAT SSH WAN :2523 → VM123:22 (pfSense id **61**) — DNAT SSH WAN :2523 → VM123:22 (pfSense id **61**)
Closed
#437 [spec-024] VM123 online — IP 10.10.10.123/24 — VM123 online — IP 10.10.10.123/24
Closed
#436 [spec-024] Executar proxmox-create-vm123.sh no host PVE — Executar proxmox-create-vm123.sh no host PVE
Closed
#427 [spec-023] Deploy api + frontend VM122 — Deploy api + frontend VM122
Closed
#426 [spec-023] RBAC mascaramento NOC (should_mask_sensitive) — RBAC mascaramento NOC (should_mask_sensitive)
Closed
#425 [spec-023] Links FOSSBilling + Odoo na ficha — Links FOSSBilling + Odoo na ficha
Closed
#424 [spec-023] Modal **Conta do cliente** (billing-ui.js) — Modal **Conta do cliente** (billing-ui.js)
Closed
#423 [spec-023] Serviços: ícone 💳 + stats recorrências (accounts.js) — Serviços: ícone 💳 + stats recorrências (accounts.js)
Closed
#422 [spec-023] Tickets: ícone 💳 em [billing-validation] — Tickets: ícone 💳 em [billing-validation]
Closed
#421 [spec-023] Dashboard: badge billing em sessões company_validated+ — Dashboard: badge billing em sessões company_validated+
Closed
#420 [spec-023] Dashboard: KPIs cobrança pendente + recorrência activa — Dashboard: KPIs cobrança pendente + recorrência activa
Closed
#419 [spec-023] Módulo billing-recurrence no registry — Módulo billing-recurrence no registry
Closed
#418 [spec-023] billing_routes.py — list, by-domain, summary, PATCH — billing_routes.py — list, by-domain, summary, PATCH
Closed
#417 [spec-023] Hook company.validated em main.py — Hook company.validated em main.py
Closed
#416 [spec-023] billing_store.py + tabela billing_accounts — billing_store.py + tabela billing_accounts
Closed
#413 [spec-023] Documentar comparativo Lago vs Odoo → **Odoo 16 primário** — Documentar comparativo Lago vs Odoo → **Odoo 16 primário**
Closed
#412 [spec-022] Confirmar 409 quando segundo técnico tenta resolver — Confirmar 409 quando segundo técnico tenta resolver
Closed
#411 [spec-022] Teste E2E: webhook ACCOUNT_EXISTS → bloqueio #1 + ticket #41 — Teste E2E: webhook ACCOUNT_EXISTS → bloqueio #1 + ticket #41 → resolve → VM112 OK
Closed
#410 [spec-022] Build api + frontend (docker-compose.mvp.yml) — Build api + frontend (docker-compose.mvp.yml)
Closed
#409 [spec-022] Todos os perfis com leitura de tickets (incl. NOC) — Todos os perfis com leitura de tickets (incl. NOC)
Closed
#408 [spec-022] Formulário: confirmar e-mail + senha Desk — Formulário: confirmar e-mail + senha Desk
Closed
#407 [spec-022] Painel de resolução no detalhe do ticket (vm112-onboard) — Painel de resolução no detalhe do ticket (vm112-onboard)
Closed
#406 [spec-022] Aba Eventos → **Bloqueios Carbonio** + guia técnico — Aba Eventos → **Bloqueios Carbonio** + guia técnico
Closed
#405 [spec-022] Router admin_accounts registado em main.py — Router admin_accounts registado em main.py
Closed
#404 [spec-022] POST /api/admin/accounts/{email}/delete — zmprov da — POST /api/admin/accounts/{email}/delete — zmprov da
Closed
#403 [spec-022] Módulo carbonio-release no registry — Módulo carbonio-release no registry
Closed
#402 [spec-022] vm112_domains.delete_carbonio_account() — vm112_domains.delete_carbonio_account()
Closed
#401 [spec-022] Hook webhook onboarding.failed em main.py — Hook webhook onboarding.failed em main.py
Closed
#400 [spec-022] carbonio_release_routes.py — list, get, resolve (senha téc — carbonio_release_routes.py — list, get, resolve (senha técnico + confirm email)
Closed
#399 [spec-022] carbonio_release_store.py — tabela, detecção ACCOUNT_EXIST — carbonio_release_store.py — tabela, detecção ACCOUNT_EXISTS, upsert, resolve (lock optimista)
Closed
#396 [spec-021] T017 — T017 Auto-ticket regras abuso
Closed
#393 [spec-021] T014 — T014 CSP headers portal + wizard (CT114 Traefik) — exemplo em deploy
Closed
#391 [spec-021] T012 — T012 Painel Infra 2 + flash eventos novos
Closed
#390 [spec-021] T011 — T011 Filtro Eventos «Segurança»
Closed
#389 [spec-021] T010 — T010 Card Segurança no Audit Overview modal VM112
Closed
#387 [spec-021] T008 — T008 Cliente webhook segurança + retry — template
Closed
#385 [spec-021] T006 — T006 Middleware auditoria inputs (Via 2) — template em deploy/vm112-wizard-security/
Closed
#384 [spec-021] T005 — T005 Registar módulo wizard-security em registry.py
Closed
#383 [spec-021] T004 — T004 GET /api/v1/security/summary e /security/events
Closed
#382 [spec-021] T003 — T003 Persistência webhook_events source vm112-security
Closed
#381 [spec-021] T002 — T002 POST /api/v1/webhooks/security (ou extensão onboard ingress)
Closed
#380 [spec-021] T001 — T001 POST /api/v1/security/csp-report + validação schema + rate limit
Closed
#359 [spec-019] T052 — T052 Rollback doc deploy/CONSOLE-V2-ROLLBACK.md
Closed
#358 [spec-019] T051 — T051 Desk banners migração Overview/Eventos/Tickets/Dashboard
Closed
#357 [spec-019] T050 — T050 Incidentes Agentic strip (mock + API fallback)
Closed
#356 [spec-019] T049 — T049 Domínios com atenção (DomainAttention)
Closed
#355 [spec-019] T048 — T048 Saúde plataforma — port Overview (HealthCards)
Closed
#354 [spec-019] T047 — T047 KPI bar (desk/summary + alertas Wazuh)
Closed
#353 [spec-019] T041 — T041 Traefik console.ligbox.com.br **(G1 2026-06-25 — HTTPS 200 via CT114)**
Closed
#352 [spec-019] T040 — T040 Deploy Docker VM123 — **ligbox-ops-console-ui UP :8100**
Closed
#348 [spec-019] T036 — T036 **ChamadoHub** /chamados/:publicId — timeline + tabs (mock)
Closed
#347 [spec-019] T035 — T035 View Chamados lista
Closed
#346 [spec-019] T034 — T034 View Discover → abrir hub
Closed
#345 [spec-019] T033 — T033 View Overview → links para hub
Closed
#344 [spec-019] T032 — T032 Layout sidebar + tema tokens
Closed
#343 [spec-019] T031 — T031 navigation-ia.md — rotas e drill-down
Closed
#342 [spec-019] T030 — T030 Scaffold React + Vite + React Router
Closed
#326 [spec-019] T005 — T005 Router Traefik → http://10.10.10.123:8100 **(G1 2026-06-25)**
Closed
#325 [spec-019] T004 — T004 DNS console.ligbox.com.br → Traefik CT114 **(G1 2026-06-25)**
Closed
#324 [spec-019] T003 — T003 Confirmar porta livre (default 8100) ou definir CONSOLE_HOST_PORT no .env
Closed
#323 [spec-019] T002 — T002 Executar deploy/scripts/preflight-vm123.sh e documentar resultado
Closed
#322 [spec-019] T001 — T001 Inventariar VM123 no Proxmox (IP, hostname, serviços existentes)
Closed
#317 [spec-019] Verify endpoint + relatório gate — Verify endpoint + relatório gate
Closed
#316 [spec-019] Integração ticket via job.ticket_id (manual) — Integração ticket via job.ticket_id (manual)
Closed
#315 [spec-019] POST approve-gate com ops_lead — POST approve-gate com ops_lead
Closed
#314 [spec-019] GET /api/v1/migration/gate?domain= — GET /api/v1/migration/gate?domain=
Closed
#313 [spec-019] gate.py — ratio 99%, estados blocked/warning/ready — gate.py — ratio 99%, estados blocked/warning/ready
Closed
#312 [spec-019] install-migration-tools.sh no host VM122 — install-migration-tools.sh no host VM122
Closed
#311 [spec-019] UI Desk «Migração E-mail» (email-migration.js) — UI Desk «Migração E-mail» (email-migration.js)
Closed
#310 [spec-019] Sync initial/delta/final (runner MVP) — Sync initial/delta/final (runner MVP)
Closed
#309 [spec-019] Preflight runner (IMAP reachability + imapsync check) — Preflight runner (IMAP reachability + imapsync check)
Closed
#308 [spec-019] API CRUD /api/v1/migration/jobs — API CRUD /api/v1/migration/jobs
Closed
#307 [spec-019] Schema SQLite migration_jobs, mailboxes, runs, gate_checks, — Schema SQLite migration_jobs, mailboxes, runs, gate_checks, credentials
Closed
#289 [spec-016] PortalTotpSetup.jsx — ecrã «Salve estes códigos» (visual o — PortalTotpSetup.jsx — ecrã «Salve estes códigos» (visual only)
Closed
#288 [spec-016] Fluxo registo → TOTP → redirect /onboard — Fluxo registo → TOTP → redirect /onboard
Closed
#287 [spec-016] loadWizardStateForOnboard() no mount wizard — loadWizardStateForOnboard() no mount wizard
Closed
#286 [spec-016] syncWizardWithPlannedEmail() — prioridade Self-Service — syncWizardWithPlannedEmail() — prioridade Self-Service
Closed
#285 [spec-016] setPortalOnboardCredentials() → sessionStorage senha — setPortalOnboardCredentials() → sessionStorage senha
Closed
#284 [spec-016] beginOnboardingForEmail() + ligbox_planned_email — beginOnboardingForEmail() + ligbox_planned_email
Closed
#230 [spec-012] **T014** Badge stale/lead na grid sessões liga ao ticket — **T014** Badge stale/lead na grid sessões liga ao ticket
Closed
#229 [spec-012] **T013** UI Desk: painel «Leads abandonados» (grid + view + — **T013** UI Desk: painel «Leads abandonados» (grid + view + filtro tickets)
Closed
#228 [spec-012] **T012** GET /api/v1/crm/leads — lista tickets lead — **T012** GET /api/v1/crm/leads — lista tickets lead
Closed
#227 [spec-012] **T011** Worker job: sessões stale → crm_track=lead + lea — **T011** Worker job: sessões stale → crm_track=lead + lead_detected_at`
Closed
#226 [spec-012] **T010** Env ONBOARD_STALE_HOURS (default 24) — **T010** Env ONBOARD_STALE_HOURS (default 24)
Closed
#225 [spec-012] **T007** Spec 012 + BACKLOG actualizados — **T007** Spec 012 + BACKLOG actualizados
Closed
#224 [spec-012] **T006** Scripts verify-funnel-webhook.sh — ordem real do — **T006** Scripts verify-funnel-webhook.sh — ordem real do funil
Closed
#223 [spec-012] **T005** VM112: emitir onboarding.started em POST /accoun — **T005** VM112: emitir onboarding.started em POST /account/create com email`
Closed
#222 [spec-012] **T004** VM112: remover onboarding.started de validate-do — **T004** VM112: remover onboarding.started de validate-domain`
Closed
#221 [spec-012] **T003** Desk: _backfill_funnel_notes para domain.validat — **T003** Desk: _backfill_funnel_notes para domain.validated + dns.applied`
Closed
#220 [spec-012] **T002** Desk: account.created → nota no ticket existente — **T002** Desk: account.created → nota no ticket existente (sem duplicar)
Closed
#219 [spec-012] **T001** Desk: ticket em onboarding.started (não só accou — **T001** Desk: ticket em onboarding.started (não só account.created`)
Closed
#211 [spec-010] **T042** Audit movimento visível no console da sessão — **T042** Audit movimento visível no console da sessão
Closed
#210 [spec-010] **T041** UI Dashboard: tabela ranking 30 dias — **T041** UI Dashboard: tabela ranking 30 dias
Closed
#209 [spec-010] **T040** GET /api/v1/assist/technicians/ranking — assumido — **T040** GET /api/v1/assist/technicians/ranking — assumidos, escalados, acções, score
Closed
#208 [spec-010] **T025** onboarding.mark_step_complete + onboarding.abort — **T025** onboarding.mark_step_complete + onboarding.abort` (ops_lead+)
Closed
#207 [spec-010] **T024** Audit log cada acção em assist_actions — **T024** Audit log cada acção em assist_actions
Closed
#206 [spec-010] **T023** GET .../links — Proxmox, Carbonio, Traefik, Cloud — **T023** GET .../links — Proxmox, Carbonio, Traefik, Cloudflare (nova aba)
Closed
#205 [spec-010] **T022** UI Console: painel acções + disabled se não assisti — **T022** UI Console: painel acções + disabled se não assisting
Closed
#204 [spec-010] **T021** Catálogo MVP: dns.revalidate, dns.reapply, account. — **T021** Catálogo MVP: dns.revalidate, dns.reapply, account.retry_sync, infra.resync
Closed
#203 [spec-010] **T020** POST .../actions/{action} — proxy VM112 — **T020** POST .../actions/{action} — proxy VM112
Closed
#202 [spec-010] **T016** Teste E2E: cliente pausado → técnico ASM → handoff — **T016** Teste E2E: cliente pausado → técnico ASM → handoff → cliente retoma
Closed
#201 [spec-010] **T015** Webhooks onboarding.assist.started|ended — **T015** Webhooks onboarding.assist.started|ended
Closed
#200 [spec-010] **T014** Desk: POST .../handoff → resume cliente — **T014** Desk: POST .../handoff → resume cliente
Closed
#199 [spec-010] **T013** Desk: POST .../takeover → chama VM112, guarda tok — **T013** Desk: POST .../takeover → chama VM112, guarda token hash
Closed
#198 [spec-010] **T012** VM112: botão cliente «Preciso de ajuda técnica» — **T012** VM112: botão cliente «Preciso de ajuda técnica»
Closed
#197 [spec-010] **T011** VM112: wizard ASM UI + banner «A actuar em nome do — **T011** VM112: wizard ASM UI + banner «A actuar em nome do cliente»
Closed
#196 [spec-010] **T010** VM112: POST .../pause, .../takeover, .../resum — **T010** VM112: POST .../pause, .../takeover, .../resume`
Closed
#195 [spec-010] **T009** Lock optimista — 409 se sessão já assisting — **T009** Lock optimista — 409 se sessão já assisting
Closed
#194 [spec-010] **T008** Regra RBAC assist (permissions.py) — **T008** Regra RBAC assist (permissions.py)
Closed
#193 [spec-010] **T007** UI ticket/sessão: assignee + botão «Assumir sessão» — **T007** UI ticket/sessão: assignee + botão «Assumir sessão» + handoff
Closed
#192 [spec-010] **T006** UI: sessões funil clicáveis + badges estado — **T006** UI: sessões funil clicáveis + badges estado
Closed
#191 [spec-010] **T005** POST /api/v1/assist/sessions/{id}/escalate — técn — **T005** POST /api/v1/assist/sessions/{id}/escalate — técnico puxa (≥ domain.validated)
Closed
#190 [spec-010] **T004** GET /api/v1/assist/sessions — merge funil + assis — **T004** GET /api/v1/assist/sessions — merge funil + assist state
Closed
#189 [spec-010] **T003** Webhook ingress onboarding.escalated + onboardin — **T003** Webhook ingress onboarding.escalated + onboarding.failed` → ticket escalated
Closed
#188 [spec-010] **T002** Tabelas assist_sessions, assist_actions — **T002** Tabelas assist_sessions, assist_actions
Closed
#187 [spec-010] **T001** Schema: ticket status escalated|assisting|resolved — **T001** Schema: ticket status escalated|assisting|resolved + session_id, assist_mode, assisted_by`
Closed
#123 [spec-004] **T057** Spec + quickstart atualizados — **T057** Spec + quickstart atualizados
Closed
#122 [spec-004] **T056** Minha conta — contagem backup restantes — **T056** Minha conta — contagem backup restantes
Closed
#121 [spec-004] **T055** Notificação root início/fim recuperação — **T055** Notificação root início/fim recuperação
Closed
#120 [spec-004] **T054** Login UI — perdi autenticador + backup — **T054** Login UI — perdi autenticador + backup
Closed
#119 [spec-004] **T053** mfa_recovery_store.py + rotas API — **T053** mfa_recovery_store.py + rotas API
Closed
#118 [spec-004] **T052** login/mfa aceita backup_code — **T052** login/mfa aceita backup_code
Closed
#117 [spec-004] **T051** Backup na ativação (TOTP) + e-mail — **T051** Backup na ativação (TOTP) + e-mail
Closed
#116 [spec-004] **T050** backup_codes.py — 10 códigos uso único — **T050** backup_codes.py — 10 códigos uso único
Closed
#115 [spec-004] **T045** Validação Roger — Minha conta OK — **T045** Validação Roger — Minha conta OK
Closed
#114 [spec-004] **T044** Formulário persistente (sem refresh apagar campos) — **T044** Formulário persistente (sem refresh apagar campos)
Closed
#113 [spec-004] **T043** GET /me → totp_enabled — **T043** GET /me → totp_enabled
Closed
#112 [spec-004] **T042** View Minha conta (todos perfis) — **T042** View Minha conta (todos perfis)
Closed
#111 [spec-004] **T041** TOTP obrigatório na troca (se ativo) — **T041** TOTP obrigatório na troca (se ativo)
Closed
#110 [spec-004] **T040** POST /change-password — **T040** POST /change-password
Closed
#109 [spec-004] **T035** Spec + quickstart — **T035** Spec + quickstart
Closed
#108 [spec-004] **T034** Validação E2E Roger — **T034** Validação E2E Roger
Closed
#107 [spec-004] **T033** docs/postfix-vm122.md — **T033** docs/postfix-vm122.md
Closed
#106 [spec-004] **T032** docs/email-ligbox-vm108.md — **T032** docs/email-ligbox-vm108.md
Closed
#105 [spec-004] **T031** Regra portugues-brasil.mdc — **T031** Regra portugues-brasil.mdc
Closed
#104 [spec-004] **T030** pt-BR UI/API/e-mails — **T030** pt-BR UI/API/e-mails
Closed
#103 [spec-004] **T028** Fix headers ntfy (Unicode) — **T028** Fix headers ntfy (Unicode)
Closed
#102 [spec-004] **T027** ntfy tópico + push — **T027** ntfy tópico + push
Closed
#101 [spec-004] **T026** /login/mfa + step login — **T026** /login/mfa + step login
Closed
#100 [spec-004] **T025** Barra progresso X/2 — **T025** Barra progresso X/2
Closed
#99 [spec-004] **T024** QR local (qrcode.min.js) — **T024** QR local (qrcode.min.js)
Closed
#98 [spec-004] **T023** activate.html layout 3 colunas — **T023** activate.html layout 3 colunas
Closed
#97 [spec-004] **T022** POST /activate lógica 2-de-3 — **T022** POST /activate lógica 2-de-3
Closed
#96 [spec-004] **T021** Flags *_verified — **T021** Flags *_verified
Closed
#95 [spec-004] **T020** pyotp + totp_util.py — **T020** pyotp + totp_util.py
Closed
#94 [spec-004] **T016** canonical_maps legado → @ligbox.com.br — **T016** canonical_maps legado → @ligbox.com.br
Closed
#93 [spec-004] **T015** transport_maps → VM108:7025 — **T015** transport_maps → VM108:7025
Closed
#92 [spec-004] **T014** Remetente ligbox-ops@ligbox.com.br — **T014** Remetente ligbox-ops@ligbox.com.br
Closed
#91 [spec-004] **T013** LMTP VM108 @ligbox.com.br — **T013** LMTP VM108 @ligbox.com.br
Closed
#90 [spec-004] **T012** Ticket postfix infra — **T012** Ticket postfix infra
Closed
#89 [spec-004] **T011** mail_notify.py + env SMTP — **T011** mail_notify.py + env SMTP
Closed
#88 [spec-004] **T010** Postfix VM122 — **T010** Postfix VM122
Closed
#87 [spec-004] **T007** PRG pós-cadastro — **T007** PRG pós-cadastro
Closed
#86 [spec-004] **T006** Aprovação + e-mail + ticket com link — **T006** Aprovação + e-mail + ticket com link
Closed
#85 [spec-004] **T005** Tela Mensagens — aprovar / rejeitar — **T005** Tela Mensagens — aprovar / rejeitar
Closed
#84 [spec-004] **T004** E-mail root + ticket pending — **T004** E-mail root + ticket pending
Closed
#83 [spec-004] **T003** register.html + link no login — **T003** register.html + link no login
Closed
#82 [spec-004] **T002** POST /api/v1/auth/register — **T002** POST /api/v1/auth/register
Closed
#81 [spec-004] **T001** Schema desk_registration_requests — **T001** Schema desk_registration_requests
Closed
#80 [spec-003] T040 — T040 fail2ban VM122 — confirmar active pós-deploy
Closed
#79 [spec-003] T039 — T039 Actualizar BACKLOG Obsidian: 003 ✅ (sync VM112 workspace + obsidian-infra)
Closed
#78 [spec-003] T038 — T038 Documentar rotação senha em quickstart
Closed
#77 [spec-003] T037 — T037 Testar público api.ops.ligbox.com.br → 401 em desk
Closed
#76 [spec-003] T036 — T036 Completar scripts/verify-auth.sh — matrix 20+ testes
Closed
#75 [spec-003] T035 — T035 [P] [US4] UI secção Admin (super_admin only) — lista users
Closed
#74 [spec-003] T034 — T034 [US4] PATCH /api/v1/auth/users/{username} — role, active, password
Closed
#73 [spec-003] T033 — T033 [US4] GET /api/v1/auth/users — super_admin
Closed
#72 [spec-003] T032 — T032 [US3] Confirmar VM112 onboarding E2E após auth deploy (portal healthy)
Closed
#71 [spec-003] T031 — T031 [US3] Worker audit: configurar OPS_INTERNAL_TOKEN em worker env
Closed
#70 [spec-003] T030 — T030 [US3] verify-wazuh-webhook.sh — ainda passa (via verify-auth webhook test)
Closed
#69 [spec-003] T029 — T029 [US3] verify-webhook.sh — ainda passa com secret, sem JWT
Closed
#68 [spec-003] T028 — T028 [US1] Teste browser: desk.ligbox.com.br → login → dashboard
Closed
#67 [spec-003] T027 — T027 [US2] Rebuild frontend container
Closed
#66 [spec-003] T026 — T026 [US2] Esconder acções PATCH para noc; esconder audit POST para technician/noc
Closed
#65 [spec-003] T025 — T025 [US2] Sidebar: user info + logout
Closed
#64 [spec-003] T024 — T024 [US1] app.js: guard no boot; api() inject Bearer
Closed
#63 [spec-003] T023 — T023 [US1] Criar frontend/login.html — form + redirect
Closed
#62 [spec-003] T022 — T022 [P] [US1] Criar frontend/assets/auth.js — login, logout, token storage
Closed
#61 [spec-003] T021 — T021 [US2] Rebuild API: docker-compose -f docker-compose.mvp.yml up -d --build api
Closed
#60 [spec-003] T020 — T020 [US2] Bump version → 0.6.0-desk-auth
Closed
#59 [spec-003] T019 — T019 [US2] Manter webhooks e /health públicos
Closed
#58 [spec-003] T018 — T018 [US2] PATCH ticket: validar can_patch_ticket; aceitar assigned_to no body
Closed
#57 [spec-003] T017 — T017 [US2] Implementar _mask_ticket_for_noc() em enrich ticket
Closed
#56 [spec-003] T016 — T016 [US2] Proteger GET /api/v1/tenants, webhooks/events, infra/*, integrations
Closed
#55 [spec-003] T015 — T015 [US2] POST /api/v1/audit/* — ops_lead+ only; cycle aceita X-Ops-Internal-Token
Closed
#54 [spec-003] T014 — T014 [US2] Proteger GET /api/v1/onboard/*, GET /api/v1/audit/*
Closed
#53 [spec-003] T013 — T013 [US2] Proteger GET/PATCH /api/v1/desk/* com Depends(get_current_user)
Closed
#52 [spec-003] T012 — T012 [US2] Adicionar assigned_to, assigned_at em tickets (migration init_db)
Closed
#51 [spec-003] T011 — T011 [US1] Testar login 4 users via curl
Closed
#50 [spec-003] T010 — T010 [US1] Registar router auth em main.py
Closed
#49 [spec-003] T009 — T009 [US1] Feature flag DESK_AUTH_ENABLED — bypass auth quando false
Closed
#48 [spec-003] T008 — T008 [US1] Criar api/app/auth_routes.py — POST /login, GET /me, rate limit 5/min
Closed
#47 [spec-003] T007 — T007 [US1] Em init_db(): CREATE desk_users; seed root/admin/mini/noc se vazio
Closed
#46 [spec-003] T006 — T006 [US1] Criar api/app/auth.py — bcrypt hash/verify, JWT create/decode, get_current_user dependency
Closed
#45 [spec-003] T005 — T005 [US1] Criar api/app/permissions.py — ROLE constants + can_patch_ticket, can_run_audit, etc.
Closed
#44 [spec-003] T004 — T004 [P] Criar scripts/verify-auth.sh (esqueleto)
Closed
#43 [spec-003] T003 — T003 [P] Adicionar .env: JWT_SECRET, JWT_EXPIRE_HOURS=8, DESK_AUTH_ENABLED=true, OPS_INTERNAL_TOKEN, `DESK_BOO
Closed
#42 [spec-003] T002 — T002 [P] Adicionar python-jose[cryptography], passlib[bcrypt] em api/requirements.txt
Closed
#41 [spec-003] T001 — T001 Confirmar API healthy: curl http://10.10.10.122:8080/health
Closed
#40 [spec-002] T008 — T008 Deploy VM122 + teste verify-wazuh-webhook.sh
Closed
#39 [spec-002] T007 — T007 Integração ossec.conf level 10
Closed
#38 [spec-002] T006 — T006 Script ligbox-ops.py no Wazuh manager
Closed
#37 [spec-002] T005 — T005 UI filtro origem + badges severidade
Closed
#36 [spec-002] T004 — T004 Tenant VM104 + secrets .env
Closed
#35 [spec-002] T003 — T003 Parser alert JSON Wazuh nativo
Closed
#34 [spec-002] T002 — T002 API POST /api/v1/webhooks/ingress/{integration}
Closed
#33 [spec-002] T001 — T001 Spec + plan criados
852 issues created by 1 user
Opened
#1 [spec-TEST] T001 — teste sync
Opened
#2 [spec-001] T001 — T001 Confirmar VM122 API healthy: curl http://10.10.10.122:8080/health
Opened
#3 [spec-001] T002 — T002 Confirmar VM112 portal healthy: curl http://10.10.10.112:8090/api/onboarding/health
Opened
#4 [spec-001] T003 — T003 [P] Documentar secret actual em ambos .env (VM122 WEBHOOK_SECRET, VM112 OPS_WEBHOOK_SECRET a criar)
Opened
#5 [spec-001] T004 — T004 [P] Criar scripts/verify-webhook.sh em ligbox-ops-platform/scripts/
Opened
#6 [spec-001] T005 — T005 [US1] Adicionar função _is_duplicate_event(conn, event, session_id, domain) em api/app/main.py (VM122 deploy pa
Opened
#7 [spec-001] T006 — T006 [US1] Em webhook_onboard: skip INSERT ticket se duplicado; sempre INSERT webhook_events
Opened
#8 [spec-001] T007 — T007 [US1] Melhorar subject ticket: [{event}] {domain} — {email} quando data.email presente
Opened
#9 [spec-001] T008 — T008 [P] [US1] Rebuild e restart: docker-compose -f docker-compose.mvp.yml up -d --build api na VM122
Opened
#10 [spec-001] T009 — T009 [US1] Testar idempotência com curl duplicado (quickstart §2)
Opened
#11 [spec-001] T010 — T010 [P] [US1] Adicionar campos ops_webhook_url, ops_webhook_secret, ops_webhook_enabled em `backend/app/config.py
Opened
#12 [spec-001] T011 — T011 [US1] Criar backend/app/services/ops_webhook.py com emit_event() + retry 3x (1s, 3s, 9s) + httpx timeout 5s
Opened
#13 [spec-001] T012 — T012 [US1] Em ops_webhook.py: log warn via activity_log em falha; nunca raise
Opened
#14 [spec-001] T013 — T013 [US1] Em backend/app/routers/onboarding.py create_account: obter session_id de request.state e chamar `ops_
Opened
#15 [spec-001] T014 — T014 [US1] Payload data: email, account_verified, needs_review, dns_mode, mail_aliases
Opened
#16 [spec-001] T015 — T015 [US1] Adicionar .env entries em VM112: OPS_WEBHOOK_URL=http://10.10.10.122:8080/api/v1/webhooks/onboard
Opened
#17 [spec-001] T016 — T016 [US1] Deploy portal VM112 (rsync + restart backend)
Opened
#18 [spec-001] T017 — T017 [US1] E2E: onboarding teste → verificar ticket em GET /api/v1/desk/tickets
Opened
#19 [spec-001] T018 — T018 [US2] Garantir session_id sempre enviado em emit_event (fallback "" aceite pelo Ops)
Opened
#20 [spec-001] T019 — T019 [US2] Adicionar endpoint GET /api/v1/webhooks/events?session_id= no Ops (opcional, consulta audit log)
Opened
#21 [spec-001] T020 — T020 [US2] Testar 2 eventos mesma sessão — ambos em webhook_events
Opened
#22 [spec-001] T021 — T021 [US3] Teste: parar API VM122, completar onboarding, confirmar resposta 200 ao cliente
Opened
#23 [spec-001] T022 — T022 [US3] Verificar activity log portal contém warn de falha webhook
Opened
#24 [spec-001] T023 — T023 [US3] Confirmar OPS_WEBHOOK_ENABLED=false desactiva envio sem erro
Opened
#25 [spec-001] T024 — T024 [P] [US4] Hook domain.validated em endpoint validate-domain do portal
Opened
#26 [spec-001] T025 — T025 [P] [US4] Hook dns.applied em cloudflare apply
Opened
#27 [spec-001] T026 — T026 [US4] Hook onboarding.completed / onboarding.failed nos pontos finais
Opened
#28 [spec-001] T027 — T027 [US4] Ops: eventos não-ticket só INSERT webhook_events
Opened
#29 [spec-001] T028 — T028 [P] Actualizar README.md do ligbox-ops-platform com link para spec
Opened
#30 [spec-001] T029 — T029 [P] Rotacionar WEBHOOK_SECRET para valor produção (não dev default)
Opened
#31 [spec-001] T030 — T030 Executar scripts/verify-security.sh na VM122 pós-deploy
Opened
#32 [spec-001] T031 — T031 Actualizar inventário VMs / backlog Obsidian com INT-2 concluído
Opened
#33 [spec-002] T001 — T001 Spec + plan criados
Opened
#34 [spec-002] T002 — T002 API POST /api/v1/webhooks/ingress/{integration}
Opened
#35 [spec-002] T003 — T003 Parser alert JSON Wazuh nativo
Opened
#36 [spec-002] T004 — T004 Tenant VM104 + secrets .env
Opened
#37 [spec-002] T005 — T005 UI filtro origem + badges severidade
Opened
#38 [spec-002] T006 — T006 Script ligbox-ops.py no Wazuh manager
Opened
#39 [spec-002] T007 — T007 Integração ossec.conf level 10
Opened
#40 [spec-002] T008 — T008 Deploy VM122 + teste verify-wazuh-webhook.sh
Opened
#41 [spec-003] T001 — T001 Confirmar API healthy: curl http://10.10.10.122:8080/health
Opened
#42 [spec-003] T002 — T002 [P] Adicionar python-jose[cryptography], passlib[bcrypt] em api/requirements.txt
Opened
#43 [spec-003] T003 — T003 [P] Adicionar .env: JWT_SECRET, JWT_EXPIRE_HOURS=8, DESK_AUTH_ENABLED=true, OPS_INTERNAL_TOKEN, `DESK_BOO
Opened
#44 [spec-003] T004 — T004 [P] Criar scripts/verify-auth.sh (esqueleto)
Opened
#45 [spec-003] T005 — T005 [US1] Criar api/app/permissions.py — ROLE constants + can_patch_ticket, can_run_audit, etc.
Opened
#46 [spec-003] T006 — T006 [US1] Criar api/app/auth.py — bcrypt hash/verify, JWT create/decode, get_current_user dependency
Opened
#47 [spec-003] T007 — T007 [US1] Em init_db(): CREATE desk_users; seed root/admin/mini/noc se vazio
Opened
#48 [spec-003] T008 — T008 [US1] Criar api/app/auth_routes.py — POST /login, GET /me, rate limit 5/min
Opened
#49 [spec-003] T009 — T009 [US1] Feature flag DESK_AUTH_ENABLED — bypass auth quando false
Opened
#50 [spec-003] T010 — T010 [US1] Registar router auth em main.py
Opened
#51 [spec-003] T011 — T011 [US1] Testar login 4 users via curl
Opened
#52 [spec-003] T012 — T012 [US2] Adicionar assigned_to, assigned_at em tickets (migration init_db)
Opened
#53 [spec-003] T013 — T013 [US2] Proteger GET/PATCH /api/v1/desk/* com Depends(get_current_user)
Opened
#54 [spec-003] T014 — T014 [US2] Proteger GET /api/v1/onboard/*, GET /api/v1/audit/*
Opened
#55 [spec-003] T015 — T015 [US2] POST /api/v1/audit/* — ops_lead+ only; cycle aceita X-Ops-Internal-Token
Opened
#56 [spec-003] T016 — T016 [US2] Proteger GET /api/v1/tenants, webhooks/events, infra/*, integrations
Opened
#57 [spec-003] T017 — T017 [US2] Implementar _mask_ticket_for_noc() em enrich ticket
Opened
#58 [spec-003] T018 — T018 [US2] PATCH ticket: validar can_patch_ticket; aceitar assigned_to no body
Opened
#59 [spec-003] T019 — T019 [US2] Manter webhooks e /health públicos
Opened
#60 [spec-003] T020 — T020 [US2] Bump version → 0.6.0-desk-auth
Opened
#61 [spec-003] T021 — T021 [US2] Rebuild API: docker-compose -f docker-compose.mvp.yml up -d --build api
Opened
#62 [spec-003] T022 — T022 [P] [US1] Criar frontend/assets/auth.js — login, logout, token storage
Opened
#63 [spec-003] T023 — T023 [US1] Criar frontend/login.html — form + redirect
Opened
#64 [spec-003] T024 — T024 [US1] app.js: guard no boot; api() inject Bearer
Opened
#65 [spec-003] T025 — T025 [US2] Sidebar: user info + logout
Opened
#66 [spec-003] T026 — T026 [US2] Esconder acções PATCH para noc; esconder audit POST para technician/noc
Opened
#67 [spec-003] T027 — T027 [US2] Rebuild frontend container
Opened
#68 [spec-003] T028 — T028 [US1] Teste browser: desk.ligbox.com.br → login → dashboard
Opened
#69 [spec-003] T029 — T029 [US3] verify-webhook.sh — ainda passa com secret, sem JWT
Opened
#70 [spec-003] T030 — T030 [US3] verify-wazuh-webhook.sh — ainda passa (via verify-auth webhook test)
Opened
#71 [spec-003] T031 — T031 [US3] Worker audit: configurar OPS_INTERNAL_TOKEN em worker env
Opened
#72 [spec-003] T032 — T032 [US3] Confirmar VM112 onboarding E2E após auth deploy (portal healthy)
Opened
#73 [spec-003] T033 — T033 [US4] GET /api/v1/auth/users — super_admin
Opened
#74 [spec-003] T034 — T034 [US4] PATCH /api/v1/auth/users/{username} — role, active, password
Opened
#75 [spec-003] T035 — T035 [P] [US4] UI secção Admin (super_admin only) — lista users
Opened
#76 [spec-003] T036 — T036 Completar scripts/verify-auth.sh — matrix 20+ testes
Opened
#77 [spec-003] T037 — T037 Testar público api.ops.ligbox.com.br → 401 em desk
Opened
#78 [spec-003] T038 — T038 Documentar rotação senha em quickstart
Opened
#79 [spec-003] T039 — T039 Actualizar BACKLOG Obsidian: 003 ✅ (sync VM112 workspace + obsidian-infra)
Opened
#80 [spec-003] T040 — T040 fail2ban VM122 — confirmar active pós-deploy
Opened
#81 [spec-004] **T001** Schema desk_registration_requests — **T001** Schema desk_registration_requests
Opened
#82 [spec-004] **T002** POST /api/v1/auth/register — **T002** POST /api/v1/auth/register
Opened
#83 [spec-004] **T003** register.html + link no login — **T003** register.html + link no login
Opened
#84 [spec-004] **T004** E-mail root + ticket pending — **T004** E-mail root + ticket pending
Opened
#85 [spec-004] **T005** Tela Mensagens — aprovar / rejeitar — **T005** Tela Mensagens — aprovar / rejeitar
Opened
#86 [spec-004] **T006** Aprovação + e-mail + ticket com link — **T006** Aprovação + e-mail + ticket com link
Opened
#87 [spec-004] **T007** PRG pós-cadastro — **T007** PRG pós-cadastro
Opened
#88 [spec-004] **T010** Postfix VM122 — **T010** Postfix VM122
Opened
#89 [spec-004] **T011** mail_notify.py + env SMTP — **T011** mail_notify.py + env SMTP
Opened
#90 [spec-004] **T012** Ticket postfix infra — **T012** Ticket postfix infra
Opened
#91 [spec-004] **T013** LMTP VM108 @ligbox.com.br — **T013** LMTP VM108 @ligbox.com.br
Opened
#92 [spec-004] **T014** Remetente ligbox-ops@ligbox.com.br — **T014** Remetente ligbox-ops@ligbox.com.br
Opened
#93 [spec-004] **T015** transport_maps → VM108:7025 — **T015** transport_maps → VM108:7025
Opened
#94 [spec-004] **T016** canonical_maps legado → @ligbox.com.br — **T016** canonical_maps legado → @ligbox.com.br
Opened
#95 [spec-004] **T020** pyotp + totp_util.py — **T020** pyotp + totp_util.py
Opened
#96 [spec-004] **T021** Flags *_verified — **T021** Flags *_verified
Opened
#97 [spec-004] **T022** POST /activate lógica 2-de-3 — **T022** POST /activate lógica 2-de-3
Opened
#98 [spec-004] **T023** activate.html layout 3 colunas — **T023** activate.html layout 3 colunas
Opened
#99 [spec-004] **T024** QR local (qrcode.min.js) — **T024** QR local (qrcode.min.js)
Opened
#100 [spec-004] **T025** Barra progresso X/2 — **T025** Barra progresso X/2
Opened
#101 [spec-004] **T026** /login/mfa + step login — **T026** /login/mfa + step login
Opened
#102 [spec-004] **T027** ntfy tópico + push — **T027** ntfy tópico + push
Opened
#103 [spec-004] **T028** Fix headers ntfy (Unicode) — **T028** Fix headers ntfy (Unicode)
Opened
#104 [spec-004] **T030** pt-BR UI/API/e-mails — **T030** pt-BR UI/API/e-mails
Opened
#105 [spec-004] **T031** Regra portugues-brasil.mdc — **T031** Regra portugues-brasil.mdc
Opened
#106 [spec-004] **T032** docs/email-ligbox-vm108.md — **T032** docs/email-ligbox-vm108.md
Opened
#107 [spec-004] **T033** docs/postfix-vm122.md — **T033** docs/postfix-vm122.md
Opened
#108 [spec-004] **T034** Validação E2E Roger — **T034** Validação E2E Roger
Opened
#109 [spec-004] **T035** Spec + quickstart — **T035** Spec + quickstart
Opened
#110 [spec-004] **T040** POST /change-password — **T040** POST /change-password
Opened
#111 [spec-004] **T041** TOTP obrigatório na troca (se ativo) — **T041** TOTP obrigatório na troca (se ativo)
Opened
#112 [spec-004] **T042** View Minha conta (todos perfis) — **T042** View Minha conta (todos perfis)
Opened
#113 [spec-004] **T043** GET /me → totp_enabled — **T043** GET /me → totp_enabled
Opened
#114 [spec-004] **T044** Formulário persistente (sem refresh apagar campos) — **T044** Formulário persistente (sem refresh apagar campos)
Opened
#115 [spec-004] **T045** Validação Roger — Minha conta OK — **T045** Validação Roger — Minha conta OK
Opened
#116 [spec-004] **T050** backup_codes.py — 10 códigos uso único — **T050** backup_codes.py — 10 códigos uso único
Opened
#117 [spec-004] **T051** Backup na ativação (TOTP) + e-mail — **T051** Backup na ativação (TOTP) + e-mail
Opened
#118 [spec-004] **T052** login/mfa aceita backup_code — **T052** login/mfa aceita backup_code
Opened
#119 [spec-004] **T053** mfa_recovery_store.py + rotas API — **T053** mfa_recovery_store.py + rotas API
Opened
#120 [spec-004] **T054** Login UI — perdi autenticador + backup — **T054** Login UI — perdi autenticador + backup
Opened
#121 [spec-004] **T055** Notificação root início/fim recuperação — **T055** Notificação root início/fim recuperação
Opened
#122 [spec-004] **T056** Minha conta — contagem backup restantes — **T056** Minha conta — contagem backup restantes
Opened
#123 [spec-004] **T057** Spec + quickstart atualizados — **T057** Spec + quickstart atualizados
Opened
#124 [spec-004] T001 — T001 GET /api/v1/onboard/funnel — agregação por fase (48h)
Opened
#125 [spec-004] T002 — T002 GET /api/v1/onboard/sessions/{session_id}/timeline
Opened
#126 [spec-004] T003 — T003 Enriquecer GET /api/v1/desk/tickets/{id} com timeline
Opened
#127 [spec-004] T004 — T004 Actualizar webhook_onboard: onboarding.completed → nota ticket; onboarding.failed → ticket
Opened
#128 [spec-004] T005 — T005 Ajustar TICKET_EVENTS_BY_SOURCE para incluir onboarding.failed
Opened
#129 [spec-004] T006 — T006 validate-domain: emit onboarding.started (1x) + domain.validated
Opened
#130 [spec-004] T007 — T007 apply_cloudflare_dns: emit dns.applied — ver [cloudflare-zone-provision.md](./cloudflare-zone-provision.md)
Opened
#131 [spec-004] T008 — T008 create_account: emit infra.synced + onboarding.completed
Opened
#132 [spec-004] T009 — T009 create_account except: emit onboarding.failed
Opened
#133 [spec-004] T010 — T010 Sync código para /opt/ibytera-mail-portal/ VM112 + restart
Opened
#134 [spec-004] T011 — T011 Dashboard widget funil (contadores + sessões activas)
Opened
#135 [spec-004] T012 — T012 Ticket detail — secção timeline vertical
Opened
#136 [spec-004] T013 — T013 CSS funil (barras/progresso por fase)
Opened
#137 [spec-004] T014 — T014 Script scripts/verify-funnel-webhook.sh
Opened
#138 [spec-004] T015 — T015 Deploy VM122 /opt/ligbox-ops-platform/
Opened
#139 [spec-004] T016 — T016 Teste E2E wizard domínio staging
Opened
#140 [spec-004] T017 — T017 Actualizar quickstart / README feature 004
Opened
#141 [spec-007] **T001** Schema: desk_users.ntfy_topic estável + push_ntf — **T001** Schema: desk_users.ntfy_topic estável + push_ntfy_enabled`
Opened
#142 [spec-007] **T002** Migrar lógica de ntfy_topic de registration-only — **T002** Migrar lógica de ntfy_topic de registration-only para user profile
Opened
#143 [spec-007] **T003** GET /api/v1/push/settings — **T003** GET /api/v1/push/settings
Opened
#144 [spec-007] **T004** POST /api/v1/push/ntfy/enable · disable — **T004** POST /api/v1/push/ntfy/enable · disable
Opened
#145 [spec-007] **T005** POST /api/v1/push/test (notificação teste) — **T005** POST /api/v1/push/test (notificação teste)
Opened
#146 [spec-007] **T006** UI Minha conta — seção Notificações (toggle + link — **T006** UI Minha conta — seção Notificações (toggle + link + QR)
Opened
#147 [spec-007] **T007** push_service.py — notify_user(), notify_role() — **T007** push_service.py — notify_user(), notify_role()`
Opened
#148 [spec-007] **T008** Hook: ticket Wazuh criado → push noc + ops_lead — **T008** Hook: ticket Wazuh criado → push noc + ops_lead + root
Opened
#149 [spec-007] **T009** Hook: pedido cadastro → push root — **T009** Hook: pedido cadastro → push root
Opened
#150 [spec-007] **T010** Rate limit push · logs · falha silenciosa — **T010** Rate limit push · logs · falha silenciosa
Opened
#151 [spec-007] **T011** Testes manuais Android/iOS ntfy — **T011** Testes manuais Android/iOS ntfy
Opened
#152 [spec-007] **T012** Docs quickstart + env DESK_NTFY_BASE_URL — **T012** Docs quickstart + env DESK_NTFY_BASE_URL
Opened
#153 [spec-007] **T020** manifest.json + ícones Ligbox Ops — **T020** manifest.json + ícones Ligbox Ops
Opened
#154 [spec-007] **T021** Service Worker sw.js (push + notificationclick) — **T021** Service Worker sw.js (push + notificationclick)
Opened
#155 [spec-007] **T022** Tabela push_subscriptions — **T022** Tabela push_subscriptions
Opened
#156 [spec-007] **T023** VAPID keys (env) + pywebpush no requirements — **T023** VAPID keys (env) + pywebpush no requirements
Opened
#157 [spec-007] **T024** POST /api/v1/push/subscribe · DELETE — **T024** POST /api/v1/push/subscribe · DELETE
Opened
#158 [spec-007] **T025** UI «Ativar notificações neste dispositivo» — **T025** UI «Ativar notificações neste dispositivo»
Opened
#159 [spec-007] **T026** Integrar push_service dual-channel (ntfy + webpus — **T026** Integrar push_service dual-channel (ntfy + webpush)
Opened
#160 [spec-007] **T027** Teste iOS Safari PWA + Android Chrome — **T027** Teste iOS Safari PWA + Android Chrome
Opened
#161 [spec-007] **T030** Preferências por tipo de evento — **T030** Preferências por tipo de evento
Opened
#162 [spec-007] **T031** FCM para app nativo — **T031** FCM para app nativo
Opened
#163 [spec-007] **T032** ntfy self-hosted (VM122 ou VM108) — **T032** ntfy self-hosted (VM122 ou VM108)
Opened
#164 [spec-007] **T033** OneSignal avaliação (se FCM complexo demais) — **T033** OneSignal avaliação (se FCM complexo demais)
Opened
#165 [spec-009] T001 — T001 SQLite migrations audit_domains, audit_checks em init_db()
Opened
#166 [spec-009] T002 — T002 Módulo audit_store.py — upsert checks, list domains, aggregate score
Opened
#167 [spec-009] T003 — T003 Job auto-register domains from webhook_events (account.created)
Opened
#168 [spec-009] T004 — T004 collectors/vm112.py — carbonio, nginx_vhost, cert_le via portal API
Opened
#169 [spec-009] T005 — T005 collectors/dns.py — mx, spf, dkim, dmarc
Opened
#170 [spec-009] T006 — T006 collectors/webmail.py — HTTPS status mail.{domain}
Opened
#171 [spec-009] T007 — T007 collectors/base.py — runner run_audit(tenant_id, domain)
Opened
#172 [spec-009] T008 — T008 Unit smoke: run_audit domínio conhecido VM112
Opened
#173 [spec-009] T009 — T009 GET /api/v1/audit/overview
Opened
#174 [spec-009] T010 — T010 GET /api/v1/audit/tenants/{id}/scorecard?domain=
Opened
#175 [spec-009] T011 — T011 POST /api/v1/audit/run/{tenant_id}?domain= (manual trigger)
Opened
#176 [spec-009] T012 — T012 worker/audit_runner.py — ciclo periódico
Opened
#177 [spec-009] T013 — T013 Env AUDIT_INTERVAL_SEC=600 docker-compose VM122
Opened
#178 [spec-009] T014 — T014 Integrar runner no worker existente (Redis ou loop)
Opened
#179 [spec-009] T015 — T015 Nav tab **Overview** + view container
Opened
#180 [spec-009] T016 — T016 Grid cards tenant (status, score, issues)
Opened
#181 [spec-009] T017 — T017 Drill-down scorecard panel (8 checks)
Opened
#182 [spec-009] T018 — T018 CSS health grid (healthy/degraded/critical badges)
Opened
#183 [spec-009] T019 — T019 Merge dashboard: funil 004 + overview 009 + tickets (se 004 pronto)
Opened
#184 [spec-009] T020 — T020 Script scripts/verify-audit-overview.sh
Opened
#185 [spec-009] T021 — T021 Deploy VM122 + confirmar worker cycle
Opened
#186 [spec-009] T022 — T022 Documentar domínio seed e intervalo em quickstart
Opened
#187 [spec-010] **T001** Schema: ticket status escalated|assisting|resolved — **T001** Schema: ticket status escalated|assisting|resolved + session_id, assist_mode, assisted_by`
Opened
#188 [spec-010] **T002** Tabelas assist_sessions, assist_actions — **T002** Tabelas assist_sessions, assist_actions
Opened
#189 [spec-010] **T003** Webhook ingress onboarding.escalated + onboardin — **T003** Webhook ingress onboarding.escalated + onboarding.failed` → ticket escalated
Opened
#190 [spec-010] **T004** GET /api/v1/assist/sessions — merge funil + assis — **T004** GET /api/v1/assist/sessions — merge funil + assist state
Opened
#191 [spec-010] **T005** POST /api/v1/assist/sessions/{id}/escalate — técn — **T005** POST /api/v1/assist/sessions/{id}/escalate — técnico puxa (≥ domain.validated)
Opened
#192 [spec-010] **T006** UI: sessões funil clicáveis + badges estado — **T006** UI: sessões funil clicáveis + badges estado
Opened
#193 [spec-010] **T007** UI ticket/sessão: assignee + botão «Assumir sessão» — **T007** UI ticket/sessão: assignee + botão «Assumir sessão» + handoff
Opened
#194 [spec-010] **T008** Regra RBAC assist (permissions.py) — **T008** Regra RBAC assist (permissions.py)
Opened
#195 [spec-010] **T009** Lock optimista — 409 se sessão já assisting — **T009** Lock optimista — 409 se sessão já assisting
Opened
#196 [spec-010] **T010** VM112: POST .../pause, .../takeover, .../resum — **T010** VM112: POST .../pause, .../takeover, .../resume`
Opened
#197 [spec-010] **T011** VM112: wizard ASM UI + banner «A actuar em nome do — **T011** VM112: wizard ASM UI + banner «A actuar em nome do cliente»
Opened
#198 [spec-010] **T012** VM112: botão cliente «Preciso de ajuda técnica» — **T012** VM112: botão cliente «Preciso de ajuda técnica»
Opened
#199 [spec-010] **T013** Desk: POST .../takeover → chama VM112, guarda tok — **T013** Desk: POST .../takeover → chama VM112, guarda token hash
Opened
#200 [spec-010] **T014** Desk: POST .../handoff → resume cliente — **T014** Desk: POST .../handoff → resume cliente
Opened
#201 [spec-010] **T015** Webhooks onboarding.assist.started|ended — **T015** Webhooks onboarding.assist.started|ended
Opened
#202 [spec-010] **T016** Teste E2E: cliente pausado → técnico ASM → handoff — **T016** Teste E2E: cliente pausado → técnico ASM → handoff → cliente retoma
Opened
#203 [spec-010] **T020** POST .../actions/{action} — proxy VM112 — **T020** POST .../actions/{action} — proxy VM112
Opened
#204 [spec-010] **T021** Catálogo MVP: dns.revalidate, dns.reapply, account. — **T021** Catálogo MVP: dns.revalidate, dns.reapply, account.retry_sync, infra.resync
Opened
#205 [spec-010] **T022** UI Console: painel acções + disabled se não assisti — **T022** UI Console: painel acções + disabled se não assisting
Opened
#206 [spec-010] **T023** GET .../links — Proxmox, Carbonio, Traefik, Cloud — **T023** GET .../links — Proxmox, Carbonio, Traefik, Cloudflare (nova aba)
Opened
#207 [spec-010] **T024** Audit log cada acção em assist_actions — **T024** Audit log cada acção em assist_actions
Opened
#208 [spec-010] **T025** onboarding.mark_step_complete + onboarding.abort — **T025** onboarding.mark_step_complete + onboarding.abort` (ops_lead+)
Opened
#209 [spec-010] **T040** GET /api/v1/assist/technicians/ranking — assumido — **T040** GET /api/v1/assist/technicians/ranking — assumidos, escalados, acções, score
Opened
#210 [spec-010] **T041** UI Dashboard: tabela ranking 30 dias — **T041** UI Dashboard: tabela ranking 30 dias
Opened
#211 [spec-010] **T042** Audit movimento visível no console da sessão — **T042** Audit movimento visível no console da sessão
Opened
#212 [spec-010] **T030** Spec 007: push «sessão escalada» → technician/ops_l — **T030** Spec 007: push «sessão escalada» → technician/ops_lead
Opened
#213 [spec-010] **T031** Auto-escalada onboarding.failed + stale 24h — **T031** Auto-escalada onboarding.failed + stale 24h
Opened
#214 [spec-010] **T032** Docs quickstart + runbook técnico pt-BR — **T032** Docs quickstart + runbook técnico pt-BR
Opened
#215 [spec-010] **T033** Testes permissões: noc read-only, technician takeov — **T033** Testes permissões: noc read-only, technician takeover
Opened
#216 [spec-010] **V112-A1** Assist API assist-v1 contract — **V112-A1** Assist API assist-v1 contract
Opened
#217 [spec-010] **V112-A2** Wizard pause overlay pt-BR — **V112-A2** Wizard pause overlay pt-BR
Opened
#218 [spec-010] **V112-A3** SUP-4 painel humano base — **V112-A3** SUP-4 painel humano base
Opened
#219 [spec-012] **T001** Desk: ticket em onboarding.started (não só accou — **T001** Desk: ticket em onboarding.started (não só account.created`)
Opened
#220 [spec-012] **T002** Desk: account.created → nota no ticket existente — **T002** Desk: account.created → nota no ticket existente (sem duplicar)
Opened
#221 [spec-012] **T003** Desk: _backfill_funnel_notes para domain.validat — **T003** Desk: _backfill_funnel_notes para domain.validated + dns.applied`
Opened
#222 [spec-012] **T004** VM112: remover onboarding.started de validate-do — **T004** VM112: remover onboarding.started de validate-domain`
Opened
#223 [spec-012] **T005** VM112: emitir onboarding.started em POST /accoun — **T005** VM112: emitir onboarding.started em POST /account/create com email`
Opened
#224 [spec-012] **T006** Scripts verify-funnel-webhook.sh — ordem real do — **T006** Scripts verify-funnel-webhook.sh — ordem real do funil
Opened
#225 [spec-012] **T007** Spec 012 + BACKLOG actualizados — **T007** Spec 012 + BACKLOG actualizados
Opened
#226 [spec-012] **T010** Env ONBOARD_STALE_HOURS (default 24) — **T010** Env ONBOARD_STALE_HOURS (default 24)
Opened
#227 [spec-012] **T011** Worker job: sessões stale → crm_track=lead + lea — **T011** Worker job: sessões stale → crm_track=lead + lead_detected_at`
Opened
#228 [spec-012] **T012** GET /api/v1/crm/leads — lista tickets lead — **T012** GET /api/v1/crm/leads — lista tickets lead
Opened
#229 [spec-012] **T013** UI Desk: painel «Leads abandonados» (grid + view + — **T013** UI Desk: painel «Leads abandonados» (grid + view + filtro tickets)
Opened
#230 [spec-012] **T014** Badge stale/lead na grid sessões liga ao ticket — **T014** Badge stale/lead na grid sessões liga ao ticket
Opened
#231 [spec-012] **T020** POST /api/v1/crm/leads/{ticket_id}/contact — log — **T020** POST /api/v1/crm/leads/{ticket_id}/contact — log outreach
Opened
#232 [spec-012] **T021** POST /api/v1/crm/leads/{ticket_id}/promote — prom — **T021** POST /api/v1/crm/leads/{ticket_id}/promote — promoção manual
Opened
#233 [spec-012] **T022** Spec 007: push «lead abandonado» → ops_lead — **T022** Spec 007: push «lead abandonado» → ops_lead
Opened
#234 [spec-012] **T023** Template e-mail recuperação (VM108 Postfix) — **T023** Template e-mail recuperação (VM108 Postfix)
Opened
#235 [spec-012] **T030** Decisão Roger: canal chat (widget / tablet / outro) — **T030** Decisão Roger: canal chat (widget / tablet / outro)
Opened
#236 [spec-012] **T031** Integração Odoo CRM (lead export idempotente por t — **T031** Integração Odoo CRM (lead export idempotente por ticket_id`)
Opened
#237 [spec-012] **T032** Webhook CRM inbound — lead_converted / lead_lost — **T032** Webhook CRM inbound — lead_converted / lead_lost`
Opened
#238 [spec-012] **T033** Documentação quickstart operacional — **T033** Documentação quickstart operacional
Opened
#239 [spec-013] **T001** Criar pasta specs/013-email-server-migration/ ✅ ( — **T001** Criar pasta specs/013-email-server-migration/ ✅ (este sprint)
Opened
#240 [spec-013] **T002** Migration SQL schema + migrations em api/app/db.py — **T002** Migration SQL schema + migrations em api/app/db.py`
Opened
#241 [spec-013] **T003** app/migration/schemas.py — Pydantic models — **T003** app/migration/schemas.py — Pydantic models
Opened
#242 [spec-013] **T004** app/migration/store.py — CRUD jobs/mailboxes/runs — **T004** app/migration/store.py — CRUD jobs/mailboxes/runs
Opened
#243 [spec-013] **T005** app/migration/credentials.py — Fernet encrypt — **T005** app/migration/credentials.py — Fernet encrypt
Opened
#244 [spec-013] **T006** app/migration/router.py — POST/GET jobs, list — **T006** app/migration/router.py — POST/GET jobs, list
Opened
#245 [spec-013] **T007** permissions.py — can_manage_migration, can_app — **T007** permissions.py — can_manage_migration, can_approve_migration_gate`
Opened
#246 [spec-013] **T008** scripts/install-migration-tools.sh — imapsync, ps — **T008** scripts/install-migration-tools.sh — imapsync, pst-utils, imap-upload
Opened
#247 [spec-013] **T009** Frontend: menu + view-email-migration lista jobs — **T009** Frontend: menu + view-email-migration lista jobs
Opened
#248 [spec-013] **T010** Associar job a ticket_id (Spec 010) — **T010** Associar job a ticket_id (Spec 010)
Opened
#249 [spec-013] **T011** tools/imapsync_runner.py — gera comando, executa, — **T011** tools/imapsync_runner.py — gera comando, executa, captura log
Opened
#250 [spec-013] **T012** tools/log_parser.py — parse imapsync LOG para sta — **T012** tools/log_parser.py — parse imapsync LOG para stats_json
Opened
#251 [spec-013] **T013** worker/migration_runner.py — fila Redis/SQLite jo — **T013** worker/migration_runner.py — fila Redis/SQLite job runner
Opened
#252 [spec-013] **T014** POST /migration/jobs/{id}/preflight — justlogin o — **T014** POST /migration/jobs/{id}/preflight — justlogin origem+destino
Opened
#253 [spec-013] **T015** POST /migration/jobs/{id}/sync — initial | delta — **T015** POST /migration/jobs/{id}/sync — initial | delta | final
Opened
#254 [spec-013] **T016** gate.py — calcular migration_gate (ratio 99%) — **T016** gate.py — calcular migration_gate (ratio 99%)
Opened
#255 [spec-013] **T017** GET /migration/gate?domain= — público para wizard — **T017** GET /migration/gate?domain= — público para wizard (auth token)
Opened
#256 [spec-013] **T018** POST /migration/jobs/{id}/approve-gate — ops_lead — **T018** POST /migration/jobs/{id}/approve-gate — ops_lead
Opened
#257 [spec-013] **T019** UI: detalhe job, botões sync, badge gate, log viewe — **T019** UI: detalhe job, botões sync, badge gate, log viewer
Opened
#258 [spec-013] **T020** scripts/verify-migration.sh — teste integração — **T020** scripts/verify-migration.sh — teste integração
Opened
#259 [spec-013] **T021** Volume Docker /data/migrations (uploads, logs, qu — **T021** Volume Docker /data/migrations (uploads, logs, quarantine)
Opened
#260 [spec-013] **T022** POST /migration/jobs/{id}/upload-pst — multipart — **T022** POST /migration/jobs/{id}/upload-pst — multipart
Opened
#261 [spec-013] **T023** tools/pst_runner.py — readpst + imap-upload recur — **T023** tools/pst_runner.py — readpst + imap-upload recursivo
Opened
#262 [spec-013] **T024** Quarentena ERR_MBOX + UI lista erros — **T024** Quarentena ERR_MBOX + UI lista erros
Opened
#263 [spec-013] **T025** verify.py — contagens pós-PST — **T025** verify.py — contagens pós-PST
Opened
#264 [spec-013] **T026** UI: upload PST, progresso por pasta — **T026** UI: upload PST, progresso por pasta
Opened
#265 [spec-013] **T027** tools/tgz_runner.py — SSH zmmailbox export/import — **T027** tools/tgz_runner.py — SSH zmmailbox export/import
Opened
#266 [spec-013] **T028** VM112: consulta gate antes DNS (API client) — **T028** VM112: consulta gate antes DNS (API client)
Opened
#267 [spec-013] **T029** Webhook migration.gate_ready → Desk — **T029** Webhook migration.gate_ready → Desk
Opened
#268 [spec-013] **T030** Relatório JSON/PDF export no ticket — **T030** Relatório JSON/PDF export no ticket
Opened
#269 [spec-013] **T036** Avaliar carga real vs Opção A (VM122) vs Opção B (V — **T036** Avaliar carga real vs Opção A (VM122) vs Opção B (VM123)
Opened
#270 [spec-013] **T037** Provisionar VM123 ligbox-migration (4 vCPU / 8 GB — **T037** Provisionar VM123 ligbox-migration (4 vCPU / 8 GB / 200 GB) — se necessário
Opened
#271 [spec-013] **T038** Volume +100 GB em VM122 — alternativa piloto — **T038** Volume +100 GB em VM122 — alternativa piloto
Opened
#272 [spec-013] **T039** DNAT/FORWARD SSH WAN para VM123 (range 2501–2510) — **T039** DNAT/FORWARD SSH WAN para VM123 (range 2501–2510)
Opened
#273 [spec-013] **T040** install-migration-tools.sh no host worker escolhi — **T040** install-migration-tools.sh no host worker escolhido
Opened
#274 [spec-013] **T031** Integração pst2mbox (https://github.com/beaufour/ps — **T031** Integração pst2mbox (https://github.com/beaufour/pst2mbox)
Opened
#275 [spec-013] **T032** OAuth2 UI para O365 (oauth2_imap) — **T032** OAuth2 UI para O365 (oauth2_imap)
Opened
#276 [spec-013] **T033** Cron delta sync automático (6h) — **T033** Cron delta sync automático (6h)
Opened
#277 [spec-013] **T034** doveadm backup path (Dovecot→Dovecot) — **T034** doveadm backup path (Dovecot→Dovecot)
Opened
#278 [spec-013] **T035** Dashboard métricas migração no Overview Home — **T035** Dashboard métricas migração no Overview Home
Opened
#279 [spec-013] Spec + research + plan + data-model + tasks + quickstart doc — Spec + research + plan + data-model + tasks + quickstart documentados
Opened
#280 [spec-013] Fase B entregue em staging com 1 migração IMAP real — Fase B entregue em staging com 1 migração IMAP real
Opened
#281 [spec-013] Fase C com 1 PST teste < 2 GB — Fase C com 1 PST teste < 2 GB
Opened
#282 [spec-013] Gate bloqueia e libera DNS com auditoria — Gate bloqueia e libera DNS com auditoria
Opened
#283 [spec-013] BACKLOG.md actualizado — BACKLOG.md actualizado
Opened
#284 [spec-016] beginOnboardingForEmail() + ligbox_planned_email — beginOnboardingForEmail() + ligbox_planned_email
Opened
#285 [spec-016] setPortalOnboardCredentials() → sessionStorage senha — setPortalOnboardCredentials() → sessionStorage senha
Opened
#286 [spec-016] syncWizardWithPlannedEmail() — prioridade Self-Service — syncWizardWithPlannedEmail() — prioridade Self-Service
Opened
#287 [spec-016] loadWizardStateForOnboard() no mount wizard — loadWizardStateForOnboard() no mount wizard
Opened
#288 [spec-016] Fluxo registo → TOTP → redirect /onboard — Fluxo registo → TOTP → redirect /onboard
Opened
#289 [spec-016] PortalTotpSetup.jsx — ecrã «Salve estes códigos» (visual o — PortalTotpSetup.jsx — ecrã «Salve estes códigos» (visual only)
Opened
#290 [spec-016] **B1-01** Botão «Descarregar .txt» em PortalTotpSetup.jsx — **B1-01** Botão «Descarregar .txt» em PortalTotpSetup.jsx
Opened
#291 [spec-016] **B1-02** Botão «Copiar todos os códigos» + toast confirmaçã — **B1-02** Botão «Copiar todos os códigos» + toast confirmação
Opened
#292 [spec-016] **B1-03** Formato ficheiro ligbox-codigos-recuperacao-{logi — **B1-03** Formato ficheiro ligbox-codigos-recuperacao-{login}-{date}.txt`
Opened
#293 [spec-016] **B2-01** Botão Telegram → t.me/share/url — **B2-01** Botão Telegram → t.me/share/url
Opened
#294 [spec-016] **B2-02** Botão WhatsApp → wa.me/?text= — **B2-02** Botão WhatsApp → wa.me/?text=
Opened
#295 [spec-016] **B2-03** Aviso segurança «não partilhe em grupos públicos» — **B2-03** Aviso segurança «não partilhe em grupos públicos»
Opened
#296 [spec-016] **B3-01** Botão «Guardar no cofre» → copiar Secure Note form — **B3-01** Botão «Guardar no cofre» → copiar Secure Note formatada
Opened
#297 [spec-016] **B3-02** Modal instruções 1Password / Bitwarden / Apple Pas — **B3-02** Modal instruções 1Password / Bitwarden / Apple Passwords
Opened
#298 [spec-016] **B4-01** OAuth Google + scope drive.file — **B4-01** OAuth Google + scope drive.file
Opened
#299 [spec-016] **B4-02** Upload .txt para Drive do utilizador — **B4-02** Upload .txt para Drive do utilizador
Opened
#300 [spec-016] **B4-03** Fallback para download local se OAuth falhar — **B4-03** Fallback para download local se OAuth falhar
Opened
#301 [spec-016] **B5-01** Web Share API (mobile) — **B5-01** Web Share API (mobile)
Opened
#302 [spec-016] **B5-02** Telegram Bot Ligbox (envio directo) — **B5-02** Telegram Bot Ligbox (envio directo)
Opened
#303 [spec-016] **B5-03** Paridade export na Spec 004 Desk (activate.html) — **B5-03** Paridade export na Spec 004 Desk (activate.html)
Opened
#304 [spec-016] **B6-01** Barra de acções responsiva (ícones + labels) — **B6-01** Barra de acções responsiva (ícones + labels)
Opened
#305 [spec-016] **B6-02** Badge «✓ Guardado» por canal usado — **B6-02** Badge «✓ Guardado» por canal usado
Opened
#306 [spec-016] **B6-03** Revisão NFR: zero códigos em logs/webhooks — **B6-03** Revisão NFR: zero códigos em logs/webhooks
Opened
#307 [spec-019] Schema SQLite migration_jobs, mailboxes, runs, gate_checks, — Schema SQLite migration_jobs, mailboxes, runs, gate_checks, credentials
Opened
#308 [spec-019] API CRUD /api/v1/migration/jobs — API CRUD /api/v1/migration/jobs
Opened
#309 [spec-019] Preflight runner (IMAP reachability + imapsync check) — Preflight runner (IMAP reachability + imapsync check)
Opened
#310 [spec-019] Sync initial/delta/final (runner MVP) — Sync initial/delta/final (runner MVP)
Opened
#311 [spec-019] UI Desk «Migração E-mail» (email-migration.js) — UI Desk «Migração E-mail» (email-migration.js)
Opened
#312 [spec-019] install-migration-tools.sh no host VM122 — install-migration-tools.sh no host VM122
Opened
#313 [spec-019] gate.py — ratio 99%, estados blocked/warning/ready — gate.py — ratio 99%, estados blocked/warning/ready
Opened
#314 [spec-019] GET /api/v1/migration/gate?domain= — GET /api/v1/migration/gate?domain=
Opened
#315 [spec-019] POST approve-gate com ops_lead — POST approve-gate com ops_lead
Opened
#316 [spec-019] Integração ticket via job.ticket_id (manual) — Integração ticket via job.ticket_id (manual)
Opened
#317 [spec-019] Verify endpoint + relatório gate — Verify endpoint + relatório gate
Opened
#318 [spec-019] Upload PST multipart (futuro) — Upload PST multipart (futuro)
Opened
#319 [spec-019] Pipeline readpst → imap-upload (futuro) — Pipeline readpst → imap-upload (futuro)
Opened
#320 [spec-019] VM112 consulta gate antes DNS final (API pronta; integração — VM112 consulta gate antes DNS final (API pronta; integração VM112 pendente)
Opened
#321 [spec-019] Job real cPanel/Zimbra → Carbonio (aguarda credenciais pilot — Job real cPanel/Zimbra → Carbonio (aguarda credenciais piloto Roger)
Opened
#322 [spec-019] T001 — T001 Inventariar VM123 no Proxmox (IP, hostname, serviços existentes)
Opened
#323 [spec-019] T002 — T002 Executar deploy/scripts/preflight-vm123.sh e documentar resultado
Opened
#324 [spec-019] T003 — T003 Confirmar porta livre (default 8100) ou definir CONSOLE_HOST_PORT no .env
Opened
#325 [spec-019] T004 — T004 DNS console.ligbox.com.br → Traefik CT114 **(G1 2026-06-25)**
Opened
#326 [spec-019] T005 — T005 Router Traefik → http://10.10.10.123:8100 **(G1 2026-06-25)**
Opened
#327 [spec-019] T010 — T010 Migração SQL chamados, chamado_eventos, runbook_execucoes, aprovacoes
Opened
#328 [spec-019] T011 — T011 chamado_aggregator.py — regras session_id + domain + 72h
Opened
#329 [spec-019] T012 — T012 Worker hook pós-webhook_events insert
Opened
#330 [spec-019] T013 — T013 Gerador public_id CH-YYYY-NNNNN
Opened
#331 [spec-019] T014 — T014 Teste unitário agregação (Wazuh + onboard mesmo domínio → 1 chamado)
Opened
#332 [spec-019] T015 — T015 Extractor chamado_observables a partir de payloads
Opened
#333 [spec-019] T016 — T016 chamado_notas + append timeline
Opened
#334 [spec-019] T020 — T020 GET /api/v1/chamados com filtros
Opened
#335 [spec-019] T021 — T021 GET /api/v1/chamados/{public_id} — **resposta hub completa**
Opened
#336 [spec-019] T022 — T022 POST .../assumir + RBAC
Opened
#337 [spec-019] T023 — T023 PATCH ... estados
Opened
#338 [spec-019] T024 — T024 POST .../eventos/anexar + POST .../notas
Opened
#339 [spec-019] T025 — T025 GET .../links/wazuh deep link builder
Opened
#340 [spec-019] T026 — T026 Compat: desk/tickets expõe chamado_public_id
Opened
#341 [spec-019] T027 — T027 scripts/verify-chamado-unico.sh
Opened
#342 [spec-019] T030 — T030 Scaffold React + Vite + React Router
Opened
#343 [spec-019] T031 — T031 navigation-ia.md — rotas e drill-down
Opened
#344 [spec-019] T032 — T032 Layout sidebar + tema tokens
Opened
#345 [spec-019] T033 — T033 View Overview → links para hub
Opened
#346 [spec-019] T034 — T034 View Discover → abrir hub
Opened
#347 [spec-019] T035 — T035 View Chamados lista
Opened
#348 [spec-019] T036 — T036 **ChamadoHub** /chamados/:publicId — timeline + tabs (mock)
Opened
#349 [spec-019] T037 — T037 ObservablesPanel drill-down real (API)
Opened
#350 [spec-019] T038 — T038 WazuhDeepLinkButton API
Opened
#351 [spec-019] T039 — T039 Auth JWT → API VM122
Opened
#352 [spec-019] T040 — T040 Deploy Docker VM123 — **ligbox-ops-console-ui UP :8100**
Opened
#353 [spec-019] T041 — T041 Traefik console.ligbox.com.br **(G1 2026-06-25 — HTTPS 200 via CT114)**
Opened
#354 [spec-019] T047 — T047 KPI bar (desk/summary + alertas Wazuh)
Opened
#355 [spec-019] T048 — T048 Saúde plataforma — port Overview (HealthCards)
Opened
#356 [spec-019] T049 — T049 Domínios com atenção (DomainAttention)
Opened
#357 [spec-019] T050 — T050 Incidentes Agentic strip (mock + API fallback)
Opened
#358 [spec-019] T051 — T051 Desk banners migração Overview/Eventos/Tickets/Dashboard
Opened
#359 [spec-019] T052 — T052 Rollback doc deploy/CONSOLE-V2-ROLLBACK.md
Opened
#360 [spec-019] T053 — T053 Rota /ops alias + redirect desk cutover
Opened
#361 [spec-019] T054 — T054 Assist panel live no hub CH-*
Opened
#362 [spec-019] T040 — T040 Registry runbooks MVP (8 códigos — ver spec)
Opened
#363 [spec-019] T041 — T041 POST .../runbooks/{code}/executar
Opened
#364 [spec-019] T042 — T042 Fila GET /api/v1/aprovacoes
Opened
#365 [spec-019] T043 — T043 POST .../aprovar e .../rejeitar
Opened
#366 [spec-019] T044 — T044 UI Aprovações na Console
Opened
#367 [spec-019] T045 — T045 Executores R0 (infra_recheck) e R1 (traefik_cert_sync mock)
Opened
#368 [spec-019] T046 — T046 Middleware bloqueio R3 sem dupla aprovação
Opened
#369 [spec-019] T050 — T050 VM112 GET /api/onboarding/session/{id}/ops-status + secret LAN
Opened
#370 [spec-019] T051 — T051 VM122 poll/cache passo wizard no chamado
Opened
#371 [spec-019] T052 — T052 Console AssistPanel no detalhe chamado
Opened
#372 [spec-019] T053 — T053 Validar: sem senha/replay no payload
Opened
#373 [spec-019] T060 — T060 Políticas agentic R0/R1
Opened
#374 [spec-019] T061 — T061 Propostas runbook na fila aprovações
Opened
#375 [spec-019] T062 — T062 WS /api/v1/chamados/{id}/live
Opened
#376 [spec-019] T063 — T063 Console substitui poll por WebSocket
Opened
#377 [spec-019] T070 — T070 Redirect desk.ligbox.com.br → console.ligbox.com.br
Opened
#378 [spec-019] T071 — T071 Documentar rollback (docker compose -f ... down só stack console)
Opened
#379 [spec-019] T072 — T072 Actualizar docs/network/INTERFACES_PROXMOX.md com VM123 Console
Opened
#380 [spec-021] T001 — T001 POST /api/v1/security/csp-report + validação schema + rate limit
Opened
#381 [spec-021] T002 — T002 POST /api/v1/webhooks/security (ou extensão onboard ingress)
Opened
#382 [spec-021] T003 — T003 Persistência webhook_events source vm112-security
Opened
#383 [spec-021] T004 — T004 GET /api/v1/security/summary e /security/events
Opened
#384 [spec-021] T005 — T005 Registar módulo wizard-security em registry.py
Opened
#385 [spec-021] T006 — T006 Middleware auditoria inputs (Via 2) — template em deploy/vm112-wizard-security/
Opened
#386 [spec-021] T007 — T007 Eventos handoff (Via 1) — pendente deploy na VM112
Opened
#387 [spec-021] T008 — T008 Cliente webhook segurança + retry — template
Opened
#388 [spec-021] T009 — T009 Testes unitários padrões SQLi/XSS
Opened
#389 [spec-021] T010 — T010 Card Segurança no Audit Overview modal VM112
Opened
#390 [spec-021] T011 — T011 Filtro Eventos «Segurança»
Opened
#391 [spec-021] T012 — T012 Painel Infra 2 + flash eventos novos
Opened
#392 [spec-021] T013 — T013 Correlacionar hash sessão funil + segurança (detalhe)
Opened
#393 [spec-021] T014 — T014 CSP headers portal + wizard (CT114 Traefik) — exemplo em deploy
Opened
#394 [spec-021] T015 — T015 Validar report-uri reachability desde browser público
Opened
#395 [spec-021] T016 — T016 Documentar excepções CSP se libs externas exigirem
Opened
#396 [spec-021] T017 — T017 Auto-ticket regras abuso
Opened
#397 [spec-021] T018 — T018 Push ntfy em security.input_blocked critical
Opened
#398 [spec-021] T019 — T019 Retenção 90 dias + purge eventos security.* antigos
Opened
#399 [spec-022] carbonio_release_store.py — tabela, detecção ACCOUNT_EXIST — carbonio_release_store.py — tabela, detecção ACCOUNT_EXISTS, upsert, resolve (lock optimista)
Opened
#400 [spec-022] carbonio_release_routes.py — list, get, resolve (senha téc — carbonio_release_routes.py — list, get, resolve (senha técnico + confirm email)
Opened
#401 [spec-022] Hook webhook onboarding.failed em main.py — Hook webhook onboarding.failed em main.py
Opened
#402 [spec-022] vm112_domains.delete_carbonio_account() — vm112_domains.delete_carbonio_account()
Opened
#403 [spec-022] Módulo carbonio-release no registry — Módulo carbonio-release no registry
Opened
#404 [spec-022] POST /api/admin/accounts/{email}/delete — zmprov da — POST /api/admin/accounts/{email}/delete — zmprov da
Opened
#405 [spec-022] Router admin_accounts registado em main.py — Router admin_accounts registado em main.py
Opened
#406 [spec-022] Aba Eventos → **Bloqueios Carbonio** + guia técnico — Aba Eventos → **Bloqueios Carbonio** + guia técnico
Opened
#407 [spec-022] Painel de resolução no detalhe do ticket (vm112-onboard) — Painel de resolução no detalhe do ticket (vm112-onboard)
Opened
#408 [spec-022] Formulário: confirmar e-mail + senha Desk — Formulário: confirmar e-mail + senha Desk
Opened
#409 [spec-022] Todos os perfis com leitura de tickets (incl. NOC) — Todos os perfis com leitura de tickets (incl. NOC)
Opened
#410 [spec-022] Build api + frontend (docker-compose.mvp.yml) — Build api + frontend (docker-compose.mvp.yml)
Opened
#411 [spec-022] Teste E2E: webhook ACCOUNT_EXISTS → bloqueio #1 + ticket #41 — Teste E2E: webhook ACCOUNT_EXISTS → bloqueio #1 + ticket #41 → resolve → VM112 OK
Opened
#412 [spec-022] Confirmar 409 quando segundo técnico tenta resolver — Confirmar 409 quando segundo técnico tenta resolver
Opened
#413 [spec-023] Documentar comparativo Lago vs Odoo → **Odoo 16 primário** — Documentar comparativo Lago vs Odoo → **Odoo 16 primário**
Opened
#414 [spec-023] Confirmar gateway ASAAS vs Iugu (Roger) — Confirmar gateway ASAAS vs Iugu (Roger)
Opened
#415 [spec-023] Confirmar plano email_tenant_monthly — Confirmar plano email_tenant_monthly
Opened
#416 [spec-023] billing_store.py + tabela billing_accounts — billing_store.py + tabela billing_accounts
Opened
#417 [spec-023] Hook company.validated em main.py — Hook company.validated em main.py
Opened
#418 [spec-023] billing_routes.py — list, by-domain, summary, PATCH — billing_routes.py — list, by-domain, summary, PATCH
Opened
#419 [spec-023] Módulo billing-recurrence no registry — Módulo billing-recurrence no registry
Opened
#420 [spec-023] Dashboard: KPIs cobrança pendente + recorrência activa — Dashboard: KPIs cobrança pendente + recorrência activa
Opened
#421 [spec-023] Dashboard: badge billing em sessões company_validated+ — Dashboard: badge billing em sessões company_validated+
Opened
#422 [spec-023] Tickets: ícone 💳 em [billing-validation] — Tickets: ícone 💳 em [billing-validation]
Opened
#423 [spec-023] Serviços: ícone 💳 + stats recorrências (accounts.js) — Serviços: ícone 💳 + stats recorrências (accounts.js)
Opened
#424 [spec-023] Modal **Conta do cliente** (billing-ui.js) — Modal **Conta do cliente** (billing-ui.js)
Opened
#425 [spec-023] Links FOSSBilling + Odoo na ficha — Links FOSSBilling + Odoo na ficha
Opened
#426 [spec-023] RBAC mascaramento NOC (should_mask_sensitive) — RBAC mascaramento NOC (should_mask_sensitive)
Opened
#427 [spec-023] Deploy api + frontend VM122 — Deploy api + frontend VM122
Opened
#428 [spec-023] Cliente Odoo res.partner a partir de company_profile — v — Cliente Odoo res.partner a partir de company_profile — ver [Spec 043 §6](../043-desk-client-activation-sync/contract
Opened
#429 [spec-023] Produto/plano assinatura e-mail tenant — Produto/plano assinatura e-mail tenant
Opened
#430 [spec-023] Integração ASAAS/Iugu — Integração ASAAS/Iugu
Opened
#431 [spec-023] Webhook pagamento → billing_state — Webhook pagamento → billing_state
Opened
#432 [spec-023] recurrence_active automático após 1.º pagamento — recurrence_active automático após 1.º pagamento
Opened
#433 [spec-023] Lago metering — Lago metering
Opened
#434 [spec-023] Portal cliente faturas — Portal cliente faturas
Opened
#435 [spec-023] Suspensão Carbonio por inadimplência — Suspensão Carbonio por inadimplência
Opened
#436 [spec-024] Executar proxmox-create-vm123.sh no host PVE — Executar proxmox-create-vm123.sh no host PVE
Opened
#437 [spec-024] VM123 online — IP 10.10.10.123/24 — VM123 online — IP 10.10.10.123/24
Opened
#438 [spec-024] DNAT SSH WAN :2523 → VM123:22 (pfSense id **61**) — DNAT SSH WAN :2523 → VM123:22 (pfSense id **61**)
Opened
#439 [spec-024] bootstrap-vm123.sh — mini, admin, root (805353) — bootstrap-vm123.sh — mini, admin, root (805353)
Opened
#440 [spec-024] fail2ban activo — fail2ban activo
Opened
#441 [spec-024] Wazuh agent → 10.10.10.104 — Wazuh agent → 10.10.10.104
Opened
#442 [spec-024] Swap 2 GB — Swap 2 GB
Opened
#443 [spec-024] docker compose up -d em /opt/vm123-finance-stack — docker compose up -d em /opt/vm123-finance-stack
Opened
#444 [spec-024] Wizard FOSSBilling (admin@ligbox.com.br) — Wizard FOSSBilling (admin@ligbox.com.br)
Opened
#445 [spec-024] Wizard Odoo 16 (base ligbox) — Wizard Odoo 16 (base ligbox)
Opened
#446 [spec-024] setup-foss-openpanel-module.sh — setup-foss-openpanel-module.sh
Opened
#447 [spec-024] Antispam honeypot lb_hp_x9k2 (setup-foss-antispam.sh) — Antispam honeypot lb_hp_x9k2 (setup-foss-antispam.sh)
Opened
#448 [spec-024] install-openpanel.sh — Community 1.7.60 — install-openpanel.sh — Community 1.7.60
Opened
#449 [spec-024] Bridge Community API (install-openpanel-community-bridge.sh — Bridge Community API (install-openpanel-community-bridge.sh`) porta 18087
Opened
#450 [spec-024] Planos hosting — ligbox-site-cms (id 3) — Planos hosting — ligbox-site-cms (id 3)
Opened
#451 [spec-024] Test connection FOSS → bridge OK — Test connection FOSS → bridge OK
Opened
#452 [spec-024] Provisionamento OpenPanel validado (bridge E2E + testprov1 m — Provisionamento OpenPanel validado (bridge E2E + testprov1 manual)
Opened
#453 [spec-024] DNS financeiro + openpanel → IP público (Cloudflare) — DNS financeiro + openpanel → IP público (Cloudflare)
Opened
#454 [spec-024] Rotas Traefik CT114 (FOSS raiz, /odoo, openpanel, admin.open — Rotas Traefik CT114 (FOSS raiz, /odoo, openpanel, admin.openpanel)
Opened
#455 [spec-024] Validar HTTPS financeiro / odoo / openpanel — Validar HTTPS financeiro / odoo / openpanel
Opened
#456 [spec-024] Links conta cliente → financeiro.ligbox.com.br (billing_sto — Links conta cliente → financeiro.ligbox.com.br (billing_store.py`)
Opened
#457 [spec-024] Card Site/CMS → campos provisionamento (fase 2 — Spec 023) — Card Site/CMS → campos provisionamento (fase 2 — Spec 023)
Opened
#458 [spec-024] Webhook Desk → FOSS order API (fase 3 — Spec 023) — Webhook Desk → FOSS order API (fase 3 — Spec 023)
Opened
#459 [spec-024] billing_accounts.external_id FOSS (fase 2) — billing_accounts.external_id FOSS (fase 2)
Opened
#460 [spec-024] Módulo pagamento FOSSBilling — Módulo pagamento FOSSBilling
Opened
#461 [spec-025] spec.md — fluxo alvo e critérios de aceite — spec.md — fluxo alvo e critérios de aceite
Opened
#462 [spec-025] GET /api/onboarding/account/status — VM112 — GET /api/onboarding/account/status — VM112
Opened
#463 [spec-025] POST /api/onboarding/account/create idempotente (reconcil — POST /api/onboarding/account/create idempotente (reconciled: true`)
Opened
#464 [spec-025] Frontend passos 2–3 — banners e botões dinâmicos — Frontend passos 2–3 — banners e botões dinâmicos
Opened
#465 [spec-025] Smoke: teste001@exuberanti.com.br reconcilia sem HTTP 400 — Smoke: teste001@exuberanti.com.br reconcilia sem HTTP 400
Opened
#466 [spec-025] Resume sessão wizard (saltar passos já feitos ao reabrir) — Resume sessão wizard (saltar passos já feitos ao reabrir)
Opened
#467 [spec-025] VM112 RAM 16 GB — VM112 RAM 16 GB
Opened
#468 [spec-025] Validação Traefik YAML no deploy — Validação Traefik YAML no deploy
Opened
#469 [spec-025] Spec 012 abandonos → lead — Spec 012 abandonos → lead
Opened
#470 [spec-025] Spec 023 billing Desk — Spec 023 billing Desk
Opened
#471 [spec-025] Wizard VM124 (Spec 018 fase 3) — Wizard VM124 (Spec 018 fase 3)
Opened
#472 [spec-028] patch-openpanel-ce-unlock.sh — hosting ilimitado + API + a — patch-openpanel-ce-unlock.sh — hosting ilimitado + API + admin + email
Opened
#473 [spec-028] key=ligbox-local-enterprise em openpanel.config — key=ligbox-local-enterprise em openpanel.config
Opened
#474 [spec-028] Fix /etc/bind/named.conf (openpanel_dns) — Fix /etc/bind/named.conf (openpanel_dns)
Opened
#475 [spec-028] Backup opencli em .ligbox-backup-* — Backup opencli em .ligbox-backup-*
Opened
#476 [spec-028] bridge.py — user-add + domains-add + normalização domínio — bridge.py — user-add + domains-add + normalização domínio
Opened
#477 [spec-028] Endpoints GET/PATCH/DELETE users — Endpoints GET/PATCH/DELETE users
Opened
#478 [spec-028] openpanel-foss-bridge.service activo :18087 — openpanel-foss-bridge.service activo :18087
Opened
#479 [spec-028] patch-foss-openpanel-domain.sh — campo domain em createA — patch-foss-openpanel-domain.sh — campo domain em createAccount
Opened
#480 [spec-028] Servidor FOSS → port 18087 HTTP — Servidor FOSS → port 18087 HTTP
Opened
#481 [spec-028] Order config array PHP (config[domain][...]) — Order config array PHP (config[domain][...])
Opened
#482 [spec-028] diarissima, myvexx, testeops, authverify, e2eportal, funnel, — diarissima, myvexx, testeops, authverify, e2eportal, funnel, verify
Opened
#483 [spec-028] provision-openpanel-hosting.sh — provision-openpanel-hosting.sh
Opened
#484 [spec-028] labadmin + labreseller via SQLite (issue #795) — labadmin + labreseller via SQLite (issue #795)
Opened
#485 [spec-028] Login OpenAdmin validado — Login OpenAdmin validado
Opened
#486 [spec-028] test-foss-openpanel-order.sh — 7 passos E2E — test-foss-openpanel-order.sh — 7 passos E2E
Opened
#487 [spec-028] Último run: order #6, user ab69b548, domain test95452.ligbox — Último run: order #6, user ab69b548, domain test95452.ligbox.com.br
Opened
#488 [spec-028] scripts/test-openpanel-multidomain-api.sh — CLI repetível — scripts/test-openpanel-multidomain-api.sh — CLI repetível
Opened
#489 [spec-028] POST /api/v1/vm123/openpanel/test-confirm — suite 7 passos — POST /api/v1/vm123/openpanel/test-confirm — suite 7 passos
Opened
#490 [spec-028] Botão **Testar multidomínio** no Menu Infra Desk — Botão **Testar multidomínio** no Menu Infra Desk
Opened
#491 [spec-028] Adendo [CONFIRMACAO-TESTE-API.md](CONFIRMACAO-TESTE-API.md) — Adendo [CONFIRMACAO-TESTE-API.md](CONFIRMACAO-TESTE-API.md)
Opened
#492 [spec-028] Spec 028 no repositório — Spec 028 no repositório
Opened
#493 [spec-028] Publicar no Spec Hub VM130 (Forgejo) — Publicar no Spec Hub VM130 (Forgejo)
Opened
#494 [spec-028] CREDENCIAIS_SERVICOS_VM123.txt actualizado — CREDENCIAIS_SERVICOS_VM123.txt actualizado
Opened
#495 [spec-028] Cron reaplicar patch após opencli update — Cron reaplicar patch após opencli update
Opened
#496 [spec-028] Limpeza users E2E de teste — Limpeza users E2E de teste
Opened
#497 [spec-028] Integração automática Desk → FOSS order — Integração automática Desk → FOSS order
Opened
#498 [spec-029] A1 Tabelas SQLite (agent_scenarios, agent_runs, agent_f — A1 Tabelas SQLite (agent_scenarios, agent_runs, agent_findings, agent_action_log, agent_kb_chunks`)
Opened
#499 [spec-029] A2 Router /api/v1/agents/* montado em main.py — A2 Router /api/v1/agents/* montado em main.py
Opened
#500 [spec-029] A3 init_agent_schema no boot — A3 init_agent_schema no boot
Opened
#501 [spec-029] A4 Cenários registry.yaml (9 cenários) — A4 Cenários registry.yaml (9 cenários)
Opened
#502 [spec-029] A5 Checks T0 (checks.py) — A5 Checks T0 (checks.py)
Opened
#503 [spec-029] B1 agentic_tick() no worker — B1 agentic_tick() no worker
Opened
#504 [spec-029] B2 AGENTIC_INTERVAL_SEC=300 — B2 AGENTIC_INTERVAL_SEC=300
Opened
#505 [spec-029] B3 POST /internal/tick — B3 POST /internal/tick
Opened
#506 [spec-029] C1 Ollama VM123 qwen2.5:7b-instruct — C1 Ollama VM123 qwen2.5:7b-instruct
Opened
#507 [spec-029] C2 advise_human_action em findings warn+ — C2 advise_human_action em findings warn+
Opened
#508 [spec-029] C3 chat_context copiloto — C3 chat_context copiloto
Opened
#509 [spec-029] C4 KB Curator index specs — C4 KB Curator index specs
Opened
#510 [spec-029] D1 catalog.py roster — D1 catalog.py roster
Opened
#511 [spec-029] D2 agents-roster.md — D2 agents-roster.md
Opened
#512 [spec-029] D3 Map cenário → agente (A1, A2, A6, sentinel) — D3 Map cenário → agente (A1, A2, A6, sentinel)
Opened
#513 [spec-029] E1 agent_threads + agent_messages — E1 agent_threads + agent_messages
Opened
#514 [spec-029] E2 Inbox por role — E2 Inbox por role
Opened
#515 [spec-029] E3 Reply humano + ack — E3 Reply humano + ack
Opened
#516 [spec-029] E4 UI Desk 3 colunas (roster/inbox/contexto) — E4 UI Desk 3 colunas (roster/inbox/contexto)
Opened
#517 [spec-029] E5 E-mail high/critical via Postfix — E5 E-mail high/critical via Postfix
Opened
#518 [spec-029] F1 Deploy docker-compose.agentic-staging.yml (:8180/:8192) — F1 Deploy docker-compose.agentic-staging.yml (:8180/:8192)
Opened
#519 [spec-029] F2 Checklist quickstart.md — F2 Checklist quickstart.md
Opened
#520 [spec-029] F3 Chat T1 com Ollama online (health tier t1; resposta LLM ~ — F3 Chat T1 com Ollama online (health tier t1; resposta LLM ~2min qwen2.5:7b)
Opened
#521 [spec-029] F4 Inbox com finding simulado (VM123 finance + OpenPanel bri — F4 Inbox com finding simulado (VM123 finance + OpenPanel bridge)
Opened
#522 [spec-029] G1 Merge branch → main (pendente push remoto se aplicável) — G1 Merge branch → main (pendente push remoto se aplicável)
Opened
#523 [spec-029] G2 Deploy produção :8080 (api + worker + frontend) — versã — G2 Deploy produção :8080 (api + worker + frontend) — versão 0.9.7-spec029-agentic
Opened
#524 [spec-029] G3 Verificar produção intacta — /api/v1/agents/health 200 — G3 Verificar produção intacta — /api/v1/agents/health 200 tier t1
Opened
#525 [spec-029] G4 Registar homologação — 2026-06-19 VM122 — G4 Registar homologação — 2026-06-19 VM122
Opened
#526 [spec-029] H1 A3–A5 cenários deliverability/SOC/mail — H1 A3–A5 cenários deliverability/SOC/mail
Opened
#527 [spec-029] H2 A7 runbooks R0–R3 + fila aprovação — H2 A7 runbooks R0–R3 + fila aprovação
Opened
#528 [spec-029] H3 WebSocket live push — H3 WebSocket live push
Opened
#529 [spec-029] H4 Embeddings nomic-embed-text semântico — H4 Embeddings nomic-embed-text semântico
Opened
#530 [spec-030] A1 Criar agentic-ops.css (grid ao-*, tokens agente) — A1 Criar agentic-ops.css (grid ao-*, tokens agente)
Opened
#531 [spec-030] A2 Componente AgenticStatusBar (health + action-log last t — A2 Componente AgenticStatusBar (health + action-log last tick)
Opened
#532 [spec-030] A3 Componente MissionBoard — 4 colunas severidade — A3 Componente MissionBoard — 4 colunas severidade
Opened
#533 [spec-030] A4 Dedup via API /incidents (UI-B) — A4 Dedup via API /incidents (UI-B)
Opened
#534 [spec-030] A5 IncidentCard — click selecciona + highlight — A5 IncidentCard — click selecciona + highlight
Opened
#535 [spec-030] A6 ContextPanel — thread + reply + chat — A6 ContextPanel — thread + reply + chat
Opened
#536 [spec-030] A7 Fleet rail compacto — A7 Fleet rail compacto
Opened
#537 [spec-030] A8 Deploy produção + staging — A8 Deploy produção + staging
Opened
#538 [spec-030] B1 Migration agent_incidents + índices — B1 Migration agent_incidents + índices
Opened
#539 [spec-030] B2 store.upsert_incident() no runner tick — B2 store.upsert_incident() no runner tick
Opened
#540 [spec-030] B3 Refactor notify_finding_to_operators — reutilizar threa — B3 Refactor notify_finding_to_operators — reutilizar thread
Opened
#541 [spec-030] B4 Endpoints /overview, /incidents, /incidents/{id}/ack — B4 Endpoints /overview, /incidents, /incidents/{id}/ack, /timeline`
Opened
#542 [spec-030] B5 Backfill automático no boot (backfill_incidents) — B5 Backfill automático no boot (backfill_incidents)
Opened
#543 [spec-030] B6 Testes test_agents_030.py — B6 Testes test_agents_030.py
Opened
#544 [spec-030] C1 Run timeline (lista ticks) — C1 Run timeline (lista ticks)
Opened
#545 [spec-030] C2 Mobile tabs (Board / Frota / Contexto) — C2 Mobile tabs (Board / Frota / Contexto)
Opened
#546 [spec-030] C3 Empty states + skeleton loading — C3 Empty states + skeleton loading
Opened
#547 [spec-030] C4 Pulse animation agente com incidente open — C4 Pulse animation agente com incidente open
Opened
#548 [spec-030] C5 Atalho teclado R refresh, Esc deselect — C5 Atalho teclado R refresh, Esc deselect
Opened
#549 [spec-030] C6 Poll 30s quando view activa — C6 Poll 30s quando view activa
Opened
#550 [spec-030] D1 Poll 30s quando view activa (pausa tab hidden) — D1 Poll 30s quando view activa (pausa tab hidden)
Opened
#551 [spec-030] D2 SSE /api/v1/agents/stream (opcional, Spec 029 H3) — D2 SSE /api/v1/agents/stream (opcional, Spec 029 H3)
Opened
#552 [spec-030] E1 Botão “Criar ticket” no card → /api/v1/tickets POST — E1 Botão “Criar ticket” no card → /api/v1/tickets POST
Opened
#553 [spec-030] E2 Link finding → domínio/tenant se aplicável — E2 Link finding → domínio/tenant se aplicável
Opened
#554 [spec-030] E3 Preparar hub CH-* (Spec 019) — deep link — E3 Preparar hub CH-* (Spec 019) — deep link
Opened
#555 [spec-030] ≤10 cards visíveis para ambiente actual — ≤10 cards visíveis para ambiente actual
Opened
#556 [spec-030] Ack funcional end-to-end — Ack funcional end-to-end
Opened
#557 [spec-030] Context panel com thread única por cenário — Context panel com thread única por cenário
Opened
#558 [spec-030] Documentação quickstart actualizada — Documentação quickstart actualizada
Opened
#559 [spec-030] Deploy produção :8091 após staging OK — Deploy produção :8091 após staging OK
Opened
#560 [spec-034] Roger: **VM124** após VM123 (não VM118) · 2 vCPU · 4 GB · 50 — Roger: **VM124** após VM123 (não VM118) · 2 vCPU · 4 GB · 500 GB
Opened
#561 [spec-034] Criar VM124 Ubuntu 24.04 (scripts/proxmox-create-vm.sh no — Criar VM124 Ubuntu 24.04 (scripts/proxmox-create-vm.sh no PVE)
Opened
#562 [spec-034] pfSense DNAT SSH WAN :2524 → 10.10.10.124:22 — pfSense DNAT SSH WAN :2524 → 10.10.10.124:22
Opened
#563 [spec-034] deploy/vm116-nextcloud/ — docker-compose + scripts + Traef — deploy/vm116-nextcloud/ — docker-compose + scripts + Traefik snippet
Opened
#564 [spec-034] TLS cloud.ligbox.com.br via Traefik CT114 — TLS cloud.ligbox.com.br via Traefik CT114
Opened
#565 [spec-034] Teste Mail app → Carbonio (domínio teste) — Teste Mail app → Carbonio (domínio teste)
Opened
#566 [spec-034] Documentar resultados no quickstart — Documentar resultados no quickstart
Opened
#567 [spec-034] NEXTCLOUD_API_URL + credenciais admin OCS (secrets VM112) — NEXTCLOUD_API_URL + credenciais admin OCS (secrets VM112)
Opened
#568 [spec-034] Serviço wizard nextcloud_provision.py — Serviço wizard nextcloud_provision.py
Opened
#569 [spec-034] Hook pós account/create (flag NEXTCLOUD_INTEGRATION) — Hook pós account/create (flag NEXTCLOUD_INTEGRATION)
Opened
#570 [spec-034] Webhook Desk onboarding.nextcloud.provisioned — Webhook Desk onboarding.nextcloud.provisioned
Opened
#571 [spec-034] API Desk: /api/v1/nextcloud/health, .../domains/{domain}/ — API Desk: /api/v1/nextcloud/health, .../domains/{domain}/status`
Opened
#572 [spec-034] Stack health VM124 em stack_health.py (Spec 033) — Stack health VM124 em stack_health.py (Spec 033)
Opened
#573 [spec-034] Traefik template files.{domain} (CT114) — Traefik template files.{domain} (CT114)
Opened
#574 [spec-034] Módulo Desk nextcloud-storage (Spec 015) — Módulo Desk nextcloud-storage (Spec 015)
Opened
#575 [spec-034] Extensão purge Spec 017 — apagar users Nextcloud — Extensão purge Spec 017 — apagar users Nextcloud
Opened
#576 [spec-034] Domain Admin — painel quota unificado (QuotaDualBar — ver — Domain Admin — painel quota unificado (QuotaDualBar — ver 034-console-process-ui.md)
Opened
#577 [spec-034] FOSSBilling produto «Ligbox Mail Plus» — FOSSBilling produto «Ligbox Mail Plus»
Opened
#578 [spec-034] Alertas disco VM112/VM124 — Alertas disco VM112/VM124
Opened
#579 [spec-034] UI-034-A: ProvisionPipeline + QuotaDualBar + AccountCar — UI-034-A: ProvisionPipeline + QuotaDualBar + AccountCard em /admin/contas`
Opened
#580 [spec-034] UI-034-B: DomainFilesToggle em /admin/files — UI-034-B: DomainFilesToggle em /admin/files
Opened
#581 [spec-034] UI-034-C: StackHealthTile + incident retry em /ops — UI-034-C: StackHealthTile + incident retry em /ops
Opened
#582 [spec-034] UI-034-D: Poll pipeline + estados erro PT-BR — UI-034-D: Poll pipeline + estados erro PT-BR
Opened
#583 [spec-034] MinIO VM124 — MinIO VM124
Opened
#584 [spec-034] Volume secundário Carbonio → S3 — Volume secundário Carbonio → S3
Opened
#585 [spec-034] Política archive + runbook ops — Política archive + runbook ops
Opened
#586 [spec-034] Spec 034 spec.md — Spec 034 spec.md
Opened
#587 [spec-034] infrastructure.md — infrastructure.md
Opened
#588 [spec-034] quickstart.md — quickstart.md
Opened
#589 [spec-034] contracts/nextcloud-provisioning-api.md — contracts/nextcloud-provisioning-api.md
Opened
#590 [spec-034] 034-console-process-ui.md — visão processo Console — 034-console-process-ui.md — visão processo Console
Opened
#591 [spec-034] Actualizar docs/vms/README.md + VM112.md — Actualizar docs/vms/README.md + VM112.md
Opened
#592 [spec-034] Publicar no Spec Hub Portal (Spec 031) — Publicar no Spec Hub Portal (Spec 031)
Opened
#593 [spec-035] Roger aprovar preços §1.1 — **via Admin Ligbox** (035-C), nã — Roger aprovar preços §1.1 — **via Admin Ligbox** (035-C), não FOSS directo
Opened
#594 [spec-035] Criar produtos FOSS: starter, business, enterprise, custom — Criar produtos FOSS: starter, business, enterprise, custom
Opened
#595 [spec-035] Criar planos OpenPanel espelhados (ligbox-mail-*) — Criar planos OpenPanel espelhados (ligbox-mail-*)
Opened
#596 [spec-035] Config options FOSS para bundle custom (seats, mail_gb, file — Config options FOSS para bundle custom (seats, mail_gb, files_gb)
Opened
#597 [spec-035] Publicar página vendas /signup com comparativo concorrência — Publicar página vendas /signup com comparativo concorrência
Opened
#598 [spec-035] Documentar em foss-products.md IDs reais pós-criação — Documentar em foss-products.md IDs reais pós-criação
Opened
#599 [spec-035] Tabela bundle_entitlements no wizard VM112 — Tabela bundle_entitlements no wizard VM112
Opened
#600 [spec-035] Endpoint POST /api/internal/provision/mail-bundle — **códi — Endpoint POST /api/internal/provision/mail-bundle — **código pronto** · [mail-bundle-api.md](../043-desk-client-activa
Opened
#601 [spec-035] Produto FOSS ligbox-mail-business (id=3) — ver [foss-produ — Produto FOSS ligbox-mail-business (id=3) — ver [foss-products.md](./foss-products.md)
Opened
#602 [spec-035] Webhook Desk foss/order-activated → wizard — Webhook Desk foss/order-activated → wizard
Opened
#603 [spec-035] Bridge: metadata JSON no user OpenPanel hub — Bridge: metadata JSON no user OpenPanel hub
Opened
#604 [spec-035] Email template FOSS boas-vindas (links OP + Domain Admin) — Email template FOSS boas-vindas (links OP + Domain Admin)
Opened
#605 [spec-035] Teste E2E: order Business → admin@ + 1 conta teste — Teste E2E: order Business → admin@ + 1 conta teste
Opened
#606 [spec-035] UX-0: design tokens + AppLayout + login role → console.ligb — UX-0: design tokens + AppLayout + login role → console.ligbox.com.br`
Opened
#607 [spec-035] Traefik: console.ligbox.com.br VM123 + 301 onboard/admin — Traefik: console.ligbox.com.br VM123 + 301 onboard/admin
Opened
#608 [spec-035] UX-A1: /admin Início — cards resumo (tom banco digital BR) — UX-A1: /admin Início — cards resumo (tom banco digital BR)
Opened
#609 [spec-035] UX-A2: /admin/contas CRUD inline — UX-A2: /admin/contas CRUD inline
Opened
#610 [spec-035] UX-A3: /admin/files quotas + toggle Mail NC — UX-A3: /admin/files quotas + toggle Mail NC
Opened
#611 [spec-035] UX-A4: /admin/certificacao + /admin/dominio **DNS Viewer — UX-A4: /admin/certificacao + /admin/dominio **DNS Viewer** (037 dns-viewer.md)
Opened
#612 [spec-035] /admin/dominio V3 deploy VM123 2026-06-25 (AdminDominio.j — /admin/dominio V3 deploy VM123 2026-06-25 (AdminDominio.jsx, DnsViewerPanel.jsx`)
Opened
#613 [spec-035] /admin/certificacao EasyDMARC card — /admin/certificacao EasyDMARC card
Opened
#614 [spec-035] UX-A4b: /admin/plano boleto/PIX — UX-A4b: /admin/plano boleto/PIX
Opened
#615 [spec-035] SSO FOSS → /admin?sso=TOKEN — SSO FOSS → /admin?sso=TOKEN
Opened
#616 [spec-035] API Desk /api/v1/domain-console/* — API Desk /api/v1/domain-console/*
Opened
#617 [spec-035] GET /api/v1/domain-console/dns/viewer/{domain} (VM122 2026 — GET /api/v1/domain-console/dns/viewer/{domain} (VM122 2026-06-25)
Opened
#618 [spec-035] Bridge metadata JSON no user hub (sem UI gerente) — Bridge metadata JSON no user hub (sem UI gerente)
Opened
#619 [spec-035] UX-B: /comercial — fila preços, catálogo, clientes, gatewa — UX-B: /comercial — fila preços, catálogo, clientes, gateway
Opened
#620 [spec-035] UX-C: /ops — Spec 019 chamados no mesmo shell — UX-C: /ops — Spec 019 chamados no mesmo shell
Opened
#621 [spec-035] RBAC roles comercial/ops (Spec 027) — RBAC roles comercial/ops (Spec 027)
Opened
#622 [spec-035] Impersonate gerente → /admin — Impersonate gerente → /admin
Opened
#623 [spec-035] Estudo redirects, OOO, assinaturas, calendário por user — Estudo redirects, OOO, assinaturas, calendário por user
Opened
#624 [spec-035] Wireframe /me ou mail.{dom}/settings — Wireframe /me ou mail.{dom}/settings
Opened
#625 [spec-035] Decidir Carbonio nativo vs SPA Ligbox — Decidir Carbonio nativo vs SPA Ligbox
Opened
#626 [spec-035] VM116 provisionada (Spec 034 Fase 0) — VM116 provisionada (Spec 034 Fase 0)
Opened
#627 [spec-035] Auto-provision NC Files em cada createAccount — Auto-provision NC Files em cada createAccount
Opened
#628 [spec-035] Toggle Mail Nextcloud por domínio no /admin (Spec 035 §2.2 — Toggle Mail Nextcloud por domínio no /admin (Spec 035 §2.2.1)
Opened
#629 [spec-035] EasyDMARC register domain automático no wizard — EasyDMARC register domain automático no wizard
Opened
#630 [spec-035] Agent A3 Desk: alertas DMARC fail — Agent A3 Desk: alertas DMARC fail
Opened
#631 [spec-035] Escolher gateway: ASAAS vs Iugu (Roger) — Escolher gateway: ASAAS vs Iugu (Roger)
Opened
#632 [spec-035] Módulo FOSS: boleto bancário (PDF + linha digitável) — Módulo FOSS: boleto bancário (PDF + linha digitável)
Opened
#633 [spec-035] Módulo FOSS: PIX QR Code + copia-e-cola — Módulo FOSS: PIX QR Code + copia-e-cola
Opened
#634 [spec-035] Webhook pagamento confirmado → Desk → wizard provision — Webhook pagamento confirmado → Desk → wizard provision
Opened
#635 [spec-035] Card «Pagamento» no /admin — status + link boleto/PIX (emb — Card «Pagamento» no /admin — status + link boleto/PIX (embed FOSS API)
Opened
#636 [spec-035] Upgrade/downgrade plano FOSS → update entitlements — Upgrade/downgrade plano FOSS → update entitlements
Opened
#637 [spec-035] Add-ons: seat extra, storage mail/files — Add-ons: seat extra, storage mail/files
Opened
#638 [spec-035] Odoo subscription mirror (Spec 023 phase 2) — Odoo subscription mirror (Spec 023 phase 2)
Opened
#639 [spec-035] Spec 035 spec.md — Spec 035 spec.md
Opened
#640 [spec-035] tasks.md — tasks.md
Opened
#641 [spec-035] foss-products.md (template) — foss-products.md (template)
Opened
#642 [spec-035] mockups/domain-manager-sandbox.html — UI sandbox (Mock + L — mockups/domain-manager-sandbox.html — UI sandbox (Mock + Live create-only)
Opened
#643 [spec-035] API Desk domain_console_sandbox*.py — create-only produção — API Desk domain_console_sandbox*.py — create-only produção
Opened
#644 [spec-035] Deploy API sandbox no VM122 + teste cenário real — Deploy API sandbox no VM122 + teste cenário real
Opened
#645 [spec-035] Actualizar Spec 034 § comercial → link 035 — Actualizar Spec 034 § comercial → link 035
Opened
#646 [spec-035] Actualizar docs/vms/README.md — Actualizar docs/vms/README.md
Opened
#647 [spec-035] Publicar Spec Hub Portal — Publicar Spec Hub Portal
Opened
#648 [spec-035] Spec 037-DNS-VIEWER dns-viewer.md + §5.5 domain-manager ac — Spec 037-DNS-VIEWER dns-viewer.md + §5.5 domain-manager actualizado
Opened
#649 [spec-035] Implementar GET /api/v1/dns/viewer/{domain} (Desk VM122 + — Implementar GET /api/v1/dns/viewer/{domain} (Desk VM122 + proxy Console VM123 2026-06-25)
Opened
#650 [spec-035] restart: unless-stopped em docker-compose.mvp.yml (api, — restart: unless-stopped em docker-compose.mvp.yml (api, frontend, worker, redis)
Opened
#651 [spec-035] Deploy VM122 produção — Deploy VM122 produção
Opened
#652 [spec-035] Validar reboot test (opcional) — Validar reboot test (opcional)
Opened
#653 [spec-035] Spec 035 + contracts/stack-services.yaml — Spec 035 + contracts/stack-services.yaml
Opened
#654 [spec-035] projects/integrations/watchman/watchman.py — projects/integrations/watchman/watchman.py
Opened
#655 [spec-035] projects/integrations/watchman/probes.py (http, redis, doc — projects/integrations/watchman/probes.py (http, redis, docker)
Opened
#656 [spec-035] projects/integrations/watchman/alerts.py (ntfy) — projects/integrations/watchman/alerts.py (ntfy)
Opened
#657 [spec-035] projects/integrations/watchman/store.py (SQLite) — projects/integrations/watchman/store.py (SQLite)
Opened
#658 [spec-035] deploy/watchman/install.sh + ligbox-watchman.service — deploy/watchman/install.sh + ligbox-watchman.service
Opened
#659 [spec-035] deploy/watchman/watchman.env.example — deploy/watchman/watchman.env.example
Opened
#660 [spec-035] Teste E2E: stop frontend → alerta → start → resolved — Teste E2E: stop frontend → alerta → start → resolved
Opened
#661 [spec-035] Documentar no deploy/manifest.yaml — Documentar no deploy/manifest.yaml
Opened
#662 [spec-035] Refactor stack_health.py → ler YAML — Refactor stack_health.py → ler YAML
Opened
#663 [spec-035] Alertas email Postfix — Alertas email Postfix
Opened
#664 [spec-035] GET /api/v1/watchman/status Desk — GET /api/v1/watchman/status Desk
Opened
#665 [spec-035] Card Watchman em INFRA CODE — Card Watchman em INFRA CODE
Opened
#666 [spec-035] Extensão catálogo: VM104, CT107, VM116, VM124 — Extensão catálogo: VM104, CT107, VM116, VM124
Opened
#667 [spec-035] Auto-restart Docker containers críticos (flag WATCHMAN_REME — Auto-restart Docker containers críticos (flag WATCHMAN_REMEDIATE=0`)
Opened
#668 [spec-035] Webhook Desk → Eventos tab — Webhook Desk → Eventos tab
Opened
#669 [spec-035] Spec Hub portal link para status — Spec Hub portal link para status
Opened
#670 [spec-035] specs/035-ligbox-watchman/spec.md — specs/035-ligbox-watchman/spec.md
Opened
#671 [spec-035] quickstart.md — quickstart.md
Opened
#672 [spec-035] contracts/stack-services.yaml — contracts/stack-services.yaml
Opened
#673 [spec-035] contracts/status-snapshot.md — contracts/status-snapshot.md
Opened
#674 [spec-035] Push Forgejo CT130 — Push Forgejo CT130
Opened
#675 [spec-036] Instalar SpecKit Companion no Cursor — Instalar SpecKit Companion no Cursor
Opened
#676 [spec-036] Testar viewer com spec existente (ex. 035) — Testar viewer com spec existente (ex. 035)
Opened
#677 [spec-036] Adiar até P3 aprovado + RAM CT130 ≥ 6 GB — Adiar até P3 aprovado + RAM CT130 ≥ 6 GB
Opened
#678 [spec-036] deploy/backstage/docker-compose.yml — deploy/backstage/docker-compose.yml
Opened
#679 [spec-036] catalog-info.yaml + TechDocs piloto — catalog-info.yaml + TechDocs piloto
Opened
#680 [spec-036] Ver spec.md — executar quando sair do backlog — Ver spec.md — executar quando sair do backlog
Opened
#681 [spec-037] Multi-conta resolve + BYO + provision-zone — Multi-conta resolve + BYO + provision-zone
Opened
#682 [spec-037] project_identity.py monorepo + VM112 — project_identity.py monorepo + VM112
Opened
#683 [spec-037] POST /project/provision-email VM112 ✅ smoke proj_001@ — POST /project/provision-email VM112 ✅ smoke proj_001@
Opened
#684 [spec-037] GET /project/{domain} VM112 — GET /project/{domain} VM112
Opened
#685 [spec-037] UI painel credenciais proj_* — UI painel credenciais proj_*
Opened
#686 [spec-037] Webhook ligbox_project_email (apply + account + project) — Webhook ligbox_project_email (apply + account + project)
Opened
#687 [spec-037] Tokens ligit + itecnologys (Roger) — Tokens ligit + itecnologys (Roger)
Opened
#688 [spec-037] E2E smoke completo wizard público — E2E smoke completo wizard público
Opened
#689 [spec-037] projects/cloudflare-agents/onboard/ wrangler + DO scaffold — projects/cloudflare-agents/onboard/ wrangler + DO scaffold
Opened
#690 [spec-037] OnboardMaestro estado sessão — OnboardMaestro estado sessão
Opened
#691 [spec-037] HTTP client VM112 — HTTP client VM112
Opened
#692 [spec-037] Deploy Worker — https://ligbox-onboard-agents.ibytera.worker — Deploy Worker — https://ligbox-onboard-agents.ibytera.workers.dev
Opened
#693 [spec-037] Worker → VM112 proj-mail E2E OK — Worker → VM112 proj-mail E2E OK
Opened
#694 [spec-037] Rota agents.ligbox.com.br (opcional) — Rota agents.ligbox.com.br (opcional)
Opened
#695 [spec-037] Wizard UI teste manual telas (Roger) — Wizard UI teste manual telas (Roger)
Opened
#696 [spec-037] Feature flag wizard use_edge_orchestrator — Feature flag wizard use_edge_orchestrator
Opened
#697 [spec-037] DO stubs ProjMailAgent, CfZoneAgent, CfHandoffAgent — DO stubs ProjMailAgent, CfZoneAgent, CfHandoffAgent
Opened
#698 [spec-037] Maestro delegação REST (/run/proj-mail, /run/cf-zone) — Maestro delegação REST (/run/proj-mail, /run/cf-zone)
Opened
#699 [spec-037] WebSocket wizard ↔ edge — WebSocket wizard ↔ edge
Opened
#700 [spec-037] Inbox Spec 029 handoff ack — Inbox Spec 029 handoff ack
Opened
#701 [spec-037] Tenant CF Ligbox confirmado — Tenant CF Ligbox confirmado
Opened
#702 [spec-037] provision-client-account (fallback zona partilhada) — provision-client-account (fallback zona partilhada)
Opened
#703 [spec-037] handoff-manager (stub registo) — handoff-manager (stub registo)
Opened
#704 [spec-037] cf_client_accounts/ registry — cf_client_accounts/ registry
Opened
#705 [spec-037] Registradores EPP (Fase E) — Registradores EPP (Fase E)
Opened
#706 [spec-037] Routing conta por marca (ligit/itecnologys) — Routing conta por marca (ligit/itecnologys)
Opened
#707 [spec-037] V0 Desk CF only — cloudflare_dns.py + Overview modal — V0 Desk CF only — cloudflare_dns.py + Overview modal
Opened
#708 [spec-037] Spec rollback + scripts deploy (deploy/DNS-VIEWER-*.md, d — Spec rollback + scripts deploy (deploy/DNS-VIEWER-*.md, deploy/scripts/*`)
Opened
#709 [spec-037] V1 GET /api/v1/dns/viewer/{domain} — CF + public + planned — V1 GET /api/v1/dns/viewer/{domain} — CF + public + planned (deploy VM122 2026-06-25)
Opened
#710 [spec-037] V1b Desk UI unificada (dns-viewer.js + Overview/IaaS modal — V1b Desk UI unificada (dns-viewer.js + Overview/IaaS modal)
Opened
#711 [spec-037] V2 OpenPanel BIND records (openpanel_dns.py) — VM122 2026- — V2 OpenPanel BIND records (openpanel_dns.py) — VM122 2026-06-25
Opened
#712 [spec-037] V3 Console /admin/dominio consume viewer API — VM123 2026- — V3 Console /admin/dominio consume viewer API — VM123 2026-06-25
Opened
#713 [spec-037] V4 Wizard painel lateral — patches em deploy/vm112-wizard/* — V4 Wizard painel lateral — patches em deploy/vm112-wizard/*-v4.patch.py` · deploy VM112 pendente
Opened
#714 [spec-037] RBAC dns.viewer.read formalizar Spec 027 — RBAC dns.viewer.read formalizar Spec 027
Opened
#715 [spec-038] Diagnosticar falha WAN mail.nutranik.com (404/500 em /zx/ — Diagnosticar falha WAN mail.nutranik.com (404/500 em /zx/login/*`)
Opened
#716 [spec-038] Confirmar arquitectura: WAN → VM112, Nutranik → VM108 — Confirmar arquitectura: WAN → VM112, Nutranik → VM108
Opened
#717 [spec-038] Criar upstream nutranik_vm108_https na VM112 — Criar upstream nutranik_vm108_https na VM112
Opened
#718 [spec-038] Criar server block proxy mail.nutranik.com na VM112 — Criar server block proxy mail.nutranik.com na VM112
Opened
#719 [spec-038] Sincronizar certificado SSL da VM108 — Sincronizar certificado SSL da VM108
Opened
#720 [spec-038] Adicionar include persistente em nginx.conf.web — Adicionar include persistente em nginx.conf.web
Opened
#721 [spec-038] Implementar ensure-nutranik-proxy.sh — Implementar ensure-nutranik-proxy.sh
Opened
#722 [spec-038] Implementar check-nutranik-proxy.sh + cron 15 min — Implementar check-nutranik-proxy.sh + cron 15 min
Opened
#723 [spec-038] Implementar systemd path watcher — Implementar systemd path watcher
Opened
#724 [spec-038] Configurar tmpfiles.d para /run/carbonio — Configurar tmpfiles.d para /run/carbonio
Opened
#725 [spec-038] Validar WAN: supported/config/login → HTTP 200 — Validar WAN: supported/config/login → HTTP 200
Opened
#726 [spec-038] Validar regressão mail.ligbox.com.br → HTTP 200 — Validar regressão mail.ligbox.com.br → HTTP 200
Opened
#727 [spec-038] Documentar SPEC na VM130 (Spec Hub) — Documentar SPEC na VM130 (Spec Hub)
Opened
#728 [spec-038] Verificar log /var/log/nutranik-proxy-monitor.log semanalm — Verificar log /var/log/nutranik-proxy-monitor.log semanalmente
Opened
#729 [spec-038] Após renovação SSL VM108, confirmar sync cert na VM112 — Após renovação SSL VM108, confirmar sync cert na VM112
Opened
#730 [spec-038] Após zmproxyconfgen / upgrade Carbonio VM112, validar curl — Após zmproxyconfgen / upgrade Carbonio VM112, validar curl WAN
Opened
#731 [spec-038] DNAT dedicado WAN → VM108 para mail.nutranik.com (eliminar — DNAT dedicado WAN → VM108 para mail.nutranik.com (eliminar hop proxy)
Opened
#732 [spec-038] Alerta Watchman/Desk quando monitor falhar 3x consecutivas — Alerta Watchman/Desk quando monitor falhar 3x consecutivas
Opened
#733 [spec-038] Incluir nutranik no map.crt traefik-export com cert dedicado — Incluir nutranik no map.crt traefik-export com cert dedicado (vs sync manual)
Opened
#734 [spec-040] T001 — T001 Snapshot v0.12.2-pre-ds-20260625
Opened
#735 [spec-040] T002 — T002 DS-API-001 desk_governance_store.py
Opened
#736 [spec-040] T003 — T003 DS-API-002 governance_routes.py
Opened
#737 [spec-040] T004 — T004 DS-FE-001 ligbox-ds.css
Opened
#738 [spec-040] T005 — T005 DS-FE-003 user-wizard.js
Opened
#739 [spec-040] T006 — T006 DS-FE-004 access-control-hub.js
Opened
#740 [spec-040] T007 — T007 Deploy VM122 v0.13.0
Opened
#741 [spec-040] T008 — T008 RBAC action_ids governance no catálogo 039
Opened
#742 [spec-040] T009 — T009 Testes API governance (pytest)
Opened
#743 [spec-040] T010 — T010 Link pedidos cadastro no Access Control Hub
Opened
#744 [spec-041] T001 — T001 OF-API-001 ops_inbox_store.py + seed
Opened
#745 [spec-041] T002 — T002 OF-API-002 ops_inbox_routes.py
Opened
#746 [spec-041] T003 — T003 OF-FE-001 operational-feed.js
Opened
#747 [spec-041] T004 — T004 Substituir renderMessages() → DeskOperationalFeed
Opened
#748 [spec-041] T005 — T005 Nav «Central Operacional»
Opened
#749 [spec-041] T006 — T006 Deploy VM122
Opened
#750 [spec-041] T007 — T007 OF-EP-101 webhook email inbound
Opened
#751 [spec-041] T008 — T008 OF-EP-102 WhatsApp API
Opened
#752 [spec-041] T009 — T009 RBAC dedicado (não só super_admin)
Opened
#753 [spec-041] T010 — T010 SLA real (calcular vs mock 96%)
Opened
#754 [spec-041] T011 — T011 Unificar agent threads → ops_inbox
Opened
#755 [spec-042] Spec 042 spec.md — Spec 042 spec.md
Opened
#756 [spec-042] tools-catalog.md (23 ferramentas) — tools-catalog.md (23 ferramentas)
Opened
#757 [spec-042] architecture.md — architecture.md
Opened
#758 [spec-042] infrastructure.md — infrastructure.md
Opened
#759 [spec-042] contracts/nettools-api.md — contracts/nettools-api.md
Opened
#760 [spec-042] Criar projects/nettools/ skeleton (README, docker-compose, — Criar projects/nettools/ skeleton (README, docker-compose, FastAPI hello)
Opened
#761 [spec-042] Deploy /opt/ligbox-nettools/ VM130 isolado — Deploy /opt/ligbox-nettools/ VM130 isolado
Opened
#762 [spec-042] bootstrap-vm130.sh + smoke OK (23 tools, nslookup MX) — bootstrap-vm130.sh + smoke OK (23 tools, nslookup MX)
Opened
#763 [spec-042] systemd ligbox-nettools.service — systemd ligbox-nettools.service
Opened
#764 [spec-042] vendor/install-vendor.sh (mxcheck, testssl pin) — vendor/install-vendor.sh (mxcheck, testssl pin)
Opened
#765 [spec-042] Actualizar SPEC-REGISTRY.md e projects/README.md — Actualizar SPEC-REGISTRY.md e projects/README.md
Opened
#766 [spec-042] Commit + push GitHub Ligbox — Commit + push GitHub Ligbox
Opened
#767 [spec-042] FastAPI routers dns + net + mail (parcial) — FastAPI routers dns + net + mail (parcial)
Opened
#768 [spec-042] Runners: dig, ping, mxcheck, mailvalidator auth — Runners: dig, ping, mxcheck, mailvalidator auth
Opened
#769 [spec-042] Rate limit middleware — Rate limit middleware
Opened
#770 [spec-042] Frontend Vite: Home 23 cards + ToolPage template — Frontend Vite: Home 23 cards + ToolPage template
Opened
#771 [spec-042] Tools live: nslookup, ptr, ping, mx-test, smtp-test, mail-au — Tools live: nslookup, ptr, ping, mx-test, smtp-test, mail-auth, ssl, headers, myip
Opened
#772 [spec-042] dns-report, propagation, traceroute, mtr, ntp — dns-report, propagation, traceroute, mtr, ntp
Opened
#773 [spec-042] delivery test, headers, dnsbl, uribl, smartermail log — delivery test, headers, dnsbl, uribl, smartermail log
Opened
#774 [spec-042] web-health, rdap, whois, ip-info — web-health, rdap, whois, ip-info
Opened
#775 [spec-042] Worker Redis para checks longos — Worker Redis para checks longos
Opened
#776 [spec-042] DNS nettools.ligbox.com.br Cloudflare — DNS nettools.ligbox.com.br Cloudflare
Opened
#777 [spec-042] Traefik CT114 → VM130:8091 — Traefik CT114 → VM130:8091
Opened
#778 [spec-042] Fase B — 20/23 ferramentas API (3 stubs fase C) — Fase B — 20/23 ferramentas API (3 stubs fase C)
Opened
#779 [spec-042] UI React build servida na raiz — UI React build servida na raiz
Opened
#780 [spec-042] Traefik router CT114 — Traefik router CT114
Opened
#781 [spec-042] Deploy VM122 deploy-vm122.sh — Deploy VM122 deploy-vm122.sh
Opened
#782 [spec-042] smoke-test.sh (ligbox.com.br MX + PMG STARTTLS) — smoke-test.sh (ligbox.com.br MX + PMG STARTTLS)
Opened
#783 [spec-042] Card Infra no Desk — Card Infra no Desk
Opened
#784 [spec-042] /about licenças GPL — /about licenças GPL
Opened
#785 [spec-042] Link contextual domínio cliente — Link contextual domínio cliente
Opened
#786 [spec-042] Watchman probes MX/STARTTLS — Watchman probes MX/STARTTLS
Opened
#787 [spec-042] Auth JWT para checks LAN — Auth JWT para checks LAN
Opened
#788 [spec-043] Spec índice spec.md — Spec índice spec.md
Opened
#789 [spec-043] Contrato activation-field-mapping.md — Contrato activation-field-mapping.md
Opened
#790 [spec-043] Contrato API desk-activate-account-api.md — Contrato API desk-activate-account-api.md
Opened
#791 [spec-043] Ligações cruzadas specs 023/024/028/035 — Ligações cruzadas specs 023/024/028/035
Opened
#792 [spec-043] Registo em SPEC-REGISTRY.md — Registo em SPEC-REGISTRY.md
Opened
#793 [spec-043] ROLLBACK.md com tags Git — ROLLBACK.md com tags Git
Opened
#794 [spec-043] GET /billing/accounts/{id}/activation-preview — GET /billing/accounts/{id}/activation-preview
Opened
#795 [spec-043] Botão **Activar conta** em billing-ui.js (só roles autoriz — Botão **Activar conta** em billing-ui.js (só roles autorizados)
Opened
#796 [spec-043] Modal confirmação com 3 colunas FOSS / OpenPanel / Odoo — Modal confirmação com 3 colunas FOSS / OpenPanel / Odoo
Opened
#797 [spec-043] Deploy VM122 + validação Roger (teste manual) — Deploy VM122 + validação Roger (teste manual)
Opened
#798 [spec-043] foss_client.create_client() conforme mapa §4 — foss_client.create_client() conforme mapa §4
Opened
#799 [spec-043] foss_client.create_order() + activate hosting — foss_client.create_order() + activate hosting
Opened
#800 [spec-043] Custom fields FOSS via config (domain, manager_*) — Custom fields FOSS via config (domain, manager_*)
Opened
#801 [spec-043] Persistir external_customer_id + external_subscription_id — Persistir external_customer_id + external_subscription_id`
Opened
#802 [spec-043] Bridge directo (provision_user_safe) + metadata JSON — Bridge directo (provision_user_safe) + metadata JSON
Opened
#803 [spec-043] Persistir openpanel_username em company_profile_json — Persistir openpanel_username em company_profile_json
Opened
#804 [spec-043] Idempotência user exists — Idempotência user exists
Opened
#805 [spec-043] odoo_client.upsert_customer_partner() conforme mapa §6 — odoo_client.upsert_customer_partner() conforme mapa §6
Opened
#806 [spec-043] Coluna odoo_partner_id em billing_accounts — Coluna odoo_partner_id em billing_accounts
Opened
#807 [spec-043] Deep-link Odoo na ficha cliente — Deep-link Odoo na ficha cliente
Opened
#808 [spec-043] Contrato contracts/mail-bundle-api.md — Contrato contracts/mail-bundle-api.md
Opened
#809 [spec-043] Código mail_bundle.py + internal_provision.py (repo) — Código mail_bundle.py + internal_provision.py (repo)
Opened
#810 [spec-043] POST /billing/accounts/{id}/activate com provision_mail — POST /billing/accounts/{id}/activate com provision_mail
Opened
#811 [spec-043] Webhook POST /billing/webhook/foss/order-activated — Webhook POST /billing/webhook/foss/order-activated
Opened
#812 [spec-043] wizard_client.provision_mail_bundle() → VM112 — wizard_client.provision_mail_bundle() → VM112
Opened
#813 [spec-043] **Deploy VM112** — 2026-07-01 · OPS_INTERNAL_TOKEN + endpo — **Deploy VM112** — 2026-07-01 · OPS_INTERNAL_TOKEN + endpoint activo
Opened
#814 [spec-043] Plano hosting hp_id=2 — Plano hosting hp_id=2
Opened
#815 [spec-043] Produto FOSS product_id=3 slug ligbox-mail-business — Produto FOSS product_id=3 slug ligbox-mail-business
Opened
#816 [spec-043] Script deploy/vm123-finance-stack/create-foss-mail-business — Script deploy/vm123-finance-stack/create-foss-mail-business.sh`
Opened
#817 [spec-043] Unit: test_activation_mapper_043.py (3) — Unit: test_activation_mapper_043.py (3)
Opened
#818 [spec-043] Unit: test_client_activation_043.py (4) — happy path, idem — Unit: test_client_activation_043.py (4) — happy path, idempotência FOSS, reject active
Opened
#819 [spec-043] E2E Roger: domínio teste wizard → activate → FOSS+OP+Odoo (d — E2E Roger: domínio teste wizard → activate → FOSS+OP+Odoo (dratcoin.com #2, 2026-07-01)
Opened
#820 [spec-043] Contrato contracts/webmail-release-gate.md — Contrato contracts/webmail-release-gate.md
Opened
#821 [spec-043] Backend VM112 company_gate.py + API /gate/* — Backend VM112 company_gate.py + API /gate/*
Opened
#822 [spec-043] Aviso rodapé login Carbonio (sync_webmail_user_notice) — Aviso rodapé login Carbonio (sync_webmail_user_notice)
Opened
#823 [spec-043] WebmailReleaseModal.jsx no wizard onboarding — WebmailReleaseModal.jsx no wizard onboarding
Opened
#824 [spec-043] UI Painel Admin: banner + card «Activar webmail» em DomainA — UI Painel Admin: banner + card «Activar webmail» em DomainAdmin.jsx`
Opened
#825 [spec-043] Desactivar «Abrir Webmail» sidebar até webmail_released_at — Desactivar «Abrir Webmail» sidebar até webmail_released_at
Opened
#826 [spec-044] Spec índice spec.md — Spec índice spec.md
Opened
#827 [spec-044] Contrato contracts/ticket-field-mapping.md — Contrato contracts/ticket-field-mapping.md
Opened
#828 [spec-044] Contrato contracts/ticket-sync-api.md — Contrato contracts/ticket-sync-api.md
Opened
#829 [spec-044] Registo em SPEC-REGISTRY.md — Registo em SPEC-REGISTRY.md
Opened
#830 [spec-044] Ligações cruzadas specs 010/012/024/041/043 — Ligações cruzadas specs 010/012/024/041/043
Opened
#831 [spec-044] Sync Obsidian VM130 — Sync Obsidian VM130
Opened
#832 [spec-044] Portal OB- → Desk via onboarding.escalated (VM112) — Portal OB- → Desk via onboarding.escalated (VM112)
Opened
#833 [spec-044] UI Desk mostra wizard_ticket_id (OB-) no painel ticket — UI Desk mostra wizard_ticket_id (OB-) no painel ticket
Opened
#834 [spec-044] FOSS Support nativo em VM123 (sem bridge) — FOSS Support nativo em VM123 (sem bridge)
Opened
#835 [spec-044] Inventário endpoints FOSS Support API (Roger validar admin) — Inventário endpoints FOSS Support API (Roger validar admin)
Opened
#836 [spec-044] Coluna/payload foss_ticket_id em tickets — Coluna/payload foss_ticket_id em tickets
Opened
#837 [spec-044] foss_client.create_support_ticket() — M2M admin API — foss_client.create_support_ticket() — M2M admin API
Opened
#838 [spec-044] Hook pós-criação ticket Desk: se billing_accounts.external_ — Hook pós-criação ticket Desk: se billing_accounts.external_customer_id` → espelho FOSS
Opened
#839 [spec-044] Idempotência: não recriar se foss_ticket_id já existe — Idempotência: não recriar se foss_ticket_id já existe
Opened
#840 [spec-044] Unit tests test_foss_ticket_sync_044.py — Unit tests test_foss_ticket_sync_044.py
Opened
#841 [spec-044] Endpoint POST /api/v1/webhooks/foss/support (auth FOSS_WE — Endpoint POST /api/v1/webhooks/foss/support (auth FOSS_WEBHOOK_SECRET`)
Opened
#842 [spec-044] Plugin/hook FOSS ou cron poll — eventos ticket.opened, ti — Plugin/hook FOSS ou cron poll — eventos ticket.opened, ticket.reply, ticket.closed`
Opened
#843 [spec-044] Upsert nota / status no ticket Desk correlacionado — Upsert nota / status no ticket Desk correlacionado
Opened
#844 [spec-044] Log em webhook_events source=vm123-foss — Log em webhook_events source=vm123-foss
Opened
#845 [spec-044] Painel ticket: badge «FOSS #123» + deep-link financeiro.lig — Painel ticket: badge «FOSS #123» + deep-link financeiro.ligbox.com.br/admin/support`
Opened
#846 [spec-044] Serviços IaaS / ficha cliente: «Abrir ticket FOSS» (roles sa — Serviços IaaS / ficha cliente: «Abrir ticket FOSS» (roles sales_admin, sales_support)
Opened
#847 [spec-044] Central Operacional (041): evento desk_tickets com foss_t — Central Operacional (041): evento desk_tickets com foss_ticket_id`
Opened
#848 [spec-044] Console /me/suporte ou FOSS client area — single entry (de — Console /me/suporte ou FOSS client area — single entry (decisão Roger)
Opened
#849 [spec-044] API Desk POST /api/v1/support/tickets → cria Desk + FOSS e — API Desk POST /api/v1/support/tickets → cria Desk + FOSS espelho
Opened
#850 [spec-044] Resposta cliente inclui tracking_url (portal ou FOSS) — Resposta cliente inclui tracking_url (portal ou FOSS)
Opened
#851 [spec-044] Roger: OB- onboarding → activar conta → staff responde → cli — Roger: OB- onboarding → activar conta → staff responde → cliente vê no FOSS
Opened
#852 [spec-044] Roger: cliente abre ticket FOSS → aparece no Desk Chamados — Roger: cliente abre ticket FOSS → aparece no Desk Chamados