---
type: plan
title: The board as the project's journey — stages, the review stage, Feedback complete
slug: board-redesign-stages
status: in progress
owner: rian
created: 2026-09-02
related:
  - /srv/apps/caddie/.logs/planning/01-vision-and-roadmap.md
  - caddie-ui-standard-proposal.md
summary: >
  rian's ask (2026-09-02): the project's starting page shows the title, then
  a stage tracker (Scope and Initial Direction · Initial Concepts · Concept
  Revision and Finalization · Inner Page Mockups · Signoff · Development) that
  makes done / here / next obvious and lets a person step back to see what was
  collected and forward to see what is coming. Below the map, the CURRENT
  stage: the concepts to review (thumbnail + a line each), one big "Start
  walkthrough", quiet "look" / "prefer" affordances, general comments per
  concept, and a big "Feedback complete" that tells the team.
---

# The board as the project's journey

## 1. What this is, in caddie's terms

Caddie's vision (01 §4–5) already defines the thing rian described: a project
is composed of linear **stages**; the client sees a **timeline** — done stages
compact with checkmarks, the active stage expanded, upcoming stages muted — and
a tool (easel) is attached to a stage. So the tracker is **caddie's timeline,
rendered inside the tool until the hub owns it**. Two rules follow:

- **Mirror the hub's stage shape, don't invent one.** `project_stages` carries
  caddie's fields (`position`, `title`, `body_md`, `status:
  planned|active|done|skipped`, `client_visible`, `started_at`, `closed_at`,
  `key` = `source_template_key`). No kind enum, no one-active-stage rule. When
  caddie M2 lands, easel reads stages from the host and drops the table.
- **The tool's own work shows inside the active stage.** The concepts, the
  walkthrough, the preference and the feedback round ARE what "Initial
  Concepts" is; done and planned stages are prose.

## 2. The page

```
Title · state chip · the blurb (project.description)
────────────────────────────────────────────────────────────────
 ✓ Scope and Initial Direction  ● Initial Concepts  ○ Concept Revision … ○ Development
────────────────────────────────────────────────────────────────
 [‹ previous]    STAGE VIEW (defaults to the active stage)      [next ›]

 done/planned stage:  title · "Completed 12 Aug" / "Up next" / "Later" · Prose(body_md)
                      manager: Edit (textarea) · Set active / Mark done / Back to planned

 active stage:        Prose(body_md) (short: what we need from you)
                      "2 concepts to review" — cards: thumbnail, title, tag, blurb,
                         quiet row: Look ↗ · ☆ Prefer this / ★ Preferred · 💬 comments
                      ┌────────────────────────────┐
                      │   ▶ Start the walkthrough   │  big, primary
                      └────────────────────────────┘
                      ┌────────────────────────────┐
                      │     ✓ Feedback complete     │  big, positive → confirm → "We've been told"
                      └────────────────────────────┘
────────────────────────────────────────────────────────────────
 Team tools (managers only, collapsed): screens/options CRUD, upload, present,
 who's looking, round summary — the previous board, unchanged.
```

## 3. Decisions

- **Six stages are the default roadmap template** (`services/stages.py
  ROADMAP`), seeded lazily on first read of a project that has none; a manager
  edits title/body/status per project. Generic client-facing prose for the
  planned stages ships with the template; the scope stage's body is written per
  project (for league: the proposal's design scope + Darren's direction).
- **"Feedback complete" is a round marker, not a state.** `feedback_completed_at
  /by` on the project; the rollup reads it as `waiting_agency` unless
  everything is already decided (`done`); re-presenting clears it (a new
  round). It notifies the manager side (bell `turn` + outbound mail).
- **General comments per concept** are a fourth subject type on the
  Interaction Standard seam (`option`), like screens and steps.
- **Thumbnails are uploaded images** (`Option.thumbnail_name`, served through
  the attachments service's rules), not live iframes — a live frame at card
  size is a silhouette (Adi's note on the old board still stands). For league
  the first pair is rendered headlessly from the bundles.
- **Walkthrough is the primary act.** "View" and "Choose" are quiet on
  purpose (rian: "I do not want to make the most attractive CTAs to view or
  choose"). The last beat of the last concept returns to the board, where
  Feedback complete is.
- **Pack pieces:** `Stages` (the horizontal stage rail with done/active/
  planned/skipped and a selected stage) and `Prose` (block-level markdown-lite
  on top of `Body`). Proposed to caddie as the client timeline's rendering.

## 4. Not in this pass

- Editing stages from the board is minimal (status + body); reordering, adding,
  target dates wait for caddie.
- "What was collected" for later stages (revision notes, inner pages) is
  prose for now; when those stages become active in easel, their work renders
  the way Initial Concepts does.
