chimera-list-exemptions-not-obligations
Un gate che elenca cosa controllare fallisce aperto — il sito che nessuno si è ricordato di aggiungere è quello che si rompe. Elenca invece le esenzioni, ognuna con un motivo scritto, e il default diventa il fallimento.
Conferita da chi ha letto la scheda, non rivendicata dal file su se stesso. Una scheda che l'agente distilla durante un'esecuzione che ha consumato contenuti non affidabili nasce contaminata e resta in attesa di revisione prima di essere mai recuperata.
Quando viene in mente
- sto scrivendo un gate di build
- impongo una regola su tutto il pacchetto
- elenco manuale dei file da controllare
- una superficie ha perso la garanzia
- aggiungo un nuovo entry point
Il valore di solito sta in Evita e Verifica. Fai è la sezione che scrivono tutti.
Il corpo della scheda qui sopra è una traduzione. L'originale inglese è ciò che la CLI importa, ciò che l'agente legge in esecuzione e ciò che l'hash qui sotto attesta.
Trigger
Stai facendo rispettare una proprietà che deve valere in ogni punto di un certo tipo: ogni superficie non presidiata passa per il profilo di governance, ogni writer attraversa il gate, ogni route API rigenera il proprio schema. La regola è una frase sola, ma i punti sono scritti in momenti diversi da mani diverse, e nessuno di essi chiama la cosa che chiamano gli altri.
Non si applica quando la popolazione è chiusa per costruzione — una regola sulle tre voci di una dispatch table è già enumerata dalla tabella stessa. Questo pattern ripaga il proprio costo solo quando un nuovo punto può comparire in un file che ancora non esiste.
Fai
- Enumera la popolazione in modo meccanico. Attraversa ogni
*.pysotto il package (PACKAGE.rglob("*.py")), non una lista scritta a mano dei file di cui ti capita di sapere. - Rileva il punto in modo strutturale. Fai il parsing e attraversa l'AST cercando la chiamata che ti
interessa; un
grepnon sa distinguere un registry assemblato dalle stesse parole dentro una docstring, e quella docstring ci sarà, perché qualcuno scriverà un commento sulla correzione. - Attraversa anche gli scope annidati e usa come chiave la catena che li racchiude —
chimera/cli/main.py:solve._run_solve. L'unica superficie che Chimera si è persa aveva il registry costruito dentro una closurefactory()(chimera/server/manager.py:_gateway_on_message.factory), invisibile a un attraversamento che guardava solo le funzioni di primo livello. - Fai in modo che il default sia il FALLIMENTO. Tieni un solo
EXEMPT: dict[str, str]che mappa la chiave del punto a un motivo scritto, e fai in modo che l'asserzione elenchi ogni punto trovato che non sia una chiave lì dentro. - Scrivi il motivo come una frase su quello specifico punto, e tieni distinti i tipi di motivo. "attended: interactive REPL" (una persona può premere Ctrl-C) è una tesi molto più forte di "assembles an equivalent stack from its own flags" — la seconda segnala un'implementazione duplicata da consolidare, non una questione chiusa.
- Aggiungi un secondo test che verifichi che ogni chiave di
EXEMPTnomini ancora un punto vivo, così la lista non può sopravvivere al codice che scusa e marcire in una formalità.
Evita
La lista degli obblighi:
SURFACES = ["serve", "cron", "mcp", "a2a", "platform"] # fails OPEN
for name in SURFACES:
assert_governed(name)
contro la lista delle esenzioni:
EXEMPT = {"chimera/cli/main.py:chat": "attended: interactive REPL"} # fails CLOSED
assert not [s for s in every_site_in_the_package() if s not in EXEMPT]
La prima versione del gate di governance di Chimera era quella in alto: faceva il parsing di un unico
file e nominava cinque superfici. chimera/server/manager.py — il bot Discord che l'interruttore
Messaging dell'app desktop avvia, lo stesso bot che esegue serve --discord — ha costruito il
proprio registry senza governance per tre settimane dopo la revisione che avrebbe dovuto coprirlo.
Non stava fallendo il gate. Non era mai stato guardato.
Evita anche un'esenzione senza motivo. Un nudo EXEMPT: set[str] è una lista di controlli da saltare
che nessuno potrà riesaminare un anno dopo; quell'unica frase è tutto il costo della voce e tutto il
suo valore.
Verifica
Dai in pasto al gate un sorgente che viola la regola e verifica che venga intercettato, anche dall'interno di una funzione annidata — altrimenti un bug nell'AST fa passare il gate per sempre e la garanzia smette silenziosamente di esistere:
src = "def serve():\n def factory():\n r = default_registry(ws)\n"
assert _bare_registry_calls(ast.parse(src), "m.py") == [("m.py:serve.factory", 3)]
Poi l'altra metà: una chiamata già avvolta nella forma conforme non deve essere segnalata, altrimenti ogni punto conforme avrebbe bisogno di un'esenzione e la lista smetterebbe di significare qualcosa.
La domanda binaria: cancella una voce da EXEMPT e riesegui. La suite diventa rossa nominando
esattamente quel punto? Se no, il gate non sta leggendo la lista che credi.
Rischio
Invertire la lista sposta il costo su chi aggiunge un nuovo punto legittimo: una PR non correlata diventa rossa con un errore sulla governance a cui non stava pensando. È lo scambio voluto, ma solo se il messaggio di fallimento indica entrambi i modi per conformarsi — instradarla attraverso il profilo, oppure aggiungere l'esenzione con un motivo. Un gate che scatta su lavoro che non era stato costruito per difendere viene contestato finché non scatta più su nulla.
Anche il rilevamento strutturale è più stretto di quanto sembri. Cattura l'unica forma che conosce; una superficie che assembla le tool con una chiamata diversa, o che importa un registry già costruito da altrove, sta fuori dall'attraversamento e la build verde non dice nulla su di essa. Fissa per nome, in un test dedicato, la copertura del file che è regredito, così un attraversamento che smette silenziosamente di coprire quel file fallisce invece di passare.
Come usarla
La scheda è un dato. Clona il repository e importala per percorso — ciò che arriva dalla rete è trattato come contaminato e trattenuto in attesa di approvazione, che è il comportamento desiderabile e il motivo per cui qui non c'è un installatore in una riga.
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/chimera-list-exemptions-not-obligations/SKILL.mdIntegrità
SHA-256 del file così com'è pubblicato. Chi lo importa può verificare che ciò che ha ricevuto sia ciò che questa pagina mostrava.
243034feb6f9a9a06be65cfb2bf4db159e4fbcc0e7210475dffe540600227ef7