Files
Rafael MelgaçoandClaude Fable 5 b1fc966033 feat(gov-loop): instala loop de governança de atendimento — plano G1-G6 + máquina maker/verifier
Backlog: 27 features em 6 fases (provas/invariantes → RBAC → atribuição →
escopo → roteador/fila/painel → contrato p/ agentes externos), derivado de 7
eixos de feedbacks reais do sistema-modelo (abstraídos, zero PII) + recon do
código (baseline.sql, specs 04/05, MCP tools).

Máquina portada do vendaval-loop: LOOP.md (maker≠checker + hash-check),
checkpoint humano por fase (.approved), gates mecânicos em loop/hooks/
(features.json imutável fora de passes/verification; tripla de migration
migrations+baseline+MANIFEST com NNNN validado contra todas as branches;
tests/invariants/** congelado; push só com DESKCOMM_GOV_PHASE_MERGE=1),
update-feature.ts real, guard PreToolUse com merge aditivo (Lina preservado).

Checkpoint G6 aprovado → dono cria loop/checkpoints/FG-CRM.approved no
Vendaval e destrava a fase FG de lá.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 18:16:57 -03:00

30 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# setup-hooks.sh — arma os hooks determinísticos do gov-loop (uma vez por checkout).
set -euo pipefail
cd "$(git rev-parse --show-toplevel)"
git config core.hooksPath loop/hooks
chmod +x loop/hooks/*
echo "ok: core.hooksPath=loop/hooks (pre-commit: features + migration-triple + freeze-invariants; pre-push: gate de fase)"
missing=0
if ! command -v jq >/dev/null 2>&1; then
echo "FALTA jq — os hooks de pre-commit e o guard PreToolUse dependem dele. Instale: brew install jq" >&2
missing=1
fi
if ! command -v node >/dev/null 2>&1; then
echo "FALTA node — loop/update-feature.ts e loop/setup-claude-guard.mjs dependem dele. Instale Node >= 22.18 (nvm install 22)" >&2
missing=1
else
major=$(node --version | sed -E 's/^v([0-9]+).*/\1/')
if [ "$major" -lt 22 ]; then
echo "AVISO: node $(node --version) < 22.18 — 'node loop/update-feature.ts' exige type-stripping (Node >= 22.18, ou rode com --experimental-strip-types em 22.6+)." >&2
fi
fi
if ! command -v docker >/dev/null 2>&1; then
echo "AVISO: docker não encontrado — 'pnpm test:db' e a suíte tests/invariants (Postgres descartável, G1-02/03) precisam dele." >&2
fi
exit $missing