CR-01: eventFieldsSchema aligned to canonical title/start/end (PWA contract) CR-06: resolveUserId async with upsertUser on all 5 write handlers 19 tests pass; tsc clean
CR-01: eventFieldsSchema aligned to canonical title/start/end (PWA contract) CR-06: resolveUserId async with upsertUser on all 5 write handlers 19 tests pass; tsc clean