Skip to content

feat(sync): drift de plugin/_bundle impossível, não detectado — auto-sync no pre-commit #98

Description

@wesleysimplicio

Contexto

Hoje a paridade plugin/ + _bundle ≡ fonte é detectada pelo claims_audit.py (bundle-parity bidirecional desde o #70/PR #86) mas a sincronização é manual: editar uma skill exige lembrar de rodar scripts/sync_plugin.py, senão o check.py só acusa depois. É disciplina humana onde o repo prega mecanismo — a mesma classe de fricção que o próprio repo eliminou no gate da âncora ("enforced, not just described", PR #60).

Proposta

Mover o sync para o hook de pre-commit (git hook local + instrução no installer):

  1. Pre-commit detecta staged changes em qualquer caminho listado no mirror_manifest.py (a fonte única de verdade de LEAN_HOOKS/SCRIPTS/TESTS do LEAN_SCRIPTS/LEAN_TESTS duplicated between sync_plugin.py and claims_audit.py — single source of truth #74) e roda sync_plugin.py automaticamente, adicionando os espelhos regenerados ao commit.
  2. O check de paridade do claims_audit permanece como rede de segurança (CI e commits feitos sem o hook), mas deixa de ser a primeira linha.
  3. Fail-open honesto: se o sync falhar (ex.: python indisponível no hook), o commit prossegue e o check.py pega depois — nunca prende o desenvolvedor, consistente com a política fail-open dos hooks do loop.
  4. Documentar no CONTRIBUTING/README de hooks.

Critérios de Aceitação

  • Hook pre-commit sincroniza espelhos automaticamente quando fonte de skill/hook mudou (teste simulando um commit)
  • mirror_manifest.py é a única fonte da lista de caminhos observados (zero duplicação)
  • Fail-open coberto por teste; paridade do claims_audit inalterada como backstop
  • Instalação do hook coberta pelo install.sh/install.ps1 e verificada pelo doctor.py

Refs: #74 (mirror_manifest.py), #70 (paridade bidirecional), PR #60 (precedente "enforced, not described").

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions