ace-assign 0.37.0 → 0.40.3
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.
- checksums.yaml +4 -4
- data/.ace-defaults/assign/catalog/composition-rules.yml +12 -2
- data/.ace-defaults/assign/catalog/recipes/implement-with-pr.recipe.yml +4 -0
- data/.ace-defaults/assign/catalog/steps/record-demo.step.yml +39 -0
- data/.ace-defaults/assign/presets/work-on-task.yml +37 -0
- data/CHANGELOG.md +126 -0
- data/README.md +3 -2
- data/docs/getting-started.md +16 -5
- data/docs/handbook.md +2 -0
- data/docs/usage.md +32 -10
- data/handbook/skills/as-assign-add-task/SKILL.md +24 -0
- data/handbook/workflow-instructions/assign/add-task.wf.md +146 -0
- data/handbook/workflow-instructions/assign/create.wf.md +15 -4
- data/handbook/workflow-instructions/assign/prepare.wf.md +64 -3
- data/lib/ace/assign/atoms/preset_loader.rb +49 -0
- data/lib/ace/assign/atoms/preset_step_resolver.rb +70 -0
- data/lib/ace/assign/cli/commands/add.rb +269 -65
- data/lib/ace/assign/cli/commands/create.rb +35 -6
- data/lib/ace/assign/cli.rb +3 -0
- data/lib/ace/assign/molecules/preset_inferrer.rb +31 -0
- data/lib/ace/assign/organisms/assignment_executor.rb +335 -11
- data/lib/ace/assign/organisms/task_assignment_creator.rb +176 -0
- data/lib/ace/assign/version.rb +1 -1
- data/lib/ace/assign.rb +1 -0
- metadata +23 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f23355862efe90eb831ccb84423985e43a6961c1b3dff79648984cf6d3012f56
|
|
4
|
+
data.tar.gz: 0be151272116e8104dcb1686f9759df2e12b321d86ae6e913b5d4189b8c6bf71
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7737ef4fe083b8e758bb7cfa16fea1205bec8b7668504ca524a3bb48d1f802559a6837e60d1cf0c55594b99c8c04aae8f873732f945a3ee640dff665bf92fb40
|
|
7
|
+
data.tar.gz: ab02e5b7298297e0dfff4c2dc75a8c45b2c029ab7e8ae084df77970e90be1518e392f0575fc94d457e72059401ce3c7208071cebf6606981493fc9d88baac7c7
|
|
@@ -58,6 +58,16 @@ ordering:
|
|
|
58
58
|
after: update-pr-desc
|
|
59
59
|
note: "PR description should reflect post-rebase branch state"
|
|
60
60
|
|
|
61
|
+
- rule: push-before-record-demo
|
|
62
|
+
before: push-to-remote
|
|
63
|
+
after: record-demo
|
|
64
|
+
note: "Demo recording requires pushed code and existing PR"
|
|
65
|
+
|
|
66
|
+
- rule: record-demo-before-update-pr
|
|
67
|
+
before: record-demo
|
|
68
|
+
after: update-pr-desc
|
|
69
|
+
note: "PR description should reference attached demo if available"
|
|
70
|
+
|
|
61
71
|
- rule: push-before-update-pr
|
|
62
72
|
before: push-to-remote
|
|
63
73
|
after: update-pr-desc
|
|
@@ -181,9 +191,9 @@ conditional:
|
|
|
181
191
|
note: "Test suite verification with profiling catches slow tests and regressions before release. In explicit-step mode this remains advisory unless policy elevates it."
|
|
182
192
|
|
|
183
193
|
- when: "assignment includes work-on-task and touches CLI commands or public API"
|
|
184
|
-
suggest: [verify-e2e, update-docs]
|
|
194
|
+
suggest: [verify-e2e, update-docs, record-demo]
|
|
185
195
|
strength: recommended
|
|
186
|
-
note: "Public contract changes require E2E verification and
|
|
196
|
+
note: "Public contract changes require E2E verification, doc updates, and demo recording"
|
|
187
197
|
|
|
188
198
|
- when: "task involves auth, security, or data handling"
|
|
189
199
|
suggest: [security-audit]
|
|
@@ -38,6 +38,9 @@ steps:
|
|
|
38
38
|
required: false
|
|
39
39
|
- name: push-to-remote
|
|
40
40
|
required: true
|
|
41
|
+
- name: record-demo
|
|
42
|
+
required: false
|
|
43
|
+
note: "Record demos for modified packages with tapes; skip if no tapes or VHS unavailable"
|
|
41
44
|
- name: update-pr-desc
|
|
42
45
|
required: false
|
|
43
46
|
|
|
@@ -46,3 +49,4 @@ customization_hints:
|
|
|
46
49
|
- "Add security-audit for security-sensitive changes"
|
|
47
50
|
- "Reduce review cycles to 1 for simple changes"
|
|
48
51
|
- "Skip reorganize-commits if commit history is already clean"
|
|
52
|
+
- "Skip record-demo if VHS is not available or no tape files exist"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: record-demo
|
|
2
|
+
skill: as-demo-record
|
|
3
|
+
description: Record terminal demos for modified packages and attach to PR
|
|
4
|
+
intent:
|
|
5
|
+
phrases:
|
|
6
|
+
- "record demo"
|
|
7
|
+
- "record demos for pr"
|
|
8
|
+
- "attach demo to pr"
|
|
9
|
+
- "create demo recording"
|
|
10
|
+
|
|
11
|
+
prerequisites:
|
|
12
|
+
- name: push-to-remote
|
|
13
|
+
strength: required
|
|
14
|
+
reason: "Code must be pushed so demo reflects what reviewers see"
|
|
15
|
+
- name: create-pr
|
|
16
|
+
strength: required
|
|
17
|
+
reason: "PR number needed for demo attachment"
|
|
18
|
+
|
|
19
|
+
produces: [demo-recording, pr-comment]
|
|
20
|
+
consumes: [pull-request, remote-sync]
|
|
21
|
+
|
|
22
|
+
context:
|
|
23
|
+
default: null
|
|
24
|
+
reason: "Demo recording needs VHS and FFmpeg in the local environment"
|
|
25
|
+
|
|
26
|
+
when_to_skip:
|
|
27
|
+
- "No modified packages have tape files at <package>/docs/demo/"
|
|
28
|
+
- "VHS is not available in the environment"
|
|
29
|
+
- "Changes are documentation-only (no runnable code changed)"
|
|
30
|
+
- "No user-facing CLI changes"
|
|
31
|
+
|
|
32
|
+
effort: medium
|
|
33
|
+
tags: [demo, pr, documentation, recording]
|
|
34
|
+
decision_notes:
|
|
35
|
+
non_blocking_policy: >
|
|
36
|
+
"non-blocking" means do not block subsequent steps if truly unfixable.
|
|
37
|
+
It does NOT mean skip on first failure. Diagnose the error, check config
|
|
38
|
+
against known-good values (spike findings, test fixtures), fix environment
|
|
39
|
+
issues, and retry before reporting failure.
|
|
@@ -113,6 +113,34 @@ steps:
|
|
|
113
113
|
- "Run: git push --force-with-lease origin HEAD"
|
|
114
114
|
- Force-with-lease needed because reorganize-commits rewrites history.
|
|
115
115
|
|
|
116
|
+
- name: record-demo
|
|
117
|
+
number: "145"
|
|
118
|
+
instructions:
|
|
119
|
+
- "Record a demo that shows the feature implemented in this PR and attach it."
|
|
120
|
+
- "Find the demo scenario:"
|
|
121
|
+
- " 1. Read the task spec's Demo Scenario section for scene definitions and fixture requirements"
|
|
122
|
+
- " 2. Check `.ace-tasks/<taskref>/demo/*.tape.yml` for an existing tape"
|
|
123
|
+
- " 3. Check `<package>/docs/demo/` for package-level tapes relevant to the changes"
|
|
124
|
+
- " 4. If no tape or scenario exists, design one following the pattern: show input → run feature → verify result"
|
|
125
|
+
- "Create the tape:"
|
|
126
|
+
- " - Create `fixtures/` directory next to the tape with all input data referenced in scenes"
|
|
127
|
+
- " - Use `copy-fixtures` in setup so fixtures are available in sandbox"
|
|
128
|
+
- " - Use relative paths only (fixtures get copied to sandbox root)"
|
|
129
|
+
- " - Set sleep times so viewer can read output: 3-5s for command output, 1s for clear"
|
|
130
|
+
- " - For commands that take time (recording, builds), set sleep to the expected duration + 5s buffer"
|
|
131
|
+
- " - Do NOT use playback_speed — record at normal speed for readability"
|
|
132
|
+
- "Validate before recording:"
|
|
133
|
+
- " - Run `ace-demo record <tape> --dry-run` to verify no path errors"
|
|
134
|
+
- " - Ensure all fixtures exist and are referenced correctly"
|
|
135
|
+
- "Record and attach: `cd <package> && ace-demo record <tape-path> --pr <PR_NUMBER>`."
|
|
136
|
+
- "If VHS or FFmpeg is not installed (`which vhs` / `which asciinema` / `which agg` all fail), skip this step."
|
|
137
|
+
- "Non-blocking policy — if recording fails, diagnose before skipping:"
|
|
138
|
+
- " 1. Read the error message and identify the cause (missing font, missing tool, config mismatch, path error)"
|
|
139
|
+
- " 2. Check config: `cat <package>/.ace-defaults/demo/config.yml` and compare `agg_font_family` against available fonts (`fc-list | grep -i nerd | head -5`)"
|
|
140
|
+
- " 3. Check spike findings: search `.ace-tasks/` or `.ace-retros/` for spike docs that document working configurations"
|
|
141
|
+
- " 4. Fix and retry: if the cause is a fixable config/env issue (wrong font, missing fixture, bad path), fix it and retry"
|
|
142
|
+
- " 5. Only skip if the failure is truly unfixable (tool not installed, no tapes exist, hardware dependency)"
|
|
143
|
+
|
|
116
144
|
- name: update-pr-desc
|
|
117
145
|
number: "150"
|
|
118
146
|
context: fork
|
|
@@ -166,6 +194,15 @@ expansion:
|
|
|
166
194
|
context: fork
|
|
167
195
|
workflow: wfi://task/work
|
|
168
196
|
taskref: "{{item}}"
|
|
197
|
+
sub_steps:
|
|
198
|
+
- onboard-base
|
|
199
|
+
- task-load
|
|
200
|
+
- plan-task
|
|
201
|
+
- work-on-task
|
|
202
|
+
- pre-commit-review
|
|
203
|
+
- verify-test
|
|
204
|
+
- release-minor
|
|
205
|
+
- create-retro
|
|
169
206
|
instructions: |
|
|
170
207
|
Use existing base and task context loaded by the batch workflow.
|
|
171
208
|
Implement task {{item}}.
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,132 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.40.3] - 2026-03-27
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Corrected `ace-assign add` documentation examples to match the mutually exclusive add-mode contract (`--yaml`, `--step`, or `--task`).
|
|
14
|
+
- Replaced invalid preset-step examples in docs with preset-backed step names that resolve under the current `--step` behavior.
|
|
15
|
+
|
|
16
|
+
## [0.40.2] - 2026-03-27
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- Validated preset names before file resolution to block invalid path-like preset inputs.
|
|
20
|
+
- Added `ace-assign add --task` task-reference existence validation before mutating assignment queues.
|
|
21
|
+
- Corrected `ace-assign add --task` insertion semantics to honor `--child`; explicit `--after` without `--child` now inserts as a sibling.
|
|
22
|
+
- Added explicit preset-step resolver errors when presets define no usable `steps` array.
|
|
23
|
+
|
|
24
|
+
### Technical
|
|
25
|
+
- Added regression coverage for preset-name validation and empty-preset-step diagnostics.
|
|
26
|
+
- Added `add --task` coverage for task-ref validation and sibling insertion with `--after` when `--child` is not set.
|
|
27
|
+
- Added end-to-end CLI coverage for `ace-assign create --task` assignment and step-file materialization.
|
|
28
|
+
|
|
29
|
+
## [0.40.1] - 2026-03-27
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- Updated task-driven preset guard checks to evaluate active resolved refs after terminal filtering, preventing false single-task preset rejections on mixed terminal/non-terminal inputs.
|
|
33
|
+
- Preserved parent refs during taskref expansion when all subtasks are terminal, preventing empty expansion results from valid parent-task inputs.
|
|
34
|
+
- Normalized `detect_batch_parent` fallback return behavior to preserve nil semantics when no batch parent is found.
|
|
35
|
+
|
|
36
|
+
### Technical
|
|
37
|
+
- Made hidden task-driven job specs use unique filenames to preserve assignment source-config provenance across repeated create flows.
|
|
38
|
+
- Updated command coverage for randomized hidden job filename generation.
|
|
39
|
+
|
|
40
|
+
## [0.40.0] - 2026-03-27
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
- Added flags-only `ace-assign create --task ...` support for preset-based assignment creation from task refs, including multi-task input.
|
|
44
|
+
- Added a shared `TaskAssignmentCreator` path so direct `create --task` and `ace-overseer` launch use the same preset expansion and hidden job generation behavior.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
- Replaced positional `ace-assign create CONFIG` with explicit `--yaml` and `--task` modes.
|
|
48
|
+
- Updated `work-on-task` task-child expansion so generated `work-on-{{item}}` roots include the full `task/work` sub-step sequence, including `pre-commit-review`, `release-minor`, and `create-retro`.
|
|
49
|
+
- Refreshed docs and workflow wording to use the explicit `ace-assign create --yaml ...` contract.
|
|
50
|
+
|
|
51
|
+
### Technical
|
|
52
|
+
- Added command coverage for create-mode validation and task-driven creation edge cases.
|
|
53
|
+
- Added `ace-task` as a runtime dependency for task-ref-based creation.
|
|
54
|
+
|
|
55
|
+
## [0.39.1] - 2026-03-27
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
- Updated the `as-assign-add-task` workflow and related docs to use the current `ace-assign add --yaml` contract instead of removed `--from` usage.
|
|
59
|
+
- Refreshed preset step insertion name resolution to re-read queue names between insertions, preventing stale iteration-name collisions when canonical expansion adds additional steps.
|
|
60
|
+
- Added debug-time warnings for unexpanded `{{token}}` placeholders in `--task` preset templates.
|
|
61
|
+
|
|
62
|
+
### Technical
|
|
63
|
+
- Added regression coverage for preset insertion name-refresh behavior across canonical subtree expansion.
|
|
64
|
+
- Added regression coverage for unexpanded template-token warnings in debug `--task` mode.
|
|
65
|
+
- Normalized `detect_batch_parent` return semantics to always return a string value.
|
|
66
|
+
|
|
67
|
+
## [0.39.0] - 2026-03-27
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
- Added preset-aware `ace-assign add --step <name[,name...]>` mode with exact-first and base-name fallback resolution.
|
|
71
|
+
- Added preset-aware `ace-assign add --task <ref>` mode using preset `expansion.child-template` with automatic batch-parent detection.
|
|
72
|
+
- Added new preset insertion support modules: `PresetLoader`, `PresetStepResolver`, and `PresetInferrer`.
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
- Replaced legacy `ace-assign add` insertion contract with exactly one required mode: `--yaml`, `--step`, or `--task`.
|
|
76
|
+
- Renamed YAML file insertion flag from `--from` to canonical `--yaml`.
|
|
77
|
+
- Removed positional `name` insertion mode in favor of explicit `--step`.
|
|
78
|
+
|
|
79
|
+
### Technical
|
|
80
|
+
- Expanded command and atom/molecule test coverage for mode validation, preset loading, step resolution, auto-iteration naming, and preset inference fallback behavior.
|
|
81
|
+
|
|
82
|
+
## [0.38.3] - 2026-03-27
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
- Added `ace-assign add --from <file>` to insert multiple steps from YAML, including nested `sub_steps` expansion.
|
|
86
|
+
- Added the `as-assign-add-task` skill and `wfi://assign/add-task` workflow for guided subtree insertion.
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
- Prevalidated full `add_batch` trees before mutating assignment queues, preventing partial insertion when later batch entries are invalid.
|
|
90
|
+
- Normalized nested batch child-depth overflow handling by converting `StepNumbering` depth `ArgumentError` into `Ace::Assign::Error`.
|
|
91
|
+
- Routed workflow/skill/sub-step batch insertions through canonical subtree expansion and materialization.
|
|
92
|
+
- Reworded executor-level child insertion validation to domain language so non-CLI callers are not coupled to CLI flag syntax.
|
|
93
|
+
- Removed stale add-task child-step hardcoding drift by relying on workflow `assign.sub-steps` resolution at insertion time.
|
|
94
|
+
|
|
95
|
+
### Changed
|
|
96
|
+
- Extended assignment insertion execution with batch insertion support and frontmatter passthrough for inserted steps.
|
|
97
|
+
- Unified dynamic step default instructions under a single `AssignmentExecutor::DEFAULT_DYNAMIC_STEP_INSTRUCTIONS` source.
|
|
98
|
+
- Limited canonical batch expansion to explicit `workflow`, `skill`, or declared `sub_steps` inputs, preserving prior numbering behavior for plain flat batch inserts.
|
|
99
|
+
- Updated usage, getting-started, and handbook docs to cover the new `add --from` workflow.
|
|
100
|
+
- Updated `record-demo` step instructions to require diagnosis before skipping on failure — agents must check config, available fonts, and spike findings before reporting a non-blocking skip.
|
|
101
|
+
- Added `decision_notes.non_blocking_policy` to `record-demo` step catalog entry clarifying that "non-blocking" means "diagnose and retry before skipping," not "skip on first failure."
|
|
102
|
+
|
|
103
|
+
### Technical
|
|
104
|
+
- Expanded command and executor coverage for `--from` validation, child rebalance behavior, and metadata preservation.
|
|
105
|
+
- Added regression tests for batch insertion validation, depth overflow, and workflow-backed inserts.
|
|
106
|
+
- Renamed add-command local boolean flags to predicate-style names (`name_given`, `from_given`) for readability.
|
|
107
|
+
|
|
108
|
+
## [0.38.2] - 2026-03-26
|
|
109
|
+
|
|
110
|
+
### Changed
|
|
111
|
+
- Updated `work-on-task` prepare/create filtering guidance to treat terminal task statuses (`done`, `skipped`, `cancelled`) as filtered refs and abort all-terminal requests before assignment creation.
|
|
112
|
+
- Updated no-op messaging and edge-case language across prepare/create workflow instructions and usage docs to match the terminal-status contract.
|
|
113
|
+
|
|
114
|
+
### Technical
|
|
115
|
+
- Replaced fragile done-filter workflow contract assertions with stronger section-scoped terminal-contract checks.
|
|
116
|
+
- Moved the contract test into the standard `test/organisms/` bucket and removed the nonstandard `test/workflows/` location.
|
|
117
|
+
|
|
118
|
+
## [0.38.1] - 2026-03-26
|
|
119
|
+
|
|
120
|
+
### Technical
|
|
121
|
+
- Added regression coverage for `work-on-task` done-task filtering contracts, including mixed done/non-done handling, all-done no-op behavior, and create-flow no hidden-spec/`ace-assign create` guard assertions.
|
|
122
|
+
|
|
123
|
+
## [0.38.0] - 2026-03-26
|
|
124
|
+
|
|
125
|
+
### Added
|
|
126
|
+
- Added explicit done-task filtering rules to `assign/prepare` so `work-on-task` requests resolve refs first, skip `status: done` refs, continue mixed sets, and abort all-done sets before queue generation.
|
|
127
|
+
- Added `record-demo` step to the assignment step catalog for recording and attaching terminal demos to PRs.
|
|
128
|
+
- Added composition rules positioning `record-demo` between `push-to-remote` and `update-pr-desc`.
|
|
129
|
+
- Added `record-demo` to the `implement-with-pr` recipe as an optional step.
|
|
130
|
+
|
|
131
|
+
### Changed
|
|
132
|
+
- Updated `assign/create` workflow guidance so Path B respects filtered taskrefs from prepare and skips hidden-spec render/`ace-assign create` when all requested refs are already done.
|
|
133
|
+
- Updated usage docs with `work-on-task` prepare/create filtering behavior and no-assignment outcomes for all-done inputs.
|
|
134
|
+
- Updated `work-on-task` preset with step 145 (`record-demo`) that reads demo scenarios from task specs, validates with dry-run, and records with proper fixture/sandbox patterns.
|
|
135
|
+
|
|
10
136
|
## [0.37.0] - 2026-03-23
|
|
11
137
|
|
|
12
138
|
### Changed
|
data/README.md
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
Multi-step assignment execution with nesting, fork delegation, and inspectable traces.
|
|
5
5
|
|
|
6
|
-
<img src="../docs/brand/AgenticCodingEnvironment.Logo.
|
|
6
|
+
<img src="../docs/brand/AgenticCodingEnvironment.Logo.XS.jpg" alt="ACE Logo" width="480">
|
|
7
|
+
<br><br>
|
|
7
8
|
|
|
8
9
|
<a href="https://rubygems.org/gems/ace-assign"><img alt="Gem Version" src="https://img.shields.io/gem/v/ace-assign.svg" /></a>
|
|
9
10
|
<a href="https://www.ruby-lang.org"><img alt="Ruby" src="https://img.shields.io/badge/Ruby-3.2+-CC342D?logo=ruby" /></a>
|
|
@@ -75,7 +76,7 @@ The easiest way to start is through [ace-overseer](../ace-overseer) -- define a
|
|
|
75
76
|
|
|
76
77
|
## Use Cases
|
|
77
78
|
|
|
78
|
-
**Define assignments from presets** - pick a [preset](.ace-defaults/assign/presets/) like [`work-on-task`](.ace-defaults/assign/presets/work-on-task.yml) or `release-only`, pass parameters (task refs, packages), and [`ace-assign create
|
|
79
|
+
**Define assignments from presets** - pick a [preset](.ace-defaults/assign/presets/) like [`work-on-task`](.ace-defaults/assign/presets/work-on-task.yml) or `release-only`, pass parameters (task refs, packages), and run `ace-assign create --task ...` or [`ace-assign create --yaml ...`](docs/usage.md) to expand them into a concrete step queue. Steps are defined in the [catalog](.ace-defaults/assign/catalog/steps/) (e.g., [`work-on-task.step.yml`](.ace-defaults/assign/catalog/steps/work-on-task.step.yml)) and ordered by [composition rules](.ace-defaults/assign/catalog/composition-rules.yml). Compose custom assignments with `/as-assign-compose`.
|
|
79
80
|
|
|
80
81
|
**Run with orchestrator and fork agents** - use `/as-assign-drive` to walk through steps, forking long-running work (implementation, review, release) to isolated agent subprocesses with configurable [execution defaults](.ace-defaults/assign/config.yml). Forks can run sequentially or as parallel batches, each producing inspectable traces and session reports under `.ace-local/assign/`.
|
|
81
82
|
|
data/docs/getting-started.md
CHANGED
|
@@ -52,7 +52,14 @@ Create the assignment:
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
ace-assign create job.yaml
|
|
55
|
+
ace-assign create --yaml job.yaml
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Or create directly from task refs with the default `work-on-task` preset:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
ace-assign create --task t.xyz
|
|
62
|
+
ace-assign create --task t.100,t.101 --preset work-on-task
|
|
56
63
|
```
|
|
57
64
|
|
|
58
65
|
## 2) Check status and execute work
|
|
@@ -70,11 +77,14 @@ Use `--message <file>` to keep reports explicit and reusable.
|
|
|
70
77
|
|
|
71
78
|
|
|
72
79
|
```bash
|
|
73
|
-
ace-assign add
|
|
74
|
-
ace-assign add
|
|
80
|
+
ace-assign add --task t.xyz
|
|
81
|
+
ace-assign add --step update-docs --after 020
|
|
82
|
+
ace-assign add --step review-pr --after 100 --child
|
|
83
|
+
ace-assign add --yaml .ace-local/assign/jobs/add-task-t.xyz.yml --after 010 --child
|
|
75
84
|
```
|
|
76
85
|
|
|
77
86
|
Use `--child` to insert nested steps under a parent step.
|
|
87
|
+
Use `--yaml` to insert multiple steps (including subtree expansions via `sub_steps`) from YAML.
|
|
78
88
|
|
|
79
89
|
## 4) Work with hierarchical steps
|
|
80
90
|
|
|
@@ -104,12 +114,13 @@ ace-assign finish --message report.md --assignment abc123@010.01
|
|
|
104
114
|
|
|
105
115
|
| Command | Purpose |
|
|
106
116
|
|---------|---------|
|
|
107
|
-
| `ace-assign create job.yaml` | Create assignment from YAML |
|
|
117
|
+
| `ace-assign create --yaml job.yaml` | Create assignment from YAML |
|
|
118
|
+
| `ace-assign create --task t.xyz` | Create assignment from task refs |
|
|
108
119
|
| `ace-assign status` | Show current queue |
|
|
109
120
|
| `ace-assign start` | Start next workable step |
|
|
110
121
|
| `ace-assign finish --message done.md` | Complete in-progress step |
|
|
111
122
|
| `ace-assign fail --message "error"` | Mark current step failed |
|
|
112
|
-
| `ace-assign add NAME
|
|
123
|
+
| `ace-assign add --step NAME` | Insert preset step dynamically |
|
|
113
124
|
| `ace-assign retry 040` | Retry failed step as linked work |
|
|
114
125
|
| `ace-assign fork-run --root 010.01` | Execute a subtree in forked context |
|
|
115
126
|
|
data/docs/handbook.md
CHANGED
|
@@ -15,6 +15,7 @@ Canonical skills and workflow instructions bundled with `ace-assign`.
|
|
|
15
15
|
|
|
16
16
|
| Skill | What it does |
|
|
17
17
|
|-------|---------------|
|
|
18
|
+
| `as-assign-add-task` | Add a work-on-task subtree into a running assignment batch parent |
|
|
18
19
|
| `as-assign-compose` | Compose a tailored assignment from catalog steps and composition rules |
|
|
19
20
|
| `as-assign-create` | Create assignments from public workflow, with optional handoff to drive |
|
|
20
21
|
| `as-assign-drive` | Drive active assignment execution step-by-step |
|
|
@@ -26,6 +27,7 @@ Canonical skills and workflow instructions bundled with `ace-assign`.
|
|
|
26
27
|
|
|
27
28
|
| Protocol Path | Purpose | Invoked by |
|
|
28
29
|
|---------------|---------|------------|
|
|
30
|
+
| `wfi://assign/add-task` | Insert a task subtree into a running assignment using `ace-assign add --yaml` | `as-assign-add-task` |
|
|
29
31
|
| `wfi://assign/compose` | Compose assignment definitions from cataloged steps | `as-assign-compose` |
|
|
30
32
|
| `wfi://assign/create` | Create assignment and initialize queue from config | `as-assign-create` |
|
|
31
33
|
| `wfi://assign/drive` | Execute active assignment loop with status/finish/fail transitions | `as-assign-drive` |
|
data/docs/usage.md
CHANGED
|
@@ -3,8 +3,8 @@ doc-type: user
|
|
|
3
3
|
title: ace-assign Usage Guide
|
|
4
4
|
purpose: Complete command reference for ace-assign queue orchestration, hierarchy, and fork execution.
|
|
5
5
|
ace-docs:
|
|
6
|
-
last-updated: 2026-03-
|
|
7
|
-
last-checked: 2026-03-
|
|
6
|
+
last-updated: 2026-03-26
|
|
7
|
+
last-checked: 2026-03-26
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# ace-assign Usage Guide
|
|
@@ -26,7 +26,7 @@ ace-assign finish --message report.md
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
ace-assign create job.yaml
|
|
29
|
+
ace-assign create --yaml job.yaml
|
|
30
30
|
ace-assign status
|
|
31
31
|
ace-assign finish --message step-010.md
|
|
32
32
|
ace-assign status
|
|
@@ -58,21 +58,27 @@ Create child/sibling steps:
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
|
-
ace-assign add
|
|
62
|
-
ace-assign add
|
|
61
|
+
ace-assign add --step update-docs --after 020
|
|
62
|
+
ace-assign add --step review-pr --after 100 --child
|
|
63
|
+
ace-assign add --yaml .ace-local/assign/jobs/add-task.yml --after 010 --child
|
|
63
64
|
```
|
|
64
65
|
|
|
65
66
|
## Commands
|
|
66
67
|
|
|
67
|
-
### `ace-assign create
|
|
68
|
+
### `ace-assign create`
|
|
68
69
|
|
|
69
|
-
Create a new assignment from
|
|
70
|
+
Create a new assignment from YAML or from task refs expanded through an assignment preset.
|
|
70
71
|
|
|
71
72
|
Options:
|
|
72
73
|
|
|
74
|
+
- `--yaml FILE`
|
|
75
|
+
- `--task, -t <taskref[,taskref...]>` (repeatable)
|
|
76
|
+
- `--preset, -p NAME`
|
|
73
77
|
- `--quiet, -q`
|
|
74
78
|
- `--debug, -d`
|
|
75
79
|
|
|
80
|
+
Exactly one mode is required: `--yaml` or `--task`.
|
|
81
|
+
|
|
76
82
|
### `ace-assign status`
|
|
77
83
|
|
|
78
84
|
Show queue status for active or explicitly targeted assignment.
|
|
@@ -123,19 +129,24 @@ Options:
|
|
|
123
129
|
- `--quiet, -q`
|
|
124
130
|
- `--debug, -d`
|
|
125
131
|
|
|
126
|
-
### `ace-assign add
|
|
132
|
+
### `ace-assign add`
|
|
127
133
|
|
|
128
|
-
Insert
|
|
134
|
+
Insert new step(s) dynamically.
|
|
129
135
|
|
|
130
136
|
Options:
|
|
131
137
|
|
|
132
|
-
- `--
|
|
138
|
+
- `--yaml FILE`
|
|
139
|
+
- `--step NAME[,NAME...]`
|
|
140
|
+
- `--task TASKREF`
|
|
141
|
+
- `--preset NAME`
|
|
133
142
|
- `--after, -a NUMBER`
|
|
134
143
|
- `--child, -c`
|
|
135
144
|
- `--assignment <id>`
|
|
136
145
|
- `--quiet, -q`
|
|
137
146
|
- `--debug, -d`
|
|
138
147
|
|
|
148
|
+
Exactly one mode is required: `--yaml`, `--step`, or `--task`.
|
|
149
|
+
|
|
139
150
|
### `ace-assign retry STEP_REF`
|
|
140
151
|
|
|
141
152
|
Create a linked retry step for a failed step.
|
|
@@ -185,6 +196,17 @@ Options:
|
|
|
185
196
|
|
|
186
197
|
## Workflow Patterns
|
|
187
198
|
|
|
199
|
+
### `work-on-task` Input Filtering (Prepare/Create Workflows)
|
|
200
|
+
|
|
201
|
+
When using preset-backed assignment creation (`ace-assign create --task ...`, `/as-assign-prepare`, or `/as-assign-create`):
|
|
202
|
+
|
|
203
|
+
- Requested refs are resolved first (single, comma list, range, pattern).
|
|
204
|
+
- Terminal refs (`done`, `skipped`, `cancelled`) are skipped before queue expansion.
|
|
205
|
+
- Mixed sets continue with remaining non-terminal refs and report skipped terminal refs.
|
|
206
|
+
- If all requested refs are terminal, assignment creation stops with:
|
|
207
|
+
- `All requested tasks are already terminal (done/skipped/cancelled): <refs>`
|
|
208
|
+
- `No assignment created.`
|
|
209
|
+
|
|
188
210
|
### Scoped Subtree Execution
|
|
189
211
|
|
|
190
212
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-assign-add-task
|
|
3
|
+
description: Add a work-on-task subtree into a running assignment batch parent
|
|
4
|
+
# bundle: wfi://assign/add-task
|
|
5
|
+
# agent: general-purpose
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Bash(ace-assign:*)
|
|
9
|
+
- Bash(ace-bundle:*)
|
|
10
|
+
- Bash(ace-task:*)
|
|
11
|
+
- Read
|
|
12
|
+
- Write
|
|
13
|
+
- AskUserQuestion
|
|
14
|
+
argument-hint: "taskref [--parent STEP] [--assignment ID]"
|
|
15
|
+
last_modified: 2026-03-26
|
|
16
|
+
source: ace-assign
|
|
17
|
+
skill:
|
|
18
|
+
kind: workflow
|
|
19
|
+
execution:
|
|
20
|
+
workflow: wfi://assign/add-task
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
Load and run `ace-bundle wfi://assign/add-task` in the current project, then follow the loaded workflow as the source of truth and execute it end-to-end instead of only summarizing it.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
doc-type: workflow
|
|
3
|
+
title: Add Task To Assignment Workflow
|
|
4
|
+
purpose: Insert a work-on-task subtree into a running assignment batch parent using ace-assign add --yaml
|
|
5
|
+
ace-docs:
|
|
6
|
+
last-updated: 2026-03-26
|
|
7
|
+
last-checked: 2026-03-26
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Add Task To Assignment Workflow
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Add one new task subtree to an existing assignment without editing step files manually.
|
|
15
|
+
|
|
16
|
+
This workflow:
|
|
17
|
+
1. Resolves the target assignment and parent step
|
|
18
|
+
2. Validates task reference exists
|
|
19
|
+
3. Renders a hidden YAML file under `.ace-local/assign/jobs/`
|
|
20
|
+
4. Calls `ace-assign add --yaml <file> --after <parent> --child`
|
|
21
|
+
|
|
22
|
+
## Supported Inputs
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
/as-assign-add-task t.xyz
|
|
26
|
+
/as-assign-add-task t.xyz --parent 010
|
|
27
|
+
/as-assign-add-task t.xyz --assignment abc123
|
|
28
|
+
/as-assign-add-task t.xyz --assignment abc123 --parent 010
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Process
|
|
32
|
+
|
|
33
|
+
### 1. Parse Input
|
|
34
|
+
|
|
35
|
+
Required:
|
|
36
|
+
- task reference (first positional argument)
|
|
37
|
+
|
|
38
|
+
Optional:
|
|
39
|
+
- `--assignment <id>`: explicit assignment target
|
|
40
|
+
- `--parent <step-number>`: explicit parent step for insertion
|
|
41
|
+
|
|
42
|
+
If task reference is missing, fail with usage guidance.
|
|
43
|
+
|
|
44
|
+
### 2. Resolve Assignment
|
|
45
|
+
|
|
46
|
+
- If `--assignment` is provided, use it for all assignment commands.
|
|
47
|
+
- Otherwise use active assignment context.
|
|
48
|
+
|
|
49
|
+
Run status to capture current queue state:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
ace-assign status [--assignment <id>] --format json
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 3. Resolve Parent Step
|
|
56
|
+
|
|
57
|
+
If `--parent` is provided:
|
|
58
|
+
- Use it directly
|
|
59
|
+
- Ensure it exists in assignment status output
|
|
60
|
+
|
|
61
|
+
If `--parent` is not provided:
|
|
62
|
+
1. Prefer a top-level step named `batch-tasks`
|
|
63
|
+
2. Otherwise, choose a top-level step that has direct children where at least one child name starts with `work-on-`
|
|
64
|
+
3. If no match exists, fail and instruct user to pass `--parent`
|
|
65
|
+
|
|
66
|
+
### 4. Validate Task Reference
|
|
67
|
+
|
|
68
|
+
Confirm task exists and is readable:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
ace-task show <taskref>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
If task lookup fails, stop and surface the CLI error.
|
|
75
|
+
|
|
76
|
+
### 5. Render Hidden Batch Spec
|
|
77
|
+
|
|
78
|
+
Create the hidden jobs directory if missing:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
mkdir -p .ace-local/assign/jobs
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Write a temporary YAML file:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
.ace-local/assign/jobs/<timestamp>-add-task-<taskref>.yml
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Template:
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
steps:
|
|
94
|
+
- name: work-on-<taskref>
|
|
95
|
+
context: fork
|
|
96
|
+
workflow: wfi://task/work
|
|
97
|
+
instructions: |
|
|
98
|
+
Implement task <taskref> following project conventions.
|
|
99
|
+
When complete, mark the task as done.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Notes:
|
|
103
|
+
- Do not hardcode `sub_steps` here.
|
|
104
|
+
- `ace-assign add --yaml` resolves canonical child steps from `wfi://task/work` assign metadata at insertion time.
|
|
105
|
+
- This keeps the inserted subtree aligned with workflow contract updates.
|
|
106
|
+
|
|
107
|
+
### 6. Insert Subtree
|
|
108
|
+
|
|
109
|
+
Run batch insertion:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
ace-assign add --yaml .ace-local/assign/jobs/<timestamp>-add-task-<taskref>.yml --after <parent> --child [--assignment <id>]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 7. Report Result
|
|
116
|
+
|
|
117
|
+
Report:
|
|
118
|
+
- Assignment ID
|
|
119
|
+
- Parent step used
|
|
120
|
+
- Hidden YAML path
|
|
121
|
+
- Inserted step numbers from CLI output
|
|
122
|
+
|
|
123
|
+
## Error Handling
|
|
124
|
+
|
|
125
|
+
| Scenario | Action |
|
|
126
|
+
|----------|--------|
|
|
127
|
+
| Missing taskref | Fail with usage and example invocation |
|
|
128
|
+
| No target assignment | Surface `ace-assign status` error |
|
|
129
|
+
| Parent not found | Fail with "step not found" and suggest `--parent` |
|
|
130
|
+
| Parent auto-detection failed | Fail with actionable message to pass `--parent` |
|
|
131
|
+
| Task not found | Surface `ace-task show` error unchanged |
|
|
132
|
+
| YAML render/write failure | Fail with concrete filesystem error |
|
|
133
|
+
| `ace-assign add --yaml` fails | Surface CLI error unchanged |
|
|
134
|
+
|
|
135
|
+
## Success Criteria
|
|
136
|
+
|
|
137
|
+
- Workflow inserts a new work-on-task subtree under the selected parent in one command
|
|
138
|
+
- Hidden YAML artifact is written under `.ace-local/assign/jobs/`
|
|
139
|
+
- Parent selection is deterministic with clear fallback to explicit `--parent`
|
|
140
|
+
- Output includes assignment, parent, and inserted step confirmation
|
|
141
|
+
|
|
142
|
+
## Verification
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
ace-bundle wfi://assign/add-task
|
|
146
|
+
```
|