2.4 KiB
| title | type | status | date | origin |
|---|---|---|---|---|
| Add semantic left_pole/right_pole labels to SVD_THEMES | fix | active | 2026-04-05 | docs/superpowers/specs/2026-04-05-svd-axis-labels-design.md |
Add Semantic Left/Right Pole Labels to SVD_THEMES
Problem
The positive_pole/negative_pole labels in SVD_THEMES describe the raw SVD math poles, not the semantic left/right after flip. When the axis flips at runtime (to ensure right-wing parties appear on the right), the pole labels are swapped but still describe the raw SVD orientation — resulting in labels like "← PVV en FVD" appearing on the left side when they should be on the right.
Solution
Add left_pole and right_pole fields to each SVD_THEMES entry that describe what's on the left and right sides after flip. Update rendering code to use these semantic labels directly.
Implementation Units
- Unit 1: Add left_pole/right_pole to SVD_THEMES in config.py
Goal: Add semantic pole labels to all 10 SVD components.
Files:
- Modify:
analysis/config.py
Approach:
-
For each component, add
left_poleandright_polefields based on the existingpositive_pole/negative_poleand theflipvalue -
When
flip=True:left_pole=positive_pole,right_pole=negative_pole -
When
flip=False:left_pole=negative_pole,right_pole=positive_pole -
Keep
positive_pole/negative_polefor backward compatibility -
Unit 2: Update explorer.py rendering to use left_pole/right_pole
Goal: Use semantic pole labels in all rendering functions.
Files:
- Modify:
explorer.py(lines 967-970, 1087-1090, 1252-1253, 2806-2807)
Approach:
-
Replace the positive/negative swap logic with direct
left_pole/right_poleusage -
left_label = theme.get("left_pole", pos_pole if flip else neg_pole)(backward compat fallback) -
right_label = theme.get("right_pole", neg_pole if flip else pos_pole) -
Unit 3: Update tests
Goal: Add tests for left_pole/right_pole fields.
Files:
- Modify:
tests/test_svd_labels.py - Modify:
tests/test_explorer_chart.py
Approach:
- Test that all 10 SVD_THEMES entries have
left_poleandright_polefields - Test that rendering functions use left_pole/right_pole correctly
Scope Boundaries
- In scope:
analysis/config.pySVD_THEMES,explorer.pyrendering, tests - Out of scope:
analysis/political_axis.py,analysis/projections.py(uses positive_pole/negative_pole for motion projection, not UI labels)