Kind:LatticeServiceIntroduced: Chapter 1 (Section 1.4), detailed in Chapter 2 (Section 2.2), designed in Chapter 4 (Section 4.8)
Audience: Application developers
Purpose: Declares a long-running service. The platform derives Deployment, Service, CiliumNetworkPolicy, AuthorizationPolicy, ExternalSecret, PDB, VMServiceScrape, and KEDA ScaledObject from this single spec.
Container image reference. Must be a digest (@sha256:...), not a tag. Validated by admission webhook.
None (required)
command
list of strings
No
Override the image’s default entrypoint. Fewer than 5% of services use this.
Image default
args
list of strings
No
Arguments to the entrypoint.
Image default
variables
map (string -> string)
No
Environment variables. Supports ${resources.<name>.<key>} interpolation for secret references.
None
files
map (path -> object)
No
File mounts. Each key is a mount path; value has content (string with ${resources.*} interpolation). Secrets consumed via files do not cause pod restarts on rotation.
None
resources.requests.cpu
string
Yes
CPU request in Kubernetes quantity format.
None (required)
resources.requests.memory
string
Yes
Memory request in Kubernetes quantity format.
None (required)
resources.limits.cpu
string
Yes
CPU limit. Convention: set equal to requests for Guaranteed QoS.
None (required)
resources.limits.memory
string
Yes
Memory limit. Convention: set equal to requests for Guaranteed QoS.
The example above uses Proxmox, but provider.config accepts any supported provider key (proxmox, docker, aws). Docker and AWS provider configurations follow the same structural pattern — a provider-keyed object under provider.config — but the fields within each are provider-specific and vary. See the respective provider guides for field-level details.
Kind:LatticeJobIntroduced: Chapter 16 (Section 16.3), GPU examples in Chapter 17 (Section 17.4)
Audience: Application developers, ML engineers
Purpose: Declares a batch workload with gang scheduling support. The platform derives Volcano VCJob, PodGroup, ExternalSecrets, LatticeMeshMember for network policies, and TracingPolicyNamespaced for Tetragon enforcement.
Volcano queue name for fair-share scheduling. Pipeline validates namespace is authorized for the queue.
None (required)
minAvailable
integer
Yes
Minimum number of pods that must be placed simultaneously (gang scheduling constraint). Maps to Volcano minMember.
None (required)
schedule
string
No
Cron expression for scheduled execution. When present, the pipeline derives a CronJob wrapping the VCJob.
None (one-shot)
concurrencyPolicy
enum
No
For cron jobs: Allow, Forbid, Replace. Prevents overlapping runs.
Allow
successfulJobsHistoryLimit
integer
No
For cron jobs: how many completed job records to retain.
Kubernetes default
failedJobsHistoryLimit
integer
No
For cron jobs: how many failed job records to retain.
Kubernetes default
tasks
map (name -> object)
Yes
Named task groups. Each group has its own replica count, workload spec, and restart policy.
None (required)
defaults
object
No
Shared defaults applied across all tasks.
None
defaults.entryRuntime.imagePullSecrets
list of strings
No
Image pull secret names injected into all task pods.
None
resources
map
No
Resource dependencies shared across all tasks. Same format as LatticeService workload.resources. Can also be specified per-task inside tasks.<name>.workload.resources.
Kind:LatticeModelIntroduced: Chapter 18 (Section 18.2)
Audience: ML engineers
Purpose: Declares an inference endpoint with model lifecycle management. The platform derives multiple Deployments (one per role), model download init containers, role-specific KEDA ScaledObjects with GPU metrics, and inference routing configuration.
Kind:LatticePackageIntroduced: Chapter 11 (Section 11.3)
Audience: Platform operators, team leads
Status: Not yet implemented in the reference implementation. See the Implementation Roadmap.
Purpose: Orchestrates Helm chart installation with platform secret resolution and Cedar authorization. The primary escape hatch for third-party software (Redis, Prometheus, NGINX) that does not fit the derivation pipeline.
Chart repository URL. Must use HTTPS or OCI protocol. Validated by admission webhook against repository allowlist.
None (required)
chart.name
string
Yes
Helm chart name.
None (required)
chart.version
string
Yes
Exact chart version. Ranges and latest are rejected.
None (required)
values
object
No
Helm values to pass to the chart. Supports ${resources.<name>.<key>} interpolation for secrets.
None
resources
map
No
Resource dependencies. Same format as LatticeService workload.resources. Secrets are resolved through the platform’s routing paths and authorized by Cedar AccessSecret.
Kind:LatticeMeshMemberIntroduced: Chapter 11 (Section 11.4), bilateral model detailed in Chapter 13 (Section 13.2)
Audience: Platform operators, team leads
Purpose: Brings non-derived workloads (Helm-installed packages, legacy systems) into the bilateral network agreement model. The mesh-member controller generates CiliumNetworkPolicies and AuthorizationPolicies based on declared ports and callers.
Kind:LatticeComplianceProfileIntroduced: Chapter 14 (Section 14.4)
Audience: Platform team, security team
Purpose: Declares which compliance frameworks to evaluate continuously. The compliance controller runs probes for each framework’s controls at the configured interval and reports pass/fail with evidence in the status.
Kind:CedarPolicyIntroduced: Chapter 13 (Section 13.1), referenced in Chapter 4 (Section 4.9), Chapter 8
Audience: Platform team, team leads
Purpose: Defines Cedar authorization rules evaluated at derivation time. Policies are validated by admission webhook and distributed to workload clusters via gRPC stream. Evaluation uses forbid-overrides-permit semantics with default-deny.
Kind:SecretProviderIntroduced: Chapter 9 (Section 9.3)
Audience: Platform team
Purpose: Configures a secret backend. One per backend per environment. The derivation pipeline resolves ${resources.<name>.<key>} references against the configured ClusterSecretStore. Backend migrations are transparent to developers.
The platform team must ensure key name compatibility during backend migrations. If Vault uses password and AWS uses db-password, developer ${resources.orders-db.password} references break (Chapter 9, Section 9.3).
A key mapping layer in the SecretProvider can handle name differences during migration.
Kind:TrustPolicyIntroduced: Chapter 14 (Section 14.2)
Audience: Platform team, security team
Status: Image signing and verification is not yet implemented in the reference implementation. This section describes the intended behavior. See the Implementation Roadmap for current status.
Purpose: Maps cosign signing keys to container registries. At derivation time, the pipeline verifies each container image’s signature against the applicable TrustPolicy before producing any Kubernetes resources.
Caching: Verified results cached for 5 minutes; failed verifications cached for 60 seconds. Concurrent verifications of the same image are coalesced.
Cache invalidation gap: After key revocation (TrustPolicy update), cached “verified” results persist for up to 5 minutes. Event-driven cache invalidation reduces this to seconds but is not implemented in the reference implementation (Chapter 14, Section 14.9).
Keyless signing: Cosign supports keyless signing via OIDC/Fulcio/Rekor. The reference implementation uses key-based signing to avoid the Rekor dependency.