docs(engagement): scope Phase 11 — six decisions, three carve-outs, the 11a/11b split #194

Merged
whitlocktech merged 1 commits from docs/engagement-phase-11-decisions into edge 2026-09-01 05:05:41 +00:00

1 Commits

Author SHA1 Message Date
77c615bc69 docs(engagement): scope Phase 11 — six decisions, three carve-outs, the 11a/11b split
Phase 11 was widened on 2026-08-31 to ship every  row of §8.6 rather than a
single rule, and the phase text asked for its 11a/11b split to be confirmed with
the org lead before any code. Confirming it turned up five further questions the
plan had not asked, three of which change what ships — so this records all six
before implementation starts, on Phase 2's precedent.

The three carve-outs all came from checking §8.6's rows against what the WEBSITE
can address rather than against what the wire carries:

  • uo.guild.joined duplicates core's team.member.joined — a UO guild IS a Team
    and teamSync already emits on every roster reconcile, so an operator who
    enables the obvious two rules gets two mails for one join. `left` and
    `disbanded` still ship; core has no equivalent for either.
  • uo.link.requested has no addressable recipient by construction (the account
    is not yet linked) and a ~5-minute TTL no channel can beat.
  • uo.points.rank_changed ships `subscribers` only: points.board's top[] names
    a mobile serial and shard_account_links is keyed by account, so the personal
    half would reach some players and silently not others.

The other three:

  • The lattice gains `admin`, as a child of `staff` — the operator-facing family
    is described as admin-audience everywhere and `staff` is admin/editor/
    moderator, so ceilinging it there would mail the staff audit digest to every
    editor. It is the only genuine refinement in the tree, so permits/meet/
    meetAll are untouched. MODULE_API_VERSION → 1.8.0.
  • §7.1 Q9 (news.post continuity): the emit REPLACES the raw tickle and core
    seeds the rule disabled — the Phase 6 precedent. News push stops on upgrade;
    the admin banner and the release note are the mitigations, and both are named
    as phase deliverables.
  • The split is confirmed and specified: 11a is declarations/mappings/ceilings,
    server only, no rule or template seeded; 11b is the seeded set and the live
    walk.

Also records the threshold-trigger mechanism uo.vendor.expiring and
uo.economy.milestone need — rule conditions compare against literals only, so
"within 24 hours of dismissal" is not expressible as a condition and the crossing
is tracked module-side — and names module-uo's first three registered audiences.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-31 19:47:05 -05:00