Apps / Agenda Simulator / User guide
Every control, every mark on the policy map, all 5 proposal-rights modes, and how to read each verdict. A shorter version of this material ships inside the app under Learn, including a glossary of every term. This page is the exhaustive one.
You place voter blocs on a 2-dimensional policy map, choose a voting rule, and the app tells you which policy positions an agenda setter can reach from today's policy through a sequence of winning votes, and which coalition carries each one.
It answers one question: given who wants what, and given the rule, what can the order of votes achieve?
Two established theories share the name. This app implements the spatial one from social choice: McKelvey's chaos theorem, Plott's symmetry conditions, Romer and Rosenthal's monopoly setter, Baron and Ferejohn's recognition rules, the Nakamura number, the Banzhaf power index. Here an "agenda" is both a point in policy space and the sequence of votes a chairman puts to a body.
The mass-communication theory (Rogers and Dearing 1988, descending from McCombs and Shaw 1972) is about issue salience transferring between media, public and policy agendas. This app has no representation of issues, salience or coverage, and cannot speak to it. The two describe consecutive stages: salience decides which dimension is live, and this app then asks what the institutions can do on that dimension.
---
Mac and iPad in landscape show three panes: inputs, map, verdicts. iPhone and iPad in portrait show the map on top, with a segmented control switching the area below between Inputs and Verdicts.
On Mac it follows the width of the window: widen it and the three panes appear, narrow it and they stack. On iPad it follows the orientation.
| Control | What it does |
|---|---|
| Tray icon (top left) | Saved scenarios: save, load, delete |
| Undo arrow | Reverses the last input change |
| Book icon (top right) | Learn: glossary, articles, loadable examples |
---
Every point is a complete policy position. Both axes run −100 to +100, and (0, 0) is the neutral centre. All computation runs on a grid of agendas spaced 2 apart; the status quo and target snap to the nearest grid point.
| Mark | Meaning |
|---|---|
| Black dot with a name | A bloc, at the agenda it likes best |
| Black ring around a dot | That bloc is marked as currently in government |
| Hollow grey circle with an arrow | Where a bloc started, before policy feedback moved it. Open and sponsor modes only, and it is the handle you drag while drift is showing |
| Red square (filled) | Policy as it now stands: your status quo, or where the votes so far have carried it. In the mechanism modes it sits at the end of the mechanism's chain |
| Red square (hollow) | The status quo you set, once policy has moved away from it. In the mechanism modes it appears as soon as the mechanism passes anything, and unless the coalition calculator owns it, this is the square you drag |
| Purple star | Your target. Drawn faint in the mechanism modes, which ignore it |
| Blue shading | Every agenda reachable from the status quo through some sequence of winning votes. Open and sponsor modes only: the mechanism modes run one sequence rather than searching, so nothing is shaded |
| Green dots | The core: agendas no winning coalition can overturn |
| Orange circle | The yolk (3 blocs only, simple majority only) |
| Dashed grey circles | The sponsor radius around each bloc (sponsor-radius mode only) |
| Solid red arrow | A planned winning vote in the search modes, a vote the mechanism executed under the monopoly setter and rotation |
| Solid grey arrow | A vote you have enacted with the implementation slider, so open and sponsor modes only |
| Dashed dark-red arrow | The step that breaks under policy feedback, so open and sponsor modes only |
| Dashed grey arrow | Steps after a break, never evaluated, so open and sponsor modes only |
Everything derived from the last analysis fades to 30% while a new one is computing, so a stale answer never looks like a current one.
Some things are deliberately not draggable, because they are derived rather than chosen:
Blocs stay draggable while policy feedback is showing drifted positions. The drag moves the bloc's own position, the hollow ghost, not the drifted dot the engine computed from it.
---
A bloc is a voter or a group voting together. Tap a row to edit it.
| Field | Notes |
|---|---|
| Name | Free text. Shown on the map and in coalition labels. Duplicates allowed |
| x, y | The agenda it would enact if it ruled alone. −100 to 100 |
| Weight | How many votes it casts. 0 or more. Equal weights mean 1 vote each |
| Currently in government | Feeds the status-quo calculator only |
Adding: "Add bloc" at the end of the list. Maximum 8, because the rule analysis enumerates every coalition, which is 2^n.
Deleting, three ways:
Minimum 2 blocs. Below that the app says so and computes nothing.
Marking as ruling is the badge on the right of each row: a filled blue capsule with a check when on, grey with an empty circle when off.
| Variant | Threshold |
|---|---|
| Simple majority | Support must exceed half the total weight |
| Two-thirds supermajority | Support must exceed two thirds of the total weight |
Ties always keep the status quo: support must be strictly greater.
A trap worth knowing: with 4 equal blocs, "more than half" means 3 of 4, which is a 75% rule wearing the word majority. That single fact explains most "unreachable" verdicts in the default scenario. See §8.2.
The footer always states the total weight and the exact threshold.
Who may put a point to a vote. Voting itself never changes under any of these: sincere, myopic, ties keep the status quo.
| Variant | Behaviour | Uses your target? | Walk and policy feedback? |
|---|---|---|---|
| Open rule | Any point may be proposed at no cost. The McKelvey worst case | Yes | Yes |
| Sponsor required | A point may be proposed only if at least 1 bloc strictly prefers it to the status quo. Reachability-neutral: it changes who is credited, not what can be reached | Yes | Yes |
| Sponsor radius | Additionally, the point must lie within R of a bloc that prefers it. This one genuinely restricts what can be reached | Yes | Yes |
| Monopoly setter | Iterated Romer-Rosenthal: one bloc proposes the winning point closest to its own ideal, repeatedly, and never proposes anything leaving it worse off | No | No |
| Rotating recognition | The right to propose passes around; each recognised bloc makes the same greedy proposal for itself | No | No |
The last column is the Implementation section: enacting the chain vote by vote, and policy feedback re-verifying the votes that remain. Both walk a plan aimed at your target, so the 2 mechanism modes have neither. They still draw red arrows, which are the votes the mechanism executed rather than a plan waiting to be walked.
Sponsor radius adds a slider, R from 10 to 100, and draws dashed circles. Small R keeps politics close to existing positions and puts distant targets out of reach.
Monopoly setter adds a picker for which bloc is the setter.
Rotating recognition adds:
A note on honesty in the rotation mode: it implements only the recognition mechanism inspired by Baron and Ferejohn, meaning who proposes and in what order. It is deliberately not the Baron-Ferejohn equilibrium, which needs forward-looking strategic voting this simulator does not model.
Every one of these controls has an i button giving a plain-language explanation. Hover on Mac, tap anywhere.
Where today's actual policy sits. Score current law the way you scored the blocs. It is an empirical input, usually near the position of whoever has governed, and it can legitimately sit far from the average of the blocs. Opposition positions never passed anything, so they exert no pull.
Two variants:
If the marked coalition cannot itself clear the pass threshold, the app warns you: it could not have enacted this status quo alone. If you mark nothing, the manual fields stay visible and in use.
The agenda you want to reach. Type the coordinates or drag the star.
Ignored entirely by the monopoly-setter and rotation modes, which follow the proposers' own interests. The star is drawn faint there as a reminder.
The section is always present, with the feedback toggle in it. The slider inside it appears only when there is a plan to walk: a search mode, with a target that is reachable and not already sitting on the status quo. Otherwise the section names which of those conditions is missing.
Note that "a chain exists" is not the test, and it is the natural thing to assume. The monopoly-setter and rotation modes produce a chain and draw it on the map as red arrows, while offering no walk and no feedback. What those modes lack is a plan aimed at your target, not a chain.
The rate is a modelling assumption, not a measured constant. Treat feedback runs as scenario exploration.
Changing anything the plan is computed from, the blocs, the weights, the rule, the proposal rights, the status quo or the target, resets the slider to 0. Renaming a bloc does not, except under rotation with an explicit list, where the names decide the order. Turning feedback on or off, and moving the rate, do not either: they change which of the planned votes still pass, not what the plan is.
Rename the ends of both axes, and turn the political-compass background on or off. These are presentation only: editing them never re-runs the analysis and never disturbs enacted votes.
The default labels, economic left/right and authoritarian/libertarian, suit party politics. For anything else, Suggest axes with Apple Intelligence takes a description of your situation and proposes the 2 disagreements that best separate the positions in it, each written as a pair of opposing views.
Measured examples. "A city council deciding a transport budget" returns more public transport against less public transport, and higher tax against lower tax. "A company board deciding a restructuring" returns fast against slow, and few sites against many sites.
Two things to know. Descriptions naming real parties or countries are often declined by the on-device guardrails, so reword them around the policies at issue instead. And accepting a suggestion renames the axes only: nothing on the map moves, so any positions already placed now mean something different and should be re-checked against the new labels.
---
The panel is ranked: the answer first, then the votes producing it, then the structure, then the caveats.
Context line: the status quo this verdict was measured from, and, when the calculator is on, which coalition produced it.
The answer, one of:
| Card | Meaning |
|---|---|
| Target reachable in N steps | A plan exists. Every listed vote is real and checkable |
| Reachable in N steps, but the plan breaks at step K | It works with fixed opinions; under feedback it stops working part way |
| Target unreachable | No chain exists on this grid, from here, under this rule |
| N proposals passed, ending at (x, y) | A mechanism mode ran; it ignores your target, and its votes are already executed, so there is nothing to walk or re-verify |
| Nothing passed | The mechanism is stable where it started |
| The sequence is going in circles | The mechanism revisited an agenda. Majority preference is intransitive here |
The chain: numbered steps, each showing the agenda, the coalition carrying it and its weight against the total. In the mechanism modes the same list is headed "Executed votes" and names the bloc that proposed each step. With policy feedback on, a step may instead read "breaks here" with the engine's reason, or "not evaluated, the plan breaks earlier".
Win-set line: how many agendas defeat the current status quo in a single vote. This is the number that explains chain length; see §8.1.
Where the walk stands, in the open and sponsor modes once you have enacted at least 1 vote: the new status quo, how the reachable count changed, whether the original status quo can still be recovered, and, with feedback on, how far blocs drifted and the drifted positions themselves.
Who holds power (collapsed):
| Readout | Meaning |
|---|---|
| Core | Agendas nothing can overturn, at grid resolution |
| Veto players | Blocs in every winning coalition. Any at all guarantees a core, which bounds chaining without stopping it |
| Dummies | Blocs critical in no coalition: real weight, no power |
| Nakamura number | 4 or more guarantees a core on this 2-dimensional map; 3 lifts the guarantee without promising chaos; infinity means veto players have locked it. Describes the voting rule under an open rule. Under the monopoly setter or rotating recognition the number is unchanged and tells you nothing about the outcome, which those modes decide by who may propose |
| Power bars | Banzhaf shares. Weight and power come apart, and the bars show it |
| Yolk note | Whether it is exact, approximate, or not drawn, and why |
What this verdict assumes (collapsed): the sincere-myopic voter model, the setter's perfect knowledge, costless votes, the exactness asymmetry, and the sensitivity rule.
A reachable verdict is exact: every listed vote can be checked by hand. An unreachable verdict, and a core, are statements about the step-2 grid. A winning region thinner than the grid spacing could hide inside it. Treat a borderline verdict with care.
---
The tray icon opens saved scenarios.
A scenario stores blocs, rule, proposal rights, status quo and target. It does not store axis labels or how far you have enacted a chain. Saved scenarios survive relaunching.
On Mac: ⌘L opens the list, ⌘S opens it ready to save.
---
The book icon opens:
---
Because the default status quo is extreme, and a status quo every bloc dislikes is trivially overturned. From (80, −40) in the default scenario, 3,651 agendas beat it in a single vote, and 89.7% of everything reachable is one step away.
Win-set size collapses as the status quo becomes more comfortable:
| Status quo | Agendas beating it in one vote |
|---|---|
| (80, −40) | 3,651 |
| (60, −30) | 1,768 |
| (40, 20) | 138 |
| (24, 6) | 0, a core point |
To see long chains, load Learn → Load an example → The 5-voter example, or move the status quo somewhere the blocs are content with.
Usually because a core exists. Here is the whole thing on the preloaded scenario, so you can run it rather than take it on trust. Leave the 4 blocs and the status quo where they start, and drag the target to (60, -100), bottom edge, right of centre.
With 4 equal blocs, "more than half" is 3 of 4: Nakamura 4, a 9-point core, and only 4,070 of 10,201 agendas reachable ever. That target is one of the 6,131 that are not, and no ordering of votes reaches it.
Now delete M, so the same remaining voters need 2 of 3. Nakamura 3, no core, 9,677 reachable, and the target that could not be reached at all becomes a 4-step chain. Nobody's opinions changed; the rule did.
Dragging a bloc until the target turns reachable is not a strategy, it changes who the voters are. That is a legitimate sensitivity check (if the verdict flips under a small nudge, it was never solid), but it is not something an agenda setter can do. The setter controls the order of votes, not what anyone wants.
The app runs the closest thing to it, as policy feedback along a plan, and the answer is no. You can watch it fail, though it takes a little steering by hand.
Set up 8.2 again with all 4 blocs and the target at (60, -100), and read what the app says first: nothing reaches that target, so the Implementation section tells you there is no plan for drift to break and the feedback toggle has nothing to act on. Running the long game therefore means steering by hand. Turn feedback on at 0.15, move the target onto the reachable agenda that sits closest to (60, -100), enact that single step, then look at what is reachable from the new status quo and repeat. The table below is the 3 rounds that produces.
| after | agendas reachable | closest anyone gets to the target |
|---|---|---|
| no enactments | 4,070 | 39.3 |
| 1 round | 2,845 | 39.3 |
| 2 rounds | 2,055 | 39.3 |
| 3 rounds | 1,480 | 39.3 |
The reachable set collapses by nearly two thirds and the closest approach does not move at all, not by a unit, not by a tenth. Feedback pulls blocs toward what was enacted and never past it, so every round spends options without buying any ground. It entrenches rather than advances.
That is a statement about one mechanism, not about politics. Real electorates move for reasons this map cannot represent: thermostatic response, backlash, generational replacement, a new issue becoming salient. Any of those changes who the blocs are, and every verdict changes with them.
A chain is computed once, assuming nobody moves. With feedback on, each enacted agenda moves the blocs, and the next planned vote is re-checked against the moved blocs. It breaks when its coalition no longer clears the quota, or, in sponsor-radius mode, when no drifted bloc that prefers the proposal is still within R to put it forward. The plan was written for an electorate that no longer exists by the time that vote arrives. Switch feedback off and the same plan runs to the end.
Only the open and sponsor modes can break, because only they compute a plan to break.
The monopoly-setter and rotation modes ignore the target by design. Each recognised bloc proposes what suits itself, and the red arrows you are looking at are the votes that passed, not a route to your star. The same modes have no implementation walk and no policy feedback: both of those re-verify a plan aimed at a target, and there is no plan here. Use the open rule or a sponsor mode to aim at something.
That is a Condorcet cycle: majority preference here is intransitive, so there is no best policy to settle on. It is the reason an agenda setter has power at all: whoever proposes last decides where it stops.
Everything derived from the last analysis fades while a new scan runs, and the verdict says so at the top: "Recomputing. The figures below are the previous answer." A full scan is a fraction of a second, longer on a phone than on a Mac. Faded figures are the previous answer with a new one on its way.
---
Where a position is edited, a "Suggest placement with Apple Intelligence" control appears if the device supports it and it is switched on. Describe a policy in words and the on-device model proposes coordinates with a one-line rationale, calibrated against the points you have already placed. Nothing moves until you accept.
Measured against the manual's own worked examples, the first axis is often good ("abolishing income tax entirely" scored 80 where the manual says 75), while the second is unreliable: the model rarely returns a value near 0 and tends to pin an axis the description says nothing about. Check both numbers. It is a first guess, not a measurement.
On a device with no Apple Intelligence the control is hidden entirely. Where it is present but switched off or still downloading, the app says so.
---
The Mac column describes the Mac Catalyst build, which ships alongside the iPhone and iPad version.
| iPhone | iPad | Mac | |
|---|---|---|---|
| Layout | Map + tabs | 3 panes in landscape, tabs in portrait | 3 panes when wide |
| Delete a bloc | Swipe, long-press, or the editor | Same | Right-click or the editor |
| Menus | none | none | File, Edit, View, Help |
| Tooltips | Tap the i | Tap the i | Hover or tap |
Mac keyboard shortcuts: ⌘L scenarios, ⌘S save, ⌘Z undo, ⌘0 fit map, ⌘? help.
---