The Planning editor keeps a hack's plan next to the project: the current goal, milestones, the intended play route with the items each step gives, the open design decisions, and links to notes. It works for vanilla A Link to the Past projects and any hack. It does not need a ROM, and it never writes the ROM.
Open it from the activity bar (route icon) or the command palette ("Switch to Planning Editor"). Two windows open:
room: and map: targets are buttons: they open the room in the Dungeon editor or the map in the Overworld editor. Other targets are shown as text.
Edits are held in memory until you press Save plan or save the project. Save writes only if the file still holds the bytes the editor loaded. If an agent changed only the plan's agent status in the meantime, Save keeps your edits and takes the agent's new status. Any other change on disk refuses the save and keeps your edits in the window. Reload asks before discarding unsaved edits. Quit, close and opening another project ask you to save or discard plan edits first.
The plan is a JSON file named in the .yaze project file:
file is absolute or relative to the .yaze file. It may point outside the repository, for example to a shared notes folder used by several checkouts. If the project has no [planning] section, the editor offers to create <project>.plan.json next to the project file and adds the section.
yaze.plan/1)Only schema is required. Status values the editor offers:
| Field | Values |
|---|---|
milestone status | planned, active, done |
step kind | story, errand, dungeon, shrine, boss, optional |
item status | implemented, prototype, decided, proposed, open |
decision status | open, decided, dropped |
The current milestone is the one marked active, otherwise the one whose dates contain today.
Targets are <kind>:<id> strings: room:0x0C, map:0x4B, area:D1, step:D4, item:bow, decision:d1-boss, marker:<world>:<id>.
Keys and sections the editor does not know are kept when it saves, so other tools can store more in the same file (the Oracle of Secrets plan keeps its overworld notes, markers and concept boards under overworld and concepts).
Agents record what they observe (state, next step, evidence, pull requests) in one top-level agent_status section, keyed by existing plan IDs. The editor shows each observation, read-only, under the step, item or decision it describes, next to your editable note. Agents never write notes, answers, titles, route order, markers or other sections.
Keys are step:<id>, item:<id>, decision:<id> or milestone:<id>, and the ID must exist in the plan. Renaming a step or item in the editor moves its observation. Observations whose entry was deleted are listed as orphaned.
Read the plan and note its SHA-256 and IDs:
--project MyHack.yaze reads the project's [planning] file instead.
Write an update. base_sha256 is the sha256 from step 1. Each observation replaces the stored one for that key; remove deletes keys.
Check the diff, then apply it:
The command refuses, without writing, an update whose base_sha256 no longer matches the file, an unknown ID or key kind, a malformed observation, and a plan whose agent_status is not an object. Reread the plan and rebuild the update after a refusal. Sending the same observations again reports unchanged and does not write, even with a new observed_utc. Writes go through the same locked compare-and-swap publisher as the editor's Save.