The global orientation check using party centroids averaged across all
windows was insufficient — individual windows (notably 2023) could still
have conservative parties above progressive ones on the Y-axis.
Added a per-window flip in compute_2d_axes (PCA branch) that checks
prog_avg_y vs cons_avg_y for each window independently and negates all
Y values in that window when cons > prog. Flipped window IDs are stored
in axis_def['y_flipped_windows'] for diagnostics.
Moved the canonical party set definitions outside the orientation try-
block so they are always in scope for the per-window correction.
Added test_per_window_y_orientation to cover the case where one window
is globally fine but locally inverted.
A small project that uses QWEN embeddings for semantic features. The codebase includes an example Ansible package under packages/@ansible/example and helper scripts for deployment.
Embeddings
This project uses QWEN embeddings (model: qwen/qwen3-embedding-4b) via OpenRouter-compatible APIs.
Preferred environment variable: OPENROUTER_API_KEY with a fallback to OPENAI_API_KEY.
Publishing and deploying the Ansible package
Package location: packages/@ansible/example — this contains the Ansible playbooks and packaging used by CI.
To publish the package (CI): create a git tag for the version and provide NPM_TOKEN as a secret to the CI runner so it can publish to npm.
To deploy the package (CI): set the following repository secrets in your CI pipeline:
DEPLOY_HOST (default: motief.sgeboers.nl)
DEPLOY_SSH_KEY (private key for the webapps user)
DEPLOY_USER (default: webapps)
Defaults
DEPLOY_HOST: motief.sgeboers.nl
DEPLOY_USER: webapps
See docs/deployment/ansible-package-deploy.md for more detailed deploy instructions and defaults.