Oliver Jägle
0877e1428e
fix(list): stabilize tree ordering for consistent --tree output (#1228)
Motivation:
The ○ bd-e3r ● P2 Responsible-Vibe Development: beads
├── ○ bd-e3r.7 ● P1 Test feature B
│ ├── ○ bd-e3r.7.1 ● P2 Subfeature B1
│ └── ○ bd-e3r.7.2 ● P2 Subfeature B2
├── ○ bd-e3r.6 ● P1 Test feature A
│ ├── ○ bd-e3r.6.2 ● P2 Subfeature A2
│ └── ○ bd-e3r.6.1 ● P2 Subfeature A1
│ ├── ○ bd-e3r.6.1.1 ● P3 Task A1.1
│ └── ○ bd-e3r.6.1.2 ● P3 Task A1.2
├── ○ bd-e3r.8 ● P2 Test identical priority A
├── ○ bd-e3r.9 ● P2 Test identical priority B
├── ○ bd-e3r.1 ● P3 Reproduce
├── ○ bd-e3r.2 ● P3 Analyze
├── ○ bd-e3r.4 ● P3 Verify
├── ○ bd-e3r.5 ● P3 Finalize
└── ○ bd-e3r.3 ● P3 Fix
--------------------------------------------------------------------------------
Total: 16 issues (16 open, 0 in progress)
Status: ○ open ◐ in_progress ● blocked ✓ closed ❄ deferred command produced non-deterministic ordering between
consecutive executions, making [?1049h[1;24r(B[m[4l[?7h[?25l[H[2J[2d[AEvery 2.0s: bd list --tree[1;56Hbwpm-D6KDQ60Q6R: 08:29:46[2;68Hin 0.343s (0)[3;1H○ bd-e3r ● P2 Responsible-Vibe Development: beads
[4d├── ○ bd-e3r.6 ● P1 Test feature A
[5d│ ├── ○ bd-e3r.6.1 ● P2 Subfeature A1
[6d│ │ ├── ○ bd-e3r.6.1.1 ● P3 Task A1.1
[7d│ │ └── ○ bd-e3r.6.1.2 ● P3 Task A1.2
[8d│ └── ○ bd-e3r.6.2 ● P2 Subfeature A2
[9d├── ○ bd-e3r.7 ● P1 Test feature B
[10d│ ├── ○ bd-e3r.7.2 ● P2 Subfeature B2
[11d│ └── ○ bd-e3r.7.1 ● P2 Subfeature B1
[12d├── ○ bd-e3r.8 ● P2 Test identical priority A
[13d├── ○ bd-e3r.9 ● P2 Test identical priority B
[14d├── ○ bd-e3r.1 ● P3 Reproduce
[15d├── ○ bd-e3r.4 ● P3 Verify
[16d├── ○ bd-e3r.5 ● P3 Finalize
[17d├── ○ bd-e3r.2 ● P3 Analyze
[18d└── ○ bd-e3r.3 ● P3 Fix
[20d--------------------------------------------------------------------------------[21;1HTotal: 16 issues (16 open, 0 in progress)
[23dStatus: ○ open ◐ in_progress ● blocked ✓ closed ❄ deferred
[3d[24;1H[?12l[?25h[?1049l
[?1l> unusable due to
constantly changing output. Root issues and children with identical
priorities appeared in different orders across runs.
Key Changes:
- Add compareIssuesByPriority() function with primary sort by priority
and secondary sort by ID for deterministic behavior
- Apply stable sorting to root issues in buildIssueTreeWithDeps()
- Apply stable sorting to children in childrenMap for complete consistency
- Update printPrettyTree() to use same comparison function
Side-Effects:
- Tree output now consistently orders by priority (P0→P1→P2→P3→P4)
- Items with identical priority are sorted alphabetically by ID
- Adds comprehensive TestStableTreeOrdering test with 5-run stability verification
- Minor performance overhead from sorting (negligible for typical issue counts)
- Fixes indentation inconsistencies in existing test code via gofmt
2026-01-21 19:11:25 -08:00
..
2026-01-21 16:59:51 -08:00
2026-01-13 08:41:25 -06:00
2026-01-16 14:33:08 -08:00
2025-12-28 20:48:37 -08:00
2026-01-20 20:50:59 -08:00
2026-01-20 20:50:59 -08:00
2026-01-10 12:43:46 -08:00
2026-01-17 01:54:50 -08:00
2025-12-27 16:21:08 -08:00
2026-01-20 20:50:59 -08:00
2026-01-03 13:25:15 -08:00
2026-01-06 22:18:37 -08:00
2026-01-13 20:58:07 -08:00
2026-01-06 19:05:34 -08:00
2026-01-12 16:39:06 -08:00
2026-01-19 10:11:19 -08:00
2026-01-06 12:52:19 -08:00
2026-01-15 19:23:07 -08:00
2026-01-17 01:55:16 -08:00
2026-01-20 20:50:59 -08:00
2025-12-28 10:05:16 -08:00
2026-01-21 10:36:59 -08:00
2026-01-13 13:22:19 +00:00
2026-01-17 03:48:51 -08:00
2026-01-13 13:28:30 +00:00
2025-12-28 18:43:09 -08:00
2025-12-30 00:00:25 -08:00
2026-01-17 01:54:50 -08:00
2026-01-15 19:22:55 -08:00
2026-01-06 19:37:20 -08:00
2026-01-17 14:02:28 -08:00
2026-01-19 11:42:09 -08:00
2026-01-01 10:46:56 -08:00
2026-01-01 10:46:56 -08:00
2026-01-14 20:50:56 -08:00
2026-01-02 14:01:56 -08:00
2026-01-21 10:36:59 -08:00
2026-01-16 15:44:33 -08:00
2026-01-01 10:53:59 -08:00
2026-01-01 20:06:13 -08:00
2026-01-20 14:05:40 -08:00
2026-01-21 13:13:24 -08:00
2025-12-31 13:14:15 -08:00
2026-01-01 10:48:14 -08:00
2026-01-21 16:59:51 -08:00
2026-01-21 16:51:56 -08:00
2026-01-12 23:51:56 -08:00
2026-01-10 22:50:16 -08:00
2025-12-27 16:02:15 -08:00
2026-01-19 10:08:53 -08:00
2025-12-28 10:05:16 -08:00
2026-01-21 18:06:06 -08:00
2025-12-29 14:43:00 -08:00
2025-12-29 14:43:00 -08:00
2026-01-20 20:55:27 -08:00
2025-11-02 22:17:08 -08:00
2026-01-04 10:53:31 -08:00
2026-01-10 22:50:16 -08:00
2026-01-21 18:06:06 -08:00
2026-01-10 16:31:16 -08:00
2026-01-07 21:27:20 -08:00
2026-01-19 10:21:12 -08:00
2026-01-19 10:08:41 -08:00
2025-12-24 00:06:41 -08:00
2026-01-20 17:34:00 -08:00
2026-01-04 11:14:36 -08:00
2026-01-21 18:06:06 -08:00
2026-01-21 18:06:06 -08:00
2026-01-06 18:59:25 -08:00
2025-12-27 16:02:15 -08:00
2026-01-10 12:43:46 -08:00
2026-01-08 14:32:12 -08:00
2026-01-10 12:08:48 -08:00
2025-12-28 16:40:43 -08:00
2026-01-17 01:55:16 -08:00
2026-01-20 16:51:14 -08:00
2025-12-30 16:29:28 -08:00
2026-01-20 23:15:37 -08:00
2025-12-28 18:43:09 -08:00
2025-12-29 14:39:43 -08:00
2025-12-28 20:48:37 -08:00
2025-12-28 20:48:37 -08:00
2026-01-06 23:31:09 -08:00
2026-01-20 23:15:37 -08:00
2026-01-20 17:34:00 -08:00
2026-01-20 17:34:00 -08:00
2026-01-21 13:13:24 -08:00
2026-01-21 18:06:06 -08:00
2026-01-06 12:52:19 -08:00
2026-01-06 19:05:34 -08:00
2026-01-17 03:44:13 -08:00
2026-01-17 03:44:13 -08:00
2026-01-09 22:53:53 -08:00
2025-12-31 13:14:15 -08:00
2025-12-31 13:14:15 -08:00
2025-12-31 11:39:17 -08:00
2026-01-21 10:36:59 -08:00
2026-01-21 13:13:24 -08:00
2026-01-21 14:08:40 -08:00
2026-01-01 10:53:59 -08:00
2026-01-01 10:51:22 -08:00
2026-01-01 11:05:05 -08:00
2025-12-30 14:13:32 -08:00
2026-01-21 10:36:59 -08:00
2026-01-06 23:40:37 -08:00
2026-01-21 10:36:59 -08:00
2025-12-31 13:14:15 -08:00
2025-12-28 20:48:37 -08:00
2026-01-08 20:50:56 -08:00
2026-01-17 01:55:16 -08:00
2026-01-19 11:44:08 -08:00
2026-01-21 13:13:24 -08:00
2026-01-17 08:44:30 +01:00
2026-01-20 19:15:18 -08:00
2025-12-29 14:33:19 -08:00
2025-12-27 16:02:15 -08:00
2026-01-03 13:27:36 -08:00
2026-01-21 13:13:24 -08:00
2026-01-17 04:36:41 -08:00
2025-12-28 18:43:09 -08:00
2026-01-14 20:50:56 -08:00
2026-01-20 19:13:02 -08:00
2026-01-12 17:29:57 -08:00
2026-01-17 02:29:01 -08:00
2026-01-17 02:29:01 -08:00
2026-01-15 07:55:08 -08:00
2026-01-15 11:37:57 -08:00
2026-01-20 20:03:28 -08:00
2026-01-20 20:03:28 -08:00
2025-12-28 10:05:16 -08:00
2025-12-30 16:07:31 -08:00
2026-01-01 10:51:51 -08:00
2026-01-06 19:05:34 -08:00
2025-12-30 16:58:10 -08:00
2025-12-30 16:58:10 -08:00
2025-12-28 18:43:09 -08:00
2026-01-20 14:05:48 -08:00
2026-01-20 14:05:48 -08:00
2026-01-20 14:05:48 -08:00
2026-01-01 14:18:49 -08:00
2026-01-08 20:50:56 -08:00
2026-01-21 19:11:25 -08:00
2026-01-21 19:11:25 -08:00
2025-12-30 14:13:32 -08:00
2026-01-20 16:51:14 -08:00
2026-01-01 23:55:40 -08:00
2025-12-28 18:43:09 -08:00
2026-01-20 14:05:40 -08:00
2026-01-20 20:02:56 -08:00
2026-01-17 03:44:02 -08:00
2026-01-15 07:55:08 -08:00
2026-01-21 17:46:15 -08:00
2026-01-21 17:46:15 -08:00
2025-12-30 00:06:42 -08:00
2025-12-30 00:06:42 -08:00
2026-01-15 07:55:08 -08:00
2026-01-19 10:21:12 -08:00
2025-12-30 00:06:42 -08:00
2026-01-21 17:46:15 -08:00
2025-12-31 00:33:11 -08:00
2026-01-10 11:55:33 -08:00
2025-12-31 13:08:41 -08:00
2025-12-29 16:17:51 -08:00
2025-12-31 13:04:19 -08:00
2026-01-21 10:36:59 -08:00
2026-01-21 10:36:59 -08:00
2026-01-20 14:06:57 -08:00
2026-01-02 14:08:22 -08:00
2025-12-30 14:13:32 -08:00
2025-12-30 06:59:51 -08:00
2026-01-02 16:00:54 -08:00
2025-12-27 16:02:15 -08:00
2026-01-02 01:31:19 -08:00
2026-01-06 19:05:34 -08:00
2026-01-04 16:24:18 -08:00
2026-01-04 16:24:18 -08:00
2025-12-29 14:17:44 -08:00
2025-12-29 14:17:44 -08:00
2025-12-31 00:33:11 -08:00
2025-12-31 00:05:53 -08:00
2026-01-01 10:51:51 -08:00
2026-01-07 20:45:40 -08:00
2026-01-17 00:24:34 -08:00
2026-01-16 15:44:33 -08:00
2026-01-07 20:44:16 -08:00
2026-01-01 20:06:13 -08:00
2026-01-08 21:22:17 -08:00
2026-01-06 19:05:34 -08:00
2026-01-15 19:23:07 -08:00
2025-12-27 16:02:15 -08:00
2026-01-06 19:05:34 -08:00
2026-01-04 10:53:31 -08:00
2026-01-04 10:53:31 -08:00
2025-12-27 22:24:19 -08:00
2026-01-06 19:32:20 -08:00
2026-01-20 18:49:44 -08:00
2025-12-31 13:14:15 -08:00
2026-01-06 18:59:25 -08:00
2025-11-20 21:57:23 -05:00
2025-12-29 12:43:22 -08:00
2025-12-29 13:16:47 -08:00
2026-01-16 12:01:43 -08:00
2026-01-07 21:41:29 -08:00
2026-01-08 20:21:02 -08:00
2025-12-27 16:02:15 -08:00
2025-12-31 13:14:15 -08:00
2026-01-13 08:41:25 -06:00
2026-01-19 10:11:14 -08:00
2025-12-28 18:43:09 -08:00
2026-01-21 10:36:59 -08:00
2025-12-30 16:00:22 -08:00
2026-01-17 01:55:16 -08:00
2026-01-04 15:21:36 -08:00
2026-01-03 13:27:36 -08:00
2026-01-09 13:40:52 -08:00
2026-01-18 18:25:50 -08:00
2025-12-30 15:57:08 -08:00
2025-12-30 15:57:08 -08:00
2026-01-15 19:23:07 -08:00
2026-01-21 10:36:59 -08:00
2025-12-30 18:04:26 -08:00
2026-01-19 10:21:12 -08:00
2026-01-15 19:23:07 -08:00
2026-01-15 07:55:08 -08:00
2026-01-20 21:26:17 -08:00
2026-01-20 21:26:17 -08:00
2026-01-07 21:27:20 -08:00
2026-01-15 19:22:52 -08:00
2026-01-15 19:22:52 -08:00
2026-01-15 07:55:08 -08:00
2026-01-20 16:51:14 -08:00
2026-01-06 12:52:19 -08:00
2026-01-20 17:34:00 -08:00
2026-01-20 17:34:00 -08:00
2026-01-07 21:27:20 -08:00
2026-01-07 21:27:20 -08:00
2026-01-18 10:36:20 -08:00
2026-01-19 11:49:44 -08:00
2026-01-19 10:11:06 -08:00
2026-01-07 21:27:20 -08:00
2026-01-02 00:05:12 -08:00
2026-01-20 21:26:17 -08:00
2026-01-03 12:44:16 -08:00
2025-12-28 20:48:37 -08:00
2026-01-17 05:07:11 -08:00
2026-01-14 20:43:07 -08:00
2026-01-15 07:55:08 -08:00
2025-12-27 16:08:34 -08:00
2026-01-21 10:36:59 -08:00
2025-12-27 16:02:15 -08:00
2026-01-21 10:36:59 -08:00
2026-01-06 18:59:25 -08:00
2026-01-16 16:02:51 -08:00
2025-12-30 17:14:55 -08:00
2026-01-17 01:55:16 -08:00
2025-12-30 16:29:28 -08:00
2026-01-02 01:07:34 -08:00
2025-12-28 10:05:16 -08:00
2026-01-17 04:36:41 -08:00
2026-01-10 13:34:53 -08:00
2026-01-12 01:35:22 -08:00
2026-01-15 07:55:08 -08:00
2026-01-20 14:04:51 -08:00
2026-01-10 22:38:04 -08:00
2026-01-15 07:55:08 -08:00