pub const OBJECT_RESULT_OUTPUT: &str = "result_output";Expand description
Object Store holding overflow stdout / stderr blobs for the
ExecResult wire kind (#227). The default NATS max_payload is
1 MB; a result whose stdout / stderr exceeds it would reject the
publish and pin the agent’s outbox in a reconnect loop. The agent
uploads any stdout / stderr larger than STDOUT_INLINE_THRESHOLD
(256 KB, picked at 1/4 of the default max_payload so the rest of
the ExecResult fields fit alongside) into this bucket and replaces
the inline field with crate::wire::ExecResult::stdout_object /
stderr_object pointers. Backend’s results projector derefs the
pointers before INSERT so downstream consumers (SQLite, SPA
Activity, inventory projector) see the full text the same way
they always have.
Object keys follow the shape <request_id>/{stdout,stderr} so
stdout + stderr for the same execution share a sibling prefix —
makes kanade jetstream listings group naturally and keeps the
per-key namespace tight against duplicate uploads.
Per-bucket retention (not a stream-wide TTL since async-nats
object_store inherits stream config): matches STREAM_RESULTS’s
30-day retention so an operator who can still query the result
row in SQLite can also fetch the original blob if the inline
copy ever needs re-projection.