Grazie per il tuo contributo alla GitHub Action ufficiale di Zenzic.
La distribuzione runtime per gli utenti a valle resta agganciata alle release pubblicate di Zenzic. I quality gate del repository (self-check, just, nox), invece, usano il modello sovrano locale-core condiviso.
La risoluzione della branch parity in CI segue questa precedenza:
- Override esplicito tramite la repository variable
ZENZIC_CORE_REF. - Parità di nome del branch (
github.base_refogithub.ref_name). - Fallback su
mainse il branch target non esiste in core.
Usa ZENZIC_CORE_REF quando la nomenclatura dei branch di zenzic-action
diverge da quella dei repository core (ad esempio, branch di release
dell'action vs. branch di release del core).
La governance dell'override è obbligatoria (fail-closed): quando
ZENZIC_CORE_REF è impostata, sono richieste le seguenti repository variables:
ZENZIC_CORE_REF_TICKET(ticket di change/audit)ZENZIC_CORE_REF_REASON(giustificazione esplicita)ZENZIC_CORE_REF_APPROVER(owner che ha approvato)ZENZIC_CORE_REF_EXPIRES_ON(data UTC in formatoYYYY-MM-DD)
Se i metadati mancano, sono malformati, scaduti o il branch non esiste in core, la CI si arresta con un errore esplicito.
Installa gli hook pre-commit (una sola volta dopo il clone):
uvx pre-commit install # commit-stage: hygiene + zenzic self-check
uvx pre-commit install -t pre-push # pre-push: 🛡️ Final Guard runs `just verify`Usa just per eseguire i self-test prima di aprire una PR:
just lint # fast pass: pre-commit hooks only
just verify # full gate: pre-commit + Zenzic check + integration testsEntrambi devono passare con zero errori prima di aprire o aggiornare una PR.
Tutte le chiavi rev: in .pre-commit-config.yaml devono puntare a un
pin immutabile a commit hash, mai a un tag semantico (v1.2.3). I tag git
sono mutabili: un maintainer upstream (o un attaccante) può spostare un tag
silenziosamente, avvelenando il Gate 2 locale senza alcun diff in questo
repository.
Questa è una policy CI interna del progetto zenzic-action, non una regola
pubblica del linter Zenzic. Enforcement: just check-pinning (dipendenza di
just verify); le violazioni sollevano [ADR-089] FATAL in pre-push.
La finestra di esposizione locale è più piccola di quella GHA perché
pre-commit congela i repo degli hook in ~/.cache/pre-commit/ finché
l'utente non lancia autoupdate o clean; GitHub Actions invece ri-risolve
il ref a ogni esecuzione. Il pinning è comunque obbligatorio in locale per la
sicurezza dei nuovi clone e per la parità con l'enforcement ADR-089 remoto.
Aggiornare gli hook pinned. Non eseguire mai il pre-commit autoupdate
nudo — riscrive le SHA tornando a tag mutabili. Usa sempre:
uvx pre-commit autoupdate --freezeQuesto preserva il commento di annotazione # vX.Y.Z. Committa il diff e
ri-verifica con just check-pinning.