Zum Inhalt springen

Skills

chimera-list-exemptions-not-obligations

Ein Gate, das auflistet, was zu prüfen ist, ist fail-open — die Seite, an die niemand gedacht hat, ist die, die bricht. Liste stattdessen die Ausnahmen auf, jede mit einer schriftlichen Begründung, und der Standard wird Fehlschlag.

MusterHerkunft: cleanStatus: activev0.1.0 · Apache-2.0

Verliehen von der Person, die die Karte gelesen hat — nicht von der Datei über sich selbst behauptet. Eine Karte, die der Agent während eines Laufs mit nicht vertrauenswürdigen Inhalten destilliert, kommt kontaminiert zur Welt und wird bis zur Prüfung zurückgehalten, bevor sie jemals abgerufen wird.

Wann sie in den Sinn kommt

  • ein Build-Gate schreiben
  • eine Regel im ganzen Paket durchsetzen
  • handgepflegte Liste zu prüfender Dateien
  • eine Oberfläche hat ihre Garantie verloren
  • einen neuen Einstiegspunkt hinzufügen

In Vermeiden und Prüfen steckt meist der Wert. Tun ist der Abschnitt, den alle schreiben.

Der Kartentext oben ist eine Übersetzung. Das englische Original ist das, was die CLI importiert, was der Agent zur Laufzeit liest und was der Hash unten bezeugt.

Auslöser

Sie setzen eine Eigenschaft durch, die an jeder Stelle einer bestimmten Art gelten muss: Jede unbeaufsichtigte Oberfläche geht durch das Governance-Profil, jeder Writer passiert das Gate, jede API-Route regeneriert ihr Schema. Die Regel ist ein Satz, aber die Stellen wurden zu unterschiedlichen Zeiten von unterschiedlichen Händen geschrieben, und keine davon nennt das Ding so, wie die anderen es nennen.

Das gilt nicht, wenn die Population konstruktionsbedingt geschlossen ist — eine Regel über die drei Einträge einer Dispatch-Tabelle ist durch die Tabelle bereits aufgezählt. Dieses Muster rechtfertigt seine Kosten nur, wenn eine neue Stelle in einer Datei auftauchen kann, die es noch nicht gibt.

Tun

  1. Zählen Sie die Population maschinell auf. Laufen Sie über jede *.py unterhalb des Pakets (PACKAGE.rglob("*.py")), nicht über eine handgeschriebene Liste der Dateien, die Ihnen gerade bekannt sind.
  2. Erkennen Sie die Stelle strukturell. Parsen Sie den AST und laufen Sie ihn nach dem Aufruf ab, der Sie interessiert; ein grep kann eine zusammengebaute Registry nicht von denselben Wörtern in einem Docstring unterscheiden, und dieser Docstring wird existieren, weil jemand einen Kommentar über den Fix schreiben wird.
  3. Laufen Sie verschachtelte Scopes ab und schlüsseln Sie nach der umschließenden Kette — chimera/cli/main.py:solve._run_solve. Die eine Oberfläche, die Chimera verloren hat, baute ihre Registry innerhalb einer factory()-Closure auf (chimera/server/manager.py:_gateway_on_message.factory), unsichtbar für einen Durchlauf, der nur auf Top-Level-Funktionen schaute.
  4. Machen Sie den Standard zu FEHLSCHLAG. Halten Sie ein EXEMPT: dict[str, str] von Stellen-Schlüssel auf schriftlich festgehaltene Begründung, und lassen Sie die Assertion jede gefundene Stelle auflisten, die kein Schlüssel darin ist.
  5. Schreiben Sie die Begründung als Satz über genau diese Stelle, und trennen Sie die Arten von Begründung. „attended: interactive REPL" (ein Mensch kann Strg-C drücken) ist eine viel stärkere Behauptung als „assembles an equivalent stack from its own flags" — die zweite markiert eine zu konsolidierende Doppelimplementierung, keine ausgemachte Antwort.
  6. Fügen Sie einen zweiten Test hinzu, der prüft, dass jeder EXEMPT-Schlüssel weiterhin eine lebende Stelle benennt, damit die Liste den Code, den sie entschuldigt, nicht überleben und zur Formalität verrotten kann.

Vermeiden

Die Verpflichtungsliste:

SURFACES = ["serve", "cron", "mcp", "a2a", "platform"]   # fails OPEN
for name in SURFACES:
    assert_governed(name)

gegenüber der Ausnahmeliste:

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]

Die erste Fassung von Chimeras Governance-Gate war die obere: Sie parste eine einzige Datei und benannte fünf Oberflächen. chimera/server/manager.py — der Discord-Bot, den der Messaging-Schalter der Desktop-App startet, derselbe Bot, den serve --discord ausführt — baute seine Registry noch drei Wochen nach dem Sweep ungoverned auf, der ihn eigentlich hätte abdecken sollen. Er hat das Gate nie verletzt. Er wurde nie angeschaut.

Vermeiden Sie außerdem eine Ausnahme ohne Begründung. Ein nacktes EXEMPT: set[str] ist eine Liste zu überspringender Prüfungen, die ein Jahr später niemand mehr überprüfen kann; der eine Satz sind die gesamten Kosten des Eintrags und sein gesamter Wert.

Prüfen

Füttern Sie das Gate mit einer Quelle, die die Regel verletzt, und prüfen Sie, dass sie gefangen wird, auch aus einer verschachtelten Funktion heraus — sonst lässt ein AST-Bug das Gate für immer bestehen und die Garantie hört still auf zu existieren:

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)]

Dann die andere Hälfte: Ein Aufruf, der bereits in der konformen Form eingepackt ist, darf nicht markiert werden, sonst bräuchte jede konforme Stelle eine Ausnahme und die Liste würde aufhören, etwas zu bedeuten.

Die binäre Frage: Löschen Sie einen Eintrag aus EXEMPT und lassen Sie erneut laufen. Wird die Suite rot und benennt genau diese Stelle? Wenn nicht, liest das Gate nicht die Liste, die Sie glauben.

Risiko

Die Liste umzudrehen verlagert die Kosten auf denjenigen, der eine legitime neue Stelle hinzufügt: Ein unbeteiligter PR wird rot mit einem Fehler über Governance, an die er nicht gedacht hat. Das ist der beabsichtigte Tausch, aber nur, wenn die Fehlermeldung beide Wege zur Konformität nennt — leite es durch das Profil, oder füge die Ausnahme mit einer Begründung hinzu. Ein Gate, das bei Arbeit anschlägt, für deren Absicherung es nicht gebaut wurde, wird so lange kleingeredet, bis es bei nichts mehr anschlägt.

Die strukturelle Erkennung ist außerdem enger, als sie sich anfühlt. Sie fängt die eine Form, die sie kennt; eine Oberfläche, die Tools über einen anderen Aufruf zusammenbaut oder eine vorgefertigte Registry von woanders importiert, liegt außerhalb des Durchlaufs, und der grüne Build sagt nichts über sie. Fixieren Sie die Abdeckung der Datei, die regressiert ist, namentlich in einem eigenen Test, damit ein Durchlauf, der diese Datei still nicht mehr abdeckt, fehlschlägt statt zu bestehen.

Verwenden

Die Karte ist Daten. Klonen Sie das Repository und importieren Sie sie über den Pfad — was über das Netz kommt, gilt als kontaminiert und wird bis zur Freigabe zurückgehalten. Das ist das gewünschte Verhalten und der Grund, warum es hier keinen Einzeiler-Installer gibt.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/chimera-list-exemptions-not-obligations/SKILL.md

Integrität

SHA-256 der Datei in der veröffentlichten Fassung. Wer sie importiert, kann prüfen, dass das Empfangene dem entspricht, was diese Seite gezeigt hat.

243034feb6f9a9a06be65cfb2bf4db159e4fbcc0e7210475dffe540600227ef7

Die Karte im Repository lesen