refactor(activities): single-pass schedule talent emits anticipated activity records master
Replaces the schedule 2-pass flow (markdown → anticipation post-hook re-extracts JSON) with a single-pass JSON-output talent processed by a new schedule post-hook that writes activity records with source: "anticipated" directly to facets/{facet}/activities/{target_date}.jsonl. Key changes: - New talent/schedule.py post-hook parses JSON result, validates per-item, and writes via append_activity_record (atomic fcntl-locked dedup by stable ID). - New dedup_anticipation helper + ANTICIPATION_FUZZY_THRESHOLD (0.85) in think/activities.py supersedes pending rows whose title drifted between runs. - Cancelled calendar events captured with cancelled: true and hidden: true. - Home today-card merges anticipated activities into events and suppresses them from the recent-activity strip to avoid double display. - activities list gains --source {anticipated,user,cogitate} filter. - Sweep replaces 16 stale sol call calendar references across talents, skills, and routine templates with sol call activities list equivalents. - Deletes talent/anticipation.{md,py}; removes anticipation from settings extraction-exposure tuples; updates fixtures, docs, and API baselines. Closes Sprint 3 of the schedule→activities refactor (req_hfwtzduq). Parallel investigation of the schedule dup-bomb (req_b46jht3a) is closed by the structural fix (atomic ID-dedup under fcntl lock). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>