PRACTICE DIAGNOSIS
27 AUG 2026 · BUILD 83562
Halliburton Cementing Services · Android build 51

The app built. The announcement email timed out.

Best read: this was a transient SMTP failure in a post-build notification step—not a Unity, source-code, or APK-generation failure. TeamCity turned a completed artifact into a red build because email delivery was wired as fatal.

High confidence · direct log evidence
What failed
SMTP send at step 9 of 12
System.Net.Mail.SmtpException: The operation has timed out. The send blocked for about 100 seconds, exited 1, and poisoned the remaining pipeline.
What did not fail
The APK
The generated download URL answered, TeamCity uploaded both APK artifacts with zero errors, and the versioned APK currently returns HTTP 200.

Failure chain

01Unity buildCompleted before notification work.
02Download checkPong: True for the versioned APK.
03Email sendSMTP timeout after ~100 seconds.
05Artifact publishAPK upload finished with zero errors.

Evidence at a glance

111.6 MBversioned APK available from the ForgeFX download host
17m 38suntil the next build started
Build 52 passedsame build configuration; strong evidence of a transient dependency failure

The fix

  1. Make email best-effort. A notification outage must not fail a valid product build.
  2. Retry narrowly. Use 3 SMTP attempts with exponential backoff and a bounded timeout.
  3. Always continue delivery. Put Slack success and Meta upload behind artifact success—not behind email success.
  4. Expose notification health separately. Report “build succeeded; email notification failed” as a warning with telemetry.

Control-flow sketch

buildAndPublishApk(); try { retry(() => sendEmail(), { attempts: 3, backoff: "5s, 15s, 45s", timeout: "30s" }); } catch (error) { warn("Artifact ready; email failed", error); } sendSlackSuccess(); uploadToMeta();
Immediate disposition: no app rollback is indicated. Build 52 already passed. The durable change belongs in the shared TeamCity/BuildScripts notification flow so the next SMTP hiccup stays yellow instead of falsely reporting a broken product build.