From a2b61d2bff93d88653dce45604142ba1626d8ea2 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Tue, 3 Feb 2026 22:29:42 -0600 Subject: [PATCH] feat(#193): Align authentication mechanism between API and web client - Update AuthUser type in @mosaic/shared to include workspace fields - Update AuthGuard to support both cookie-based and Bearer token authentication - Add /auth/session endpoint for session validation - Install and configure cookie-parser middleware - Update CurrentUser decorator to use shared AuthUser type - Update tests for cookie and token authentication (20 tests passing) This ensures consistent authentication handling across API and web client, with proper type safety and support for both web browsers (cookies) and API clients (Bearer tokens). Fixes #193 Co-Authored-By: Claude Sonnet 4.5 --- apps/api/package.json | 2 + apps/api/src/auth/auth.controller.spec.ts | 96 ++++++++++- apps/api/src/auth/auth.controller.ts | 69 +++++++- .../auth/decorators/current-user.decorator.ts | 10 +- apps/api/src/auth/guards/auth.guard.spec.ts | 158 ++++++++++++++---- apps/api/src/auth/guards/auth.guard.ts | 58 ++++++- apps/api/src/main.ts | 4 + ...c.ts_20260203-2204_5_remediation_needed.md | 20 +++ ...c.ts_20260203-2226_1_remediation_needed.md | 20 +++ ...r.ts_20260203-2224_1_remediation_needed.md | 20 +++ ...r.ts_20260203-2228_1_remediation_needed.md | 20 +++ ...r.ts_20260203-2224_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2226_1_remediation_needed.md | 20 +++ ...d.ts_20260203-2224_1_remediation_needed.md | 20 +++ ...d.ts_20260203-2228_1_remediation_needed.md | 20 +++ ...d.ts_20260203-2228_2_remediation_needed.md | 20 +++ ...d.ts_20260203-2229_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2212_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2212_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2214_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2156_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2156_2_remediation_needed.md | 20 +++ ...c.ts_20260203-2156_3_remediation_needed.md | 20 +++ ...c.ts_20260203-2157_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2157_2_remediation_needed.md | 20 +++ ...c.ts_20260203-2159_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2159_2_remediation_needed.md | 20 +++ ...c.ts_20260203-2213_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2213_2_remediation_needed.md | 20 +++ ...e.ts_20260203-2157_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2157_2_remediation_needed.md | 20 +++ ...e.ts_20260203-2158_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2159_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2159_2_remediation_needed.md | 20 +++ ...e.ts_20260203-2159_3_remediation_needed.md | 20 +++ ...e.ts_20260203-2200_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2205_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2206_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2206_2_remediation_needed.md | 20 +++ ...e.ts_20260203-2212_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2213_1_remediation_needed.md | 20 +++ ...s.ts_20260203-2159_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2201_1_remediation_needed.md | 20 +++ ...o.ts_20260203-2200_1_remediation_needed.md | 20 +++ ...o.ts_20260203-2201_1_remediation_needed.md | 20 +++ ...o.ts_20260203-2201_2_remediation_needed.md | 20 +++ ...c.ts_20260203-2201_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2213_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2215_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2216_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2215_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2216_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2216_2_remediation_needed.md | 20 +++ ...c.ts_20260203-2216_3_remediation_needed.md | 20 +++ ...e.ts_20260203-2215_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2216_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2216_2_remediation_needed.md | 20 +++ ...e.ts_20260203-2217_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2217_2_remediation_needed.md | 20 +++ ...e.ts_20260203-2218_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2218_2_remediation_needed.md | 20 +++ ...e.ts_20260203-2219_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2219_2_remediation_needed.md | 20 +++ ...e.ts_20260203-2220_1_remediation_needed.md | 20 +++ ...e.ts_20260203-2220_2_remediation_needed.md | 20 +++ ...c.ts_20260203-2214_1_remediation_needed.md | 20 +++ ...r.ts_20260203-2215_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2203_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2203_2_remediation_needed.md | 20 +++ ...c.ts_20260203-2203_3_remediation_needed.md | 20 +++ ...c.ts_20260203-2203_4_remediation_needed.md | 20 +++ ...c.ts_20260203-2203_5_remediation_needed.md | 20 +++ ...c.ts_20260203-2204_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2204_2_remediation_needed.md | 20 +++ ...c.ts_20260203-2204_3_remediation_needed.md | 20 +++ ...c.ts_20260203-2204_4_remediation_needed.md | 20 +++ ...c.ts_20260203-2204_5_remediation_needed.md | 20 +++ ...c.ts_20260203-2205_1_remediation_needed.md | 20 +++ ...c.ts_20260203-2205_2_remediation_needed.md | 20 +++ ...y.ts_20260203-2202_1_remediation_needed.md | 20 +++ ...y.ts_20260203-2205_1_remediation_needed.md | 20 +++ ...y.ts_20260203-2206_1_remediation_needed.md | 20 +++ ...y.ts_20260203-2206_2_remediation_needed.md | 20 +++ ...y.ts_20260203-2206_3_remediation_needed.md | 20 +++ ...y.ts_20260203-2206_4_remediation_needed.md | 20 +++ ...y.ts_20260203-2207_1_remediation_needed.md | 20 +++ ...y.ts_20260203-2207_2_remediation_needed.md | 20 +++ ...n.ts_20260203-2225_1_remediation_needed.md | 20 +++ ...n.ts_20260203-2228_1_remediation_needed.md | 20 +++ ...s.ts_20260203-2224_1_remediation_needed.md | 20 +++ docs/scratchpads/193-auth-alignment.md | 88 ++++++++++ packages/shared/src/types/auth.types.ts | 4 + pnpm-lock.yaml | 46 +++-- 93 files changed, 2126 insertions(+), 69 deletions(-) create mode 100644 docs/reports/qa-automation/escalated/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.spec.ts_20260203-2226_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2224_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2228_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-decorators-current-user.decorator.ts_20260203-2224_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.spec.ts_20260203-2226_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2224_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2229_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.spec.ts_20260203-2212_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2212_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2214_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_3_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2158_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_3_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2200_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2205_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2212_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2213_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-constants.ts_20260203-2159_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.spec.ts_20260203-2201_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.ts_20260203-2200_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.controller.spec.ts_20260203-2201_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2213_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2215_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2216_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2215_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_3_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2215_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.spec.ts_20260203-2214_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.ts_20260203-2215_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_3_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_4_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_5_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_3_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_4_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2202_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2205_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_3_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_4_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_2_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2225_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2228_1_remediation_needed.md create mode 100644 docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-packages-shared-src-types-auth.types.ts_20260203-2224_1_remediation_needed.md create mode 100644 docs/scratchpads/193-auth-alignment.md diff --git a/apps/api/package.json b/apps/api/package.json index 4024251..fc967ea 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -53,6 +53,7 @@ "bullmq": "^5.67.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.3", + "cookie-parser": "^1.4.7", "discord.js": "^14.25.1", "gray-matter": "^4.0.3", "highlight.js": "^11.11.1", @@ -78,6 +79,7 @@ "@swc/core": "^1.10.18", "@types/adm-zip": "^0.5.7", "@types/archiver": "^7.0.0", + "@types/cookie-parser": "^1.4.10", "@types/express": "^5.0.1", "@types/highlight.js": "^10.1.0", "@types/node": "^22.13.4", diff --git a/apps/api/src/auth/auth.controller.spec.ts b/apps/api/src/auth/auth.controller.spec.ts index 082a186..86d66fa 100644 --- a/apps/api/src/auth/auth.controller.spec.ts +++ b/apps/api/src/auth/auth.controller.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect, beforeEach, vi } from "vitest"; import { Test, TestingModule } from "@nestjs/testing"; -import type { AuthUser } from "@mosaic/shared"; +import type { AuthUser, AuthSession } from "@mosaic/shared"; import { AuthController } from "./auth.controller"; import { AuthService } from "./auth.service"; @@ -39,15 +39,100 @@ describe("AuthController", () => { url: "/auth/session", }; - await controller.handleAuth(mockRequest); + await controller.handleAuth(mockRequest as unknown as Request); expect(mockAuthService.getAuth).toHaveBeenCalled(); expect(mockHandler).toHaveBeenCalledWith(mockRequest); }); }); + describe("getSession", () => { + it("should return user and session data", () => { + const mockUser: AuthUser = { + id: "user-123", + email: "test@example.com", + name: "Test User", + workspaceId: "workspace-123", + }; + + const mockSession = { + id: "session-123", + token: "session-token", + expiresAt: new Date(Date.now() + 86400000), + }; + + const mockRequest = { + user: mockUser, + session: mockSession, + }; + + const result = controller.getSession(mockRequest); + + const expected: AuthSession = { + user: mockUser, + session: { + id: mockSession.id, + token: mockSession.token, + expiresAt: mockSession.expiresAt, + }, + }; + + expect(result).toEqual(expected); + }); + + it("should throw error if user not found in request", () => { + const mockRequest = { + session: { + id: "session-123", + token: "session-token", + expiresAt: new Date(), + }, + }; + + expect(() => controller.getSession(mockRequest)).toThrow("User session not found"); + }); + + it("should throw error if session not found in request", () => { + const mockRequest = { + user: { + id: "user-123", + email: "test@example.com", + name: "Test User", + }, + }; + + expect(() => controller.getSession(mockRequest)).toThrow("User session not found"); + }); + }); + describe("getProfile", () => { - it("should return user profile", () => { + it("should return complete user profile with workspace fields", () => { + const mockUser: AuthUser = { + id: "user-123", + email: "test@example.com", + name: "Test User", + image: "https://example.com/avatar.jpg", + emailVerified: true, + workspaceId: "workspace-123", + currentWorkspaceId: "workspace-456", + workspaceRole: "admin", + }; + + const result = controller.getProfile(mockUser); + + expect(result).toEqual({ + id: mockUser.id, + email: mockUser.email, + name: mockUser.name, + image: mockUser.image, + emailVerified: mockUser.emailVerified, + workspaceId: mockUser.workspaceId, + currentWorkspaceId: mockUser.currentWorkspaceId, + workspaceRole: mockUser.workspaceRole, + }); + }); + + it("should return user profile with optional fields undefined", () => { const mockUser: AuthUser = { id: "user-123", email: "test@example.com", @@ -60,6 +145,11 @@ describe("AuthController", () => { id: mockUser.id, email: mockUser.email, name: mockUser.name, + image: undefined, + emailVerified: undefined, + workspaceId: undefined, + currentWorkspaceId: undefined, + workspaceRole: undefined, }); }); }); diff --git a/apps/api/src/auth/auth.controller.ts b/apps/api/src/auth/auth.controller.ts index b6a7b07..0701d7d 100644 --- a/apps/api/src/auth/auth.controller.ts +++ b/apps/api/src/auth/auth.controller.ts @@ -1,25 +1,84 @@ -import { Controller, All, Req, Get, UseGuards } from "@nestjs/common"; -import type { AuthUser } from "@mosaic/shared"; +import { Controller, All, Req, Get, UseGuards, Request } from "@nestjs/common"; +import type { AuthUser, AuthSession } from "@mosaic/shared"; import { AuthService } from "./auth.service"; import { AuthGuard } from "./guards/auth.guard"; import { CurrentUser } from "./decorators/current-user.decorator"; +interface RequestWithSession { + user?: AuthUser; + session?: { + id: string; + token: string; + expiresAt: Date; + [key: string]: unknown; + }; +} + @Controller("auth") export class AuthController { constructor(private readonly authService: AuthService) {} + /** + * Get current session + * Returns user and session data for authenticated user + */ + @Get("session") + @UseGuards(AuthGuard) + getSession(@Request() req: RequestWithSession): AuthSession { + if (!req.user || !req.session) { + // This should never happen after AuthGuard, but TypeScript needs the check + throw new Error("User session not found"); + } + + return { + user: req.user, + session: { + id: req.session.id, + token: req.session.token, + expiresAt: req.session.expiresAt, + }, + }; + } + + /** + * Get current user profile + * Returns basic user information + */ @Get("profile") @UseGuards(AuthGuard) - getProfile(@CurrentUser() user: AuthUser) { - return { + getProfile(@CurrentUser() user: AuthUser): AuthUser { + // Return only defined properties to maintain type safety + const profile: AuthUser = { id: user.id, email: user.email, name: user.name, }; + + if (user.image !== undefined) { + profile.image = user.image; + } + if (user.emailVerified !== undefined) { + profile.emailVerified = user.emailVerified; + } + if (user.workspaceId !== undefined) { + profile.workspaceId = user.workspaceId; + } + if (user.currentWorkspaceId !== undefined) { + profile.currentWorkspaceId = user.currentWorkspaceId; + } + if (user.workspaceRole !== undefined) { + profile.workspaceRole = user.workspaceRole; + } + + return profile; } + /** + * Handle all other auth routes (sign-in, sign-up, sign-out, etc.) + * Delegates to BetterAuth + */ @All("*") - async handleAuth(@Req() req: Request) { + async handleAuth(@Req() req: Request): Promise { const auth = this.authService.getAuth(); return auth.handler(req); } diff --git a/apps/api/src/auth/decorators/current-user.decorator.ts b/apps/api/src/auth/decorators/current-user.decorator.ts index efd4232..9da640c 100644 --- a/apps/api/src/auth/decorators/current-user.decorator.ts +++ b/apps/api/src/auth/decorators/current-user.decorator.ts @@ -1,10 +1,14 @@ import type { ExecutionContext } from "@nestjs/common"; import { createParamDecorator } from "@nestjs/common"; -import type { AuthenticatedRequest, AuthenticatedUser } from "../../common/types/user.types"; +import type { AuthUser } from "@mosaic/shared"; + +interface RequestWithUser { + user?: AuthUser; +} export const CurrentUser = createParamDecorator( - (_data: unknown, ctx: ExecutionContext): AuthenticatedUser | undefined => { - const request = ctx.switchToHttp().getRequest(); + (_data: unknown, ctx: ExecutionContext): AuthUser | undefined => { + const request = ctx.switchToHttp().getRequest(); return request.user; } ); diff --git a/apps/api/src/auth/guards/auth.guard.spec.ts b/apps/api/src/auth/guards/auth.guard.spec.ts index 0f7ed12..557f647 100644 --- a/apps/api/src/auth/guards/auth.guard.spec.ts +++ b/apps/api/src/auth/guards/auth.guard.spec.ts @@ -29,9 +29,13 @@ describe("AuthGuard", () => { vi.clearAllMocks(); }); - const createMockExecutionContext = (headers: any = {}): ExecutionContext => { + const createMockExecutionContext = ( + headers: Record = {}, + cookies: Record = {} + ): ExecutionContext => { const mockRequest = { headers, + cookies, }; return { @@ -42,57 +46,139 @@ describe("AuthGuard", () => { }; describe("canActivate", () => { - it("should return true for valid session", async () => { - const mockSessionData = { - user: { - id: "user-123", - email: "test@example.com", - name: "Test User", - }, - session: { - id: "session-123", - }, - }; + const mockSessionData = { + user: { + id: "user-123", + email: "test@example.com", + name: "Test User", + }, + session: { + id: "session-123", + token: "session-token", + expiresAt: new Date(Date.now() + 86400000), + }, + }; - mockAuthService.verifySession.mockResolvedValue(mockSessionData); + describe("Bearer token authentication", () => { + it("should return true for valid Bearer token", async () => { + mockAuthService.verifySession.mockResolvedValue(mockSessionData); - const context = createMockExecutionContext({ - authorization: "Bearer valid-token", + const context = createMockExecutionContext({ + authorization: "Bearer valid-token", + }); + + const result = await guard.canActivate(context); + + expect(result).toBe(true); + expect(mockAuthService.verifySession).toHaveBeenCalledWith("valid-token"); }); - const result = await guard.canActivate(context); + it("should throw UnauthorizedException for invalid Bearer token", async () => { + mockAuthService.verifySession.mockResolvedValue(null); - expect(result).toBe(true); - expect(mockAuthService.verifySession).toHaveBeenCalledWith("valid-token"); + const context = createMockExecutionContext({ + authorization: "Bearer invalid-token", + }); + + await expect(guard.canActivate(context)).rejects.toThrow(UnauthorizedException); + await expect(guard.canActivate(context)).rejects.toThrow("Invalid or expired session"); + }); }); - it("should throw UnauthorizedException if no token provided", async () => { - const context = createMockExecutionContext({}); + describe("Cookie-based authentication", () => { + it("should return true for valid session cookie", async () => { + mockAuthService.verifySession.mockResolvedValue(mockSessionData); - await expect(guard.canActivate(context)).rejects.toThrow(UnauthorizedException); - await expect(guard.canActivate(context)).rejects.toThrow("No authentication token provided"); - }); + const context = createMockExecutionContext( + {}, + { + "better-auth.session_token": "cookie-token", + } + ); - it("should throw UnauthorizedException if session is invalid", async () => { - mockAuthService.verifySession.mockResolvedValue(null); + const result = await guard.canActivate(context); - const context = createMockExecutionContext({ - authorization: "Bearer invalid-token", + expect(result).toBe(true); + expect(mockAuthService.verifySession).toHaveBeenCalledWith("cookie-token"); }); - await expect(guard.canActivate(context)).rejects.toThrow(UnauthorizedException); - await expect(guard.canActivate(context)).rejects.toThrow("Invalid or expired session"); - }); + it("should prefer cookie over Bearer token when both present", async () => { + mockAuthService.verifySession.mockResolvedValue(mockSessionData); - it("should throw UnauthorizedException if session verification fails", async () => { - mockAuthService.verifySession.mockRejectedValue(new Error("Verification failed")); + const context = createMockExecutionContext( + { + authorization: "Bearer bearer-token", + }, + { + "better-auth.session_token": "cookie-token", + } + ); - const context = createMockExecutionContext({ - authorization: "Bearer error-token", + const result = await guard.canActivate(context); + + expect(result).toBe(true); + expect(mockAuthService.verifySession).toHaveBeenCalledWith("cookie-token"); }); - await expect(guard.canActivate(context)).rejects.toThrow(UnauthorizedException); - await expect(guard.canActivate(context)).rejects.toThrow("Authentication failed"); + it("should fallback to Bearer token if no cookie", async () => { + mockAuthService.verifySession.mockResolvedValue(mockSessionData); + + const context = createMockExecutionContext( + { + authorization: "Bearer bearer-token", + }, + {} + ); + + const result = await guard.canActivate(context); + + expect(result).toBe(true); + expect(mockAuthService.verifySession).toHaveBeenCalledWith("bearer-token"); + }); + }); + + describe("Error handling", () => { + it("should throw UnauthorizedException if no token provided", async () => { + const context = createMockExecutionContext({}, {}); + + await expect(guard.canActivate(context)).rejects.toThrow(UnauthorizedException); + await expect(guard.canActivate(context)).rejects.toThrow( + "No authentication token provided" + ); + }); + + it("should throw UnauthorizedException if session verification fails", async () => { + mockAuthService.verifySession.mockRejectedValue(new Error("Verification failed")); + + const context = createMockExecutionContext({ + authorization: "Bearer error-token", + }); + + await expect(guard.canActivate(context)).rejects.toThrow(UnauthorizedException); + await expect(guard.canActivate(context)).rejects.toThrow("Authentication failed"); + }); + + it("should attach user and session to request on success", async () => { + mockAuthService.verifySession.mockResolvedValue(mockSessionData); + + const mockRequest = { + headers: { + authorization: "Bearer valid-token", + }, + cookies: {}, + }; + + const context = { + switchToHttp: () => ({ + getRequest: () => mockRequest, + }), + } as ExecutionContext; + + await guard.canActivate(context); + + expect(mockRequest).toHaveProperty("user", mockSessionData.user); + expect(mockRequest).toHaveProperty("session", mockSessionData.session); + }); }); }); }); diff --git a/apps/api/src/auth/guards/auth.guard.ts b/apps/api/src/auth/guards/auth.guard.ts index eff76e9..145b3cd 100644 --- a/apps/api/src/auth/guards/auth.guard.ts +++ b/apps/api/src/auth/guards/auth.guard.ts @@ -1,14 +1,26 @@ import { Injectable, CanActivate, ExecutionContext, UnauthorizedException } from "@nestjs/common"; import { AuthService } from "../auth.service"; -import type { AuthenticatedRequest } from "../../common/types/user.types"; +import type { AuthUser } from "@mosaic/shared"; + +/** + * Request type with authentication context + */ +interface AuthRequest { + user?: AuthUser; + session?: Record; + headers: Record; + cookies?: Record; +} @Injectable() export class AuthGuard implements CanActivate { constructor(private readonly authService: AuthService) {} async canActivate(context: ExecutionContext): Promise { - const request = context.switchToHttp().getRequest(); - const token = this.extractTokenFromHeader(request); + const request = context.switchToHttp().getRequest(); + + // Try to get token from either cookie (preferred) or Authorization header + const token = this.extractToken(request); if (!token) { throw new UnauthorizedException("No authentication token provided"); @@ -21,12 +33,13 @@ export class AuthGuard implements CanActivate { throw new UnauthorizedException("Invalid or expired session"); } - // Attach user to request (with type assertion for session data structure) - const user = sessionData.user as unknown as AuthenticatedRequest["user"]; - if (!user) { + // Attach user and session to request + const user = sessionData.user; + // Validate user has required fields + if (typeof user !== "object" || !("id" in user) || !("email" in user) || !("name" in user)) { throw new UnauthorizedException("Invalid user data in session"); } - request.user = user; + request.user = user as unknown as AuthUser; request.session = sessionData.session; return true; @@ -39,7 +52,36 @@ export class AuthGuard implements CanActivate { } } - private extractTokenFromHeader(request: AuthenticatedRequest): string | undefined { + /** + * Extract token from cookie (preferred) or Authorization header + */ + private extractToken(request: AuthRequest): string | undefined { + // Try cookie first (BetterAuth default) + const cookieToken = this.extractTokenFromCookie(request); + if (cookieToken) { + return cookieToken; + } + + // Fallback to Authorization header for API clients + return this.extractTokenFromHeader(request); + } + + /** + * Extract token from cookie (BetterAuth stores session token in better-auth.session_token cookie) + */ + private extractTokenFromCookie(request: AuthRequest): string | undefined { + if (!request.cookies) { + return undefined; + } + + // BetterAuth uses 'better-auth.session_token' as the cookie name by default + return request.cookies["better-auth.session_token"]; + } + + /** + * Extract token from Authorization header (Bearer token) + */ + private extractTokenFromHeader(request: AuthRequest): string | undefined { const authHeader = request.headers.authorization; if (typeof authHeader !== "string") { return undefined; diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index 9e46758..98fb2f2 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -1,5 +1,6 @@ import { NestFactory } from "@nestjs/core"; import { ValidationPipe } from "@nestjs/common"; +import cookieParser from "cookie-parser"; import { AppModule } from "./app.module"; import { GlobalExceptionFilter } from "./filters/global-exception.filter"; @@ -28,6 +29,9 @@ function getPort(): number { async function bootstrap() { const app = await NestFactory.create(AppModule); + // Enable cookie parser for session handling + app.use(cookieParser()); + // Enable global validation pipe with transformation app.useGlobalPipes( new ValidationPipe({ diff --git a/docs/reports/qa-automation/escalated/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md b/docs/reports/qa-automation/escalated/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md new file mode 100644 index 0000000..35322ad --- /dev/null +++ b/docs/reports/qa-automation/escalated/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 5 +**Generated:** 2026-02-03 22:04:53 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/escalated/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.spec.ts_20260203-2226_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.spec.ts_20260203-2226_1_remediation_needed.md new file mode 100644 index 0000000..a99dd98 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.spec.ts_20260203-2226_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/auth.controller.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:26:21 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.spec.ts_20260203-2226_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2224_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2224_1_remediation_needed.md new file mode 100644 index 0000000..3bfb7b1 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2224_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/auth.controller.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:24:50 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2224_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2228_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2228_1_remediation_needed.md new file mode 100644 index 0000000..dcd78a2 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2228_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/auth.controller.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:28:39 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-auth.controller.ts_20260203-2228_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-decorators-current-user.decorator.ts_20260203-2224_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-decorators-current-user.decorator.ts_20260203-2224_1_remediation_needed.md new file mode 100644 index 0000000..0da846b --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-decorators-current-user.decorator.ts_20260203-2224_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/decorators/current-user.decorator.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:24:58 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-decorators-current-user.decorator.ts_20260203-2224_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.spec.ts_20260203-2226_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.spec.ts_20260203-2226_1_remediation_needed.md new file mode 100644 index 0000000..947f60e --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.spec.ts_20260203-2226_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/guards/auth.guard.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:26:00 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.spec.ts_20260203-2226_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2224_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2224_1_remediation_needed.md new file mode 100644 index 0000000..b90925c --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2224_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/guards/auth.guard.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:24:36 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2224_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_1_remediation_needed.md new file mode 100644 index 0000000..4c62dab --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/guards/auth.guard.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:28:32 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_2_remediation_needed.md new file mode 100644 index 0000000..c4b6c07 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/guards/auth.guard.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:28:50 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2228_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2229_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2229_1_remediation_needed.md new file mode 100644 index 0000000..dc12d0c --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2229_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/auth/guards/auth.guard.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:29:34 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-auth-guards-auth.guard.ts_20260203-2229_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.spec.ts_20260203-2212_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.spec.ts_20260203-2212_1_remediation_needed.md new file mode 100644 index 0000000..d10a56e --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.spec.ts_20260203-2212_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/circuit-breaker.service.spec.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:12:23 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.spec.ts_20260203-2212_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2212_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2212_1_remediation_needed.md new file mode 100644 index 0000000..a35e7ea --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2212_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/circuit-breaker.service.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:12:42 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2212_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2214_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2214_1_remediation_needed.md new file mode 100644 index 0000000..e3e2e14 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2214_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/circuit-breaker.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:14:27 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-circuit-breaker.service.ts_20260203-2214_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_1_remediation_needed.md new file mode 100644 index 0000000..803555a --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 21:56:41 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_2_remediation_needed.md new file mode 100644 index 0000000..46badee --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 21:56:46 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_3_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_3_remediation_needed.md new file mode 100644 index 0000000..8541953 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_3_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 3 +**Generated:** 2026-02-03 21:56:53 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2156_3_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_1_remediation_needed.md new file mode 100644 index 0000000..6d02c8d --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 21:57:01 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_2_remediation_needed.md new file mode 100644 index 0000000..9c1cf63 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 21:57:09 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2157_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_1_remediation_needed.md new file mode 100644 index 0000000..0db914b --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 21:59:09 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_2_remediation_needed.md new file mode 100644 index 0000000..fa1a7c3 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 21:59:18 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2159_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_1_remediation_needed.md new file mode 100644 index 0000000..74e1170 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:13:33 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_2_remediation_needed.md new file mode 100644 index 0000000..e17e46e --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:13:40 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.spec.ts_20260203-2213_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_1_remediation_needed.md new file mode 100644 index 0000000..3658314 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 21:57:21 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_2_remediation_needed.md new file mode 100644 index 0000000..6fc1a2c --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 21:57:28 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2157_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2158_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2158_1_remediation_needed.md new file mode 100644 index 0000000..88210ed --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2158_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 21:58:19 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2158_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_1_remediation_needed.md new file mode 100644 index 0000000..fa2fa51 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 21:59:39 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_2_remediation_needed.md new file mode 100644 index 0000000..22933c4 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 21:59:44 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_3_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_3_remediation_needed.md new file mode 100644 index 0000000..71607e5 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_3_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 3 +**Generated:** 2026-02-03 21:59:53 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2159_3_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2200_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2200_1_remediation_needed.md new file mode 100644 index 0000000..a63855a --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2200_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:00:04 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2200_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2205_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2205_1_remediation_needed.md new file mode 100644 index 0000000..b86dd78 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2205_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:05:58 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2205_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_1_remediation_needed.md new file mode 100644 index 0000000..5135e6f --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:06:07 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_2_remediation_needed.md new file mode 100644 index 0000000..f79a6a4 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:06:14 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2206_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2212_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2212_1_remediation_needed.md new file mode 100644 index 0000000..650d4a1 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2212_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:12:56 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2212_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2213_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2213_1_remediation_needed.md new file mode 100644 index 0000000..6766c23 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2213_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/connection.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:13:04 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-connection.service.ts_20260203-2213_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-constants.ts_20260203-2159_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-constants.ts_20260203-2159_1_remediation_needed.md new file mode 100644 index 0000000..9f735bd --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-constants.ts_20260203-2159_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/constants.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 21:59:29 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-constants.ts_20260203-2159_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.spec.ts_20260203-2201_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.spec.ts_20260203-2201_1_remediation_needed.md new file mode 100644 index 0000000..af70634 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.spec.ts_20260203-2201_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/dto/capabilities.dto.spec.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:01:45 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.spec.ts_20260203-2201_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.ts_20260203-2200_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.ts_20260203-2200_1_remediation_needed.md new file mode 100644 index 0000000..ffd43ad --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.ts_20260203-2200_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/dto/capabilities.dto.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:00:55 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-capabilities.dto.ts_20260203-2200_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_1_remediation_needed.md new file mode 100644 index 0000000..f46f47f --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/dto/connection.dto.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:01:01 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_2_remediation_needed.md new file mode 100644 index 0000000..822c73e --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/dto/connection.dto.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:01:06 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-dto-connection.dto.ts_20260203-2201_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.controller.spec.ts_20260203-2201_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.controller.spec.ts_20260203-2201_1_remediation_needed.md new file mode 100644 index 0000000..f1ce9bb --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.controller.spec.ts_20260203-2201_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/federation.controller.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:01:35 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.controller.spec.ts_20260203-2201_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2213_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2213_1_remediation_needed.md new file mode 100644 index 0000000..b3a6702 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2213_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/federation.module.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:13:17 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2213_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2215_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2215_1_remediation_needed.md new file mode 100644 index 0000000..6caab88 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2215_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/federation.module.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:15:52 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2215_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2216_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2216_1_remediation_needed.md new file mode 100644 index 0000000..3ad1be3 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2216_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/federation.module.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:16:04 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-federation.module.ts_20260203-2216_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2215_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2215_1_remediation_needed.md new file mode 100644 index 0000000..9a1327e --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2215_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.spec.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:15:28 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2215_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_1_remediation_needed.md new file mode 100644 index 0000000..a3a058a --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:16:15 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_2_remediation_needed.md new file mode 100644 index 0000000..e2bcb4a --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:16:20 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_3_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_3_remediation_needed.md new file mode 100644 index 0000000..f2bae64 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_3_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 3 +**Generated:** 2026-02-03 22:16:24 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.spec.ts_20260203-2216_3_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2215_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2215_1_remediation_needed.md new file mode 100644 index 0000000..e97910c --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2215_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:15:43 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2215_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_1_remediation_needed.md new file mode 100644 index 0000000..1ad586d --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:16:54 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_2_remediation_needed.md new file mode 100644 index 0000000..43636cf --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:16:59 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2216_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_1_remediation_needed.md new file mode 100644 index 0000000..cb292aa --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:17:03 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_2_remediation_needed.md new file mode 100644 index 0000000..011b2b8 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:17:38 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2217_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_1_remediation_needed.md new file mode 100644 index 0000000..d2bc430 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:18:09 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_2_remediation_needed.md new file mode 100644 index 0000000..71c2a0f --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:18:34 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2218_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_1_remediation_needed.md new file mode 100644 index 0000000..c83117d --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:19:28 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_2_remediation_needed.md new file mode 100644 index 0000000..0b3f52b --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:19:57 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2219_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_1_remediation_needed.md new file mode 100644 index 0000000..ec0544a --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:20:23 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_2_remediation_needed.md new file mode 100644 index 0000000..5db5904 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health-check.service.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:20:46 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health-check.service.ts_20260203-2220_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.spec.ts_20260203-2214_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.spec.ts_20260203-2214_1_remediation_needed.md new file mode 100644 index 0000000..68aa83b --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.spec.ts_20260203-2214_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health.controller.spec.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:14:58 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.spec.ts_20260203-2214_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.ts_20260203-2215_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.ts_20260203-2215_1_remediation_needed.md new file mode 100644 index 0000000..d9dcae7 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.ts_20260203-2215_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/health.controller.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:15:03 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-health.controller.ts_20260203-2215_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_1_remediation_needed.md new file mode 100644 index 0000000..4fc2cd1 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:03:16 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_2_remediation_needed.md new file mode 100644 index 0000000..ed19a8c --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:03:34 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_3_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_3_remediation_needed.md new file mode 100644 index 0000000..6a4a47a --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_3_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 3 +**Generated:** 2026-02-03 22:03:41 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_3_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_4_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_4_remediation_needed.md new file mode 100644 index 0000000..7dc99ec --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_4_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 4 +**Generated:** 2026-02-03 22:03:49 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_4_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_5_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_5_remediation_needed.md new file mode 100644 index 0000000..11929e7 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_5_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 5 +**Generated:** 2026-02-03 22:03:59 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2203_5_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_1_remediation_needed.md new file mode 100644 index 0000000..90b62ed --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:04:03 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_2_remediation_needed.md new file mode 100644 index 0000000..7ab9d57 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:04:15 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_3_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_3_remediation_needed.md new file mode 100644 index 0000000..ea40b68 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_3_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 3 +**Generated:** 2026-02-03 22:04:21 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_3_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_4_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_4_remediation_needed.md new file mode 100644 index 0000000..12abbb4 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_4_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 4 +**Generated:** 2026-02-03 22:04:35 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_4_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md new file mode 100644 index 0000000..5325527 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 5 +**Generated:** 2026-02-03 22:04:45 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2204_5_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_1_remediation_needed.md new file mode 100644 index 0000000..5ec4417 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:05:02 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_2_remediation_needed.md new file mode 100644 index 0000000..b81b61b --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.spec.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:05:24 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.spec.ts_20260203-2205_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2202_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2202_1_remediation_needed.md new file mode 100644 index 0000000..ce9279b --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2202_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.ts +**Tool Used:** Write +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:02:54 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2202_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2205_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2205_1_remediation_needed.md new file mode 100644 index 0000000..b293c58 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2205_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:05:45 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2205_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_1_remediation_needed.md new file mode 100644 index 0000000..6493466 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:06:42 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_2_remediation_needed.md new file mode 100644 index 0000000..7ac1908 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:06:48 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_3_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_3_remediation_needed.md new file mode 100644 index 0000000..5dcb655 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_3_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 3 +**Generated:** 2026-02-03 22:06:54 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_3_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_4_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_4_remediation_needed.md new file mode 100644 index 0000000..b726c4b --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_4_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 4 +**Generated:** 2026-02-03 22:06:59 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2206_4_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_1_remediation_needed.md new file mode 100644 index 0000000..136a0ad --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:07:22 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_2_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_2_remediation_needed.md new file mode 100644 index 0000000..2a9bb57 --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_2_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/federation/utils/retry.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 2 +**Generated:** 2026-02-03 22:07:48 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-federation-utils-retry.ts_20260203-2207_2_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2225_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2225_1_remediation_needed.md new file mode 100644 index 0000000..51848aa --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2225_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/main.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:25:34 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2225_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2228_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2228_1_remediation_needed.md new file mode 100644 index 0000000..de246ca --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2228_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/apps/api/src/main.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:28:24 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-apps-api-src-main.ts_20260203-2228_1_remediation_needed.md" +``` diff --git a/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-packages-shared-src-types-auth.types.ts_20260203-2224_1_remediation_needed.md b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-packages-shared-src-types-auth.types.ts_20260203-2224_1_remediation_needed.md new file mode 100644 index 0000000..155836d --- /dev/null +++ b/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-packages-shared-src-types-auth.types.ts_20260203-2224_1_remediation_needed.md @@ -0,0 +1,20 @@ +# QA Remediation Report + +**File:** /home/jwoltje/src/mosaic-stack/packages/shared/src/types/auth.types.ts +**Tool Used:** Edit +**Epic:** general +**Iteration:** 1 +**Generated:** 2026-02-03 22:24:18 + +## Status + +Pending QA validation + +## Next Steps + +This report was created by the QA automation hook. +To process this report, run: + +```bash +claude -p "Use Task tool to launch universal-qa-agent for report: /home/jwoltje/src/mosaic-stack/docs/reports/qa-automation/pending/home-jwoltje-src-mosaic-stack-packages-shared-src-types-auth.types.ts_20260203-2224_1_remediation_needed.md" +``` diff --git a/docs/scratchpads/193-auth-alignment.md b/docs/scratchpads/193-auth-alignment.md new file mode 100644 index 0000000..a8a779c --- /dev/null +++ b/docs/scratchpads/193-auth-alignment.md @@ -0,0 +1,88 @@ +# Issue #193: Align authentication mechanism between API and web client + +## Objective + +Align authentication mechanism between API and web client to ensure consistent JWT/session handling, type definitions, and token management. + +## Current State Analysis + +### Problems Identified + +1. **Type Mismatch**: + - API uses `AuthenticatedUser` from `apps/api/src/common/types/user.types.ts` + - Web uses `AuthUser` from `@mosaic/shared/src/types/auth.types.ts` + - Fields differ: `AuthenticatedUser` has optional `workspaceId`, `currentWorkspaceId`, `workspaceRole` + - `AuthenticatedUser.name` is `string | null`, `AuthUser.name` is `string` + +2. **Session Handling Inconsistency**: + - API expects Bearer tokens in Authorization header (AuthGuard line 11-15) + - Web client uses `credentials: "include"` for cookie-based auth (client.ts line 37) + - BetterAuth supports both, but we're mixing approaches + +3. **Missing Session Endpoint**: + - Web calls `/auth/session` (auth-context.tsx line 23) + - API only has `/auth/profile` endpoint (auth.controller.ts line 11-19) + +4. **Token Refresh**: + - No token refresh mechanism implemented + - Session expiry is 24 hours but no automatic refresh + +## Approach + +### 1. Standardize on Cookie-Based Sessions (BetterAuth default) + +- BetterAuth handles sessions via cookies automatically +- Remove Bearer token extraction from AuthGuard +- Use BetterAuth's built-in session validation + +### 2. Align Type Definitions + +- Update `AuthUser` in `@mosaic/shared` to include workspace fields +- Make API use `AuthUser` instead of `AuthenticatedUser` +- Ensure consistency across all auth-related types + +### 3. Add Missing Endpoints + +- Add `/auth/session` endpoint to return current session +- Implement proper session refresh endpoint + +### 4. Update Web Client + +- Ensure consistent use of cookie-based auth +- Add proper error handling for session expiry +- Implement session refresh logic + +## Implementation Plan + +- [x] Analyze current state +- [x] Write tests for session validation (updated auth.guard.spec.ts) +- [x] Update shared types to include workspace fields +- [x] Update API AuthGuard to use cookie-based sessions +- [x] Add /auth/session endpoint +- [x] Install and configure cookie-parser middleware +- [x] Update CurrentUser decorator to use AuthUser +- [x] Update tests for new session endpoint +- [ ] Web client already uses cookies correctly (no changes needed) +- [ ] Document session refresh mechanism (BetterAuth handles this automatically) +- [x] Test auth flow (all 20 auth tests passing) + +## Testing Strategy + +### Unit Tests + +- AuthGuard validates sessions correctly +- Session endpoint returns proper data +- Type compatibility across API and web + +### Integration Tests + +- Login flow with cookies +- Session validation +- Token refresh +- Logout flow + +## Notes + +- BetterAuth handles most session management automatically +- Need to ensure CORS and cookie settings are correct for cross-origin requests +- Session expiry should trigger automatic refresh or redirect to login diff --git a/packages/shared/src/types/auth.types.ts b/packages/shared/src/types/auth.types.ts index 9d64104..9e030fe 100644 --- a/packages/shared/src/types/auth.types.ts +++ b/packages/shared/src/types/auth.types.ts @@ -13,6 +13,10 @@ export interface AuthUser { name: string; image?: string; emailVerified?: boolean; + // Workspace context (added for workspace-scoped operations) + workspaceId?: string; + currentWorkspaceId?: string; + workspaceRole?: string; } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2215199..7a5b3f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -144,6 +144,9 @@ importers: class-validator: specifier: ^0.14.3 version: 0.14.3 + cookie-parser: + specifier: ^1.4.7 + version: 1.4.7 discord.js: specifier: ^14.25.1 version: 14.25.1 @@ -214,6 +217,9 @@ importers: '@types/archiver': specifier: ^7.0.0 version: 7.0.0 + '@types/cookie-parser': + specifier: ^1.4.10 + version: 1.4.10(@types/express@5.0.6) '@types/express': specifier: ^5.0.1 version: 5.0.6 @@ -2703,6 +2709,11 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/cookie-parser@1.4.10': + resolution: {integrity: sha512-B4xqkqfZ8Wek+rCOeRxsjMS9OgvzebEzzLYw7NHYuvzb7IdxOkI0ZHGgeEBX4PUM7QGVvNSK60T3OvWj3YfBRg==} + peerDependencies: + '@types/express': '*' + '@types/cookiejar@2.1.5': resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} @@ -3682,6 +3693,13 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-parser@1.4.7: + resolution: {integrity: sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==} + engines: {node: '>= 0.8.0'} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} @@ -6988,7 +7006,7 @@ snapshots: chalk: 5.6.2 commander: 12.1.0 dotenv: 17.2.3 - drizzle-orm: 0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)) + drizzle-orm: 0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)) open: 10.2.0 pg: 8.17.2 prettier: 3.8.1 @@ -9084,6 +9102,10 @@ snapshots: dependencies: '@types/node': 22.19.7 + '@types/cookie-parser@1.4.10(@types/express@5.0.6)': + dependencies: + '@types/express': 5.0.6 + '@types/cookiejar@2.1.5': {} '@types/cors@2.8.19': @@ -9891,7 +9913,7 @@ snapshots: optionalDependencies: '@prisma/client': 5.22.0(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)) better-sqlite3: 12.6.2 - drizzle-orm: 0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)) + drizzle-orm: 0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)) next: 16.1.6(@babel/core@7.28.6)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) pg: 8.17.2 prisma: 6.19.2(magicast@0.3.5)(typescript@5.9.3) @@ -9916,7 +9938,7 @@ snapshots: optionalDependencies: '@prisma/client': 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3) better-sqlite3: 12.6.2 - drizzle-orm: 0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)) + drizzle-orm: 0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)) next: 16.1.6(@babel/core@7.28.6)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) pg: 8.17.2 prisma: 6.19.2(magicast@0.3.5)(typescript@5.9.3) @@ -10271,6 +10293,13 @@ snapshots: convert-source-map@2.0.0: {} + cookie-parser@1.4.7: + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.6 + + cookie-signature@1.0.6: {} + cookie-signature@1.2.2: {} cookie@0.7.2: {} @@ -10664,16 +10693,6 @@ snapshots: dotenv@17.2.3: {} - drizzle-orm@0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)): - optionalDependencies: - '@opentelemetry/api': 1.9.0 - '@prisma/client': 5.22.0(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)) - '@types/pg': 8.16.0 - better-sqlite3: 12.6.2 - kysely: 0.28.10 - pg: 8.17.2 - prisma: 6.19.2(magicast@0.3.5)(typescript@5.9.3) - drizzle-orm@0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)): optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -10683,7 +10702,6 @@ snapshots: kysely: 0.28.10 pg: 8.17.2 prisma: 6.19.2(magicast@0.3.5)(typescript@5.9.3) - optional: true dunder-proto@1.0.1: dependencies: