Apps / Agenda Simulator / User guide

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.

Last updated: 25 August 2026

Contents

1. What the app does

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?

Which agenda-setting theory this is

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.

---

2. The screen

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.

Toolbar

ControlWhat it does
Tray icon (top left)Saved scenarios: save, load, delete
Undo arrowReverses the last input change
Book icon (top right)Learn: glossary, articles, loadable examples

---

3. The map

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.

What each mark means

MarkMeaning
Black dot with a nameA bloc, at the agenda it likes best
Black ring around a dotThat bloc is marked as currently in government
Hollow grey circle with an arrowWhere 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 starYour target. Drawn faint in the mechanism modes, which ignore it
Blue shadingEvery 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 dotsThe core: agendas no winning coalition can overturn
Orange circleThe yolk (3 blocs only, simple majority only)
Dashed grey circlesThe sponsor radius around each bloc (sponsor-radius mode only)
Solid red arrowA planned winning vote in the search modes, a vote the mechanism executed under the monopoly setter and rotation
Solid grey arrowA vote you have enacted with the implementation slider, so open and sponsor modes only
Dashed dark-red arrowThe step that breaks under policy feedback, so open and sponsor modes only
Dashed grey arrowSteps 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.

Interacting with the map

  • Drag a bloc, the status quo or the target to move it. Positions clamp to the map edges.
  • Drag empty space to pan the board.
  • Pinch to zoom, up to 8×.
  • Fit appears in the corner once you have zoomed or panned; tap to reset. On Mac, ⌘0.

Some things are deliberately not draggable, because they are derived rather than chosen:

  • The status quo when "Compute from the ruling coalition" is on.
  • The status quo once you have enacted votes (it is then a point on the chain). This lock does not apply in the mechanism modes, where nothing is enacted by you: the filled square sits at the end of the mechanism's chain and the hollow one, your input, is still draggable.

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.

---

4. Inputs, control by control

4.1 Blocs

A bloc is a voter or a group voting together. Tap a row to edit it.

FieldNotes
NameFree text. Shown on the map and in coalition labels. Duplicates allowed
x, yThe agenda it would enact if it ruled alone. −100 to 100
WeightHow many votes it casts. 0 or more. Equal weights mean 1 vote each
Currently in governmentFeeds 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:

  1. Swipe the row (iPhone and iPad).
  2. Right-click the row for a context menu (Mac), or long-press (iPhone/iPad).
  3. Open the bloc and use "Delete this bloc", with a confirmation.

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.

4.2 Voting rule

VariantThreshold
Simple majoritySupport must exceed half the total weight
Two-thirds supermajoritySupport 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.

4.3 Proposal rights

Who may put a point to a vote. Voting itself never changes under any of these: sincere, myopic, ties keep the status quo.

VariantBehaviourUses your target?Walk and policy feedback?
Open ruleAny point may be proposed at no cost. The McKelvey worst caseYesYes
Sponsor requiredA 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 reachedYesYes
Sponsor radiusAdditionally, the point must lie within R of a bloc that prefers it. This one genuinely restricts what can be reachedYesYes
Monopoly setterIterated Romer-Rosenthal: one bloc proposes the winning point closest to its own ideal, repeatedly, and never proposes anything leaving it worse offNoNo
Rotating recognitionThe right to propose passes around; each recognised bloc makes the same greedy proposal for itselfNoNo

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:

  • Recognition sequence: round-robin (bloc order), weight-random (drawn in proportion to weight), or explicit list (type names separated by commas).
  • Rounds: 1 to 100 turns.
  • Seed: only for weight-random. Fixes the draw so a run repeats exactly.

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.

4.4 Status quo

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:

  1. Manual: type or drag x and y.
  2. Compute from the ruling coalition: the weighted average of the blocs you marked as governing. Each partner pulls the bargain toward itself in proportion to its weight. This mirrors the weight-proportional pattern coalition research documents for dividing government payoffs. It is an estimate, not a theorem: a small partner the coalition cannot survive without often extracts more.

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.

4.5 Target

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.

4.6 Implementation

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.

  • Agendas implemented so far: a slider from 0 to the chain length, shown only when there is a plan to walk, so not in the mechanism modes and not when the target is unreachable. Each enacted agenda becomes the new status quo and the map recomputes from there. With preferences fixed, the reachable set can only shrink or hold. With feedback on, the figure on the label is what you asked for and the walk stops at the step where the plan breaks, so dragging past that point changes nothing on the map.
  • Policy feedback: off by default, and it acts on a plan, so it does anything only in the open and sponsor modes. When on, every enacted agenda pulls all blocs toward it at a rate you set (0.05 to 0.50), the blocs visibly move with drift arrows, and every remaining planned vote is re-verified against the moved blocs. A plan computed for fixed opinions can break, and the app says at which step. With drift on, the shrink-only guarantee no longer holds. In the monopoly-setter and rotation modes the toggle stays where you put it and changes nothing on the map: those modes run a mechanism forward under its own rules instead of walking a plan, so there is no fixed sequence for drift to re-verify.

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.

4.7 Map labels

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.

---

5. Reading the verdicts

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:

CardMeaning
Target reachable in N stepsA plan exists. Every listed vote is real and checkable
Reachable in N steps, but the plan breaks at step KIt works with fixed opinions; under feedback it stops working part way
Target unreachableNo 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 passedThe mechanism is stable where it started
The sequence is going in circlesThe 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):

ReadoutMeaning
CoreAgendas nothing can overturn, at grid resolution
Veto playersBlocs in every winning coalition. Any at all guarantees a core, which bounds chaining without stopping it
DummiesBlocs critical in no coalition: real weight, no power
Nakamura number4 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 barsBanzhaf shares. Weight and power come apart, and the bars show it
Yolk noteWhether 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.

The exactness asymmetry

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.

---

6. Scenarios

The tray icon opens saved scenarios.

  • Save: name it and save. Saving under a name you have used replaces it.
  • Load: tap any saved row.
  • Delete: swipe (iPhone/iPad).

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.

---

7. Learn

The book icon opens:

  • What everything on screen means: a 22-term glossary.
  • How to read the map.
  • The experiment worth running first: two buttons that load the locked and steerable weight configurations so you can watch the verdict flip.
  • Load an example: the 5-voter McKelvey chaos setup, the locked configuration, the steerable one, and a 3-bloc chaos setup.
  • Placing real agendas: how to score real policies onto the axes.
  • Reading the verdict.
  • Why unreachable is not impossible.
  • What this will not tell you.
  • Which agenda-setting theory is this?

---

8. Questions that come up

8.1 Why does it always say "reachable in 1 step"?

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 quoAgendas 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.

8.2 Why is my target unreachable, and why does moving a bloc fix it?

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.

8.3 Can I move opinion over many steps until the target comes in range?

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.

afteragendas reachableclosest anyone gets to the target
no enactments4,07039.3
1 round2,84539.3
2 rounds2,05539.3
3 rounds1,48039.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.

8.4 What does "break" mean?

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.

8.5 Why didn't the mechanism reach my target?

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.

8.6 The sequence keeps returning to the same agendas

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.

8.7 The verdict looks stale

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.

---

9. Apple Intelligence placement suggestions

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.

---

10. Platform differences

The Mac column describes the Mac Catalyst build, which ships alongside the iPhone and iPad version.

iPhoneiPadMac
LayoutMap + tabs3 panes in landscape, tabs in portrait3 panes when wide
Delete a blocSwipe, long-press, or the editorSameRight-click or the editor
MenusnonenoneFile, Edit, View, Help
TooltipsTap the iTap the iHover or tap

Mac keyboard shortcuts: ⌘L scenarios, ⌘S save, ⌘Z undo, ⌘0 fit map, ⌘? help.

---

11. What this will not tell you

  • Blocs are single points, so splits inside a bloc are invisible.
  • Voters judge only the 2 proposals in front of them, the worst case for manipulability. Voters who anticipate the whole agenda are harder to steer.
  • The setter is assumed to know every position exactly, and votes are assumed to cost nothing. Both are generous to the setter, so read a chain as a worst case rather than a forecast.
  • Positions are estimates. A verdict that flips under a small change in a placement is not a finding. Nudge each bloc a few units and see whether the answer survives.
  • The map is a 2-dimensional projection. If a fight is really about a third dimension your axes do not capture, the simulator cannot see it.
  • A chain lists coordinates, not drafted legislation. Turning step 3 into a bill that voters perceive at exactly that position is the hard part, and the mathematics leaves it to you.