Skip to content

chore(proxy): require kamal-proxy v1.0.0.1 (#93 workstream G) - #103

Merged
mhenrixon merged 1 commit into
dashfrom
chore/proxy-v1.0.0.1
Aug 3, 2026
Merged

chore(proxy): require kamal-proxy v1.0.0.1 (#93 workstream G)#103
mhenrixon merged 1 commit into
dashfrom
chore/proxy-v1.0.0.1

Conversation

@mhenrixon

Copy link
Copy Markdown
Collaborator

Summary

The gem side of workstream G: MINIMUM_VERSION moves to v1.0.0.1 (cert-system unification kamal-proxy#84/#85 + disk-backed cache store kamal-proxy#83). v1.0.0.0 must never be the minimum — it carries the unbounded-SNI issuance hole.

  • lib/kamal/configuration/proxy/run.rb: MINIMUM_VERSION = "v1.0.0.1"
  • Flag manifest regenerated from a binary built at the v1.0.0.1 tag (bin/sync-proxy-flags --binary) — the only diff is the version stamp: v1.0.0.1 adds no deploy or run flags, so the coverage canary had nothing new to decide
  • Docs run.version example bumped; setup.sh reads the constant dynamically and needed nothing

Refs #93 (workstream G)

Test plan

  • Unit suite green (1311 runs) — flag canary against the regenerated manifest
  • rubocop clean
  • HOLD until ghcr.io/mhenrixon/kamal-proxy:v1.0.0.1 is published (amd64+arm64) — then bin/test (full integration incl. the E4 port_holder handoff gate) before merging
  • After merge, on dash: bin/release-dash 3.0.0

Deviations & judgment calls

  • Manifest generated from the local tag build, not the published image — the image is still building on Actions. Before merge I'll re-verify with docker buildx imagetools inspect (both arches) and re-run bin/sync-proxy-flags against the pulled image to confirm byte-identical output.
  • The historical comment in proxy_flag_coverage_test.rb mentioning v1.0.0.0 is left as-is — it describes history, not the current minimum.
  • port_holder remains opt-in (the open decision from feat(proxy): port_holder handoff, JSON-verified reboots, LB drift detection (#93 workstream E) #97); the release notes already qualify the zero-downtime claim accordingly. Flipping the default is still a one-liner if you decide before bin/release-dash.

## Summary

The 3.0.0 release train's proxy side is publishing: v1.0.0.1 carries the
certificate-system unification (kamal-proxy#84/#85 - no issuance for a name
nobody asked for) and the disk-backed cache store (kamal-proxy#83).
MINIMUM_VERSION moves to it; v1.0.0.0 must never be the minimum (unbounded
SNI issuance hole).

The flag manifest was regenerated from a binary built at the v1.0.0.1 tag
(bin/sync-proxy-flags --binary): the only change is the version stamp -
v1.0.0.1 adds no deploy or run flags, so the coverage canary had nothing
new to decide. The integration seed (setup.sh) reads the constant
dynamically and needs no edit.

Full bin/test against the published ghcr image (the E4 handoff gate) runs
before bin/release-dash 3.0.0, per the release ordering.

## Verification

- [x] bundle exec rubocop --parallel passes
- [x] unit suite passes (1311 runs) - flag canary green against the
      regenerated manifest

Refs #93 (workstream G)
@mhenrixon
mhenrixon merged commit 8af6f9c into dash Aug 3, 2026
11 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant