diff --git a/docs/superpowers/specs/2026-03-29-axis-classification-design.md b/docs/superpowers/specs/2026-03-29-axis-classification-design.md index 67d93bf..899e85b 100644 --- a/docs/superpowers/specs/2026-03-29-axis-classification-design.md +++ b/docs/superpowers/specs/2026-03-29-axis-classification-design.md @@ -160,6 +160,10 @@ Single public function: `classify_axes(positions_by_window, axes, db_path)`. The function is pure except for reading two CSV files (cached module-level after first load). +CSV paths are derived from `db_path`: `Path(db_path).parent / "party_ideologies.csv"` and +`Path(db_path).parent / "coalition_membership.csv"`. Both files live in the same `data/` directory +as the database. + **Algorithm per window:** 1. Collect parties that appear in both `positions_by_window[window_id]` and `party_ideologies.csv`. @@ -184,7 +188,9 @@ The function is pure except for reading two CSV files (cached module-level after 6. Repeat steps 3–5 for Y-axis using `party_y`. 7. After processing all windows, pick global X label = modal label across annual windows only (quarterly windows participate in quality tracking but not in the modal vote, to avoid - over-weighting). + over-weighting). The `current_parliament` window is excluded from modal voting entirely and + from the coalition dimension (no year to look up); it still gets x_quality and x_interpretation + based on the left_right and progressive correlations. **Interpretation strings (Dutch):**