The producer guide — rendering artifacts

Copy Markdown View Source

The documented per-artifact constructors ARE the producer surface: compose the member value, construct, digest, serialize.

{:ok, bytes} = AgentBlueprintProtocol.Canonicalization.encode({:object, [{"a", {:integer, 1}}]})
AgentBlueprintProtocol.Json.decode(bytes) # => {:ok, {:object, [{"a", {:integer, 1}}]}}

Thread :authored_extensions for critical namespaces whose bodies negotiation validated against a digest-pinned host schema — the authored channel spares those bodies the generic value-shape heuristics while staying digest-covered.

The round-trip guarantee

decode → to_value → encode is a fixed point (property-tested): the bytes you serialize are the bytes a verifier recomputes. That is the byte-exactness guarantee a producer relies on — no facade-level minting functions exist or will grow (the accepted producer-surface decision).