Bounded Native Agent Runtime v1
September 13, 2026 ยท View on GitHub
Audience: maintainers, host integrators, and compiler contributors.
Status: the A+B private proof and additive C1 injected-host Rust API were hosted green at the recorded revision below. The newer remaining-deadline and accounting-receipt additions have local targeted evidence only; hosted revalidation is pending. It does not add language syntax, compiler semantics, a provider transport, a CLI, or a backend.
Boundary
The runtime admits one caller-authenticated canonical profile and task, routes sequentially across an injected model catalog, and accepts only canonical final or registered read-only tool actions. Model output is data, never authority. Each tool is selected from the admitted catalog; its closed scalar-object schema, read effect, capabilities, policy epoch, cancellation state, deadline, and remaining budgets are checked immediately before its single invocation. Elapsed time at the exact limit is expired. Immediately after local admission evidence is prepared and before either external dispatch, the runtime supplies the host a positive remaining monotonic deadline budget. Tools and uncertain provider attempts are never retried.
The injected AgentHost owns provider credentials and transport. Provider and
tool bytes enter runtime-owned bounded sinks incrementally. No built-in HTTP,
provider SDK, local process, environment, home-directory credential lookup,
filesystem mutation, durable memory, wallet, payment, signing, or asset
authority exists. Cancellation is cooperative, not forced preemption.
Legacy hosts that implement only invoke_tool receive the additive default
deadline hook: their runtime-owned sink still refuses late bytes and no late
result is published, but the runtime cannot physically interrupt a blocking
legacy call before it returns. Hosts that need a bounded physical tool
operation implement the deadline-aware hook.
The additive generated Proposal-to-Runtime compatibility adapter lives outside this runtime. It validates one exact derived Proposal before rendering bytes in the existing final-message action grammar. The complete Proposal document remains message data; no case or field selects a Runtime action or tool. The adapter neither changes this runtime's schemas, public API, digest domains, diagnostics, known answers, or authorization checks nor invokes a host while compiling or rendering.
Canonical documents
The private tranche implements the frozen schemas:
semaprax.agent-runtime-profile.v1semaprax.agent-runtime-task.v1semaprax.agent-runtime-action.v1semaprax.agent-runtime-provider-request.v1semaprax.agent-runtime-tool-result.v1semaprax.agent-runtime-trace.v1semaprax.agent-runtime-evidence.v1
The separate authority-free projection uses semaprax.agent-runtime-accounting-receipt.v1; it does not alter any frozen Trace or Evidence bytes.
Documents are compact canonical UTF-8 JSON with one terminal LF, exact key and
array order, closed types, no duplicate or extra keys, and depth at most 16.
External digest strings are lowercase sha256: values over the frozen domain
and exact document bytes. Raw prompts, actions, tool results, provider errors,
and credentials are absent from Trace and Evidence; those artifacts retain
only bounded identities, decisions, lengths, usage, statuses, and digests.
Each accounting receipt is independently canonical and links the run id plus exact Trace and Evidence digests. Its ordered provider attempts retain the existing reserved USD-microunit ceiling, then mark a charge as observed only when a successful provider response carries an explicit closed usage report. A default or missing report, a failed attempt, and any response rejected after dispatch remain unknown; an explicit all-zero report is observed zero. Receipt totals distinguish reserved, observed, and unknown exposure without creating billing, settlement, retry, or transport authority.
The run loop is single-threaded (max_concurrency is exactly 1), bounded to 16
turns, 32 provider attempts, 32 tool calls, five minutes, and one decreasing
64 MiB builder budget. Effective profile limits may only reduce the production
caps. Checked arithmetic, exact terminal-artifact preflight, and runtime-owned
stream sinks prevent an external provider or tool call when its immediate
authenticated completion cannot fit.
Diagnostics and operational Evidence
SPX-G204 through SPX-G209 cover canonical grammar, profile invariants,
routing eligibility, tool authorization, numeric bounds, and replay mismatch.
SPX-I218 through SPX-I221 cover the closed provider, tool, cancellation,
and deadline outcomes without appending attacker-controlled text. Profile/task
failures before an external attempt may return diagnostics alone. Once external
authority is crossed, every operational exit retains a terminal event, exact
usage, canonical Trace, and independently replayed Evidence.
Executable evidence and nonclaims
Private deterministic tests pin the profile, task, tool action, final action, Trace, and Evidence bytes/digests; canonical/depth and exact cap boundaries; routing ties and permutation; streaming, UTF-8, malformed actions, uncertain retry; tool schema/effect/capability/policy/result failures; cancellation and deadline boundaries; replay mutations; secret-sentinel absence; no-write inventory; 240-byte identities and JSON escaping; and cumulative builder limits. CI is configured to run the fake-host corpus on Ubuntu, macOS, and Windows. Public Agent Runtime v1 is hosted GREEN at 8cf29aff8d1be3ccf74c36bc8c837f0c666ca067 (run 31591039261, 12/12 jobs, private and public deterministic fake-host gates on Ubuntu, macOS, and Windows). There is no live- provider or provider-quality claim.
The generated Proposal compatibility gate is likewise local and bounded. Its successful final-message rendering is not direct provider Proposal input and is not evidence of tool-action/schema generation, tool authorization, invocation, provider quality, live transport, or a Runtime v2 surface.
Public C1 surface
The public Rust surface owns an opaque Agent<H: AgentHost>, monotonic shared
AgentCancellation, runtime-owned streaming sinks, closed provider attempt and
usage values, and an opaque AgentRun exposing only status, an untrusted final
message, canonical Trace/Evidence bytes and digests, and an authority-free accounting receipt/digest.
The receipt reports bounded reservation, observed reported charge, and unknown exposure; it cannot settle or bill. The injected, unsealed
host owns its provider transport and declared read-only tool implementations.
Its policy, elapsed-time, boundary-probe, and tokenization methods are pure local
accounting observations; only provider attempts and tool invocation are external
boundaries. A host that violates that contract is outside v1 evidence. The
provider boundary receives its positive remaining monotonic budget. The
additive tool deadline hook delegates to the original tool boundary for legacy
hosts, so only a host that implements the hook can physically bound that
invocation. The runtime neither proves host side effects absent nor mints tool
authority.
The fixture documents have these executable raw SHA-256 known answers (including the terminal LF):
- profile:
sha256:14981ee99af965dcea311121a90cacfb9891a00d6365e7ad00cab8cefe69c01a - task:
sha256:b6be370dea6708b7b3f7c6bd46299061c8f146a684fdf9895c32dc7e50c9a425 - tool action:
sha256:a7142d92a8d33130892472cfeafee44519fe7bbc9c52a12319638089583a5286 - final action:
sha256:2b44a98bfc80bb89339c4a76c6d43637f3a65c5b0a65a9a5571d507289f6681a - Trace:
sha256:b418408ff16de76251e0b40eb2c7b68dd408bbae66b96e734138ad64f6f70eab - Evidence:
sha256:45da26349aa89514ca3066a0f14076d4220cb03560589b9f959f97e9564bd6ad
The exact ordered nonclaims are carried in every profile, Trace, and Evidence:
no_compiler_determinism_from_model_output; no_model_output_authority;
no_provider_identity_provenance_or_quality_truth;
no_secret_input_or_secret_leakage_guarantee_for_caller_supplied_content;
no_credential_prompt_state_trace_or_diagnostic_exposure;
no_ambient_network_filesystem_process_home_or_environment_authority;
no_write_apply_mutation_or_target_execution_tool_authority;
no_capability_minting_delegation_or_self_approval;
no_human_approval_ui_or_policy; no_semantic_prompt_injection_proof;
no_forced_cancellation_or_preemption;
no_exactly_once_provider_billing_or_retry;
no_durable_memory_persistence_recovery_or_resume;
no_crash_reboot_or_power_loss_durability;
no_distributed_or_parallel_execution;
no_model_quality_accuracy_or_completion_guarantee;
no_live_price_or_cost_accuracy_guarantee;
no_reusable_authorization_token;
no_signature_attestation_or_authenticated_provenance;
no_wallet_payment_signing_asset_or_economic_authority;
no_privacy_compliance_or_data_residency_guarantee;
no_general_formal_proof;
no_new_language_graph_cleanup_backend_or_runtime_semantics;
no_current_schema_api_or_kat_modification.