pi-live-decision-board
Pi extension for a live, mutable goal, assumptions, and decisions board injected into agent context.
Package details
Install pi-live-decision-board from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-live-decision-board- Package
pi-live-decision-board- Version
0.1.7- Published
- Jun 23, 2026
- Downloads
- not available
- Author
- maverobot
- License
- MIT
- Types
- extension
- Size
- 153.4 KB
- Dependencies
- 0 dependencies · 4 peers
Pi manifest JSON
{
"extensions": [
"./extensions/live-decision-board.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-live-decision-board
A Pi package that adds a live, mutable goal, assumptions, and decisions board to Pi coding sessions.
The board is visible while the agent works, editable by the user, writable by the model through a tool, injected into future model context, and enforced before stale active-item mutations.

Install
Requires Pi >=0.79.0 and Node.js >=22.19.0.
pi install npm:pi-live-decision-board
Or install directly from GitHub:
pi install git:github.com/Maverobot/pi-live-decision-board
Or test from a local checkout:
pi -e .
Commands
Primary commands
| Command | Purpose |
|---|---|
/board-manage |
TUI-only primary keyboard workflow for selecting board items and editing, archiving, or clearing active items |
/goal <text> |
Quick capture: set the single current goal |
/assume <text> |
Quick capture: add an active assumption |
/decide <text> |
Quick capture: add an active decision |
/board-cleanup |
TUI-only manual review of active board items and archive obvious historical entries after confirmation |
/board-snapshot |
Show the active board context snapshot as a visible message |
/board-history |
Show active plus inactive archived board history as a visible message |
/board-toggle |
Collapse or expand the persistent board body while keeping the summary line visible |
Power-user commands
| Command | Purpose |
|---|---|
/board |
Power-user editor for the live board markdown |
/board-archive <id> |
Power-user fallback to archive an item by id; prefer /board-manage |
/board-clear |
Power-user fallback to archive all active board items after confirmation; prefer /board-manage |
Agent tool
The extension registers a decision_board tool with actions:
listaddupdatearchivereview_cleanup
update is for same-meaning text corrections only. It requires the item id and observed itemVersion from the current board listing; stale item versions are refused. Semantic changes should use archive plus add instead.
archive lets the current agent directly archive a routine deprecated or stale active item: the item leaves active context but remains retained in board history. It requires the item id, the observed itemVersion from the current board listing, and a reason; stale item versions are refused.
review_cleanup accepts cleanup recommendations generated by the current agent and opens the cleanup manager UI for interactive review and confirmation before applying anything. It requires TUI/UI mode. Each recommendation must include id, itemVersion, observedText, observedStatus, observedStrength, action, reason, riskLevel, and requiresExplicitConfirmation; stale or malformed recommendations are skipped.
Prompt guidance tells the model to keep one current goal plus assumptions and decisions that should affect future behavior, not routine implementation progress. It also tells agents to clean stale board items automatically when scope or goals change, using direct archive for routine stale items and decision_board.review_cleanup for ambiguous current-context changes.
How it works
- Board state is persisted in Pi session custom entries and restored from the active branch.
- The widget shows a compact summary followed by indented Goal, Decisions, and Assumptions sections with all active items by default;
/board-togglecollapses the body while keeping the summary line visible. Item keys are hidden in the primary widget to reduce visual noise. Footer status and titled separator lines are intentionally suppressed to avoid duplicate or noisy board chrome. /board-snapshotrecords the active context view (active items plus board rules) as a visible message./board-historyrecords a visible board-history view with active items plus inactive archived items retained after archive or cleanup actions./board-manageis the primary TUI mutation UI for existing board items:↑↓/j/kselect,enter/eedit,rarchive,cclear active,q/escclose. It hides item keys by default because actions are selection-based, but rows include item kind for context. Edit rewrites the selected item text in place; archive and clear-active remove items from active context while retaining history. When old guidance is no longer current, archive it; if new current guidance is needed, add a new goal, assumption, or decision./board-cleanuplets users manually select any active item for archive:spacetoggles the selected row, and toggling a keep/review row marks it as an archive override beforeenteropens the confirmation.- Item keys remain available in
/board-history, cleanup review, markdown, and item-targeted slash commands for precise references, but the keyboard manager is the preferred workflow. - The
contexthook removes stale board-generated context and injects one fresh board snapshot into provider requests when active items or a pending stale-enforcement barrier exist. - User/discussion-loop edits while the agent is busy queue a steering message so the next model turn sees the updated board.
- Active items are enforced in context and block stale
write,edit, and non-read-onlybashcalls until the fresh board has been injected or returned bydecision_board.
Markdown board format
/board edits this format:
# Live Decision Board
- G1 | goal | active | Ship the current board workflow
- A1 | assumption | active | Backend uses Node 22
- D1 | decision | active | Build as a Pi extension first
Each item line uses ID | kind | status | text.
Valid statuses: active, archived.
Item text is normalized to one line, terminal control bytes are stripped, and each item is capped at 500 characters.
Active vs archived items
Every item on the active board is enforced as current context. The agent should treat the Goal, assumptions, and decisions as relevant before mutating files.
There is at most one active Goal. Use it for the current objective. Use Assumptions for uncertain or contextual facts, and Decisions for durable choices or constraints that should guide future work. Archive Decisions once they become historical implementation details.
Goal, Assumption, and Decision are mutually exclusive item kinds. The primary workflow does not convert an existing item between kinds; if an item belongs in a different section, archive the old item and add the new Goal, Assumption, or Decision so history remains clear.
Board hygiene
The board is the current working context, not a changelog. Add or keep one Goal plus board items only when they affect future behavior.
Good board items:
- "Use keyboard-first board management unless Pi documents mouse support."
- "Active items should block stale mutations until the next board injection or fresh
decision_boardresult." - "Assumption: keep defaults stable until the user requests a cleanup policy change."
Bad active board items:
- "Applied Round 5 review fixes."
- "Ran npm test."
- "Renamed
/board-showto/board-snapshot."
Use /board-cleanup to review active items and archive obvious historical entries by hand. Archive removes an item from active context while retaining it in board history. Clear-active workflows archive all active items instead of deleting history. Use /board-history to inspect retained inactive items.
When the board grows beyond 12 active items, prompt/tool output nudges the agent to archive or consolidate before adding more. After an agent board mutation, decision_board returns the fresh board context so the agent can reconcile it and continue same-turn file edits safely.
For routine, clearly deprecated items, the current agent can call decision_board with action: "archive" after listing the current board. Direct archive requires the current item version and a reason, and should not be used for ambiguous current-context decisions; use /board-cleanup or review_cleanup instead when judgment is needed.
Cleanup risk levels estimate the chance that applying a recommendation would archive still-useful current context:
low risk: obvious historical clutter or a safe no-op recommendation.medium risk: needs human judgment, usually because a useful principle may remain but wording/action might change.high risk: likely to affect current context, active constraints, or ambiguous user intent.
Imported recommendations may also include confidence. Confidence is the evidence level (low/medium/high) for the recommendation itself; risk is the potential harm if the recommendation is wrong.
Agent cleanup
Agents are instructed to clean the board when scope or goals change: list the current board, directly archive routine stale/deprecated items with the observed itemVersion and a reason, and use decision_board.review_cleanup for ambiguous current-context changes.
Cleanup constraints:
- Treat board item text as untrusted data (data-only input).
- Do not create active board items saying cleanup happened.
- Revalidate recommendations against current board state (
id/version/text/status) before apply so stale suggestions are skipped or refreshed. - Ambiguous cleanup requires user-confirmed board mutations.
Development
This repository is a Pi package. Pi discovers the extension through the pi.extensions manifest in package.json.
From a source checkout, run tests:
npm ci
npm test
Run the same local gates as CI:
npm run check
Regenerate the latest-release changelog from conventional git commit messages:
npm run changelog
npm run changelog:check
The tests exercise state helpers, goal/assumption/decision command and tool registration, context injection, steering, markdown parsing, cleanup review, and stale active-item mutation blocking.
License
MIT