Commits on Apr 28, 2026 chore(workspace): audit + repair pass (0.37.0) Correctness: - ssh_store: SshUrl::parse now handles bracketed IPv6 literals (ssh://user@[::1]:22/repo) and rejects unbracketed IPv6 instead of silently mis-splitting on the colon - sync: set_branch_upstream no longer reads config.json twice (TOCTOU + redundant IO); branches are read from the value already in memory - repo: init_morph_dir_at propagates serde failures as MorphError::Serialization instead of expect()/unwrap() - agent: write_instance_id maps the as_object_mut() failure through Result instead of unwrap() - cli: run_merge single-shot path uses an exhaustive if-let-tuple instead of three coupled .unwrap()s on pipeline/metrics/message; replaces serde_json::to_string unwraps with `?` Library swaps: - uuid (v4) replaces handrolled generate_instance_id (was time*pid into 24 bits ~16M space; now 12-hex slice of a v4 UUID; +1000-id uniqueness test) - strip-ansi-escapes replaces handrolled CSI scanner in eval_parsers (full…