Skip to content

The change workflow · in Pi

One change, from /ideation to accept.

Field Notes, an invented app, loses the note you were writing when you lose signal on a trail. Here is that fix, taken from one sentence to reviewed commits. Every contract page and widget frame below was rendered by ideation’s own code when this site was built; only the conversation is written for the page.

01Say what should change

Open /ideation and describe it the way you would to a colleague. The agent picks a depth and says why in one line, so you can overrule it in a word. It reads the code first, then asks only what the code cannot answer, each question with a recommendation.

› /ideation
What should change?

› Notes vanish when I lose signal on a trail. Save them on the device and sync later.
Depth: short plan. Four units, so not “just do it”, and a fork the code can’t settle; the rest follows it. Say “just do it” or “interview” to change it.
Read src/notes/, src/api/client.ts and the sync tests. The fork: should “the offline indicator feels right” be a test, or your call? Recommended: a test for the state, plus one airplane-mode walkthrough by you.

› Both.
Wrote docs/ideation/offline-drafts/plan.json, with that decision answered. Preparing it for approval.
▎ Preparing contract▎ Ready for review  Contract ↗
  Offline drafts for Field Notes
  Review contract · approval required to start
▎ Ready for your review  Contract ↗
  Offline drafts for Field Notes
  Review the contract · /ideation to approve or revise

The last three blocks are real: the tool call, which prepares the plan folder, its result, and the widget that stays above the editor. Condensed here: at short plan the four critics read plan.json once, and /ideation respondopens the plan page (live with pi-artifacts) or a terminal form for its decisions, each answer you confirm a new plan version. Only then does the agent prepare it. Later, /ideation status says: Your contract is ready. Open /ideation to review, approve or revise it.

02Read the contract

Preparing derives the run contract from plan.json, a draft nothing has frozen yet, and its page opens in your browser by itself. This is the contract, not the plan page; it shows what approval would bind: before and after, what must hold, how the work connects, and a verification plan that claims no results yet. The exact paths and commands wait in the boundaries at the bottom. It is stamped Draft, because nothing is approved.

Contract · Offline drafts for Field Notes · revision 1Open full page ↗

03Revise it on the same page

Something bothers you about conflicts, so you say so, on the page or in chat. A comment is feedback, never permission. The agent writes the plan’s next version and prepares it again as revision 2, and the page updates in place: same link, comments kept, and a delta of exactly what moved.

comment on “A conflicting edit shows a banner”feedback · not approval

If it doesn’t overwrite, where does the other edit go?

Revision 2 keeps both versions and says so, records the decision (last write wins was rejected), and puts syncing attachments out of scope. Nothing starts until you approve.

Contract · Offline drafts for Field Notes · revision 2Open full page ↗

04Approve once

/ideation approve remembers the prepared change, so there is no path to copy; with pi-artifacts 1.6.0 (not yet published), the live page’s Approve in Pibutton brings up the same dialog, and on 1.5.x the button stays hidden. The page never approves. The confirmation is short on purpose: it binds the paths and commands, and the complete agreement stays in the browser. Yes starts work immediately, in an isolated worktree on its own branch.

› /ideation approve
Approve change?
Change: Offline drafts for Field Notes
Scope: 1 path(s), 6 exact command(s).
Checks: 6 command + 1 human; 4 unit(s), strict.
Local commit: yes. No push, merge, deploy or new dependencies.
No time or token limit: it runs until verified, paused or stopped.
Exact scope & commands: review the opened contract.
Trusted project scripts; this is not an OS sandbox.
Starting point: 9d27a61f0c4b.
Approve those boundaries and start in an isolated checkout?
Brief: v2 / f8599f30b785
Model: anthropic/claude-sonnet-4-5
Contract: open full agreement

› YesNo
Approval recorded. Starting Offline drafts for Field Notes in an isolated workspace. The contract will update as work progresses.

Uncommitted files in your checkout? Approval asks first: start from your last commit and leave them alone, or include them as the starting point. Either way nothing is stashed or edited, and the confirmation says which you chose.

05Walk away

Each unit gets a working plan just before it runs, a build, and an independent review, and its commit carries the Ideation-Unit trailer. While work is live the widget moves: a spinner, the active step’s shimmer, a shine along cells that evidence already filled. Motion only decorates recorded state; it never moves a count. The same contract page is now the live page, stamped Approved.

▎ ⠋ Building · 6m 17s  Contract ↗
  Conflict banner
  ✓ Local draft store  ✓ Sync queue  ◐ Conflict banner  ○ Offline indicator
  ━━━━━━━━━━──────────  2/4 deliverables reviewed
Contract · Offline drafts for Field Notes · runningOpen full page ↗

Need to step in? /ideation pause stops at a safe boundary and resume continues within the same approval. If a check fails, its output goes to the fixer; if the run cannot make progress it stops and says why. And you are never stuck: /ideation exit stops the run, offers to bring its work into your checkout (or keep it on its branch) and puts ideation away.

06Ready for review

All 6 checks pass against the recorded source, and one human judgment is left for you. The widget celebrates once, because it saw the change happen, then settles. Ready for review is not accepted, merged or deployed.

▎ ✦ Ready for review  Contract ↗
  Offline drafts for Field Notes
  ✓ Local draft store  ✓ Sync queue  ✓ Conflict banner  ✓ Offline indicator
  ━━━━━━━━━━━━━━━━━━━━  6/6 checks verified
  1 human judgment · accept after review

Pi also says: Ideation is ready for review. Open the contract link to inspect the evidence.

Contract · Offline drafts for Field Notes · ready for reviewOpen full page ↗

07Accept, then merge it yourself

You read the evidence, and you do the part only a person can: In airplane mode, write a note, reconnect, and confirm nothing was lost. Then /ideation accept records your decision against this exact candidate. It changes none of your code: it records the decision and refreshes the receipt and contract in docs/ideation/.

› /ideation accept
Accept change?
Change: Offline drafts for Field Notes
Evidence: 6/6 objective checks verified.
Human judgments to accept: 1.
Review the evidence and judgments in the opened contract.
Accept this candidate? Nothing will be merged, pushed or deployed.
Candidate: c41e09d7b2a8
Contract: open evidence and judgments

› YesNo
▎ Accepted  Contract ↗
  Offline drafts for Field Notes
  ━━━━━━━━━━━━━━━━━━━━  6/6 checks verified

The commits are on ideation/offline-drafts-f8599f30. Review the diff and merge it the way you merge anything else; ideation never does that part. The plan and its versions, the brief, the contract and the receipt are in docs/ideation/offline-drafts/ if you want the record in history.

Contract · Offline drafts for Field Notes · acceptedOpen full page ↗

Your change is next.

Install it and run /ideation. Still working out what to build? The planning walkthrough starts from a brain dump instead.

pi
pi install git:github.com/nicknisi/ideation
pi install npm:@nicknisi/pi-artifactsoptional: live plan and contract pages
pi · planning
pi install npm:@nicknisi/pi-subagents
pi install npm:@juicesharp/rpiv-ask-user-question