# Troubleshooting and Quality Gates ## Troubleshooting ### Upload Errors - Validate extension and size before storage. - Catch expected exceptions and return negative notifications. - Log unexpected exceptions with request context. ### UI Race Conditions - Disable triggering controls during async work. - Remove duplicate timers and listeners targeting the same state. - Ensure service call ordering is deterministic before render updates. ### Asset Caching - Confirm static mount and proxy rewrite correctness. - Add cache-busting query strings for changed assets. - Avoid per-page CSS injection. ### Navigation and State Drift - Avoid global mutable UI state. - Keep state request-scoped or service-managed. - Rehydrate page data during route load. ## Production Readiness Gate Pass all checks before shipping: - Structure: one-way dependencies between pages, components, and services. - Responsiveness: UI validated at both small and large viewport widths. - Accessibility: labels and actions are clear and readable. - Reliability: validation and exception paths surface user feedback. - Maintainability: repeated UI patterns are extracted; business logic remains in services. If any check fails, return to the workflow step that owns that concern.