···192192 // Do this asynchronously to avoid blocking the push
193193 if tag != "" && s.ctx.ServiceToken != "" && s.ctx.Handle != "" {
194194 go func() {
195195+ defer func() {
196196+ if r := recover(); r != nil {
197197+ slog.Error("Panic in notifyHoldAboutManifest", "panic", r)
198198+ }
199199+ }()
195200 if err := s.notifyHoldAboutManifest(context.Background(), manifestRecord, tag, dgst.String()); err != nil {
196201 slog.Warn("Failed to notify hold about manifest", "error", err)
197202 }
···201206 // Refresh README cache asynchronously if manifest has io.atcr.readme annotation
202207 // This ensures fresh README content is available on repository pages
203208 go func() {
209209+ defer func() {
210210+ if r := recover(); r != nil {
211211+ slog.Error("Panic in refreshReadmeCache", "panic", r)
212212+ }
213213+ }()
204214 s.refreshReadmeCache(context.Background(), manifestRecord)
205215 }()
206216