The branch claude/planager-sqlite-style-H9wXz added --style sqlite. Review
found the implementation sound (91 tests pass after lint fixes) but incomplete for style
switching: re-running init/update with a new style swaps the
instruction snippet and skill files, yet existing plan content is stranded in the old
format (e.g. .plans/*.html files remain after switching to markdown, or an
orphaned plans.db). Also: re-running init without
--style silently resets an html/sqlite project back to markdown, README never
documents the sqlite style, and the ethos docs ("no database", "plain files") need honest
framing of the sqlite trade-offs.
A shared in-memory plan model with parsers and renderers for all three styles.
Review of the sqlite branch: schema declares ON DELETE CASCADE but the documented sqlite3 CLI workflow never enables PRAGMA foreign_keys — harmless since the skills only archive, never delete. Lint failures in tests/test_cli.py fixed as part of this work.
Done: built src/planager/convert.py (Plan model, md/html/sqlite parsers and renderers, migrate_plans) and wired it into init and update so any style switch converts existing plans, removes old artifacts, and refreshes every installed target. init --style now defaults to the detected existing style. 24 new tests (115 total), README documents the sqlite style with trade-offs plus a Switching styles section, version bumped to 0.7.0. Verified with a live CLI smoke test: markdown → sqlite → html round trip preserved all plan data. PLAN.md was deleted externally during the session, so its non-goals section ("Database or registry") was not amended; the README caveat covers the ethos framing.