You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add PII-gated registration lookup/counts, reasoned correct/cancel/reactivate commands, formula-safe export, bounded attendance import/marking, asynchronous resumable/idempotent reschedule/cancellation/reminder/follow-up operations, ICS update/cancel sequence, preview/count/confirmation, progress/results, and full Studio/admin API parity/audit.
#111 adds a separate, dedicated named-sponsor opt-in export. It is scoped to one event/sponsor/statement version and contains only affirmative current email-share evidence plus the minimum audit columns; ordinary registration exports and answers never imply sponsor consent. #112 adds provider-neutral historical aggregate import, exact mapping/reconciliation, and public total operations without importing legacy attendee rows.
Public-attendee boundary
No management lookup or export becomes public. Public event pages unconditionally expose no attendee identity, card, name, initial, avatar, profile, directory, search, list, or export. #112 alone may expose the non-identifying exact aggregate N registered total after completeness/reconciliation succeeds. Imported source data, native identities, attendance state, marketing values, and ordinary answers remain private.
Non-goals
No marketing campaign, generic newsletter export/question, public attendee identity/directory/full list, unbounded synchronous send/export, or physical deletion of events/registrations with history.
Acceptance criteria
Event change operation snapshots audience/revision, increments calendar sequence, and creates exactly one correct update/cancel delivery per active registration.
Bulk work is resumable/idempotent/rate-aware, supports documented cancellation, and exposes per-row safe errors/counts.
PII/export/attendance/change permissions are distinct; support role sees masked data by default.
CSV prevents spreadsheet formula execution and export/PII access is audited.
Event with no/one/many registrations and already-cancelled/no-show states.
Sponsor export missing/negative/affirmative/revoked/stale evidence and public-total zero/one/many/incomplete/historical-native-replacement cases; prove no public identity or full-list path.
Playwright
In Studio inspect masked/full registration views by role, preview/export/attendance import, start/resume change operation, inspect progress/results, confirm/cancel, and capture desktop/mobile screenshots. #111 owns sponsor export; #112 owns aggregate mapping/import/reconciliation and count-only public output with the same parity/redaction boundary.
Dependencies
Depends on #28, #32, #33, #45, #46, and #49–#50. Sponsor-export integration depends on #111. #112 aggregate ingestion may proceed against #105's accepted checked event identity; native-count integration consumes this issue's protected registration operations when available without blocking the aggregate slice.
Parent epic: #6
Normative spec: 05 — Event changes and Studio/API capabilities
Scope
Add PII-gated registration lookup/counts, reasoned correct/cancel/reactivate commands, formula-safe export, bounded attendance import/marking, asynchronous resumable/idempotent reschedule/cancellation/reminder/follow-up operations, ICS update/cancel sequence, preview/count/confirmation, progress/results, and full Studio/admin API parity/audit.
#111 adds a separate, dedicated named-sponsor opt-in export. It is scoped to one event/sponsor/statement version and contains only affirmative current email-share evidence plus the minimum audit columns; ordinary registration exports and answers never imply sponsor consent. #112 adds provider-neutral historical aggregate import, exact mapping/reconciliation, and public total operations without importing legacy attendee rows.
Public-attendee boundary
No management lookup or export becomes public. Public event pages unconditionally expose no attendee identity, card, name, initial, avatar, profile, directory, search, list, or export. #112 alone may expose the non-identifying exact aggregate
N registeredtotal after completeness/reconciliation succeeds. Imported source data, native identities, attendance state, marketing values, and ordinary answers remain private.Non-goals
No marketing campaign, generic newsletter export/question, public attendee identity/directory/full list, unbounded synchronous send/export, or physical deletion of events/registrations with history.
Acceptance criteria
Test scenarios
Playwright
In Studio inspect masked/full registration views by role, preview/export/attendance import, start/resume change operation, inspect progress/results, confirm/cancel, and capture desktop/mobile screenshots. #111 owns sponsor export; #112 owns aggregate mapping/import/reconciliation and count-only public output with the same parity/redaction boundary.
Dependencies
Depends on #28, #32, #33, #45, #46, and #49–#50. Sponsor-export integration depends on #111. #112 aggregate ingestion may proceed against #105's accepted checked event identity; native-count integration consumes this issue's protected registration operations when available without blocking the aggregate slice.