Agent Proposal to Runtime v1 Compatibility v1
September 10, 2026 ยท View on GitHub
Audience: maintainers, runtime integrators, and compiler contributors.
Status: implemented additive AGENT-04 final-message bridge; HOSTED GREEN under the v0.4.0 release baseline. This does not revise the frozen Runtime v1 schema or API.
Boundary
Agent Proposal Schema v1 derives a typed closed grammar and decoder from the
verified Proposal role. Agent Runtime v1 accepts its frozen final action,
whose message is an ordinary string. This adapter removes only the fixture's
manual wrapping step between those two existing contracts.
compile_agent_proposal_runtime_v1_compatibility takes an already compiled
Proposal Schema and the compiled canonical AgentDefinition from which that
schema claims derivation. It requires their exact definition, agent, and
Proposal-role identities to agree, reparses the frozen Runtime v1 profile, and
returns an immutable AgentProposalRuntimeV1Compatibility. The product retains
the Proposal decoder and the exact Runtime provider-response bound. It has no
serialized adapter document, schema, digest, or caller-mintable replacement.
AgentProposalRuntimeV1Compatibility::decode_and_render first decodes one
untrusted canonical semaprax.agent-proposal.v1 document through Proposal
Schema v1. Only after that succeeds does it return
AgentRuntimeV1ActionBytes containing an exact canonical frozen
semaprax.agent-runtime-action.v1 final action.
Exact mapping
Every record or variant already admitted by Proposal Schema v1 is accepted;
the adapter adds no second shape vocabulary. It does not inspect or reinterpret
the decoded case or fields. The exact admitted Proposal document, including
its terminal LF, becomes the value of Runtime v1 final.message. Runtime's
canonical JSON string escaping therefore preserves the complete Proposal bytes
inside the final action rather than translating them into action fields.
The result is always kind: "final". A Proposal case or field whose display
name or stable identity contains words such as tool, arguments, or final
remains Proposal data. It cannot select a Runtime tool, name an argument, or
change the action kind. The adapter does not replace Runtime v1's action parser
or tool schemas, and providers still speak the unchanged Runtime v1 action wire
when executing through that runtime.
Bounds and failure ownership
Rendering measures the complete escaped final action, not only the unescaped
Proposal document, against the exact profile's
max_provider_response_bytes. The adapter returns no partial or truncated
action and performs no schema repair, field sorting, fallback, or best-effort
conversion.
SPX-G578 owns only an incompatible compiled definition/schema/profile pair or
a complete rendered final action that exceeds the Runtime profile bound.
Proposal Schema v1 remains the sole owner of untrusted Proposal failures:
SPX-G550rejects a noncanonical closed Proposal document; andSPX-G551rejects a Proposal identity, case, field, representation, or exact integer bound.
The adapter does not translate those diagnostics into SPX-G578. Runtime v1
retains its existing diagnostics for callers that submit Runtime action bytes
directly.
Compatibility and authority
This is a generated final-message wrapper, not a new execution protocol. It changes no AgentDefinition v1, AgentGraph v1, Proposal Schema v1, Runtime Profile v1, Task v1, Action v1, Trace v1, or Evidence v1 byte, schema, digest domain, known answer, or public constructor. Existing Runtime v1 direct callers remain unchanged.
A decoded Proposal remains data. Producing a final action does not establish model quality, semantic correctness, authorization, or successful task completion. Compilation and rendering invoke no provider or tool and grant no host, capability, filesystem, process, network, environment, credential, approval, signing, payment, publication, or persistence authority.
Focused evidence
The existing agent_runtime_v1 integration harness owns the bounded gate:
cargo test --locked -p semaprax --test agent_runtime_v1 agent_proposal_runtime_v1_compatibility::
That selector covers:
- deterministic compilation for one admitted Proposal record and one admitted Copy-scalar variant;
- byte-exact final rendering in which the complete canonical Proposal,
including its LF, is preserved as the escaped
messagestring; - Proposal
SPX-G550andSPX-G551preservation for malformed, stale, cross-agent, wrong-case, wrong-field, and out-of-range inputs; SPX-G578for cross-definition/schema/profile pairing and exact complete-action bound overflow;- escape-expansion accounting at the exact profile limit and one byte beyond;
- equality with the frozen Runtime v1 canonical final grammar, followed by one offline scripted Runtime v1 run and independent evidence replay;
- hostile Proposal names that resemble Runtime
tool,arguments, andfinalmembers but still produce only a final message; - no host reachability during compilation or rendering; and
- unchanged frozen AgentDefinition, AgentGraph, Runtime Profile, Task, Action, Trace, and Evidence known answers.
Documentation link checks and the module-size gate remain cumulative. This focused selector is local deterministic evidence only, not hosted, cross-platform, live-provider, or production support.
Nonclaims
This slice does not claim:
- a new Runtime schema, API, wire, digest, or Runtime v2;
- direct provider Proposal input or direct Runtime consumption of AgentGraph or nominal Proposal values;
- semantic Proposal-case or field translation into Runtime actions;
- generation, replacement, or widening of Runtime tool actions, argument schemas, authorization, capability checks, or effect execution;
- Proposal values beyond the existing closed Proposal Schema v1 subset;
- provider transport, credentials, prompt-injection resistance, model quality, live execution, retry, billing, persistence, or exactly-once behavior;
- generated-client compilation, packaging, publication, public ABI, Project or ProgramRoot retention, CLI, editor, or hosted support; or
- lifecycle authorization, iterative AgentStep execution, or completion of the broader Agent-native semantic-program row.