Control-plane source map

August 13, 2026 ยท View on GitHub

This document defines how the standalone Oxide engine derives non-compute capabilities from the pinned Mistral.rs source baseline without retaining it as a product dependency or runtime shell.

No source has been imported by this design document. The import phase must add UPSTREAM.md, THIRD_PARTY_NOTICES.md, per-module provenance, and original license notices in the same commit as derived code.

Import principle

Import functionality by ownership domain, not by filename. Code outside a kernel directory can still own Candle tensors, KV buffers, device maps, or model execution and therefore belongs on the replacement side of the boundary.

Use four classifications:

ClassMeaning
ImportPreserve the admitted implementation and tests, then rename its product boundary
SplitPreserve control-state logic but replace tensor, KV, or provider fields with Oxide handles
ReferenceReimplement the contract in Oxide and compare with the pinned upstream behavior
ExcludeDo not include in the first product profile

Initial mapping

Upstream areaOxide targetClassTreatment
server routes and OpenAI request/response typesoxide-infer-server::apiImportPreserve protocol behavior; rename product-specific types and metadata
HTTP streaming and response assemblyoxide-infer-server::streamingImportPreserve SSE ordering, termination, and error semantics
CLI and server configurationapps/oxide-infer and oxide-infer-server::configImportReplace flags and environment variables with Oxide names
tokenizer, chat templates, model metadata pathsoxide-infer-server::textImportKeep generic library dependencies and source notices
request, response, cancellation, and finish stateoxide-infer-engine::requestImportRemove server-framework types from engine-owned state
sequence lifecycleoxide-infer-engine::sequenceSplitReplace framework tensor/cache references with KvHandle and Oxide plan state
default and paged scheduling policyoxide-infer-engine::schedulerSplitPreserve queue policy; replace upstream cache manager and pipeline capabilities
prefix hashing and logical cache policyoxide-infer-engine::kv::prefixSplitPreserve logical policy; move physical pages and copy-on-write into Oxide KV pager
grammar, JSON constraint, and token filtering stateoxide-infer-engine::constraintsSplitPreserve CPU state; execute admitted logits masks through Oxide sampling artifacts
tool-calling and agentic request flowoxide-infer-server::toolsImportKeep outside the GPU data plane and gate optional dependencies
metrics and request loggingoxide-infer-server::telemetryImportAdd Oxide batch, KV, Graph, and artifact metrics
Hugging Face acquisition and local path resolutionoxide-infer-server::repositoryImportKeep downloads outside timed execution and direct weights to Oxide loader
model loaders and model registryoxide-infer-engine::modelReferenceParse supported configs into the narrow Oxide model IR
normal model forward implementationsnoneExcludeReplace with immutable Oxide prefill/decode plans
Candle tensors, storage, device mapping, and cachesnoneExcludeReplace with Oxide memory, placement, and KV ownership
paged-attention, FlashAttention, and custom CUDA cratesnoneExcludeReplace with registered TileLang artifacts
quantized layers and device kernelsfuture Oxide contractsExcludeAdmit one format only with model-quality and kernel evidence
vision, audio, diffusion, and multimodal model codefuture profilesExcludeNot part of the first dense text profile
tensor/pipeline parallel executionfuture distributed runtimeReferencePreserve API concepts only after communicator ownership is defined

Product naming

Imported modules are source-derived Oxide code. Product identifiers use:

  • OxideServer for HTTP and process ownership;
  • OxideEngine for scheduling and model execution;
  • EngineRequest, EngineBatch, and EngineEvent for the control boundary;
  • ModelPlan, PrefillPlan, and DecodePlan for model execution;
  • KvPager and KvHandle for cache ownership;
  • OxideTile for the custom compute provider.

Historical source filenames and external identifiers remain only in provenance records and immutable evidence.

Update procedure

An upstream refresh is not a whole-tree merge. For every admitted module:

  1. compare the pinned source path with the new upstream revision;
  2. classify each change as protocol fix, control-policy change, framework coupling, new feature, or refactor;
  3. port only behavior relevant to the current Oxide capability matrix;
  4. update the provenance source revision and patch notes;
  5. run source-parity, Oxide integration, and serving regression tests;
  6. benchmark scheduler changes when they alter batch composition or timing.

Security and protocol fixes have a fast path but still require attribution and tests. Pure upstream refactors are not ported unless they reduce Oxide maintenance or are required by a selected behavior.

Admission gate

A derived module enters the product only when:

  • its source path, commit, license, and local modifications are recorded;
  • no public product identifier exposes the upstream engine name;
  • it depends only on allowed Oxide layers and generic third-party libraries;
  • tests cover preserved behavior and the new Oxide boundary;
  • it cannot reach an unregistered GPU execution path;
  • removing the external reference checkout does not break the release build.