## 2026-06-24 correction: strict V21 UI implementation - Category: correction - User correction: Real SaaS UI must strictly follow confirmed V21 prototype, not agent-designed approximations. - Specific issue: Chinese mojibake appeared; generated video library lacked built-in playable preview required by design. - Required behavior: Re-read confirmed prototype before UI implementation, map layout/function one-to-one, preserve approved layout and only adapt real data/API. ## 2026-06-24 correction: do not ask for next step during auto-run - Category: correction - User correction: When there is an obvious next step in full-auto mode, do not ask; continue until done, validate, and deploy. - Required behavior: For V21 SaaS UI rollout, autonomously finish all remaining pages, then report concise results only. ## [LRN-20260624-CI-SEPARATION] correction **Logged**: 2026-06-24T22:50:00+08:00 **Priority**: critical **Status**: pending **Area**: infra ### Summary Do not run CI/Web build on the business/production server; preserve the two-server responsibility split. ### Details User corrected that the project already had two servers and had already addressed mixed responsibilities. The failure happened because I ignored the established boundary and triggered `npm ci && npm run build` through the current runner/deploy path, which pressured the business server and caused SSH banner and public service timeouts. This is an execution drift, not a product-size problem. ### Suggested Action Before any deploy/build change, verify server roles and runner placement. CI/build must run on the CI/build server or isolated builder; business server may only receive built artifacts/images and restart services. Never reintroduce build workloads onto production/business host. ### Metadata - Source: user_feedback - Related Files: .gitea/workflows/deploy.yml, infra/docker/deploy-staging.sh - Tags: ci-cd, staging, production-safety, server-roles, no-drift - Pattern-Key: infra.separate_ci_from_business_server - Recurrence-Count: 1 ---