fix(examples): mesma correcao de log nos tres demos que ainda usam :latest (core#135, preventivo) - #137
Merged
Conversation
…test Preventive, not corrective. These three jobs are green today, and the reason is contingency rather than structure: they pull ghcr.io/codespar/codespar:latest, built 2026-05-31, which runs as root and predates the change that made the runtime require a writable state directory. The four jobs pinned to :main (built 2026-08-22, runs as `node` uid 1000) went red on 03/09 for exactly that reason. They carried the identical `docker run -d --rm`, so the day anyone moves them to the current image they fail the same way AND with the same missing diagnostic, and whoever picks it up rediscovers core#135 from scratch. Same change already verified on the other four in #136: no --rm, explicit removal in cleanup_docker, a defensive rm before docker run, and a timeout path that prints docker inspect plus the tail of $RUNTIME_LOG. The docker lines are now byte-identical across all seven validate.sh. Refs core#135. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Member
Author
Controle verificado: o caminho feliz continua felizO CI rodou. Os tres jobs que este PR toca continuam verdes, e verdes pelo motivo certo — o container sobe e responde: Era esse o controle que faltava. O #136 precisava provar que a falha passa a se explicar; este precisa provar que a mudanca nao quebra o que passava. Se o Os quatro vermelhos do rollup sao os mesmos pre-existentes da core#135, intocados por este PR. |
fabianocruz
added a commit
that referenced
this pull request
Sep 10, 2026
…re#135) Os quatro jobs validate-example pinados em ghcr.io/codespar/codespar:main estão vermelhos no main desde 03/09 (core#135), com a mesma assinatura no run do main em 15dec02 e no run deste PR: o runtime roda como `node` (uid 1000), o checkout no runner pertence ao uid 1001 com modo 755, e o `mkdir /example/.codespar` morre em EACCES antes do /health responder. CODESPAR_STATE_DIR não redireciona (core#135, item 3). Conserto: o validate.sh cria `$SKELETON_DIR/.codespar` com modo 0777 antes do `docker run`, nos sete scripts que fazem o mesmo bind mount (os três em :latest rodam como root e não precisam hoje; ganham a mesma linha pelo motivo do #137). O diretório já é gitignored. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FV48HsCVN4Q53Yt3GwrDGG
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.
Continuacao do #136, que aplicou isto nos quatro
validate.shdos jobs vermelhos. Aqui vao os tres restantes:pix-nfse-skeleton,nfse-from-natural-languageewhatsapp-installment-negotiation.Por que mexer no que esta passando
Estes tres jobs estao verdes por contingencia, nao por estrutura. Eles carregavam exatamente o mesmo
docker run -d --rmdos quatro que quebraram. A unica diferenca e qual imagem puxam, e isso e configuracao, nao desenho:ghcr.io/codespar/codespar:mainnode(uid 1000)ghcr.io/codespar/codespar:latest(default)O
:latestpassa porque e de maio, roda como root e e anterior a mudanca que fez o runtime exigir um diretorio de estado onde possa escrever. Ele nao passa porque esta certo; passa porque esta velho.No dia em que alguem mover estes tres para a imagem atual — e mover para a imagem atual e o comportamento desejado, nao um acidente — eles falham igual e sem diagnostico nenhum, e a pessoa que pegar redescobre a core#135 do zero. Custa a mesma mudanca que ja foi validada quatro vezes.
Este PR e preventivo. Nao ha job vermelho aqui para consertar.
O que mudou
Identico ao #136, ja verificado em CI real:
docker run -d --rmviradocker run -d. O container que morre no startup para de levar o proprio log junto.cleanup_dockerremove o container explicitamente, ja que o--rmsaiu.docker rm -fdefensivo antes dodocker run, contra orfao de execucao morta com SIGKILL (o nome usa$$).docker logs, imprimedocker inspect(status, exit code, OOM) e otail -n 20do$RUNTIME_LOG.docker run: imprime o arquivo em vez de pedir para alguem abrir um arquivo num runner efemero.O
pix-nfse-skeletonnao usa aimock, entao ocleanup_dockerdele nao temstop_aimock; fora isso a mudanca e a mesma. Depois deste PR as linhas dedockersao byte-identicas nos setevalidate.sh(mesmo hash do bloco).Verificacao
bash -nlimpo nos tres. Nao da para rodar ovalidate.shinteiro localmente: macOS traz bash 3.2, que sobset -uengole o…multibyte depois de$AIMOCK_PORT; CI roda ubuntu com bash 5.O controle deste PR e o oposto do controle do #136. La eu precisava que a falha passasse a se explicar. Aqui eu preciso que o caminho feliz continue feliz: os tres jobs tem que permanecer verdes. Se o
docker runtivesse quebrado, ficariam vermelhos; se ocleanup_dockertivesse quebrado, o container vazaria. Comento com o resultado do CI.Refs core#135. Itens 2 e 3 da issue seguem abertos e sem dono.