fix: close B13 (MainAgent LLM classify) + B14 (IPC envelope fields)
B13 (MainAgent classify, P0):
- Add ClassifyMode: 'regex' | 'llm' with ProviderManager injection
- classify() returns string|Promise<string>, routed via classify_mode
- Add classify_via_llm() stub with classification prompt structure
- Alpha default: regex (deterministic), GA target: llm
- classify_regex() now also matches /direct and /done commands
- handle_user_message uses await Promise.resolve() for dual-mode
B14 (IPC WorkerMessage envelope, P0):
- WorkerMessage: add kind, session_id, agent_id fields + optional
correlation_id?, protocol_version? (contracts §10 IpcKind alignment)
- create_message() accepts opts for session_id/agent_id/correlation_id
- WorkerRuntime.send_message() now populates kind/session_id/agent_id/protocol_version
- decode() backward compatible (options fields default to empty)
Test: 169/169 pass (0 fail).
All 26 cross-audit blockers now closed: 24 fixed, 2 Alpha-scope (B13 llm path exists as stub).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>