Files
docs/website
wtclaude cff73ad863 docs(engagement): the Phase 13 acceptance walk, and the two defects it found
The walk ran and PASSED. Released artefacts only: the released installer,
checksum-verified, resolving bundle 2026.09.01; the overlay compiled against
stock ServUO 57.4 with zero errors; a fresh `main` clone of website with
module-uo v1.1.0 installed from its release manifest rather than copied in.
Forcing a house to Greatly produced exactly one email and one in-app item to the
linked owner and nothing to anyone else -- every row in every delivery table
names that one user.

Two defects, both in shipped core, neither visible to any test:

  * `seedRuleGroup()` reads its settings stamp, inserts the whole group, and
    writes the stamp AFTER the loop. Two processes booting in the same moment
    both read "not seeded" and both insert -- 52 UO rules where the module ships
    26, under one stamp. The function's own comment names the cost: a duplicate
    rule is two mails per event. A `--scale app=2` or a rolling restart does this
    on purpose.
  * `checkSeedRule` permits a `digest` template key in as many words, and
    sixteen in-universe UO rules ship one; `engagementRules.model.js` then
    rejects any templateKeys entry that is not one of the rule's channels. So an
    operator who opens "House - decay warning" and presses Save gets a 400
    naming a key they never typed, and the only way to save is to delete the
    digest body.

Neither is fixed here -- this PR documents a cutover, and a core change belongs
in its own.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-01 13:47:46 -05:00
..