dough-slice-planning · git:20261010.e95c90d · 2026-10-10 · sha256 efe600907f1b3160

dough-slice-planning git:20261010.e95c90dA

Immutable. This exact content never changes and is served at /api/v1/blob/efe600907f1b3160.

---
name: dough-slice-planning
description: >-
  Plans one understood, bounded story, retrospective correction, or remaining
  work from an understood instruction as an executable sequence of
  Behavior/Structure slices with outside-in proof and safe stopping points. Use
  when a selected story is ready for implementation planning, an execution
  retrospective has one bounded correction to plan, or authorized remaining
  work from a sufficient instruction needs an ordinary plan. Stays within the
  triggering instruction's execution authority: finish after writing and
  reporting the plan unless that instruction explicitly also requests execution.
  Invokes slice-plan refinement when remaining plan concerns can be resolved
  within the understood outcome, then reports remaining concerns or a limited
  no-concerns finding and records readiness through the shared preparation
  procedure without granting Take or execution.
---

# Slice planning

Write one sufficient executable plan for one understood story, a bounded
retrospective correction, or remaining work from an understood instruction as
described below. Stay within the triggering human or parent-agent
instruction's explicit execution authority. Do not implement product code or
invoke execution unless that instruction explicitly also requests execution
after planning.

## Require understood planning input

Require one user or stakeholder outcome, its value, evaluable key examples, and
boundaries from later work. Name the missing field and stop; do not invent a
story, seed, or completed plan slices. Use
[dough-story-refinement](../dough-story-refinement/SKILL.md) when a selected
story's goal, scope, or examples are unresolved. Use
[dough-story-decomposition](../dough-story-decomposition/SKILL.md) when the
parent problem, candidate selection, or story ordering is unresolved. Never
turn a decomposition seed directly into an execution plan. An understood
instruction may be the source without a story. When its mission was
[admitted](../dough-execute-plan/references/admit-accepted-work.md), plan that
admitted story instead: the plan attaches to it, never to another story.

For a correction handed off by
[dough-execution-retrospective](../dough-execution-retrospective/SKILL.md#reconcile-findings-with-current-truth),
use its evidenced current findings, one bounded correction outcome, affected
concepts, preserved product promises and constraints, and evaluable proof as the
planning input. Cite the original story and reviewed commits for provenance;
do not invent a feature promise or require the correction to fit the old
story's implementation footprint. The retrospective owns current-truth checks,
constraint disputes, and whether to amend an unfinished plan or create a
follow-up. Missing correction scope or proof stops this planning path.

For a new follow-up, write its minimal story and then its plan as
[planning scope and lifecycle](../dough-story-refinement/references/planning.md#choose-the-planning-level)
defines; record preparation on that story. An amended plan or a plan-homed
correction keeps its existing home and identity.

## Resolve execution context

Before writing, identify from the user's instructions and this project's guidance:

- the selected story and its seed, when one exists, the retrospective
  correction input, its source execution, and the seed hosting its story, or
  the understood remaining-work instruction and any retained execution identity;
- the executable-plan root, filename layout, format additions, status
  vocabulary, and lifecycle;
- any supplied slice target and hard limit, including their permitted
  exceptions and overrun escalation;
- required verification, refactoring, commit, and review gates;
- relevant code, tests, stack rules, and Accepted ADRs;
- this project's established North Star location, when one exists; and
- any phase or quick-task conventions that own the plan.

Resolve these from this project, not this skill's location. First reuse a plan
that is active under this project's status vocabulary and identifies that
source. Honor the retrospective's unfinished-plan
amendment destination. Otherwise, inspect the established plan entries in the known
root: use the number after the highest allocated entry, preserving its numeric
padding and path layout rather than filling an old gap. Immediately before
writing, recheck the candidate path. If it is occupied, leave it unchanged,
advance to the next number, and check again. Do not add allocation or locking
tooling.

If the canonical plan root is unavailable, name that missing context and stop
before writing; do not ask for a plan number or invent a location. A missing
numeric limit alone is not missing context: apply the linked sizing guidance
without inventing a timing policy. Do not create a new plan under a deprecated
or merely inferred location.

Treat a verification gate as a local requirement only when the user's
instructions or this project's guidance require it for local work, and cite
that requirement in the plan. Hosted CI configuration shows which checks exist
and how to run them. Hosted CI still runs them after publication, where their
failures stay owned, but its configuration does not by itself make each check a
local gate for every change. Choose local proof for the affected behavior under
[own executable proof](../dough-story-refinement/references/executable-proof.md),
and state in the plan the reason for any broader local check, such as a changed
fixture that distributed consumers load. Execution applies the same distinction
when it [accepts proof](../dough-execute-plan/references/wrap-up.md#accept-proof).

## Write the plan

Before writing to the plan, establish or reuse the required workspace under
[preparation workspace](../dough-story-refinement/references/preparation-workspace.md),
then, for a queued story,
[announce the preparation assignment](../dough-story-refinement/references/preparation-assignment.md#announce-the-preparation-assignment);
inspecting the story, code, or tests to prepare the plan needs neither on its
own. Record the source, goal, included scope, material exclusions,
assumptions, and key examples without enlarging that source. Read and apply:

- [architectural thinking](references/architectural-thinking.md) to carry
  PFE findings, relevant accepted decisions, and only warranted short-term
  direction into the plan;
- [slice decomposition](../dough-story-decomposition/references/problem-decomposition.md#decompose-slices),
  including its cumulative design assessment, sizing, and escalation rules; and
- [executable-plan decisions](../dough-story-refinement/references/planning.md#write-an-executable-plan),
  including executable proof ownership.

Inspect only the code and tests needed to find the stable outside-in proof entry
point, behavior to extend or preserve, genuine dependencies, decisive premises,
and any Structure justified under the linked slice decomposition rules.

A decisive premise is a factual claim about this project's current state on which a
slice's approach, sizing, or proof depends: code and tests, host or environment state,
fixture content, workload data, or a named proof or measurement command. Inherited
premises such as "works as today" count the same as those you write.

Derive premises from key examples: trace each from trigger to observable result through
existing code. Every step assumed to behave is decisive, written down or not, including
colliding overlays or rules and transformations from fixture inputs to their evaluation.
A premise is settled only when its recorded observation reaches the consuming operation
in the checkout the plan names and records the promised outcome: the example's result,
or a proof's failure without the behavior it claims to prove. "Exists", "found", "callers
listed", "step defined", "server answered", and "no commit to the spec since" are
presence, not settling; leave the premise open and name the unreached operation.
A claimed fix is a premise: reproduce the symptom before dependent work. A remedy spec
that already passes leaves the symptom unexplained. Run an existing fixture when it can
observe the journey cheaply and safely, instead of reading call sites.

Before `ready`, use the smallest safe observation reaching the claim's outcome, wherever it lives.
Reading, searching, listing, and read-only host queries locate it; presence cannot settle it:

- For a behavior-consumer premise (dependents, paths, or effects of a change), follow the
  effect from its state write or server response through every transformation to what
  asserts or relies on it. Search tests and all callers, including scripts, step definitions,
  and specs that drive HTTP sequences, rather than only names or direct imports.
  With a cheap local suite, the smallest complete observation is one scratch application
  of the planned change, one relevant test run, and a revert; failures identify consumers.
  For a moved function reached through a script, run the feature's script steps with a
  scratch failure in the function; record that step's failure. Caller traces or unit imports do not settle it.
- For a proof premise (a named test proves a behavior), observe discrimination: it fails
  with the behavior disabled in a scratch edit and passes with it enabled. If it stays
  green without the behavior, record the premise false and give the slice a discriminating proof.
- For a proof-route premise (an example runs through a route in a named checkout), execute
  its unpaid, side-effect-free prefix there (runner spec selection, tools, token route, or log source),
  stopping at the first paid, credentialed, owner-held, or state-changing step. A refusal or
  missing step makes the route unavailable. Name an available route (CI or the primary checkout
  under this project's rules), or record the missing step and decision owner as an early probe slice or
  pre-Take decision. Reachability without the example's real shape (authenticated write or attached file) is presence.

Scratch observations run only in the preparation's owned workspace, never a default or shared
checkout; revert scratch edits before any record write or commit. For uncertain infrastructure
or storage behavior, use one isolated representative proof against the relevant engine and
version, unless matching evidence exists. Record each premise, its consuming operation, the
literal observation reaching it, and its result in the plan. A false premise changes the plan
before broad implementation. Do not inspect claims the approach does not depend on, and keep
experiments off shared and production systems.

When only a paid, credentialed, owner-held, or state-changing observation can
settle a premise, observe its cheap parts now and make the remainder an early
probe slice whose failure stops dependent slices and changes the plan. Such a
plan can be `ready`; the probe's observation keeps its existing authority
requirements.

During construction, apply those decomposition, cumulative design, and sizing checks: correct
obvious defects such as an independent second outcome before reporting, and
preserve proof ownership and any supplied sizing constraints on every resulting
slice.

After the plan file exists for a work item with a recorded identity, apply
[record preparation facts](../dough-product-backlog/references/record-preparation.md)
for the planned approach (omit assessment on that write).

## Resolve fixable plan concerns

When remaining concerns about slice boundaries, cumulative design, proof
ownership, or sizing can be resolved within the understood outcome and scope,
invoke [dough-slice-plan-refinement](../dough-slice-plan-refinement/SKILL.md)
on the written plan before the final report and readiness assessment. This
refinement is part of slice planning and needs no additional instruction;
honor an explicit instruction to leave refinement to a later step. A plan
without such concerns needs no refinement pass.

Keep unresolved source questions and human-owned decisions outside this
handoff. Report a missing input, disputed constraint, or concern that refinement
cannot resolve within scope under the next section; do not repeat refinement
without new evidence or widen the outcome.
Refinement keeps the same plan, preparation workspace, and assignment. It
grants neither execution nor publication authority.

## Report concern evidence and assess readiness

After constructing the plan, report, then record readiness through the shared
procedure:

- In one line, whether refinement ran, was not needed (with the reason), or
  was left to a later step as instructed.
- Each remaining slice-specific concern with the affected slice, the reason
  (for example an integration assumption or repeated special-case design), and
  its consequence (for example uncertain sizing or duplicated domain rules),
  including concerns spanning successive slices. When this review identified
  none, say so narrowly.
- Interim behavior that slice decomposition permits is an accepted trade-off,
  not a remaining concern, once the plan names it and its replacing slice.
  Relabeling a blocking concern, such as a proof gap, does not settle it.
- Then apply
  [assess readiness at preparation completion](../dough-product-backlog/references/record-preparation.md#assess-readiness-at-preparation-completion):
  every remaining concern becomes a `not-ready` reason, and neither refinement
  nor an accepted trade-off establishes readiness alone. Do not prescribe the
  next workflow action, Take the item, or start execution from this finding.

The recipient chooses the next action under the triggering instruction's
authority and project policy. The recorded assessment is agent judgment bound to
content digests, not authorization to execute. It does not grant, expand, or
replace the triggering instruction's execution authority.

## Stay within the triggering instruction

After writing and reporting the plan, the next action remains within the
triggering human or parent-agent instruction:

- Planning-only request: report the plan path, ordered slices,
  considered-but-excluded additions, the refinement decision and concern
  report, and the recorded readiness assessment, then stop. Do
  not implement and do not invoke execution.
- Parent-agent delegation that asks only for slice planning: return the plan,
  the refinement decision and concern report, and the recorded readiness
  assessment to the parent. The parent's broader implementation task
  is not an explicit execution request to this planner.
- Explicit plan-and-execute request: after reporting, the authorized workflow
  may continue into execution without asking again for the same authorization,
  subject to this project's gates and any unresolved concerns that still block
  progress. Prefer the project's established execution path (for example
  [dough-execute-plan](../dough-execute-plan/SKILL.md)) when that path applies.

Apply [preparation workspace](../dough-story-refinement/references/preparation-workspace.md)'s
keep or discard decision, then close or retain the workspace, when this
session ends.

After the matching case above, end with:

`## SLICE PLAN WRITTEN`