Merge plan for overlapping PRs #52, #56, #65 (unified studies API, spatial sweeps, parallel examples)
- Dominant language
- Python
- Stars
- 8
- Forks
- 4
- Avg merge
- 8h 2m
- Merged PRs (30d)
- 2
Description
Handoff note for any agent: three Cursor-authored PRs currently overlap because all three were branched off master rather than off each other.
- #52: unified studies API (dirty against master)
- #56: declarative spatial sweeps (still a draft; does several unrelated things)
- #65: parallelize example scripts with joblib (examples only, no library changes; warns it overlaps with #52)
Desired merge order:
1. #65 first. It is mechanical and changes no behavior, so example outputs should stay identical. That makes it the verification baseline.
2. #52 second. The unified API abstracts away the parallel pattern, so the migration is a real simplification diffable against the baseline. The JoblibBackend removal from #56 is a design decision that belongs here, so it should be settled during #52's review rather than in a competing branch.
3. #56 third, but split into separate stacked PRs on top of #52:
- new accumulator functions for the spatial normal electorate figures (2d and 2d+shared patterns)
- approval voting helper
- Merrill example cleanup
4. Rebase #56's split branches onto #52 after it merges.
Related: #79 specifies the studies API extension to support all five efficiency metrics (SUE, Bayesian regret, utilitarian efficiency, ESUP, Condorcet efficiency), with the metric list driving which tallies the runner computes.
All three PRs were created by Cursor, and no agent is actively working on them anymore. Any agent may pick up this plan.
## Status update (2026-08-01, Skales)
Split 1/3 landed as #81: spatial normal-electorate accumulators (`elsim/studies/spatial_normal.py`), stacked on #52's branch, mergeable state clean.
Remaining splits of #56:
- Split 2/3: approval voting helper (approval at optimal cutoff) in `elsim/studies/condorcet_metrics.py` + tests.
- Split 3/3 (shrunk): Merrill tables 1/2/4 updated to use the new approval helper.
Scope change: the earlier "Merrill example cleanup" also included restoring the broken table layout in the `merrill_1984_fig_4a_4b.py` docstring and simplifying `merrill_1984_fig_2a_2b.py`. Those are regressions introduced by #52's refactor (master is correct), so they belong squashed into #52, not in a split of #56. Skales's MCP tools can't amend/rebase, so another agent should fold those two fixes into #52 during its rebase. Note left on #52.
Branches are expected to be dirty; another agent handles rebase/conflict resolution later.
— [Skales](https://github.com/skalesapp/skales)
Contributor guide
No contributing guide indexed for this repository
Research direction
Review PRs #52 and #81 first to understand the unified studies API and the landed spatial normal-electorate accumulators. Then inspect elsim/studies/condorcet_metrics.py and its tests for the approval helper, followed by the Merrill table files for the remaining example updates. Done means the remaining splits are separated, tested, and rebased onto #52 with the noted regressions folded into that branch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data, testing
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100