---
phase: 09-etapes
plan: 02
subsystem: tasks
tags: [go, htmx, templ, etapes]
requires:
  - phase: 09-etapes
    plan: 01
    provides: etape schema, queries, strip, and task filtering
provides:
  - etape edit, delete, and reorder handlers
  - delete confirmation explaining tasks move to Unassigned
  - compact chip management controls
affects: [09-etapes, tasks]
tech-stack:
  added: []
  patterns: [full tasks-tab refresh after management mutations, explicit reorder forms]
key-files:
  created: []
  modified:
    - backend/internal/web/handlers_etapes.go
    - backend/internal/web/router.go
    - backend/templates/etapes.templ
    - backend/templates/etapes_forms.go
key-decisions:
  - "Use explicit Up/Down reorder forms instead of adding a second Sortable.js group in this minimal UI."
  - "Return the full #tasks-tab fragment after edit, delete, and reorder so counts, chips, and kanban stay consistent."
patterns-established:
  - "Etape management routes bind both tablo id and etape id before mutation."
  - "Delete relies on the database foreign key's ON DELETE SET NULL behavior for task unassignment."
requirements-completed: []
completed: 2026-05-15
---

# Plan 09-02 Summary

**Etape edit, delete-unassign, and reorder management from the Tasks tab strip**

## Accomplishments

- Added etape edit, update, delete confirmation, delete, and reorder routes under protected tablo routes.
- Added compact edit/delete/up/down controls beside etape chips.
- Added the required delete confirmation copy: `Tasks in this etape will stay in the tablo and move to Unassigned.`
- Added tests for update, delete-unassign, reorder, and non-owner 404 behavior.

## Task Commits

1. **Task 1: Add RED coverage for etape management** - `9b89282`
2. **Task 2: Implement edit, delete-unassign, and reorder** - `4af623a`

## Verification

- `cd backend && just generate`
- `cd backend && go test ./internal/web -run 'TestEtapeUpdateChangesTitleAndDescription|TestEtapeDeleteUnassignsTasks|TestEtapeReorderPersistsPosition|TestEtapeOwnershipReturns404' -count=1 -v`
- `cd backend && go test ./... -count=1`
- `git diff --check`

Note: the DB-backed integration tests compile but are skipped locally because `TEST_DATABASE_URL`/`DATABASE_URL` is unset.

## Deviations from Plan

Used explicit Up/Down forms for reorder rather than Sortable.js. This keeps the first management UI minimal and avoids introducing a second drag/drop group.

## Issues Encountered

None.

## User Setup Required

None.

## Next Phase Readiness

Plan 09-03 can focus on richer task assignment selectors and filter behavior using the existing etape list, ownership validation, and full-tab refresh helpers.

## Self-Check: PASSED
