Skip to content

Artifact Store

BMO artifact storage remains family-owned: typed run output, workflow plans, run-derived artifacts, eval/shadow captures, patch proposal diffs, scheduler run output, and A2A task payloads keep their own capture, mutation, retention, and raw-read policies. The shared artifact-store surface is a metadata-only posture layer over those families.

Use these read-only surfaces when you need to know which artifact families are available, empty, degraded, unavailable, or unsupported by design:

SurfaceCommand or route
CLIbmo config show-artifacts or bmo config show-artifacts --json
TUI/artifacts, /artifact-status, sidebar Artifacts
Agent toolartifact_status
MCPbmo_get_artifact_posture
HTTPGET /v1/artifacts/posture

Each surface reports family id, state, bounded counts, reason, drill-in hint, and recent bounded evidence when available. The posture output does not return raw report bodies, prompt snapshots, diff bodies, replay payloads, logs, or rendered HTML.

Typed run output keeps Markdown and JSON emitted through emit_result as the authoritative result. Rendered companions such as HTML reports must be recorded through emit_artifact as workspace-local references. Rendered companions need source-pairing metadata, such as artifact_role=companion plus source_path or provenance, so agents and operators can see that the companion is subordinate to a Markdown or JSON source.

The posture layer does not add a generic upload or create API. Family-owned write paths remain the only mutation paths, including eval/shadow capture, workflow plan updates, patch proposal diff storage, scheduler run residue, and A2A protocol task artifacts.