Gap
specs/behaviors/help-wanted-roles.md and specs/api/projects-help-wanted.md describe notifications going out when someone expresses interest in a help-wanted role.
Today: LoggingNotifier is a no-op stub that logs the intended notification and returns delivered: true without actually sending anything. Users expressing interest never trigger a real message to the role's contacts.
Scope (decision-required)
A single notifier interface, one implementation. Pick one:
- Email-only (likely simplest first cut) — SMTP via an existing provider (mailgun/postmark/SES). Person record's email comes from the private profile bucket.
- Slack DM — uses the existing SAML IdP credential trust to map Person → Slack user; sends DM via Slack Web API. No email leakage.
- Both — email is fallback when Slack DM fails or recipient doesn't have a linked Slack account.
Pre-implementation decision needs an owner-call on:
- Which channel(s)
- Where credentials live (sealed secret in cluster repo)
- Templating shape (a few hardcoded templates is fine; no full templating engine needed)
Test plan
- Unit: notifier interface contract; mock impl
- Integration: real notification delivery against a sandbox inbox / sandbox Slack channel before cutover
Why this matters at cutover
Help-wanted-roles is in the v1 surface. Silent acceptance with no follow-up message is a noticeably worse UX than the current laddr workflow (which does email out).
Gap
specs/behaviors/help-wanted-roles.mdandspecs/api/projects-help-wanted.mddescribe notifications going out when someone expresses interest in a help-wanted role.Today:
LoggingNotifieris a no-op stub that logs the intended notification and returnsdelivered: truewithout actually sending anything. Users expressing interest never trigger a real message to the role's contacts.Scope (decision-required)
A single notifier interface, one implementation. Pick one:
Pre-implementation decision needs an owner-call on:
Test plan
Why this matters at cutover
Help-wanted-roles is in the v1 surface. Silent acceptance with no follow-up message is a noticeably worse UX than the current laddr workflow (which does email out).