How collection works¶
Kollect registers shared dynamic informers for the GVKs declared by active profiles. Events pass through namespace, watch-mode, label, and field filters before JSONPath or CEL extraction produces deterministically ordered rows.
flowchart LR
A["Kubernetes watch event"] --> F["Scope and selector filters"]
F --> E["JSONPath / CEL extraction"]
E --> C["In-memory inventory snapshot"]
The operator is level-based: a reconcile recomputes desired state from observed state, while a long resync is only a correctness backstop. Missing optional attributes are omitted; required extraction failures surface in target conditions and events.
Filters are cumulative: the operator watch boundary, scope policy, target namespace and label selectors, resource rules, CEL match policy, and watch labels must all permit an object. Targets sharing a GVK reuse one informer, so adding a selector does not add another API-server watch.
JSONPath wildcards produce lists; CEL can compute typed values. Extracted rows enter the namespace inventory store with stable identity and ordering before export sees them.
See ADR-0301, ADR-0302, and annotations and labels.