# Prüfwerkzeug (oh-check)

> Probes entries live against their declared endpoints; its measurements are what the entry page shows — passed, failed and «never checked» as distinct states.

## What it does {#was}

oh-check measures whether an entry keeps what its manifest declares. It reads the probe hints out of the manifests and fires exactly the minimal, harmless call the entry itself named — five kinds, two of them for MCP, because MCP has two eras and a call to the wrong era proves nothing. Every execution is appended as one line to an append-only history; corrections are new lines, never edits to old ones. From that the website reads three states — «never checked», «passed», «failed» — and the badge never rounds up either: partially checked becomes yellow, not green. Without --run the tool does not touch the network at all; it prints the plan. What it does not do: touch a third-party endpoint outside the declared conditions — the probe hint in the manifest is the operator's permission, and not one request runs in the commit gate.


## Run it yourself {#betreiben}

**You need:**

- Rust (stable via rustup) and Git; every command runs from the root of the corpus checkout.

From the root of the corpus checkout, line by line:

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

Then you should see:

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

Without --run oh-check prints only the probe plan and the gradient; no network. --run probes live and appends the history.


## Test {#testen}

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

- **Recorded fixtures:** `registry/checker/tests`
- Runs without network: every answer comes from the repository, the result is the same every run.

The HTTP cases run against local servers inside the test.

## Call {#ansteuern}

This module has no interface to call: it is a tool, a library or a document. What one does with it is above.

### Usage and options

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

## Contribute {#mitwirken}

Changes go through merge requests and the same gates as the association's own: formatting, Clippy without warnings, tests, seal and drift checks. Security reports, in confidence, to admin@openhelvetia.swiss.

The base tier costs nothing; what the operation lives on is under [About us, Financing](../../../about/financing/index.html).

## Module card {#steckbrief}

State, evidence, download and dependencies are on the infrastructure page: [Prüfwerkzeug (oh-check)](../../../directory/building-blocks/checker/index.html).

---

Source: generated from public/web/modules.json
