# Scrum Sprint Board — migration & compatibility note

**Date:** 2026-06-04  
**Scope:** Enterprise Agile Platform (`MVNexus` / `app/Modules/Projects`)

## What changed

We use **Scrum** as the core framework. The former “Kanban Board Module” naming was misleading.

| Before (user-facing) | After (user-facing) |
|----------------------|---------------------|
| Kanban Board / Kanban Board Module | **Scrum Sprint Board** |
| Kanban Column | **Sprint Board Column** |
| Kanban Card | **Sprint Task Card** |
| Kanban Workflow | **Sprint Workflow** |
| Board column “Backlog” (on sprint board) | **Sprint To Do** |

### Product rules (unchanged intent, clarified in code)

1. **Product Backlog** — `/projects/{id}/backlog` — candidate work before Sprint Planning.
2. **Sprint Backlog** — items assigned to a sprint (`tickets.sprint_id`).
3. **Scrum Sprint Board** — visual workflow for **Sprint Backlog items only** (`sprint_id` required). Product Backlog items do not appear on the board.

### Default sprint board columns

| Internal key (`kanban_column`) | English label | Arabic label |
|--------------------------------|---------------|--------------|
| `backlog` | Sprint To Do | مهام السبرينت |
| `in_progress` | In Progress | قيد التنفيذ |
| `review` | In Review | قيد المراجعة |
| `testing` | QA / Testing | اختبار الجودة |
| `blocked` | Blocked | متوقف |
| `done` | Done | مكتمل |

Legacy column `ready` is removed from the board UI and normalized to **Sprint To Do** on move APIs.

## What we kept (backward compatibility)

| Layer | Kept as-is | Why |
|-------|------------|-----|
| Database | `project_kanban_mappings.kanban_column` | Avoid risky production renames |
| PHP enum class | `KanbanColumn` (internal) | Existing casts & migrations |
| Events / realtime | `KanbanUpdated`, `.project.kanban.updated` | Clients may still listen |
| API (deprecated) | `GET/PATCH /projects/{id}/kanban` | Returns `deprecated: true` + migration hint |

## New preferred routes

| Route | Purpose |
|-------|---------|
| `GET /projects/{project}/board` | Scrum Sprint Board |
| `PATCH /projects/{project}/board/tickets/{ticket}` | Move sprint task |
| `GET /projects/{project}/sprint-board` | Alias of board |
| `GET /projects/{project}/sprints/{sprint}/board` | Board scoped to sprint |
| `GET /projects/{project}/sprints/{sprint}/tasks` | Alias of sprint tickets list |

## Frontend

| Route | Page |
|-------|------|
| `/projects/:id/board` | Scrum Sprint Board (primary) |
| `/projects/:id/sprint-board` | Same page |
| `/projects/:id/sprints/:sprintId/board` | Same page, sprint pre-selected |
| `/projects/:id/kanban` | **Redirects** to `/board` |

Kanban tab removed from project sub-navigation.

## Migration

`database/migrations/2026_06_04_150000_scrum_sprint_board_column_alignment.php`

- Deletes legacy `ready` mappings.
- Adds `blocked` mapping per project when missing.

## Tests

`tests/Feature/Projects/ScrumSprintBoardTest.php` — sprint-only visibility, Scrum labels, blocked/done moves, deprecated `/kanban`, route aliases.

## Why

The board is a **Scrum sprint workflow view**, not a Kanban methodology module and does not replace Scrum.
