inbox-smoke: assert the mail.key.store JMAP host and give the unit gawk #14

Merged
founder merged 1 commit from fix-inbox-smoke-jmap-host-and-gawk into main 2026-07-26 11:20:55 +00:00
Owner

deploy-forge-host has been failing at the post-deploy smoke check. Two independent bugs, neither caused by the deploy — the switch applied cleanly both times (generation 346 is live).

  1. The unit's path omitted gawk, but inbox-smoke.sh uses awk to read the CSRF token from the Authentik cookie jar and the Location header off the authorize response. Both silently returned empty, so the check blamed Authentik ("did not return a code redirect") while Authentik was healthy.
  2. With awk restored, the real failure appeared: the script asserted https://inbox.key.store/jmap/, but Stalwart advertises https://mail.key.store/jmap/ since the inbox→mail JMAP cutover. Line 32 was already updated for that move; these were missed.

The assertion was a bare jq -e with no message, so under set -e it exited 1 with no output — which is what made it expensive to diagnose. It now explains itself.

Verified on the live forge: inbox-smoke.sh exits 0, inbox smoke passed.

🤖 Generated with Claude Code

`deploy-forge-host` has been failing at the post-deploy smoke check. Two independent bugs, neither caused by the deploy — the switch applied cleanly both times (generation 346 is live). 1. The unit's `path` omitted **gawk**, but `inbox-smoke.sh` uses awk to read the CSRF token from the Authentik cookie jar and the `Location` header off the authorize response. Both silently returned empty, so the check blamed Authentik ("did not return a code redirect") while Authentik was healthy. 2. With awk restored, the real failure appeared: the script asserted `https://inbox.key.store/jmap/`, but Stalwart advertises `https://mail.key.store/jmap/` since the inbox→mail JMAP cutover. Line 32 was already updated for that move; these were missed. The assertion was a bare `jq -e` with no message, so under `set -e` it exited 1 with **no output** — which is what made it expensive to diagnose. It now explains itself. Verified on the live forge: `inbox-smoke.sh` exits 0, `inbox smoke passed`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
inbox-smoke: assert the mail.key.store JMAP host and give the unit gawk
All checks were successful
Namespace: Build Images / Refresh macOS runner lane (push) Successful in 6s
Release: If Needed / Check (Release Needed) (push) Successful in 6s
Namespace: Build Images / Refresh Linux runner image (push) Successful in 1m45s
Deploy: API / Deploy (API) (push) Successful in 3m11s
Deploy: Web / Deploy (Web) (push) Successful in 6m23s
cbac8703e4
deploy-forge-host has been failing at the post-deploy smoke check. Two
independent bugs, neither caused by the deploy itself — the switch applied
cleanly both times.

The unit's `path` omitted gawk, but inbox-smoke.sh uses awk to pull the CSRF
token out of the Authentik cookie jar and the Location header off the authorize
response. Both reads silently produced empty strings, so the check reported
"Authentik OAuth authorize endpoint did not return a code redirect" — pointing
at Authentik, which was healthy the whole time.

With awk restored the real failure surfaced: the script still asserted
`https://inbox.key.store/jmap/`, but Stalwart advertises
`https://mail.key.store/jmap/` since the inbox -> mail JMAP cutover. Line 32
had already been updated for that move; these assertions were missed. The
assertion was a bare `jq -e` with no message, so under `set -e` it exited 1
with no output at all, which is what made this expensive to diagnose.

Route the expected API host through one `jmap_api_base` variable (discovery
still lives on inbox.key.store) and make the assertion explain itself when it
fails.

Verified against the live forge: inbox-smoke.sh now exits 0, "inbox smoke passed".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
key-store/key.store!14
No description provided.