ace-assign 0.41.10 → 0.53.4
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 +2 -17
- data/.ace-defaults/assign/catalog/steps/create-pr.step.yml +0 -26
- data/.ace-defaults/assign/catalog/steps/create-retro.step.yml +1 -1
- data/.ace-defaults/assign/catalog/steps/mark-task-done.step.yml +1 -2
- data/.ace-defaults/assign/catalog/steps/onboard.step.yml +0 -17
- data/.ace-defaults/assign/catalog/steps/plan-task.step.yml +0 -15
- data/.ace-defaults/assign/catalog/steps/pre-commit-review.step.yml +3 -0
- data/.ace-defaults/assign/catalog/steps/reflect-and-refactor.step.yml +3 -2
- data/.ace-defaults/assign/catalog/steps/review-pr.step.yml +0 -20
- data/.ace-defaults/assign/catalog/steps/task-load.step.yml +1 -1
- data/.ace-defaults/assign/catalog/steps/verify-test-suite.step.yml +7 -34
- data/.ace-defaults/assign/catalog/steps/verify-test.step.yml +7 -4
- data/.ace-defaults/assign/catalog/steps/work-on-task.step.yml +0 -21
- data/.ace-defaults/assign/presets/fix-bug.yml +4 -3
- data/.ace-defaults/assign/presets/quick-implement.yml +1 -1
- data/.ace-defaults/assign/presets/work-on-task.yml +3 -16
- data/CHANGELOG.md +260 -0
- data/README.md +20 -43
- data/docs/demo/canonical-skill-source.gif +0 -0
- data/docs/demo/canonical-skill-source.tape.yml +51 -0
- data/docs/demo/fork-provider.cast +957 -0
- data/docs/demo/fork-provider.gif +0 -0
- data/docs/demo/fork-provider.recording.json +32 -0
- data/docs/demo/fork-provider.tape.yml +65 -20
- data/docs/getting-started.md +5 -2
- data/docs/usage.md +63 -3
- data/handbook/guides/fork-context.g.md +2 -2
- data/handbook/skills/as-assign-drive/SKILL.md +13 -1
- data/handbook/skills/as-create-retro-internal/SKILL.md +29 -0
- data/handbook/skills/as-mark-task-done-internal/SKILL.md +29 -0
- data/handbook/skills/as-reflect-and-refactor-internal/SKILL.md +30 -0
- data/handbook/skills/as-task-load-internal/SKILL.md +28 -0
- data/handbook/workflow-instructions/assign/compose.wf.md +3 -3
- data/handbook/workflow-instructions/assign/create-retro-internal.wf.md +11 -0
- data/handbook/workflow-instructions/assign/create.wf.md +6 -3
- data/handbook/workflow-instructions/assign/drive.wf.md +273 -15
- data/handbook/workflow-instructions/assign/mark-task-done-internal.wf.md +12 -0
- data/handbook/workflow-instructions/assign/prepare.wf.md +5 -5
- data/handbook/workflow-instructions/assign/reflect-and-refactor-internal.wf.md +14 -0
- data/handbook/workflow-instructions/assign/run-in-batches.wf.md +4 -1
- data/handbook/workflow-instructions/assign/start.wf.md +5 -2
- data/handbook/workflow-instructions/assign/task-load-internal.wf.md +12 -0
- data/handbook/workflow-instructions/assign/verify-test-suite.wf.md +36 -0
- data/lib/ace/assign/atoms/catalog_loader.rb +105 -2
- data/lib/ace/assign/atoms/preset_expander.rb +12 -1
- data/lib/ace/assign/atoms/step_file_parser.rb +15 -0
- data/lib/ace/assign/cli/commands/assignment_target.rb +53 -0
- data/lib/ace/assign/cli/commands/finish.rb +7 -4
- data/lib/ace/assign/cli/commands/fork_run.rb +4 -1
- data/lib/ace/assign/cli/commands/fork_session.rb +52 -0
- data/lib/ace/assign/cli/commands/start.rb +9 -3
- data/lib/ace/assign/cli/commands/status.rb +231 -226
- data/lib/ace/assign/cli/commands/step.rb +62 -0
- data/lib/ace/assign/cli.rb +8 -1
- data/lib/ace/assign/models/step.rb +4 -2
- data/lib/ace/assign/molecules/fork_session_launcher.rb +189 -8
- data/lib/ace/assign/molecules/queue_scanner.rb +1 -0
- data/lib/ace/assign/molecules/skill_assign_source_resolver.rb +252 -50
- data/lib/ace/assign/molecules/tmux_fork_runner.rb +191 -0
- data/lib/ace/assign/organisms/assignment_executor.rb +294 -40
- data/lib/ace/assign/version.rb +1 -1
- metadata +21 -5
- data/.ace-defaults/assign/catalog/steps/verify-e2e.step.yml +0 -42
|
Binary file
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"backend": "asciinema",
|
|
3
|
+
"tape_path": "/home/mc/ace-t.u53.0/ace-assign/docs/demo/fork-provider.tape.yml",
|
|
4
|
+
"cast_path": "/home/mc/ace-t.u53.0/ace-assign/docs/demo/fork-provider.cast",
|
|
5
|
+
"visual_path": "/home/mc/ace-t.u53.0/ace-assign/docs/demo/fork-provider.gif",
|
|
6
|
+
"sandbox_path": "/home/mc/ace-t.u53.0/.ace-local/demo/sandbox/8rekyn",
|
|
7
|
+
"verification": {
|
|
8
|
+
"status": "scenario-defect",
|
|
9
|
+
"classification": "scenario_defect",
|
|
10
|
+
"summary": "Recording scenario failed verification",
|
|
11
|
+
"retryable": true,
|
|
12
|
+
"report_path": "/home/mc/ace-t.u53.0/.ace-local/demo/fork-provider-error-report.md",
|
|
13
|
+
"details": {
|
|
14
|
+
"cast_path": "/home/mc/ace-t.u53.0/ace-assign/docs/demo/fork-provider.cast",
|
|
15
|
+
"inputs_recorded": 0,
|
|
16
|
+
"echoed_commands_recorded": 70,
|
|
17
|
+
"script_commands_recorded": 0,
|
|
18
|
+
"commands_expected": 7,
|
|
19
|
+
"captured_vars": {
|
|
20
|
+
"ACE_TMUX_SESSION": "fork-demo PROJECT_ROOT_PATH=\"$PWD\" ace-assign fork-run --assignment \"$(cat ASSIGN_ID)@010\" --launch-mode tmux --provider codex:gpt@yolo --cli-args \"--no-alt-screen\" --timeout 120"
|
|
21
|
+
},
|
|
22
|
+
"missing_vars": [],
|
|
23
|
+
"missing_output": [
|
|
24
|
+
"{\"Task context\" => nil}"
|
|
25
|
+
],
|
|
26
|
+
"missing_output_sequence": null,
|
|
27
|
+
"forbidden_hits": [],
|
|
28
|
+
"assertion_failures": [],
|
|
29
|
+
"assertions_skipped": false
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,34 +1,79 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Show
|
|
2
|
+
description: Show tmux-backed fork execution opening a fork staging window from the current work window
|
|
3
3
|
tags:
|
|
4
4
|
- ace-assign
|
|
5
5
|
- fork
|
|
6
|
-
-
|
|
6
|
+
- tmux
|
|
7
|
+
- demo
|
|
7
8
|
settings:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
backend: asciinema
|
|
10
|
+
font_size: 14
|
|
11
|
+
width: 1200
|
|
12
|
+
height: 720
|
|
11
13
|
format: gif
|
|
14
|
+
output: ace-assign/docs/demo/fork-provider.gif
|
|
12
15
|
setup:
|
|
13
16
|
- sandbox
|
|
14
17
|
- git-init
|
|
15
|
-
-
|
|
18
|
+
- run: |
|
|
19
|
+
ruby -e 'require "fileutils"; root = File.dirname(ENV.fetch("BUNDLE_GEMFILE")); FileUtils.mkdir_p(".ace"); FileUtils.cp_r(File.join(root, ".ace", "llm"), File.join(".ace", "llm")); {".codex" => "skills", ".claude" => "skills", ".pi" => "skills"}.each { |dir, sub| src = File.join(root, dir, sub); next unless Dir.exist?(src); FileUtils.mkdir_p(dir); FileUtils.cp_r(src, File.join(dir, sub)) }'
|
|
20
|
+
- run: |
|
|
21
|
+
cat > fork-demo-job.yaml <<'YAML'
|
|
22
|
+
assignment:
|
|
23
|
+
name: tmux-fork-demo
|
|
24
|
+
description: Minimal assignment to demo tmux-backed fork execution
|
|
25
|
+
steps:
|
|
26
|
+
- name: demo-root
|
|
27
|
+
context: fork
|
|
28
|
+
instructions: |
|
|
29
|
+
Demonstrate tmux-backed fork execution for the assignment subtree.
|
|
30
|
+
sub_steps:
|
|
31
|
+
- onboard
|
|
32
|
+
YAML
|
|
33
|
+
- run: |
|
|
34
|
+
PROJECT_ROOT_PATH="$PWD" ace-assign create --yaml fork-demo-job.yaml
|
|
35
|
+
ruby -e 'link = ".ace-local/assign/.latest"; abort "no latest assignment" unless File.symlink?(link); File.write("ASSIGN_ID", File.basename(File.readlink(link)))'
|
|
36
|
+
- run: tmux new-session -d -s fork-demo -n work -c "$PWD" "bash --noprofile --norc -i"
|
|
37
|
+
- run: |
|
|
38
|
+
bash -lc 'sleep 45; tmux detach-client -s fork-demo || true' >/tmp/ace-demo-fork-provider-detach.log 2>&1 &
|
|
16
39
|
scenes:
|
|
17
|
-
- name:
|
|
40
|
+
- name: Attach to the operator work window
|
|
18
41
|
commands:
|
|
19
|
-
- type:
|
|
20
|
-
sleep:
|
|
21
|
-
-
|
|
42
|
+
- type: tmux attach -t fork-demo
|
|
43
|
+
sleep: 2s
|
|
44
|
+
- type: tmux display-message -p '#W'
|
|
45
|
+
sleep: 2s
|
|
46
|
+
- name: Launch the fork into a visible tmux window
|
|
22
47
|
commands:
|
|
23
|
-
- type:
|
|
24
|
-
sleep:
|
|
25
|
-
- type: "ace-assign
|
|
26
|
-
sleep:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
48
|
+
- type: ACE_TMUX_SESSION=fork-demo PROJECT_ROOT_PATH="$PWD" ace-assign status --assignment "$(cat ASSIGN_ID)@010"
|
|
49
|
+
sleep: 2s
|
|
50
|
+
- type: bash -lc 'ACE_TMUX_SESSION=fork-demo PROJECT_ROOT_PATH="$PWD" ace-assign fork-run --assignment "$(cat ASSIGN_ID)@010" --launch-mode tmux --provider codex:gpt@yolo --cli-args "--no-alt-screen" --timeout 120 &'
|
|
51
|
+
sleep: 35s
|
|
52
|
+
verify:
|
|
53
|
+
require_output:
|
|
54
|
+
- work
|
|
55
|
+
- work-fs
|
|
56
|
+
- $as-assign-drive
|
|
57
|
+
- Explored
|
|
58
|
+
require_output_sequence:
|
|
59
|
+
- work
|
|
60
|
+
- ace-assign fork-run
|
|
61
|
+
- work-fs
|
|
62
|
+
- $as-assign-drive
|
|
63
|
+
- Explored
|
|
64
|
+
forbid_output:
|
|
65
|
+
- requires an active tmux session
|
|
66
|
+
- Could not resolve current tmux window
|
|
67
|
+
- No such file or directory
|
|
68
|
+
- Unknown provider
|
|
69
|
+
- Unknown providers in llm.providers.active
|
|
70
|
+
- Fork session execution failed
|
|
71
|
+
- does not support interactive mode
|
|
72
|
+
- Do you trust the contents of this directory?
|
|
73
|
+
assert_commands:
|
|
74
|
+
- 'ASSIGN_ID=$(cat ASSIGN_ID); test -f ".ace-local/assign/${ASSIGN_ID}/sessions/010-session.yml"'
|
|
75
|
+
- |
|
|
76
|
+
ASSIGN_ID=$(cat ASSIGN_ID); ruby -e 'require "yaml"; id = File.read("ASSIGN_ID").strip; data = YAML.safe_load_file(".ace-local/assign/#{id}/sessions/010-session.yml"); abort "bad metadata" unless data["launch_mode"] == "tmux" && data["tmux_window"] == "work-fs" && data["provider"] == "codex" && data["model"] == "gpt-5.4"'
|
|
33
77
|
teardown:
|
|
78
|
+
- run: tmux kill-session -t fork-demo || true
|
|
34
79
|
- cleanup
|
data/docs/getting-started.md
CHANGED
|
@@ -67,6 +67,7 @@ ace-assign create --task t.100,t.101 --preset work-on-task
|
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
69
|
ace-assign status
|
|
70
|
+
ace-assign step
|
|
70
71
|
ace-assign finish --message onboard.md
|
|
71
72
|
ace-assign status
|
|
72
73
|
```
|
|
@@ -97,7 +98,8 @@ Use status views:
|
|
|
97
98
|
|
|
98
99
|
```bash
|
|
99
100
|
ace-assign status
|
|
100
|
-
ace-assign status --
|
|
101
|
+
ace-assign status --mode full
|
|
102
|
+
ace-assign status --mode progress
|
|
101
103
|
```
|
|
102
104
|
|
|
103
105
|
## 5) Use scoped assignment targeting
|
|
@@ -116,7 +118,8 @@ ace-assign finish --message report.md --assignment abc123@010.01
|
|
|
116
118
|
|---------|---------|
|
|
117
119
|
| `ace-assign create --yaml job.yaml` | Create assignment from YAML |
|
|
118
120
|
| `ace-assign create --task t.xyz` | Create assignment from task refs |
|
|
119
|
-
| `ace-assign status` | Show current queue |
|
|
121
|
+
| `ace-assign status` | Show current queue summary |
|
|
122
|
+
| `ace-assign step` | Show current or next step instructions |
|
|
120
123
|
| `ace-assign start` | Start next workable step |
|
|
121
124
|
| `ace-assign finish --message done.md` | Complete in-progress step |
|
|
122
125
|
| `ace-assign fail --message "error"` | Mark current step failed |
|
data/docs/usage.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
doc-type: user
|
|
3
3
|
title: ace-assign Usage Guide
|
|
4
|
-
purpose: Complete command reference for ace-assign queue orchestration, hierarchy,
|
|
4
|
+
purpose: Complete command reference for ace-assign queue orchestration, hierarchy,
|
|
5
|
+
and fork execution.
|
|
5
6
|
ace-docs:
|
|
6
|
-
last-updated: 2026-
|
|
7
|
-
last-checked: 2026-
|
|
7
|
+
last-updated: '2026-04-01'
|
|
8
|
+
last-checked: '2026-04-01'
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# ace-assign Usage Guide
|
|
@@ -22,12 +23,31 @@ Recommended:
|
|
|
22
23
|
ace-assign finish --message report.md
|
|
23
24
|
```
|
|
24
25
|
|
|
26
|
+
## Testing Contract
|
|
27
|
+
|
|
28
|
+
Use package-scoped test commands with explicit layers:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
ace-test ace-assign
|
|
32
|
+
ace-test ace-assign feat
|
|
33
|
+
ace-test ace-assign all
|
|
34
|
+
ace-test-e2e ace-assign
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
For assignment verification, `verify-test-suite` is the standard gate:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
ace-test <package> all --profile 6
|
|
41
|
+
ace-test-suite --target all
|
|
42
|
+
```
|
|
43
|
+
|
|
25
44
|
## Core Lifecycle
|
|
26
45
|
|
|
27
46
|
|
|
28
47
|
```bash
|
|
29
48
|
ace-assign create --yaml job.yaml
|
|
30
49
|
ace-assign status
|
|
50
|
+
ace-assign step
|
|
31
51
|
ace-assign finish --message step-010.md
|
|
32
52
|
ace-assign status
|
|
33
53
|
```
|
|
@@ -86,12 +106,41 @@ Show queue status for active or explicitly targeted assignment.
|
|
|
86
106
|
Options:
|
|
87
107
|
|
|
88
108
|
- `--flat, -f`
|
|
109
|
+
- `--mode compact|progress|full`
|
|
89
110
|
- `--format table|json`
|
|
90
111
|
- `--assignment <id>`
|
|
91
112
|
- `--all, -a`
|
|
92
113
|
- `--quiet, -q`
|
|
93
114
|
- `--debug, -d`
|
|
94
115
|
|
|
116
|
+
Text modes:
|
|
117
|
+
|
|
118
|
+
- `compact` (default) prints a short summary, hidden-step stats, and up to 5 upcoming step lines
|
|
119
|
+
- `progress` prints a single summary line
|
|
120
|
+
- `full` prints the full tree/table without step instructions
|
|
121
|
+
|
|
122
|
+
HITL stall behavior:
|
|
123
|
+
|
|
124
|
+
- Canonical contract lives in `wfi://hitl` (`ace-hitl` package workflow).
|
|
125
|
+
- If a step is failed with canonical message format `HITL: <id> <path>`, `ace-assign status` prints operator guidance with the matching `ace-hitl show <id>` command and available path hint.
|
|
126
|
+
- Recommended resume flow:
|
|
127
|
+
- `ace-hitl show <id>`
|
|
128
|
+
- requester path (default): `ace-hitl wait <id>`
|
|
129
|
+
- fallback path (when waiter inactive): `ace-hitl update <id> --answer "<decision>" --resume`
|
|
130
|
+
- `ace-assign retry <failed-step> --assignment <assignment-id>`
|
|
131
|
+
- Completion-attention flow:
|
|
132
|
+
- When assignment work is complete but explicit user action is needed, create an approval HITL event (`kind=approval`) and include the resume instruction for `/as-assign-drive <assignment-id>`.
|
|
133
|
+
|
|
134
|
+
### `ace-assign step [STEP]`
|
|
135
|
+
|
|
136
|
+
Show instructions for the current in-progress step, the next workable step, or an explicit step number.
|
|
137
|
+
|
|
138
|
+
Options:
|
|
139
|
+
|
|
140
|
+
- `--assignment <id>`
|
|
141
|
+
- `--quiet, -q`
|
|
142
|
+
- `--debug, -d`
|
|
143
|
+
|
|
95
144
|
### `ace-assign start [STEP]`
|
|
96
145
|
|
|
97
146
|
Start next workable pending step, or an explicit pending step in the active assignment.
|
|
@@ -105,6 +154,10 @@ Options:
|
|
|
105
154
|
### `ace-assign finish [STEP] --message VALUE`
|
|
106
155
|
|
|
107
156
|
Complete current in-progress step (or explicit step in active assignment) with report content.
|
|
157
|
+
Use positional `STEP` only for the active assignment. When targeting another
|
|
158
|
+
assignment or a scoped subtree, pass `--assignment <id>` or
|
|
159
|
+
`--assignment <id@step>` without a positional `STEP`; the command finishes the
|
|
160
|
+
current in-progress step in that target.
|
|
108
161
|
|
|
109
162
|
`--message` accepts:
|
|
110
163
|
|
|
@@ -168,9 +221,16 @@ Options:
|
|
|
168
221
|
- `--provider <provider:model>`
|
|
169
222
|
- `--cli-args <args>`
|
|
170
223
|
- `--timeout <seconds>`
|
|
224
|
+
- `--launch-mode auto|headless|tmux`
|
|
171
225
|
- `--quiet, -q`
|
|
172
226
|
- `--debug, -d`
|
|
173
227
|
|
|
228
|
+
Launch modes:
|
|
229
|
+
|
|
230
|
+
- `auto` (default): use tmux when the current process is already inside tmux or `ACE_TMUX_SESSION` is set; otherwise use the headless subprocess path
|
|
231
|
+
- `headless`: force the existing provider subprocess path and never create tmux panes
|
|
232
|
+
- `tmux`: require tmux context, create or reuse `<current-window>-fs`, start a real interactive agent in a pane there via `ace-llm --interactive`, and send the scoped `/as-assign-drive <assignment>@<root>` handoff automatically
|
|
233
|
+
|
|
174
234
|
Provider resolution precedence for fork execution:
|
|
175
235
|
|
|
176
236
|
1. CLI `--provider`
|
|
@@ -95,7 +95,7 @@ Return structured summary:
|
|
|
95
95
|
When `ace:assign-drive` (or manual orchestration) encounters a fork-enabled subtree:
|
|
96
96
|
|
|
97
97
|
1. Runs `ace-assign status`
|
|
98
|
-
2.
|
|
98
|
+
2. Uses compact/full status only to identify the active fork-capable step or subtree root
|
|
99
99
|
3. Delegates with `ace-assign fork-run --assignment <id>@<root>`
|
|
100
100
|
4. Fork launcher executes `/as-assign-drive <id>@<root>` in a scoped process
|
|
101
101
|
5. Scoped process advances only inside subtree
|
|
@@ -105,7 +105,7 @@ When `ace:assign-drive` (or manual orchestration) encounters a fork-enabled subt
|
|
|
105
105
|
ace:assign-drive loop
|
|
106
106
|
|
|
|
107
107
|
+-- ace-assign status
|
|
108
|
-
+--
|
|
108
|
+
+-- Resolve fork subtree root from assignment state
|
|
109
109
|
+-- ace-assign fork-run --assignment <id>@<root>
|
|
110
110
|
+-- Forked /as-assign-drive <id>@<root>
|
|
111
111
|
+-- Subtree completes
|
|
@@ -12,7 +12,7 @@ allowed-tools:
|
|
|
12
12
|
- AskUserQuestion
|
|
13
13
|
- Skill
|
|
14
14
|
argument-hint: "[assignment[@scope]]"
|
|
15
|
-
last_modified: 2026-
|
|
15
|
+
last_modified: 2026-04-07
|
|
16
16
|
source: ace-assign
|
|
17
17
|
skill:
|
|
18
18
|
kind: workflow
|
|
@@ -22,3 +22,15 @@ skill:
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
24
|
Load and run `ace-bundle wfi://assign/drive` 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.
|
|
25
|
+
|
|
26
|
+
Hard stop rule:
|
|
27
|
+
|
|
28
|
+
- Do not stop after intermediate progress.
|
|
29
|
+
- Do not stop while waiting on a forked subtree; keep polling and resume the parent drive loop as soon as the subtree reaches a terminal state.
|
|
30
|
+
- Treat `ace-assign status --assignment <id>@<root>` as the source of truth for fork completion; quiet terminal output is not enough reason to stop or declare a stall.
|
|
31
|
+
- If a prior terminal or drive session ended, re-enter from assignment state and continue from the next runnable work instead of depending on the old terminal handle.
|
|
32
|
+
- Before any final response, re-check pinned assignment status. If any runnable `pending` or `in_progress` work remains, continue driving.
|
|
33
|
+
- If unrelated dirty files are generated side effects outside task scope, clean/reset them instead of auto-committing them.
|
|
34
|
+
- Use progress updates for partial status only.
|
|
35
|
+
- Return a final user-facing completion response only when the assignment is complete or the workflow reaches an explicit blocker/failure stop condition.
|
|
36
|
+
- If pending work remains runnable, continue driving.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# bundle: wfi://assign/create-retro-internal
|
|
2
|
+
# agent: general-purpose
|
|
3
|
+
---
|
|
4
|
+
name: as-create-retro-internal
|
|
5
|
+
description: Internal helper for retrospective creation in assignment closeout
|
|
6
|
+
user-invocable: false
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Bash(ace-bundle:*)
|
|
9
|
+
- Bash(ace-retro:*)
|
|
10
|
+
- Read
|
|
11
|
+
- Write
|
|
12
|
+
argument-hint: "[retro-title]"
|
|
13
|
+
last_modified: 2026-04-05
|
|
14
|
+
source: ace-assign
|
|
15
|
+
skill:
|
|
16
|
+
kind: workflow
|
|
17
|
+
execution:
|
|
18
|
+
workflow: wfi://assign/create-retro-internal
|
|
19
|
+
assign:
|
|
20
|
+
source: wfi://assign/create-retro-internal
|
|
21
|
+
steps:
|
|
22
|
+
- name: create-retro
|
|
23
|
+
description: Create retrospective summarizing outcomes and lessons
|
|
24
|
+
prerequisites:
|
|
25
|
+
- name: reflect-and-refactor
|
|
26
|
+
strength: recommended
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Load and run `ace-bundle wfi://assign/create-retro-internal` in the current project, then follow the loaded workflow as the source of truth.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-mark-task-done-internal
|
|
3
|
+
description: Internal helper for marking tasks done with verification
|
|
4
|
+
# bundle: wfi://assign/mark-task-done-internal
|
|
5
|
+
# agent: general-purpose
|
|
6
|
+
user-invocable: false
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Bash(ace-bundle:*)
|
|
9
|
+
- Bash(ace-task:*)
|
|
10
|
+
- Read
|
|
11
|
+
- Write
|
|
12
|
+
argument-hint: "[taskref]"
|
|
13
|
+
last_modified: 2026-04-05
|
|
14
|
+
source: ace-assign
|
|
15
|
+
skill:
|
|
16
|
+
kind: workflow
|
|
17
|
+
execution:
|
|
18
|
+
workflow: wfi://assign/mark-task-done-internal
|
|
19
|
+
assign:
|
|
20
|
+
source: wfi://assign/mark-task-done-internal
|
|
21
|
+
steps:
|
|
22
|
+
- name: mark-task-done
|
|
23
|
+
description: Mark task complete and verify persisted status
|
|
24
|
+
prerequisites:
|
|
25
|
+
- name: work-on-task
|
|
26
|
+
strength: required
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Load and run `ace-bundle wfi://assign/mark-task-done-internal` in the current project, then follow the loaded workflow as the source of truth.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# bundle: wfi://assign/reflect-and-refactor-internal
|
|
2
|
+
# agent: general-purpose
|
|
3
|
+
---
|
|
4
|
+
name: as-reflect-and-refactor-internal
|
|
5
|
+
description: Internal helper for architecture reflection and bounded refactoring
|
|
6
|
+
user-invocable: false
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Bash(ace-bundle:*)
|
|
9
|
+
- Bash(ace-review:*)
|
|
10
|
+
- Bash(ace-git-commit:*)
|
|
11
|
+
- Read
|
|
12
|
+
- Write
|
|
13
|
+
argument-hint: "[assignment-context]"
|
|
14
|
+
last_modified: 2026-04-05
|
|
15
|
+
source: ace-assign
|
|
16
|
+
skill:
|
|
17
|
+
kind: workflow
|
|
18
|
+
execution:
|
|
19
|
+
workflow: wfi://assign/reflect-and-refactor-internal
|
|
20
|
+
assign:
|
|
21
|
+
source: wfi://assign/reflect-and-refactor-internal
|
|
22
|
+
steps:
|
|
23
|
+
- name: reflect-and-refactor
|
|
24
|
+
description: Run architecture reflection and execute bounded refactoring
|
|
25
|
+
prerequisites:
|
|
26
|
+
- name: work-on-task
|
|
27
|
+
strength: required
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
Load and run `ace-bundle wfi://assign/reflect-and-refactor-internal` in the current project, then follow the loaded workflow as the source of truth.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-task-load-internal
|
|
3
|
+
description: Internal helper for loading task context into assignment execution
|
|
4
|
+
# bundle: wfi://assign/task-load-internal
|
|
5
|
+
# agent: general-purpose
|
|
6
|
+
user-invocable: false
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Bash(ace-bundle:*)
|
|
9
|
+
- Read
|
|
10
|
+
- Write
|
|
11
|
+
argument-hint: "[taskref]"
|
|
12
|
+
last_modified: 2026-04-05
|
|
13
|
+
source: ace-assign
|
|
14
|
+
skill:
|
|
15
|
+
kind: workflow
|
|
16
|
+
execution:
|
|
17
|
+
workflow: wfi://assign/task-load-internal
|
|
18
|
+
assign:
|
|
19
|
+
source: wfi://assign/task-load-internal
|
|
20
|
+
steps:
|
|
21
|
+
- name: task-load
|
|
22
|
+
description: Load task behavioral spec and dependency context into assignment execution
|
|
23
|
+
prerequisites:
|
|
24
|
+
- name: onboard-base
|
|
25
|
+
strength: recommended
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
Load and run `ace-bundle wfi://assign/task-load-internal` in the current project, then follow the loaded workflow as the source of truth.
|
|
@@ -172,14 +172,14 @@ session:
|
|
|
172
172
|
|
|
173
173
|
steps:
|
|
174
174
|
- name: verify-test-suite
|
|
175
|
-
|
|
175
|
+
source: wfi://assign/verify-test-suite
|
|
176
176
|
instructions:
|
|
177
177
|
- Run package test verification.
|
|
178
178
|
```
|
|
179
179
|
|
|
180
180
|
Step mapping source of truth:
|
|
181
181
|
- `name` from canonicalized step catalog entry
|
|
182
|
-
- `
|
|
182
|
+
- `source` from canonicalized step catalog entry (step runtime contract)
|
|
183
183
|
- `context` from canonicalized step catalog entry (if set)
|
|
184
184
|
- `instructions` as assignment overlay from catalog description + request-specific context
|
|
185
185
|
|
|
@@ -253,4 +253,4 @@ After job.yaml is created:
|
|
|
253
253
|
/as-assign-create <job.yaml>
|
|
254
254
|
# or
|
|
255
255
|
/as-assign-create "...intent..." --run
|
|
256
|
-
```
|
|
256
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# create-retro-internal
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Capture retrospective learnings after assignment implementation/release steps complete.
|
|
6
|
+
|
|
7
|
+
## Steps
|
|
8
|
+
|
|
9
|
+
1. Summarize outcomes, key decisions, and verification results.
|
|
10
|
+
2. Capture issues, risks, and follow-up actions.
|
|
11
|
+
3. Record the retrospective artifact in the task/retro system used by the assignment.
|
|
@@ -3,7 +3,7 @@ doc-type: workflow
|
|
|
3
3
|
title: Create Assignment Workflow
|
|
4
4
|
purpose: workflow instruction for smart public create UX that renders hidden specs and calls deterministic ace-assign create
|
|
5
5
|
ace-docs:
|
|
6
|
-
last-updated: 2026-
|
|
6
|
+
last-updated: 2026-04-07
|
|
7
7
|
last-checked: 2026-03-21
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -128,12 +128,12 @@ session:
|
|
|
128
128
|
|
|
129
129
|
steps:
|
|
130
130
|
- name: <step-name>
|
|
131
|
-
|
|
131
|
+
source: <source-ref-skill-or-wfi>
|
|
132
132
|
instructions:
|
|
133
133
|
- <instruction line>
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
-
`instructions` are assignment overlay only. The reusable execution body comes from the
|
|
136
|
+
`instructions` are assignment overlay only. The reusable execution body comes from the canonical source resolution during `ace-assign create`.
|
|
137
137
|
|
|
138
138
|
Rules:
|
|
139
139
|
- Each invocation writes a new file (no in-place mutation of prior hidden specs).
|
|
@@ -156,6 +156,8 @@ If `--run` is present, hand off to drive as the last step:
|
|
|
156
156
|
/as-assign-drive <assignment-id>
|
|
157
157
|
```
|
|
158
158
|
|
|
159
|
+
`/as-assign-drive` is a run-until-complete-or-blocked handoff, not a one-step progress check. Once handed off, it should keep driving until the assignment is actually complete or reaches an explicit blocker/failure stop condition.
|
|
160
|
+
|
|
159
161
|
If no workable step exists, keep creation successful and report why drive cannot continue.
|
|
160
162
|
|
|
161
163
|
### 7. Report Result
|
|
@@ -203,6 +205,7 @@ Step 010: ...
|
|
|
203
205
|
- Capability skills remain excluded from assign composition
|
|
204
206
|
- Skill-backed steps still expand through runtime `assign.source` metadata
|
|
205
207
|
- `--run` (when requested) triggers drive handoff as the final workflow step
|
|
208
|
+
- Drive handoff semantics are run-until-complete-or-blocked, not stop-after-first-progress
|
|
206
209
|
|
|
207
210
|
## Verification
|
|
208
211
|
|