storytellers: write onto activity record; add commitments/closures/decisions
Consolidate the three storytelling talents (conversation/work/event) onto
the activity record instead of a separate facets/*/spans/*.jsonl sink.
Each talent now emits story (body + topics + confidence) plus structured
commitments, closures, and decisions; the new talent/story.py hook merges
these onto the activity record via a dedicated writer in think/activities.py
(merge_story_fields), atomically under one file lock with a single edits[]
entry per merge.
- delete talent/spans.py, think/spans.py, and their tests
- drop the facets/*/spans/*.jsonl formatter entry
- storytellers run at priority 20 so they serialize after participation (10),
relying on existing priority-group dispatch rather than new locking
- format_activities renders story body + topics so FTS coverage moves onto
the activity record formatter
- owner/counterparty fuzzy-resolve to *_entity_id via find_matching_entity;
originals preserved, null on miss
- closures with non-vocab resolution dropped per-entry
- hook returns "" to suppress the generator JSON artifact
Unblocks the Ledger consumer surface without any back-compat shims or
historical backfill.