package commonv1

import (
	"context"
	"time"
)

// ValidateRequestContext is the single Runtime v1 owner for request lifecycle
// classification. Mapping preflights and semantic validators call this same
// function so resource limits cannot change deadline or cancellation outcomes.
func ValidateRequestContext(ctx context.Context) error {
	if ctx == nil {
		return &Failure{Category: FailureInvalidRequest, InvalidComponent: InvalidComponentDeadline}
	}
	if err := ctx.Err(); err != nil {
		if err == context.DeadlineExceeded {
			return &Failure{Category: FailureDeadlineExceeded}
		}
		return &Failure{Category: FailureCanceled}
	}
	deadline, ok := ctx.Deadline()
	if !ok || time.Until(deadline) <= 0 {
		return &Failure{Category: FailureInvalidRequest, InvalidComponent: InvalidComponentDeadline}
	}
	return nil
}
