records = {
'R1': ('U1','A','interview'), 'R2': ('U1','A','follow-up'),
'R3': ('U2','A','interview+contextual observation'), 'R4': ('U2','A','same-session transcript'),
'R5': ('U3','B','interview'), 'R6': ('U4','C','prompted prototype click'),
'R7': ('U5','C','interview'), 'R8': ('U6','D','interview'), 'R9': ('U7','E','interview')}
participants = {}
for rid, (uid, org, mode) in records.items():
    participants.setdefault(uid, {'org': org, 'records': []})['records'].append(rid)
print('records', len(records), 'independent_participants', len(participants),
      'organizations', len({v['org'] for v in participants.values()}))
print('mapping', '; '.join(f"{u}/{v['org']}:{','.join(v['records'])}"
      for u,v in participants.items()))
