docs: propose runtime classes for compute workloads - #259
Open
scotwells wants to merge 3 commits into
Open
Conversation
Compute lets a customer say what shape their workload is, but not how it should be executed. There is one runtime per shape, and its limits are discovered by hitting them. This proposes the runtime class: a small platform-owned catalog of named execution tiers, each publishing a contract of isolation, compatibility, startup, and cost. A unikernel fast path and a general-purpose tier to start. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A second class means a second thing realizing instances. Without a stated boundary the classes drift into two dialects — different words for the same failure, different sizing for the same instance type, different silent gaps. The platform owns the contract (catalog, sizing, status vocabulary, translation); a provider owns realization and stays separately deployed so one class cannot take another down. Capability gaps are rejected at submit time rather than quietly skipped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 29, 2026
The boundary section left open who publishes a class object. Reading it, the platform could plausibly ship the catalog itself, which would mean a provider cannot add or retire a class it serves without a change to the platform, and a control plane could advertise a class no deployed provider can honor. The platform defines the class type and the contract; each provider registers the classes it serves from its own repository. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
scotwells
marked this pull request as ready for review
September 2, 2026 18:06
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
Compute lets a customer say what shape their workload is — a sandbox of containers, or a VM booting their own image. It doesn't let them say how it's executed: what isolation surrounds it, how much of Linux it can use, how fast it starts, what it costs. There's one answer per shape today, and customers find its limits by hitting them.
This proposes the runtime class: a small platform-owned catalog of named execution tiers, each publishing a contract of isolation, compatibility, startup, and cost. Two to start — today's unikernel fast path (millisecond starts, narrow image compatibility) and a general-purpose tier (arbitrary Linux images, stronger isolation, slower and pricier per instance).
The outcome: a customer whose image won't boot on the fast path gets "here's the class that runs it, at this price" instead of "that doesn't work here." Compatibility becomes a priced choice, isolation becomes a stated promise, and placement gets a vocabulary for matching workloads to cells that can serve them.
The consumer API experience
One string, alongside instance type — a sibling of "how big," not a new subsystem:
(Shape of the experience, not a committed field name — the doc stays out of API specifics on purpose.)
sandbox/virtualMachineis what you run; class is how it's executed.Where the platform ends and a provider begins
A second class means a second thing realizing instances, so the doc now states the line. The platform owns the contract — the class catalog, the instance-type sizing every class must honor, the customer-facing status and failure vocabulary, and the translation from an instance spec into a runnable description of it. A provider owns realization — its runtime's targeting and plumbing, lifecycle, and capacity — and stays separately deployed, so a bad rollout in one class can't take another down.
Deliberately not narrowed: an instance need not be realized the same way in every class. One class may run containers on a host, another may provision a VM from a cloud provider. The abstraction is the instance, not any particular realization.
Capability gaps get rejected, not silently dropped. An unsupported feature (disk-backed volumes, say) is currently skipped while the instance otherwise starts — fine when there's one runtime with documented limits, a contract violation once a class publishes promises. Unsupported combinations should fail at apply time, naming the class and the feature.
Not decided here
Which technology backs each tier — explicitly a non-goal, since the catalog exists so implementations can change while the contract holds. Also out: runtime tuning knobs, per-container selection, and snapshot / fast resume / scale-to-zero. That last one is the sharpest tension and is called out rather than papered over — those capabilities don't come free in a general-purpose isolation tier.
Open questions
datum-cloud/enhancementsissue.Related
docs/enhancements/federated-deployment-scheduling.md(Define integration strategy with federated control plane for workload deployment scheduling #85).Draft: opening for direction on the framing and open questions before filling in the beta/GA readiness sections.