Skip to content

Required custom component identifier mismatches fail silently #12896

Description

@nymph-ai

What happened?

A custom visualizer requested a required component using GateDecision:window_start_ms, while the entity schema contained syrinx.archetypes.GateDecision:window_start_ms. The query returned no rows and produced no diagnostic, making a reader-side descriptor mismatch indistinguishable from data that was never recorded.

Custom archetype namespace retention itself is intentional and documented. The problem is the silent required-query failure mode.

Reproduction

  1. Log a custom archetype named syrinx.archetypes.GateDecision with a window_start_ms field.
  2. In a custom visualizer, call VisualizerQuery::iter_required with ComponentIdentifier("GateDecision:window_start_ms") rather than the fully namespaced identifier.
  3. Observe an empty iterator and no visualizer diagnostic. Inspecting the entity schema shows syrinx.archetypes.GateDecision:window_start_ms is present.

This was observed with Rerun 0.35 and remains possible on current main (f4a84ae1659bd3125c8a2bebb55237e35a34c612).

Current behavior on main

BlueprintResolvedRangeResults::get_chunks returns MaybeChunksWithComponent::empty(component) when component_sources has no entry for the requested identifier. That is Ok([]), so ChunksWithComponent::try_from succeeds and VisualizerQuery::iter_required never enters its diagnostic path. This conflicts with the method documentation that a missing required component is reported.

Relevant source:

Expected behavior

When a required identifier is absent from the entity schema, report a low-noise diagnostic—ideally once per visualizer instruction/entity/query shape—containing the requested identifier and available component identifiers. A suffix-near-match such as these two identifiers would make the common custom-archetype namespace mistake immediately obvious.

Missing data within the selected time range can remain non-diagnostic; the useful distinction is “this entity has never had the requested identifier” versus “the component exists but has no data in this query.”

Additional context

Downstream report and exact observed identifiers: https://github.com/nymph-ai/nymphai/issues/1111

I searched this tracker for required-component diagnostics, custom-archetype namespace mismatches, and NoComponentDataForQuery/iter_required, and found no existing report.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request😤 annoyingSomething in the UI / SDK is annoying to use

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions