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.
[historical-defect][historical-fix]

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.

  1. [historical-defect]Registro privado sanitizado do defeito histórico
  2. [historical-fix]Registro privado sanitizado da correção
  3. [historical-regression]Resultado sanitizado da regressão histórica
  4. [current-direct-flow]Helper atual anonimizado do fluxo direto
  5. [current-catalog-contract]Contrato atual anonimizado do catálogo
  6. [current-regression]Execução atual da regressão anonimizada