Skip to documentation
SLOP

tiny.machine.profile

Reference tiny.machine profile

Defined in tiny.machine.

Comparing two runs requires writing down the rules both ran under and what exactly is being claimed about them, and this namespace holds both as one execution contract, the backend chosen to run it, and the determinism claims that pairing makes (a profile), with the evidence for each claim named.

API (60)

Actions

Public operations.

Types and contracts

Public types and contracts.

Namespaces

Public namespaces.

Values and defaults

Public values and defaults.

No direct callersNo direct callstiny.machineprofile
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/machine/src/profile/root.zig

zig
//! Comparing two runs requires writing down the rules both ran under and what exactly//! is being claimed about them, and this namespace holds both as one execution contract,//! the backend chosen to run it, and the determinism claims that pairing makes (a//! *profile*), with the evidence for each claim named.//!//! The execution rules one profile kind shares across backends (its *contract*)//! name the CPU model and the admitted instruction forms, directly boot K0, the//! restricted kernel from `lib/os` that exchanges request and event messages with//! the host through fixed rings in guest RAM, schedule the single vCPU cooperatively,//! inject time and entropy, feed back recorded effect results, and settle the RAM//! geometry, transport sizes, inventory identity, and capacity limits. The two canonical//! profile kinds govern root handling: reconstruct rebuilds a root when the stored//! value is absent, and continuation test requires authoritative roots and rejects//! a missing one. Semantic choices are versioned enum values, and geometry, transport,//! and capacity fields are fixed numbers. The `validate` function accepts only canonical//! constructor outputs carrying the current inventory identity.//!//! A promise can be checked only once its scope is written down, so the namespace//! carries the canonical list naming all 42 places where two runs could differ across//! eleven categories (the *inventory*). Each inventory entry records its control//! twice, once for the reference backend and once for KVM: enforced by a named witness,//! or resting on a named assumption. Each profile states four *determinism claims*//! about itself in the same plain terms, covering semantic replay, whole-system//! replay on one backend, equivalence across hosts, and equivalence down to the//! instruction. A portable profile enforces semantic replay, the portable continuation-test//! profile enforces whole-system replay as well, and three subjects stay assumptions://! KVM semantics, equivalence across hosts, and equivalence down to the instruction.//!//! From earlier work in the [Linux KVM API](https://docs.kernel.org/virt/kvm/api.html)//! and the//! [Intel Software Developer Manuals](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html),//! the namespace took the x86-64 CPU model with the long-mode contract it admits,//! one virtual CPU, and KVM named as one execution semantics among the backends//! of the profile.//!//! The backend is one field of the profile, so the same contract carries a second,//! portable implementation, and the inventory records what that implementation enforces//! while KVM rests on assumptions. A profile carries two fingerprints. The first//! covers the execution rules a kind shares, computed over the encoded profile with//! the backend field and the claim fields zeroed as the *contract fingerprint*,//! so a KVM profile and its portable counterpart hold the same value and can be//! run against each other. The second covers the whole profile as the *profile fingerprint*,//! with the contract, the backend, and the claims all contributing, so every pairing//! of a canonical kind with a backend gets a value of its own.pub const capacity = @import("capacity.zig");pub const determinism = @import("determinism.zig");pub const types = @import("types.zig");pub const wire = @import("wire.zig");pub const Architecture = types.Architecture;pub const BackendSemantics = types.BackendSemantics;pub const BootDialect = types.BootDialect;pub const Capacity = capacity.Capacity;pub const CheckpointFormat = types.CheckpointFormat;pub const Contract = types.Contract;pub const ContractFingerprint = wire.ContractFingerprint;pub const CpuContract = types.CpuContract;pub const DeterminismAssumption = determinism.Assumption;pub const DeterminismAuditError = determinism.AuditError;pub const DeterminismCategory = determinism.Category;pub const DeterminismClaim = determinism.Claim;pub const DeterminismClaimAssumption = determinism.ClaimAssumption;pub const DeterminismClaimKind = determinism.ClaimKind;pub const DeterminismClaims = determinism.Claims;pub const DeterminismClaimWitness = determinism.ClaimWitness;pub const DeterminismControl = determinism.Control;pub const DeterminismControlKind = determinism.ControlKind;pub const DeterminismEntry = determinism.Entry;pub const DeterminismIdentity = determinism.Identity;pub const DeterminismSchema = determinism.Schema;pub const DeterminismSource = determinism.Source;pub const DeterminismWitness = determinism.Witness;pub const DeviceDialect = types.DeviceDialect;pub const EffectSemantics = types.EffectSemantics;pub const EntropySemantics = types.EntropySemantics;pub const Error = types.Error;pub const Geometry = types.Geometry;pub const InstructionAdmission = types.InstructionAdmission;pub const MissingRoot = types.MissingRoot;pub const Profile = types.Profile;pub const ProfileFingerprint = wire.ProfileFingerprint;pub const ProfileKind = types.ProfileKind;pub const RootSemantics = types.RootSemantics;pub const Scheduling = types.Scheduling;pub const TimeSemantics = types.TimeSemantics;pub const Transport = types.Transport;pub const TransportDialect = types.TransportDialect;pub const Usage = capacity.Usage;pub const auditDeterminism = determinism.audit;pub const contractFingerprint = wire.contractFingerprint;pub const continuationTestV1 = types.continuationTestV1;pub const decode = wire.decode;pub const encode = wire.encode;pub const interpretedContinuationTestV1 = types.interpretedContinuationTestV1;pub const interpretedReconstructV1 = types.interpretedReconstructV1;pub const kvmContinuationTestV1 = types.kvmContinuationTestV1;pub const kvmReconstructV1 = types.kvmReconstructV1;pub const profileFingerprint = wire.profileFingerprint;pub const reconstructV1 = types.reconstructV1;pub const schema_major = types.schema_major;pub const schema_minor = types.schema_minor;pub const validate = types.validate;pub const wire_bytes = wire.bytes;pub const determinism_entries = determinism.entries;pub const determinism_sources = determinism.profile_sources;

Source: lib/machine/src/root.zig:70

zig
pub const profile = @import("profile/root.zig");

Audit

Definitions1
Public names1
Members0
Version26.7.0
Revisiondaab053ee433