-- Roadmap status enum gains a fourth value `considering` for items that are
-- under discussion but not yet committed to. Same migration also renames
-- the existing `beta` value to `in_beta` so the canonical names line up
-- with the v4 spec (no second display label layer needed).
--
-- SQLite can't widen a CHECK constraint in place, so this is a full table
-- rebuild. roadmap_attributions has an ON DELETE CASCADE FK to
-- roadmap_items(id), so foreign keys are toggled off around the rebuild to
-- preserve attribution rows across the DROP/RENAME.

PRAGMA foreign_keys = OFF;

CREATE TABLE roadmap_items_new (
  id            INTEGER PRIMARY KEY AUTOINCREMENT,
  title         TEXT    NOT NULL,
  description   TEXT    NOT NULL DEFAULT '',
  status        TEXT    NOT NULL DEFAULT 'exploring'
                CHECK(status IN ('shipping','in_beta','exploring','considering')),
  target        TEXT,
  display_order INTEGER NOT NULL DEFAULT 0,
  shipped_at    TEXT,
  created_at    TEXT    NOT NULL DEFAULT (datetime('now')),
  updated_at    TEXT    NOT NULL DEFAULT (datetime('now'))
);

INSERT INTO roadmap_items_new
  (id, title, description, status, target, display_order, shipped_at, created_at, updated_at)
SELECT
  id, title, description,
  CASE status WHEN 'beta' THEN 'in_beta' ELSE status END,
  target, display_order, shipped_at, created_at, updated_at
FROM roadmap_items;

DROP TABLE roadmap_items;
ALTER TABLE roadmap_items_new RENAME TO roadmap_items;

CREATE INDEX idx_roadmap_status  ON roadmap_items(status, display_order);
CREATE INDEX idx_roadmap_shipped ON roadmap_items(shipped_at);

PRAGMA foreign_keys = ON;
