Skip to content

fix(kit): a chave de IA deixa de ser obrigatória — instala e cadastra depois pela tela - #731

Open
webtecnica wants to merge 1 commit into
melgarafael:mainfrom
webtecnica:fix/670-instala-sem-chave-de-ia
Open

fix(kit): a chave de IA deixa de ser obrigatória — instala e cadastra depois pela tela#731
webtecnica wants to merge 1 commit into
melgarafael:mainfrom
webtecnica:fix/670-instala-sem-chave-de-ia

Conversation

@webtecnica

Copy link
Copy Markdown

O que este PR faz

Uma instalação nova deixa de exigir chave de IA: o campo do provedor escolhido passa a ser opcional (Enter pula) e a tela final lembra o caminho de volta — IA › Credenciais, onde a chave fica cifrada no banco, sem mexer no .env. Quem digita uma chave continua com a validação na hora, chamada real incluída.

A #670 mediu a distância entre três lugares: docs/deploy-selfhost promete "deixe vazio e cadastre depois", lib/env.ts concorda (faltar todas as chaves é warn, não erro) — e o instalador morria na Fase 2/4 sem uma chave que passasse numa chamada real ao provedor. Não havia caminho para subir o produto sem antes abrir conta num provedor de IA. Este PR fecha a distância.

Closes #670

Como resolve

  • O campo do provedor escolhido vira opcional, o mesmo mecanismo que o campo extra da OpenAI já usava (CAMPO_OPENAI_EXTRA).
  • A tela final ganha pendencia_da_ia: só aparece quando nenhuma credencial de ambiente existe (nem o AI Gateway, que tem precedência na resolução do chat), nomeia o provedor escolhido e o caminho de cadastro. É a tela que a pessoa lê inteira — não o meio de um log de dez minutos.
  • Quem digita uma chave não perde nada: o validador (prefixo + chamada real) continua rodando para valores preenchidos.
  • .env.hostgator.example, hostgator-setup-kit/README.md + CLAUDE.md e a skill deskcomm-instalar (+ referências) atualizados; espelho .claude/skills sincronizado com pnpm skills:sync.

📌 Contribuindo de um fork? Você está no lugar certo.

(Li o aviso do template — nada aqui me fez querer fechar o PR :)


Checklist (Definition of Done)

  • pnpm typecheck zerado
  • pnpm lint zerado (0 erros; os warnings são os pré-existentes do repo)
  • Testes relevantes existem e passam — pnpm test:shell roda o cenário novo, que executa o install.sh --yes de verdade numa VPS dublê
  • RLS — não toca tabela tenant-aware
  • Audit log — sem mutação nova
  • Sem console.log novo
  • Schema — sem migration
  • Doc atualizada (contrato do instalador mudou de "obrigatório" para "opcional")

O que medi (comandos e saídas)

bash hostgator-setup-kit/test-validators.sh → 250 ✓ / 0 ✗, com o cenário novo:

  • .env sem nenhuma chave de IA + --yes → chega a "Instalação concluída!", o .env sai inteiro, ANTHROPIC_API_KEY sai declarada e vazia, e a tela final traz "A IA ainda não atende" + "IA › Credenciais";
  • controle oposto: com a chave presente, o aviso não aparece — senão o lembrete viraria ruído em toda instalação;
  • sabotagem: removendo o |opcional do campo e rodando de novo → 1 vermelho de 249, e era o previsto ("✗ o instalador ainda morre sem chave de IA"). Previsão escrita antes de rodar; restaurei em seguida.

Gates (um por vez, systemd-run --scope -p MemoryMax=5G):

gate resultado
pnpm typecheck rc=0 (60s)
pnpm lint rc=0 (53s)
pnpm lint:channels rc=0
pnpm release:conferir rc=0 — fragmento válido (entra na 1.20.0)
pnpm test:unit rc=0 — 791 arquivos, 8369 passaram (1 expected fail)
pnpm test:shell rc=0 (60s)
pnpm build rc=0 (130s)

O que NÃO medi

  • Instalação real numa VPS (HostGator): o caminho foi medido no harness do test-validators.sh, com dublês de docker, crontab e curl. Não subi contêiner nenhum.
  • Prova em tela (Playwright): não mexi em UI; o texto novo é de terminal. Fica com o mantenedor, como o combinado do deskcomm-contribuir.
  • Chamada real a provedor de IA com chave vazia: o validador só roda quando há valor — comportamento inalterado.

… depois pela tela

`docs/deploy-selfhost` promete, na lista de campos do `.env`: "deixe vazio e
cadastre a chave depois em /app/ai/credentials — fica cifrada no banco". O
runtime concorda: em `lib/env.ts` as três chaves são
`z.string().optional().default("")`, e faltar todas gera apenas um `warn`, não
erro. O instalador, não — exigia uma chave que PASSASSE numa chamada real ao
provedor, e sem ela a instalação morria na Fase 2/4. Na prática, não havia
caminho para subir o produto sem antes abrir conta num provedor de IA, mesmo o
produto subindo perfeitamente sem ela (issue melgarafael#670).

O campo do provedor ESCOLHIDO passa a ser `opcional` — o mesmo mecanismo que o
`CAMPO_OPENAI_EXTRA` (áudio e base de conhecimento) já usava. Quem digita uma
chave continua com a validação na hora, chamada real incluída; o que mudou é
que pular deixou de ser erro.

E pular não pode terminar em silêncio: a tela final ganha `pendencia_da_ia`,
que nomeia o provedor escolhido e o caminho exato de cadastro (IA ›
Credenciais, cifrado no banco) — na tela que a pessoa lê inteira, não no meio
de um log de dez minutos. A pendência só aparece quando NENHUMA credencial de
ambiente existe (nem o AI Gateway, que tem precedência na resolução do chat):
quem já tem a chave não vê aviso nenhum.

═══ O TESTE ═══

`hostgator-setup-kit/test-validators.sh` ganha um cenário que roda o
`install.sh --yes` REAL (VPS dublê) com um `.env` sem NENHUMA chave de IA e
exige a tela final, o `.env` inteiro e o aviso com o caminho de volta. O
controle oposto, com a chave presente, exige que o aviso NÃO apareça — sem ele,
um `pendencia_da_ia` que imprimisse sempre passaria e viraria ruído em toda
instalação. Com o `opcional` removido do campo, o instalador morre em "Falta
ANTHROPIC_API_KEY (modo --yes exige .env preenchido)" e é a primeira asserção
do cenário que fica vermelha.

Ref: melgarafael#670
@vercel

vercel Bot commented Sep 12, 2026

Copy link
Copy Markdown

@webtecnica is attempting to deploy a commit to the rafael-maudibrasil's projects Team on Vercel.

A member of the Team first needs to authorize it.

@ecc-tools

ecc-tools Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / Security Evidence

Commit: bfa2e49f7d2fc3464cea39951f5c8b8cf22a7965

Security evidence gate passed (success)

No security-sensitive scanner-evidence gap detected.

Mode: enforce

Scanned 14 changed file(s). No missing scanner-evidence signal was detected.

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@ecc-tools

ecc-tools Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / PR Risk Taxonomy

Commit: bfa2e49f7d2fc3464cea39951f5c8b8cf22a7965

PR taxonomy review recommended (neutral)

Detected 4 PR taxonomy bucket(s): Harness Drift, Cost/Token Risk, Reference Set Validation, Agent Config Review.

Scanned 14 changed file(s).

Roadmap taxonomy buckets:

Harness Drift

Harness-facing changes can drift across Claude Code, Codex, OpenCode, and shared adapter surfaces.

Signals:

  • Harness config changes may ship without compatibility evidence
  • 8 harness-facing path(s) changed

Paths:

  • .agents/skills/deskcomm-instalar/SKILL.md
  • .agents/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md
  • .agents/skills/deskcomm-instalar/references/problemas-e-armadilhas.md
  • .agents/skills/deskcomm-instalar/references/scripts-do-kit.md
  • .claude/skills/deskcomm-instalar/SKILL.md
  • .claude/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md
  • .claude/skills/deskcomm-instalar/references/problemas-e-armadilhas.md
  • .claude/skills/deskcomm-instalar/references/scripts-do-kit.md

Cost/Token Risk

AI routing, usage, and token-budget changes should include budget or usage-limit evidence.

Signals:

  • Cost or token-risk changes may ship without budget evidence
  • 0 cost/token path(s) changed

Paths:

  • .agents/skills/deskcomm-instalar/SKILL.md
  • .agents/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md
  • .agents/skills/deskcomm-instalar/references/problemas-e-armadilhas.md

Reference Set Validation

AI, analyzer, skill, agent, command, and harness guidance changes should be compared against a maintained eval, golden trace, benchmark, or reference set.

Signals:

  • AI or harness analysis changes may ship without reference-set validation
  • 8 reference-sensitive path(s) changed

Paths:

  • .agents/skills/deskcomm-instalar/SKILL.md
  • .agents/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md
  • .agents/skills/deskcomm-instalar/references/problemas-e-armadilhas.md
  • .agents/skills/deskcomm-instalar/references/scripts-do-kit.md
  • .claude/skills/deskcomm-instalar/SKILL.md
  • .claude/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md
  • .claude/skills/deskcomm-instalar/references/problemas-e-armadilhas.md
  • .claude/skills/deskcomm-instalar/references/scripts-do-kit.md

Agent Config Review

Agent, command, skill, MCP, and local instruction changes should be reviewed as executable agent configuration.

Signals:

  • 8 agent-config path(s) changed

Paths:

  • .agents/skills/deskcomm-instalar/SKILL.md
  • .agents/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md
  • .agents/skills/deskcomm-instalar/references/problemas-e-armadilhas.md
  • .agents/skills/deskcomm-instalar/references/scripts-do-kit.md
  • .claude/skills/deskcomm-instalar/SKILL.md
  • .claude/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md
  • .claude/skills/deskcomm-instalar/references/problemas-e-armadilhas.md
  • .claude/skills/deskcomm-instalar/references/scripts-do-kit.md

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@ecc-tools

ecc-tools Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / Reference Set Readiness

Commit: bfa2e49f7d2fc3464cea39951f5c8b8cf22a7965

Reference set readiness gaps detected (neutral)

Reference evidence present for 1/7 areas (14%) across 14 changed file(s).

This check is based on files changed in this PR. Repository-level readiness is still reported by /ecc-tools analyze comments and generated manifests.

Area Status Evidence / Next Step
Deep analyzer corpus Missing Add analyzer fixture, golden, benchmark, or reference-set files that can catch analyzer regressions.
RAG/evaluator comparison Missing Add retrieval or evaluator reference-set comparison fixtures with expected ranking behavior.
PR salvage/review corpus Missing Add stale-PR, review-thread, reopen-flow, or salvage reference cases for queue cleanup automation.
Discussion triage corpus Missing Add public discussion triage fixtures, golden cases, or reference sets for informational, answered, and no-response classifications.
Harness compatibility Present .agents/skills/deskcomm-instalar/SKILL.md, .agents/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md, .agents/skills/deskcomm-instalar/references/problemas-e-armadilhas.md
Security evidence Missing Attach security evidence such as SBOMs, SARIF, audit reports, or AgentShield evidence packs.
CI failure-mode evidence Missing Add captured CI failure logs, dry-run fixtures, or troubleshooting docs for common workflow failure modes.

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@ecc-tools

ecc-tools Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / Hosted Promotion Readiness

Commit: bfa2e49f7d2fc3464cea39951f5c8b8cf22a7965

Hosted promotion readiness passed (success)

No hosted promotion evidence gaps detected across 14 changed file(s); 0 corpus scenarios had matching evidence.

This check compares PR file changes against the evaluator/RAG promotion corpus in src/analyzers/fixtures/evaluator-rag-corpus.ts.
Hosted output scoring inspected 0 completed cached hosted job results.

No evaluator corpus scenarios matched this PR.

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@github-actions

Copy link
Copy Markdown

Recebido, @webtecnica — obrigado por isto.

Duas coisas que vão parecer erro seu e não são:

  • O check Vercel vermelho ("Authorization required to deploy") é esperado em PR de fork. A
    main faz deploy de produção e a Vercel se recusa a construir código de fora, o que está
    certo. Ele não entra no gate de merge.
  • No primeiro PR de quem nunca contribuiu aqui, os workflows ficam parados esperando
    liberação
    — política do GitHub, não sua. Enquanto isso o PR parece não ter check nenhum
    (nem o gh pr checks mostra os que estão nesse estado). Quem tria libera; você não precisa
    fazer nada.

Um mantenedor vai revisar de verdade — rodando os gates e reproduzindo o comportamento, não só
lendo o diff — e responde aqui em até um dia útil, com a medição junto, nunca com um "acho
que".

Esta mensagem é automática e não diz nada sobre o seu PR: ela é sobre o processo. O que vem
depois é pessoa.

@ecc-tools

ecc-tools Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / PR Config Audit

Commit: bfa2e49f7d2fc3464cea39951f5c8b8cf22a7965

No changed-config issues detected (success)

Scanned 4 config file(s) present at this commit across 4 changed config path(s) and found no issues in the supported security rules.

Changed config files:

  • .agents/skills/deskcomm-instalar/SKILL.md
  • .agents/skills/deskcomm-instalar/references/o-que-a-instalacao-pede.md
  • .agents/skills/deskcomm-instalar/references/problemas-e-armadilhas.md
  • .agents/skills/deskcomm-instalar/references/scripts-do-kit.md

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@ecc-tools

ecc-tools Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / PR Harness Audit

Commit: bfa2e49f7d2fc3464cea39951f5c8b8cf22a7965

Harness warnings detected (neutral)

Scanned 4 changed config file(s) and found 1 harness issue(s).

  • [medium] ECC manifest missing (.agents/skills/deskcomm-instalar/SKILL.md)

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

install.sh exige chave de IA real e validada, contra o que docs/deploy-selfhost promete

1 participant