package platform import "sync" // schemaReadyGate serializes schema probes and caches only a successful result. // Request cancellation and transient database failures must remain retryable. type schemaReadyGate struct { mu sync.Mutex ready bool } func (gate *schemaReadyGate) ensure(check func() error) error { gate.mu.Lock() defer gate.mu.Unlock() if gate.ready { return nil } if err := check(); err != nil { return err } gate.ready = true return nil }