recon_gen.common.ids

Typed identifier wrappers for QuickSight resource IDs.

QuickSight definitions cross-reference identifiers across many fields: SheetId flows into SheetVisualScopingConfigurations.SheetId and GridLayoutConfiguration, VisualId flows into the same scoping configuration’s VisualIds list, FilterGroupId is the dict key QuickSight uses to look up a filter, and ParameterName is the bare string that gets templated into a CategoryFilter.

All four are plain strings at the API boundary, so a typo or — more insidiously — a kind swap (passing a SheetId into a VisualIds list, say) does not raise; QuickSight either silently widens scope or silently produces zero rows. The NewType wrappers here let mypy catch wrong-kind-of-string at the call site, mirroring the ColumnShape discipline common/drill.py already imposes on parameter wiring.

The wrappers are zero-cost at runtime — SheetId(x) returns x unchanged. They are an annotation discipline only.