From 96bb3144ecf30a7e32f1a181112e00bdd3e1e2a2 Mon Sep 17 00:00:00 2001 From: Lucas Berger Date: Thu, 18 Jun 2026 20:44:32 -0400 Subject: [PATCH] docs(quick-260618-smr): remove unused Redis service and references --- .planning/STATE.md | 1 + .../260618-smr-PLAN.md | 83 +++++++++++++++++++ .../260618-smr-SUMMARY.md | 65 +++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 .planning/quick/260618-smr-remove-unused-redis-service-and-referenc/260618-smr-PLAN.md create mode 100644 .planning/quick/260618-smr-remove-unused-redis-service-and-referenc/260618-smr-SUMMARY.md diff --git a/.planning/STATE.md b/.planning/STATE.md index b9e0a75..b40c334 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -256,6 +256,7 @@ Recent decisions affecting current work: | 260613-dmw | Exclude `.gitea/**` from the CI `changes` `code` paths-filter so workflow-only PRs skip the heavy api/harness jobs (treated like docs) while fast-checks + gate still run. Single `- '!.gitea/**'` negation appended after the yml/yaml globs (index 11 vs 5). Rides along on the Phase 16 branch / PR #15. | 2026-06-13 | 2d329a9 | | [260613-dmw-exclude-gitea-workflow-config-changes-fr](./quick/260613-dmw-exclude-gitea-workflow-config-changes-fr/) | | 260613-fp9 | `.gitea`/`.planning`-only pushes to main no longer trigger the Docker publish — added `paths-ignore: ['.gitea/**', '.planning/**']` under `on.push` in `.gitea/workflows/publish.yml` (skips only when EVERY changed file matches; mixed code+docs pushes still publish). `.dockerignore` already excludes `.planning` so the image is byte-identical. Done in isolated worktree (phase-10 agent held main tree). | 2026-06-13 | cd5a88c | | [260613-fp9-gitea-and-planning-pushes-should-not-tri](./quick/260613-fp9-gitea-and-planning-pushes-should-not-tri/) | | 260613-ndv | Isolate local apps/api integration tests to a dedicated `familysync_test` DB so test runs stop polluting the dev `familysync` DB. New CI-gated vitest globalSetup root-provisions (CREATE DATABASE + GRANT) + migrates + truncate-resets `familysync_test` each run; `vitest.config.ts` forces `DB_NAME=familysync_test` for local workers (no-op under CI, so CI's `familysync` service DB + db:migrate are untouched). Verified: dev `familysync` users stays 3 across a run, `familysync_test` resets (186→93, not doubled), 244/244 tests pass (flaky list_shares timeout gone), typecheck 0. Branch off main. | 2026-06-13 | 07d5161 | Verified | [260613-ndv-wire-apps-api-integration-tests-to-a-ded](./quick/260613-ndv-wire-apps-api-integration-tests-to-a-ded/) | +| 260618-smr | Remove unused Redis service and all references — Redis confirmed unused at runtime (no ioredis/redis client import, no `REDIS_*` env, not a dependency in any package.json). Dropped the `redis` service from both compose files and cleaned all references in CLAUDE.md, README.md, and docs/* + e2e config. Kept the in-memory-vs-Redis design-rationale comments (D-12/D-18) in listEmitter/reminderScheduler/linkNonceStore/localAuth. `docker compose config` parses clean (0 redis); `format:check` green. Branch off main. | 2026-06-18 | 0b42666 | Verified | [260618-smr-remove-unused-redis-service-and-referenc](./quick/260618-smr-remove-unused-redis-service-and-referenc/) | ## Deferred Items diff --git a/.planning/quick/260618-smr-remove-unused-redis-service-and-referenc/260618-smr-PLAN.md b/.planning/quick/260618-smr-remove-unused-redis-service-and-referenc/260618-smr-PLAN.md new file mode 100644 index 0000000..eb18ac8 --- /dev/null +++ b/.planning/quick/260618-smr-remove-unused-redis-service-and-referenc/260618-smr-PLAN.md @@ -0,0 +1,83 @@ +--- +quick_id: 260618-smr +slug: remove-unused-redis-service-and-referenc +description: Remove unused Redis service and references +type: quick +created: 2026-06-19 +files_modified: + - docker-compose.yml + - docker-compose.dev.yml + - CLAUDE.md + - README.md + - docs/ARCHITECTURE.md + - docs/CONFIGURATION.md + - docs/deployment.md + - docs/DEVELOPMENT.md + - docs/GETTING-STARTED.md + - docs/TESTING.md + - apps/pwa/e2e/README.md + - apps/pwa/playwright.config.ts +--- + +# Quick Task 260618-smr: Remove unused Redis service and references + +## Why + +Redis is confirmed **unused at runtime**: no `ioredis`/redis client import, no `REDIS_*` +env vars read in code, and `ioredis` is not a dependency in any `package.json`. It exists +only as a compose service + documentation references that imply it is part of the stack or +"reserved for future pub/sub". Decision: drop the container and all references (keep the +in-memory-vs-Redis design-rationale comments — see Constraint below). + +## Tasks + +### Task 1 — Remove the redis service from compose +- `docker-compose.yml`: delete the `redis:` service block (`image: redis:7-alpine` + its + comment) so only `api`, `mariadb`, and the `volumes:` block remain. The api `depends_on` + lists only `mariadb` — leave it untouched. +- `docker-compose.dev.yml`: delete the `redis:` ports override block (`ports: - '6379:6379'`). +- verify: `grep -ri redis docker-compose.yml docker-compose.dev.yml` returns nothing. +- done: neither compose file references redis; `docker compose config` still parses. + +### Task 2 — Clean documentation references +Remove/adjust every Redis mention so no doc implies Redis is part of the stack: +- `CLAUDE.md`: delete the Constraints line "Redis available (optional, …)"; delete the + `ioredis` row from the Supporting Libraries table; delete the "Redis is present in the + stack but not yet used…" sentence from the architecture paragraph (keep the rest of the + sentence about SSE/EventEmitter); change the compose-tree comment `(api + mariadb + redis)` + → `(api + mariadb)`. +- `README.md`: drop "Redis" from the prerequisites line; drop `redis` from the + `docker compose … up mariadb redis` command; drop ", Redis 7" from the compose-file + description; change "expose DB/Redis ports" → "expose DB ports"; change the Live-sync row + "Server-Sent Events + Redis 7 pub/sub" → "Server-Sent Events (in-process EventEmitter)". +- `docs/ARCHITECTURE.md`: delete the `Redis` table row. +- `docs/CONFIGURATION.md`: drop "and Redis on `localhost:6379`". +- `docs/deployment.md`: delete the `redis` services-table row. +- `docs/DEVELOPMENT.md`: remove the four Redis mentions (prereq bullet, "### 2. Start the dev + database and Redis" heading → "Start the dev database", the two `up mariadb redis` commands + → `up mariadb`, the "Exposes Redis on `localhost:6379`" bullet, and the + "(API in Docker + MariaDB + Redis…)" comment → "(API in Docker + MariaDB…)"). +- `docs/GETTING-STARTED.md`: prereq row "Used to run MariaDB and Redis locally" → "MariaDB"; + `up -d mariadb redis` → `up -d mariadb`; "and Redis (`localhost:6379`)" removed from prose. +- `docs/TESTING.md`: "The API, MariaDB, and Redis must already be running" → "The API and + MariaDB must already be running". +- `apps/pwa/e2e/README.md`: delete the "- Redis on `:6379`" bullet. +- `apps/pwa/playwright.config.ts`: update the two comments listing + "API+MariaDB+Redis are compose-managed" → "API+MariaDB are compose-managed". +- verify: `grep -rniE redis CLAUDE.md README.md docs apps/pwa/e2e apps/pwa/playwright.config.ts` + returns nothing (case-insensitive, excluding the word "credential"). +- done: no doc/config implies Redis is in the stack. + +## Constraint — KEEP these (do NOT touch) +The in-memory-vs-Redis **design-rationale** comments document why in-memory is used instead +of Redis (decisions D-12/D-18) and must remain: +- `apps/api/src/lib/listEmitter.ts` +- `apps/api/src/broker/reminderScheduler.ts` +- `apps/api/src/auth/linkNonceStore.ts` +- `apps/api/src/routes/localAuth.ts` + +## must_haves +- truth: "No redis service exists in either compose file" +- truth: "No documentation or e2e config references Redis as part of the stack" +- truth: "The D-12/D-18 in-memory-vs-Redis rationale comments in the 4 source files are intact" +- artifacts: [docker-compose.yml, docker-compose.dev.yml, CLAUDE.md, README.md, docs/*, apps/pwa/e2e/README.md, apps/pwa/playwright.config.ts] diff --git a/.planning/quick/260618-smr-remove-unused-redis-service-and-referenc/260618-smr-SUMMARY.md b/.planning/quick/260618-smr-remove-unused-redis-service-and-referenc/260618-smr-SUMMARY.md new file mode 100644 index 0000000..50668b2 --- /dev/null +++ b/.planning/quick/260618-smr-remove-unused-redis-service-and-referenc/260618-smr-SUMMARY.md @@ -0,0 +1,65 @@ +--- +quick_id: 260618-smr +slug: remove-unused-redis-service-and-referenc +description: Remove unused Redis service and references +status: complete +completed: 2026-06-18 +duration: ~10m +tasks_completed: 2 +tasks_total: 2 +files_modified: + - docker-compose.yml + - docker-compose.dev.yml + - CLAUDE.md + - README.md + - docs/ARCHITECTURE.md + - docs/CONFIGURATION.md + - docs/deployment.md + - docs/DEVELOPMENT.md + - docs/GETTING-STARTED.md + - docs/TESTING.md + - apps/pwa/e2e/README.md + - apps/pwa/playwright.config.ts +decisions: + - Redis dropped entirely from compose and all docs; in-memory EventEmitter is the live-sync mechanism (D-12/D-18 rationale comments in source preserved) +--- + +# Quick Task 260618-smr: Remove unused Redis service and references — Summary + +## One-liner + +Dropped the unused `redis:7-alpine` compose service and scrubbed every documentation/config reference implying Redis is part of the stack, while preserving the D-12/D-18 in-memory-vs-Redis design-rationale comments in source. + +## Tasks Completed + +| Task | Description | Commit | Files | +| ---- | ------------------------------------ | ------- | ---------------------------------------------------------- | +| 1 | Remove redis service from compose | 269e474 | docker-compose.yml, docker-compose.dev.yml | +| 2 | Clean documentation references | 8255be6 | CLAUDE.md, README.md, docs/*, apps/pwa/e2e/README.md, apps/pwa/playwright.config.ts | + +## Verification Results + +- `grep -ri redis docker-compose.yml docker-compose.dev.yml` → no output (clean) +- `docker compose -f docker-compose.yml -f docker-compose.dev.yml config` → PARSE OK +- `grep -rniE redis CLAUDE.md README.md docs apps/pwa/e2e apps/pwa/playwright.config.ts` → no output (clean) +- `pnpm format:check` → all matched files use Prettier code style +- Protected source files (listEmitter.ts, reminderScheduler.ts, linkNonceStore.ts, localAuth.ts) → untouched (git diff confirms no changes) + +## Docker Compose Config + +`docker compose -f docker-compose.yml -f docker-compose.dev.yml config` parsed successfully with no Redis service — confirmed available on this host. + +## Deviations from Plan + +None — plan executed exactly as written. + +## Known Stubs + +None. + +## Self-Check: PASSED + +- Commits 269e474 and 8255be6 exist in git log +- All 12 modified files confirmed updated +- Grep verifies zero Redis references in target files +- Protected source files confirmed untouched