mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
O `git merge` deu UM conflito (`AGENTS.md`) e escondeu três colisões que o texto não denuncia: enquanto este PR estava aberto, a `main` mergeou o #357 e passou a CALCULAR o número a partir de fragmentos em `.changes/`. Eu tinha construído a mesma coisa por outro caminho. Convergência independente é prova de que o problema era real; escolher os dois seria ter dois sistemas. FICA O DA MAIN, e não por antiguidade: ele resolve o caso que o meu não resolvia. O meu derivava o nível do DIFF, então duas sessões paralelas liam a mesma lista de tags e chegavam ao mesmo número — que é exatamente a colisão descrita em `docs/doctrine/versionamento.md`. O deles declara o efeito por PR e soma no corte; sessões paralelas não se encontram. Além disso ele já é lei (DoD 17 do CLAUDE.md) e tem o corte automatizado, que o meu não tinha. Saem: `lib/release/nivel-da-versao.ts` + teste, `scripts/nivel-da-versao.ts`, o script `release:nivel`, os dois passos que eu tinha posto no `verify`, o invariante 6-b que escrevi em `packaging.md`, o item 5 do CLAUDE.md e a seção do CONTRIBUTING. `AGENTS.md` fica inteiro na versão da main — os dois lados acharam sozinhos a mesma afirmação podre ("Versão do produto: 1.0.0", seis releases atrasada) e a trocaram por comando; a deles cobre a pegadinha do `ugrep` e diz que o `package.json` não é a fonte. O ESTRAGO QUE O MERGE LIMPO ESCONDIA. Este PR digitou `## [1.7.0]` no CHANGELOG à mão. Medido depois do merge: `pnpm release:conferir` respondia `1.7.0 + minor = 1.8.0` — a ferramenta lia a minha seção como versão JÁ lançada e ia cortar 1.8.0, queimando um número. A seção virou 13 fragmentos em `.changes/` e o cálculo voltou a `1.6.0 + minor = 1.7.0`, agora com 15 fragmentos somados aos 2 que já esperavam. O IMPACTO DE CADA FRAGMENTO FOI MEDIDO, não estimado. Dois candidatos a `exige_acao` (que faria disto uma major) foram investigados e recusados com evidência: - **RBAC das 4 tabelas de RAG.** Parecia tirar acesso de `viewer`/`agent`. Não tira: `lib/navigation/registry.ts` já trazia `minRole: "manager"` e a rota já chamava `requireRole("manager")` ANTES deste PR. O aperto fecha um desvio pelo PostgREST, não um caminho que alguém usava. → `nada_mudou`. - **Material no assistente errado.** O backfill da 0181 preserva o que cada agente lia (`update ai_agent_versions ... set knowledge_source_ids`). Mas o ponteiro por fonte só é reposto quando os trechos daquela fonte existem naquela versão — então material cadastrado para assistente não-padrão NÃO se cura sozinho. Nada que funcionava parou (ele nunca funcionou), então não é `exige_acao`; mas o fragmento passou a dizer isso com todas as letras, em vez do "a atualização preserva o que já valia" que eu tinha escrito. De quebra, o validador deles reprovou um fragmento meu por `**` partido no meio da linha pelo meu quebrador de 92 colunas — defeito real, que chegaria à tela do dono da VPS com os asteriscos literais. Reescrito à mão. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016wifzKekX5wLvvn8fiNe5h