Observatório de sistemas
O limite era dez ou doze? A pergunta estava errada
Doze itens apareceram na regressão, mas doze nunca foi o novo limite. O defeito estava em um helper compartilhado que misturava seleção de itens com a política de quantidade de um consumidor específico.
A pergunta que os números escondiam
No estado histórico auditado, um helper compartilhado atendia a dois consumidores. Um deles era um fluxo direto; o outro possuía uma interface com dez posições. Mesmo assim, o helper aplicava o teto de dez itens aos dois caminhos.[historical-defect]
Depois da correção, uma regressão entregou doze itens no fluxo direto e dez no consumidor limitado. A leitura apressada seria trocar uma constante por outra e concluir que o limite correto era doze. O teste mostrava algo diferente: havia doze itens elegíveis no fixture, e todos chegaram ao fluxo que não deveria ter aquele teto.[historical-fix][historical-regression]
O acoplamento era o defeito
A função reutilizada tinha duas responsabilidades misturadas. Ela decidia quais itens eram elegíveis e, ao mesmo tempo, impunha a quantidade que cabia na apresentação de um consumidor específico. Ao reutilizar essa função, o fluxo direto herdava uma política que não fazia parte de seu contrato.[historical-defect][historical-fix]
- O fluxo direto precisava receber os itens elegíveis sem o teto pertencente ao outro consumidor.
- O consumidor com dez posições precisava continuar respeitando seu próprio contrato de apresentação.
- A seleção compartilhada não precisava conhecer a capacidade visual desse consumidor.
A correção separou seleção de apresentação
A correção histórica retirou o corte do fluxo direto e preservou as dez posições onde esse contrato realmente existia. Assim, o helper deixou de transmitir ao primeiro consumidor a restrição de quantidade do segundo.[historical-fix]
A regressão usou doze itens elegíveis. O resultado esperado foi justamente assimétrico: doze chegaram ao fluxo direto, enquanto dez preencheram o consumidor limitado. O valor observado provava a remoção do teto indevido naquele cenário; não criava um novo teto.[historical-regression]
A implementação atual confirma a separação
Na versão atual auditada, o helper do fluxo direto apenas remove itens sem mídia e devolve todos os elegíveis. Esse caminho não contém slice nem teto de quantidade.[current-direct-flow]
O consumidor de catálogo também evoluiu. Seu contrato atual materializa até vinte posições e aplica esse máximo explicitamente no próprio consumidor, separado do fluxo direto. A implementação atual, portanto, não deve ser descrita como se ainda mantivesse o contrato histórico de dez posições.[current-catalog-contract]
A regressão atual passou com vinte itens observados no fluxo direto e vinte posições preenchidas no catálogo de teste. Esse resultado verifica o comportamento atual examinado, sem transformar vinte em uma regra para o fluxo direto.[current-regression][current-direct-flow][current-catalog-contract]
O que este caso sustenta
Neste caso, perguntar se o limite era dez ou doze desviava a atenção da causa. Dez era o contrato histórico de um consumidor; doze era apenas a oferta elegível do teste. O problema real era a política de apresentação ter sido colocada dentro de uma seleção compartilhada.[historical-defect][historical-regression][historical-fix]
A evidência também é específica: ela demonstra esse acoplamento e sua correção, não uma regra universal segundo a qual todo helper compartilhado precisa ser dividido. O ponto verificável é mais estreito: uma restrição pertencente a um consumidor não deveria limitar outro caminho apenas porque ambos reutilizam a mesma função.[historical-defect][historical-fix][current-direct-flow][current-catalog-contract]
Limitações
Onde esta conclusão termina.
- O caso foi anonimizado; cliente, fornecedores, URLs, IDs, preços, categorias, payloads e detalhes de produção não foram incluídos.
- A evidência histórica permanece em registro privado e não possui URL pública.
- Doze era a quantidade elegível no fixture histórico, não um limite configurado ou uma meta de produto.
- A implementação atual evoluiu para vinte posições no consumidor e não deve ser descrita como se ainda tivesse o contrato histórico de dez.
- Este caso mostra um acoplamento específico e não estabelece que todo helper compartilhado deva ser dividido.
Proveniência
Fontes citadas.
- [historical-defect]Registro privado sanitizado do defeito histórico
- [historical-fix]Registro privado sanitizado da correção
- [historical-regression]Resultado sanitizado da regressão histórica
- [current-direct-flow]Helper atual anonimizado do fluxo direto
- [current-catalog-contract]Contrato atual anonimizado do catálogo
- [current-regression]Execução atual da regressão anonimizada