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
- [ ] **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
- [ ] **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
- [ ] **EVENT-05**: Event authorization follows tablo access rules so users cannot read or mutate events for inaccessible tablos
- [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
- [x] **EVENT-02**: User can edit and delete tablo events
- [x] **EVENT-03**: Tablo detail page includes an events view listing that tablo's scheduled events
- [x] **EVENT-04**: Event validation requires an end time to be empty or after the start time
- [x] **EVENT-05**: Event authorization follows tablo access rules so users cannot read or mutate events for inaccessible tablos
### Planning
@ -97,7 +97,7 @@ Populated during roadmap creation.
|-------------|-------|--------|
| AUTH-08..13 | Phase 8 | Complete |
| ETAPE-01..06 | Phase 9 | Pending |
| EVENT-01..05 | Phase 10 | Pending |
| EVENT-01..05 | Phase 10 | Complete |
| PLAN-01..04 | Phase 11 | 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 |
| 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 |
| 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
milestone: v2.0
milestone_name: Collaboration, planning, and social sign-in
status: executing
last_updated: "2026-05-15T22:35:34.974Z"
last_activity: 2026-05-15
status: ready_to_plan
last_updated: "2026-05-16T04:45:10.000Z"
last_activity: 2026-05-16
progress:
total_phases: 5
completed_phases: 2
completed_phases: 3
total_plans: 13
completed_plans: 12
percent: 92
completed_plans: 13
percent: 60
---
# STATE
@ -24,15 +24,15 @@ progress:
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.
**Current focus:** Phase 10 — events
**Current focus:** Phase 11 — individual planning
## Current Position
Phase: 10 (events) — EXECUTING
Plan: 4 of 4
Status: Ready to execute
Last activity: 2026-05-15
Resume file: .planning/phases/10-events/10-04-PLAN.md
Phase: 11
Plan: Not started
Status: Ready to plan
Last activity: 2026-05-16
Resume file: .planning/phases/11-individual-planning/11-01-PLAN.md
## Phase Status
@ -40,14 +40,15 @@ Resume file: .planning/phases/10-events/10-04-PLAN.md
|---|-------|--------|
| 8 | Social Sign-in | ✓ Complete |
| 9 | Etapes | ◆ UAT passed; security pending |
| 10 | Events | ◆ Ready to execute |
| 11 | Individual Planning | ○ Pending |
| 10 | Events | ✓ Complete |
| 11 | Individual Planning | ○ Ready to plan |
| 12 | Native Tablo Chat | ○ Pending |
## 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`.
- 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

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.