feat(helm): postgres control-plane profile — ADR 0010 slice 6 (E4)#149
Merged
Conversation
Release the render-gate ratchet so the chart can express the multi-replica
scale profile. The app-side PostgresControlPlaneStore shipped in slice 5;
this wires the chart half.
- values.schema.json: controlPlane.store enum embedded → [embedded, postgres];
new controlPlane.postgres.{existingSecret,dsnKey} (DSN via operator secret,
mirroring the ClickHouse password — never inlined).
- values.yaml: controlPlane.postgres defaults + updated gate comment.
- deployment.yaml: wire AGENTFLOW_CONTROLPLANE_STORE (always, self-documenting)
+ AGENTFLOW_CONTROLPLANE_PG_DSN from secretKeyRef when store=postgres, with a
required() on existingSecret (fail-closed, no silent embedded fallback).
- tests: ratchet test updated for the extended enum; new render tests cover the
postgres env/DSN wiring, gate release for multi-replica + HPA, missing-DSN
failure, and the still-gated duckdb-backend case.
- k8s/staging/values-staging-scale.yaml.example: ready scale overlay
(replicaCount=2, clickhouse + postgres) layered on values-staging.yaml.
- scripts/k8s_replica_correctness_verify.sh: automates the pod-count + cross-pod
registration-visibility checks (Phase 3); bash -n only (Docker/kind unavailable
on the authoring host).
- docs: cutover-plan Phase 3 checkboxes + verify recipe, helm-deployment scale
section, ADR 0010 rollout item 6 execution note.
Render side verified: helm template/lint (6 cases), test_helm_values_contract.py
(18 passed), full unit suite 1626 passed, ruff/format clean. The two-real-pods
live run (kind replicaCount=2 + exactly-one-delivery / one-page-per-incident /
cross-pod visibility) is the deferred Mac/CI tail; its store-level guarantee is
already live-verified by slice 5's 31/31 standalone-PG probes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
DORA Metrics
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
E4 / ADR 0010 rollout slice 6 — the Helm half of the control-plane
externalization. The app-side
PostgresControlPlaneStoreshipped in slice 5;this releases the render-gate ratchet so the chart can express the multi-replica
scale profile.
Changes
values.schema.json—controlPlane.storeenum["embedded"]→["embedded", "postgres"]; newcontrolPlane.postgres.{existingSecret,dsnKey}(DSN sourced from an operator secret, mirroring the ClickHouse password — never
inlined).
values.yaml—controlPlane.postgresdefaults + updated gate comment.templates/deployment.yaml— wireAGENTFLOW_CONTROLPLANE_STORE(always,self-documenting) +
AGENTFLOW_CONTROLPLANE_PG_DSNfrom asecretKeyRefwhenstore=postgres, withrequired()onexistingSecret(fail-closed; no silentembedded fallback).
the postgres env/DSN wiring, gate release for multi-replica + HPA, missing-DSN
failure, and the still-gated duckdb-backend case.
k8s/staging/values-staging-scale.yaml.example— ready scale overlay(
replicaCount=2, clickhouse + postgres) layered onvalues-staging.yaml.scripts/k8s_replica_correctness_verify.sh— automates the pod-count +cross-pod registration-visibility checks (Phase 3).
bash -nonly.scale section, ADR 0010 rollout item 6 execution note.
Verification
helm template(6 profiles) +helm lint(base + scale overlay) — clean.tests/unit/test_helm_values_contract.py— 18 passed.ruff check(src/tests/scripts) +ruff format --checkclean. (mypyCI scope issrc/only — nosrc/touched.)Deferred (Mac/CI tail)
The two-real-pods live run — kind at
replicaCount=2plus the ADR 0010replica-correctness checks (exactly-one delivery per (webhook,event), one alert
page per incident, cross-pod registration visibility) — needs Docker/kind,
unavailable on the authoring host. Its store-level guarantee is already
live-verified by slice 5's 31/31 standalone-PostgreSQL probes; Phase 3 adds only
the topology proof. Recipe + overlay + verify script are in this PR.
🤖 Generated with Claude Code