{ "patterns": [ { "pattern": "curl: (28) Connection timed out", "runner_type": "linux", "project_type": "release-upload", "framework": "curl", "error_message": "curl: (28) Connection timed out after X milliseconds", "diagnosis": "The upload connection timed out. This typically occurs with large files over unstable networks or when server timeouts are too short.", "solution": "Use HTTP/1.1 with keepalive and extended timeouts: curl --http1.1 --keepalive-time 60 --connect-timeout 120 --max-time 3600 --retry 5 --retry-delay 10" }, { "pattern": "curl: (56) Recv failure: Connection reset by peer", "runner_type": "linux", "project_type": "release-upload", "framework": "curl", "error_message": "curl: (56) Recv failure: Connection reset by peer", "diagnosis": "The connection was reset during upload. This often happens with HTTP/2 multiplexing issues or when proxies/load balancers terminate idle connections.", "solution": "Force HTTP/1.1 to avoid multiplexing issues: curl --http1.1 --retry 5 --retry-all-errors -X POST -F attachment=@file" }, { "pattern": "file_too_large", "runner_type": "", "project_type": "release-upload", "framework": "gitcaddy-api", "error_message": "File exceeds maximum size", "diagnosis": "The uploaded file exceeds the server maximum attachment size limit.", "solution": "Check max size with GET /api/v2/upload/instructions. Split large files or request server config increase. Default limit is typically 500MB." }, { "pattern": "curl: (35) SSL connect error", "runner_type": "linux", "project_type": "release-upload", "framework": "curl", "error_message": "curl: (35) SSL connect error or OpenSSL SSL_connect error", "diagnosis": "SSL/TLS handshake failed. May be caused by certificate issues, protocol mismatch, or network interference.", "solution": "Try with explicit TLS version: curl --tlsv1.2 or check certificate validity. For self-signed certs in testing, use -k flag." }, { "pattern": "curl: (6) Could not resolve host", "runner_type": "linux", "project_type": "release-upload", "framework": "curl", "error_message": "curl: (6) Could not resolve host: git.example.com", "diagnosis": "DNS resolution failed for the upload server hostname.", "solution": "Pre-warm DNS before upload: curl -s -o /dev/null -I https://server/api/healthz; then retry upload. Check /etc/resolv.conf and network connectivity." }, { "pattern": "upload_failed", "runner_type": "", "project_type": "release-upload", "framework": "gitcaddy-api", "error_message": "upload_failed: unexpected EOF or connection closed", "diagnosis": "Upload was interrupted before completion. Often caused by network instability or timeout during large file transfers.", "solution": "Use gitcaddy-upload helper with automatic retry: gitcaddy-upload -url URL -token TOKEN -file FILE -retries 5. Or use curl with --retry 5 --retry-all-errors flags." }, { "pattern": "HTTP 413 Request Entity Too Large", "runner_type": "", "project_type": "release-upload", "framework": "http", "error_message": "HTTP 413 Request Entity Too Large or Payload Too Large", "diagnosis": "The request body exceeds the server or reverse proxy limit. Nginx/Caddy may have lower limits than the application.", "solution": "Check proxy config: nginx client_max_body_size, Caddy request_body max_size. Ensure all layers allow the file size." }, { "pattern": "NETSDK1147", "runner_type": "macos", "project_type": "dotnet-maui", "framework": "net9.0-android", "error_message": "NETSDK1147: To build this project, the following workloads must be installed: maui-android", "diagnosis": "The .NET MAUI Android workload is not installed on the build machine.", "solution": "Install the workload: dotnet workload install maui-android. For CI, add this step before build." }, { "pattern": "XA5300", "runner_type": "macos", "project_type": "dotnet-maui", "framework": "net9.0-android", "error_message": "XA5300: The Android SDK directory could not be found", "diagnosis": "Android SDK is not installed or ANDROID_HOME environment variable is not set.", "solution": "Set ANDROID_HOME to the SDK path. On macOS: export ANDROID_HOME=$HOME/Library/Android/sdk" }, { "pattern": "MSB4019", "runner_type": "", "project_type": "dotnet", "framework": "", "error_message": "MSB4019: The imported project was not found", "diagnosis": "A required MSBuild targets file is missing, usually due to missing SDK or workload.", "solution": "Install the required workload or SDK. Run: dotnet workload list to see installed workloads." } ] }