User Story Inventory — Mars Rover Kata

Prioritization Note

This backlog uses value-weighted prioritization, not a strict Pareto 80/20 split.

The 5 Core stories represent 50% of the story count but deliver ~80% of the working system value. In a 10-story kata this is expected: the domain is small enough that there is no long tail of low-value stories to cut. Every story here earns its place. The 80/20 rule describes the value ratio, not the story count ratio — and that ratio holds.

If this were a 50-story backlog, the Core tier would contain ~10 stories (20%). At 10 stories, 5 is the honest answer.


Story Map

ID

File

Title

Layer

Priority

Status

PLATEAU-STORY-001

plateau.md

Define the plateau

Domain

🔴 Core

✅ Implemented

ROVER-STORY-001

deploy-rover.md

Deploy a rover

Domain

🔴 Core

✅ Implemented

NAV-STORY-001

navigate-rover.md

Navigate a rover

Domain

🔴 Core

✅ Implemented

CLI-STORY-002

report-positions.md

Report final positions

Adapter

🔴 Core

✅ Implemented

NAV-STORY-002

boundary-safe-stop.md

Boundary safe-stop

Domain

🔴 Core

✅ Implemented

MISSION-STORY-001

multi-rover-mission.md

Multi-rover mission

Application

🟡 Secondary

✅ Implemented

CLI-STORY-001

cli-input.md

CLI pipe input

Adapter

🟡 Secondary

✅ Implemented

CLI-STORY-003

input-validation.md

Input validation & errors

Adapter

🟡 Secondary

✅ Implemented

NAV-STORY-003

obstacle-detection.md

Obstacle detection

Domain

🟢 Optional

✅ Implemented

NAV-STORY-004

extensible-commands.md

Extensible command types

Domain

🟢 Optional

✅ Implemented


Pareto Split

The value distribution holds even though the story count split is 50/30/20, not 80/20:

Tier

Stories

Story count

Value delivered

🔴 Core

PLATEAU-STORY-001 → NAV-STORY-002

5 (50%)

~80%

🟡 Secondary

MISSION-STORY-001 → CLI-STORY-003

3 (30%)

~15%

🟢 Optional

NAV-STORY-003 → NAV-STORY-004

2 (20%)

~5%

The story count column and the value column measure different things. 50% of stories deliver 80% of the value — that asymmetry is the point. A strict 80/20 rule applied to story count would mean 2 Core stories, which would exclude Navigate a rover and Report final positions. That’s wrong for a 10-story kata with no filler.


Domain Breakdown

PLATEAU Domain

  • PLATEAU-STORY-001 — Define the plateau (Core)

ROVER Domain

  • ROVER-STORY-001 — Deploy a rover (Core)

MISSION Domain (Application Layer)

  • MISSION-STORY-001 — Multi-rover mission (Secondary)

CLI Domain (Adapter Layer)

  • CLI-STORY-001 — CLI pipe input (Secondary)

  • CLI-STORY-002 — Report final positions (Core)

  • CLI-STORY-003 — Input validation & errors (Secondary)


Story Bundle Structure

Each story follows the Original + FE + BE + INFRA decomposition:

  • Original Story: {DOMAIN}-STORY-{N} — User-facing feature description

  • Frontend Sub-Story: {DOMAIN}-FE-{N}.{X} — UI/interface concerns

  • Backend Sub-Story: {DOMAIN}-BE-{N}.{X} — Domain logic and business rules

  • Infrastructure Sub-Story: {DOMAIN}-INFRA-{N}.{X} — Deployment, persistence, external services

All scenarios use GIVEN-WHEN-THEN format with unique scenario IDs: {STORY-ID}-S{N}


Progress Tracker

  • PLATEAU-STORY-001 Define the plateau

  • ROVER-STORY-001 Deploy a rover

  • NAV-STORY-001 Navigate a rover

  • CLI-STORY-002 Report final positions

  • NAV-STORY-002 Boundary safe-stop

  • MISSION-STORY-001 Multi-rover mission

  • CLI-STORY-001 CLI pipe input

  • CLI-STORY-003 Input validation & errors

  • NAV-STORY-003 Obstacle detection

  • NAV-STORY-004 Extensible command types


Architecture References

All stories link to specific sections in the architecture documentation: