-
Notifications
You must be signed in to change notification settings - Fork 33
Bead archival â clean up old beads without deleting #1005
Copy link
Copy link
Open
Labels
P2Post-launchPost-launchenhancementNew feature or requestNew feature or requestgt:coreReconciler, state machine, bead lifecycle, convoy flowReconciler, state machine, bead lifecycle, convoy flowgt:uiDashboard, settings, terminal, drawersDashboard, settings, terminal, drawerskilo-auto-fixAuto-generated label by KiloAuto-generated label by Kilokilo-triagedAuto-generated label by KiloAuto-generated label by Kilo
Milestone
Metadata
Metadata
Assignees
Labels
P2Post-launchPost-launchenhancementNew feature or requestNew feature or requestgt:coreReconciler, state machine, bead lifecycle, convoy flowReconciler, state machine, bead lifecycle, convoy flowgt:uiDashboard, settings, terminal, drawersDashboard, settings, terminal, drawerskilo-auto-fixAuto-generated label by KiloAuto-generated label by Kilokilo-triagedAuto-generated label by KiloAuto-generated label by Kilo
Type
Fields
Give feedbackNo fields configured for issues without a type.
Parent
Part of #204 (Phase 4: Hardening)
Problem
Old beads (completed work, failed attempts, resolved escalations) accumulate on the bead board and in query results. The only way to clean them up is to delete them, which destroys the work history permanently. Users want to declutter the active view without losing the record of what was done.
Solution
Add an
archivedstatus (or anarchived_attimestamp flag) to beads. Archived beads are hidden from default views but remain in the database for history, audit, and search.Bead lifecycle with archival
Archival is a terminal operation on beads that are already in a terminal state (
closedorfailed). Open and in-progress beads cannot be archived.Implementation
Schema: Add
archived_at TEXTcolumn to the beads table. A non-null value means the bead is archived.Default query behavior: All existing bead queries (
listBeads,gt_list_beads, bead board, convoy status) should exclude archived beads by default. Add aWHERE archived_at IS NULLpredicate to default queries and aninclude_archived: booleanparameter for explicit inclusion.Archive operations:
archived_at = now()archived_at = NULL(in case of mistakes)UI:
Mayor tools:
gt_bead_update(from Mayor edit capabilities + manual bead/agent/convoy editing #996) to support archivinggt_archive_beadstool that accepts filters (e.g., "archive all closed beads older than 7 days")Acceptance Criteria
archived_atcolumn added to beads tableinclude_archivedflagNotes
archived_attimestamp rather than a status enum value keeps the status field clean (still represents the work lifecycle) and allows querying "when was this archived?"patrol.tsalready handles dead agents. This is the bead equivalent ��¢ manual/semi-automatic cleanup of completed work.