= SH-005: Helper-Spalten (Denormalisierung via FK-Join)
:status: Proposed
:owner: Core lib team
:priority: Medium
:target_version: 0.1.0bX
:created: 2025-09-26

== Context
Ein zentrales Variablen-Register (Katalog) liefert Attribute. In Regelblättern sollen ausgewählte Attribute dieser Variablen als Helper-Spalten eingeblendet werden (FK-Join), ohne die Normalform zu verletzen.

== Goals
*G1.* BoundStep-Factory für konfigurierbare FK-Joins (Frames→Frames).
*G2.* Auswahl der zu materialisierenden Attribute und Ziel-Spaltennamen.

== Acceptance Criteria
- AC1: Factory `make_denormalize_step` mit Config:

-----
{
"left_sheet": "rules",
"right_sheet": "variables",
"left_key": "variable_id",
"right_key": "id",
"columns": { "name": "var_name", "type": "var_type" }, # right.col -> new_col
"suffix": "" # optionaler Suffix, falls Kollisionen
}
-----

- AC2: Fehlende FK → Modus konfigurierbar: `ignore|warn|fail`.
- AC3: Keine Seiteneffekte: Input-Frames bleiben unverändert; Output enthält aktualisiertes Zielblatt.

== Tests
- Unit: Join happy path, fehlende Keys (warn/fail), Namenskollisionen.


