- Separate cache tags because each architecture can replace a shared
registry cache and leave the other platform with little useful reuse.
- Pin `homebrew-core` as a build input so its layer can be reused
across brew-only changes without serving a stale tap after core moves.
- Keep generated Bundler cache files out of the Docker context so local
development artefacts do not bloat or invalidate image builds.
- Cache apt metadata and downloads because package installs are a
stable dependency layer and should not repeat avoidable network work.