# Component standard

Required identity, lifecycle, representation, role, capability, evidence, and limitation fields.

[View canonical HTML](https://pllm.run/sdk/contribute/component-standard/)

Document ID: `pllm.docs.contribute.component-standard`  
Release: `0.1.0`

1. Choose a semantic category and stable authority-owned identity.
2. Define versioned parameters, lifecycle phase, input and output representations, host requirements, roles, artifacts, and evidence pointers.
3. Implement one concrete class in the semantic family, not in `configuration.py` or a paper-named runtime path; `describe()` on that class is the descriptor source of truth.
4. Register the class and add static discovery and identity tests without importing provider or native runtime code.
5. Add compatibility and operator-coverage tests.
6. Add runtime, benchmark, quality, assurance, and deployment evidence independently when each exists.

The canonical contract is [`design/component-standard.md`](https://github.com/blairhudson/pllm/blob/main/design/component-standard.md). Missing fields remain `not recorded`; empty evidence is not a pass.

## Python SDK example

```python
from pllm.components import get, get_component
from pllm.kernels import Cpu

component_class = get("pllm/cpu")
descriptor = get_component("pllm/cpu")
record = descriptor.to_dict()
assert component_class is Cpu
assert component_class.describe() is descriptor
assert {"provider", "version", "category", "capabilities"} <= record.keys()
```

Built-in descriptors expose the public fields contributors must keep discoverable.

API: [`pllm.components.get_component`](/sdk/reference/python/pllm/#objects-and-signatures)
