gabriel / musehub public
crud-issues-delete.md markdown
35 lines 1.6 KB
Raw
sha256:21d532d9fcaea5c4780bd2bd39eac38756266a551a372642c56842a6caed8c5b docs: track issues #141/#142/#143 (CRUD/delete parity) plan… Sonnet 5 11 days ago

Issues: add delete capability (soft + hard)

Child of musehub#141 (parent: framework-wide CRUD/delete idiom).

Background

MusehubIssue (musehub/db/musehub_social_models.py) has no delete concept at all — only state (open/closed). close/reopen are the only lifecycle operations. There is no way to remove an issue, soft or hard, via the CLI or API today. Confirmed hitting this directly during #139's cleanup: ~40 test issues created for layout verification cannot be removed, only closed.

Goal

  • Add an is_deleted column to MusehubIssue, matching the MusehubIssueComment pattern that already works.
  • muse hub issue delete <number> — soft-deletes by default (sets is_deleted), matching #141's framework-wide idiom.
  • muse hub issue delete <number> --hard — actually removes the row. Gate to repo owner/admin collaborator (same guard as other destructive issue operations).
  • Soft-deleted issues excluded from issue list by default (add a --include-deleted flag for anyone who needs to see them), excluded from open/closed/unassigned counts on the issue list page.
  • Decide and document: does a hard-deleted issue's number get reused, or stay permanently retired? (Recommend: retired — reusing numbers after hard-delete reintroduces exactly the kind of ambiguity #140 is about.)

Out of scope

  • Cascading behavior for comments/labels/anchors on a deleted issue — decide alongside the schema change, but keep simple: cascade delete on hard-delete, no special handling needed on soft-delete (comments stay, just orphaned from an invisible parent — same as GitHub's behavior).
File History 1 commit
sha256:21d532d9fcaea5c4780bd2bd39eac38756266a551a372642c56842a6caed8c5b docs: track issues #141/#142/#143 (CRUD/delete parity) plan… Sonnet 5 11 days ago