-- Drop the legacy contracts + supervisor task-grouping system.
--
-- Context: contracts were the pre-directive grouping for tasks. The
-- "supervisor" was a special task type (`is_supervisor=true`) that
-- coordinated a tree of subtasks under one contract. Both have been
-- inert for several PRs — no creation path remains, the LLM removal
-- (#135) took out the last surface that spawned them, and the
-- directives system reads its own active contract body for spec text.
--
-- This migration drops every remnant in one shot. The user authorised
-- a DB wipe; CASCADE is intentional.
--
-- Survives:
--   * `pending_questions` (in-memory only in server state.rs) — the
--     directive Ask command still uses this backchannel.
--   * `orders` (already had contract_id dropped, line 20260216).
--   * `directive_documents` (the user-facing "contract" surface).

-- ---------------------------------------------------------------------------
-- Drop FK columns first so the parent tables can go cleanly.
-- ---------------------------------------------------------------------------

-- Tasks: legacy contract grouping + supervisor flags.
ALTER TABLE tasks DROP COLUMN IF EXISTS contract_id CASCADE;
ALTER TABLE tasks DROP COLUMN IF EXISTS is_supervisor CASCADE;
ALTER TABLE tasks DROP COLUMN IF EXISTS supervisor_task_id CASCADE;
ALTER TABLE tasks DROP COLUMN IF EXISTS supervisor_worktree_task_id CASCADE;

-- directive_steps: legacy contract-backed step machinery.
ALTER TABLE directive_steps DROP COLUMN IF EXISTS contract_id CASCADE;
ALTER TABLE directive_steps DROP COLUMN IF EXISTS contract_type CASCADE;

-- files: legacy contract + phase association.
ALTER TABLE files DROP COLUMN IF EXISTS contract_id CASCADE;
ALTER TABLE files DROP COLUMN IF EXISTS contract_phase CASCADE;

-- history_events: drop contract scope; events stay task-level only.
ALTER TABLE history_events DROP COLUMN IF EXISTS contract_id CASCADE;
ALTER TABLE history_events DROP COLUMN IF EXISTS phase CASCADE;

-- ---------------------------------------------------------------------------
-- Drop dependent tables. Order is FK-safe: leaf tables first.
-- ---------------------------------------------------------------------------

DROP TABLE IF EXISTS contract_chat_messages CASCADE;
DROP TABLE IF EXISTS contract_chat_conversations CASCADE;
DROP TABLE IF EXISTS contract_events CASCADE;
DROP TABLE IF EXISTS contract_repositories CASCADE;
DROP TABLE IF EXISTS contract_type_templates CASCADE;

DROP TABLE IF EXISTS supervisor_heartbeats CASCADE;
DROP TABLE IF EXISTS supervisor_states CASCADE;

DROP TABLE IF EXISTS mesh_chat_messages CASCADE;
DROP TABLE IF EXISTS mesh_chat_conversations CASCADE;

-- Final boss: the contracts table itself.
DROP TABLE IF EXISTS contracts CASCADE;
