What is missing
FountainBrokerCAInstallFailureRate shipped in the portable rules (#1958), but
the hosted instance does not read that file. deploy/k8s/kustomization.yaml
keeps prometheusrule.yaml commented out, and
jhgaylor/home-cloud at platform/fountain-site/prometheusrule.yaml is a
hand-maintained copy of the rules rather than a reference to the portable
one. Until that copy gains the rule, the alert exists in the repository and
fires nowhere.
This matters more than usual here: the alert is ask 3 of #1671, and ask 1
(why CA installs regressed 0 -> 18% on 2026-09-06) is the one that needs the
signal in production to make progress.
The drift is not new
Diffing the two files today, three portable rules were already never copied
across:
FountainReattachFailures
FountainTurnFailureRate
FountainTurnFirstOutputSlow
FountainBrokerCAInstallFailureRate becomes the fourth. The observability
guide already warns that "the hosted overlay requires its own rollout; a merge
of this file does not update it", so nothing is behaving unexpectedly; there is
just no gate that notices when the two drift apart.
Asks
- Add
FountainBrokerCAInstallFailureRate to
platform/fountain-site/prometheusrule.yaml in jhgaylor/home-cloud and
roll it out. Do this after the metric is actually being scraped in
production, so the rule is not evaluating an absent series.
- Decide whether the other three belong in the overlay, or whether they were
deliberately left out.
- Consider a check that diffs portable alert names against the overlay's, in
whichever repo can see both. The docs table already has a name-parity test
(Fountain.DocsTest, "the portable alert table matches the shipped rule
names") and this is the same shape one level out.
Verifying
The metric only exists once the image carrying #1957 is running. Confirm the
series is present before adding the rule:
fountain_broker_ca_install_count{namespace="fountain"}
What is missing
FountainBrokerCAInstallFailureRateshipped in the portable rules (#1958), butthe hosted instance does not read that file.
deploy/k8s/kustomization.yamlkeeps
prometheusrule.yamlcommented out, andjhgaylor/home-cloudatplatform/fountain-site/prometheusrule.yamlis ahand-maintained copy of the rules rather than a reference to the portable
one. Until that copy gains the rule, the alert exists in the repository and
fires nowhere.
This matters more than usual here: the alert is ask 3 of #1671, and ask 1
(why CA installs regressed 0 -> 18% on 2026-09-06) is the one that needs the
signal in production to make progress.
The drift is not new
Diffing the two files today, three portable rules were already never copied
across:
FountainReattachFailuresFountainTurnFailureRateFountainTurnFirstOutputSlowFountainBrokerCAInstallFailureRatebecomes the fourth. The observabilityguide already warns that "the hosted overlay requires its own rollout; a merge
of this file does not update it", so nothing is behaving unexpectedly; there is
just no gate that notices when the two drift apart.
Asks
FountainBrokerCAInstallFailureRatetoplatform/fountain-site/prometheusrule.yamlinjhgaylor/home-cloudandroll it out. Do this after the metric is actually being scraped in
production, so the rule is not evaluating an absent series.
deliberately left out.
whichever repo can see both. The docs table already has a name-parity test
(
Fountain.DocsTest, "the portable alert table matches the shipped rulenames") and this is the same shape one level out.
Verifying
The metric only exists once the image carrying #1957 is running. Confirm the
series is present before adding the rule: