eXtreme Go Horse | Edição OutSystems · v. 2026 13 axiomas · não-oficial

eXtreme Go Horse
| OutSystems Edition

“Arrastou, fez 1-CP, era isso.” O que sobra depois de anos a arrastar widgets, fazer Refresh All três vezes seguidas e descobrir que o operador IN continua sem existir em Aggregates.

Axioma #01 O Architecture Canvas tem 4 camadas. O XGH-OS usa uma e meia.

Os 13 axiomas

13 axiomas · ler em voz alta antes de cada 1-CP
  1. O Architecture Canvas tem 4 camadas. O XGH-OS usa uma e meia.

    End-User com tudo lá dentro: screens, blocks, server actions, entities, integrações REST. Foundation é onde vão as Static Entities que ninguém soube onde meter. Core é palavra que o XGH-OS já leu mas não usa. O Discovery abre-se uma vez para ver o aranhol de setas — depois disso, só em apresentação para o cliente.

  2. Aggregate dentro de For Each é o batimento cardíaco do XGH-OS.

    A documentação grita “aggregate or SQL query inside a cycle” há mais de uma década. O AI Mentor sinaliza a vermelho. O Architecture Dashboard contabiliza. O dev XGH-OS faz 1-CP na mesma. O problema do N+1 não é um bug — é uma escolha estética.

  3. Refresh References. Re-1-CP. Repeat.

    “Outdated Producer” → Refresh All → 1-CP → “Outdated Producer” → Refresh All → 1-CP. Se entrar em ciclo, há referência circular entre módulos — solução XGH-OS: aceitar e seguir. O ciclo é o método.

  4. Quando o IN operator não existe, o XGH-OS concatena strings com #.

    A Idea para ter IN em Aggregates tem 500+ likes desde 2015. O XGH-OS já percebeu que nunca vai sair e segue com Index("#"+String_Join.Text+"#", "#"+Entity.Id+"#") <> -1. A performance é problema do otimizador da Aurora.

  5. If StatusId = 1: o XGH-OS não decora nomes de Static Entities.

    Static Entities existem precisamente para evitar magic numbers no código. O XGH-OS respeita o princípio: não usa magic numbers, usa magic Ids. Toda a gente sabe que 1 é “Pendente”, não é? E que 7 é “Cancelado”. Exceto em PRD, onde 7 é “Aprovado” porque alguém renumerou em 2019 e ninguém atualizou os 47 IFs espalhados pelos módulos.

  6. Toda Server Action grande do XGH-OS termina em FinalResult2.

    Aux, Aux2, Temp, Temp_OK, X, Y, Result, Result2, FinalResult, FinalResult_REAL, FinalResult_FINAL, FinalResult_USE_THIS_ONE. Nomenclatura é privilégio de quem tem tempo. O XGH-OS tem prazo.

  7. Site Property é a variável global do XGH-OS.

    Configurar algo sem deploy? Site Property. Passar valor entre Timer e Screen? Site Property. Guardar o último Id processado para retomar amanhã? Site Property. Feature flag? Site Property. Service Center → Site Properties → Edit Value é o painel de admin oculto da empresa, gerido por quem tem acesso, não por quem decide.

  8. O TrueChange tem três cores. O AI Mentor faz sugestões. O XGH-OS fecha a aba.

    Vermelho não 1-CP. Amarelo 1-CP. Os 247 warnings amarelos são parte do tema do Service Studio. “Avoid Aggregate inside cycle.” “Cyclic reference detected.” “Avoid large session variables.” Sugestão. Sugestão. Sugestão.

  9. Se o Last Modified By não for teu, o erro também não é.

    A primeira ação do XGH-OS perante uma exception em produção: abrir a Server Action, consultar o Last Modified By no painel de propriedades, ler o nome. Se for de um colega da equipa — fecha o Service Studio. Se for de alguém que já saiu da empresa — fecha mais depressa. O AI Mentor tem o mesmo workflow: abre-se o finding, vê-se o módulo, vê-se a equipa dona, e se não for a tua, Suppress. O Last Modified By é o git blame do XGH-OS. E o álibi.

  10. Forge é open source: baixa, copia, esquece o autor.

    Componente de 2018, sem versão para Reactive, autor saiu da empresa em 2020? Baixa o .oap, descompila, copia o JavaScript do Web Block, cola num módulo próprio. “Customizámos para a nossa realidade.” (E partiu no upgrade para ODC, mas isso é problema do trimestre seguinte.)

  11. 1-CP em produção é uma forma de coragem.

    O LifeTime existe. As Deployment Zones existem. Os approvals existem. O XGH-OS sabe disto e sabe também que basta trocar o ambiente no canto inferior do Service Studio para o 1-CP apontar diretamente a PRD. “É só um hotfix urgente.” “É só um Site Property.” “É só uma Static Entity.” Quem nunca? Se respondeste “eu”, parabéns — não és XGH-OS, és gestor.

  12. Audit log? O Service Center é o nosso Datadog.

    A tabela OSLOG_GENERAL cresce a 4 GB por mês. LogMessage("entrei aqui") é a única instrumentação. Dashboards de observabilidade são comprados em Q4 e abandonados em Q1. Quando um cliente reporta bug em produção, abre-se o Service Center, filtra-se pela hora aproximada, e reza-se para o log estar lá.

  13. Migração para ODC: tudo na sprint 1, e era isso.

    Traditional Web deixou de existir — reescreve-se em Reactive. SQL Server passou a Aurora PostgreSQL — reescrevem-se as queries (case-insensitive deixa de ser default — boa sorte). SOAP virou REST — reescrevem-se as integrações. Estimativa do XGH-OS: “umas duas semanas”. Realidade: 9 meses, duas demissões, e um post-mortem de 47 páginas.

Níveis de certificação XGH-OS

Programa não-reconhecido pela OutSystems, pelo teu Tech Lead, nem pelo PMO. É endossado pela retrospectiva da sprint passada.

Nível I

Junior do Drag-and-Drop

Ainda chama “tabela” a uma Entity. Já fez três 1-CP directos a PRD.

Nível II

Pleno do Refresh All

Refresh → 1-CP → “Outdated Producer” → Refresh é a sua meditação matinal. F5 mecânico.

Nível III

Senior do FinalResult2

Tem em PRD actions chamadas Aux, Temp_OK, Result2 e FinalResult_USE_THIS_ONE. Ninguém sabe qual é que corre.

Nível IV

Arquiteto da Migração

Prometeu ODC “em duas semanas”. Vai no nono mês, no segundo post-mortem, na terceira reescrita.

Contribui · open source · não-oficial

Tens mais um axioma?

Trabalhas com OutSystems há tempo suficiente para carregares pelo menos uma cicatriz que ainda não está no manifesto. Manda. Se for verdadeiro, fica. Se for engraçado, fica em destaque.

O melhor axioma vem de um post-mortem real. O segundo melhor, de um Slack às 23h.

247 warnings 🟡 · 1 error 🔴 · merged anyway ✓