The latest commit addresses this — the refactor is larger as requested:
Manifest.resolve/from_md_dirsnow only scans filenames; no file content is read at that pointall_agent_names…
Agreed, this is too bespoke. The clean version is a per-name shallow merge — git-gate.repos is already { <name>: <entry> } in the raw manifest, so:
7a124d7 — flipped the branches: gitea is now the explicit if, static falls through as the default.
6f0e5b4 — extracted _resolve_identity_file(entry, slug, stage_dir) which returns entry.IdentityFile for static and calls _provision_dynamic_key for gitea. The prepare loop now unconditionall…
Done — extracted _resolve_identity_file(entry, slug, stage_dir) which returns entry.IdentityFile for static and calls _provision_dynamic_key for gitea. The prepare loop now unconditionally replaces identity_file via the helper. 6f0e5b458949a204bc0e915e51b63f5ed0092aaf
Implemented in PR #170 (merged 2026-06-03). See also PRD 0048 at docs/prds/0048-ssh-deploy-key-provisioning.md and the implementation at bot_bottle/contrib/gitea/deploy_key_provisioner.py.
Spike findings
What Docker is actually used for
Docker touches five distinct things in the smolmachines path:
Current TSI + egress-proxy state:
- The smolmachines launch path no longer relies on broad host loopback passthrough. It publishes the egress sidecar on a per-bottle 127.x loopback alias and…