39cbd44f5b
Four tasks: (1) engine identity projection — factor build_doc/serialize_doc out of blueprint_to_json (byte-preserving, guarded by the canonical golden), add blueprint_identity_json + strip_debug_symbols + 4 property tests (renamed twins, openness, bound values, edge swap); (2) CLI --identity-id sibling flag — composite_from_str factored out of build_from_str, the exactly-one introspect dispatch deliberately relaxed so the two id flags combine (one build, both ids, content id first), plus the in-crate cross-path twin test (Rust sma_signal vs op-script twin: distinct content ids, one identity id — placed beside the existing cross-surface pins since sma_signal is private to the bin); (3) four e2e tests incl. the previously uncovered count!=1 usage path; (4) full regression (873 -> 882 expected). Plan-recon corrections folded in: the spec sketch's BlueprintData does not exist — the real DTO is CompositeData; engine re-export + CLI import are a lockstep pair. refs #180, refs #171