Versions in this module Expand all Collapse all v0 v0.1.0 Oct 4, 2026 Changes in this version + var ErrBreakerOpen = errors.New("curo: dependency breaker is open") + var ErrClosed = errors.New("curo: transport is closed") + var ErrInvalidMode = errors.New("curo: invalid mode") + var ErrNilBaseTransport = errors.New("curo: base transport is nil") + var ErrTimeout error = &timeoutError + type Candidates uint8 + const CandidateBreakerOpen + const CandidateRetry + const CandidateTimeout + func (candidates Candidates) Has(want Candidates) bool + func (candidates Candidates) MarshalText() ([]byte, error) + func (candidates Candidates) String() string + type Change struct + Decision Decision + Sequence uint64 + type Decision struct + Candidates Candidates + Diagnosis Diagnosis + EvaluatedAt time.Time + ExpiresAt time.Time + Historical Evidence + Latency Latency + PolicyVersion uint32 + Readiness Readiness + Reasons []Reason + Recent Evidence + Target Target + Timeout time.Duration + type Diagnosis uint8 + const DiagnosisClientError + const DiagnosisDegrading + const DiagnosisDependencyDown + const DiagnosisHealthy + const DiagnosisNone + const DiagnosisSaturation + const DiagnosisTransient + func (diagnosis Diagnosis) MarshalText() ([]byte, error) + func (diagnosis Diagnosis) String() string + type Evidence struct + Attempts uint64 + ClientFailures uint64 + DependencyFailures uint64 + RateLimited uint64 + Span time.Duration + type Latency struct + Samples uint64 + Slowest time.Duration + type MethodClass uint8 + const MethodConnect + const MethodOther + const MethodRead + const MethodWrite + func (class MethodClass) MarshalText() ([]byte, error) + func (class MethodClass) String() string + type Mode uint32 + const Enforce + const Observe + const Off + func (m *Mode) UnmarshalText(text []byte) error + func (m Mode) MarshalText() ([]byte, error) + func (m Mode) String() string + type Option interface + func WithLogger(logger *slog.Logger) Option + func WithMode(mode Mode) Option + func WithTimeoutBounds(minimum, maximum time.Duration) Option + type Readiness uint8 + const ReadinessCold + const ReadinessReady + const ReadinessStale + const ReadinessWarming + func (readiness Readiness) MarshalText() ([]byte, error) + func (readiness Readiness) String() string + type Reason uint8 + const ReasonClientFailureRate + const ReasonDependencyFailureRate + const ReasonEvidenceStale + const ReasonFailureRateIncrease + const ReasonHistoricalBaselineReady + const ReasonInsufficientEvidence + const ReasonInsufficientRecentEvidence + const ReasonIsolatedDependencyFailure + const ReasonLatencyIncrease + const ReasonNoEvidence + const ReasonRateLimitRate + const ReasonReadinessRequired + const ReasonRecentEvidenceReady + const ReasonWithinBaseline + func (reason Reason) MarshalText() ([]byte, error) + func (reason Reason) String() string + type Report struct + Changes []Change + Targets []Decision + type Stats struct + BreakerOpens uint64 + BreakerProbes uint64 + BreakerRejections uint64 + InternalFailures uint64 + ObservedRequests uint64 + OverflowRequests uint64 + RetryAttempts uint64 + RetryBudgetDenials uint64 + RetrySuccesses uint64 + SelfDisabled bool + ShadowTimeouts uint64 + Timeouts uint64 + TrackedTargets uint64 + type Target struct + Host string + Method MethodClass + Port uint16 + Scheme string + type Transport struct + func New(base http.RoundTripper, options ...Option) (*Transport, error) + func (t *Transport) Close() error + func (t *Transport) CloseIdleConnections() + func (t *Transport) Mode() Mode + func (t *Transport) Report() Report + func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) + func (t *Transport) SetMode(mode Mode) error + func (t *Transport) Stats() Stats