# Requirements Archive: Xtablo v2.0 Collaboration, Planning, and Social Sign-in

**Archived:** 2026-05-16
**Source commit:** `58a9ce0`
**Outcome:** Shipped with acknowledged audit debt

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

## Completed Requirements

### Authentication

- [x] **AUTH-08**: User can start a Google sign-in flow from the login/signup page
- [x] **AUTH-09**: Google callback validates state, exchanges the authorization code, verifies the ID token, and creates or links a local Xtablo user
- [x] **AUTH-10**: Apple sign-in is disabled and hidden from the login/signup page
- [x] **AUTH-11**: Direct Apple sign-in routes are unavailable while Apple sign-in is disabled
- [x] **AUTH-12**: Social sign-in issues the same server-managed Xtablo session cookie used by email/password login
- [x] **AUTH-13**: Existing email/password login, signup, logout, CSRF, and rate limiting continue to work after social sign-in is added

### Chat

- [x] **CHAT-01**: Each tablo has a discussion view where authenticated authorized users can see persisted message history
- [x] **CHAT-02**: User can post a text message to a tablo discussion with validation and CSRF protection
- [x] **CHAT-03**: Messages are stored in Postgres with tablo, author, body, created timestamp, and deletion/edit metadata
- [x] **CHAT-04**: Open tablo discussion views receive new messages in real time without a manual refresh
- [x] **CHAT-05**: Real-time delivery uses Xtablo-owned infrastructure only; no managed chat or realtime provider is introduced
- [x] **CHAT-06**: Message rendering escapes user content and enforces a server-side maximum body length

### Etapes

- [x] **ETAPE-01**: User can create an etape inside a tablo with a title and optional description
- [x] **ETAPE-02**: User can edit, delete, and reorder etapes inside a tablo
- [x] **ETAPE-03**: User can assign a task to zero or one etape
- [x] **ETAPE-04**: Deleting an etape unassigns its tasks by default rather than deleting the tasks
- [x] **ETAPE-05**: The task UI can show or filter tasks by etape while preserving existing kanban status and ordering behavior
- [x] **ETAPE-06**: The data model prevents nested etapes; an etape cannot have a parent etape

### Events

- [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

- [x] **PLAN-01**: Each authenticated user can open an individual planning page
- [x] **PLAN-02**: Planning page lists the user's scheduled events across tablos in chronological order
- [x] **PLAN-03**: Planning page links each event back to its tablo context
- [x] **PLAN-04**: Planning page supports a functional empty state and date navigation/filtering suitable for the first working version

## Traceability

| Requirement | Phase | Final Status | Notes |
|-------------|-------|--------------|-------|
| AUTH-08..13 | Phase 8 | Complete with audit artifact debt | Implementation and validation passed; strict milestone audit wanted `08-VERIFICATION.md`. |
| ETAPE-01..06 | Phase 9 | Complete with archive correction | Source requirements were stale; `09-VALIDATION.md` and UAT evidence confirm completion. |
| EVENT-01..05 | Phase 10 | Complete | `10-VERIFICATION.md` and `10-VALIDATION.md` passed. |
| PLAN-01..04 | Phase 11 | Complete with validation draft debt | `11-VERIFICATION.md` passed; `11-VALIDATION.md` remained draft. |
| CHAT-01..06 | Phase 12 | Complete with audit artifact debt | Implementation, validation, and UAT passed; strict milestone audit wanted `12-VERIFICATION.md`. |

## Future Requirements

### Chat

- **CHAT-FUT-01**: Typing indicators
- **CHAT-FUT-02**: Read receipts
- **CHAT-FUT-03**: Message reactions
- **CHAT-FUT-04**: Threads or replies
- **CHAT-FUT-05**: File previews in chat messages

### Planning

- **PLAN-FUT-01**: Recurring events
- **PLAN-FUT-02**: Reminder notifications
- **PLAN-FUT-03**: ICS import/export
- **PLAN-FUT-04**: External calendar sync

### Etapes

- **ETAPE-FUT-01**: Etape progress rollups
- **ETAPE-FUT-02**: Etape templates
- **ETAPE-FUT-03**: Etape dependencies

## Out of Scope

| Feature | Reason |
|---------|--------|
| Managed chat/realtime providers | User explicitly does not want third-party chat. |
| Managed auth platforms | Google is an identity provider only; Xtablo owns users and sessions. Apple sign-in is disabled for now. |
| WebSocket-first chat protocol | SSE receive + HTMX POST send shipped for v2. |
| Nested etapes or arbitrary task hierarchy | User requested one parent per task and no parent-of-parent. |
| Notes / rich documents | Not part of the requested v2 feature set. |
| Billing / Stripe | Still deferred until product loop is validated. |
| Public booking widget | Separate product surface, not part of this milestone. |
| Client portal | Separate product surface, not part of this milestone. |
| Admin tooling | Separate product surface, not part of this milestone. |
| Mobile / Expo app | Web rewrite remains the current product surface. |
