docs(phase-10): complete phase execution
This commit is contained in:
parent
1d760d5540
commit
34d2c23e20
5 changed files with 177 additions and 21 deletions
|
|
@ -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 |
|
||||
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
99
.planning/phases/10-events/10-04-SUMMARY.md
Normal file
99
.planning/phases/10-events/10-04-SUMMARY.md
Normal 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*
|
||||
56
.planning/phases/10-events/10-VERIFICATION.md
Normal file
56
.planning/phases/10-events/10-VERIFICATION.md
Normal 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.
|
||||
Loading…
Reference in a new issue