Skip to content

PQA003 — Missing required field in adapter configuration

The adapter registration omits a field the generator cannot supply a value for.

Four fields identify the adapter and are always required; one more becomes required as soon as a TCP transport is declared.

Field What it carries
adapter_id the adapter's globally unique identifier
name the adapter's name
version the adapter's version
adapter_type the adapter kind the platform registers it as
transport.protocol.frame_type required once transport.type is tcp
adapter_id: 5f1c4b9e-2a77-4a3d-9a2e-6b0d6f2c1a44
name: Acme Panel
version: 1.0.0
adapter_type: access

Why the build refuses this

There is no safe default for identity. An empty adapter_id is not "unset", it is the zero identifier — every adapter that omits it would register as the same adapter, and the platform would route one adapter's commands to another.

A TCP transport without a frame type has no reader. The generator builds the framing from that name; without it the channel receives bytes it cannot cut into frames.

How to fix it

Add the field the message names. Generate a fresh adapter_id rather than copying one from another adapter — the identifier must be unique across the repository.

For transport.protocol.frame_type, name the frame type the adapter defines, or set transport.type: custom when the adapter owns its transport entirely.

If you disagree with a report

Do not suppress it. A wrong report is a bug in the check — report it with the YAML that triggered it.