8f21f4df19
Replace the lossy _entry_to_raw round-trip with a repos_cache threaded alongside the ManifestBottle cache in _resolve_one_bottle. Each bottle's effective git-gate.repos is stored as raw dicts keyed by name, so a child field-merges directly against its parent's raw repos instead of reconstructing them from parsed ManifestGitEntry objects. _resolve_repos_raw now owns the union/clear/inherit semantics on plain dicts; _merge_bottles just injects the precomputed merged set before parsing. Drops _entry_to_raw entirely, removing the maintenance hazard where a new ManifestGitEntry field would silently vanish from inherited repos. Addresses review feedback on #238. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NgEFTXcWZjA8n7ntq2zHQQ