chat: swap talent layer to chat-generate + exec-cogitate
Second of three sub-lodes for the chat backend rewrite (parent plan:
chat-refactor). Flips the talent layer for the new chat architecture
while leaving runtime callers (`/api/triage`, `apps/home/events.py`,
`think/conversation.py`, the `_resolve_talent_path` `unified` alias)
alive for 2c to cut over.
- `git mv talent/chat.md -> talent/exec.md`. The renamed file is the
tier-3 cogitate "Exec" that 2c's chat backend will dispatch for
deep research. Removed the legacy `$recent_conversation` placeholder
that had been filled by the deleted pre-hook.
- New `talent/chat.md` is a tier-3 generate "Chat" with JSON schema
output at `talent/chat.schema.json`. Covers conversational framing,
routine etiquette, import/naming, and when-to-dispatch-exec — all
investigation/search/briefing depth lives in exec.md.
- Rewrote `talent/chat_context.py` to inject digest contents, chat
stream tail (via the formatter shipped in 2b), active-talent list,
trigger context, location, and the preserved 5-gate routine-
suggestion logic. Dropped `think.conversation` / L1-L2 memory
assembly. The `save_routines_config()` side effect still fires only
when `_meta.suggestions` mutates, and only `owner_message` triggers
count toward suggestion gates.
- Added `apps/sol/maint/006_rename_unified_triage_providers.py` — an
idempotent one-time migration that renames
`providers.contexts.talent.system.unified` ->
`talent.system.chat` and removes `talent.system.triage` in any
configured journal. Auto-discovered by `think.maint`.
- Audit pass on `.get("name", "unified")` call sites: 13 hard-internal
paths now require `["name"]`, 2 user-facing defaults use `"chat"`,
and 2 legacy/migration fallbacks use `"chat"` with docstring notes.
Hardcoded `name="unified"` in `convey/triage.py` is left for 2c.
- Provider-contexts baseline: removed `talent.system.triage`, added
`talent.system.exec` (tier-3 cogitate), swapped `talent.system.chat`
to tier-3 generate. `talent.system.digest` unchanged.
Collateral: `tests/verify_api.py` + three search/graph baselines
marked sandbox-only to reconcile pre-existing drift between
`make update-api-baselines` (Flask test client) and `make verify-api`
(sandbox). Pre-dated 2a; surfaced only because this lode touched
baselines. Keeping here to keep `make verify-api` green through the
sub-lode sequence.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>