- 2026-07-24: **Future-work P1-P8 executed + review-thread batch.** Roland approved working the roadmap with Opus subagents, explicitly excluding P9 i18n (separate chat design workstream — also parks the de.ts "Assistant" CTA review thread 3342859759). Six-agent fleet over disjoint file clusters, every diff personally reviewed before commit: `6107df65f` (build: `@klicker-uzh/prisma#build` now declares `src/prisma/client/**` as turbo outputs — CI `check-types` failed on cache-restored builds missing the generated client; proven locally via mv-away + cache-restore, confirmed green in CI), `bb3d8f714` (P1 telemetry toggle `CHAT_ENABLE_AI_TELEMETRY`; P2 in-memory sliding-window rate limiters, 30/5min chat + 10/5min confirm, 429+Retry-After, per-pod caveat documented; P4 replay protection — mcp-lecturer signs a `randomUUID` `jti`, confirm claims it once via in-memory TTL map, reuse → 409, no-jti tokens pass for rollout compat; OPENAI_API_KEY fail-fast; `APP_ORIGIN_API` throws in production instead of localhost fallback; `@/src/...` aliases — CodeRabbit's literal `@/services/...` suggestions were wrong for the tsconfig), `c087d2e11` (server-side `sanitizeAsPath` via zod transform + Template/Instance/Quiz ID prompt lines + manage-side `MAX_ASPATH_LENGTH` clamp parity + stale-context clear on failed sanitization), `aa700873e` (dialog keyboard-modal: focus-into-panel, Tab trap, aria-modal; new-tab link uses `embed:false` URL), `384c1ad3d` (P8 dismiss action with terminal collapsed state + pure `applyDismiss`/`isDismissible`; thread inline-margin cleanup; `ThreadWelcomeCapabilities` extracted = thermo #2), `527a34fcd` (P3: tampered-token 403, confirm 401, mid-stream error, malformed envelope E2E), `2a569dbba` (pwa chatbot error redirects locale-prefixed), `80cca1c8b` (P6 dev CSP: `ALLOWED_FRAME_ANCESTORS=https://*.localhost` — host wildcard covers namespaced worktree origins). Rebutted with evidence (no change): mcp-lecturer Dockerfile pnpm pattern (13/13 repo convention), workflow hardening (0/32 convention; repo-wide task chip spawned), CourseChatDrawer dist/ops import (459-file convention), formatToolName + query-key cap (already addressed). Task chips: missing frontend-pwa `/error` page; `packages/util` jwt `expiresIn: 0` bug.
0 commit comments