Passa al contenuto principale

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?

ComponenteResiduo dopo la rimozione
I tuoi file sorgenteInvariati — Zenzic non scrive né modifica mai i contenuti
Il tuo codice applicazioneInvariato — Zenzic non viene mai importato a runtime
I tuoi tipi PythonInvariati — Zenzic usa typing.Protocol, non ereditarietà
Il tuo formato di configSezione [tool.zenzic] PEP standard — rimuovila, fatto
La tua pipeline CIUn singolo step del workflow — eliminalo
I tuoi hook pre-commitUna 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:

pyproject.toml
[tool.zenzic]
docs_dir = "docs"
engine = "mkdocs"

Oppure in un file zenzic.toml standalone nella root del repository.

Procedura di rimozione:

pyproject.toml (dopo)
# 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)

.github/workflows/docs.yml
# 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