Files
kandev/docs/plans/task-owned-worktree-lifecycle/task-04-session-delete-contract-and-e2e.md
T
2026-08-24 11:09:03 +00:00

102 lines
4.4 KiB
Markdown

---
id: "04-session-delete-contract-and-e2e"
title: "Verify session deletion preserves workspaces"
status: done
wave: 4
depends_on: ["03-task-owned-durable-cleanup"]
plan: "plan.md"
spec: "../../specs/tasks/requirements/session-delete-resource-cleanup.md"
decision: "../../decisions/2026-08-08-task-owned-worktree-lifetime.md"
---
# Task 04: Verify Session Deletion Preserves Workspaces
## Acceptance
- Desktop and mobile confirmation dialogs say that conversation history is
deleted while the task workspace and files are retained.
- Neither dialog fetches or warns about uncommitted/unpushed state; destructive
workspace warnings remain on task archive/delete.
- Deleting the only session leaves the task with zero sessions, its directory,
Git worktree registration, and uncommitted file intact; a new session reuses
the retained workspace.
- Deleting one of two sessions sharing a workspace leaves the other session
operational in that workspace.
- The existing mobile session-actions sheet and viewport-safe confirmation dialog
remain the native entry point with unchanged action semantics and touch targets.
- Public docs distinguish ordinary session deletion from task archive/delete and
keep Quick Chat's task-backed cleanup semantics separate.
- Operations and Kubernetes upgrade docs require a verified PostgreSQL backup,
stopped mixed-version backends, one successful schema initializer, and backup
restore before binary downgrade; they explain SQLite's automatic pre-upgrade
snapshot.
- All new copy is localized in English, pseudo, Portuguese, and Simplified
Chinese catalogs.
## TDD Sequence
1. RED: extend desktop and mobile rendered-component tests for the retained-
workspace copy and absence of uncommitted/unpushed warnings.
2. RED: add a managed desktop E2E that writes an uncommitted marker, deletes the
only session through visible UI, verifies zero sessions plus directory/Git
registration/marker preservation, and creates a replacement session that
observes the marker.
3. RED: add the two-session shared-workspace case and verify the remaining
session continues to operate.
4. RED: extend the mobile E2E to assert the same confirmation contract from the
native session-actions sheet.
5. GREEN: update localized dialog copy without adding new warning-fetch state.
6. GREEN: update public session documentation.
7. GREEN: update the existing operations/Kubernetes upgrade and rollback guides
with the one-time ownership-schema cutover requirements.
8. REFACTOR: share only translation keys or test helpers that reduce duplication;
retain the existing desktop and mobile compositions.
## Verification
```bash
cd apps && pnpm install --frozen-lockfile
cd apps && pnpm --filter @kandev/web test -- components/task/session-tab-menu.test.tsx components/task/mobile/mobile-sessions-section.test.tsx
cd apps/web && pnpm run typecheck
cd apps && pnpm run i18n:ratchet && pnpm run i18n:check
cd apps/web && pnpm e2e:run tests/session/multi-session-ux.spec.ts
cd apps/web && pnpm e2e:run --project mobile-chrome tests/session/mobile-session-deletion.spec.ts
node --test scripts/validate-public-docs.test.mjs
node scripts/validate-public-docs.mjs
```
## Files likely touched
- `apps/web/components/task/session-tab-menu.tsx`
- `apps/web/components/task/session-tab-menu.test.tsx`
- `apps/web/components/task/mobile/mobile-sessions-section.tsx`
- `apps/web/components/task/mobile/mobile-sessions-section.test.tsx`
- `apps/web/src/locales/en/task.json`
- `apps/web/src/locales/pseudo/task.json`
- `apps/web/src/locales/pt-pt/task.json`
- `apps/web/src/locales/zh-cn/task.json`
- `apps/web/e2e/tests/session/multi-session-ux.spec.ts`
- `apps/web/e2e/tests/session/mobile-session-deletion.spec.ts`
- `docs/public/sessions-and-review.md`
- `docs/public/operations.md`
- `docs/public/k8s.md`
## Dependencies
- Task 03 completes the backend ownership and durable task-cleanup contract.
## Inputs
- Current desktop `DeleteSessionDialog` and mobile
`DeleteSessionConfirmDialog` compositions.
- Existing task archive/delete cleanup summaries and warnings.
- Existing session Playwright fixtures and Git helpers.
## Output contract
Report desktop/mobile rendered test results, the exact user-visible contract,
zero-session and shared-session E2E evidence, Git registration and uncommitted
marker results, replacement-session reuse evidence, the documented
SQLite/PostgreSQL upgrade and downgrade procedure, i18n/typecheck/docs results,
and screenshots or traces for any failed mobile state.