think/detect_transcript: schema-constrain segment + json calls; restructure json wrapper
Add Draft 2020-12 schemas for transcript segmentation and transcript JSON normalization, with `$comment` pointers back to `think/detect_transcript_segment.md` and `think/detect_transcript_json.md`. Load `_SEGMENT_SCHEMA` and `_JSON_SCHEMA` at module import time in `think/detect_transcript.py`, and pass `json_schema=` through both `generate()` call sites so advisory validation in `think.models.generate` engages on the next real provider run.
Rewrite the `think/detect_transcript_json.md` JSON contract from a heterogeneous array of transcript rows plus a trailing metadata dict to a wrapper object `{entries, topics, setting}`. Update `detect_transcript_json()` to return `Optional[dict]` for that wrapper, and migrate `think/importers/text.py:process_transcript` to read `entries`/`topics`/`setting` directly while deleting the old trailing-dict scan/pop branch entirely; empty-string topics and setting still coerce to `None` before `write_segment()`.
Tests now cover the new contract and wiring behavior:
- add `tests/test_detect_transcript_schema.py` mirroring the `detect_created` schema pattern with schema validity, accept/reject matrices, and `json_schema` wiring assertions for both call sites
- update `tests/test_importer.py::test_importer_pdf` and `tests/test_importer.py::test_importer_text` mocks to return the wrapper shape
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>