# Prüfwerkzeug (oh-check)

> Prüft Einträge live gegen ihre deklarierten Endpunkte; seine Messungen zeigt die Eintragsseite — bestanden, gescheitert und «nie geprüft» als eigene Zustände.

## Was es tut {#was}

oh-check misst, ob ein Eintrag hält, was sein Manifest deklariert. Es liest die Probe-Hinweise aus den Manifesten und feuert genau den minimalen, harmlosen Aufruf, den der Eintrag selbst angegeben hat — fünf Arten, darunter zwei für MCP, weil MCP zwei Epochen hat und ein Aufruf an die falsche Epoche nichts beweist. Jede Ausführung wird als eine Zeile an eine append-only-Historie angehängt; Korrekturen sind neue Zeilen, nie Änderungen an alten. Daraus liest die Website drei Zustände ab — «nie geprüft», «bestanden», «gescheitert» —, und auch das Abzeichen rundet nie auf: aus teilweise geprüft wird gelb, nicht grün. Ohne --run geht das Werkzeug gar nicht ins Netz, es druckt nur den Plan. Was es nicht tut: fremde Endpunkte ausserhalb der deklarierten Bedingungen anfassen — der Probe-Hinweis im Manifest ist die Erlaubnis der Betreiberin, und im Commit-Tor läuft keine einzige Anfrage.


## Selbst betreiben {#betreiben}

**Sie brauchen:**

- Rust (stable über rustup) und Git; alle Befehle laufen aus der Wurzel des Korpus-Checkouts.

Aus der Wurzel des Korpus-Checkouts, Zeile für Zeile:

```bash
cargo run --locked --manifest-path registry/checker/Cargo.toml -- registry/standard/test-corpus
```

Danach sehen Sie:

```text
amtsdruckschriften-bar #0 DownloadInterface — http-head https://www.amtsdruckschriften.bar.admin.ch/ (expect response) — never checked
```

Ohne --run druckt oh-check nur den Probenplan und den Verlauf; kein Netzzugriff. --run prüft live und schreibt die Historie.


## Testen {#testen}

```bash
cargo test --locked --manifest-path registry/checker/Cargo.toml
```

- **Aufgezeichnete Fixtures:** `registry/checker/tests`
- Läuft ohne Netz: jede Antwort kommt aus dem Repository, das Ergebnis ist bei jedem Lauf gleich.

Die HTTP-Fälle laufen gegen lokale Server im Test.

## Ansteuern {#ansteuern}

Dieses Modul hat keine Schnittstelle zum Ansteuern: es ist ein Werkzeug, eine Bibliothek oder ein Dokument. Was man damit tut, steht oben.

### Aufruf und Optionen

```text
usage: oh-check <manifest-dir>... [--state <dir>] [--run] [--badges <dir>] [--timeout-ms <n>] [--probe-origin <origin>]
```

## Mitwirken {#mitwirken}

Änderungen laufen über Merge Request und dieselben Gates wie für den Verein: Formatierung, Clippy ohne Warnungen, Tests, Siegel- und Drift-Prüfungen. Sicherheitsmeldungen vertraulich an admin@openhelvetia.swiss.

Die Basis-Stufe kostet nichts; wovon der Betrieb lebt, steht unter [Über uns, Finanzierung](../../../about/financing/index.html).

## Steckbrief {#steckbrief}

Zustand, Belege, Download und Abhängigkeiten stehen auf der Infrastruktur-Seite: [Prüfwerkzeug (oh-check)](../../../directory/building-blocks/checker/index.html).

---

Quelle: erzeugt aus public/web/modules.json
