fix(sense): tighten contamination guard + clamp attendee roles outside meetings
Sprint 4 cleanup 1 (req_myu5gwm7 Lode 4xvyyikt). Previously
merged via hopper but blocked by known refine-stage stuck-lode
false-positive; applied manually from the lode worktree.
Path A — talent/sense.md: contamination guard now explicitly ties
role: attendee to meeting_detected: true for the same segment.
When meeting_detected: false, every Person must be role: mentioned
even if they spoke, were quoted, or referenced in transcript
(closes podcast / press conference / lecture leak).
Path B — talent/participation.py: post-processor clamps attendee
to mentioned when no contributing sense segment had
meeting_detected: true. Defensive net catching any Path A prompt
leakage. Logs at warning level with count + activity id for
observability.
Tests: 3 new cases in test_sense_contamination_guard.py covering
clamp positive (podcast with speakers → all mentioned), negative
pass-through (real meeting unchanged), idempotence + logging.
make test: 3254 passed, 1 skipped.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>