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
|
### 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 |
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 |
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
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