Il Giuramento di Sovranità: Zero Residui
"Zenzic è una sentinella nella tua pipeline, non una catena. La capacità di rimuoverlo non è un caso limite — è un requisito di design."
Il Giuramento
Zenzic fa una promessa incondizionata: non terrà mai in ostaggio il tuo codebase.
Per garantire l'integrità del Safe Harbor, il core di audit di Zenzic è strettamente
in sola lettura. Crediamo che un linter non dovrebbe mai essere una fonte di mutazioni
indesiderate. Eventuali future funzionalità di rimedio saranno implementate come utilità
esplicite e interattive (es. zenzic fix), mantenendo la fase di analisi al 100%
priva di mutazioni.
Questo documento è la prova formale di quella promessa.
1. Garanzia Zero Residui
Quando rimuovi Zenzic, cosa rimane?
| Componente | Residuo dopo la rimozione |
|---|---|
| I tuoi file sorgente | Invariati — Zenzic non scrive né modifica mai i contenuti |
| Il tuo codice applicazione | Invariato — Zenzic non viene mai importato a runtime |
| I tuoi tipi Python | Invariati — Zenzic usa typing.Protocol, non ereditarietà |
| Il tuo formato di config | Sezione [tool.zenzic] PEP standard — rimuovila, fatto |
| La tua pipeline CI | Un singolo step del workflow — eliminalo |
| I tuoi hook pre-commit | Una voce di hook — rimuovila |
Tempo totale di rimozione: 30 secondi.
Nessuno script di migrazione. Nessun formato dati da convertire. Nessuna architettura da smontare.
2. Perché typing.Protocol è Importante
Il sistema adapter di Zenzic usa typing.Protocol
— il meccanismo di subtyping strutturale della libreria standard Python.
# Contratto adapter Zenzic — solo subtyping strutturale
class AdapterProtocol(Protocol):
def get_docs_root(self) -> Path: ...
def get_nav_paths(self) -> frozenset[str]: ...
def get_metadata_files(self) -> frozenset[str]: ...
Cosa significa per te:
- Non devi ereditare da una classe base Zenzic.
- Il tuo codice non porta una catena di ereditarietà Zenzic.
- Se rimuovi Zenzic, le tue classi Python rimangono invariate.
L'adapter è un contratto strutturale. Se il tuo oggetto ha i metodi giusti, Zenzic lo accetta. Se Zenzic viene rimosso, il tuo oggetto funziona ancora — ha semplicemente perso il suo revisore.
3. Configurazione PEP-Compliant
La configurazione di Zenzic vive nella sezione [tool.zenzic] di pyproject.toml
— la posizione standard PEP 518 per la config degli strumenti:
[tool.zenzic]
docs_dir = "docs"
engine = "mkdocs"
Oppure in un file zenzic.toml standalone nella root del repository.
Procedura di rimozione:
# Sezione [tool.zenzic] eliminata — nessun'altra modifica necessaria
Oppure:
rm zenzic.toml
La sezione [tool.zenzic] è uno spazio dei nomi isolato. Rimuoverla non influenza
nessun'altra configurazione di strumenti.
4. Il Decommission in 30 Secondi
Step 1 — Rimuovi dalla CI (15 secondi)
# Elimina questo blocco
- uses: PythonWoods/zenzic-action@v1
with:
version: "0.7.0"
format: sarif
upload-sarif: "true"
Step 2 — Rimuovi la Configurazione (15 secondi)
rm zenzic.toml
# OPPURE modifica pyproject.toml: rimuovi la sezione [tool.zenzic]
Fatto. La tua pipeline gira senza il gate di integrità della documentazione. Il tuo codebase è identico a com'era prima di adottare Zenzic.
5. Perché Documentare l'Uscita
La fiducia si costruisce sulla capacità di andarsene, non sull'obbligo di restare.
Uno strumento che rende la partenza difficile non ha fiducia nel suo valore — sta proteggendo la propria presenza. Il modello di fiducia di Zenzic è Zero-Trust: incluso verso sé stesso.
La sentinella esiste per proteggere la tua documentazione. Non per proteggere sé stessa.
Saga VI: The Governance of Quartz — leggi la cronaca