docs(phase-10): complete phase execution

This commit is contained in:
Arthur Belleville 2026-05-16 06:46:15 +02:00
parent 1d760d5540
commit 34d2c23e20
No known key found for this signature in database
5 changed files with 177 additions and 21 deletions

View file

@ -36,11 +36,11 @@ Requirements for milestone v2.0. Each requirement must map to exactly one roadma
### Events ### Events
- [ ] **EVENT-01**: User can create a scheduled event attached to a tablo with title, start time, optional end time, optional description, and optional location - [x] **EVENT-01**: User can create a scheduled event attached to a tablo with title, start time, optional end time, optional description, and optional location
- [ ] **EVENT-02**: User can edit and delete tablo events - [x] **EVENT-02**: User can edit and delete tablo events
- [ ] **EVENT-03**: Tablo detail page includes an events view listing that tablo's scheduled events - [x] **EVENT-03**: Tablo detail page includes an events view listing that tablo's scheduled events
- [ ] **EVENT-04**: Event validation requires an end time to be empty or after the start time - [x] **EVENT-04**: Event validation requires an end time to be empty or after the start time
- [ ] **EVENT-05**: Event authorization follows tablo access rules so users cannot read or mutate events for inaccessible tablos - [x] **EVENT-05**: Event authorization follows tablo access rules so users cannot read or mutate events for inaccessible tablos
### Planning ### Planning
@ -97,7 +97,7 @@ Populated during roadmap creation.
|-------------|-------|--------| |-------------|-------|--------|
| AUTH-08..13 | Phase 8 | Complete | | AUTH-08..13 | Phase 8 | Complete |
| ETAPE-01..06 | Phase 9 | Pending | | ETAPE-01..06 | Phase 9 | Pending |
| EVENT-01..05 | Phase 10 | Pending | | EVENT-01..05 | Phase 10 | Complete |
| PLAN-01..04 | Phase 11 | Pending | | PLAN-01..04 | Phase 11 | Pending |
| CHAT-01..06 | Phase 12 | Pending | | CHAT-01..06 | Phase 12 | Pending |

View file

@ -14,7 +14,7 @@
|---|-------|------|--------------| |---|-------|------|--------------|
| 8 | Social Sign-in | Google sign-in creates/links local users and issues existing Xtablo sessions; Apple sign-in is disabled | AUTH-08..13 | | 8 | Social Sign-in | Google sign-in creates/links local users and issues existing Xtablo sessions; Apple sign-in is disabled | AUTH-08..13 |
| 9 | Etapes | Tasks can be grouped under one-level etapes without breaking the kanban model | ETAPE-01..06 | | 9 | Etapes | Tasks can be grouped under one-level etapes without breaking the kanban model | ETAPE-01..06 |
| 10 | 3/4 | In Progress| | | 10 | 4/4 | Complete | 2026-05-16 |
| 11 | Individual Planning | Users can view their own event agenda across tablos | PLAN-01..04 | | 11 | Individual Planning | Users can view their own event agenda across tablos | PLAN-01..04 |
| 12 | Native Tablo Chat | Each tablo has persisted discussion with real-time delivery and no managed chat provider | CHAT-01..06 | | 12 | Native Tablo Chat | Each tablo has persisted discussion with real-time delivery and no managed chat provider | CHAT-01..06 |

View file

@ -2,15 +2,15 @@
gsd_state_version: 1.0 gsd_state_version: 1.0
milestone: v2.0 milestone: v2.0
milestone_name: Collaboration, planning, and social sign-in milestone_name: Collaboration, planning, and social sign-in
status: executing status: ready_to_plan
last_updated: "2026-05-15T22:35:34.974Z" last_updated: "2026-05-16T04:45:10.000Z"
last_activity: 2026-05-15 last_activity: 2026-05-16
progress: progress:
total_phases: 5 total_phases: 5
completed_phases: 2 completed_phases: 3
total_plans: 13 total_plans: 13
completed_plans: 12 completed_plans: 13
percent: 92 percent: 60
--- ---
# STATE # STATE
@ -24,15 +24,15 @@ progress:
See: `.planning/PROJECT.md` (updated 2026-05-15) See: `.planning/PROJECT.md` (updated 2026-05-15)
**Core value:** A user can sign in and run the Tablos workflow — organize work, attach files, discuss, and plan scheduled events — without a JS framework or managed chat provider. **Core value:** A user can sign in and run the Tablos workflow — organize work, attach files, discuss, and plan scheduled events — without a JS framework or managed chat provider.
**Current focus:** Phase 10 — events **Current focus:** Phase 11 — individual planning
## Current Position ## Current Position
Phase: 10 (events) — EXECUTING Phase: 11
Plan: 4 of 4 Plan: Not started
Status: Ready to execute Status: Ready to plan
Last activity: 2026-05-15 Last activity: 2026-05-16
Resume file: .planning/phases/10-events/10-04-PLAN.md Resume file: .planning/phases/11-individual-planning/11-01-PLAN.md
## Phase Status ## Phase Status
@ -40,14 +40,15 @@ Resume file: .planning/phases/10-events/10-04-PLAN.md
|---|-------|--------| |---|-------|--------|
| 8 | Social Sign-in | ✓ Complete | | 8 | Social Sign-in | ✓ Complete |
| 9 | Etapes | ◆ UAT passed; security pending | | 9 | Etapes | ◆ UAT passed; security pending |
| 10 | Events | ◆ Ready to execute | | 10 | Events | ✓ Complete |
| 11 | Individual Planning | ○ Pending | | 11 | Individual Planning | ○ Ready to plan |
| 12 | Native Tablo Chat | ○ Pending | | 12 | Native Tablo Chat | ○ Pending |
## Verification Record ## 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 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`. - 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`.
- 2026-05-16: Phase 10 execution complete. Events UAT approved; backend verification passed with `TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./... -count=1`.
## Decisions ## Decisions

View file

@ -0,0 +1,99 @@
---
phase: 10-events
plan: 04
subsystem: events
tags: [events, regression, uat, htmx, templ]
requires:
- phase: 10-events
provides: Plans 01-03 event schema, CRUD, calendar navigation, and user-scoped aggregation
provides:
- Final regression coverage for Events tab integration and escaping
- Full backend verification for Phase 10
- Browser UAT approval for create, edit, delete, invalid end time, month navigation, day prefill, and past events
affects: [events, tablo-detail, planning]
tech-stack:
added: []
patterns:
- "Phase-level regression tests cover shell fallback, escaping, no-end-time behavior, and event ordering."
- "Manual browser UAT is recorded only after full automated backend verification passes."
key-files:
created: []
modified:
- backend/internal/web/handlers_events_test.go
key-decisions:
- "No-end-time display was verified through the edit form, preserving the D-10 decision that calendar cells show titles only."
- "The Phase 10 browser checkpoint was approved after the full backend suite passed."
patterns-established:
- "Events final verification pairs targeted regression tests with full `go test ./...` and browser UAT."
requirements-completed: [EVENT-01, EVENT-02, EVENT-03, EVENT-04, EVENT-05]
duration: ~10min
completed: 2026-05-16
---
# Phase 10: Events Plan 04 Summary
**Final Events regression coverage, full backend verification, and approved browser UAT**
## Performance
- **Duration:** ~10 min
- **Started:** 2026-05-16T04:35:00Z
- **Completed:** 2026-05-16T04:45:10Z
- **Tasks:** 3
- **Files modified:** 1
## Accomplishments
- Added final handler regression tests for full-page fallback, escaped event titles, no-end-time behavior, and same-day ordering.
- Ran full backend verification with generated code.
- Started the local app for the browser checkpoint and received user approval for Events UAT.
## Task Commits
Each automated task was committed atomically:
1. **Task 1: Add final regression coverage for tab integration and escaping** - `1d760d5` (test)
2. **Task 2: Run full backend verification and fix regressions** - no code changes required
3. **Task 3: Browser UAT checkpoint for Events tab** - approved by user on 2026-05-16
## Files Created/Modified
- `backend/internal/web/handlers_events_test.go` - Adds final Events regression coverage.
## Decisions Made
- Verified the no-end-time behavior through edit-form output rather than calendar cells, because Phase 10 explicitly keeps calendar cells title-only.
- No implementation fixes were needed after full backend verification.
## Deviations from Plan
None - plan executed as written.
## Issues Encountered
- `just dev` could not bind to ports `8080` or `8081` because they were already in use. The browser checkpoint server was started on `8082` instead, then stopped after approval.
## Verification
- `cd backend && TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./internal/web -run 'TestTabloDetailEventsTabFullPageFallback|TestEventContentIsEscaped|TestEventWithoutEndTimeDisplaysOnlyStartTime|TestEventsOrderedByStartTimeThenTitle' -count=1`
- `cd backend && just generate && TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./... -count=1 && git diff --check`
- Browser UAT approved by user.
## User Setup Required
None - no external service configuration required.
## Next Phase Readiness
Phase 10 is ready to close. Phase 11 can consume `ListUserEventsRange` to build individual planning across the user's tablos.
---
*Phase: 10-events*
*Completed: 2026-05-16*

View file

@ -0,0 +1,56 @@
---
phase: 10-events
status: passed
verified_at: 2026-05-16T04:45:10Z
---
# Phase 10 Verification
## Result
PASS
Phase 10 delivers tablo-owned scheduled events with create, edit, delete, month calendar browsing, day prefill, end-time validation, ownership enforcement, and a user-scoped planning query surface.
## Requirements Coverage
| Requirement | Status | Evidence |
|-------------|--------|----------|
| EVENT-01 | PASS | `TestEventCreateRendersTitleInCalendar`, create form fields, `CreateEvent` query |
| EVENT-02 | PASS | `TestEventEditRendersInlineForm`, `TestEventUpdateChangesCalendarPlacement`, `TestEventDeleteRemovesFromCalendarAndDatabase` |
| EVENT-03 | PASS | `TestEventsTabRendersMonthGrid`, `TestTabloDetailEventsTabFullPageFallback` |
| EVENT-04 | PASS | `TestEventCreateRejectsEndTimeBeforeOrEqualStart`, `TestEventUpdateRejectsInvalidEndTime`, DB `events_end_after_start` constraint |
| EVENT-05 | PASS | `TestEventsTabOwnershipReturns404`, `TestEventMutationOwnershipReturns404`, `TestListUserEventsRangeReturnsOnlyOwnedTablos` |
## Automated Verification
Passed:
```bash
cd backend && just generate && TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./... -count=1 && git diff --check
```
Additional focused event checks passed across plans:
- Create/list/ownership calendar tests
- Edit/update/delete/ownership mutation tests
- Month navigation, day prefill, overflow, submitted-value precedence, and user aggregation tests
- Final full-page fallback, escaping, no-end-time, and ordering regression tests
## Browser UAT
Approved by user on 2026-05-16 after running the app locally.
Manual checkpoint covered:
- Events tab month grid and toolbar
- Event creation from the general action
- Event creation from a day cell with date prefilled
- Event edit and calendar refresh
- Equal start/end time validation copy
- Event deletion
- Past-month visibility
## Residual Risk
No known Phase 10 implementation gaps. The Events UI is intentionally functional and plain; visual polish is deferred per milestone direction.