Repository navigation
Description
Contexto
A CI mínima provisória (#38) já apagou os workflows herdados de publicação e release, reescreveu o dependabot.yml, religou o Actions (actions selecionadas e fixadas por SHA) e roda lint, unit e e2e do backend. #19 trocou os nomes dos workspaces nela. Esta issue completa a CI com os nomes finais. Release e publicação no Docker Hub ficam para #31.
Estado da segurança do repositório (2026-10-10): os alertas do Dependabot e o relato privado de vulnerabilidades estão ligados. As atualizações de segurança automáticas (PRs do Dependabot para alertas) estão desligadas (automated-security-fixes: enabled=false).
PRs do Dependabot abertos em 2026-10-10:
| PR | Conteúdo | Observação |
|---|---|---|
| #1 | node:24-alpine em docker/Dockerfile (d1b3b4d → ebfe2f9) |
só digest |
| #2 | gcr.io/distroless/nodejs24-debian13 em docker/Dockerfile (bb6b03d → 9eeb7f5) |
só digest |
| #3 | grupo vitest (dev) | minor/patch |
| #5 | grupo better-auth, 5 pacotes | minor/patch, mas minors do Better Auth podem exigir migrations de schema |
| #6 | grupo patch-and-minor, 24 pacotes | contém um major (@types/supertest 6.0.3 → 7.2.1) e atualiza o modelparams (0.0.57 → 0.0.69), pacote da Manifest que vira a única fonte do catálogo de parâmetros depois de #17 |
| #7 | eventsource-parser 3.1.0 → 4.1.1 |
major; afeta o streaming no hot path (routing/proxy/sse-parser.ts, stream-protocol.ts, stream-writer.ts) |
| #8 | @nestjs/cli 11.0.24 → 12.0.8 |
major; CLI do Nest 12 com o runtime ainda em Nest 11 |
Política: nenhum PR do Dependabot é mergeado antes de a CI existir (#38). Majors são fechados com um ponteiro para o v0.2. O merge é sempre do usuário.
Escopo
-
ci.ymlcompleto, com os nomesthinker-*, Node 24, cache npm,concurrencycomcancel-in-progress,permissions: contents: reade actions fixadas por SHA. Jobs:- lint (eslint +
design:registry:check); - backend: unit + e2e com o serviço
postgres:16, a mesma major do compose (o PG 18 entra no v0.2); - frontend: vitest + build;
- shared;
- cli;
- scripts (
node --test scripts/*.test.js); - changeset-check com os nomes novos.
- lint (eslint +
-
docker.ymlnovo, só de validação de build em PR: matrizlinux/amd64+linux/arm64(runnerubuntu-24.04-armnativo para arm64), sem push e sem secrets. Os jobs de push, merge e assinatura entram em Release, Changesets 0.1.0 e publicação no Docker Hub #31 comtmsoftbrasil/thinker. -
docker-smoke.ymlcompleto, partindo do ajuste de CI mínima provisória #38 (imagem localthinker:ci, sem o jobupgrade-smoke): compose com segredos gerados no job, health, setup do admin, chat via.github/scripts/mock-openai-provider.pyecontracts/gatewaycontra o container, com os nomes novos de workspace. O override de compose de CI mínima provisória #38 sai em Docker, Compose e instalador do Thinker #26, quando o compose passar a usartmsoftbrasil/thinker. O teste de upgrade volta no v0.2, contra a primeiratmsoftbrasil/thinkere junto com o upgrade do PG 18. -
codeql.ymledependency-review.yml: revisar os paths. - Se algum job usar uma action de terceiros nova, propor ao usuário a inclusão dela em
patterns_allowed(gh api -X PUT repos/patrickbrandao/thinker/actions/permissions/selected-actions), fixada por SHA. - Triagem dos PRs do Dependabot, com a decisão comentada em cada PR:
- chore(deps): Bump node from
d1b3b4dtoebfe2f9in /docker #1, chore(deps): Bump distroless/nodejs24-debian13 frombb6b03dto9eeb7f5in /docker #2 (digest das bases): pedir@dependabot rebase. Com a CI e o build multi-arch verdes, recomendar o merge antes de Docker, Compose e instalador do Thinker #26, para evitar conflito no Dockerfile. - chore(deps): Bump the vitest group across 1 directory with 2 updates #3 (vitest): recomendar fechar. Conflita com o lockfile regenerado em Renomear workspaces npm e o pacote de versão #19; o Dependabot reabre o grupo com a configuração nova.
- chore(deps): bump the better-auth group across 1 directory with 5 updates #5 (better-auth): recomendar fechar pelo mesmo motivo. Quando voltar, só entra com e2e +
qa-dockerverdes e com a verificação, nas notas de versão do Better Auth, de mudança de schema; se houver, uma migration TypeORM nova entra no mesmo PR. - chore(deps): Bump the patch-and-minor group with 24 updates #6 (patch-and-minor): recomendar fechar. O
@types/supertest7 é major e fica para o v0.2 (a configuração de CI mínima provisória #38 já ignora majors). Omodelparams, quando voltar, tem revisão do agenteproviders, porque muda os dados de parâmetros por modelo. - chore(deps): Bump eventsource-parser from 3.1.0 to 4.1.1 #7 (
eventsource-parser4): recomendar fechar, apontando para o v0.2. Ganha uma issue própria lá, com e2e de streaming,contracts/gatewaye a matriz de harnesses doqa-docker. - chore(deps-dev): Bump @nestjs/cli from 11.0.24 to 12.0.8 #8 (
@nestjs/cli12): recomendar fechar, apontando para o v0.2. Vai junto com o upgrade do NestJS 12.
- chore(deps): Bump node from
- Propor ao usuário:
- os checks obrigatórios da proteção de
main; - ligar as atualizações de segurança automáticas do Dependabot (
gh api -X PUT repos/patrickbrandao/thinker/automated-security-fixes), agora que a CI as valida.
- os checks obrigatórios da proteção de
Docker Hub: os secrets DOCKERHUB_USERNAME/DOCKERHUB_TOKEN só devem ser cadastrados depois que o docker.yml herdado tiver saído (#38). O docker.yml desta issue não usa secrets; quem os usa é o de #31.
Fora de escopo
- Remoção dos workflows herdados, reescrita do
dependabot.ymle reativação do Actions (CI mínima provisória #38, já feitos). - Release, Changesets 0.1.0, push para o Docker Hub e guard de nomes legados (Release, Changesets 0.1.0 e publicação no Docker Hub #31).
- Upgrades de major (v0.2).
Critérios de aceite
- Nenhum workflow referencia
manifestdotbuild,mnfst/,manifest-shared,manifest-backend,manifest-frontend,NPM_TOKEN,CODECOV_TOKEN,APP_ID,WEBSITE_DEPLOY_HOOKouPHOENIX_. - Todos os workflows passam no próprio PR.
- chore(deps): Bump node from
d1b3b4dtoebfe2f9in /docker #1, chore(deps): Bump distroless/nodejs24-debian13 frombb6b03dto9eeb7f5in /docker #2, chore(deps): Bump the vitest group across 1 directory with 2 updates #3, chore(deps): bump the better-auth group across 1 directory with 5 updates #5, chore(deps): Bump the patch-and-minor group with 24 updates #6, chore(deps): Bump eventsource-parser from 3.1.0 to 4.1.1 #7 e chore(deps-dev): Bump @nestjs/cli from 11.0.24 to 12.0.8 #8 triados, com a recomendação registrada em cada um (e os que o Dependabot abrir até o merge).
Dependências
- CI mínima provisória #38: CI mínima, Actions religado e workflows herdados removidos.
- Renomear workspaces npm e o pacote de versão #19: os workflows já nascem com os nomes finais dos workspaces.
Agente responsável
devops
Activity
[-]CI de PR, Dependabot e reativação do GitHub Actions[/-][+]CI completa com os nomes novos[/+]patrickbrandao commentedon Oct 10, 2026
Itens vindos da revisão do PR #44 (#44 (comment)), registrados aqui conforme a ADR 0002:
ci.ymlda CI mínima provisória #38 não roda typecheck (tsc --noEmit) nem build (nest build,vite build, build/drift da CLI). A CI completa com os nomes novos #20 adiciona esses jobs. Até lá, os PRs Remover a camada SaaS do dashboard #12 a Renomear workspaces npm e o pacote de versão #19 continuam reportando no corpo do PR o typecheck e o build locais dos pacotes afetados.ci.ymlcancela runs pendentes de push namain. Agrupar pushes porgithub.shapara que todo commit damainseja testado.main. Os jobs filtrados por path (smoke, CodeQL) não podem ser obrigatórios.dependabot.ymla nota de que os majors douuidsão só ESM.patrickbrandao commentedon Oct 11, 2026
A tabela "PRs do Dependabot abertos em 2026-10-10" desta issue está com os números desatualizados. Os PRs abertos do Dependabot hoje são estes:
postgres:16-alpineem/docker, só digestnode:24-alpineedistroless/nodejs24-debian13em/docker, só digest (substitui #1 e #2)actions/setup-node7.0.0 → 7.1.0Fechados: #1, #2, #3, #6, #7, #8 e #50. A triagem de #47–#50 está em #54. Os itens de escopo e os critérios de aceite que citam #1–#8 precisam ser atualizados para esses números, e a correção dos alertas de runtime está no PR #55 (PR A de #54).
patrickbrandao commentedon Oct 11, 2026
Proposta vinda de #53 / #56: rodar testes de backend também fora de UTC
Os runners do GitHub rodam em UTC. Nesse fuso, a formatação UTC e a local dão a mesma string, e por isso a CI não pegou o bug de #53: os limites ignoravam o uso registrado no segundo corrente, e o seed do smoke test estava no relógio errado. Fora de UTC, ST-07 e ST-08 falhavam. A correção está no #56.
Como mexer em
.github/workflows/**é risco alto (ADR 0002), a mudança não foi feita no #56. Fica registrada aqui para entrar na CI completa desta issue.Checklist
Em
.github/workflows/ci.yml, jobbackend-e2e, adicionar uma matriz de fuso e exportarTZ:Deixe o container do Postgres em UTC. O bug de E2E de limites (ST-07/ST-08) falham fora de UTC #53 vive no lado do Node, que grava e lê
timestamp without time zoneno relógio local.No job
unit, rodar o backend também comTZ=America/Sao_Paulo. A suíte já cobre vários fusos emperiod.util.tz.spec.ts(processos filhos comTZreal), mas outras specs assumem o fuso do host. Opção barata, um passo extra só para o backend:Se a regra de proteção de
mainlista os checks pelo nome, atualizar os nomes exigidos para os dois jobs da matriz (Backend e2e (PostgreSQL 16, TZ=UTC)eBackend e2e (PostgreSQL 16, TZ=America/Sao_Paulo)).Validação local no #56: a suíte e2e completa passa com
TZ=UTCe comTZ=America/Sao_Paulo(60 suítes, 514 testes), e a suíte unit passa comTZ=UTC,TZ=America/Sao_PauloeTZ=Asia/Kolkata.patrickbrandao commentedon Oct 11, 2026
Achado do PR #57:
packages/frontend/vite.config.tsainda carrega@codecov/vite-plugin, que envia estatísticas do bundle quandoCODECOV_TOKENestá definido. Removê-lo junto com o Codecov que saiu na #38.patrickbrandao commentedon Oct 11, 2026
Achado da revisão do PR #60:
.github/workflows/docker-smoke.yml:204-210ainda citaMANIFEST_PUBLIC_STATS, que não existe mais depois da #15. O passo passa assim mesmo. Corrigir junto com o rebrand da CI nesta issue.patrickbrandao commentedon Oct 11, 2026
Da revisão do PR #69:
packages/backend/test/epackages/backend/scripts/não passam por lint nem portsc. Incluir na CI completa: lint com o projeto de teste etsc -pde um tsconfig que cubratest/.patrickbrandao commentedon Oct 11, 2026
Resto do #60 (#15) para a CI completa: em
.github/workflows/docker-smoke.yml:204-210, o nome e a mensagem do passo ainda citamMANIFEST_PUBLIC_STATS, que deixou de existir.ci(codeql): keep the existing analyze job and scan actions in its own…
ci: address review of #112 (docs security wording, UID check, lint sc…
ci: complete the CI with typecheck, build, image validation and TZ ma…
fix(deps): refresh n8n node lockfile within ranges for security alerts (
chore(deps): Vite 6 -> 7 in the dashboard (#85) (#227)