Files
msd-core/gsd-core/templates/state.md

5.5 KiB
Raw Blame History

State Template

Template for .planning/STATE.md — the project's living memory.


File Template

The frontmatter block below is generated from STATE_FIELD_SCHEMA (src/state-md-schema.cts, ADR-3473 §8.8) by scripts/gen-state-md-docs.cjs --write — do not hand-edit the marked region; the body below it is hand-authored.

---
gsd_state_version: '1.0'  # placeholder; syncStateFrontmatter overwrites on first state.* call
status: planning
progress:
  total_phases: 0
  completed_phases: 0
  total_plans: 0
  completed_plans: 0
  percent: 0
---
<!-- STATE-MD-SCHEMA:END:frontmatter -->

# Project State

## Project Reference

See: .planning/PROJECT.md (updated [date])

**Core value:** [One-liner from PROJECT.md Core Value section]
**Current focus:** [Current phase name]

## Current Position

Phase: [X] of [Y] ([Phase name])
Plan: [A] of [B] in current phase
Status: [Ready to plan / Planning / Ready to execute / In progress / Phase complete]
Last activity: [YYYY-MM-DD] — [What happened]

Progress: [░░░░░░░░░░] 0%

## Performance Metrics

**Velocity:**
- Total plans completed: [N]
- Average duration: [X] min
- Total execution time: [X.X] hours

**By Phase:**

| Phase | Plans | Total | Avg/Plan |
|-------|-------|-------|----------|
| - | - | - | - |

**Recent Trend:**
- Last 5 plans: [durations]
- Trend: [Improving / Stable / Degrading]

*Updated after each plan completion*

## Accumulated Context

### Decisions

Decisions are logged in PROJECT.md Key Decisions table.
Recent decisions affecting current work:

- [Phase X]: [Decision summary]
- [Phase Y]: [Decision summary]

### Pending Todos

[From .planning/todos/pending/ — ideas captured during sessions]

None yet.

### Blockers/Concerns

[Issues that affect future work]

None yet.

## Deferred Items

Items acknowledged and deferred at milestone close, most recent first:

| Category | Item | Status | Deferred At | Milestone |
|----------|------|--------|-------------|-----------|
| *(none)* | | | | |

## Session Continuity

Last session: [YYYY-MM-DD HH:MM]
Stopped at: [Description of last completed action]
Resume file: [Path to .continue-here*.md if exists, otherwise "None"]

STATE.md is the project's short-term memory spanning all phases and sessions.

Problem it solves: Information is captured in summaries, issues, and decisions but not systematically consumed. Sessions start without context.

Solution: A single, small file that's:

  • Read first in every workflow
  • Updated after every significant action
  • Contains digest of accumulated context
  • Enables instant session restoration

Creation: After ROADMAP.md is created (during init)

  • Reference PROJECT.md (read it for current context)
  • Initialize empty accumulated context sections
  • Set position to "Phase 1 ready to plan"

Reading: First step of every workflow

  • progress: Present status to user
  • plan: Inform planning decisions
  • execute: Know current position
  • transition: Know what's complete

Writing: After every significant action

  • execute: After SUMMARY.md created
    • Update position (phase, plan, status)
    • Note new decisions (detail in PROJECT.md)
    • Add blockers/concerns
  • transition: After phase marked complete
    • Update progress bar
    • Clear resolved blockers
    • Refresh Project Reference date

Project Reference

Points to PROJECT.md for full context. Includes:

  • Core value (the ONE thing that matters)
  • Current focus (which phase)
  • Last update date (triggers re-read if stale)

Claude reads PROJECT.md directly for requirements, constraints, and decisions.

Current Position

Where we are right now:

  • Phase X of Y — which phase
  • Plan A of B — which plan within phase
  • Status — current state
  • Last activity — what happened most recently
  • Progress bar — visual indicator of overall completion

Progress calculation: (completed plans) / (total plans across all phases) × 100%

Performance Metrics

Track velocity to understand execution patterns:

  • Total plans completed
  • Average duration per plan
  • Per-phase breakdown
  • Recent trend (improving/stable/degrading)

Updated after each plan completion.

Accumulated Context

Decisions: Reference to PROJECT.md Key Decisions table, plus recent decisions summary for quick access. Full decision log lives in PROJECT.md.

Pending Todos: Ideas captured via /gsd-add-todo

  • One bullet per pending todo, rendered by init.todos's pending_todos_markdown (each bullet capped at 240 characters: - [date] [area] title — [todo file](path) — Needs ...)
  • None yet. when there are no pending todos
  • No collapse-by-count fallback — every pending todo gets its own line, always (see #2618 design doc for why a "count if many" fallback was rejected)

Blockers/Concerns: From "Next Phase Readiness" sections

  • Issues that affect future work
  • Prefix with originating phase
  • Cleared when addressed

Session Continuity

Enables instant resumption:

  • When was last session
  • What was last completed
  • Is there a .continue-here file to resume from

<size_constraint>

Keep STATE.md under 100 lines.

It's a DIGEST, not an archive. If accumulated context grows too large:

  • Keep only 3-5 recent decisions in summary (full log in PROJECT.md)
  • Keep only active blockers, remove resolved ones

The goal is "read once, know where we are" — if it's too long, that fails.

</size_constraint>