activity_state cold-start fix: default vocabulary + always_on meeting + post-hook validation
Three changes from CPO design opinion (activity-state-cold-start-design):
1. Mark meeting as always_on in DEFAULT_ACTIVITIES — meetings are as
universal as email and messaging, auto-included for any facet.
2. Return all 16 defaults when no activities.jsonl exists — gives
unconfigured facets full detection vocabulary out of the box.
Once a user configures explicit activities, those take over.
3. Validate activity IDs in post_process() — drops LLM output entries
whose activity field doesn't match the configured vocabulary,
preventing hallucinated activity types (e.g., facet name used as
activity ID) from polluting data. Logs warning on drops.
Also fixes add_activity_to_facet to check raw JSONL (not merged
defaults) when detecting duplicates, so adding activities still works
correctly with the cold-start default vocabulary.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>