IonWarp logoIonWarp
Get started
IonWarp Docs
API

Plans

Proposed work — discovered from the repo or written by IonWarp — scored, reviewed and approved before anything is written back, plus the learnings that inform it.

A plan is proposed work with a paper trail: where it came from, what it is meant to achieve, how simple it is, whether a human approved it, and whether IonWarp was allowed to open a draft PR for it. Alongside plans sit learnings — one-sentence things IonWarp believes about this repo, each with an expiry date, fed into every later review.

Retrieve a planGET /api/v1/plans/learning-tests-run-under-bun

curl "https://ionwarp.com/api/v1/plans/learning-tests-run-under-bun" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_acme"
Walk me through plan {id} and what it would change
data_get {
  "collection": "plans",
  "object_id": "learning-tests-run-under-bun"
}

{
  "object": "plan",
  "id": "obj_123",
  "approval_status": "pending",
  "repo_write_status": "not_requested",
  "repo_artifact_path": "repo artifact path",
  "target_outcome": "One retry ladder serves every webhook path.",
  "summary": "Three near-identical retry ladders diverged; collapse them into the shared helper.",
  "created_at": "2026-07-25T12:00:00.000Z",
  "updated_at": "2026-07-25T12:00:00.000Z"
}

Every field is in the plans reference; learnings are learningslearning, why, learned_at and forgets_at, so a belief about the repo expires instead of hardening into folklore.

The states a plan moves through

status walks discovered → proposed → reviewed → approved → active → completed (or superseded). approval_status is tracked separately as pending / approved / rejected, and requires_approval defaults to true — a plan does not get to skip a human by being confident. Until it is approved, it gets no repo write: the gate is a field on the object, not an instruction in a prompt.

repo_write_mode has exactly one value, draft_pr, and repo_write_status tracks it: not_requesteddraft_pr_requesteddraft_pr_opened, or failed. source_kind says where the plan came from — repo (a markdown file found in the repository), ionwarp (IonWarp proposed it), or task.

Where plans come from

Discovery is path-based and deterministic: a repo markdown file becomes a plan when it lives under docs/plans/, prds/, or .ionwarp/plans/. Each genuinely new document gets a single-reviewer plan-review chain dispatched against its exact path, so the reviewer bubbles on the Plans page are precise rather than approximate. Re-discovering a plan that already exists changes nothing and creates no duplicate.

study is the pass that does both halves — it discovers repo plans and upserts learnings, and re-runs once 10 PRs have merged since the last one. repeat-failure-learning turns those learnings back into review signal.

A study or discovery pass that cannot run says so by name on the run — read it with Debugging a Run — and a review that could not load learnings continues without them and names the gap rather than pretending it had them.

Next: Reviews for the pipeline plan-review runs on · Repositories & PRs for the repo a plan is written back to.

On this page

IonWarp logoIonWarp

Ready to build? Connect an agent and go — no credit card needed to start.

Get startedSee our plans