Files
bot-bottle/docs/prds/0047-remove-git-remote-host-overrides.md
T

2.1 KiB

PRD 0047: Remove Git Remote Host Overrides

  • Status: Draft
  • Author: didericis-codex
  • Created: 2026-06-02
  • Issue: #152

Summary

Remove git remote host override plumbing from bottle manifests and git-gate startup. Git remote declarations should describe upstream repositories and the git-gate credential material needed to mirror them; they should not also configure hosts-file behavior for sidecars.

Problem

The git remote model currently has a hosts override path that can make a git upstream resolve differently inside the git-gate sidecar. That is surprising because the same hostname may also be used for HTTP/API traffic that should keep using the normal egress DNS and policy path.

Keeping host resolution in the git remote model makes repository routing, sidecar hosts files, and egress behavior feel coupled even when the operator only meant to configure git-gate.

Goals / Success Criteria

  • Git remote manifest parsing no longer stores host override data.
  • Git-gate upstream plans no longer carry host override data.
  • Docker compose rendering no longer emits sidecar extra_hosts entries from git remote declarations.
  • Smolmachines bundle launch planning has no unused host override path for git-gate.
  • Focused unit tests cover the absence of sidecar extra_hosts for git upstreams.
  • Current user-facing documentation no longer advertises git remote host overrides.

Non-goals

  • No replacement hosts-file override feature.
  • No SSH client config provisioning.
  • No change to git-gate's SSH credential or known-host handling.
  • No change to egress DNS, HTTP auth, or pipelock routing semantics.

Design

Remove the host override field from the internal GitEntry and GitGateUpstream models. Remove the git-gate aggregation helper and the Docker compose code that converted those values into sidecar extra_hosts.

The manifest parser does not need a migration-specific error path. After this change, the old hosts override key has no internal model field and no runtime effect.

Testing Strategy

Run:

  • python3 -m unittest discover -s tests/unit

Open Questions

None.