Sven Geboers
8826346190
fix(overton): reframe verdict and migration as gateway domain
...
- Verdict now says 'window widened' (not 'did not shift') — centrist
support surged for right-wing motions while staying flat for left-wing
- Migration reframed from 'one exception' to 'gateway domain' — where
acceptance expanded most genuinely and right-wing parties learned
frames they applied elsewhere
- Explorer Overton tab: added migration gateway section with pre/post
metrics, full motion text (no truncation), 100-motion browser
- Explorer Kompas tab: updated Overton context to lead with the shift
- Explorer Trajectories tab: Dutch-language Overton annotation
- Synthesis, QMD, HTML report, STATUS.md all updated consistently
2 weeks ago
Sven Geboers
5706e86777
feat(overton): coherent narrative architecture — Quarto article, Explorer Overton tab, report cleanup
...
- U1: Remove stale findings_report.md and blog_post.html, add cross-reference
headers to all 13 appendix reports, switch HTML report to canonical 4-party
centrist definition
- U2: Create Quarto narrative spine (overton_window.qmd) with 9 sections and
6 interactive Plotly charts. Includes 'About Stemwijzer' platform section.
- U3: Add Overton tab to Explorer (centrist support trend, right-wing motion
browser, explore-further links). Add Overton context expander to Kompas tab
and 2024 breakpoint annotation to Trajectories tab.
- U4: Create build_all_reports.py master regeneration script (3-phase,
dependency-ordered, --skip-llm support)
- U5: Update README with Research section, create reports/overton_window/README.md
reading guide, update STATUS.md with broader platform framing
Plan: docs/plans/2026-06-06-001-overton-coherent-narrative-plan.md
282 tests pass.
2 weeks ago
Sven Geboers
272d839a42
feat: agent-native refactor, SVD consistency fixes, UX cleanup, mobile support
...
- Refactor agent_tools to atomic primitives (24 tools, delete workflows)
- Fix SVD component score inconsistency between single-window and trajectory views
(same PCA basis, same flip handling, same active-MP filter for current_parliament)
- Fix Dutch spelling: Huidig parliament -> Huidig parlement
- Remove all decorative emojis from UI (app.py, explorer.py, analysis tabs)
- Add dark theme matching sgeboers.nl (mint accent on dark background)
- Remove browser tab favicon and Streamlit chrome (deploy button, running status)
- Remove trajectories debug UI and EMA settings (hardcoded smooth_alpha=0.35)
- Switch layout to centered for mobile readability
- Add responsive CSS for mobile (touch targets, font sizing, overflow prevention)
- Update AGENTS.md and SYSTEM_PROMPT.md with active tool instructions
- Add compound docs for SVD consistency bug
- Update tests: 214 passed, 3 skipped
2 months ago
Sven Geboers
3bdb43f162
refactor: decompose explorer.py into analysis/tabs/ and add scheduler
...
- Extract 6 tab functions from explorer.py (3097 → 543 lines)
- Create analysis/tabs/_rendering.py with shared plotly helpers
- Move data logic to analysis/explorer_data.py
- Add lazy-import wrappers in explorer.py for backward compat
- Add scheduler.py with PipelineScheduler for daily pipeline runs
- Add test_explorer_decomposition.py (5 tests, all pass)
- Add test_scheduler.py (13 tests, all pass)
- Full test suite: 222 passed, 2 skipped
2 months ago
Sven Geboers
414c16ae9e
refactor: extract data loading and trajectory logic from explorer.py
...
- Move trajectory analysis to analysis/trajectory.py (+136 lines)
- Move projection helpers to analysis/projections.py (+128 lines)
- Extract tab-specific data loaders to analysis/tabs/ (8 modules, +133 lines)
- Remove 702 lines from explorer.py (data loading extracted to
analysis/explorer_data.py and new modules)
- Add axis label fallback tests (tests/test_axis_label_fallback.py)
- Add session docs: brainstorms, ideation, plans, and test-failures
3 months ago