pub(crate) fn bundle_validate_impl(
data: Value,
) -> Result<ValidationReport, String>Expand description
Structurally validate a bundle draft — ABF
UI-alignment pass. Takes the SAME payload shape bundle.upsert accepts
(reuses its normalize_bundle_upsert_input), not just an id, so the
Memory → Bundles editor’s “Validate” button can check an unsaved draft (including a
brand-new bundle with no id yet) rather than only whatever was last
persisted.
Store-free: what it checks is all in the draft. (It read the bundle’s
bound MCP servers while bundles carried them;
SPEC_BUNDLE_CONTENTS_MEMORY_NOT_MCP_2026_10_07.md §3.1.)