Changesets: simulate before you touch a season
Significant mutations in Peer10 run simulation-first: you express an intent, the system simulates it and returns a diff, a human approves, execution applies it — and undo reverses it. This is the API’s differentiator: a volunteer director can let software (or an agent) propose sweeping changes to a league of real families, because nothing sweeping lands without a previewed diff and everything has a way back.
The workflow
# CLI
peer10 changesets list --status pending
peer10 changesets preview <id> # the simulated diff — what WOULD change
peer10 changesets approve <id>
peer10 changesets execute <id>
peer10 changesets undo <id> # reverses an executed changeset// SDK
const diff = await client.changesets.preview(id);
await client.changesets.approve(id);
await client.changesets.execute(id);
await client.changesets.undo(id);Scope, stated honestly
Plain CRUD endpoints (create/update/remove) mutate directly with the caller’s permissions — they are not simulation-first, and neither are the generated CLI commands or MCP tools that wrap them. The changeset surface (/api/v1/changesets/*, the peer10 changesets commands, the peer10_changeset_* MCP tools) is the reviewed path. Prefer it for anything you would not want to explain to a league director afterwards.