Skip to main content

Module model

Module model 

Source
Expand description

Value types shared by every other module in this crate.

These are the types named in .taskflow/2026-08-21-local-runner-manager/04-subsystem-contracts.md, “Persistent local data”. Two rules shape every type here:

  1. No I/O. Nothing in this crate opens a socket, a file, or a database. rusqlite is declared in crates/domain/Cargo.toml for b2, which owns store.rs; no module owned by b1 refers to it.
  2. An illegal configuration should be unrepresentable, not merely rejected. Where the contract document writes a plain integer that has a documented floor or ceiling — host_capacity, refresh_interval_secs — this module gives it a type that cannot hold the illegal value, so a caller who forgets to validate still cannot build one.

D4 removed scale_set_id, scale_set_name, and protocol_flag from the model. They are not here under another name, and they must not come back: the routing token is now crate::policy::RoutingLabels.

Structs§

AttemptId
Identifies one RunnerAttempt.
Host
One machine running one agent.
HostId
Identifies one physical machine running one agent.
HostLabel
The operator’s --host-label value: the human-chosen half of a routing label.
Label
One GitHub runner label, normalised.
NonEmpty
A collection that cannot be empty.
Org
One organization login.
OwnerRepo
One repository, as OWNER/REPO.
PolicyId
Identifies one ScalePolicy.
RefreshInterval
The agent’s per-target refresh interval.
SystemClock
The production adapter.

Enums§

Arch
The host architectures this product supports.
CachePolicy
What survives an attempt’s cleanup.
Os
The host operating systems this product supports.
ScaleTarget
What one policy scales for (D18).
StartMode
When the installed service starts (05-infrastructure.md, “Service behavior”). D13 makes Boot the default; Login is available for operators who prefer a user-scoped secret store.
TargetScope
Which scope a target has. D18’s whole difference lives in this enum.
ValidationError
A value that cannot be constructed because it would violate a documented constraint.

Traits§

Clock
The domain’s only source of “now”.

Type Aliases§

Elapsed
A span of time, re-exported so callers need not name chrono directly.
Timestamp
Every timestamp in the domain is UTC.