# Glossary

Each term below has one fixed meaning across the SDK documentation. Technical names keep their exact spelling. CLI names refer to `benchweave-sdk` subcommands.

**adapter**: The Python object that faces the SDK. It implements the operations that the descriptor declares. The file `adapter.py` in a generated project holds it.

**binding catalogue**: The file `binding-catalogue.json`. It binds descriptor targets to UI variables. The gateway verifies it during admission.

**C01-C12 obligations**: The capture obligation family. The vendored standards and the [device developer guide](https://github.com/madeinoz67/benchweave/blob/main/docs/device-developer-guide.md) in the main repository define them. The glossary does not restate them.

**capture**: The recording of device data during an operation. The `capture` module writes captures to a local directory when no gateway is present.

**check**: The `benchweave-sdk check` subcommand. It runs offline descriptor schema and basic semantic checks. A pass is not full conformance.

**check-preset**: The `benchweave-sdk check-preset` subcommand. It validates a complete configuration preset offline.

**check-ui**: The `benchweave-sdk check-ui` subcommand. It validates a presentation candidate offline. A pass is not admission and not approval to apply settings.

**descriptor**: The file `descriptor.json`. It declares the device, its identity, its operations and its firmware policy. It is the runtime compatibility contract.

**doctor**: The `benchweave-sdk doctor` subcommand. It reports the project's pinned SDK version against the installed one. A mismatch is reported, never failed on. The standalone server carries a second `doctor`, `benchweave-sdk-server doctor`. It runs five read-only triage checks over the supervision family. The same word names two entry points.

**gateway**: The BenchWeave control application in the main repository. It loads plugins, runs procedures and keeps the run records. The SDK never needs a gateway.

**import package**: The Python package under `src/` that you import. Select it with the `--package` option of `new`. It differs from the project directory.

**inventory**: The `benchweave-sdk inventory` subcommand. It prints the hashes for a prepared bundle. It is not a release manifest.

**M01-M14 obligations**: The measurement obligation family. The vendored standards and the [device developer guide](https://github.com/madeinoz67/benchweave/blob/main/docs/device-developer-guide.md) in the main repository define them. The glossary does not restate them.

**plugin project**: The directory that `new` generates, such as `plugins/acme/model100/`. It holds the import package, the tests and the guides. It can stand alone as a repository.

**prepared bundle**: The directory that holds built release files, such as `dist/` after `uv build`. The [inventory](../reference/packaging.inventory.md#benchweave_sdk.packaging.inventory) subcommand reads it.

**presentation**: The declarative UI of a plugin: the envelope, the manifest and their assets. Generated only with `--with-ui`.

**preset**: A complete set of configuration settings with metadata about compatibility and provenance. A preset never contains collected measurements.

**preview**: The `benchweave-sdk preview-ui` subcommand. It serves the plugin project's pages on the standalone host, with simulated data on the scripted mock transport. It serves until you stop it.

**S01-S18 obligations**: The safety obligation family. The vendored standards and the [device developer guide](https://github.com/madeinoz67/benchweave/blob/main/docs/device-developer-guide.md) in the main repository define them. The glossary does not restate them.

**standalone server**: The optional server that serves one plugin project without a gateway. Install it with the `[server]` extra. Its command is `benchweave-sdk-server`. The command family includes `serve`, `start`, `stop`, `restart`, `status`, `doctor` and `logs`.

**synthetic plugin**: A project generated by `new` before any device work. Its protocol and test data are placeholders. It is not qualified firmware and not a real instrument driver.

**synthetic protocol**: The placeholder protocol in `protocol.py` of a generated project. Replace it with verified device behavior before release. `AI-GUIDE.md` prompt 2 starts that work.
