Mission Ledger (Task + Progress)
Overview
You are the orchestrator. The mission ledger (.navin/board/mission.json) plus the project board are the single source of truth - never keep a phantom plan only in chat.
- Task Ledger: goal, constraints, facts, missing_info, acceptance_criteria, versioned steps, history
- Progress Ledger: current step, evidence, stall/loop, budgets, next_actor, pause
Use the board tool ledger actions: ledger_init, ledger_get, ledger_update, ledger_progress, ledger_replan, ledger_pause, ledger_resume.
Orchestrator protocol (every step)
- Read
ledger_get + board next (never guess).
- Choose one ready step (or spawn parallel independent ready steps in /cruise|/mission).
- Act with Navin tools.
- Verify per step
validation (test / lint / verify / manual / none).
- Write
ledger_progress with ok, evidence, progress.
- Decide: next | retry (cap max_retries) |
ledger_replan local | ledger_pause.
- Never mark
done without evidence when validation is test/lint/verify.
One mission at a time
There is one ledger per project (.navin/board/mission.json) and it is replayed
into your context every turn. Two things follow.
- A one-off errand is not a mission. "Generate a deck", "rename this file",
"answer this question" get done, not planned. Do not
ledger_init and stop
for Build. A ledger is for a multi-step system the user asked you to carry,
not for every request that happens to take three tool calls.
- The goal you are shown is not automatically yours. When a new request has
nothing to do with the mission in context, do not restate that mission's goal,
criteria or facts. That is how a request for a slide deck ends up filed under
"finish the CRM", with the deck's steps hanging off someone else's plan.
ledger_init therefore refuses while a mission is draft/running/paused/
blocked. When it does, pick one:
| The request is |
Do |
| part of the open mission |
board create the tasks, then ledger_update |
| a separate one-off |
just do the work, no ledger |
| the open mission is finished |
ledger_update status=done, then ledger_init |
| the open mission is abandoned |
ledger_init with replace=true, and say so |
Planning (/blueprint)
- If the request is a one-off errand, do not plan. Switch to Agent and do the work.
- Fill facts and missing_info honestly; do not invent facts.
- Create board tasks with
depends_on, acceptance, validation.
ledger_init with goal + criteria + step_ids.
- Stop only for multi-file systems, migrations, or when the user asked only for a plan. Do not claim or execute in that case.
Execution (/forge, /cruise, /mission)
- Prefer local replan over rewriting the whole plan.
- On loop_detected or high stall_count →
ledger_replan around the failed step.
- On budget/human wall / blocking missing_info →
ledger_pause and ask clearly.
- Subagent briefs must include Role, Goal, Context paths, Constraints, Done when (acceptance), Do not.
- Merge subagent evidence before marking the parent step done.
History
Every meaningful plan change must go through ledger version bumps (ledger_replan, ledger_update, pause/resume) so history.reason explains why the plan changed.
1---2name: mission-ledger3description: Magentic-style Task/Progress Ledger orchestration for /blueprint, /forge, /cruise, and /mission. Use whenever planning or executing multi-step work on the board.4---56# Mission Ledger (Task + Progress)78## Overview910You are the orchestrator. The mission ledger (`.navin/board/mission.json`) plus the project board are the single source of truth - never keep a phantom plan only in chat.1112- **Task Ledger**: goal, constraints, facts, missing_info, acceptance_criteria, versioned steps, history13- **Progress Ledger**: current step, evidence, stall/loop, budgets, next_actor, pause1415Use the `board` tool ledger actions: `ledger_init`, `ledger_get`, `ledger_update`, `ledger_progress`, `ledger_replan`, `ledger_pause`, `ledger_resume`.1617## Orchestrator protocol (every step)18191. **Read** `ledger_get` + `board next` (never guess).202. **Choose** one ready step (or spawn parallel independent ready steps in /cruise|/mission).213. **Act** with Navin tools.224. **Verify** per step `validation` (`test` / `lint` / `verify` / `manual` / `none`).235. **Write** `ledger_progress` with `ok`, `evidence`, `progress`.246. **Decide**: next | retry (cap max_retries) | `ledger_replan` local | `ledger_pause`.257. **Never** mark `done` without evidence when validation is test/lint/verify.2627## One mission at a time2829There is one ledger per project (`.navin/board/mission.json`) and it is replayed30into your context every turn. Two things follow.3132- **A one-off errand is not a mission.** "Generate a deck", "rename this file",33 "answer this question" get done, not planned. Do not `ledger_init` and stop34 for Build. A ledger is for a multi-step system the user asked you to carry,35 not for every request that happens to take three tool calls.36- **The goal you are shown is not automatically yours.** When a new request has37 nothing to do with the mission in context, do not restate that mission's goal,38 criteria or facts. That is how a request for a slide deck ends up filed under39 "finish the CRM", with the deck's steps hanging off someone else's plan.4041`ledger_init` therefore refuses while a mission is `draft`/`running`/`paused`/42`blocked`. When it does, pick one:4344| The request is | Do |45| --- | --- |46| part of the open mission | `board create` the tasks, then `ledger_update` |47| a separate one-off | just do the work, no ledger |48| the open mission is finished | `ledger_update status=done`, then `ledger_init` |49| the open mission is abandoned | `ledger_init` with `replace=true`, and say so |5051## Planning (/blueprint)5253- If the request is a one-off errand, do not plan. Switch to Agent and do the work.54- Fill facts and missing_info honestly; do not invent facts.55- Create board tasks with `depends_on`, `acceptance`, `validation`.56- `ledger_init` with goal + criteria + step_ids.57- Stop only for multi-file systems, migrations, or when the user asked only for a plan. Do not claim or execute in that case.5859## Execution (/forge, /cruise, /mission)6061- Prefer local replan over rewriting the whole plan.62- On loop_detected or high stall_count → `ledger_replan` around the failed step.63- On budget/human wall / blocking missing_info → `ledger_pause` and ask clearly.64- Subagent briefs must include Role, Goal, Context paths, Constraints, Done when (acceptance), Do not.65- Merge subagent evidence before marking the parent step done.6667## History6869Every meaningful plan change must go through ledger version bumps (`ledger_replan`, `ledger_update`, pause/resume) so `history.reason` explains why the plan changed.