Vertical slice

Description

Truncate one dimension, preserve another. The structural pattern where instead of building a complete horizontal layer first (full breadth at one depth), you build a narrow vertical column (full depth at narrow breadth). Common in agile MVP development, in single-feature end-to-end demonstrations, and in any context where validating end-to-end shape matters more than completing one layer.

Composition

= container + grain. The container scopes what’s included in the slice (narrow at one dimension, full at another); the grain is the depth-vs-breadth choice — what resolution to preserve and what to truncate. The grain choice is load-bearing: the wrong dimension truncated produces a vertical slice that doesn’t validate the right thing.

When it applies / triggers on

User-initiated: User is wrestling with scope — either explicitly proposing a monolithic build vs phased approach, or implicitly when too-many-features-in-one-prototype force the agent to recognize a scope-creep into vertical-slice territory. Trigger-verb signal: polish 3/25 (12%), prototype 3/25 (12%) — both align with the polish-prototype-doctrine the catalog cites. slice itself appears in user prompts less often than the agent’s response. Highest real-user-msg-trigger rate of any form (96% — 25 of 26). Four recurring sub-shapes:

  • Scope-creep diagnosis — a polish prototype turned into a slice; the agent labels the transition (example: “PR #207 is effectively a vertical slice masquerading as a polish prototype… this materially collapses Phase 2’s scope”).
  • Middle-path strategic positioning — user is tempted to ship “the full production version” or “phase by phase”; agent surfaces vertical slice as the middle path (example: “i’m tempted to just let one agent go all in on creating the full production version… worth doing?” → “let one agent stitch the patterns into a vertical slice — full vision but limited data scope (one kid, one week of saves)”).
  • Downstream-of-structural-decision — the slice is shaped by an upstream structural-model decision (example: “the swim-lane-vs-day-cell pick isn’t a polish question — it’s a structural model question, and it affects every downstream piece of work”).
  • MVP-grain choice on API/data — flatten this dimension for v1, leave a seam to widen it later (example: Shell B’s API flattens to first-program × first-session before returning; extractionSummary.programsFound counter leaves a seam for multi-select later).

Agent-initiated: Engine notices the user is reaching for “full production version” or “phase by phase” framing of a scope question and surfaces vertical-slice as the third option that validates end-to-end shape without committing to either. Only 1 of 26 candidates is <task-notification> flavor — vertical-slice is overwhelmingly a real-user-msg-triggered form.

Vocabulary cues: “vertical slice,” “polish prototype,” “MVP,” “narrow breadth full depth,” “one feature end-to-end,” “full vision limited scope,” “N=1 flow,” “single-entity UX,” “lossy MVP cut,” “leaves a seam for later,” “full production version vs phased.”

Situation-shape signals: Any scope-decision context where the choice appears binary (do-everything vs do-one-thing-completely) and a third option of “do one full end-to-end column at narrow breadth” is available. The form is most useful when the right question is which dimension to truncate (the grain choice is load-bearing). KCC-planner-domain bias in T2 — generalizations to research methodology / writing / learning are absent from the corpus and should be looked for explicitly at prompt-time.

Encounters

  • MVP / agile slice — software development tradition: ship one feature end-to-end before expanding breadth.
  • Polish-prototype doctrine — KCC pattern: build one polished sub-flow before generalizing to N flows.
  • Single-entity UX first — KCC feedback doctrine: refine N=1 flow fully before expanding to N>1; multi-first compounds edge cases and semantic choices.

Composes with

  • graduation-promotion — a vertical slice often graduates into a horizontal layer once validated end-to-end. The slice is the scaffolding; the layer is the adult form.

When it doesn’t apply

  • When horizontal-first is correct — building a complete data layer before any UI on it; some architectures have ordering constraints that vertical slicing fights.
  • When the dimensions are inseparable — sometimes “narrow breadth, full depth” doesn’t decompose cleanly because the depth requires breadth to exist.

Sources

  • Agile / XP tradition.
  • KCC’s polish-prototype doctrine.
  • A James-coined compound per saved-insights synthesis.

Canonical exemplars from corpus (T2 2026-05-17)

  • PR #207 is a vertical slice masquerading as a polish prototype (cwd: campconnect, session: idx=0): “This materially collapses Phase 2’s scope. The vertical-slice milestone was going to wire real legal-move logic… What remains for Phase 2 is purely the real-data swap, not new interaction design — a substantially smaller task.”
  • Vertical slice as middle path between phased and monolithic (cwd: campconnect, session: idx=1): “Full vision but limited data scope (one kid, one week of saves, all surfaces present but not all polished). Gives you the visceral ‘see the vision’ experience without committing to ‘production-ready in one shot.‘”
  • Swim-lane-vs-day-cell is a structural-model decision affecting the slice (cwd: campconnect, session: idx=5): “The swim-lane-vs-day-cell pick isn’t a polish question — it’s a structural model question, and it affects every downstream piece of work (drawer/sidebar prototype, design doc, vertical slice, production planner).”
  • Primitive → shell layering for vertical-slice MVP cut (cwd: campconnect, session: idx=8): “Shell B’s API flattens to first-program × first-session before returning. That lossy MVP cut is correct for v1… The extractionSummary.programsFound counter leaves a seam for multi-select later without reshaping the API.”

Trigger pattern (T2): Vertical-slice surfaces when the user is wrestling with scope — explicitly proposing a monolithic build vs phased approach, or implicitly when too-many-features-in-one-prototype force the agent to recognize scope-creep into vertical-slice territory; highest real-user-msg-trigger rate of any form (96%).