Documentation
¶
Overview ¶
Package runtime holds the connected catalog runtime. It opens a Starmap client, reads verified upstream generations from one source, publishes each accepted generation, and reports the operator-facing status of that work.
The default source is the attested public GitHub channel. A caller that opens the runtime accepts the signature verification and the network reads that this channel needs. The root starmap package stays the offline library.
Index ¶
- Constants
- type Acquirer
- type AcquisitionPolicy
- type AcquisitionReport
- type AcquisitionRequest
- type AcquisitionResult
- type Freshness
- type FreshnessPolicy
- type Health
- type Lease
- type LeaseStore
- type Option
- func WithAcquirer(acquirer Acquirer) Option
- func WithAcquisitionEnabled(enabled bool) Option
- func WithAcquisitionInterval(interval time.Duration) Option
- func WithCatalogSource(name string) Option
- func WithClientOptions(opts ...starmap.Option) Option
- func WithClock(now func() time.Time) Option
- func WithCoalesceWindow(window time.Duration) Option
- func WithFreshnessPolicy(policy FreshnessPolicy) Option
- func WithLeaseStore(store LeaseStore) Option
- func WithListenAddress(address string) Option
- func WithRandom(random Random) Option
- func WithRefreshTimeout(timeout time.Duration) Option
- func WithSchedulerIdentity(identity string) Option
- func WithSource(source Source) Option
- func WithSourceAPIKey(key string) Option
- func WithSourceAliases(aliases ...string) Option
- func WithSourceChannel(channel string) Option
- func WithSourceMaxAge(maxAge time.Duration) Option
- func WithSourceMaxHops(hops int) Option
- func WithSourcePolicy(policy SourcePolicy) Option
- func WithSourcePollInterval(interval time.Duration) Option
- func WithSourceRepository(repository string) Option
- func WithSourceSignerWorkflow(workflow string) Option
- func WithSourceStartupPolicy(name string) Option
- func WithSourceToken(token string) Option
- func WithSourceURL(url string) Option
- func WithStartupSpread(spread time.Duration) Option
- func WithStateDirectory(directory string) Option
- func WithTransferIdleTimeout(timeout time.Duration) Option
- func WithTransferMaxDuration(duration time.Duration) Option
- type ProviderLayer
- type Random
- type RefreshReport
- type Runtime
- func (r *Runtime) Catalog() *catalogs.Catalog
- func (r *Runtime) Client() *starmap.Client
- func (r *Runtime) Close() error
- func (r *Runtime) Refresh(ctx context.Context) (RefreshReport, error)
- func (r *Runtime) RefreshSource(ctx context.Context) (SourceRefreshReport, error)
- func (r *Runtime) State() starmap.CatalogState
- func (r *Runtime) Status() Status
- func (r *Runtime) Sync(ctx context.Context, providers ...catalogs.ProviderID) (AcquisitionReport, error)
- func (r *Runtime) Updates() <-chan starmap.CatalogState
- type Source
- type SourceHop
- type SourceIdentityAdopter
- type SourceKind
- type SourcePolicy
- type SourceRead
- type SourceRefreshReport
- type SourceWatcher
- type StartupPolicy
- type Status
Constants ¶
const ( // LeaseTTL bounds how long one lease stays valid without a renewal. LeaseTTL = 90 * time.Second // LeaseRenewInterval is the period between renewals. LeaseRenewInterval = 30 * time.Second )
Lease timing. One holder renews well inside the expiry, so a short pause never drops the lease and a stopped holder expires quickly.
const ( // DefaultTransferIdleTimeout bounds a stalled transfer. DefaultTransferIdleTimeout = 2 * time.Minute // DefaultTransferMaxDuration bounds one whole transfer. DefaultTransferMaxDuration = 60 * time.Minute // DefaultRefreshTimeout is zero, so a refresh carries no deadline of its // own. Transfer bounds and caller cancellation stop a stalled run. DefaultRefreshTimeout time.Duration = 0 // DefaultCoalesceWindow bounds how long completed provider observations // wait for a slower sibling before they publish. DefaultCoalesceWindow = 30 * time.Second )
Transfer and refresh defaults. They match the canonical CATALOG_TRANSFER_* and CATALOG_REFRESH_TIMEOUT settings.
const ( // DefaultSourceRepository is the public catalog repository. DefaultSourceRepository = "agentstation/starmap" // DefaultSourceChannel is the mutable branch that names the current // immutable catalog release. DefaultSourceChannel = "catalog/v1" // DefaultSourcePollInterval is how often the runtime checks the channel. DefaultSourcePollInterval = time.Hour // DefaultSourceMaxAge is the age at which a served catalog is stale. DefaultSourceMaxAge = 6 * time.Hour // DefaultSourceMaxHops bounds a cascade of Starmap runtimes. DefaultSourceMaxHops = 8 // MaxSourceAliases bounds the declared alias list. A deployment names a // few addresses of one node, so a longer list is a configuration error. MaxSourceAliases = 16 // MaxSourceAliasBytes bounds one declared alias. MaxSourceAliasBytes = 128 )
Source policy defaults. They match the canonical CATALOG_SOURCE_* settings.
const ( // FreshnessChannelWarnAge is the served-catalog age that warns. A source // maximum age above zero replaces it, unless the caller supplies an // explicit freshness policy. FreshnessChannelWarnAge = 6 * time.Hour // FreshnessChannelCriticalAge is the served-catalog age that is critical. // A source maximum age above zero replaces it with the scaled age, unless // the caller supplies an explicit freshness policy. FreshnessChannelCriticalAge = 10 * time.Hour // FreshnessSourceCheckWarnAge is the source-check age that warns. FreshnessSourceCheckWarnAge = 90 * time.Minute // FreshnessSourceCheckCriticalAge is the source-check age that is critical. FreshnessSourceCheckCriticalAge = 2 * time.Hour // FreshnessAcquisitionWarnAge is the acquisition-success age that warns. FreshnessAcquisitionWarnAge = 5 * time.Hour // FreshnessAcquisitionCriticalAge is the acquisition-success age that is // critical. FreshnessAcquisitionCriticalAge = 8 * time.Hour )
Freshness thresholds. They follow the four-hour publication cadence, the one-hour channel poll, and the six-hour end-to-end objective.
const ( // FallbackNone means an upstream generation is active. FallbackNone = "" // FallbackAwaitingSource means no upstream reply arrived yet. FallbackAwaitingSource = "awaiting_source" FallbackSourceUnavailable = "source_unavailable" )
Fallback reasons. They say why the runtime still serves the verified embedded catalog instead of an upstream generation.
const ( // SourcePublic reads the attested public GitHub catalog channel. SourcePublic = status.SourcePublic // SourceGitHub reads an attested channel from a named repository. SourceGitHub = status.SourceGitHub // SourceStarmap reads from another Starmap runtime. SourceStarmap = status.SourceStarmap // SourceFile reads one immutable generation from a local path. SourceFile = status.SourceFile // SourceEmbedded pins the runtime to the verified embedded bootstrap. SourceEmbedded = status.SourceEmbedded )
Source kinds. Selection is terminal, so a deployment that names a custom source never falls back to the public GitHub channel.
const ( // FreshnessUnknown means no observation supports an evaluation yet. FreshnessUnknown = status.FreshnessUnknown // FreshnessCurrent means the age is inside every threshold. FreshnessCurrent = status.FreshnessCurrent // FreshnessWarn means the age passed the warning threshold. FreshnessWarn = status.FreshnessWarn // FreshnessCritical means the age passed the critical threshold. FreshnessCritical = status.FreshnessCritical )
Freshness grades of one observed timestamp.
const ( // HealthUnknown means the component has not reported yet. HealthUnknown = status.HealthUnknown // HealthOK means the component reached its last objective. HealthOK = status.HealthOK // HealthDegraded means the component works with reduced evidence. HealthDegraded = status.HealthDegraded HealthUnavailable = status.HealthUnavailable )
Health states of one runtime component.
const ( // DefaultAcquisitionInterval is the provider acquisition period. DefaultAcquisitionInterval = 4 * time.Hour )
Acquisition policy defaults. Acquisition has exactly two settings: whether it runs, and how often. No start-time or mode setting exists.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Acquirer ¶
type Acquirer interface {
AcquireProviders(ctx context.Context, request AcquisitionRequest) (AcquisitionResult, error)
}
Acquirer collects provider observations for the runtime. The root package selects no concrete provider client, so the deployment injects this role. Package acquisition supplies the built-in composition.
type AcquisitionPolicy ¶
type AcquisitionPolicy struct {
// Enabled reports whether scheduled provider acquisition runs.
Enabled bool
// Interval is the acquisition period. The scheduler places each instance
// at a stable phase inside the interval. Zero means one startup pass and
// no periodic work.
Interval time.Duration
}
AcquisitionPolicy configures scheduled provider acquisition. The policy is exactly one switch and one period.
func DefaultAcquisitionPolicy ¶
func DefaultAcquisitionPolicy() AcquisitionPolicy
DefaultAcquisitionPolicy returns the canonical acquisition policy.
func (AcquisitionPolicy) Validate ¶
func (p AcquisitionPolicy) Validate() error
Validate checks the acquisition period. Zero is valid and selects one startup pass, so an operator schedules a single run without a cadence.
type AcquisitionReport ¶
type AcquisitionReport struct {
// RunID is the identity of the run that produced this report.
RunID string
// StartedAt and CompletedAt bound the run.
StartedAt time.Time
CompletedAt time.Time
// Eligible is the number of providers the run considered.
Eligible int
// Succeeded, Skipped, and Failed count the terminal attempts.
Succeeded int
Skipped int
Failed int
// Attempts holds one terminal attempt per eligible provider.
Attempts []sources.ProviderAttempt
// Published reports whether the runtime published a new effective catalog.
Published bool
// GenerationID identifies the published effective catalog.
GenerationID string
// Retained names the providers that kept their previous last-known-good
// observation because this run did not replace it.
Retained []catalogs.ProviderID
// Health grades the run. A failed provider degrades the run.
Health Health
}
AcquisitionReport says what one provider acquisition run produced. A partial failure still publishes: the report names the providers that kept their own last-known-good observation.
type AcquisitionRequest ¶
type AcquisitionRequest struct {
// RunID is the run identity that logs and status report.
RunID string
// Current is the immutable catalog the run starts from.
Current *catalogs.Catalog
// Providers restricts the run. An empty list observes every eligible
// provider.
Providers []catalogs.ProviderID
// CoalesceWindow bounds how long completed observations wait for a slower
// sibling before they publish.
CoalesceWindow time.Duration
// Publish emits the layers that completed inside one coalescing window.
// The runtime retains them, rebuilds the effective catalog, and publishes
// one generation under the lease epoch of the run. An acquirer that emits
// nothing early leaves the field unused, and the runtime then publishes
// every layer once the run returns.
Publish func(context.Context, []ProviderLayer) error
}
AcquisitionRequest describes one provider acquisition run.
type AcquisitionResult ¶
type AcquisitionResult struct {
// Eligible is the number of providers the run considered.
Eligible int
// Attempts holds one terminal attempt per eligible provider.
Attempts []sources.ProviderAttempt
// Layers holds one observation per provider that answered.
Layers []ProviderLayer
}
AcquisitionResult is what one acquisition run observed.
type FreshnessPolicy ¶
type FreshnessPolicy struct {
ChannelWarnAge time.Duration
ChannelCriticalAge time.Duration
SourceCheckWarnAge time.Duration
SourceCheckCriticalAge time.Duration
AcquisitionWarnAge time.Duration
AcquisitionCriticalAge time.Duration
}
FreshnessPolicy holds the age thresholds that turn observed timestamps into a freshness level.
func DefaultFreshnessPolicy ¶
func DefaultFreshnessPolicy() FreshnessPolicy
DefaultFreshnessPolicy returns the canonical freshness thresholds.
func (FreshnessPolicy) Validate ¶
func (p FreshnessPolicy) Validate() error
Validate checks that every warning threshold precedes its critical partner.
type Lease ¶
type Lease struct {
// Holder names the instance that owns the lease.
Holder string
// Epoch increases on every fresh acquisition.
Epoch uint64
// ExpiresAt is when the lease lapses without a renewal.
ExpiresAt time.Time
}
Lease is the exclusive right to commit a durable catalog generation. The epoch increases on every fresh acquisition, so a commit that carries an older epoch is stale.
type LeaseStore ¶
type LeaseStore interface {
// AcquireLease takes the lease for the named holder. A store that another
// holder owns returns an *errors.ConflictError. That refusal names a
// non-owner state, not a failure. The runtime keeps serving its retained
// catalog and tries again at the next run. Every other error fails Open.
AcquireLease(ctx context.Context, holder string, ttl time.Duration) (Lease, error)
// Renew extends a held lease. It fails when another holder took the lease.
Renew(ctx context.Context, lease Lease, ttl time.Duration) (Lease, error)
// Release returns the lease early.
Release(ctx context.Context, lease Lease) error
}
LeaseStore is the shared-storage lease that fences durable commits. A deployment whose instances share no storage needs no lease store, and the runtime then commits without a fence.
type Option ¶
type Option func(*options) error
Option configures the connected runtime. The offline constructors in the root package take their own option type, so no offline constructor accepts a connected-runtime setting.
func WithAcquirer ¶
WithAcquirer injects the provider acquisition composition. The root package selects no concrete provider client, so a runtime without an acquirer runs source refresh only.
func WithAcquisitionEnabled ¶
WithAcquisitionEnabled turns scheduled provider acquisition on or off.
func WithAcquisitionInterval ¶
WithAcquisitionInterval sets the provider acquisition period. Zero selects one startup pass and no periodic work.
func WithCatalogSource ¶
WithCatalogSource selects the upstream catalog source by name. It accepts public, github, starmap, file, and embedded. A named custom source is terminal: the runtime never falls back to the public channel.
func WithClientOptions ¶
WithClientOptions forwards offline client options to the Starmap client that the runtime publishes into. The root package owns the catalog store, the workspace path, and the embedded bootstrap budgets. One composition therefore supplies both kinds of setting in one list.
func WithCoalesceWindow ¶
WithCoalesceWindow bounds how long completed provider observations wait for a slower sibling before they publish.
func WithFreshnessPolicy ¶
func WithFreshnessPolicy(policy FreshnessPolicy) Option
WithFreshnessPolicy replaces the freshness thresholds. An explicit policy wins, so WithSourceMaxAge then derives no channel threshold.
func WithLeaseStore ¶
func WithLeaseStore(store LeaseStore) Option
WithLeaseStore injects the shared-storage lease that fences durable commits. A deployment without shared storage needs no lease.
func WithListenAddress ¶
WithListenAddress records the server listen address. It separates two instances that share a copied state directory.
func WithRandom ¶
WithRandom injects the jitter source that spreads scheduled work.
func WithRefreshTimeout ¶
WithRefreshTimeout bounds one whole refresh run. Zero, the default, adds no deadline, so a long transfer inside its own bounds is not cut short.
func WithSchedulerIdentity ¶
WithSchedulerIdentity overrides the derived instance identity. Use it when the deployment already owns a stable instance name.
func WithSource ¶
WithSource injects a deployment-owned upstream source. It replaces every built-in source implementation.
func WithSourceAPIKey ¶
WithSourceAPIKey supplies the source API key. The runtime keeps the key out of status, logs, and errors.
func WithSourceAliases ¶
WithSourceAliases declares the other stable identities that name this same runtime. A served source chain that names one of them is a self reference. The runtime then refuses the read instead of serving its own catalog back to itself.
func WithSourceChannel ¶
WithSourceChannel names the mutable branch that selects the current catalog.
func WithSourceMaxAge ¶
WithSourceMaxAge sets the age at which the served catalog counts as stale. It also derives the channel freshness thresholds. The warning age becomes the maximum age, and the critical age keeps the six-to-ten ratio of the defaults. WithFreshnessPolicy wins over this derivation.
func WithSourceMaxHops ¶
WithSourceMaxHops bounds a cascade of Starmap runtimes.
func WithSourcePolicy ¶
func WithSourcePolicy(policy SourcePolicy) Option
WithSourcePolicy replaces the whole upstream source policy.
func WithSourcePollInterval ¶
WithSourcePollInterval sets the channel check period.
func WithSourceRepository ¶
WithSourceRepository names the catalog repository of a GitHub channel.
func WithSourceSignerWorkflow ¶
WithSourceSignerWorkflow pins the build provenance the source accepts.
func WithSourceStartupPolicy ¶
WithSourceStartupPolicy decides what the runtime serves before the first upstream reply.
func WithSourceToken ¶
WithSourceToken supplies the source access token. The runtime keeps the token out of status, logs, and errors.
func WithSourceURL ¶
WithSourceURL sets the deployment-owned source address used by the starmap and file sources.
func WithStartupSpread ¶
WithStartupSpread bounds the random delay before the first scheduled run.
func WithStateDirectory ¶
WithStateDirectory selects the durable directory that retains layers, the scheduler identity seed, and source discovery state.
func WithTransferIdleTimeout ¶
WithTransferIdleTimeout bounds a stalled transfer.
func WithTransferMaxDuration ¶
WithTransferMaxDuration bounds one whole transfer.
type ProviderLayer ¶
type ProviderLayer struct {
// ProviderID names the observed provider.
ProviderID catalogs.ProviderID
// Payload is the canonical encoding of the provider observation.
Payload []byte
// Digest is the content digest of Payload.
Digest string
// ObservedAt is when acquisition accepted the observation.
ObservedAt time.Time
}
ProviderLayer is one retained per-provider observation. The runtime keeps the last-known-good layer of every provider, so one failing provider never removes its records from the effective catalog.
type Random ¶
type Random func() float64
Random returns a uniform value in the half-open interval [0, 1). The runtime uses it to spread scheduled work across a fleet.
type RefreshReport ¶
type RefreshReport struct {
// RunID is the identity of the run.
RunID string
// Kind names the work the run did.
Kind string
// StartedAt and CompletedAt bound the run.
StartedAt time.Time
CompletedAt time.Time
// Source reports the upstream read.
Source SourceRefreshReport
// Acquisition reports the provider observations.
Acquisition AcquisitionReport
// Published reports whether the runtime published a new effective catalog.
Published bool
// GenerationID identifies the published effective catalog.
GenerationID string
}
RefreshReport says what one whole refresh produced. A source-only run leaves the acquisition report empty, and an acquisition-only run leaves the source report empty.
type Runtime ¶
type Runtime struct {
// contains filtered or unexported fields
}
Runtime is a connected Starmap. It serves the embedded catalog immediately, refreshes from one selected upstream source, retains per-provider observations, and rebuilds one immutable effective catalog from those layers. Reads reach no external system.
func Open ¶
Open returns a connected runtime. It serves the verified embedded catalog before the first upstream reply, so Catalog and State never wait for the network. Open starts the source and acquisition schedules and returns.
func (*Runtime) Catalog ¶
Catalog returns the current immutable effective catalog. It reaches no external system and never blocks on the source.
func (*Runtime) Client ¶
Client returns the immutable publication client underneath the runtime. Use it for explicit publication, hooks, and generation retrieval.
func (*Runtime) Close ¶
Close stops runtime-owned work and releases the lease. It is idempotent and joins within five seconds. A run that does not stop in time leaves a typed timeout error, so an operator sees the stall rather than a silent hang.
func (*Runtime) Refresh ¶
func (r *Runtime) Refresh(ctx context.Context) (RefreshReport, error)
Refresh reads the upstream source and then observes every eligible provider. It changes the source layer and the provider layers in one run.
func (*Runtime) RefreshSource ¶
func (r *Runtime) RefreshSource(ctx context.Context) (SourceRefreshReport, error)
RefreshSource reads the upstream source only. It changes the source layer.
func (*Runtime) State ¶
func (r *Runtime) State() starmap.CatalogState
State returns one atomic snapshot of the effective catalog and its generation identity. It reaches no external system.
func (*Runtime) Status ¶
Status returns the current runtime status. It reads retained state only, so it reaches no external system and never blocks on the source.
func (*Runtime) Sync ¶
func (r *Runtime) Sync(ctx context.Context, providers ...catalogs.ProviderID) (AcquisitionReport, error)
Sync observes providers only. It changes the provider layers and returns the acquisition report. An empty provider list observes every eligible provider.
func (*Runtime) Updates ¶
func (r *Runtime) Updates() <-chan starmap.CatalogState
Updates returns the channel that carries every published effective catalog state. The runtime buffers the channel. A reader that falls behind loses intermediate states and always observes the newest one.
type SourceIdentityAdopter ¶
type SourceIdentityAdopter = source.IdentityAdopter
SourceIdentityAdopter is an optional Source that takes the fleet instance identity of its runtime.
type SourceKind ¶
type SourceKind = status.SourceKind
SourceKind names one supported upstream catalog source.
func ParseSourceKind ¶
func ParseSourceKind(name string) (SourceKind, error)
ParseSourceKind converts one configured name into a source kind. It rejects every unknown name with a typed validation error, so a typo never selects a silent default.
func SourceKinds ¶
func SourceKinds() []SourceKind
SourceKinds returns a caller-owned copy of every accepted source name.
type SourcePolicy ¶
type SourcePolicy struct {
// Kind selects the source implementation.
Kind SourceKind
// URL is the deployment-owned source address. It applies to the starmap
// and file kinds.
URL string
// Repository names the catalog repository for the public and github kinds.
Repository string
// Channel names the mutable branch that selects the current catalog.
Channel string
// SignerWorkflow pins the build provenance the source accepts.
SignerWorkflow string
// PollInterval is the channel check period.
PollInterval time.Duration
// StartupPolicy decides what the runtime serves before the first reply.
StartupPolicy StartupPolicy
// MaxAge is the age at which the active catalog counts as stale.
MaxAge time.Duration
// MaxHops bounds a cascade of Starmap runtimes.
MaxHops int
// Aliases are the other stable identities that name this same runtime,
// such as a load-balancer name or a second deployment name. A served
// source chain that names one of them is a self reference, and address
// comparison alone cannot detect it.
Aliases []string
}
SourcePolicy selects and bounds the upstream catalog source. It holds no token and no API key, so a policy value is safe to log and to serve.
func DefaultSourcePolicy ¶
func DefaultSourcePolicy() SourcePolicy
DefaultSourcePolicy returns the canonical public-channel source policy.
func (SourcePolicy) SafeIdentity ¶
func (p SourcePolicy) SafeIdentity() string
SafeIdentity returns the source identity that status and logs may show. It names the kind and, for a GitHub channel, the repository and the channel. It never names a custom URL, a host, or a credential.
func (SourcePolicy) Validate ¶
func (p SourcePolicy) Validate() error
Validate checks the policy fields that the runtime depends on.
type SourceRefreshReport ¶
type SourceRefreshReport struct {
// RunID is the identity of the run that produced this report.
RunID string
// StartedAt and CompletedAt bound the run.
StartedAt time.Time
CompletedAt time.Time
// SourceIdentity is the safe identity of the source that answered.
SourceIdentity string
// Changed reports whether the upstream generation moved.
Changed bool
// Published reports whether the runtime published a new effective catalog.
Published bool
// GenerationID identifies the upstream generation the runtime retained.
GenerationID string
// PublishedAt is the upstream publication time.
PublishedAt time.Time
// Health is what this runtime observed while it read the source. It grades
// the transfer only.
Health Health
// UpstreamHealth is the health the upstream reported about itself. It stays
// independent of Health, so a healthy transfer still carries a degraded
// upstream report.
UpstreamHealth Health
// Reason is the safe reason code of a failed read.
Reason string
// Chain is the sanitized upstream source chain.
Chain []SourceHop
}
SourceRefreshReport says what one upstream source read produced.
type SourceWatcher ¶
SourceWatcher is an optional Source that reports each upstream change.
type StartupPolicy ¶
type StartupPolicy string
StartupPolicy decides what the runtime serves while the first source read is still outstanding.
const ( // StartupPreferSource keeps the embedded baseline active and replaces it // with the first verified upstream generation. It is the default. StartupPreferSource StartupPolicy = "prefer_source" // StartupRequireSource keeps the runtime unusable until one verified // upstream generation is active. Open reads the source one time and fails // when that read fails. The policy names the evidence the runtime needs, // not the lease. A replica that another instance owns therefore opens // without a read and consumes the state that the owner publishes. StartupRequireSource StartupPolicy = "require_source" // StartupPreferLocal keeps the retained local generation active and // applies an upstream generation only on an explicit refresh. StartupPreferLocal StartupPolicy = "prefer_local" )
func ParseStartupPolicy ¶
func ParseStartupPolicy(name string) (StartupPolicy, error)
ParseStartupPolicy converts one configured name into a startup policy.
func (StartupPolicy) String ¶
func (p StartupPolicy) String() string
String returns the wire value of the startup policy.
func (StartupPolicy) Valid ¶
func (p StartupPolicy) Valid() bool
Valid reports whether the policy is one of the accepted names.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package source owns the upstream source contract of a connected catalog runtime.
|
Package source owns the upstream source contract of a connected catalog runtime. |
|
Package status owns the observable vocabulary of a connected catalog runtime.
|
Package status owns the observable vocabulary of a connected catalog runtime. |