docs(09): close etape UAT and summary

This commit is contained in:
Arthur Belleville 2026-05-15 23:48:15 +02:00
parent f9fc7a1e34
commit ec6bb7d11c
No known key found for this signature in database
3 changed files with 111 additions and 16 deletions

View file

@ -3,14 +3,14 @@ gsd_state_version: 1.0
milestone: v2.0
milestone_name: Collaboration, planning, and social sign-in
status: executing
last_updated: "2026-05-15T20:31:39.315Z"
last_activity: 2026-05-15 -- Phase 09 execution started
last_updated: "2026-05-15T21:46:58Z"
last_activity: 2026-05-15 -- Phase 09 UAT gap resolved and Plan 09-04 closed
progress:
total_phases: 5
completed_phases: 1
total_plans: 9
completed_plans: 5
percent: 56
completed_plans: 9
percent: 100
---
# STATE
@ -29,17 +29,17 @@ See: `.planning/PROJECT.md` (updated 2026-05-15)
## Current Position
Phase: 09 (etapes) — EXECUTING
Plan: 1 of 4
Status: Executing Phase 09
Last activity: 2026-05-15 -- Phase 09 execution started
Resume file: .planning/phases/09-etapes/09-01-PLAN.md
Plan: 4 of 4
Status: Phase 09 UAT passed; security review pending
Last activity: 2026-05-15 -- Phase 09 UAT gap resolved and Plan 09-04 closed
Resume file: .planning/phases/09-etapes/09-UAT.md
## Phase Status
| # | Phase | Status |
|---|-------|--------|
| 8 | Social Sign-in | ✓ Complete |
| 9 | Etapes | ◆ Ready to execute |
| 9 | Etapes | ◆ UAT passed; security pending |
| 10 | Events | ○ Pending |
| 11 | Individual Planning | ○ Pending |
| 12 | Native Tablo Chat | ○ Pending |
@ -47,6 +47,7 @@ Resume file: .planning/phases/09-etapes/09-01-PLAN.md
## Verification Record
- 2026-05-15: Phase 8 execution complete. Local verification passed with `go test ./... -count=1`; database-backed integration coverage skips unless `TEST_DATABASE_URL` is configured.
- 2026-05-15: Phase 9 UAT complete. Five browser checkpoints passed after fixing the selected-etape create gap; backend verification passed with `TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./... -count=1`.
## Decisions
@ -160,6 +161,12 @@ Resume file: .planning/phases/09-etapes/09-01-PLAN.md
- Phase 8 Plan 04 SUMMARY: `.planning/phases/08-social-sign-in/08-04-SUMMARY.md`
- Phase 8 Plan 05 SUMMARY: `.planning/phases/08-social-sign-in/08-05-SUMMARY.md`
- Commits (08): 2d004cd (social identity schema foundation), 6779663 (Google sign-in), a8b6a03 (Apple implementation later disabled), 59fd6b1 (auth page provider controls), 6e65836 (account providers view + docs)
- Phase 9 Plan 01 SUMMARY: `.planning/phases/09-etapes/09-01-SUMMARY.md`
- Phase 9 Plan 02 SUMMARY: `.planning/phases/09-etapes/09-02-SUMMARY.md`
- Phase 9 Plan 03 SUMMARY: `.planning/phases/09-etapes/09-03-SUMMARY.md`
- Phase 9 Plan 04 SUMMARY: `.planning/phases/09-etapes/09-04-SUMMARY.md`
- Phase 9 UAT: `.planning/phases/09-etapes/09-UAT.md` — 5/5 checkpoints passed after selected-etape create fix.
- Commits (09): a8a3e5f/565bb88 (first etape slice), 9b89282/4af623a (management), 9f6c7eb/b22d79d (assignment selector), 55263e4/3a3ecf5/cf07c29 (reorder hardening), 0c95049/ee62ff9/f9fc7a1 (UAT fixes)
---
*Last updated: 2026-05-15 after Phase 8 execution complete*
*Last updated: 2026-05-15 after Phase 9 UAT gap resolution*

View file

@ -0,0 +1,85 @@
---
phase: 09-etapes
plan: 04
subsystem: tasks
tags: [go, htmx, templ, etapes, uat]
requires:
- phase: 09-etapes
plan: 03
provides: task create/edit etape selectors and same-tablo assignment validation
provides:
- reorder preservation regression coverage for etape-assigned tasks
- filtered reorder behavior that preserves hidden tasks and etape assignment
- create/delete count refresh fixes for etape chips
- resolved UAT gap for selected etape winning over active filter
affects: [09-etapes, tasks]
tech-stack:
added: []
patterns: [db-backed regressions, oob etape strip refresh, selector-over-filter precedence]
key-files:
created:
- .planning/phases/09-etapes/09-UAT.md
modified:
- backend/internal/web/handlers_tasks.go
- backend/internal/web/handlers_tasks_test.go
- backend/templates/tasks.templ
key-decisions:
- "Task reorder preserves existing etape_id and keeps ordering status-scoped rather than etape-scoped."
- "Task create/delete HTMX responses refresh the etape strip out-of-band so chip counts stay current."
- "Task create assignment comes from the visible selector, not from the active etape filter query param."
patterns-established:
- "Filtered task reorder has DB-backed coverage for visible and hidden tasks."
- "UAT gaps are diagnosed in 09-UAT.md and closed with a regression plus retest."
requirements-completed: [ETAPE-01, ETAPE-02, ETAPE-03, ETAPE-04, ETAPE-05, ETAPE-06]
completed: 2026-05-15
---
# Plan 09-04 Summary
**Etape reorder hardening, count refresh fixes, and final UAT closure**
## Accomplishments
- Added DB-backed regression coverage proving task reorder preserves `etape_id`, keeps hidden filtered tasks intact, and remains stable under active etape filters.
- Fixed task reorder behavior so existing etape assignments are preserved through single-task and Sortable-style reorder paths.
- Fixed task create and delete HTMX responses to refresh the etape strip out-of-band, keeping chip counts current after mutations.
- Completed Phase 9 UAT with five user-facing checkpoints: filters, create assignment, etape management, edit assignment, and filtered reorder.
- Diagnosed and fixed the UAT gap where task creation could use the active filter etape instead of the visible selector value.
## Task Commits
1. **Task 1: Add reorder preservation regression tests** - `55263e4`
2. **Task 2: Preserve etape assignment through reorder** - `3a3ecf5`
3. **Task 2 hardening: DB-backed reorder regressions** - `cf07c29`
4. **UAT fix: Refresh counts on task create** - `0c95049`
5. **UAT fix: Refresh counts on task delete** - `ee62ff9`
6. **UAT record: Complete Phase 9 UAT with one diagnosed issue** - `c5513df`
7. **UAT gap fix: Honor selected etape on task create** - `f9fc7a1`
## Verification
- `cd backend && just generate`
- `cd backend && TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./internal/web -run 'TestTaskCreateUsesSelectedEtapeOverActiveFilter|TestTaskCreateRefreshesEtapeCounts|TestTaskCreateAssignsEtape' -count=1`
- `cd backend && TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./... -count=1`
- `git diff --check`
- Browser UAT in `.planning/phases/09-etapes/09-UAT.md` retested successfully after the create-assignment fix.
## Deviations from Plan
Plan 09-04 included final browser verification. Browser UAT found two count-refresh issues and one assignment-precedence issue, so the plan expanded to include focused fixes and regression coverage before closure.
## Issues Encountered
- Task create initially did not refresh etape chip counts after HTMX insert; fixed with an out-of-band `#etape-strip` refresh.
- Task delete initially did not refresh etape chip counts after HTMX removal; fixed with an out-of-band `#etape-strip` refresh.
- Task create could submit duplicate `etape_id` values because the form had both a hidden active-filter value and the visible selector; fixed so the selector value wins and the duplicate hidden field is removed.
## User Setup Required
None.
## Next Phase Readiness
Phase 9 execution is closed. Phase 9 is ready for the normal verification/security gates before moving to Phase 10 events.
## Self-Check: PASSED

View file

@ -1,5 +1,5 @@
---
status: diagnosed
status: complete
phase: 09-etapes
source:
- 09-01-SUMMARY.md
@ -7,7 +7,7 @@ source:
- 09-03-SUMMARY.md
- 09-04-PLAN.md
started: 2026-05-15T21:38:18Z
updated: 2026-05-15T21:46:09Z
updated: 2026-05-15T21:46:58Z
---
## Current Test
@ -22,9 +22,10 @@ result: pass
### 2. Create Task with Etape Assignment
expected: Creating a task from the Tasks tab lets you choose an etape or No etape. After submit, the task appears in the right kanban column, the selected etape count refreshes immediately, and the active filter state stays coherent.
result: issue
result: pass
reported: "even when selecting the etape, the created task ends up in the current etape viewed in the etape search param"
severity: major
resolution: "Fixed in f9fc7a1 and retested as pass."
### 3. Manage Etapes
expected: Etape edit updates the chip label, Up/Down controls reorder chips, and delete shows the warning that tasks stay in the tablo and move to Unassigned. After confirming delete, affected tasks remain visible under Unassigned.
@ -41,8 +42,8 @@ result: pass
## Summary
total: 5
passed: 4
issues: 1
passed: 5
issues: 0
pending: 0
skipped: 0
blocked: 0
@ -50,7 +51,7 @@ blocked: 0
## Gaps
- truth: "Creating a task from the Tasks tab lets you choose an etape or No etape. After submit, the task appears in the right kanban column, the selected etape count refreshes immediately, and the active filter state stays coherent."
status: failed
status: resolved
reason: "User reported: even when selecting the etape, the created task ends up in the current etape viewed in the etape search param"
severity: major
test: 2
@ -67,3 +68,5 @@ blocked: 0
- "Read the last submitted etape_id defensively when duplicate values are present."
- "Add a regression for creating a task while filtered to one etape but selecting another."
debug_session: "inline:$gsd-verify-work-09/test-2"
fix_commit: "f9fc7a1"
retest: pass