docs(teams): phase 6 as built — four deviations and a ninth contract member #159

Merged
whitlocktech merged 1 commits from docs/teams-phase6 into edge 2026-08-18 23:09:42 +00:00
Member

Documents Teams phase 6. Into edge. Companion PRs: website#156 and Module-uo#13.

Note added after merge: an earlier edit to this description mentioned a Phase 11 addition. That commit was pushed after you merged this PR and is not in it — it moved to docs#160. This description now says only what actually landed here.

TEAMS.md

Part 6 gains an as-built header rather than a rewrite, so the reasoning that produced the original design stays legible beside what the build learned. Four deviations:

  1. There was no web notification settings screen to add the Team list to. §6.3 assumed one; /auth/me/notifications/* was built for the app in M7 and had zero web consumers. Survivable for push, not for a sink whose whole argument is the web-only user.
  2. Email defaults to off, not digest (org lead) — digest-by-default would start mailing every member of every Team the moment an operator connects Gmail. Push stays opt-out, so the two sinks now default opposite ways.
  3. Roster events tickle but do not email.
  4. A ninth member joined MODULE_API 1.6.0.

§6.3 and §6.4 gain the as-built detail in place: the schema, the two surfaces, the compute-at-send-time digest and its clamps, and the stateless-HMAC unsubscribe with its two non-interchangeable URLs.

Phase 12's Phase 6 entry is marked done and corrected to two reposmodule-uo joined for two lines core cannot supply.

MODULE_API.md

pageUrlTemplate documented as the team provider's optional fifth member. It joins 1.6.0 in place under the rule set in phase 2 — a contract owes a bump only once it has landed on main, and 1.6.0 has only ever been on edge. §3.7a now shows three declared slots and says why the module wants them separate.

BACKEND_DESIGN.md

team_notification_prefs, the two /auth/me/notifications/teams routes, and the unsubscribe endpoint — the only write in the public tier and the only route with no siteMode, because the mail went out before the site went into maintenance.


AI-assisted: written with Claude Code.

🤖 Generated with Claude Code

Documents Teams phase 6. Into `edge`. Companion PRs: **website#156** and **Module-uo#13**. > **Note added after merge:** an earlier edit to this description mentioned a Phase 11 addition. That commit was pushed after you merged this PR and is **not** in it — it moved to **docs#160**. This description now says only what actually landed here. ## `TEAMS.md` Part 6 gains an **as-built header rather than a rewrite**, so the reasoning that produced the original design stays legible beside what the build learned. Four deviations: 1. **There was no web notification settings screen** to add the Team list to. §6.3 assumed one; `/auth/me/notifications/*` was built for the app in M7 and had zero web consumers. Survivable for push, not for a sink whose whole argument is the web-only user. 2. **Email defaults to `off`, not `digest`** (org lead) — digest-by-default would start mailing every member of every Team the moment an operator connects Gmail. Push stays opt-out, so the two sinks now default opposite ways. 3. **Roster events tickle but do not email.** 4. **A ninth member joined MODULE_API 1.6.0.** §6.3 and §6.4 gain the as-built detail in place: the schema, the two surfaces, the compute-at-send-time digest and its clamps, and the stateless-HMAC unsubscribe with its two non-interchangeable URLs. Phase 12's Phase 6 entry is marked done and corrected to **two repos** — `module-uo` joined for two lines core cannot supply. ## `MODULE_API.md` `pageUrlTemplate` documented as the team provider's optional fifth member. It joins **1.6.0 in place** under the rule set in phase 2 — *a contract owes a bump only once it has landed on `main`*, and 1.6.0 has only ever been on `edge`. §3.7a now shows three declared slots and says why the module wants them separate. ## `BACKEND_DESIGN.md` `team_notification_prefs`, the two `/auth/me/notifications/teams` routes, and the unsubscribe endpoint — the only write in the public tier and the only route with no `siteMode`, because the mail went out before the site went into maintenance. --- AI-assisted: written with Claude Code. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
wtclaude added 1 commit 2026-08-18 23:03:35 +00:00
Part 6 gains an as-built header rather than a rewrite, so the reasoning that
produced the original design stays legible beside what the build learned.

Four deviations. There was no web notification settings screen to add the Team
list to — `/auth/me/notifications/*` was built for the app in M7 and had zero web
consumers, which is survivable for push and not for a sink whose whole argument is
the web-only user. Email defaults to `off` rather than `digest`, on the org lead's
call: digest-by-default would start mailing every member of every Team the moment
an operator connects Gmail. Roster events tickle but do not email. And a ninth
member joined MODULE_API 1.6.0.

`pageUrlTemplate` is the member, and it exists because phase 3 left core with no
Team page and therefore no way to link to one. It joins 1.6.0 in place under the
rule set in phase 2 — a contract owes a bump only once it has landed on `main`,
and 1.6.0 has only ever been on `edge`.

Two further build decisions are recorded where they belong: the digest computes at
send time and keeps no queue (§6.4), and one-click unsubscribe is a stateless HMAC
whose whole capability is muting one (user, Team) pair (§6.4).

BACKEND_DESIGN gains the table, the two `/auth/me` routes and the unsubscribe
endpoint — the only write in the public tier and the only route with no `siteMode`,
because the mail went out before the site went into maintenance.

Co-Authored-By: Claude <noreply@anthropic.com>
whitlocktech merged commit 703f0dbe67 into edge 2026-08-18 23:09:42 +00:00
whitlocktech deleted branch docs/teams-phase6 2026-08-18 23:09:42 +00:00
wtclaude changed title from docs(teams): phase 6 as built — four deviations and a ninth contract member to docs(teams): phase 6 as built, and the integration kit queued as phase 11 2026-08-18 23:17:57 +00:00
wtclaude changed title from docs(teams): phase 6 as built, and the integration kit queued as phase 11 to docs(teams): phase 6 as built — four deviations and a ninth contract member 2026-08-18 23:18:51 +00:00
Sign in to join this conversation.
No description provided.