Página viva — última revisão: input #41 (17/09/2026) · Inputs #30 · #36 · #37 · #39 · #40 · #41 · Análise em 12 vertentes + benchmark vs gigantes HCM → 8 achados → especificações executáveis fechadas · fontes: docs/DEEP_REVIEW_ENTERPRISE_V1.md + docs/PRE_ARRANQUE_A1_A8.md
M0_SPEC.md agendada pós-OK do dia 18.Nenhum achado está em aberto: todos têm decisão ratificada (I61-I65) e especificação executável fechada na secção 5. Esta tabela mantém-se como registo do diagnóstico original.
| # | Achado | Gravidade | Porquê dói | Proposta | Estado |
|---|---|---|---|---|---|
| A1 | Effective dating (bi-temporalidade) ausente em M0/M2 | CRÍTICA | É O padrão que separa HCM enterprise de HCM PME. Sem ele: retro payroll impossível, histórico organizacional falso, "quem era o chefe em Março?" não responde. Workday/SAP/Oracle/Dayforce são todos effective-dated no core. Retrofit = reescrever M0+M2. | I61 | ✅ SPEC FECHADA I61 ratificada #36 · spec §5 (schema bi-temporal, as-of, 4 critérios) |
| A2 | Não existe Control Plane de tenants | CRÍTICA | Provisioning, edições, metering p/ billing, suspensão, exportação+purga certificada — o produto multi-tenant não tem quem gira os tenants. Alternativa é SQL à mão: indefensável com >5 clientes. | I62 | ✅ SPEC FECHADA I62 ratificada #36 · spec §5 (svc-tenant :3063, entitlements) |
| A3 | Loki/Grafana é monitorização, NÃO é SIEM | ALTA | Sem pipeline de eventos de segurança, sem normalização ECS, sem correlação, sem export CEF/syslog para o SIEM do cliente — RFP enterprise chumba. | I63 | ✅ SPEC FECHADA I63 ratificada #36 · spec §5 (ECS+Wazuh+CEF, WORM 24m) |
| A4 | Segmentação micro→enterprise inexistente | ALTA | A directiva "servirá micro, pequenas e grandes" não tem suporte no desenho: sem edições, sem onboarding self-service <30min, sem UI progressiva. | I64 | ✅ SPEC FECHADA I64 ratificada #36 · spec §5 (matriz 3 edições) |
| A5 | Motor de regras por tenant insuficiente | ALTA | Rubricas versionadas c/ vigência, calendários por província, accrual de férias, thresholds SoD por tenant: implícito, não especificado. | I61 | ✅ SPEC FECHADA via I61 · spec §5 (DSL JSON, maker-checker, IRT/INSS) |
| A6 | Gaps funcionais vs gigantes | MÉDIA | Position management, retro pay, compensation review, scheduling avançado — ver benchmark §3. | I65 | ✅ SPEC FECHADA I65 ratificada #36 · spec §5 (backlog F1/F2) |
| A7 | SSO federado por tenant + SCIM não especificados | MÉDIA | Enterprise exige "login com o NOSSO Entra/AD". Topologia Keycloak tem de ser decidida ANTES do svc-identity — mudar depois é migração de identidade. | I63 | ✅ SPEC FECHADA via I63 · spec §5 (OIDC/SAML, SCIM 2.0, break-glass) |
| A8 | WCAG 2.2 AA e i18n sem meta formal | MÉDIA | Acessibilidade não está em nenhum gate; retrofit de i18n é dos retrabalhos mais caros. | I64 | ✅ SPEC FECHADA via I64 · spec §5 (gates axe-core + i18n CI) |
| Vertente | Já sólido (não tocar) | Upgrade proposto |
|---|---|---|
| Escalabilidade | Escala selectiva M0-M6, K3s, PgBouncer, tecto P11 | Read replicas p/ svc-report · cache Redis de lookups legais/orgânica (invalidação por evento, NUNCA salários) · partição payroll (tenant, ano_mes) desde a migration 1 · rate-limit e quotas por tenant no gateway |
| Performance | k6 fecho mensal, p95 Grafana, gRPC snapshot | SLOs formais (API p95<300ms leitura · fecho 1.000 colab <10min · picagem <150ms p99 · 99,9% Enterprise) · k6 como GATE no CI (regressão >15% chumba) · worker_threads no M2 |
| Dados & Edge (I60) | PG16+RLS, schemas por serviço | TimescaleDB no schema time · Go Edge Agent (buffer SQLite, replay HMAC idempotente — spec antes do F2) · Redis Streams SÓ edge→M1; RabbitMQ dono dos eventos de negócio (fronteira não-negociável) |
| UI | I51/I56 AntD, I58 PWA, I59 duas linguagens, dark, densidade | WCAG 2.2 AA como gate (axe-core no CI, contraste nos 6 tons × 2 aparências) · confirmar AG Grid Enterprise antes do M2 · skeletons/estados vazios como padrão do design system |
| UX | Navegação top=módulos/sider=opções (#22), personalização | UI progressiva por edição (micro vê 3 módulos e defaults; enterprise vê tudo) · onboarding wizard <30min c/ import Excel · i18n obrigatório desde a 1.ª linha (pt-AO base) · command palette Ctrl+K promovida a padrão |
| Governança | Donos por contexto (M0 dono do colaborador) | DATA_GOVERNANCE.md obrigatório pré-código: classificação de dados (5 níveis incl. sensível-salarial/disciplinar) × perfis · ciclo de vida do tenant c/ exportação e purga certificada · gestão de alterações legais (tabelas IRT/INSS versionadas c/ vigência + calendário de compliance) |
| Gestão | Uptime Kuma, runbooks | Control Plane (I62): svc-tenant no M6 (10.º serviço, excepção P11 justificada) — provisioning, edições, metering (consumidor dos eventos hr.employee.* já existentes), suspensão · SLA por edição · página de status pública |
| Auditoria | svc-audit WORM, trilha imutável | Hash encadeado + âncora diária em R2 object-lock (prova de não-adulteração) · relatórios prontos p/ auditor externo (alterações salariais antes/depois) · auditoria de LEITURA de dados sensíveis (salários/disciplinares de terceiros) |
| Logs SIEM | — (lacuna A3) | Pipeline própria (I63): Wazuh OSS + formato ECS desde o 1.º serviço + export CEF/syslog p/ SIEM do cliente (Splunk/Sentinel/QRadar) · retenção 12+ meses WORM · authn/authz sucesso E falha, acções admin, acessos sensíveis, eventos WAF |
| Logs monitorização | pino→Loki · Tempo · Prometheus · Alertmanager ✅ | Mantém-se — fica formalmente SEPARADA da pipeline SIEM (retenção 30-90d). Evento de segurança nunca se perde por rotação de logs de ops. |
| Segurança | Gate ASVS, WAF, Infisical, SBOM, pen-test | SSO federado por tenant (topologia Keycloak decidida PRÉ-identity) · SCIM 2.0 (API já desenhada, impl. fase 2) · testes cross-tenant no CI (prova do RLS) · revogação de sessões + sessões por dispositivo · IP allowlist por tenant (Enterprise) |
| Legislação & conformidade | LGT, IRT 28/20, INSS, Lei 22/11, purga PII, WORM, cookies I58 | Compliance pack Angola: cada mapa AGT/INSS = teste automatizado c/ dataset de referência · motor multi-jurisdição preparado (coluna jurisdicao + vigência → SADC amanhã sem rewrite) · DPA por tenant + residência de dados documentada · direitos do titular: exportação/portabilidade por colaborador + rectificação c/ trilha |
| Regras de negócio enterprise | SoD maker-checker, svc-workflow | I61 — a decisão mais importante: effective dating bi-temporal em M0/M1/M2 (valido_de/ate ≠ criado_em) → retro payroll, orgânica histórica, auditoria temporal · rubricas parametrizadas versionadas · calendários por província · accrual férias · thresholds SoD por tenant |
| Capacidade | Workday | SAP SF | Oracle | ADP | Dayforce | UKG | Bamboo/Personio | GORO (desenho) | Estado (rev. #40) |
|---|---|---|---|---|---|---|---|---|---|
| M0 Core HR effective-dated | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌→✅ I61 ratificada ✓ | ✅ SPEC FECHADA A1 §5 · bi-temporal M0 |
| M0 Position management | ✅ | ✅ | ✅ | 🟠 | ✅ | 🟠 | ❌ | ❌ fase 2 (I65) | 📋 BACKLOG F2 por decisão I65 ✓ — fora do GA |
| M0 Docs+GED+self-service | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ maduro | ✅ SPEC FECHADA M0_SPEC — já sólido |
| M1 Biometria HMAC + edge offline | 🟠 | 🟠 | 🟠 | ✅ | ✅ | ✅✅ | ❌ | ✅✅ I60 ratificada ✓ | ✅ SPEC FECHADA I60 ✓ + spec Edge Agent FECHADA #40 (docs/EDGE_AGENT_SPEC.md) |
| M1 Accrual engine (férias/licenças) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 🟠 | 🟠→✅ I61 ratificada ✓ | ✅ SPEC FECHADA A5 §5 · accrual na DSL |
| M1 Scheduling/forecast avançado | 🟠 | 🟠 | 🟠 | ✅ | ✅✅ | ✅✅ | ❌ | ❌ fase 3 (básico ✅) | 📋 BACKLOG F3 (I65) · básico coberto no GA |
| M1 Geofencing/mobile clock-in | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 🟠 PWA geo | ✅ SPEC FECHADA PWA I58 — geo clock-in no plano F1 |
| M2 Motor rubricas+fechos+recibos | ✅ | ✅ | ✅ | ✅✅ | ✅✅ | ✅ | ❌ | ✅ Lei 28/20 nativo | ✅ SPEC FECHADA core M2 + DSL (A5) |
| M2 Retro payroll automático | ✅ | ✅ | ✅ | ✅ | ✅✅ | ✅ | ❌ | ❌→✅ I61 ratificada ✓ | ✅ SPEC FECHADA A1 §5 · retro-pay = critério de aceitação |
| M2 Compliance Angola nativo | ❌ | ❌ | ❌ | 🟠 | ❌ | ❌ | ❌ | ✅✅ ARMA nº1 | ✅ SPEC FECHADA core do produto — IRT/INSS/LGT nativos |
| M2 Benefits administration | ✅ | ✅ | ✅ | ✅ | ✅ | 🟠 | 🟠 | ❌ fase 3 (rubricas cobrem subsídios AO) | 📋 BACKLOG F3 (I65) · subsídios AO cobertos já |
| M3 Avaliação+objectivos+calibração | ✅ | ✅✅ | ✅ | 🟠 | ✅ | 🟠 | ✅ | ✅ | ✅ SPEC FECHADA M3 no desenho — codifica F1 |
| M3 Compensation review em massa | ✅✅ | ✅ | ✅ | 🟠 | ✅ | 🟠 | ❌ | ❌ fase 2 (I65) | 📋 BACKLOG F2 por decisão I65 ✓ — fora do GA |
| M3 LMS+certificados | 🟠 | ✅✅ | ✅ | 🟠 | 🟠 | 🟠 | 🟠 | ✅ LMS migra | ✅ SPEC FECHADA migração do LMS existente (M3) |
| M4 ATS + offboarding | ✅ | ✅ | ✅ | ✅ | ✅ | 🟠 | ✅ | ✅ +purga PII | ✅ SPEC FECHADA M4 + I53 (offboarding) ✓ |
| M5 Disciplinares LGT Angola | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅✅ ÚNICO — arma nº2 | ✅ SPEC FECHADA M5 · prazos LGT 22/11 no desenho |
| M6 SSO federado + SCIM | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 🟠 | ❌→✅ I63 ratificada ✓ | ✅ SPEC FECHADA A7 §5 · OIDC/SAML+SCIM |
| M6 SIEM export (CEF/syslog) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌→✅ I63 ratificada ✓ | ✅ SPEC FECHADA A3 §5 · ECS+Wazuh+CEF |
| M6 BI + mapas legais | ✅✅ | ✅ | ✅✅ | ✅ | ✅ | 🟠 | 🟠 | ✅ svc-report | ✅ SPEC FECHADA M6 svc-report — mapas legais AO |
| Multi-edição micro→enterprise | ❌ | ❌ | ❌ | ✅ | 🟠 | 🟠 | ✅ só base | ❌→✅ I64 ratificada ✓ — quadrante VAZIO | ✅ SPEC FECHADA A4 §5 · matriz 3 edições |
| Extensibilidade (webhooks, campos custom) | ✅✅ | ✅ | ✅ | 🟠 | ✅ | 🟠 | 🟠 | 🟠 fase 2 (I65) | 📋 BACKLOG F2 (I65) · webhooks/campos custom |
✅✅ líder · ✅ cobre · 🟠 parcial · ❌ não tem
docs/EDGE_AGENT_SPEC.md.| ID | Decisão | Estado | Consequência |
|---|---|---|---|
| I60 | TimescaleDB (schema time/M1) + Go Edge Agent (terminais biométricos offline, buffer SQLite, replay HMAC) + Redis Streams restrito a telemetria edge→M1 — RabbitMQ mantém-se dono dos eventos de negócio (fronteira não-negociável) | RATIFICADA #37 | Spec do Edge Agent antes do F2; extensão Timescale entra na migration do schema time |
| I61 | Effective dating bi-temporal M0/M1/M2 + motor de regras por tenant | RATIFICADA #36 | Spec fechada (A1+A5, secção 5); emenda M0_SPEC pós-OK dia 18; +20-30% complexidade nesses schemas — assumida |
| I62 | Control Plane: svc-tenant :3063 M6 (10.º serviço, excepção P11 justificada) | RATIFICADA #36 | Spec fechada (A2); impl. F1 |
| I63 | Pacote segurança enterprise: SIEM Wazuh+ECS+CEF · SSO federado · SCIM 2.0 · testes cross-tenant CI | RATIFICADA #36 | Specs fechadas (A3+A7); topologia Keycloak decide-se ANTES do svc-identity |
| I64 | 3 edições no mesmo core + WCAG 2.2 AA gate + i18n pt-AO desde a 1.ª linha | RATIFICADA #36 | Specs fechadas (A4+A8); matriz de edições = contrato de produto |
| I65 | Backlog competitivo faseado F2/F3 fora do GA | RATIFICADA #36 | Registado (A6); guard-rail: nada de F2 entra em sprint sem decisão explícita |
Ordem de dependência anti-retrabalho (mantém-se): I61 → emenda M0_SPEC (pós-OK dia 18, antes de 22/09) · I63 topologia Keycloak → antes do svc-identity · I62/I64 → specs S0 · I60 Edge Agent spec → antes do F2 · I65 → só registo. Nenhuma reabre I40–I59.
docs/PRE_ARRANQUE_A1_A8.md.| # | Achado → Spec entregue | Decisão | O que ficou fechado | Estado |
|---|---|---|---|---|
| A1 | Effective dating bi-temporal em M0/M1 | I61 | Schema PG16 valid_from/valid_to + tx_from/tx_to, regras de imutabilidade (nunca UPDATE destrutivo, reason_code obrigatório), query as-of, API surface, 4 critérios de aceitação (retro-pay, promoção futura, reconstrução audit, p95 <5ms c/ 100k×20 versões) | SPEC FECHADA |
| A2 | svc-tenant Control Plane (:3063, M6) | I62 | Schema tenantctl (tenant/module_flag/lifecycle_event), 5 endpoints, middleware entitlements no gateway (cache 60s, 402/403), eventos RabbitMQ; provisionar tenant <60s | SPEC FECHADA |
| A3 | SIEM — eventos ECS + Wazuh + export CEF | I63 | Formato ECS 8.11 obrigatório, catálogo mínimo (auth/iam/data_access/config/audit_integrity), exchange goro.security, retenção WORM 24 meses, lint de contrato no CI, regra ≥5 login-fail/5min | SPEC FECHADA |
| A4 | Segmentação — 3 edições | I64 | Matriz Essential/Professional/Enterprise por módulo+capacidade (limites, SLA, API rate); regra: zero if edition==X no código — tudo via entitlements (A2) | SPEC FECHADA |
| A5 | Motor de regras payroll/assiduidade | via I61 | Regras = dados versionados c/ vigência (liga a A1); DSL JSON declarativa restrita (bracket_tax, percentage, conditional, formula whitelisted); maker-checker; simulação obrigatória c/ diff; IRT/INSS AO 2026 100% na DSL | SPEC FECHADA |
| A6 | Gaps vs gigantes — backlog faseado | I65 | F1 (GA 20/03/2027): tudo absorvido por A1/A3/A5/A7/A8 + PWA · F2 (T2/T3 2027): comp planning, succession, LMS SCORM, workforce planning, benefits, ERP nativo | SPEC FECHADA |
| A7 | SSO federado OIDC/SAML + SCIM 2.0 | via I63 | identity.idp_connection por tenant, OIDC PKCE (Prof+), SAML SP-init (Ent), SCIM 2.0 server completo, deprovisioning ≤60s, break-glass auditado (SIEM sev. 8) | SPEC FECHADA |
| A8 | WCAG 2.2 AA + i18n como gates de CI | via I64 | Gate axe-core bloqueante (contraste nos 3 modos light/dusk/dark), teclado, target size 2.5.8; i18n pt-AO base, ICU MessageFormat, ESLint no-literal-string, Intl.* obrigatório | SPEC FECHADA |
goro_admin rodada até domingo 21/09 (compromisso registado; 22/09 sem rotação = alerta vermelho).M0_SPEC.md. FECHADO #40: spec do Go Edge Agent (docs/EDGE_AGENT_SPEC.md) — condição da I60 «antes da F2» cumprida com antecedência.Fontes: docs/DEEP_REVIEW_ENTERPRISE_V1.md (input #30) + docs/PRE_ARRANQUE_A1_A8.md (inputs #36/#37) · 17/09/2026 · GORO PMP Enterprise