ace-overseer 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/.ace-defaults/overseer/config.yml +6 -0
  3. data/CHANGELOG.md +487 -0
  4. data/LICENSE +21 -0
  5. data/README.md +50 -0
  6. data/Rakefile +12 -0
  7. data/docs/demo/ace-overseer-getting-started.gif +0 -0
  8. data/docs/demo/ace-overseer-getting-started.tape.yml +22 -0
  9. data/docs/demo/fixtures/README.md +3 -0
  10. data/docs/demo/fixtures/sample.txt +1 -0
  11. data/docs/getting-started.md +56 -0
  12. data/docs/handbook.md +31 -0
  13. data/docs/usage.md +72 -0
  14. data/exe/ace-overseer +14 -0
  15. data/handbook/skills/as-overseer/SKILL.md +28 -0
  16. data/handbook/workflow-instructions/overseer.wf.md +16 -0
  17. data/lib/ace/overseer/atoms/preset_resolver.rb +34 -0
  18. data/lib/ace/overseer/atoms/status_formatter.rb +249 -0
  19. data/lib/ace/overseer/cli/commands/prune.rb +124 -0
  20. data/lib/ace/overseer/cli/commands/status.rb +94 -0
  21. data/lib/ace/overseer/cli/commands/work_on.rb +58 -0
  22. data/lib/ace/overseer/cli.rb +50 -0
  23. data/lib/ace/overseer/models/assignment_prune_candidate.rb +34 -0
  24. data/lib/ace/overseer/models/prune_candidate.rb +36 -0
  25. data/lib/ace/overseer/models/work_context.rb +43 -0
  26. data/lib/ace/overseer/molecules/assignment_launcher.rb +138 -0
  27. data/lib/ace/overseer/molecules/assignment_prune_safety_checker.rb +42 -0
  28. data/lib/ace/overseer/molecules/prune_safety_checker.rb +97 -0
  29. data/lib/ace/overseer/molecules/tmux_window_opener.rb +40 -0
  30. data/lib/ace/overseer/molecules/worktree_context_collector.rb +104 -0
  31. data/lib/ace/overseer/molecules/worktree_provisioner.rb +65 -0
  32. data/lib/ace/overseer/organisms/prune_orchestrator.rb +199 -0
  33. data/lib/ace/overseer/organisms/status_collector.rb +172 -0
  34. data/lib/ace/overseer/organisms/work_on_orchestrator.rb +187 -0
  35. data/lib/ace/overseer/version.rb +7 -0
  36. data/lib/ace/overseer.rb +86 -0
  37. metadata +263 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 94a8d4155aa2c5385f768be8044cec7375bf45be9f3e4c710635600426482e4b
4
+ data.tar.gz: 55918116f099345f95b94156da6ca9be5afbd65d94b34116ccaa39dbaeddf9e7
5
+ SHA512:
6
+ metadata.gz: 10974ac46524c8555ce64a47867ba1a0bee986b6b63114ae7dde29202ef190bcadfb3c57310a1ada3631b4476e5b7329361b2660c09b0d4fcc1047bdbaaded55
7
+ data.tar.gz: 5f25ff7e081379033014d606eae9f28f611ae35e01b4be77dff516ecccfbb6c2916027453ee07e31a30234114ea0ef53454ee833c3308ce6f373913c2240c8c5
@@ -0,0 +1,6 @@
1
+ default_assign_preset: "work-on-task"
2
+ tmux_window_presets:
3
+ "work-on-task": "work-on-task"
4
+ watch:
5
+ refresh_interval: 15
6
+ git_refresh_interval: 300
data/CHANGELOG.md ADDED
@@ -0,0 +1,487 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.11.0] - 2026-03-23
11
+
12
+ ### Changed
13
+ - Clarified README intro and How It Works section to describe assignment expansion into `.ace-local/assign/` and agent-driven orchestration.
14
+ - Re-recorded getting-started demo GIF against live project context showing the full worktree dashboard with progress bars, PR status, and failure counts.
15
+
16
+ ## [0.10.3] - 2026-03-23
17
+
18
+ ### Changed
19
+ - Refreshed package README layout, quick-link navigation, and section flow to align with the current package pattern.
20
+
21
+ ## [0.10.2] - 2026-03-22
22
+
23
+ ### Fixed
24
+ - Updated `work_on` orchestration messaging and preset expectations to use the canonical `work-on-task` preset name for taskref-driven batch flows.
25
+
26
+ ### Changed
27
+ - Aligned default tmux window preset mapping and associated test coverage with singular `work-on-task` preset naming.
28
+
29
+ ## [0.10.1] - 2026-03-22
30
+
31
+ ### Changed
32
+ - Remove `mise exec --` wrapper from error message string in worktree provisioner.
33
+
34
+ ## [0.10.0] - 2026-03-22
35
+
36
+ ### Added
37
+ - Added configurable tmux window preset selection for `work-on` when using the `work-on-tasks` assignment preset.
38
+ - Added an overseer-specific `work-on-tasks` layout that launches `cc /as-assign-drive`, opens the active assignment report folder in `nvim`, and runs both `ace-task status` and `ace-assign status`.
39
+
40
+ ## [0.9.0] - 2026-03-22
41
+
42
+ ### Changed
43
+ - Updated task context collection to recognize short task worktree naming prefixes (`t.*`, `ace-t.*`) when resolving task IDs from worktree paths.
44
+
45
+ ## [0.8.2] - 2026-03-22
46
+
47
+ ### Fixed
48
+ - Align README messaging: changed "start an assignment" to "prepare an assignment for execution" to match actual `work-on` behavior.
49
+
50
+ ## [0.8.1] - 2026-03-22
51
+
52
+ ### Fixed
53
+ - Include `docs/**/*` in gemspec so documentation ships with the gem.
54
+
55
+ ## [0.8.0] - 2026-03-22
56
+
57
+ ### Added
58
+ - Reworked package documentation with a new landing-page README, tutorial getting-started guide, full usage reference, handbook catalog, demo assets, and aligned gem metadata messaging.
59
+
60
+ ## [0.7.1] - 2026-03-19
61
+
62
+ ### Changed
63
+ - Refined `TS-OVERSEER-001` E2E verifier structure with explicit impact-first validation and normalized check sections across all goals.
64
+ - Expanded Goal 2 E2E coverage to require both `ace-overseer status --format json` and `--format table` evidence artifacts.
65
+
66
+ ## [0.7.0] - 2026-03-18
67
+
68
+ ### Changed
69
+ - Updated assignment system references from "phase" to "step" terminology: `first_phase` → `first_step`, `current_phase` → `current_step`, `phase_summary` → `step_summary` across launcher, orchestrator, status formatter, and context collector
70
+
71
+ ## [0.6.1] - 2026-03-18
72
+
73
+ ### Changed
74
+ - Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
75
+
76
+
77
+ ## [0.6.0] - 2026-03-18
78
+
79
+ ### Changed
80
+ - Removed legacy backward-compatibility behavior as part of the 0.10 cleanup release.
81
+
82
+
83
+ ## [0.5.6] - 2026-03-15
84
+
85
+ ### Fixed
86
+ - Restructured TC-005 prune workflow runner with explicit numbered steps to prevent LLM runner from executing prune before assignment completion
87
+
88
+ ## [0.5.5] - 2026-03-15
89
+
90
+ ### Fixed
91
+ - Removed dead `DryCli::ArgvCoalescer` call that caused NameError after ace-support-cli migration
92
+
93
+ ## [0.5.4] - 2026-03-15
94
+
95
+ ### Changed
96
+ - Migrated CLI framework from dry-cli to ace-support-cli
97
+
98
+ ## [0.5.3] - 2026-03-13
99
+
100
+ ### Fixed
101
+ - Reject tasks with `draft` status at assignment creation time with actionable review guidance, preventing unattended forks from stalling on interactive confirmation.
102
+
103
+ ## [0.5.2] - 2026-03-13
104
+
105
+ ### Changed
106
+ - Updated the canonical overseer skill to explicitly run its bundled workflow in the current project and execute it end-to-end.
107
+
108
+ ## [0.5.1] - 2026-03-12
109
+
110
+ ### Fixed
111
+ - Registered the package WFI source so `wfi://overseer` resolves for the canonical overseer skill.
112
+
113
+ ## [0.5.0] - 2026-03-10
114
+
115
+ ### Added
116
+ - Added the canonical handbook-owned overseer skill and a package workflow for task worktree orchestration.
117
+
118
+
119
+ ## [0.4.21] - 2026-03-08
120
+
121
+ ### Fixed
122
+ - `WorktreeProvisioner` now recovers from stale worktree metadata by pruning and retrying provisioning, and raises actionable errors when paths remain missing.
123
+ - `PruneOrchestrator` no longer crashes on missing/prunable worktree paths and marks those entries as unsafe candidates instead.
124
+
125
+ ### Changed
126
+ - `prune` now runs a stale metadata prune pass before scanning and defaults to task-associated worktrees when no explicit targets are provided.
127
+
128
+ ## [0.4.20] - 2026-03-05
129
+
130
+ ### Changed
131
+ - Overseer task-workflow fixtures were migrated to non-legacy task IDs and `.ace-tasks` fixture layout.
132
+
133
+ ## [0.4.19] - 2026-03-04
134
+
135
+ ### Changed
136
+ - Assignment launcher temporary job files now use `.ace-local/overseer`.
137
+
138
+
139
+ ## [0.4.18] - 2026-03-03
140
+
141
+ ### Added
142
+ - `StatusCollector`: show non-task worktrees in status when they have active assignments
143
+ - `WorktreeContextCollector`: support B36TS task ID extraction from worktree paths and branch names
144
+
145
+ ### Fixed
146
+ - `PruneOrchestrator`: allow pruning non-task worktrees when targeted by path (removes `task_associated` filter)
147
+
148
+ ## [0.4.17] - 2026-03-02
149
+
150
+ ### Changed
151
+ - Replace `ace-taskflow` dependency with `ace-task` — migrate `WorkOnOrchestrator` and `PruneSafetyChecker` to use `Ace::Task::Organisms::TaskManager` API
152
+ - Remove bare `require "ace/taskflow"` import, add `require "ace/task"`
153
+
154
+ ## [0.4.16] - 2026-02-26
155
+
156
+ ### Fixed
157
+ - Fix repeated `--task` flags (`--task 288 --task 287`) being silently dropped by dry-cli; values are now coalesced before parsing
158
+
159
+ ## [0.4.15] - 2026-02-26
160
+
161
+ ### Fixed
162
+ - Raise descriptive error when no valid task references are provided to `WorkOnOrchestrator`, preventing `NoMethodError` on empty input.
163
+
164
+ ## [0.4.14] - 2026-02-26
165
+
166
+ ### Added
167
+ - Support ordered multi-task input for `ace-overseer work-on --task` using repeated flags, comma-separated values, or mixed forms.
168
+ - Add explicit `task_refs` launch parameter support in `AssignmentLauncher` for multi-task presets using `taskrefs`.
169
+
170
+ ### Fixed
171
+ - Validate all provided task references before worktree/tmux/assignment side effects.
172
+ - Fail early with actionable guidance when multiple task refs are provided to a single-task (`taskref`) preset.
173
+
174
+ ### Changed
175
+ - Preserve left-to-right task execution order while expanding orchestrator refs in-place to subtask sequences.
176
+
177
+ ## [0.4.13] - 2026-02-24
178
+
179
+ ### Fixed
180
+ - Isolate `TS-OVERSEER-001` E2E tmux execution per run by switching scenario setup to `tmux-session: { name-source: run-id }`, preventing cross-run/default-session collisions.
181
+
182
+ ### Changed
183
+ - Clarify runner guidance for tmux evidence collection to always target `ACE_TMUX_SESSION` explicitly.
184
+
185
+ ## [0.4.12] - 2026-02-24
186
+
187
+ ### Changed
188
+ - Refine `TS-OVERSEER-001` TC-005 prune workflow runner instructions to explicitly resolve task.001 worktree path and execute `ace-assign` steps from that worktree while writing artifacts to the sandbox `results/` tree.
189
+
190
+ ## [0.4.11] - 2026-02-24
191
+
192
+ ### Changed
193
+ - Update `TS-OVERSEER-001` TC-005 prune workflow instructions to require explicit assignment-completion evidence and post-prune verification artifacts.
194
+
195
+ ## [0.4.10] - 2026-02-23
196
+
197
+ ### Technical
198
+ - Updated internal dependency version constraints to current releases
199
+
200
+ ## [0.4.9] - 2026-02-22
201
+
202
+ ### Changed
203
+ - Migrate CLI to standard dry-cli help pattern with HelpCommand registration
204
+ - Remove custom `start()` method and `KNOWN_COMMANDS` constant in favor of standard pattern
205
+
206
+ ## [0.4.8] - 2026-02-22
207
+
208
+ ### Fixed
209
+ - Standardized quiet, verbose, debug option descriptions to canonical strings
210
+
211
+ ## [0.4.7] - 2026-02-22
212
+
213
+ ### Changed
214
+ - Migrate skill naming and invocation references to hyphenated `ace-*` format (no underscores).
215
+
216
+ ## [0.4.6] - 2026-02-21
217
+
218
+ ### Fixed
219
+ - Fix TC-003 tmux window verification to use `tmux list-windows -a` (all sessions) to avoid env var propagation issues in E2E test agents
220
+
221
+ ## [0.4.5] - 2026-02-21
222
+
223
+ ### Fixed
224
+ - Fix `WorkOnOrchestrator` to pass `task_root_path` (resolved from `PROJECT_ROOT_PATH` env var or `Dir.pwd`) to `TaskLoader`, ensuring tasks are found correctly in worktree environments
225
+ - Fix E2E tests to use `ACE_TMUX_SESSION` variable instead of hardcoded `ace-e2e-test` session name for tmux window verification
226
+
227
+ ## [0.4.4] - 2026-02-20
228
+
229
+ ### Fixed
230
+ - E2E scenarios (TS-OVERSEER-001, TS-OVERSEER-002) now use `tmux-session` setup step for isolated tmux sessions instead of leaking windows into the developer's active session
231
+ - Remove hardcoded `tmux kill-session -t "ace-e2e-test"` from TS-OVERSEER-002 setup that was polluting the developer environment
232
+
233
+ ## [0.4.3] - 2026-02-19
234
+
235
+ ### Fixed
236
+ - Prune orchestrator now passes `delete_branch: true` to worktree manager's `remove` call, ensuring git branches are cleaned up when worktrees are pruned
237
+
238
+ ## [0.4.2] - 2026-02-19
239
+
240
+ ### Added
241
+ - Orchestrator subtask expansion for `work-on-tasks` preset — when a task is an orchestrator with subtasks, `AssignmentLauncher` expands subtask refs into individual foreach steps (e.g., `work-on-272.01`, `work-on-272.02`) instead of a single `work-on-272` step
242
+ - `extract_subtask_refs` helper in `WorkOnOrchestrator` to extract subtask numbers from orchestrator task data
243
+ - `subtask_refs:` keyword argument on `AssignmentLauncher#launch` for passing expanded subtask references
244
+
245
+ ## [0.4.1] - 2026-02-19
246
+
247
+ ### Added
248
+ - `--watch` / `-w` option for `status` command — auto-refreshing dashboard with ANSI screen clear
249
+ - Two-tier refresh: fast interval (15s default) refreshes assignment data only, slow interval (5min default) does full git/PR refresh
250
+ - `collect_assignments_only` method on `WorktreeContextCollector` for lightweight assignment-only collection with cached git data
251
+ - `collect_quick` method on `StatusCollector` to reuse previous snapshot's git data while refreshing assignments
252
+ - `format_watch_footer` on `StatusFormatter` showing dim timestamp and countdown to next full refresh
253
+ - Configurable watch intervals via `watch.refresh_interval` and `watch.git_refresh_interval` in overseer config
254
+
255
+ ## [0.4.0] - 2026-02-19
256
+
257
+ ### Added
258
+ - Progress bar visualization in assignment sub-rows — filled/empty bar segments alongside numeric counts
259
+ - Current step name display for running assignments (e.g., `implement` shown dimmed after progress)
260
+ - Header row and separator line above hierarchical dashboard for column labeling
261
+ - Blank line separators between location groups for visual breathing room
262
+ - `current_step` field propagated from `QueueState` through `WorktreeContextCollector` to status display
263
+
264
+ ### Changed
265
+ - Widen progress column to accommodate progress bar and current step text
266
+
267
+ ## [0.3.1] - 2026-02-19
268
+
269
+ ### Changed
270
+ - Hierarchical status display — location header rows with assignment sub-rows replace flat single-row format
271
+ - `WorkContext` model uses `assignments` array instead of singular `assignment_status` + `assignment_count`
272
+ - `WorktreeContextCollector` loads all assignments via `AssignmentDiscoverer` instead of only active via `AssignmentExecutor`
273
+ - `StatusFormatter` emits two row types: location header (basename + PR + Git) and indented assignment sub-rows (ID + name + state + progress)
274
+ - IPC serialization in `StatusCollector` uses `assignments` array
275
+ - Main branch inclusion check uses `assignments.any?` instead of `assignment_status`
276
+
277
+ ### Removed
278
+ - `assignment_executor_factory` dependency from `WorktreeContextCollector`
279
+ - Flat single-row dashboard format with header/separator lines
280
+
281
+ ## [0.3.0] - 2026-02-19
282
+
283
+ ### Added
284
+ - Assignment-aware status display — main branch appears in `status` when it has active assignments
285
+ - Assignment count shown in Assign column when location has multiple assignments (e.g., `abc12 (3)`)
286
+ - `--assignment` / `-a` option for `prune` command to remove a specific assignment's cache directory
287
+ - `AssignmentPruneCandidate` model for assignment-level prune safety checking
288
+ - `AssignmentPruneSafetyChecker` molecule to evaluate assignment prune safety
289
+ - `AssignmentManager#delete` method in ace-assign for removing assignment cache and cleaning up symlinks
290
+ - `assignment_count` and `location_type` fields on `WorkContext` model
291
+
292
+ ### Changed
293
+ - `StatusCollector` now collects main branch context alongside worktree contexts
294
+ - `StatusFormatter` sorts main branch row last, displays `main` in Task column with dim styling
295
+ - `WorktreeContextCollector` counts assignments per location via `AssignmentDiscoverer`
296
+ - `PruneOrchestrator` supports assignment-level pruning path with safety checks and force override
297
+ - Widened Assign column from 6 to 10 characters to accommodate count display
298
+ - IPC serialization includes `assignment_count` for parallel subprocess collection
299
+
300
+ ## [0.2.17] - 2026-02-19
301
+
302
+ ### Changed
303
+
304
+ - `TmuxWindowOpener` delegates entirely to `ace-tmux window` CLI — no longer manages session names, window names, or presets
305
+ - Remove `tmux_session_name`, `window_name_format`, and `window_preset` config options
306
+ - Remove `WindowNameFormatter` atom — window naming is ace-tmux's responsibility
307
+ - `PruneOrchestrator` uses worktree path basename for window cleanup instead of formatted names
308
+
309
+ ## [0.2.16] - 2026-02-19
310
+
311
+ ### Changed
312
+
313
+ - `TmuxWindowOpener` no longer manages tmux sessions — delegates entirely to ace-tmux `WindowManager` for window creation, session detection, and dedup
314
+
315
+ ## [0.2.15] - 2026-02-19
316
+
317
+ ### Fixed
318
+ - Task ID extraction now recognizes `ace-task.NNN` worktree paths, fixing mismatch where overseer status showed branch-derived task ID instead of the path-derived one
319
+
320
+ ## [0.2.14] - 2026-02-19
321
+
322
+ ### Added
323
+ - `--force` (`-f`) flag for `prune` command to bypass safety checks and force-remove unsafe worktrees
324
+ - Positional target arguments for `prune` to filter by task ref or folder name (e.g., `ace-overseer prune 230 265`)
325
+ - Dry-run output shows `[FORCE]` tag on forced candidates
326
+
327
+ ## [0.2.13] - 2026-02-19
328
+
329
+ ### Added
330
+ - Progress callbacks (`on_progress:`) for `work-on` and `prune` orchestrators — one-line status output per step
331
+ - Prune now displays safe/skipped candidates with reasons before the "Continue?" confirmation prompt
332
+
333
+ ### Changed
334
+ - `work-on` command output replaced with real-time progress messages instead of post-hoc summary
335
+
336
+ ## [0.2.12] - 2026-02-19
337
+
338
+ ### Fixed
339
+ - Prune workflow now removes safe worktrees with `ignore_untracked: true`, allowing untracked-only trees to be pruned while still protecting tracked changes
340
+ - Tighten prune E2E assertions with task-specific grep patterns and aligned fixture/config expectations for TS-OVERSEER-002
341
+
342
+ ## [0.2.11] - 2026-02-19
343
+
344
+ ### Fixed
345
+ - Add `exit!(1)` safety net after `exec` in forked status worker to prevent child process leaking parent state if exec fails
346
+ - Filter nil contexts from failed parallel workers with `.compact` to prevent `NoMethodError` in dashboard formatting
347
+
348
+ ## [0.2.10] - 2026-02-18
349
+
350
+ ### Changed
351
+ - Right-size `ace-overseer` E2E coverage from 11 to 6 focused test cases by removing command error-path duplicates already covered in package tests.
352
+ - Consolidate prune workflow assertions so retained E2E cases validate dry-run no-side-effects and tmux cleanup in fewer scenarios.
353
+
354
+ ### Fixed
355
+ - Reuse existing tmux windows in `work-on` to avoid duplicate task windows on idempotent reruns.
356
+ - Treat repositories with only untracked files as prune-safe when tracked changes are clean, preventing false `git not clean` outcomes.
357
+ - Return a user-friendly CLI error when `ace-overseer work-on` is invoked without `--task`.
358
+
359
+ ### Added
360
+ - Add command tests for `work-on` missing `--task` and task-not-found error behavior.
361
+
362
+ ## [0.2.9] - 2026-02-18
363
+
364
+ ### Fixed
365
+ - Manage PROJECT_ROOT_PATH environment variable and clear ProjectRootFinder cache when switching worktree contexts to ensure ace-assign and other tools find correct configuration
366
+
367
+ ### Technical
368
+ - Add comprehensive E2E test cases for overseer workflows
369
+ - Add E2E test configuration presets
370
+
371
+ ## [0.2.8] - 2026-02-17
372
+
373
+ ### Changed
374
+
375
+ - Parallelize worktree context collection using fork/exec for 3-4x speedup (5-7s → 1.5s for 6 worktrees)
376
+ - Use subprocess isolation to avoid Dir.chdir thread-safety issues
377
+
378
+ ### Fixed
379
+
380
+ - Test expectation for status header ("ASSIGNMENTS" → "Assign")
381
+
382
+ ## [0.2.7] - 2026-02-17
383
+
384
+ ### Added
385
+
386
+ - Assign column showing compact assignment ID for quick reference
387
+ - Git dirty file count display (e.g., `✗ 3`) instead of just `✗`
388
+
389
+ ### Changed
390
+
391
+ - Reorder columns: Assign first, Progress last
392
+ - Fix column alignment by pre-padding colored fields before ANSI codes
393
+ - Remove redundant "ASSIGNMENTS" title (table header is self-explanatory)
394
+
395
+ ## [0.2.6] - 2026-02-17
396
+
397
+ ### Changed
398
+
399
+ - Replace text status labels with Unicode icons and ANSI colors for compact, scannable output
400
+ - Sort dashboard rows by PR number descending; rows without PR appear first (sorted by task desc)
401
+ - Remove Path column (redundant with Task ID) to save horizontal space
402
+ - Colorize PR state (OPN green, MRG blue, CLS dim, DFT yellow) and Git state (✓/✗ with colors)
403
+
404
+ ### Added
405
+
406
+ - Support for new `:stalled` assignment state icon (◼ yellow)
407
+
408
+ ## [0.2.5] - 2026-02-17
409
+
410
+ ### Fixed
411
+
412
+ - Set `PROJECT_ROOT_PATH` per worktree in context collector so each worktree resolves its own assignment cache directory instead of all sharing the invoking worktree's data
413
+ - Restore `PROJECT_ROOT_PATH` and clear `ProjectRootFinder` cache after collection to prevent cross-worktree contamination
414
+
415
+ ## [0.2.4] - 2026-02-17
416
+
417
+ ### Changed
418
+
419
+ - Replace release-centric status view with assignment-focused dashboard showing path, state, progress, and PR columns.
420
+ - Remove release resolver dependency from status collector.
421
+ - Add step summary data (total/done/failed) to worktree context collection.
422
+ - Add PR metadata display with abbreviated state (OPN, MRG, CLS, DFT) in status output.
423
+
424
+ ## [0.2.3] - 2026-02-17
425
+
426
+ ### Changed
427
+
428
+ - Protect `gem_root` memoization with mutex synchronization.
429
+ - Use atomic tempfile writes for generated assignment job files.
430
+ - Improve task ID extraction robustness in worktree context collector.
431
+
432
+ ## [0.2.2] - 2026-02-17
433
+
434
+ ### Fixed
435
+
436
+ - Ensure `prune --quiet` still executes prune logic instead of returning early.
437
+ - Add missing runtime dependencies in gemspec for required ACE gems.
438
+ - Handle `SIGINT` in executable with exit code `130`.
439
+
440
+ ### Changed
441
+
442
+ - Expand assignment preset lookup to include `.ace/assign/presets` before defaults.
443
+ - Use post-action wording in `work-on` command output for accurate UX timing.
444
+ - Improve prune task-done checks to account for repository common root context.
445
+
446
+ ## [0.2.1] - 2026-02-17
447
+
448
+ ### Changed
449
+
450
+ - Release patch after the valid review cycle with no additional code changes required.
451
+
452
+ ## [0.2.0] - 2026-02-17
453
+
454
+ ### Changed
455
+
456
+ - Promote the initial `ace-overseer` implementation set to a minor release.
457
+ - Align release metadata for assignment-driven delivery flow.
458
+
459
+ ## [0.1.0] - 2026-02-17
460
+
461
+ ### Added
462
+
463
+ - New `ace-overseer` gem scaffold, executable, and CLI registry.
464
+ - `work-on` command orchestration:
465
+ - provision/reuse task worktree
466
+ - open tmux window for task context
467
+ - create assignment from configured preset
468
+ - `status` command with table and JSON output for active task worktrees.
469
+ - `prune` command with safety checks, dry-run mode, and confirmation flow.
470
+ - Core models:
471
+ - `WorkContext`
472
+ - `PruneCandidate`
473
+ - Core atoms:
474
+ - `WindowNameFormatter`
475
+ - `PresetResolver`
476
+ - `StatusFormatter`
477
+ - Molecule layer:
478
+ - `WorktreeProvisioner`
479
+ - `TmuxWindowOpener`
480
+ - `AssignmentLauncher`
481
+ - `WorktreeContextCollector`
482
+ - `PruneSafetyChecker`
483
+ - Organism layer:
484
+ - `WorkOnOrchestrator`
485
+ - `StatusCollector`
486
+ - `PruneOrchestrator`
487
+ - Test coverage for atoms, models, molecules, organisms, and CLI command registration.
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Michal Czyz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,50 @@
1
+ <div align="center">
2
+ <h1> ACE - Overseer </h1>
3
+
4
+ One command to provision a worktree, open a tmux window, and start working on a task.
5
+
6
+ <img src="https://raw.githubusercontent.com/cs3b/ace/main/docs/brand/AgenticCodingEnvironment.Logo.XS.jpg" alt="ACE Logo" width="480">
7
+ <br><br>
8
+
9
+ <a href="https://rubygems.org/gems/ace-overseer"><img alt="Gem Version" src="https://img.shields.io/gem/v/ace-overseer.svg" /></a>
10
+ <a href="https://www.ruby-lang.org"><img alt="Ruby" src="https://img.shields.io/badge/Ruby-3.2+-CC342D?logo=ruby" /></a>
11
+ <a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg" /></a>
12
+
13
+ </div>
14
+
15
+ > Works with: Claude Code, Codex CLI, OpenCode, Gemini CLI, pi-agent, and more.
16
+
17
+ [Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md)
18
+
19
+ ![ace-overseer demo](docs/demo/ace-overseer-getting-started.gif)
20
+
21
+ Starting task work means creating a worktree, opening a tmux window, and preparing an assignment - three manual steps before you even begin coding. ace-overseer collapses that into a single command, tracks what is running where, and cleans up finished worktrees so nothing lingers. You can jump straight to a focused worktree any time with a single invocation.
22
+
23
+ ## How It Works
24
+
25
+ 1. Resolve task refs and create a scoped worktree.
26
+ 2. Expand the assignment preset into concrete steps under `.ace-local/assign/`, then open a dedicated tmux window mapped to that worktree.
27
+ 3. Instruct the agent inside the tmux window to act as an orchestrator and drive the assignment step-by-step.
28
+
29
+ ## Use Cases
30
+
31
+ **Kick off task work** - provisions an isolated worktree via [ace-git-worktree](../ace-git-worktree), opens a dedicated [ace-tmux](../ace-tmux) window, and prepares an [ace-assign](../ace-assign) assignment - all in one shot. Supports regular tasks and subtask trees. Draft tasks are blocked until reviewed. Use `/as-overseer` or from the CLI:
32
+
33
+ ```bash
34
+ ace-overseer work-on --task 8q4 --preset work-on-task
35
+ ```
36
+
37
+ **Bundle related tasks** - pass multiple task refs or a task with subtasks and they all land in a single worktree. The refs are expanded and forwarded to the assignment preset, so every step for every task is prepared in one assignment. Drive through them with `/as-assign-drive`.
38
+
39
+ **Monitor active work** - [`ace-overseer status`](docs/usage.md#ace-overseer-status) shows a dashboard of all task worktrees with assignment progress, git state, and PR links. Add `--watch` for a live-refreshing view that updates assignments every 15 seconds and git status every 5 minutes.
40
+
41
+ ```bash
42
+ ace-overseer status --watch
43
+ ```
44
+
45
+ **Clean up finished work** - [`ace-overseer prune`](docs/usage.md#ace-overseer-prune) removes completed worktrees safely. It checks three conditions before removing: assignment completed, task marked done, and git working tree clean. Use `--dry-run` to preview what would be pruned, `--force` for worktrees that fail safety checks, or `--assignment` to prune a single stale assignment.
46
+
47
+ **Customize the workflow** - the full pipeline is defined in two layers: the [assignment preset](../ace-assign/.ace-defaults/assign/presets/work-on-task.yml) controls which steps run and in what order (onboard, implement, test, release, review, PR), while each step references a [workflow instruction](../ace-task/handbook/workflow-instructions/task/work.wf.md) that defines how it executes. Browse [available presets](../ace-assign/.ace-defaults/assign/presets/) or create your own to tailor the pipeline to your project.
48
+
49
+ ---
50
+ [Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md) | Part of [ACE](https://github.com/cs3b/ace)
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test" << "lib"
8
+ t.test_files = FileList["test/**/*_test.rb"]
9
+ end
10
+
11
+ task spec: :test
12
+ task default: :test
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Showcase ace-overseer worktree dashboard with progress bars and PR status
3
+ tags:
4
+ - ace-overseer
5
+ - docs
6
+ - getting-started
7
+ settings:
8
+ font_size: 16
9
+ width: 960
10
+ height: 540
11
+ format: gif
12
+ env:
13
+ PROJECT_ROOT_PATH: /home/mc/ace-t.5nx
14
+ scenes:
15
+ - name: Show the worktree dashboard — progress bars, PR status, failure counts
16
+ commands:
17
+ - type: cd $PROJECT_ROOT_PATH
18
+ sleep: 1s
19
+ - type: ace-overseer status
20
+ sleep: 9s
21
+ teardown:
22
+ - cleanup
@@ -0,0 +1,3 @@
1
+ # Demo fixtures for ace-overseer
2
+
3
+ Seed data used by YAML demo setup.
@@ -0,0 +1 @@
1
+ sample fixture content
@@ -0,0 +1,56 @@
1
+ ---
2
+ doc-type: user
3
+ title: ace-overseer Getting Started
4
+ purpose: Tutorial for launching and managing task worktrees with ace-overseer.
5
+ ace-docs:
6
+ last-updated: 2026-03-22
7
+ last-checked: 2026-03-22
8
+ ---
9
+
10
+ # Getting Started with ace-overseer
11
+
12
+ ## Prerequisites
13
+
14
+ - `tmux` installed and available on your PATH
15
+ - ACE toolkit installed in your repository
16
+ - A task reference (for example `8q4.t.umu.1`) ready to execute
17
+
18
+ ## Installation
19
+
20
+ Install as part of the ACE mono-repo toolchain: `ace-overseer --help`.
21
+
22
+ If the command resolves, your environment is ready.
23
+
24
+ ## Start Work on a Task
25
+
26
+ Launch a focused task workspace: `ace-overseer work-on --task 8q4.t.umu.1`.
27
+
28
+ This flow provisions or reuses a task worktree, opens a tmux window, and prepares assignment context.
29
+
30
+ ## Monitor Active Work
31
+
32
+ Inspect the task dashboard: `ace-overseer status`.
33
+
34
+ Need machine-readable output? Use `ace-overseer status --format json`.
35
+
36
+ ## Prune Completed Worktrees
37
+
38
+ Preview prune candidates first: `ace-overseer prune --dry-run`.
39
+
40
+ When safe to remove, confirm cleanup: `ace-overseer prune --yes`.
41
+
42
+ ## Common Commands
43
+
44
+ | Command | Purpose |
45
+ | --- | --- |
46
+ | `ace-overseer work-on --task <ref>` | Start or resume focused task workspace |
47
+ | `ace-overseer status` | Show active task worktree dashboard |
48
+ | `ace-overseer status --format json` | Export dashboard as JSON |
49
+ | `ace-overseer prune --dry-run` | Preview removable worktrees |
50
+ | `ace-overseer prune --yes` | Remove confirmed safe worktrees |
51
+
52
+ ## Next steps
53
+
54
+ - Use assignment presets with `work-on --preset <name>` for repeatable workflows.
55
+ - Integrate JSON status output into scripts, dashboards, or CI checks.
56
+ - See [Usage Guide](usage.md) for full command and option reference.