Documentation
¶
Overview ¶
Package remotetranscode provides an opt-in private HLS execution foundation. It installs no routes and changes no local transcoder behavior.
Index ¶
- Constants
- Variables
- func SupportsRequest(r core.HLSRequest, c Capabilities) bool
- func ValidateKeyframes(info core.MediaInfo) bool
- type AcceptedStartHandle
- type AcceptedStartSnapshot
- type Adapter
- func (a *Adapter) Attach(ctx context.Context, id Identity) (*Session, error)
- func (a *Adapter) AttachRetirement(ctx context.Context, id Identity) (*Session, error)
- func (a *Adapter) Capabilities() Capabilities
- func (a *Adapter) Close()
- func (a *Adapter) Decide(i core.MediaInfo, c core.ClientCaps, o core.DecideOptions) core.Decision
- func (a *Adapter) HWAccel() core.HWAccel
- func (a *Adapter) Probe(context.Context, string) (*core.MediaInfo, error)
- func (a *Adapter) Session(id string) (core.HLSSession, bool)
- func (a *Adapter) StartHLS(ctx context.Context, r core.HLSRequest) (core.HLSSession, error)
- func (a *Adapter) StartHLSOwned(ctx context.Context, r core.HLSRequest) (core.HLSSession, core.EncoderRetirement, error)
- func (a *Adapter) Stop(id string)
- func (a *Adapter) SupportsRequest(r core.HLSRequest) bool
- type AdapterOptions
- type Assignment
- type Capabilities
- type EvidenceOrigin
- type Identity
- type LeaseState
- type ObservationContracts
- type ObservedSession
- func (s *ObservedSession) Container() string
- func (s *ObservedSession) Contracts() ObservationContracts
- func (s *ObservedSession) Decision() core.Decision
- func (s *ObservedSession) EncoderStatus() *core.EncoderStatus
- func (s *ObservedSession) GoodputKbps() int
- func (s *ObservedSession) HWAccelerated() bool
- func (s *ObservedSession) Identity() Identity
- func (s *ObservedSession) Info() core.MediaInfo
- func (s *ObservedSession) Progress() transcode.Progress
- func (s *ObservedSession) Protocol() string
- func (s *ObservedSession) ReceivedAt() time.Time
- func (s *ObservedSession) RecoveryBuffer() core.RecoveryBuffer
- func (s *ObservedSession) RequestStarted() time.Time
- func (s *ObservedSession) RequestedPosition() time.Duration
- func (s *ObservedSession) SampledAt() time.Time
- func (s *ObservedSession) SegmentDuration() time.Duration
- type Renewal
- type RenewalReceipt
- type RepresentationCompletion
- type ResolveSource
- type Security
- type Session
- func (s *Session) Close() error
- func (s *Session) EncoderDone() <-chan struct{}
- func (s *Session) EncoderErr() error
- func (s *Session) EncoderRetirement() core.EncoderRetirement
- func (s *Session) ID() string
- func (s *Session) IndependentSegments() bool
- func (s *Session) LastAccess() time.Time
- func (s *Session) Lease() LeaseState
- func (s *Session) Observe(ctx context.Context) (*ObservedSession, error)
- func (s *Session) PlaybackDelivered() bool
- func (s *Session) PlaybackState(state string)
- func (s *Session) Reconcile(ctx context.Context) error
- func (s *Session) Renew(ctx context.Context, n Renewal) (LeaseState, error)
- func (s *Session) RetireEncoder() error
- func (s *Session) RetireEncoderContext(ctx context.Context) (resultErr error)
- func (s *Session) Rungs() []core.HLSRung
- func (s *Session) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (s *Session) ServeInit(w http.ResponseWriter, r *http.Request, rep int)
- func (s *Session) ServeManifest(w http.ResponseWriter, r *http.Request)
- func (s *Session) ServeMedia(w http.ResponseWriter, r *http.Request, rep, n int)
- func (s *Session) ServePlaylist(w http.ResponseWriter, r *http.Request)
- func (s *Session) ServeRungPlaylist(w http.ResponseWriter, r *http.Request, rung string)
- func (s *Session) ServeRungSegment(w http.ResponseWriter, r *http.Request, rung string, n int)
- func (s *Session) ServeRungSegmentObserved(w http.ResponseWriter, q *http.Request, rung string, n int) RepresentationCompletion
- func (s *Session) ServeSegment(w http.ResponseWriter, r *http.Request, n int)
- func (s *Session) ServeSegmentObserved(w http.ResponseWriter, q *http.Request, n int) RepresentationCompletion
- func (s *Session) ServeSoftSubtitle(w http.ResponseWriter, r *http.Request, index int) bool
- func (s *Session) StartCommitment() (Identity, [32]byte, error)
- func (s *Session) SwapInput(context.Context, string, core.MediaInfo, time.Duration) error
- func (s *Session) Touch()
- type Source
- type Start
- type TerminalEvidenceSummary
- type TerminalProofKind
- type TerminalSnapshot
- type TerminalState
- type TrustedGatewayInput
- type ValidateRenewal
- type Worker
- func (w *Worker) AcceptedStart(ctx context.Context, id Identity) (*AcceptedStartHandle, error)
- func (w *Worker) Close() error
- func (w *Worker) InspectAcceptedStart(ctx context.Context, h *AcceptedStartHandle) (AcceptedStartSnapshot, error)
- func (w *Worker) ServeHTTP(out http.ResponseWriter, r *http.Request)
- func (w *Worker) Terminal(ctx context.Context, id Identity, requestStop bool) (TerminalSnapshot, error)
- func (w *Worker) TerminalEvidence(ctx context.Context, id Identity) (TerminalEvidenceSummary, error)
- type WorkerOptions
Constants ¶
const MaxKeyframes = transcode.MaxDistributedKeyframes
const MaxMessage = 64 << 10
const Version = 1
Variables ¶
var ErrStatusDenied = errors.Join(ErrUncertain, errors.New("remotetranscode: status denied"))
ErrStatusDenied means the exact worker no longer accepts status observation. It permits replacement, never retirement or capacity release.
ErrStatusUnavailable identifies explicit endpoint loss, not process retirement.
var ErrUncertain = errors.New("remotetranscode: execution responsibility requires reconciliation")
var ErrUnsupported = errors.New("remotetranscode: unsupported capability")
Functions ¶
func SupportsRequest ¶
func SupportsRequest(r core.HLSRequest, c Capabilities) bool
SupportsRequest is side-effect-free and shared with placement preflight.
func ValidateKeyframes ¶
ValidateKeyframes is shared by runtime capability/source DTOs and worker admission. It validates the complete index without changing any point.
Types ¶
type AcceptedStartHandle ¶
type AcceptedStartHandle struct {
// contains filtered or unexported fields
}
AcceptedStartHandle is a Worker-owned local capability for one retained actual acceptance. Only Worker.AcceptedStart can return a usable handle. Zero values, caller allocations, copied objects and deserialized values are invalid. It is not a wire DTO, execution permit, authenticated host binding or retirement proof. Retain the returned pointer; neither a snapshot nor a nonce can recreate it.
type AcceptedStartSnapshot ¶
type AcceptedStartSnapshot struct {
Identity Identity
StartHash [32]byte
AttemptNonce string
InitialDeadline time.Time
Lease LeaseState
Starting bool
}
AcceptedStartSnapshot is detached observation data, never a usable handle. Identity is the complete transport identity, not the full durable cluster fence. AttemptNonce is unique within the required globally unique Worker boot; it is an identifier, not a secret or an authenticity proof. Lease is accepted history, not proof of current placement/source authority. Starting includes an owned attempt whose source/backend callback or Start response has not completed.
type Adapter ¶
type Adapter struct {
// contains filtered or unexported fields
}
func NewAdapter ¶
func NewAdapter(o AdapterOptions) (*Adapter, error)
func (*Adapter) Attach ¶
Attach observes an already admitted execution. It sends only status, never Start, and requires an exact identity under the caller's current authorization.
func (*Adapter) AttachRetirement ¶
AttachRetirement observes an exact existing execution, including pending or retired terminal state. It never sends Start or grants fresh authority. The composing controller must still fence every stop/status with its current epoch.
func (*Adapter) Capabilities ¶
func (a *Adapter) Capabilities() Capabilities
func (*Adapter) Close ¶
func (a *Adapter) Close()
Close closes idle transport connections only; owned executions must be stopped and reconciled explicitly. A connection close never proves encoder retirement.
func (*Adapter) Decide ¶
func (a *Adapter) Decide(i core.MediaInfo, c core.ClientCaps, o core.DecideOptions) core.Decision
func (*Adapter) StartHLS ¶
func (a *Adapter) StartHLS(ctx context.Context, r core.HLSRequest) (core.HLSSession, error)
func (*Adapter) StartHLSOwned ¶
func (a *Adapter) StartHLSOwned(ctx context.Context, r core.HLSRequest) (core.HLSSession, core.EncoderRetirement, error)
func (*Adapter) SupportsRequest ¶
func (a *Adapter) SupportsRequest(r core.HLSRequest) bool
type AdapterOptions ¶
type AdapterOptions struct {
// RequestHeaders binds each operation to an external coordination epoch.
RequestHeaders func(context.Context) (http.Header, error)
// CommitStart durably binds the installed immutable Start before any Start
// bytes leave this adapter. It runs synchronously outside locks, with a
// context bounded to five seconds; implementations must honor cancellation.
// Failure retains the owned token and never establishes retirement. Nil
// preserves existing behavior. Only identity and hash cross this boundary.
CommitStart func(context.Context, Identity, [32]byte) error
Capabilities Capabilities // Trusted negotiated worker/backend contracts; zero is fixed HLS.
Endpoint string
// RecheckServer composes current Guard policy for the expected worker identity.
// Fresh TLS per operation; rebuild on rotation. Callback captures/opaque keys
// are immutable, callbacks concurrency safe and context cooperative.
RecheckServer func(context.Context, tls.ConnectionState) error
Client *http.Client // Transport must be *http.Transport with verified mutual TLS.
Assign func(context.Context, core.HLSRequest) (Assignment, error)
Decide func(core.MediaInfo, core.ClientCaps, core.DecideOptions) core.Decision
Hardware core.HWAccel
Capacity int
}
type Capabilities ¶
type Capabilities struct {
HLS, SegmentSeek, DASH, HTTP, Probe, SourceSwap, Subtitles, ABR, SoftSubtitles, Controls, Observations, Keyframes bool
// RecoveryStart negotiates instruction transport only, never successful recovery.
CopyTimeline bool `json:",omitempty"`
AuthoredRamp bool `json:",omitempty"`
RecoveryStart bool `json:",omitempty"`
}
Capabilities must be consulted by placement before choosing this adapter. Segment seeks use the backend's ordinary ServeSegment behavior. Source swaps, probe, subtitles, DASH, HTTP Matroska, ABR and optional session controls are not supported.
func NormalizeCapabilities ¶
func NormalizeCapabilities(c Capabilities) (Capabilities, error)
NormalizeCapabilities preserves fixed HLS for zero options and rejects promises for operations that have no concrete private implementation.
func Supported ¶
func Supported() Capabilities
type EvidenceOrigin ¶
type EvidenceOrigin uint8
const ( EvidenceOriginUnknown EvidenceOrigin = iota EvidenceAcceptedStart EvidenceStopBeforeStart )
type Identity ¶
Identity is assigned by trusted placement, never by a public request decoder. Controller and Worker are boot-scoped identities, not stable node names alone.
type LeaseState ¶
type LeaseState struct {
Deadline time.Time
Version uint64
Accepted *Renewal `json:",omitempty"`
Renewable bool
}
LeaseState distinguishes accepted lease history from current execution state. Accepted is the latest operation only; older retries reconcile this snapshot.
type ObservationContracts ¶
type ObservationContracts struct {
Info, Decision, EncoderStatus, Progress, Goodput, RecoveryBuffer bool
RequestedPosition, SegmentDuration, Container, Protocol, HWAccelerated bool
}
ObservationContracts identifies the optional contracts supplied by this sample. Observe currently requires the complete bundle: unsupported backends return an error before any ObservedSession is constructed. A nil EncoderStatus is a real backend observation (no active run), not an unsupported-contract sentinel.
type ObservedSession ¶
type ObservedSession struct {
// contains filtered or unexported fields
}
ObservedSession is an immutable detached sample, not a live HLSSession. Its optional getters describe only this observation. Recovery callers must request a new Observe and reject errors/old samples before making a recovery decision. SampledAt is the worker clock. RequestStarted/ReceivedAt are controller-local times (including monotonic readings); account for RTT and host clock skew.
func (*ObservedSession) Container ¶
func (s *ObservedSession) Container() string
func (*ObservedSession) Contracts ¶
func (s *ObservedSession) Contracts() ObservationContracts
func (*ObservedSession) Decision ¶
func (s *ObservedSession) Decision() core.Decision
func (*ObservedSession) EncoderStatus ¶
func (s *ObservedSession) EncoderStatus() *core.EncoderStatus
func (*ObservedSession) GoodputKbps ¶
func (s *ObservedSession) GoodputKbps() int
func (*ObservedSession) HWAccelerated ¶
func (s *ObservedSession) HWAccelerated() bool
func (*ObservedSession) Identity ¶
func (s *ObservedSession) Identity() Identity
func (*ObservedSession) Info ¶
func (s *ObservedSession) Info() core.MediaInfo
func (*ObservedSession) Progress ¶
func (s *ObservedSession) Progress() transcode.Progress
func (*ObservedSession) Protocol ¶
func (s *ObservedSession) Protocol() string
func (*ObservedSession) ReceivedAt ¶
func (s *ObservedSession) ReceivedAt() time.Time
func (*ObservedSession) RecoveryBuffer ¶
func (s *ObservedSession) RecoveryBuffer() core.RecoveryBuffer
func (*ObservedSession) RequestStarted ¶
func (s *ObservedSession) RequestStarted() time.Time
func (*ObservedSession) RequestedPosition ¶
func (s *ObservedSession) RequestedPosition() time.Duration
func (*ObservedSession) SampledAt ¶
func (s *ObservedSession) SampledAt() time.Time
func (*ObservedSession) SegmentDuration ¶
func (s *ObservedSession) SegmentDuration() time.Duration
type Renewal ¶
type Renewal struct {
Identity Identity
Operation uint64
PreviousVersion uint64
PreviousDeadline time.Time
Deadline time.Time
}
Renewal is a compare-and-swap of the execution lease, never a new Start. Operation is the next version, scoped to Identity; zero is the initial lease. Deadlines on the wire must use UTC. Equality compares canonical instants.
type RenewalReceipt ¶
RenewalReceipt is returned only by a trusted injected validator, never decoded from the caller. It attests durable placement AND continued access using the SAME source authority handle, gateway URL and input lease through Deadline. Start.Grant stays immutable; internal source bearers may rotate while preserving exact source scope/revision/size. The validator must actually extend/revalidate that source authority; an expired bearer alone is not proof. No source replacement or encoder invocation is permitted in this callback. It must account for DB/worker clock skew conservatively and fail on uncertainty.
type RepresentationCompletion ¶
type RepresentationCompletion struct {
StatusCode int
ContentLength, ReadBytes, WrittenBytes int64
BodyPresent, EOF, Closed bool
ReadError, WriteError, CloseError bool
EncodedOrChunked, Trailers bool
}
RepresentationCompletion records one synchronous response read and body close. It contains no transport errors, URLs, credentials or playback-continuity proof. Byte counts alone cannot certify completion. Only an actual EOF without a read, downstream write, or close error can complete a known full representation.
func (RepresentationCompletion) Complete ¶
func (c RepresentationCompletion) Complete() bool
type Security ¶
type Security struct {
Authenticate func(*http.Request) (string, error)
Authorize func(context.Context, string, string, Identity, *Start) error
}
Security authenticates mTLS peer identity and authorizes the complete operation. Authorize must check current placement/source authority, generation and expiry; an authenticated certificate alone does not authorize work. Called for reads too. For renew, Start is nil and ValidateRenewal separately validates its full DTO. Permit exact scoped stop/status after expiry; neither grants execution authority.
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
func (*Session) EncoderDone ¶
func (s *Session) EncoderDone() <-chan struct{}
func (*Session) EncoderErr ¶
func (*Session) EncoderRetirement ¶
func (s *Session) EncoderRetirement() core.EncoderRetirement
func (*Session) IndependentSegments ¶
The exact backend owns this session-wide claim, including every advertised rung.
func (*Session) LastAccess ¶
func (*Session) Lease ¶
func (s *Session) Lease() LeaseState
Lease reports accepted history, not proof that execution remains authorized. Inspect execution/retirement state and reconcile uncertainty independently.
func (*Session) Observe ¶
func (s *Session) Observe(ctx context.Context) (*ObservedSession, error)
Observe performs one authenticated, authorized read of this exact generation. Failure neither changes map presence nor supplies any retirement evidence.
func (*Session) PlaybackDelivered ¶
PlaybackDelivered reports real media writes through this remote execution.
func (*Session) PlaybackState ¶
func (*Session) Reconcile ¶
Reconcile obtains proof for this exact execution after a failed/late start, disconnect or expiry. No polling goroutine or timeout manufactures proof.
func (*Session) Renew ¶
Renew is parent-driven; there are no automatic renewal/polling goroutines. Reuse the identical request after a lost response, or Reconcile then inspect Lease. Older operations after a newer acceptance return ErrUncertain; they never extend authority. A missing worker validator returns ErrUnsupported.
func (*Session) RetireEncoder ¶
func (*Session) RetireEncoderContext ¶
func (*Session) Rungs ¶
Rungs is the backend's bounded immutable ladder, never a synthesized rendition.
func (*Session) ServeManifest ¶
func (s *Session) ServeManifest(w http.ResponseWriter, r *http.Request)
func (*Session) ServeMedia ¶
func (*Session) ServePlaylist ¶
func (s *Session) ServePlaylist(w http.ResponseWriter, r *http.Request)
func (*Session) ServeRungPlaylist ¶
func (*Session) ServeRungSegment ¶
func (*Session) ServeRungSegmentObserved ¶
func (s *Session) ServeRungSegmentObserved(w http.ResponseWriter, q *http.Request, rung string, n int) RepresentationCompletion
func (*Session) ServeSegment ¶
func (*Session) ServeSegmentObserved ¶
func (s *Session) ServeSegmentObserved(w http.ResponseWriter, q *http.Request, n int) RepresentationCompletion
ServeSegmentObserved has exactly the ordinary segment path and returns only after its response body is closed. It performs no retry or additional read.
func (*Session) ServeSoftSubtitle ¶
ServeSoftSubtitle attaches only to this execution's selected embedded ASS output. It never extracts via an additional URL, source reader or process.
func (*Session) StartCommitment ¶
StartCommitment returns the identity and hash of the exact immutable marshaled Start retained before attempting the start RPC. It exposes no raw request, grant or URL. An uncertain, stopped or retired token retains this commitment. Success says nothing about sending, worker acceptance, availability, source verification or retirement. No network work or state transition occurs here.
type Source ¶
type Source struct {
// Gateway excludes URL/Lease. Resolver must never acquire an unused second lease.
Gateway TrustedGatewayInput
URL string
Lease core.EncoderInputLease
}
Source is produced by trusted source-grant validation, never by a wire URL. Ordinary URL/Lease uses the existing private literal-IP HTTPS contract, with redirects/nested fetches forbidden and exact identity/expiry binding. Gateway is an exclusive trusted local capability. Interface implementations must bind identity, origin/path, and lease, and must never redirect or substitute input.
type Start ¶
type Start struct {
Ramp core.HLSRamp `json:",omitzero"`
Resume *core.HLSResume `json:",omitempty"`
RecoveryStart *core.RecoveryStart `json:",omitempty"`
Keyframes []core.KeyframePoint `json:",omitempty"`
SoftSubtitleStream *int `json:",omitempty"`
Protocol string `json:",omitempty"`
ReleaseID string
Identity Identity
Grant string
Expires time.Time
Info core.MediaInfo
Decision core.Decision
Offset time.Duration
SegmentDuration time.Duration
IndependentProof bool
}
type TerminalEvidenceSummary ¶
type TerminalEvidenceSummary struct {
Version uint8
Identity Identity
Origin EvidenceOrigin
StartHash [32]byte
InitialDeadline time.Time
Renewable bool
LeaseVersion uint64
LeaseDeadline time.Time
AcceptedRenewal *Renewal
EncoderProof TerminalProofKind
BackendInvoked bool
BackendTokenJoined, OwnedSessionTokenJoined bool
InputProof TerminalProofKind
// Slots are the original ordinary/gateway input leases, never source-owner proof.
InputPresent [2]bool
InputNilTerminal [2]bool
NegativeBarrierGeneration uint64
}
TerminalEvidenceSummary is immutable local proof data, not execution authority or source-owner proof. Digests commit authenticated observations; they cannot authenticate themselves. Runtime must verify the exact full durable fence and current intended worker peer independently before publishing a receipt.
func (TerminalEvidenceSummary) Digest ¶
func (e TerminalEvidenceSummary) Digest() ([32]byte, error)
Digest produces a bounded versioned commitment, never an authenticity proof. The separate domains let a trusted receipt provider bind independently checked encoder and local-input observations without substituting a source-owner proof.
func (TerminalEvidenceSummary) EncoderDigest ¶
func (e TerminalEvidenceSummary) EncoderDigest() ([32]byte, error)
func (TerminalEvidenceSummary) InputDigest ¶
func (e TerminalEvidenceSummary) InputDigest() ([32]byte, error)
type TerminalProofKind ¶
type TerminalProofKind uint8
const ( TerminalProofUnknown TerminalProofKind = iota TerminalProofNilObjects TerminalProofNegativeBarrier )
type TerminalSnapshot ¶
type TerminalSnapshot struct {
Identity Identity
State TerminalState
Stopped bool
}
TerminalSnapshot contains no grants, source data, lease extension or execution authority. This value is a detached local observation of the complete identity. It does not establish source-owner retirement or durable placement retirement.
type TerminalState ¶
type TerminalState uint8
TerminalState is the closed set of local execution observations. Only TerminalRetired attests successful exact encoder AND local input retirement. Running/Pending/Unverified/Unknown never authorize reassignment or capacity release.
const ( TerminalUnknown TerminalState = iota TerminalPending TerminalRunning TerminalRetired TerminalUnverified )
func (TerminalState) String ¶
func (s TerminalState) String() string
type TrustedGatewayInput ¶
type TrustedGatewayInput interface {
GatewayInput(Identity, string) (string, core.EncoderInputLease, error)
}
TrustedGatewayInput is a trusted, injected composition boundary, never a wire DTO. It must bind the exact execution and immutable grant handle to an existing loopback listener capability. Return the acquired lease even on error. Arbitrary implementations are not made safe by this interface; host composition owns trust.
type ValidateRenewal ¶
type Worker ¶
type Worker struct {
// contains filtered or unexported fields
}
func NewWorker ¶
func NewWorker(o WorkerOptions) (*Worker, error)
func (*Worker) AcceptedStart ¶
AcceptedStart observes only an actual retained acceptance, including starting attempts and uncertain/blocked Start responses. Absence and negative tombstones are unknown. No authorization callback, preflight, expiry, Resolve, backend, renewal, stop, claim, arm or retirement operation is invoked here.
func (*Worker) Close ¶
Close stops admission and requests retirement of every exact execution. It does not claim completion; callers must reconcile pending records before exit.
func (*Worker) InspectAcceptedStart ¶
func (w *Worker) InspectAcceptedStart(ctx context.Context, h *AcceptedStartHandle) (AcceptedStartSnapshot, error)
InspectAcceptedStart revalidates the exact Worker, handle pointer, live retained record, boot, immutable accepted hash and lease history on every call. A prior successful snapshot grants no future validity. It performs no state transition and copies all mutable data under mu without calling backend getters.
func (*Worker) Terminal ¶
func (w *Worker) Terminal(ctx context.Context, id Identity, requestStop bool) (TerminalSnapshot, error)
Terminal is a HOST-ONLY exact-execution reconciliation boundary. It is not an HTTP handler and does not bypass the normal per-operation Security callbacks. The trusted host must first authenticate the peer independently and freshly authorize the exact old durable placement fence, intended worker boot and revoked/expired authority. Never call this based on caller-asserted identity, missing membership, time elapsed or worker contact loss.
requestStop seals only this exact execution using its retained owned session and inputs. It neither calls Encoder.Stop(publicID) nor starts/renews/resolves sources. Status-only absence is unknown. A stop-before-start can attest local retirement only after installing the permanent bounded tombstone and highest generation floor in this never-compacted, unique worker boot. Closed/capacity rejection cannot supply that proof. All late starts/producers remain charged.
func (*Worker) TerminalEvidence ¶
func (w *Worker) TerminalEvidence(ctx context.Context, id Identity) (TerminalEvidenceSummary, error)
TerminalEvidence reads retained provenance only. It never stops/expires work, creates a negative barrier, issues credentials or infers proof from absence. Caller first stops the exact execution through its separately authorized host Terminal API. Cancellation, pending callbacks/producers or nonnil terminal errors produce no evidence. Ambiguous accepted starts retain their history.
type WorkerOptions ¶
type WorkerOptions struct {
WatchAuthority func(string, func()) func()
Capabilities Capabilities // Explicit backend contract; zero retains fixed HLS.
ValidateRenewal ValidateRenewal // Nil explicitly disables renewal.
Boot string
Capacity int // Includes all retained tombstones; never evicts unresolved work.
MaxLease time.Duration
Security Security
Resolve ResolveSource
Encoder core.OwnedTranscoder
}