docs(rfc): plan mode to implemented — amendments folded on the way
The proposal survives contact with the code with three amendments, per the RFCs-are-proposals rule. (1) A mode transition logs a request/header-delta only when expressible: adding exit_plan_mode resorts the canonical tool list, and a pure reordering has no delta form, so entering plan mode logs the full fallback snapshot — the attributability claim holds either way. (2) The proposed/ skeleton converts to the implemented grammar: Proposal → Decision, the roadmap's staging (now history) drops to the standing Deferred list, and Acceptance criteria + Risks fold into Consequences (what holds, then the accepted costs, including the ACP v2 mode-removal migration). (3) The two recorded scenarios stay pending a with-key session, recorded in Deferred. The docs tail completes: the cookbook's plan-mode row upgrades from sketch to the shipped package, architecture.md gains the ctx.modes capability row (ceiling 1640 → 1650: a new capability service's table row does not fit the old budget), and every reference repoints to implemented/.
This commit is contained in:
@@ -6,4 +6,4 @@ Session modes: named, logged, per-agent policy states, with **plan mode** as the
|
||||
|---|---|---|
|
||||
| `mode/` | `mode/set` vocabulary + fold, the `ctx.modes` service (list/get/set with the turn-boundary flush), the soft layer (assemble filter + `mode:policy` section), the hard layer (`tools/pre-execute` deny-by-default gate), and the model-facing `exit_plan_mode` review tool | `ctx.modes` |
|
||||
|
||||
The mode in force is a pure function of the session log (`SessionEventMap['mode/set']`, last one wins), so resume and fork restore it with no extra machinery; the default mode is the absence of policy, keeping the plugin invisible until a mode is set. UIs read flips off `session/event`: the [stdio app](../ui/stdio-agent) exposes `/mode`, the [ACP bridge](../ui/acp) maps the vocabulary to the session-mode picker. RFC: [plan mode](../../docs/rfc/proposed/feature/2026-07-07-plan-mode.md).
|
||||
The mode in force is a pure function of the session log (`SessionEventMap['mode/set']`, last one wins), so resume and fork restore it with no extra machinery; the default mode is the absence of policy, keeping the plugin invisible until a mode is set. UIs read flips off `session/event`: the [stdio app](../ui/stdio-agent) exposes `/mode`, the [ACP bridge](../ui/acp) maps the vocabulary to the session-mode picker. RFC: [plan mode](../../docs/rfc/implemented/feature/2026-07-07-plan-mode.md).
|
||||
|
||||
@@ -39,4 +39,4 @@ The model-facing exit tool. Its single required argument is the plan text — a
|
||||
|
||||
Definitions are validated at load (`resolveConfig`): the built-in `plan` (read-only allowlist, `bash`/`subagent` excluded) merges unless overridden, `default` is rejected as a key, and allowlists may name not-yet-registered tools (registration is dynamic). An unknown name fails loudly at `set()` time.
|
||||
|
||||
RFC: [plan mode](../../../docs/rfc/proposed/feature/2026-07-07-plan-mode.md).
|
||||
RFC: [plan mode](../../../docs/rfc/implemented/feature/2026-07-07-plan-mode.md).
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
* A flush that changes what the last logged request header told the model
|
||||
* appends one coalesced `context/message` notice in the same frame.
|
||||
*
|
||||
* RFC: docs/rfc/proposed/feature/2026-07-07-plan-mode.md
|
||||
* RFC: docs/rfc/implemented/feature/2026-07-07-plan-mode.md
|
||||
*
|
||||
* @module @deepseek-ai/dsh-mode
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user