Skip to content

Fix review findings before production promotion#181

Merged
peterdrier merged 3 commits intomainfrom
review-fixes
Apr 8, 2026
Merged

Fix review findings before production promotion#181
peterdrier merged 3 commits intomainfrom
review-fixes

Conversation

@peterdrier
Copy link
Copy Markdown
Owner

Summary

  • Reset GoogleEmailStatus on email rename fix so sync resumes (Add admin tool to detect and fix renamed @nobodies.team emails nobodies-collective/Humans#459)
  • Scope GDPR deletion holds to active event tickets only (was matching all-time tickets)
  • Align Finance projection display with MaterializeProjections engine
  • Save per-user atomically in ProcessAccountDeletionsJob (GDPR compliance)
  • Add error handling to TicketingBudgetService and CampAdminController
  • Fix stale doc references and "Member" terminology

Context

Findings from code review of origin/main vs upstream/main before production promotion. Includes both Claude review and Codex adversarial review findings.

Test plan

  • All 950 tests pass
  • Format clean
  • QA: verify email rename tool resets sync status
  • QA: verify Guest deletion hold only applies for current event tickets

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

…handling, docs

- Reset GoogleEmailStatus to Unknown in FixEmailRenameAsync so sync
  resumes after admin fixes a renamed email (nobodies-collective#459)
- Scope deletion event holds to active event tickets via TicketSyncState
  VendorEventId, moved logic from GuestController to ProfileService
- Align FinanceController projection display with MaterializeProjections
  engine by using GetProjectionsAsync instead of manual calculation
- Save per-user atomically in ProcessAccountDeletionsJob to prevent
  partial anonymization on failure (GDPR compliance)
- Add try-catch + logging to TicketingBudgetService and pass
  CancellationToken through to SaveChangesAsync
- Add error handling to 6 CampAdminController actions
- Fix stale doc references: /Admin/SyncSettings → /Google/SyncSettings,
  /Admin/GroupSettingsResults → /Google/GroupSettingsResults, remove
  outdated "CURRENTLY DISABLED" notes
- Fix "Back to Member Detail" → "Back to Human Detail"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

peterdrier and others added 2 commits April 8, 2026 15:51
…e key crash

AddUserToGroupAsync: inspect the 403 error message to distinguish
service-account permission errors (caller lacks group access) from
member-level rejection (no Google account). Only mark GoogleEmailStatus
as Rejected for the latter — permission errors are logged but don't
permanently exclude the user from sync.

ProfileService.GetFilteredHumansAsync: the notification email lookup
used ToDictionaryAsync which crashes on duplicate keys if a user has
multiple verified notification-target emails. Changed to GroupBy + First
to safely handle duplicates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Refunded/cancelled/void tickets for the current event no longer
delay GDPR deletion.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@peterdrier peterdrier merged commit 5dedf9a into main Apr 8, 2026
2 checks passed
@coolify-nuc-humans
Copy link
Copy Markdown

The preview deployment for humans-qa failed. 🔴

Open Build Logs | Open Application Logs

Last updated at: 2026-04-08 14:06:55 CET

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant