docs(website): §7 rewritten for SMTP, plus an upgrade-notes home #178
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/engagement-phase-1"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
Engagement Phase 1's documentation — §6.0b row 1's
docs/column. Companion to website#165 (and runicgateway.com#21); land together.website/BACKEND_DESIGN.md§7 — rewritten, not amendedThe plan is explicit that this section has to be replaced: it documented Gmail OAuth2 as the mechanism, so amending it would leave the shape of the old design behind. §7 now covers the transport registry and why
credentialFieldsis one declaration three consumers read; the credential blob and its fail-safe decrypt; the no-phone-home rule and its CI guardrail; the three SMTP postures as a table (relay first, per §7.1 Q5); why Send test is the only verification left now that the sender is operator-typed; the five failure contracts in one place; and the silent upgrade.Corrected alongside it: the §2 tree (
email.router.jsis 4 routes, andmailer.jsis no longer "if SMTP unset"), the PR-4 route-count note, the/contactrow, and the/dashboardrow — which now returnswarnings[].website/UPGRADE_NOTES.md— new, and not just for this phasePhases 1b, 6, 10 and 13 each owe an operator release note too, and
website/has no CHANGELOG and cuts no Gitea releases, so there was nowhere for one to go. This is that home: newest first, one entry per upgrade that needs an operator to act.Scoped deliberately. Most upgrades need nothing — the schema replays on every boot — so an entry is not a changelog line. The entries worth writing are the ones that fail quietly, which is precisely what the Gmail removal does: mail stops, nothing errors, and the only signal is a dashboard warning. The first entry says what changed, the exact settings for each of the three postures, the two fields that cause most failures, what happens if you do nothing, and what happens to the stored token.
Linked from the repo README's
website/index.website/ENGAGEMENT.md— Phase 1 marked built, with what differedAn "as built" block under Phase 1, recording four things that are not what the plan above it says:
registerDeliveryChannelhas no consumer until Phase 4, and a registered channel nothing calls is a shape frozen before anything tried to use it.enablednow gates every sender, which it did not before — the direct senders bypassed the toggle entirely. A deliberate behaviour change, and the only one in the phase.refresh_token_encstays unread as configuration, but its presence is exactly "this deployment had working mail before the upgrade".npm run swaggerhad to be fixed first (website#164). The "per-file route limit" that phases 8 and 9 recorded does not exist — the real rule is that nothing reaching.test(may sit inside a route statement. That matters to every later phase in this workstream, all of which add routes, which is why it is written down here and not only in the fix.The status line at the top now says Phase 1 is built and everything from 1b on is still design.
How it was tested
Markdown only. Every relative link in the new and changed files resolves; the
UPGRADE_NOTES.mdrow was added to the README index and the reciprocal link from §7 checked by hand.Checklist
AI-assisted contributions (required)
Claude Code. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with aCo-Authored-Bytrailer.License