name: op-overlay-index-vs-sibling
kind: operator
category: OVERLAY
operator: OVERLAY_INDEX_VS_SIBLING
description: Per-group ratio index against a sibling group named by (Field, Value) on the SERIES host (×100).
type: reference
applies_to: process, compose
examples_tags: [overlay, comparison]
Overlays decorate the host; no Response.Components.
Use when
Each group’s value as an index value against one named group (group / sibling x 100), such as every store against the flagship.
Questions it answers:
- How does each store’s revenue compare with the flagship store’s?
- How does each region’s average rating compare with the home region’s?
Use something else:
OVERLAY_DELTA_VS_SIBLINGwhen you want the gap in the value’s own units.
Params
Scope must be group. Ref.Sibling.Field (string, required) — grouper field on the host. Ref.Sibling.Value (string, required) — axis-key value identifying the sibling group. Other Ref arms → PULSE_OVERLAY_REF_INCOMPATIBLE_WITH_SHAPE.
Host shape
SERIES — grouped Process host. Ratio twin of the sibling delta. Sibling resolved via internal/processing/overlay_sibling_resolver.go.
Output
SERIES — one SeriesEntry per host group, carrying index = group / sibling × 100 on Summary.Statistic. Sibling group itself emits 100.0 (self-vs-self). Layer Baseline = 100.
Gotchas
- Unknown
(Field, Value)pair → ONEPULSE_OVERLAY_REF_UNKNOWNper layer + NaN entries. - Zero sibling value → NaN entries + ONE
PULSE_OVERLAY_REF_ZEROper layer. The subtractive twin does not warn on zero. - Absent host group →
SeriesEntrywith unsetStatistic. - Buffered — the resolver needs materialised per-group accumulators (
ApplyOverlaysSeries). - Weighted host → weighted figure (reads the host payload).