renderPlot() failure in Posit Cloud

I have developed a Shiny app which I deploy to Posit Cloud. The app works as expected on my computer, but when deployed to Posit Cloud, two ggplot images fail to render and are replaced with this:
Error: An error has occurred. Check your logs or contact the app author for clarification.
Otherwise the app works as on my local machine. I spent most of yesterday looking for answers with the help of Google Gemini, but with no success. Gemini suggested that the issue is a difference between the configuration on my computer and the Posit Cloud environment. Any help will be gratefully received.

What shows up in the log?

Here's the log. I'm posting all of it as I don't see anything that suggests a problem to me, but you may see what I don't:
2025-12-16T12:01:13-05:00 80: doTryCatch
2025-12-16T12:01:13-05:00 79: tryCatchOne
2025-12-16T12:01:13-05:00 78: tryCatchList
2025-12-16T12:01:13-05:00 77: tryCatch
2025-12-16T12:01:13-05:00 76: do
2025-12-16T12:01:13-05:00 75: hybrid_chain
2025-12-16T12:01:13-05:00 74: force
2025-12-16T12:01:13-05:00 73: withVisible
2025-12-16T12:01:13-05:00 72: withCallingHandlers
2025-12-16T12:01:13-05:00 71: domain$wrapSync
2025-12-16T12:01:13-05:00 70: promises::with_promise_domain
2025-12-16T12:01:13-05:00 69: captureStackTraces
2025-12-16T12:01:13-05:00 68: doTryCatch
2025-12-16T12:01:13-05:00 67: tryCatchOne
2025-12-16T12:01:13-05:00 66: tryCatchList
2025-12-16T12:01:13-05:00 65: tryCatch
2025-12-16T12:01:13-05:00 64: do
2025-12-16T12:01:13-05:00 63: hybrid_chain
2025-12-16T12:01:13-05:00 62: observe
2025-12-16T12:01:13-05:00 61: observer:output$bottom_right_plot
2025-12-16T12:01:13-05:00 60: contextFunc
2025-12-16T12:01:13-05:00 59: env$runWith
2025-12-16T12:01:13-05:00 58: withCallingHandlers
2025-12-16T12:01:13-05:00 57: domain$wrapSync
2025-12-16T12:01:13-05:00 56: promises::with_promise_domain
2025-12-16T12:01:13-05:00 55: captureStackTraces
2025-12-16T12:01:13-05:00 54: force
2025-12-16T12:01:13-05:00 53: domain$wrapSync
2025-12-16T12:01:13-05:00 52: promises::with_promise_domain
2025-12-16T12:01:13-05:00 51: withReactiveDomain
2025-12-16T12:01:13-05:00 50: domain$wrapSync
2025-12-16T12:01:13-05:00 49: promises::with_promise_domain
2025-12-16T12:01:13-05:00 48: ctx$run
2025-12-16T12:01:13-05:00 47: run
2025-12-16T12:01:13-05:00 46: withCallingHandlers
2025-12-16T12:01:13-05:00 45: domain$wrapSync
2025-12-16T12:01:13-05:00 44: promises::with_promise_domain
2025-12-16T12:01:13-05:00 43: captureStackTraces
2025-12-16T12:01:13-05:00 42: withCallingHandlers
2025-12-16T12:01:13-05:00 41: shinyCallingHandlers
2025-12-16T12:01:13-05:00 40: force
2025-12-16T12:01:13-05:00 39: withVisible
2025-12-16T12:01:13-05:00 38: withCallingHandlers
2025-12-16T12:01:13-05:00 37: domain$wrapSync
2025-12-16T12:01:13-05:00 36: promises::with_promise_domain
2025-12-16T12:01:13-05:00 35: captureStackTraces
2025-12-16T12:01:13-05:00 34: doTryCatch
2025-12-16T12:01:13-05:00 33: tryCatchOne
2025-12-16T12:01:13-05:00 32: tryCatchList
2025-12-16T12:01:13-05:00 31: tryCatch
2025-12-16T12:01:13-05:00 30: do
2025-12-16T12:01:13-05:00 29: hybrid_chain
2025-12-16T12:01:13-05:00 28: flushCallback
2025-12-16T12:01:13-05:00 27: FUN
2025-12-16T12:01:13-05:00 26: lapply
2025-12-16T12:01:13-05:00 25: ctx$executeFlushCallbacks
2025-12-16T12:01:13-05:00 24: .getReactiveEnvironment()$flush
2025-12-16T12:01:13-05:00 23: flushReact
2025-12-16T12:01:13-05:00 22: serviceApp
2025-12-16T12:01:13-05:00 21: ..stacktracefloor..
2025-12-16T12:01:13-05:00 20: withCallingHandlers
2025-12-16T12:01:13-05:00 19: domain$wrapSync
2025-12-16T12:01:13-05:00 18: promises::with_promise_domain
2025-12-16T12:01:13-05:00 17: captureStackTraces
2025-12-16T12:01:13-05:00 16: ..stacktraceoff..
2025-12-16T12:01:13-05:00 15:
2025-12-16T12:01:13-05:00 14: do.call
2025-12-16T12:01:13-05:00 13: fn
2025-12-16T12:01:13-05:00 12: doTryCatch
2025-12-16T12:01:13-05:00 11: tryCatchOne
2025-12-16T12:01:13-05:00 10: tryCatchList
2025-12-16T12:01:13-05:00 9: tryCatch
2025-12-16T12:01:13-05:00 8: retry
2025-12-16T12:01:13-05:00 7: connect$retryingStartServer
2025-12-16T12:01:13-05:00 6: eval
2025-12-16T12:01:13-05:00 5: eval
2025-12-16T12:01:13-05:00 4: eval
2025-12-16T12:01:13-05:00 3: eval
2025-12-16T12:01:13-05:00 2: eval.parent
2025-12-16T12:01:13-05:00 1: local
2025-12-16T12:01:13-05:00 New names:
2025-12-16T12:01:13-05:00 • -> `...1` 2025-12-16T12:01:13-05:00 New names: 2025-12-16T12:01:13-05:00 • -> ...1
2025-12-16T12:01:13-05:00 New names:
2025-12-16T12:01:13-05:00 • -> `...1` 2025-12-16T12:01:13-05:00 New names: 2025-12-16T12:01:13-05:00 • -> ...1
2025-12-16T12:01:15-05:00 New names:
2025-12-16T12:01:15-05:00 • -> `...1` 2025-12-16T12:01:15-05:00 New names: 2025-12-16T12:01:15-05:00 • -> ...1
2025-12-16T12:01:15-05:00 New names:
2025-12-16T12:01:15-05:00 • -> `...1` 2025-12-16T12:01:15-05:00 New names: 2025-12-16T12:01:15-05:00 • -> ...1
2025-12-16T12:01:15-05:00 New names:
2025-12-16T12:01:15-05:00 • -> `...1` 2025-12-16T12:01:15-05:00 New names: 2025-12-16T12:01:15-05:00 • -> ...1

The line "connect$retryingStartServer" has me wondering if maybe the app got disconnected from the R session at some point (but I'm not at all confident that I'm interpreting it correctly). Does the app continue to respond after the plots fail?

The app works when deployed exactly as it does on my own computer except for the issue of the two ggplot images rendered with renderPlot().

You might want to add a text output to the UI for error messages and wrap the ggplot calls in tryCatch calls or something similar, writing any errors to the new text output. Hopefully you could get something specific about why the plots are bombing.

Google Gemini had me wrapping the renderPlot() calls , the source() calls, the calls to load the plot files, the calls to load the data, and just about every other bit of code that might be relevant in tryCatch calls, all without any change in the output or any of the custom error messages appearing. Thanks for your interest.