#pragma once #include "sov_rtx.h" #include #include #ifdef __cplusplus extern "C" { #endif #define SOV_CUDA_VALIDATION_SCHEMA_VERSION 1u #define SOV_CUDA_KERNEL_ABI_VERSION 1u #define SOV_CUDA_KV_LAYOUT_VERSION 1u #define SOV_ROWM_CUDA_COMMIT_VERSION 1u enum { SOV_CUDA_VALIDATION_JIT_ACCEPTED = 1u << 0, SOV_CUDA_VALIDATION_SYMBOLS_RESOLVED = 1u << 1, SOV_CUDA_VALIDATION_POWER_BOUND = 1u << 2, SOV_CUDA_VALIDATION_JANET_CONFIGURED = 1u << 3, SOV_CUDA_VALIDATION_TENSOR_GEMM_READY = 1u << 4, SOV_CUDA_VALIDATION_SCALAR_GEMM_READY = 1u << 5, SOV_CUDA_VALIDATION_KV_LAYOUT_CHECKED = 1u << 6, SOV_CUDA_VALIDATION_KNOWN_ANSWER_TEST = 1u << 7 }; #define SOV_CUDA_VALIDATION_REQUIRED_FLAGS \ (SOV_CUDA_VALIDATION_JIT_ACCEPTED \ | SOV_CUDA_VALIDATION_SYMBOLS_RESOLVED \ | SOV_CUDA_VALIDATION_POWER_BOUND \ | SOV_CUDA_VALIDATION_JANET_CONFIGURED \ | SOV_CUDA_VALIDATION_TENSOR_GEMM_READY \ | SOV_CUDA_VALIDATION_SCALAR_GEMM_READY \ | SOV_CUDA_VALIDATION_KV_LAYOUT_CHECKED) enum { SOV_CUDA_ROWM_OK = 0, SOV_CUDA_ROWM_INVALID_ARGUMENT = -1001, SOV_CUDA_ROWM_UNBOUND = -1002, SOV_CUDA_ROWM_BIND_CONFLICT = -1003, SOV_CUDA_ROWM_COMMIT_FAILED = -1004, SOV_CUDA_ROWM_INVALID_PROOF = -1005, SOV_CUDA_ROWM_UNAUTHORIZED = -1006, SOV_CUDA_ROWM_STALE_CONTEXT = -1007, SOV_CUDA_ROWM_EVIDENCE_MISMATCH = -1008 }; typedef struct { const uint8_t* bytes; size_t size; } sov_cuda_validation_bytes_t; typedef struct { uint32_t schema_version; uint32_t backend_id; uint32_t driver_version; uint32_t compute_capability_major; uint32_t compute_capability_minor; uint32_t ptx_target; uint32_t kernel_abi_version; uint32_t scalar_storage_bits; uint32_t accumulator_storage_bits; uint32_t kv_layout_version; uint32_t validation_result; uint32_t validation_flags; uint64_t resolved_kernel_mask; uint64_t cuda_context_generation; uint8_t device_uuid[16]; sov_cuda_validation_bytes_t flash_ptx; sov_cuda_validation_bytes_t gemm_ptx; } sov_cuda_validation_evidence_t; typedef struct { uint32_t version; uint32_t reserved; uint64_t validation_epoch; uint8_t record_id[32]; uint8_t committed_rowm_root[32]; uint8_t embedded_worm_receipt_hash[32]; } sov_rowm_cuda_validation_commit_t; typedef int (*sov_rowm_commit_cuda_validation_fn)( void* rowm_context, const sov_cuda_validation_evidence_t* evidence, sov_rowm_cuda_validation_commit_t* commit_out); int sov_cuda_validation_bind_rowm( sov_rowm_commit_cuda_validation_fn commit_fn, void* rowm_context); int sov_cuda_validation_commit_rowm( const sov_cuda_validation_evidence_t* evidence); int sov_cuda_validation_require_authorized(uint64_t cuda_context_generation); int sov_cuda_validation_get_commit(sov_rowm_cuda_validation_commit_t* commit_out); void sov_cuda_validation_clear(void); #ifdef __cplusplus } #endif