ace-task 0.31.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 (68) hide show
  1. checksums.yaml +7 -0
  2. data/.ace-defaults/nav/protocols/skill-sources/ace-task.yml +19 -0
  3. data/.ace-defaults/nav/protocols/wfi-sources/ace-task.yml +19 -0
  4. data/.ace-defaults/task/config.yml +25 -0
  5. data/CHANGELOG.md +518 -0
  6. data/README.md +52 -0
  7. data/Rakefile +12 -0
  8. data/exe/ace-task +22 -0
  9. data/handbook/guides/task-definition.g.md +156 -0
  10. data/handbook/skills/as-bug-analyze/SKILL.md +26 -0
  11. data/handbook/skills/as-bug-fix/SKILL.md +27 -0
  12. data/handbook/skills/as-task-document-unplanned/SKILL.md +27 -0
  13. data/handbook/skills/as-task-draft/SKILL.md +24 -0
  14. data/handbook/skills/as-task-finder/SKILL.md +27 -0
  15. data/handbook/skills/as-task-plan/SKILL.md +30 -0
  16. data/handbook/skills/as-task-review/SKILL.md +25 -0
  17. data/handbook/skills/as-task-review-questions/SKILL.md +25 -0
  18. data/handbook/skills/as-task-update/SKILL.md +21 -0
  19. data/handbook/skills/as-task-work/SKILL.md +41 -0
  20. data/handbook/templates/task/draft.template.md +166 -0
  21. data/handbook/templates/task/file-modification-checklist.template.md +26 -0
  22. data/handbook/templates/task/technical-approach.template.md +26 -0
  23. data/handbook/workflow-instructions/bug/analyze.wf.md +458 -0
  24. data/handbook/workflow-instructions/bug/fix.wf.md +512 -0
  25. data/handbook/workflow-instructions/task/document-unplanned.wf.md +222 -0
  26. data/handbook/workflow-instructions/task/draft.wf.md +552 -0
  27. data/handbook/workflow-instructions/task/finder.wf.md +22 -0
  28. data/handbook/workflow-instructions/task/plan.wf.md +489 -0
  29. data/handbook/workflow-instructions/task/review-plan.wf.md +144 -0
  30. data/handbook/workflow-instructions/task/review-questions.wf.md +411 -0
  31. data/handbook/workflow-instructions/task/review-work.wf.md +146 -0
  32. data/handbook/workflow-instructions/task/review.wf.md +351 -0
  33. data/handbook/workflow-instructions/task/update.wf.md +118 -0
  34. data/handbook/workflow-instructions/task/work.wf.md +106 -0
  35. data/lib/ace/task/atoms/task_file_pattern.rb +68 -0
  36. data/lib/ace/task/atoms/task_frontmatter_defaults.rb +46 -0
  37. data/lib/ace/task/atoms/task_id_formatter.rb +62 -0
  38. data/lib/ace/task/atoms/task_validation_rules.rb +51 -0
  39. data/lib/ace/task/cli/commands/create.rb +105 -0
  40. data/lib/ace/task/cli/commands/doctor.rb +206 -0
  41. data/lib/ace/task/cli/commands/list.rb +73 -0
  42. data/lib/ace/task/cli/commands/plan.rb +119 -0
  43. data/lib/ace/task/cli/commands/show.rb +58 -0
  44. data/lib/ace/task/cli/commands/status.rb +77 -0
  45. data/lib/ace/task/cli/commands/update.rb +183 -0
  46. data/lib/ace/task/cli.rb +83 -0
  47. data/lib/ace/task/models/task.rb +46 -0
  48. data/lib/ace/task/molecules/path_utils.rb +20 -0
  49. data/lib/ace/task/molecules/subtask_creator.rb +130 -0
  50. data/lib/ace/task/molecules/task_config_loader.rb +92 -0
  51. data/lib/ace/task/molecules/task_creator.rb +115 -0
  52. data/lib/ace/task/molecules/task_display_formatter.rb +221 -0
  53. data/lib/ace/task/molecules/task_doctor_fixer.rb +510 -0
  54. data/lib/ace/task/molecules/task_doctor_reporter.rb +264 -0
  55. data/lib/ace/task/molecules/task_frontmatter_validator.rb +138 -0
  56. data/lib/ace/task/molecules/task_loader.rb +119 -0
  57. data/lib/ace/task/molecules/task_plan_cache.rb +190 -0
  58. data/lib/ace/task/molecules/task_plan_generator.rb +141 -0
  59. data/lib/ace/task/molecules/task_plan_prompt_builder.rb +91 -0
  60. data/lib/ace/task/molecules/task_reparenter.rb +247 -0
  61. data/lib/ace/task/molecules/task_resolver.rb +115 -0
  62. data/lib/ace/task/molecules/task_scanner.rb +129 -0
  63. data/lib/ace/task/molecules/task_structure_validator.rb +154 -0
  64. data/lib/ace/task/organisms/task_doctor.rb +199 -0
  65. data/lib/ace/task/organisms/task_manager.rb +353 -0
  66. data/lib/ace/task/version.rb +7 -0
  67. data/lib/ace/task.rb +37 -0
  68. metadata +197 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 877620123fef9ff0b8efba7eb8612cf315d16442562ca58aafc7918a61d2fbd3
4
+ data.tar.gz: 733610446049929343345e7c49451f9190b2f085a39b1fee5462ee6493347035
5
+ SHA512:
6
+ metadata.gz: 0e67bc5971f524fac70b451b001747d562e9f878f5234fc4260bffa91eb01f8c37b2883c63f9e3643ad31048244b7d30fbf09b4146926cf401b376013d713024
7
+ data.tar.gz: f92112f098a1079aa3943ce763b6e26591bf31d3f257cb8e5c5d64e268e408189a61f540379028c675157616dfae085d9e0ed43b51ab42187733ae1e5ef4e762
@@ -0,0 +1,19 @@
1
+ ---
2
+ # Skill Sources Protocol Configuration for ace-task gem
3
+ # This enables canonical skill discovery from the installed ace-task gem
4
+
5
+ name: ace-task
6
+ type: gem
7
+ description: Canonical skills from ace-task gem
8
+ priority: 10
9
+
10
+ # Configuration for skill discovery within the gem
11
+ config:
12
+ # Relative path within the gem
13
+ relative_path: handbook/skills
14
+
15
+ # Pattern for finding canonical skill files
16
+ pattern: "*/SKILL.md"
17
+
18
+ # Enable discovery
19
+ enabled: true
@@ -0,0 +1,19 @@
1
+ ---
2
+ # WFI Sources Protocol Configuration for ace-task gem
3
+ # This enables workflow discovery from the installed ace-task gem
4
+
5
+ name: ace-task
6
+ type: gem
7
+ description: Task management workflow instructions from ace-task gem
8
+ priority: 10
9
+
10
+ # Configuration for workflow discovery within the gem
11
+ config:
12
+ # Relative path within the gem (default: handbook/workflow-instructions)
13
+ relative_path: handbook/workflow-instructions
14
+
15
+ # Pattern for finding workflow files (default: *.wf.md)
16
+ pattern: "*.wf.md"
17
+
18
+ # Enable discovery
19
+ enabled: true
@@ -0,0 +1,25 @@
1
+ # ace-task default configuration
2
+ task:
3
+ # Root directory for task storage
4
+ root_dir: .ace-tasks
5
+
6
+ # Default status for new tasks
7
+ default_status: pending
8
+
9
+ # File pattern for task spec files
10
+ file_pattern: "*.s.md"
11
+
12
+ # Prefix used to identify special folders (e.g., "_archive", "_backlog")
13
+ special_folder_prefix: "_"
14
+
15
+ # Status command: default limits
16
+ status:
17
+ up_next_limit: 3
18
+ recently_done_limit: 9
19
+
20
+ # Doctor command: LLM model for agent-assisted fix
21
+ doctor_agent_model: "gemini:flash-latest@yolo"
22
+
23
+ # Plan command defaults
24
+ plan:
25
+ model: "gemini:pro-latest@ro"
data/CHANGELOG.md ADDED
@@ -0,0 +1,518 @@
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.31.0] - 2026-03-24
11
+
12
+ ### Fixed
13
+ - Fixed stale `--fix` and `--fix-with-agent` flag references in README to match actual `--auto-fix` and `--auto-fix-with-agent` CLI flags.
14
+ - Corrected skill count in handbook reference from 12 to 10 (actual shipped count).
15
+ - Aligned README tagline with gemspec summary (removed `(specs)` parenthetical, consistent em-dash).
16
+
17
+ ### Changed
18
+ - Reworked demo tape to remove shell piping anti-pattern and add `status` and `doctor` scene coverage.
19
+ - Added fixture task seed data for predictable sandbox-based demo recordings.
20
+
21
+ ## [0.30.7] - 2026-03-23
22
+
23
+ ### Changed
24
+ - Refreshed package README layout, quick-link navigation, and section flow to align with the current package pattern.
25
+
26
+ ## [0.30.6] - 2026-03-22
27
+
28
+ ### Changed
29
+ - Updated the getting-started demo to capture and reuse runtime task IDs instead of hard-coded `001` references for show/update steps.
30
+ - Removed unconditional `git-init` setup from the demo flow to align with retrospective guidance for fixture-based sandbox setup.
31
+
32
+ ## [0.30.5] - 2026-03-22
33
+
34
+ ### Added
35
+ - Added `docs/demo/ace-task-getting-started.tape.yml` to provide a controlled YAML demo scenario for end-to-end sandboxed recording via `ace-demo`.
36
+
37
+ ### Technical
38
+ - Added task demo fixture config at `docs/demo/fixtures/.ace/task/config.yml` for sandbox setup portability in YAML-driven recordings.
39
+
40
+ ## [0.30.4] - 2026-03-22
41
+
42
+ ### Changed
43
+ - Added an explicit plan retrieval guard in the task work workflow: prefer path-mode `ace-task plan <ref>`, and use a 3-minute fallback strategy when `--content` stalls.
44
+
45
+ ### Technical
46
+ - Documented automation guidance in usage docs to prefer path output over inline `--content` for stable agent execution.
47
+
48
+ ## [0.30.3] - 2026-03-22
49
+
50
+ ### Changed
51
+ - Add `create-retro` to the work-on-task fork sub-steps, so each forked task implementation captures a retrospective before completing.
52
+
53
+ ## [0.30.2] - 2026-03-21
54
+
55
+ ### Fixed
56
+ - Restored the historical release entries removed during the documentation sweep so the package changelog again preserves prior release traceability.
57
+
58
+ ### Technical
59
+ - Removed stale projected provider skill wrappers for retired `as-task-reorganize` and `as-task-improve-coverage` task skills.
60
+
61
+ ## [0.30.1] - 2026-03-21
62
+
63
+ ### Changed
64
+ - Consolidated dedicated hierarchy move/reparent workflows in `task/update` and removed the deprecated `task/reorganize` workflow and skill.
65
+ - Migrated coverage workflow ownership from task to test by removing `task-improve-coverage` and routing coverage planning to the test domain.
66
+
67
+ ### Technical
68
+ - Removed stale references to retired task coverage/reorganize workflows and updated task discovery/update workflow guidance.
69
+
70
+ ## [0.30.0] - 2026-03-21
71
+
72
+ ### Changed
73
+ - Added initial `ace-task` TS-format smoke E2E coverage at `test/e2e/TS-TASK-001-core-cli-smoke` with runner/verifier goal contracts for help survey, create/show/list lifecycle, archive updates, and doctor health/error transitions.
74
+ - Added an E2E Decision Record documenting ADD/SKIP value-gate outcomes with unit-coverage evidence for `create`, `update`, `doctor`, and `plan` command suites.
75
+
76
+ ## [0.29.2] - 2026-03-18
77
+
78
+ ### Changed
79
+ - Updated workflow frontmatter key from `sub-phases` to `sub-steps` in task/work workflow to align with ace-assign step terminology
80
+ - Updated prose references from "phase" to "step" in workflow instructions
81
+
82
+ ## [0.29.1] - 2026-03-18
83
+
84
+ ### Changed
85
+ - Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
86
+
87
+ ## [0.29.0] - 2026-03-18
88
+
89
+ ### Changed
90
+ - Removed legacy backward-compatibility behavior as part of the 0.10 cleanup release.
91
+
92
+ ## [0.28.8] - 2026-03-18
93
+
94
+ ### Changed
95
+ - Clarified that task-planning Claude native `--permission-mode plan` configuration is workflow-specific and not equivalent to the shared `ace-llm` `@ro` execution preset.
96
+
97
+ ## [0.28.7] - 2026-03-15
98
+
99
+ ### Changed
100
+ - Migrated CLI framework from dry-cli to ace-support-cli
101
+
102
+ ## [0.28.6] - 2026-03-13
103
+
104
+ ### Changed
105
+ - Clarified draft task handling in `task/work` workflow for unattended/fork contexts — the assignment creation layer is now responsible for blocking draft tasks before they reach the workflow.
106
+
107
+ ## [0.28.5] - 2026-03-13
108
+
109
+ ### Technical
110
+ - Updated canonical task skills to support unified skill + workflow execution patterns.
111
+
112
+ ## [0.28.4] - 2026-03-13
113
+
114
+ ### Changed
115
+ - Updated canonical task, bug, docs, retro, idea, and test skills to explicitly run bundled workflows in the current project and execute them end-to-end.
116
+
117
+ ## [0.28.3] - 2026-03-13
118
+
119
+ ### Changed
120
+ - Removed the Codex-specific delegated execution metadata from the canonical `as-task-finder` and `as-task-work` skills so provider projections now inherit the canonical skill body unchanged.
121
+
122
+ ## [0.28.2] - 2026-03-12
123
+
124
+ ### Fixed
125
+ - Restored the Codex model override on the canonical `as-task-work` skill so the generated Codex projection uses `gpt-5.3-codex-spark` consistently with the other fork-context skills.
126
+
127
+ ## [0.28.1] - 2026-03-12
128
+
129
+ ### Changed
130
+ - Updated task and bug workflow guidance to reference bundle-first follow-up workflows and current canonical handbook path examples.
131
+
132
+ ## [0.28.0] - 2026-03-12
133
+
134
+ ### Added
135
+ - Added Codex-specific delegated execution metadata to the canonical `as-release-navigator` and `as-task-finder` skills so the generated Codex skills run in fork context on `gpt-5.3-codex-spark`.
136
+
137
+ ## [0.27.1] - 2026-03-12
138
+
139
+ ### Fixed
140
+ - Removed the mistaken provider-specific model override from the canonical `as-task-work` skill so task work projections keep their intended shared metadata.
141
+
142
+ ## [0.27.0] - 2026-03-10
143
+
144
+ ### Added
145
+ - Added canonical handbook-owned release navigator and task finder skills with package workflows for release/task discovery.
146
+
147
+ ## [0.26.1] - 2026-03-10
148
+
149
+ ### Fixed
150
+ - Added missing canonical `# bundle:` and `# agent:` metadata to migrated task workflow skills so they pass the strict `SKILL.md` schema introduced with typed canonical skills.
151
+
152
+ ## [0.26.0] - 2026-03-09
153
+
154
+ ### Added
155
+ - Added canonical workflow skills for migrated task-domain capabilities under `handbook/skills/`, including bug/docs/idea/retro/task/test flows (`as-bug-*`, `as-docs-update-*`, `as-idea-*`, `as-retro-*`, `as-task-*`, `as-test-*`).
156
+
157
+ ### Changed
158
+ - Expanded `skill://` canonical discovery coverage for `ace-task` from a single seed skill to a broader typed workflow set.
159
+
160
+ ## [0.25.0] - 2026-03-09
161
+
162
+ ### Added
163
+ - Marked `as-task-plan` skill as assign-capable with `assign.source` metadata
164
+
165
+ ## [0.24.0] - 2026-03-09
166
+
167
+ ### Added
168
+ - Added `skill-sources` gem defaults registration at `.ace-defaults/nav/protocols/skill-sources/ace-task.yml` so `skill://` can discover canonical `handbook/skills` entries from `ace-task`.
169
+
170
+ ## [0.23.0] - 2026-03-09
171
+
172
+ ### Added
173
+ - Added canonical workflow skill example at `handbook/skills/as-task-plan/SKILL.md` with execution binding to `wfi://task/plan`.
174
+
175
+ ## [0.22.2] - 2026-03-08
176
+
177
+ ### Technical
178
+ - Updated project-management and roadmap handbook references to use the canonical `release/publish` workflow name and `wfi://release/publish` URI.
179
+
180
+ ## [0.22.1] - 2026-03-08
181
+
182
+ ### Fixed
183
+ - Removed stale `task.plan.cli_args` provider mapping from `ace-task plan`; model selection now relies on `provider:model@preset` directly.
184
+
185
+ ## [0.22.0] - 2026-03-08
186
+
187
+ ### Changed
188
+ - Remove hardcoded `providers.cli_args` config; use ace-llm `@preset` suffixes for provider permission flags
189
+
190
+ ## [0.21.0] - 2026-03-07
191
+
192
+ ### Added
193
+ - `task/work` workflow sub-phase sequence now includes `pre-commit-review` between `work-on-task` and `verify-test`, enabling native client review gate in forked subtree assignments.
194
+
195
+ ## [0.20.7] - 2026-03-05
196
+
197
+ ### Fixed
198
+ - Fixed incorrect `ace-idea move` command in task/draft workflow; replaced non-existent `ace-idea move <id> --to archive` with correct `ace-idea update <id> --set status=done --move-to archive`
199
+
200
+ ## [0.20.6] - 2026-03-05
201
+
202
+ ### Added
203
+ - `create` command now accepts `--status` (`-s`) flag to set initial task status (draft, pending, blocked, etc.) with validation against allowed statuses.
204
+ - `create` command now accepts `--estimate` (`-e`) flag to set effort estimate (e.g. TBD, 2h, 1d) in frontmatter.
205
+ - `estimate:` parameter threaded through `TaskCreator`, `SubtaskCreator`, `TaskManager`, and `TaskFrontmatterDefaults`.
206
+
207
+ ## [0.20.5] - 2026-03-05
208
+
209
+ ### Fixed
210
+ - Fixed task loading by requiring the task model before loading task metadata, which restores task-aware worktree and subtask discovery in mixed fixture formats.
211
+
212
+ ## [0.20.4] - 2026-03-05
213
+
214
+ ### Fixed
215
+ - Fixed task loading by explicitly requiring `Ace::Task::Atoms::TaskFilePattern` before lookup, restoring task-aware worktree and subtask discovery in mixed fixture formats.
216
+
217
+ ## [0.20.3] - 2026-03-05
218
+
219
+ ### Fixed
220
+ - `update --move-to archive` now handles subtasks safely: it soft-skips direct subtask archive when sibling subtasks are not all terminal, and archives the parent task folder when all subtasks are terminal.
221
+ - `doctor --auto-fix` archive moves now use standard archive partition routing and no longer strand subtask folders at archive partition root.
222
+ - `doctor --auto-fix` now skips unsafe subtask archive moves when sibling subtasks are not all terminal.
223
+
224
+ ### Changed
225
+ - `update` command now prints informational notes for soft-skipped subtask archive requests and automatic parent archive behavior.
226
+ - Added regression coverage for subtask archive workflow in `TaskManager`, `update` CLI command, and `TaskDoctorFixer`.
227
+
228
+ ## [0.20.2] - 2026-03-04
229
+
230
+ ### Fixed
231
+ - Updated doctor CLI tests to match `provider_cli_args` method signature (`provider_model, cli_args_map, config`), resolving test failure after runtime signature expansion.
232
+
233
+ ## [0.20.1] - 2026-03-04
234
+
235
+ ### Fixed
236
+ - Restored backward-compatible `doctor_cli_args` fallback for doctor CLI argument migration from `task.doctor.cli_args`.
237
+
238
+ ### Changed
239
+ - Preserved compatibility alias expansion for codex defaults (`full-auto`, `dangerously-bypass-approvals-and-sandbox`) when normalizing provider CLI args.
240
+ - Retained `required_cli_args` string compatibility while adding normalized array-oriented handling in `CliProviderAdapter`.
241
+
242
+ ## [0.20.0] - 2026-03-04
243
+
244
+ ### Changed
245
+ - Renamed doctor agent CLI argument config from `doctor_cli_args` to nested `doctor.cli_args`.
246
+ - Converted provider CLI args in `task.doctor.cli_args` and `task.plan.cli_args` to YAML arrays.
247
+ - Updated doctor command reads to use `config.dig("task", "doctor", "cli_args")` and preserved fallback behavior.
248
+ - Updated default plan CLI args to nested array format.
249
+
250
+ ## [0.19.1] - 2026-03-04
251
+
252
+ ### Fixed
253
+ - Bug workflow instructions corrected to short-name path convention (`.ace-local/task/bug-analysis/` not `.ace-local/ace-task/bug-analysis/`)
254
+
255
+ ## [0.19.0] - 2026-03-04
256
+
257
+ ### Changed
258
+ - Default plan cache directory migrated from `.cache/ace-task` to `.ace-local/task`
259
+
260
+ ## [0.18.4] - 2026-03-04
261
+
262
+ ### Fixed
263
+ - `TaskPlanGenerator` file-based prompt tests now create a minimal local `project` preset fixture so `ace-bundle` section preset resolution works in temp-directory test environments.
264
+ - `Doctor#provider_cli_args` now checks direct provider prefixes (`provider:model`) before parser fallback, restoring expected CLI-arg mapping behavior for provider aliases in tests and runtime.
265
+
266
+ ## [0.18.3] - 2026-03-04
267
+
268
+ ### Added
269
+ - Plan config key `task.plan.cli_args` for strict per-provider CLI argument passthrough during `ace-task plan` generation.
270
+
271
+ ### Changed
272
+ - `TaskPlanPromptBuilder` now composes system prompts via section-based `ace-bundle` config using `base: tmpl://agent/plan-mode`, `workflow` (`wfi://task/plan`), `project_context` (`presets: [project]`), and repeated `repeat_instruction` guard section.
273
+ - `ace-task plan` now resolves provider-specific CLI args from `task.plan.cli_args` and passes them to `ace-llm` query calls.
274
+ - Strengthen planning prompt contracts in `tmpl://agent/plan-mode` and `wfi://task/plan` to require structured plan headings and reject permission/status-only output.
275
+
276
+ ## [0.18.2] - 2026-03-04
277
+
278
+ ### Fixed
279
+ - Prompt builder now fails fast on `ace-bundle` errors instead of silently degrading
280
+ - `fresh_context_files?` now returns true for empty context files, preventing unnecessary plan regeneration
281
+ - `build_unique_plan_path` uses current timestamp with collision suffix instead of future timestamps
282
+ - Squashed phantom intermediate CHANGELOG versions (0.15.1–0.18.0) into single 0.18.1 entry
283
+
284
+ ## [0.18.1] - 2026-03-04
285
+
286
+ ### Added
287
+ - `plan` CLI command: `ace-task plan <ref>` resolves a cached implementation plan or generates one when missing/stale
288
+ - `TaskPlanCache` molecule for plan artifact management under `.cache/ace-task/{task-id}/`, with latest-pointer fallback and freshness checks
289
+ - `TaskPlanGenerator` molecule for LLM-backed plan generation with `--model` override support
290
+ - `TaskPlanPromptBuilder` with file-based debugging and config file generation for prompt introspection
291
+ - Cache artifact contract for plan output (`{b36ts}-plan.md`, `latest-plan.md`, `latest-plan.meta.yml`)
292
+ - Anchored checklist template with stable step IDs, `path:line` anchors, dependencies, and verification commands
293
+ - New defaults key `task.plan.model` in `.ace-defaults/task/config.yml`
294
+ - Vertical slicing specs and modernized priority indicators (single glyph for critical)
295
+ - Dual-slug naming (folder context slug + file action slug) and short ID resolution
296
+ - Colored status symbols and global folder statistics to list output
297
+ - Execution Context as required section in plan output
298
+
299
+ ### Changed
300
+ - Work workflow rewritten: plan-first execution with sub-phases `onboard-base → onboard → task-load → plan-task → work-on-task`
301
+ - Planning workflow transitioned to inline reporting contract (no file writes)
302
+ - Default plan model set to claude:opus
303
+ - Cache directory renamed from `.cache/task/` to `.cache/ace-task/` for consistency
304
+ - Narrowed exception rescue in `TaskPlanGenerator` to specific runtime/IO exceptions
305
+ - Extracted shared `PathUtils.relative_path` module from duplicated code
306
+ - Plan template verification commands use bare `ace-test`/`ace-lint` (removed `mise exec --` prefix)
307
+
308
+ ### Fixed
309
+ - Draft workflow: corrected stale idea archive reference to use `ace-idea move` command
310
+ - Work workflow: clarified checkbox tracking with `path:line` anchor mapping to Success Criteria / Deliverables
311
+ - Bounded `build_unique_plan_path` loop with MAX_UNIQUE_ATTEMPTS guard to prevent infinite spin
312
+
313
+ ### Removed
314
+ - Batch workflow instructions (consolidated into main workflows)
315
+
316
+ ## [0.15.0] - 2026-03-03
317
+
318
+ ### Added
319
+ - Short subtask folder names: subtask folders now use `{char}-{slug}` format (e.g., `0-setup-db`) instead of `{full_id}-{slug}` (e.g., `8pp.t.q7w.0-setup-db`), reducing path duplication while preserving full ID in spec filenames
320
+ - Backward-compatible dual-format scanning: all scanning code (`SubtaskCreator`, `TaskLoader`, `TaskScanner`, `TaskResolver`, `TaskReparenter`) recognizes both new and legacy subtask folder formats
321
+
322
+ ### Fixed
323
+ - `TaskReparenter#convert_to_orchestrator`: fixed hardcoded `.a` subtask char to use `SUBTASK_CHARS[0]` (`"0"`), matching the 0-9 then a-z allocation order
324
+
325
+ ## [0.14.1] - 2026-03-03
326
+
327
+ ### Changed
328
+ - Config: replaced `special_folders` map with `special_folder_prefix: "_"` (prefix-based detection replaces hardcoded folder list)
329
+
330
+ ## [0.14.0] - 2026-03-03
331
+
332
+ ### Added
333
+ - `SubtaskCreator`: dual-slug naming — folder slug (5 words) and file slug (7 words), matching `TaskCreator` convention
334
+ - `TaskResolver`: short subtask ID resolution — `q7w.a` and `t.q7w.a` patterns now resolve to full subtask IDs
335
+
336
+ ### Fixed
337
+ - `TaskReparenter` test: corrected expected first subtask char from `.a` to `.0` (base36 sequence starts at 0)
338
+ - `TaskManager` tests: corrected expected subtask char assertions to match 0-9 then a-z allocation order
339
+
340
+ ## [0.13.0] - 2026-03-03
341
+
342
+ ### Added
343
+ - `TaskCreator`: dual-slug support — folder slug (3-5 words, context) and file slug (4-7 words, action)
344
+ - `TaskValidationRules`: `MAX_TITLE_LENGTH = 80` constant
345
+ - `TaskFrontmatterValidator`: warning when title exceeds 80 characters
346
+ - Draft workflow: task naming convention guidelines (folder vs file slug rules)
347
+ - Review workflow: title length, folder slug, file slug, and slug repetition checklist items
348
+
349
+ ### Changed
350
+ - `TaskCreator`: replaced `generate_slug` with `generate_folder_slug` (5-word limit) and `generate_file_slug` (7-word limit)
351
+ - `TaskCreator`: `generate_llm_slugs` now returns both folder and file slugs
352
+ - `SubtaskCreator`: slug generation uses 7-word limit instead of 40-char truncation
353
+
354
+ ## [0.12.3] - 2026-03-03
355
+
356
+ ### Fixed
357
+ - Subtask character allocation now follows base36 order (0-9 before a-z) matching Ruby's `to_s(36)`, ensuring correct lexicographic sorting
358
+
359
+ ## [0.12.2] - 2026-03-03
360
+
361
+ ### Changed
362
+ - Critical priority uses single `▲` glyph (same as high), distinguished only by red color — consistent column alignment
363
+
364
+ ## [0.12.1] - 2026-03-03
365
+
366
+ ### Changed
367
+ - Priority labels replaced: `‼`/`!`/`↓` → `▲▲`/`▲`/`▼` (arrow glyphs); critical is red, low is dimmed
368
+ - Subtask indicator changed from `+N` to `›N` and moved right after title (before tags/folder)
369
+ - List items: ID, tags, folder, and subtask count are dimmed for visual contrast with title
370
+ - `list --help` legend updated with priority and subtask reference
371
+
372
+ ## [0.12.0] - 2026-03-03
373
+
374
+ ### Added
375
+ - Colored status symbols in list output: pending (default), draft (cyan), in-progress (yellow), done (green), blocked (red), skipped/cancelled (dim) — TTY-aware, no color when piped
376
+ - `last_folder_counts` on `TaskScanner` and `TaskManager`: exposes per-folder item counts from the full scan for use in stats line
377
+ - `list --help` status legend with ANSI colors matching list output
378
+
379
+ ### Changed
380
+ - `format_list` and `format_stats_line` accept `global_folder_stats:` parameter, always showing folder breakdown in stats line even when viewing a filtered subset (e.g. `--in next`)
381
+ - Status legend order in `list --help` reflects lifecycle: draft → pending → in-progress → done
382
+
383
+ ## [0.11.0] - 2026-03-02
384
+
385
+ ### Added
386
+ - Smart auto-sort: `list` command now sorts by computed score (priority × 100 + age, with in-progress boost and blocked penalty) by default
387
+ - `--sort` option on `list` command: choose sort order — `smart` (default), `id`, `priority`, `created`
388
+ - `--position` option on `update` command: pin tasks in sort order using B36TS values — `first`, `last`, `after:<ref>`, `before:<ref>`
389
+ - Pinned tasks (with `position` frontmatter field) always sort before auto-sorted tasks
390
+ - `status` command up-next section now uses smart sort instead of chronological ID sort
391
+ - Remove position pin with `--remove position` to return task to auto-sort
392
+
393
+ ## [0.10.0] - 2026-03-02
394
+
395
+ ### Added
396
+ - `--move-to` / `-m` option on `update` command: relocate task to a special folder (archive, maybe, anytime) or back to root (next/root//)
397
+ - `--move-as-child-of` option on `update` command: reparent tasks — "none" promotes subtask to standalone, "self" converts to orchestrator, `<ref>` demotes to subtask of another task
398
+ - `TaskReparenter` molecule: handles promote, orchestrator conversion, and demote operations with ID reassignment and frontmatter updates
399
+ - Auto-archive hook: when all subtasks in a parent directory reach terminal status (done/skipped/blocked), the parent folder auto-moves to archive
400
+
401
+ ### Changed
402
+ - `update` command now accepts `--move-to` alone (no `--set` required), replacing the standalone `move` command
403
+
404
+ ### Removed
405
+ - Standalone `move` command — use `update --move-to` instead
406
+ - `TaskManager#move` method — use `TaskManager#update(move_to:)` instead
407
+
408
+ ## [0.9.0] - 2026-03-02
409
+
410
+ ### Added
411
+ - `--git-commit` / `--gc` flag on `create`, `update`, and `move` commands to auto-commit changes via `ace-git-commit`
412
+
413
+ ## [0.8.0] - 2026-03-02
414
+
415
+ ### Added
416
+ - `status` CLI command showing up-next tasks, summary stats, and recently completed tasks
417
+ - `--up-next-limit` and `--recently-done-limit` options for status command (configurable via config.yml)
418
+ - `TaskDisplayFormatter.format_status` and `format_status_line` class methods for status overview rendering
419
+ - Config defaults: `status: { up_next_limit: 3, recently_done_limit: 9 }`
420
+
421
+ ## [0.7.0] - 2026-03-02
422
+
423
+ ### Added
424
+ - `TaskScanner#last_scan_total` exposes total item count before folder filtering
425
+ - `TaskManager#last_list_total` exposes total item count for "X of Y" stats display
426
+ - `TaskDisplayFormatter.format_list` and `format_stats_line` accept `total_count:` parameter
427
+ - CLI list command passes total count through to formatter for contextual stats
428
+
429
+ ## [0.6.0] - 2026-03-02
430
+
431
+ ### Added
432
+ - `TaskDisplayFormatter.format_stats_line` for generating stats summary (e.g., "Tasks: ○ 2 | ▶ 1 | ✓ 5 • 8 total • 63% complete")
433
+ - `format_list` now appends a stats summary line after the item list (omitted for empty lists)
434
+
435
+ ## [0.5.0] - 2026-03-02
436
+
437
+ ### Added
438
+ - `TaskScanner#scan_in_folder` method with virtual filter support ("next" for root-only, "all" for everything)
439
+
440
+ ### Changed
441
+ - `TaskManager#list` defaults to `in_folder: "next"` — shows only root tasks by default (excludes _archive, _maybe, etc.)
442
+ - Use `--in all` to see all tasks including special folders (previous default behavior)
443
+ - Remove `next: _next` from default config special folder mappings
444
+
445
+ ## [0.4.3] - 2026-03-01
446
+
447
+ ### Changed
448
+ - Remove dead --tree conditional branch in show command
449
+
450
+ ## [0.4.2] - 2026-03-01
451
+
452
+ ### Fixed
453
+ - Add ace-support-markdown as runtime dependency in gemspec
454
+ - TaskDoctorFixer: log exception class and message in rescue blocks instead of silently swallowing
455
+ - TaskDoctorFixer: validate backup file extension before deletion in fix_stale_backup
456
+
457
+ ## [0.4.1] - 2026-03-01
458
+
459
+ ### Fixed
460
+ - Doctor command: soft-require ace/llm instead of hard top-level require (prevents LoadError without ace-llm)
461
+ - TaskDoctorFixer: add missing require_relative for TaskScanner
462
+ - Gemspec: include handbook/**/* in spec.files
463
+
464
+ ## [0.4.0] - 2026-03-01
465
+
466
+ ### Added
467
+ - `doctor` CLI command with health checks for tasks: structure validation, frontmatter validation, scope/status consistency
468
+ - `TaskValidationRules` atom defining valid statuses, terminal statuses, required fields, and scope rules
469
+ - `TaskStructureValidator` molecule checking folder naming (`{xxx.t.yyy}-{slug}`), spec files, stale backups, empty directories
470
+ - `TaskFrontmatterValidator` molecule validating delimiters, YAML parsing, required fields, field values, recommended fields
471
+ - `TaskDoctorReporter` molecule formatting results for terminal, JSON, and summary output with health score
472
+ - `TaskDoctorFixer` molecule auto-fixing 15+ issue patterns with dry-run support
473
+ - `TaskDoctor` organism orchestrating all checks with configurable check types
474
+ - Doctor flags: `--auto-fix`, `--auto-fix-with-agent`, `--check`, `--json`, `--verbose`, `--dry-run`, `--errors-only`, `--quiet`, `--model`, `--no-color`
475
+ - Config keys `doctor_agent_model` and `doctor_cli_args` in `.ace-defaults/task/config.yml`
476
+
477
+ ## [0.3.0] - 2026-03-01
478
+
479
+ ### Added
480
+ - `list` CLI command with `--status`, `--tags`, `--in`, `--root`, `--filter` options
481
+ - `move` CLI command with `--to` option for relocating tasks to special folders or root
482
+ - `update` CLI command with `--set`, `--add`, `--remove` for frontmatter field updates (comma-separated for multiple)
483
+ - `--priority`, `--tags`, `--child-of`, `--in` options on `create` command
484
+ - `--tree` output mode on `show` command
485
+ - `show` command now uses `TaskDisplayFormatter` for formatted output with status symbols
486
+ - Handbook migration: 17 task workflow instructions, 2 bug workflow instructions, 9 templates, and 3 guides moved from ace-taskflow
487
+
488
+ ### Fixed
489
+ - `TaskManager#list` now normalizes folder names (e.g., "maybe" → "_maybe") before filtering
490
+
491
+ ## [0.2.0] - 2026-03-01
492
+
493
+ ### Added
494
+ - `TaskDisplayFormatter` molecule for terminal output formatting with status symbols and subtask tree display
495
+ - `TaskManager` organism orchestrating all task CRUD operations (create, show, list, update, move, create_subtask)
496
+ - `SubtaskCreator` molecule with sequential char allocation (a-z then 0-9, max 36)
497
+ - `TaskFilePattern` atom with glob patterns and primary vs subtask file detection
498
+ - `TaskFrontmatterDefaults` atom for building default frontmatter hashes
499
+
500
+ ### Changed
501
+ - `Task` model expanded with priority, estimate, dependencies, tags, subtasks, parent_id fields
502
+ - `TaskScanner` expanded with subtask exclusion from primary scan and `scan_subtasks` method
503
+ - `TaskResolver` expanded with subtask reference resolution (`xxx.t.yyy.a`)
504
+ - `TaskLoader` expanded with subtask detection, parent_id population, and full field loading
505
+ - `TaskCreator` expanded with LLM slug generation, priority/tags/dependencies support
506
+
507
+ ## [0.1.0] - 2026-03-01
508
+
509
+ ### Added
510
+ - Initial gem scaffold with B36TS-based task ID format (`xxx.t.yyy`)
511
+ - `TaskIdFormatter` atom wrapping `ItemIdFormatter` with `.t.` type marker
512
+ - `TaskCreator` molecule for creating tasks with folder and spec file
513
+ - `TaskLoader` molecule for loading a single task from directory
514
+ - `TaskScanner` molecule wrapping `DirectoryScanner` with task-format ID extractor
515
+ - `TaskResolver` molecule wrapping `ShortcutResolver` with `full_id_length: 9`
516
+ - `TaskConfigLoader` molecule for configuration cascade
517
+ - `Task` model as value object
518
+ - Minimal CLI with `create` and `show` commands
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ <div align="center">
2
+ <h1> ACE - Task </h1>
3
+
4
+ Draft, organize, and tackle tasks — for you and your agents.
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-task"><img alt="Gem Version" src="https://img.shields.io/gem/v/ace-task.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-task demo](docs/demo/ace-task-getting-started.gif)
20
+
21
+ Tasks are markdown specs living in git - attached to branches and worktrees, not trapped in a SaaS dashboard. A task can contain subtasks, prototypes, research notes, and UX specs. Compact B36TS IDs like `8q4` are timestamp-derived, so they stay unique across branches without a central sequence - parallel worktrees rarely conflict.
22
+
23
+ ## How It Works
24
+
25
+ 1. Task specs are created and tracked as markdown files.
26
+ 2. Review and planning workflows refine scope before implementation.
27
+ 3. Oversee execution through worktrees and assignments until ship-ready.
28
+
29
+ ## Use Cases
30
+
31
+ **Draft and structure work** - create a task, split it into subtasks, add new subtasks as work reveals scope. Use `/as-task-draft` to draft from an earlier captured [idea](../ace-idea) or short note, or [`ace-task create`](docs/usage.md#ace-task-create-title) from the CLI.
32
+
33
+ **Review before building** - validate specs with `/as-task-review` before committing to implementation. The agent can ask you clarification questions to surface missing acceptance criteria, unclear scope, or architectural risks early. Use `/as-task-review-questions` to go through pending reviews across tasks.
34
+
35
+ **Plan the work** - generate a step-by-step implementation plan with `/as-task-plan` or `ace-task plan`. Define subtasks, configure which agent handles execution, and break scope into assignable units. The plan lives in the task spec so any agent can pick it up.
36
+
37
+ **Run as dark factory** - hand a task to [ace-overseer](../ace-overseer) and it provisions a worktree, opens a tmux window, creates an assignment, and drives execution through the full lifecycle - onboard, implement, verify, create PR, review, ship. One command kicks it off:
38
+
39
+ ```bash
40
+ ace-overseer work-on --task t.tt6 --preset work-on-task
41
+ ```
42
+
43
+ Under the hood this chains [ace-git-worktree](../ace-git-worktree) (isolated branch) -> [ace-tmux](../ace-tmux) (dedicated window and panes layout) -> [ace-assign](../ace-assign) (step-by-step execution). Switch to the tmux window and run `/as-assign-drive` to walk through each step.
44
+
45
+ **Track progress** - `ace-task list` shows tasks by status - what is next, what is in progress, and what was recently completed. `ace-task status` gives a focused view of the current task with subtask progress.
46
+
47
+ **Keep it healthy** - with flexible folder structures and work spread across multiple branches, things can drift. `ace-task doctor` detects structural issues - orphaned subtasks, broken references, inconsistent status. Run it with `--auto-fix` for automatic repairs, or `--auto-fix-with-agent` to let an agent resolve issues that need judgment.
48
+
49
+ **Organize** - move a task to a folder and it is created automatically. Special folders like `_maybe` and `_anytime` group tasks by intent. `_archive` partitions completed tasks by date so they stay browsable as the project grows. Sort by priority, creation date, or pin position manually.
50
+
51
+ ---
52
+ [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