Skip to content

docs(secrets): fix the unrunnable SMTP seal recipe blocking #500 - #501

Merged
izzywdev merged 2 commits into
masterfrom
claude/fuzefront-recent-issue-d93963
Aug 2, 2026
Merged

docs(secrets): fix the unrunnable SMTP seal recipe blocking #500#501
izzywdev merged 2 commits into
masterfrom
claude/fuzefront-recent-issue-d93963

Conversation

@izzywdev

@izzywdev izzywdev commented Aug 2, 2026

Copy link
Copy Markdown
Owner

What & why

Issue #500: the prod fuzefront-email-service rollout is wedged in CreateContainerConfigError because SMTP_USER/SMTP_PASS were never sealed into the fuzefront-secrets SealedSecret. Root cause of why they were never sealed: the owner-only go-live recipe in deploy/contabo/SEAL_PROD_SECRETS.md was unrunnable.

The SMTP section used --from-file and --intoneither flag exists in deploy/scripts/seal-secret.sh (it accepts --in / --scope / --manifest). Worse, it omitted --scope fuzefront/fuzefront-secrets, and the script defaults to name=billing-secrets — so even if the flags were valid, the value would have sealed into the wrong secret and never decrypted into fuzefront-secrets. The Twilio recipe immediately below it in the same doc is correct; this aligns SMTP to it.

Changes (doc only — no chart/template change)

  • Fix the seal flags: --from-file/--into--in/--manifest, and add the required --scope fuzefront/fuzefront-secrets.
  • Provider naming: ZohoZeptoMail (values-prod.yaml already sets host: smtp.zeptomail.com; the prose was stale) + accurate "where to get the credentials".
  • Stale cert URL: sealed-secrets.fuzeinfra.fuzefront.comsealed-secrets.prod.fuzefront.com (the script's own comment notes the old host no longer resolves).
  • Go-live step 2: note the host is already set, so sealing the two keys is the only remaining owner action; the wedged ReplicaSet self-heals on next Argo sync (or rollout restart to force it).

What this does NOT do

It does not resolve #500's acceptance criteria. The actual fix — sealing the real ZeptoMail SMTP_USER/SMTP_PASS into deploy/contabo/sealed/fuzefront-secrets.yaml — is owner-only: it needs the real credentials + the sealing cert, and per repo policy (and safety) those values are never handled by an agent, pasted into a PR, or committed in plaintext. This PR makes the owner's one-command path actually work. #500 stays open until the keys are sealed and the pod reaches Running.

Verified: no app code / Helm template changes; the Deployment (email-service.yaml) and values-prod.yaml are already wired correctly.

Refs #500.

Co-Authored-By: Claude claude-opus-4-8 noreply@anthropic.com

)

The go-live recipe for sealing SMTP_USER/SMTP_PASS into fuzefront-secrets
was unrunnable, so the two keys were never sealed and the prod
email-service rollout wedged in CreateContainerConfigError (issue #500).

Fixes:
- seal-secret.sh flags: --from-file/--into do not exist -> --in/--manifest,
  matching the working Twilio recipe in the same doc.
- Add the REQUIRED --scope fuzefront/fuzefront-secrets: the script defaults
  to name=billing-secrets, so without it the value seals into the wrong
  secret and the controller can never decrypt it into fuzefront-secrets.
- Provider: Zoho -> ZeptoMail (values-prod already sets host
  smtp.zeptomail.com; the doc prose was stale).
- Cert URL: sealed-secrets.fuzeinfra.fuzefront.com no longer resolves ->
  sealed-secrets.prod.fuzefront.com (canonical).
- Note that the host is already set, so sealing the two keys is the only
  remaining owner action; the new RS self-heals / restart to force it.

No chart/template change: the Deployment + prod values are already wired
correctly. The actual sealing needs the real ZeptoMail credentials and is
owner-only (never committed/pasted).

Co-Authored-By: Claude claude-opus-4-8 <noreply@anthropic.com>
Claude-Session-Id: 36eb28ad-656a-4cf3-849e-63562ac341f9
@github-actions
github-actions Bot enabled auto-merge (squash) August 2, 2026 16:29
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Automated code review (gate-code-review)

Credit balance is too low

Report-only — this check never blocks merge.

Comment-only. Completes the provider-naming cleanup started in the
SEAL_PROD_SECRETS.md fix — the chart still referenced Zoho/smtp.zoho.com
in three places while prod actually relays through ZeptoMail:
- values.yaml: example host smtp.zoho.com → smtp.zeptomail.com
- email-service.yaml: "relay like Zoho" → "relay like ZeptoMail"
- values-prod.yaml: the host comment claimed "set this ONLY once sealed"
  but the host is already set; reworded to state the keys must be sealed
  (setting the host before sealing them is what wedged the #500 rollout).

No rendered-manifest change (comments only). Also re-triggers the
push-only Stranded-branch detector, which now early-exits green because
PR #501 already exists (its prior red was a push-before-PR race).

Co-Authored-By: Claude claude-opus-4-8 <noreply@anthropic.com>
Claude-Session-Id: 36eb28ad-656a-4cf3-849e-63562ac341f9
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Automated code review (gate-code-review)

Credit balance is too low

Report-only — this check never blocks merge.

@izzywdev
izzywdev merged commit 34ee8be into master Aug 2, 2026
53 checks passed
@izzywdev
izzywdev deleted the claude/fuzefront-recent-issue-d93963 branch August 2, 2026 17:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merge Enable squash auto-merge once CI passes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

prod: email-service rollout wedged — SMTP_USER/SMTP_PASS missing from fuzefront-secrets SealedSecret

1 participant