← Production← Produção

No test suite. Gates in the pipeline instead.

Sem suíte de testes. Gates no próprio pipeline.

There's no pytest suite behind this platform. What checks correctness is runtime: consistency checks on every load, a version-diff audit that catches silent restatements, and a compliance engine that re-evaluates every regulatory limit every day and keeps a permanent record of the answer.

Não existe uma suíte pytest por trás desta plataforma. O que checa correção é em tempo de execução: checagens de consistência em toda carga, uma auditoria de version-diff que pega reapresentações silenciosas, e um motor de enquadramento que reavalia todo limite regulatório todo dia e guarda um registro permanente da resposta.

Bad data doesn't crash — it just looks plausible.

Dado ruim não trava — só parece plausível.

A malformed input rarely throws an exception; it produces a number that's merely wrong, and wrong numbers in a credit fund's daily report move real decisions. Unit tests catch code that behaves incorrectly against known cases — they don't catch a correct pipeline being fed unexpected data. The checks here are aimed at that second failure mode: they run against the live data every day, not against fixtures once in CI.

Uma entrada malformada raramente lança uma exceção; ela produz um número simplesmente errado, e números errados no relatório diário de um fundo de crédito movem decisões reais. Testes unitários pegam código que se comporta de forma incorreta contra casos conhecidos — eles não pegam um pipeline correto sendo alimentado com dado inesperado. As checagens aqui miram nesse segundo modo de falha: rodam contra o dado ao vivo todo dia, não contra fixtures uma vez no CI.

Inventory checks
Checagens de estoque
6
Named, one Excel sheet each, run on every load.
Nomeadas, uma planilha Excel cada, rodam em toda carga.
Restatement audit
Auditoria de reapresentação
Version-diff
Version-diff
Compares two runs of the same reference date to catch silent changes.
Compara duas rodadas da mesma data de referência para pegar mudanças silenciosas.
Rule engine
Motor de regras
No eval()
Sem eval()
A hand-written recursive-descent parser for the compliance rule language.
Um parser recursivo-descendente escrito à mão para a linguagem de regras de enquadramento.

Where the checks sit in the pipeline

Onde as checagens ficam no pipeline

quality gates gates de qualidade datadado gategate outcomeresultado

The six inventory checks

As seis checagens de estoque

Run against the receivables inventory on every load, each writing its own findings to a dedicated sheet so a reviewer sees exactly which rows failed which check, not just a pass/fail flag.

Rodam contra o estoque de recebíveis em toda carga, cada uma escrevendo seus próprios achados numa aba dedicada, para que um revisor veja exatamente quais linhas falharam em qual checagem, não só uma flag de passou/falhou.

Engineering decision

Decisão de engenharia

Not duplicating the rules engine, on purpose Não duplicar o motor de regras, de propósito

The compliance history job runs daily and needs to evaluate every regulatory rule against that day's position — the same evaluation the internal dashboard already does on demand. The obvious shortcut is to re-implement that evaluation inside the DAG so it doesn't depend on another app being up. The code does the opposite: it calls the dashboard's own HTTP endpoint and records the answer. The reasoning is written directly into the code — a second implementation of the same rule language would drift from the first the first time either one changed, and the two disagreeing quietly is a worse failure than a network call costing a few dozen milliseconds. Correctness was judged more valuable than decoupling.

O job de histórico de enquadramento roda diariamente e precisa avaliar toda regra regulatória contra a posição daquele dia — a mesma avaliação que o dashboard interno já faz sob demanda. O atalho óbvio seria reimplementar essa avaliação dentro da DAG para não depender de outro app estar de pé. O código faz o oposto: chama o próprio endpoint HTTP do dashboard e registra a resposta. O raciocínio está escrito direto no código — uma segunda implementação da mesma linguagem de regras divergiria da primeira na primeira vez que qualquer uma das duas mudasse, e as duas discordando silenciosamente é uma falha pior do que uma chamada de rede custando algumas dezenas de milissegundos. Correção foi julgada mais valiosa que desacoplamento.

Stack

Stack

Rule languageLinguagem de regrashand-written parserparser próprio
ChecksChecagenspandas
HistoryHistóricoappend-only loglog append-only
OrchestrationOrquestraçãoApache Airflow