Step 1: simulate signup (creates investor row) ✓ signup wrote 0 activity_log rows (logging deferred to meeting) Step 2: simulate meeting booking + consolidated log write ✓ global activity_logs delta = 1 (was 1098, now 1099) ✓ row.subject = the investor (admins see it on the investor detail page) ✓ row.action = signup_completed (lifecycle name preserved) ✓ row.module = investor_signup ✓ meta has subject + meeting + context envelopes ✓ meta.subject.attributes.email matches ✓ meta.subject.attributes.phone_number matches ✓ meta.subject.attributes.investor_bio matches ✓ meta.subject.sectors[] present (investor-side pivots included) ✓ meta.meeting.booking_id matches ✓ meta.meeting.staff_id matches ✓ meta.meeting.blocked_staff[] decoded as array (2 entries) ✓ meta.meeting.duration_minutes = 30 ✓ meta.meeting.slot_start composed correctly from date + time ✓ meta.context carries staff routing data ✓ row.description summarises both subject + meeting Cleanup… ──────────────────────────────────────── PASSED: 17 FAILED: 0