mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
O sinal do outro lado (GITHEAD_* e tambem um MERGE_HEAD escrito a mao) e forjavel por quem roda o commit. Com so "indice == outro lado", um commit comum voltava plan/features.json a versao de um ancestral da main e apagava features com exit 0 (medido nas duas rotas; a do MERGE_HEAD ja existia na main). O validate-features ganha as condicoes 6 e 3 do freeze-invariants: indice == origin/main:plan e HEAD:plan == merge-base:plan. - casos negativos (d) no vitest para as duas rotas forjadas; sabotagem (hook do PR sem as condicoes) deixa os dois vermelhos - M4 no teste de shell: commit comum com GITHEAD_<ponta> que edita o invariante a mao segue recusado - merge-auto-commit-passa-pelos-guards entra no pnpm test:shell (nao rodava no CI) - fragmento: a guarda citada era a do plano, nao a de migration Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>