Repository navigation
fix(infra): S3 de dev/teste passa ao fork Silo — minio/minio sumiu do Docker Hub - #1028
Merged
Merged
Conversation
Os 20 comandos de hook do `.claude/settings.json` eram `${CLAUDE_PROJECT_DIR}/...` sem
aspas: num clone em "Área de trabalho" o `/bin/sh` partia o caminho no espaço e todo hook
falhava como "non-blocking" — Prettier pós-edição, bloqueios de Bash e o gate do Stop
deixavam de rodar em silêncio. Agora `"\"${CLAUDE_PROJECT_DIR}\"/..."`, a forma da doc.
Com os hooks de volta, apareceram mais três defeitos da mesma família:
- `pre-commit-typecheck.sh` guardava `pnpm --dir=${CORE_API_DIR}` numa string e a expandia
sem aspas: os quatro gates do pre-commit morriam com `ENOENT ... lstat '/home/.../Área'`.
Agora a chamada é direta, com `--dir` entre aspas.
- `stop-quality-gate.sh` reportava `pnpm: comando não encontrado` como QUATRO vermelhos.
Shell de hook não carrega o nvm; ausência do pnpm agora é diagnóstico próprio ("gate
não rodou"), que continua bloqueando, mas com a causa verdadeira.
- O fixture do `gate-blocker` montava `typecheck: <caminho do tsc> --noEmit` sem aspas no
package.json temporário; o cenário GREEN falhava por ambiente, não por gate.
Assisted-by: Claude-Code:claude-opus-5-5
… Docker Hub Fecha #1026. A MinIO apagou `minio/minio` e `minio/mc` do Docker Hub em 2026-09-11 e o espelho quay.io/minio exige login: nenhuma tag nem digest do oficial baixa sem conta. O `integration` falhava todo dia na main desde 2026-09-12 (storage, logo, photo → gate). O compose passa a `pgsty/silo` + `pgsty/mc`, pinados por digest multi-arch. Fork mantido, AGPLv3 como o MinIO, e drop-in: envs `MINIO_*`, secrets `*_FILE`, rotas `/minio/*`, healthcheck e bootstrap inalterados. Escolhido entre seis hipóteses testadas em container isolado contra as quatro suítes reais do CI (registro na #1026); ADR-0071 supersede parcialmente o ADR-0019 só na fonte da imagem. Assisted-by: Claude-Code:claude-opus-5-5
- compose.yaml volta ao MESMO número de linhas: os comentários novos deslocavam tudo abaixo do serviço `minio` e deixavam erradas as citações `compose.yaml:N` em integration.yml, ADR-0014.yaml, ADR-0064 e spec 033. O detalhe da troca vive no ADR-0071. - Inventário do ADR-0019: C5 passa a `contradicted` na letra (a imagem não é mais a oficial minio/minio, por decisão do ADR-0071) e os `verify` voltam a achar as linhas; índice de ADRs anota "imagem superseded por 0071" na linha da 0019. - Doc de paridade local: o comando de criar bucket usava `minio/mc`, que sumiu; passa ao `pgsty/mc` pinado, com `--entrypoint /bin/sh` (o entrypoint da imagem é `mc`). - gate-blocker: fixture com espaço no caminho — prova inversa medida: sem as aspas do `--dir` o cenário GREEN quebra. Antes, a regressão voltaria sem teste vermelho. - Gate do Stop sem pnpm: mensagem neutra quanto ao gerenciador de versão e manda escalar ao humano em vez de alterar a home; PATH só no log. Título "fallback npx" do pre-commit corrigido (não há fallback: falha fechado). - Nome do teste de infra e exemplo do docker-compose-expert deixam de citar minio/mc e de usar placeholder inválido. Fora do escopo, registrado: #1027 (gate do Stop pula com .ts de nome com espaço). Assisted-by: Claude-Code:claude-opus-5-5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fecha #1026.
Problema
A MinIO apagou
minio/minioeminio/mcdo Docker Hub em 2026-09-11, e o espelhoquay.io/minioexige login. Nenhuma tag nem digest do MinIO oficial baixa sem conta. Por isso o workflowintegrationfalha todo dia namaindesde 2026-09-12, nos jobsstorage,logo,photoe, por consequência,gate. Três suítes de storage estão sem rodar em CI desde então.Mudança
compose.yaml: o serviçominiopassa apgsty/siloe ominio-bootstrappassa apgsty/mc, os dois pinados por digest do índice multi-arch (amd64 e arm64).MINIO_*, secrets*_FILE, healthcheck,commande bootstrap não mudam.compose.yaml:Nem outros arquivos continuam válidas.docker-compose-expertpassam a refletir a troca.Por que o Silo
Seis hipóteses foram testadas em containers isolados contra as quatro suítes reais do CI e contra o que o compose exige além da API S3. O registro completo está na #1026.
O Silo é o único candidato que é, ao mesmo tempo:
image:de cada serviço;Por que as outras foram descartadas:
Como foi verificado
pnpm run test:integration:{storage,photo,logo}) com estecompose.yaml: 13/13, 5/5 e 4/4.pgsty/mc: bucket criado, versionamento ativado e download anônimo liberado; healthcheck/minio/health/readyresponde 200.program-logos) executado contra o Silo.typecheck,format:check,lintetestverdes, com 11844 testes e 0 falhas./code-review highcom 9 achados tratados e 1 registrado como [shared] gate do Stop pula sem rodar quando o .ts alterado tem espaço no nome #1027;/security-reviewsem achados.no-new-privileges. O Docker de quem testou é o snap da Canonical, que não executa nenhum container com essa flag (nemalpine true). Os testes locais usaram um override fora do repositório que zera só essa flag. Este CI é a prova, porque roda ocompose.yamlintacto.Riscos de supply-chain (ADR-0011 §5), declarados
no-new-privilegesé mantido.Notas para o merge
fix(harness)do feat(partners): fornecedor pessoa física (CPF) — SupplierDocument, PF sem Razão Social/Nome Fantasia #1025 (cherry-pick), porque sem ele o pre-commit quebra em clone com espaço no caminho. Quando os dois PRs entrarem, o git reconcilia o patch idêntico.handbook/architecture/adr/README.md(0070 e 0071). O conflito é trivial: basta manter as duas linhas.