ace-assign 0.56.1 → 0.57.1
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 +27 -34
- data/.ace-defaults/assign/catalog/recipes/batch-tasks.recipe.yml +11 -9
- data/.ace-defaults/assign/catalog/recipes/documentation.recipe.yml +1 -1
- data/.ace-defaults/assign/catalog/recipes/fix-and-review.recipe.yml +11 -5
- data/.ace-defaults/assign/catalog/recipes/implement-with-pr.recipe.yml +11 -9
- data/.ace-defaults/assign/catalog/steps/apply-feedback.step.yml +1 -4
- data/.ace-defaults/assign/catalog/steps/create-pr.step.yml +1 -0
- data/.ace-defaults/assign/catalog/steps/mark-pr-ready.step.yml +11 -0
- data/.ace-defaults/assign/catalog/steps/review-pr.step.yml +2 -0
- data/.ace-defaults/assign/presets/fix-bug.yml +13 -15
- data/.ace-defaults/assign/presets/work-on-task-ace-development.yml +22 -10
- data/.ace-defaults/assign/presets/work-on-task-auto-merge.yml +27 -15
- data/.ace-defaults/assign/presets/work-on-task-in-place.yml +1 -0
- data/.ace-defaults/assign/presets/work-on-task.yml +25 -45
- data/CHANGELOG.md +11 -0
- data/handbook/workflow-instructions/assign/compose.wf.md +1 -1
- data/handbook/workflow-instructions/assign/drive.wf.md +4 -12
- data/handbook/workflow-instructions/assign/prepare.wf.md +18 -36
- data/lib/ace/assign/atoms/composition_rules.rb +13 -13
- data/lib/ace/assign/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 64ca0ab83e21423599cccecfdc9b20e7dfc4c62b0e262e40bf82dc96ba68e0e0
|
|
4
|
+
data.tar.gz: 5515ff2144574af8f820437a1423106925ec6f8674f5838921249445c8547f3b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42b4a978e165872d2bb9c89e6ab9cd6ddc6698c2664d054c0c6fde53de2b18981288dde5f6760e2f4ca2fe6b41811deeafb1435b9071b80a36fe211a2abeeb00
|
|
7
|
+
data.tar.gz: f6c97237effc40614bcceb08b25a577a70fe0bc0d034791df6f90a8cf0050d9e9adf935bf89834bfd0a7641b2c3f5c5787bd8b73941e9784b04bcb479a0c61d9
|
|
@@ -10,9 +10,27 @@ ordering:
|
|
|
10
10
|
before: create-pr
|
|
11
11
|
after: review-pr
|
|
12
12
|
|
|
13
|
-
- rule:
|
|
13
|
+
- rule: apply-before-final-review
|
|
14
|
+
before: apply-feedback
|
|
15
|
+
after: review-pr
|
|
16
|
+
before_occurrence: last
|
|
17
|
+
after_occurrence: last
|
|
18
|
+
note: "The review-pr workflow includes fixes and its completed review rounds"
|
|
19
|
+
|
|
20
|
+
- rule: review-before-ready
|
|
14
21
|
before: review-pr
|
|
15
|
-
after:
|
|
22
|
+
after: mark-pr-ready
|
|
23
|
+
before_occurrence: last
|
|
24
|
+
|
|
25
|
+
- rule: pr-desc-before-ready
|
|
26
|
+
before: update-pr-desc
|
|
27
|
+
after: mark-pr-ready
|
|
28
|
+
before_occurrence: last
|
|
29
|
+
|
|
30
|
+
- rule: ready-before-merge
|
|
31
|
+
before: mark-pr-ready
|
|
32
|
+
after: auto-merge
|
|
33
|
+
before_occurrence: last
|
|
16
34
|
|
|
17
35
|
- rule: onboard-before-plan
|
|
18
36
|
before: onboard
|
|
@@ -73,6 +91,13 @@ ordering:
|
|
|
73
91
|
after: update-pr-desc
|
|
74
92
|
note: "PR description should reflect pushed state"
|
|
75
93
|
|
|
94
|
+
- rule: review-before-update-pr
|
|
95
|
+
before: review-pr
|
|
96
|
+
after: update-pr-desc
|
|
97
|
+
before_occurrence: last
|
|
98
|
+
after_occurrence: last
|
|
99
|
+
note: "PR description should reflect fixes and evidence from the completed review"
|
|
100
|
+
|
|
76
101
|
- rule: release-before-pr
|
|
77
102
|
before: release
|
|
78
103
|
after: create-pr
|
|
@@ -103,11 +128,6 @@ ordering:
|
|
|
103
128
|
after: create-retro
|
|
104
129
|
note: "Retro captures learnings after all implementation and release work is complete"
|
|
105
130
|
|
|
106
|
-
- rule: retro-after-apply-feedback
|
|
107
|
-
before: apply-feedback
|
|
108
|
-
after: create-retro
|
|
109
|
-
note: "Retro should follow all feedback application in review cycles"
|
|
110
|
-
|
|
111
131
|
- rule: update-docs-after-release
|
|
112
132
|
before: release
|
|
113
133
|
after: update-docs
|
|
@@ -119,11 +139,6 @@ ordering:
|
|
|
119
139
|
note: "Updated docs should be visible to PR reviewers"
|
|
120
140
|
|
|
121
141
|
pairs:
|
|
122
|
-
- name: review-apply-cycle
|
|
123
|
-
steps: [review-pr, apply-feedback]
|
|
124
|
-
pattern: sequential
|
|
125
|
-
note: "Reviews should be followed by feedback application"
|
|
126
|
-
|
|
127
142
|
- name: test-fix-cycle
|
|
128
143
|
steps: [verify-test-suite, fix-tests]
|
|
129
144
|
pattern: conditional
|
|
@@ -134,11 +149,6 @@ pairs:
|
|
|
134
149
|
pattern: sequential
|
|
135
150
|
note: "Reorganize then push for clean remote history"
|
|
136
151
|
|
|
137
|
-
- name: apply-release-cycle
|
|
138
|
-
steps: [apply-feedback, release]
|
|
139
|
-
pattern: sequential
|
|
140
|
-
note: "Patch release after applying review feedback"
|
|
141
|
-
|
|
142
152
|
- name: reflect-verify-cycle
|
|
143
153
|
steps: [reflect-and-refactor, verify-test-suite]
|
|
144
154
|
pattern: conditional
|
|
@@ -184,23 +194,6 @@ conditional:
|
|
|
184
194
|
suggest: [security-audit]
|
|
185
195
|
strength: optional
|
|
186
196
|
|
|
187
|
-
- when: "assignment includes review-pr and apply-feedback"
|
|
188
|
-
suggest: [release]
|
|
189
|
-
strength: recommended
|
|
190
|
-
note: "Patch release after each review cycle captures fixes"
|
|
191
|
-
|
|
192
197
|
fork_context:
|
|
193
198
|
onboard_required: true
|
|
194
199
|
note: "Steps with fork context should include onboard instruction as first step"
|
|
195
|
-
|
|
196
|
-
review_cycles:
|
|
197
|
-
default_count: 3
|
|
198
|
-
max_count: 5
|
|
199
|
-
preset_progression:
|
|
200
|
-
1: code-valid
|
|
201
|
-
2: code-fit
|
|
202
|
-
3: code-shine
|
|
203
|
-
focus_progression:
|
|
204
|
-
1: "Correctness: bugs, logic errors, missing functionality, broken contracts"
|
|
205
|
-
2: "Quality: performance, architecture, standards, test coverage"
|
|
206
|
-
3: "Polish: simplification, naming, documentation (non-blocking suggestions)"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: batch-tasks
|
|
2
|
-
description: Work on multiple tasks with PR, review
|
|
2
|
+
description: Work on multiple tasks with PR, iterative review, and releases
|
|
3
3
|
|
|
4
4
|
matches:
|
|
5
5
|
- "work on tasks *"
|
|
@@ -8,7 +8,6 @@ matches:
|
|
|
8
8
|
|
|
9
9
|
parameters:
|
|
10
10
|
taskrefs: { required: true, type: array }
|
|
11
|
-
review_cycles: { required: false, default: 3 }
|
|
12
11
|
|
|
13
12
|
steps:
|
|
14
13
|
- name: onboard
|
|
@@ -25,20 +24,23 @@ steps:
|
|
|
25
24
|
note: "Initial version bump (usually minor)"
|
|
26
25
|
- name: create-pr
|
|
27
26
|
required: true
|
|
28
|
-
|
|
29
|
-
repeat: "{{review_cycles}}"
|
|
30
|
-
context: fork
|
|
31
|
-
sub_steps: [review-pr, apply-feedback, release, create-retro]
|
|
32
|
-
note: "Each cycle includes patch release after applying feedback"
|
|
27
|
+
instructions_template: "Create the pull request with --draft; keep it draft until the review completion rule is met."
|
|
33
28
|
- name: reorganize-commits
|
|
34
29
|
required: false
|
|
35
30
|
- name: push-to-remote
|
|
36
31
|
required: true
|
|
32
|
+
- name: review-pr
|
|
33
|
+
required: true
|
|
34
|
+
workflow: wfi://review/pr
|
|
35
|
+
note: "Apply verified fixes, release as needed, and rerun affected scopes using the shared round completion rule"
|
|
37
36
|
- name: update-pr-desc
|
|
38
|
-
required:
|
|
37
|
+
required: true
|
|
38
|
+
- name: mark-pr-ready
|
|
39
|
+
required: true
|
|
40
|
+
note: "Only after review completion rule and PR description update"
|
|
39
41
|
|
|
40
42
|
customization_hints:
|
|
41
43
|
- "Add create-pr after batch for consolidated review"
|
|
42
|
-
- "
|
|
44
|
+
- "Use the iterative PR review workflow for all changed modules"
|
|
43
45
|
- "Reduce batch size for complex tasks"
|
|
44
46
|
- "Skip reorganize-commits if history is already clean"
|
|
@@ -31,5 +31,5 @@ steps:
|
|
|
31
31
|
customization_hints:
|
|
32
32
|
- "Add create-pr step if create_pr=true for documentation PRs"
|
|
33
33
|
- "Add lint step for markdown linting"
|
|
34
|
-
- "Add review-
|
|
34
|
+
- "Add review-pr with wfi://review/pr for critical documentation PRs"
|
|
35
35
|
- "Skip onboard if already in context"
|
|
@@ -8,7 +8,6 @@ matches:
|
|
|
8
8
|
|
|
9
9
|
parameters:
|
|
10
10
|
taskref: { required: true }
|
|
11
|
-
review_cycles: { required: false, default: 1 }
|
|
12
11
|
|
|
13
12
|
steps:
|
|
14
13
|
- name: onboard
|
|
@@ -22,11 +21,18 @@ steps:
|
|
|
22
21
|
required: true
|
|
23
22
|
- name: create-pr
|
|
24
23
|
required: true
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
instructions_template: "Create the pull request with --draft; keep it draft until the review completion rule is met."
|
|
25
|
+
- name: review-pr
|
|
26
|
+
required: true
|
|
27
|
+
workflow: wfi://review/pr
|
|
28
|
+
note: "Iterate verified fixes and affected reviews until the round completion rule is met"
|
|
29
|
+
- name: update-pr-desc
|
|
30
|
+
required: true
|
|
31
|
+
- name: mark-pr-ready
|
|
32
|
+
required: true
|
|
33
|
+
note: "Only after review completion rule"
|
|
28
34
|
|
|
29
35
|
customization_hints:
|
|
30
36
|
- "Add fix-tests after verify-test-suite if failures found"
|
|
31
37
|
- "Add security-audit for security-related fixes"
|
|
32
|
-
- "
|
|
38
|
+
- "Include integration scope when the fix crosses module boundaries"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: implement-with-pr
|
|
2
|
-
description: Implement a task, create PR, and
|
|
2
|
+
description: Implement a task, create PR, and review until the current PR passes
|
|
3
3
|
|
|
4
4
|
matches:
|
|
5
5
|
- "work on task * and create PR"
|
|
@@ -8,7 +8,6 @@ matches:
|
|
|
8
8
|
|
|
9
9
|
parameters:
|
|
10
10
|
taskref: { required: true }
|
|
11
|
-
review_cycles: { required: false, default: 3 }
|
|
12
11
|
|
|
13
12
|
steps:
|
|
14
13
|
- name: onboard
|
|
@@ -29,11 +28,7 @@ steps:
|
|
|
29
28
|
note: "Initial version bump (usually minor)"
|
|
30
29
|
- name: create-pr
|
|
31
30
|
required: true
|
|
32
|
-
|
|
33
|
-
repeat: "{{review_cycles}}"
|
|
34
|
-
context: fork
|
|
35
|
-
sub_steps: [review-pr, apply-feedback, release, create-retro]
|
|
36
|
-
note: "Each cycle uses preset_progression from composition rules (1: code-valid, 2: code-fit, 3: code-shine)"
|
|
31
|
+
instructions_template: "Create the pull request with --draft; keep it draft until the review completion rule is met."
|
|
37
32
|
- name: reorganize-commits
|
|
38
33
|
required: false
|
|
39
34
|
- name: push-to-remote
|
|
@@ -41,12 +36,19 @@ steps:
|
|
|
41
36
|
- name: record-demo
|
|
42
37
|
required: false
|
|
43
38
|
note: "Record demos for modified packages with tapes; skip if no tapes or VHS unavailable"
|
|
39
|
+
- name: review-pr
|
|
40
|
+
required: true
|
|
41
|
+
workflow: wfi://review/pr
|
|
42
|
+
note: "Verify and fix findings; rerun affected scopes until a fresh integration review passes on the current head"
|
|
44
43
|
- name: update-pr-desc
|
|
45
|
-
required:
|
|
44
|
+
required: true
|
|
45
|
+
- name: mark-pr-ready
|
|
46
|
+
required: true
|
|
47
|
+
note: "Only after review completion rule and PR description update"
|
|
46
48
|
|
|
47
49
|
customization_hints:
|
|
48
50
|
- "Skip onboard if already onboarded in a previous assignment"
|
|
49
51
|
- "Add security-audit for security-sensitive changes"
|
|
50
|
-
- "
|
|
52
|
+
- "Use focused review scopes for simple changes; completion follows the shared round rule"
|
|
51
53
|
- "Skip reorganize-commits if commit history is already clean"
|
|
52
54
|
- "Skip record-demo if VHS is not available or no tape files exist"
|
|
@@ -2,10 +2,7 @@ name: apply-feedback
|
|
|
2
2
|
skill: as-review-apply-feedback
|
|
3
3
|
description: Apply review feedback and commit improvements
|
|
4
4
|
|
|
5
|
-
prerequisites:
|
|
6
|
-
- name: review-pr
|
|
7
|
-
strength: required
|
|
8
|
-
reason: "Must have review feedback to apply"
|
|
5
|
+
prerequisites: []
|
|
9
6
|
|
|
10
7
|
produces: [code-changes, commits]
|
|
11
8
|
consumes: [review-feedback]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
name: mark-pr-ready
|
|
2
|
+
description: Mark a reviewed draft pull request ready after the review completion rule
|
|
3
|
+
instructions: "After the review completion rule is met and appropriate tests have passed, run gh pr ready on the draft PR."
|
|
4
|
+
prerequisites:
|
|
5
|
+
- name: review-pr
|
|
6
|
+
strength: required
|
|
7
|
+
reason: Review must complete before marking the PR ready
|
|
8
|
+
- name: update-pr-desc
|
|
9
|
+
strength: required
|
|
10
|
+
reason: The PR description must record the review rounds, reviewer roster, tests, and dispositions before readiness
|
|
11
|
+
consumes: [review-feedback]
|
|
@@ -8,10 +8,6 @@ parameters:
|
|
|
8
8
|
taskref:
|
|
9
9
|
required: true
|
|
10
10
|
description: Task reference for the bug fix (e.g., 123 or 256.01)
|
|
11
|
-
review_cycles:
|
|
12
|
-
required: false
|
|
13
|
-
default: 1
|
|
14
|
-
description: Number of review cycles to perform
|
|
15
11
|
|
|
16
12
|
steps:
|
|
17
13
|
- name: onboard
|
|
@@ -44,23 +40,25 @@ steps:
|
|
|
44
40
|
skill: as-github-pr-create
|
|
45
41
|
instructions:
|
|
46
42
|
- Create a pull request for the bug fix.
|
|
43
|
+
- Create it as a draft with --draft; mark it ready only after the review completion rule is met.
|
|
47
44
|
- Include reference to the bug/task in the PR description.
|
|
48
45
|
|
|
49
|
-
- name: review-
|
|
50
|
-
|
|
51
|
-
context: fork
|
|
46
|
+
- name: review-pr
|
|
47
|
+
workflow: wfi://review/pr
|
|
52
48
|
instructions:
|
|
53
|
-
- "
|
|
54
|
-
-
|
|
55
|
-
|
|
49
|
+
- "Follow wfi://review/pr: minimum 3 completed PR rounds, last 2 without confirmed P0/P1. Include integration within those rounds."
|
|
50
|
+
- "Verify findings, fix concrete defects, and run appropriate tests. Record rounds and dispositions; commits do not reset counters."
|
|
51
|
+
|
|
52
|
+
- name: update-pr-desc
|
|
53
|
+
workflow: wfi://github/pr/update
|
|
54
|
+
instructions:
|
|
55
|
+
- "Record the review rounds, actual reviewers, findings and tests in the PR description before marking it ready."
|
|
56
56
|
|
|
57
|
-
- name:
|
|
58
|
-
skill: as-review-apply-feedback
|
|
57
|
+
- name: mark-pr-ready
|
|
59
58
|
instructions:
|
|
60
|
-
-
|
|
61
|
-
- Commit changes with descriptive messages.
|
|
59
|
+
- "After review completes and appropriate tests pass, run `gh pr ready` on the draft PR."
|
|
62
60
|
|
|
63
61
|
customization_hints:
|
|
64
62
|
- "Add fix-tests after verify-test-suite if failures found"
|
|
65
63
|
- "Add security-audit for security-related fixes"
|
|
66
|
-
- "
|
|
64
|
+
- "Use more focused scopes for critical fixes; continue until important findings are resolved"
|
|
@@ -33,13 +33,7 @@ steps:
|
|
|
33
33
|
workflow: wfi://github/pr/create
|
|
34
34
|
instructions:
|
|
35
35
|
- "Create a pull request summarizing batch tasks: {{taskrefs}}."
|
|
36
|
-
|
|
37
|
-
- name: review-valid-1
|
|
38
|
-
number: "040"
|
|
39
|
-
context: fork
|
|
40
|
-
sub_steps: [review-pr, apply-feedback, release]
|
|
41
|
-
instructions:
|
|
42
|
-
- Execute valid review cycle.
|
|
36
|
+
- "Create it as a draft with --draft; mark it ready only after the review completion rule is met."
|
|
43
37
|
|
|
44
38
|
- name: record-demo
|
|
45
39
|
number: "145"
|
|
@@ -47,13 +41,31 @@ steps:
|
|
|
47
41
|
- "Record a demo showing the feature implemented in this PR."
|
|
48
42
|
|
|
49
43
|
- name: mark-tasks-done
|
|
50
|
-
number: "
|
|
44
|
+
number: "146"
|
|
51
45
|
workflow: wfi://task/update
|
|
52
46
|
instructions:
|
|
53
|
-
- "Mark each top-level task in {{taskrefs}} as done and archive it."
|
|
47
|
+
- "Mark each top-level task in {{taskrefs}} as done and archive it before review."
|
|
54
48
|
|
|
55
49
|
- name: create-retro
|
|
56
|
-
number: "
|
|
50
|
+
number: "147"
|
|
57
51
|
skill: as-retro-create
|
|
58
52
|
instructions:
|
|
59
53
|
- "Create a retrospective for the batch work on: {{taskrefs}}."
|
|
54
|
+
|
|
55
|
+
- name: review-pr
|
|
56
|
+
number: "148"
|
|
57
|
+
workflow: wfi://review/pr
|
|
58
|
+
instructions:
|
|
59
|
+
- "Follow wfi://review/pr: minimum 3 completed PR rounds, last 2 without confirmed P0/P1. Include integration within those rounds."
|
|
60
|
+
- "Verify findings, fix concrete defects, and run appropriate tests. Record rounds and dispositions; commits do not reset counters."
|
|
61
|
+
|
|
62
|
+
- name: update-pr-desc
|
|
63
|
+
number: "149"
|
|
64
|
+
workflow: wfi://github/pr/update
|
|
65
|
+
instructions:
|
|
66
|
+
- "Record the review rounds, actual reviewers, findings and tests in the PR description before marking it ready."
|
|
67
|
+
|
|
68
|
+
- name: mark-pr-ready
|
|
69
|
+
number: "150"
|
|
70
|
+
instructions:
|
|
71
|
+
- "After review completes and appropriate tests pass, run `gh pr ready` on the draft PR."
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Advanced authorized guarded auto-merge task delivery preset
|
|
3
3
|
|
|
4
4
|
name: work-on-task-auto-merge
|
|
5
|
-
description: Work on a task with PR, review
|
|
5
|
+
description: Work on a task with PR, converging review rounds, and advance authorization for guarded auto-merge
|
|
6
6
|
|
|
7
7
|
parameters:
|
|
8
8
|
taskrefs:
|
|
@@ -22,26 +22,38 @@ steps:
|
|
|
22
22
|
workflow: wfi://github/pr/create
|
|
23
23
|
instructions:
|
|
24
24
|
- "Create a pull request summarizing task: {{taskrefs}}."
|
|
25
|
-
|
|
26
|
-
- name: review-valid-1
|
|
27
|
-
number: "040"
|
|
28
|
-
context: fork
|
|
29
|
-
sub_steps: [review-pr, apply-feedback]
|
|
30
|
-
instructions:
|
|
31
|
-
- Execute valid review cycle and apply feedback.
|
|
25
|
+
- "Create it as a draft with --draft; mark it ready only after the review completion rule is met."
|
|
32
26
|
|
|
33
27
|
- name: push-to-remote
|
|
34
28
|
number: "140"
|
|
35
29
|
instructions:
|
|
36
30
|
- Push changes with force-with-lease.
|
|
37
31
|
|
|
38
|
-
- name: auto-merge
|
|
39
|
-
number: "150"
|
|
40
|
-
instructions:
|
|
41
|
-
- "Guarded auto-merge authorized PR when checks pass."
|
|
42
|
-
|
|
43
32
|
- name: mark-tasks-done
|
|
44
|
-
number: "
|
|
33
|
+
number: "142"
|
|
45
34
|
workflow: wfi://task/update
|
|
46
35
|
instructions:
|
|
47
|
-
- "Mark task {{taskrefs}} done
|
|
36
|
+
- "Mark task {{taskrefs}} done and commit tracked task-file changes before review."
|
|
37
|
+
|
|
38
|
+
- name: review-pr
|
|
39
|
+
number: "145"
|
|
40
|
+
workflow: wfi://review/pr
|
|
41
|
+
instructions:
|
|
42
|
+
- "Follow wfi://review/pr: minimum 3 completed PR rounds, last 2 without confirmed P0/P1. Include integration within those rounds."
|
|
43
|
+
- "Verify findings, fix concrete defects, and run appropriate tests. Record rounds and dispositions; commits do not reset counters."
|
|
44
|
+
|
|
45
|
+
- name: update-pr-desc
|
|
46
|
+
number: "147"
|
|
47
|
+
workflow: wfi://github/pr/update
|
|
48
|
+
instructions:
|
|
49
|
+
- "Record the review rounds, actual reviewers, findings and tests in the PR description before marking it ready."
|
|
50
|
+
|
|
51
|
+
- name: mark-pr-ready
|
|
52
|
+
number: "148"
|
|
53
|
+
instructions:
|
|
54
|
+
- "After review completes and appropriate tests pass, run `gh pr ready` on the draft PR."
|
|
55
|
+
|
|
56
|
+
- name: auto-merge
|
|
57
|
+
number: "150"
|
|
58
|
+
instructions:
|
|
59
|
+
- "Merge only when separately authorized and the existing merge checks pass."
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Unified task workflow:
|
|
1
|
+
# Unified task workflow: implement → release → draft PR → review rounds → ready
|
|
2
2
|
# Usage: /as-assign-prepare work-on-task --taskref 123
|
|
3
3
|
# /as-assign-prepare work-on-task --taskrefs 148,149,150
|
|
4
4
|
# /as-assign-prepare work-on-task --taskrefs 148-152
|
|
5
5
|
# /as-assign-prepare work-on-task --taskrefs "240.*"
|
|
6
6
|
|
|
7
7
|
name: work-on-task
|
|
8
|
-
description: Work on one or more tasks with PR, review
|
|
8
|
+
description: Work on one or more tasks with PR, iterative review, release, and clean history
|
|
9
9
|
|
|
10
10
|
parameters:
|
|
11
11
|
taskrefs:
|
|
@@ -51,41 +51,9 @@ steps:
|
|
|
51
51
|
workflow: wfi://github/pr/create
|
|
52
52
|
instructions:
|
|
53
53
|
- "Create a pull request summarizing batch tasks: {{taskrefs}}."
|
|
54
|
+
- "Create it as a draft with --draft; mark it ready only after the review completion rule is met."
|
|
54
55
|
- "Capture the PR number for the downstream review and PR-update steps."
|
|
55
56
|
|
|
56
|
-
- name: review-valid-1
|
|
57
|
-
number: "040"
|
|
58
|
-
context: fork
|
|
59
|
-
sub_steps: [review-pr, apply-feedback, release]
|
|
60
|
-
instructions:
|
|
61
|
-
- Execute the valid review cycle via child steps.
|
|
62
|
-
- "Child review-pr: use preset code-valid."
|
|
63
|
-
- "Focus: correctness — bugs, logic errors, missing functionality, broken contracts."
|
|
64
|
-
- "Child apply-feedback: apply medium+ priority review findings and commit."
|
|
65
|
-
- "Child release: follow `ace-bundle wfi://release/publish` to publish patch-level updates for modified packages touched by valid-cycle fixes and update both package and root CHANGELOGs."
|
|
66
|
-
|
|
67
|
-
- name: review-fit-1
|
|
68
|
-
number: "070"
|
|
69
|
-
context: fork
|
|
70
|
-
sub_steps: [review-pr, apply-feedback, release]
|
|
71
|
-
instructions:
|
|
72
|
-
- Execute the fit review cycle via child steps.
|
|
73
|
-
- "Child review-pr: use preset code-fit."
|
|
74
|
-
- "Focus: quality — performance, architecture, standards, test coverage."
|
|
75
|
-
- "Child apply-feedback: apply fit-cycle findings and commit."
|
|
76
|
-
- "Child release: follow `ace-bundle wfi://release/publish` to publish patch-level updates for modified packages touched by fit-cycle fixes and update both package and root CHANGELOGs."
|
|
77
|
-
|
|
78
|
-
- name: review-shine-1
|
|
79
|
-
number: "100"
|
|
80
|
-
context: fork
|
|
81
|
-
sub_steps: [review-pr, apply-feedback, release]
|
|
82
|
-
instructions:
|
|
83
|
-
- Execute the shine review cycle via child steps.
|
|
84
|
-
- "Child review-pr: use preset code-shine."
|
|
85
|
-
- "Focus: polish — simplification, naming, documentation (non-blocking suggestions)."
|
|
86
|
-
- "Child apply-feedback: apply worthwhile shine-cycle findings and commit."
|
|
87
|
-
- "Child release: follow `ace-bundle wfi://release/publish` to publish patch-level updates for modified packages touched by shine-cycle fixes and update both package and root CHANGELOGs."
|
|
88
|
-
|
|
89
57
|
- name: reorganize-commits
|
|
90
58
|
number: "130"
|
|
91
59
|
workflow: wfi://git/reorganize-commits
|
|
@@ -128,16 +96,6 @@ steps:
|
|
|
128
96
|
- " 4. Fix and retry: if the cause is a fixable config/env issue (wrong font, missing fixture, bad path), fix it and retry"
|
|
129
97
|
- " 5. Only skip if the failure is truly unfixable (tool not installed, no tapes exist, hardware dependency)"
|
|
130
98
|
|
|
131
|
-
- name: update-pr-desc
|
|
132
|
-
number: "150"
|
|
133
|
-
context: fork
|
|
134
|
-
workflow: wfi://github/pr/update
|
|
135
|
-
instructions:
|
|
136
|
-
- "Update the PR description with the final batch summary for: {{taskrefs}}."
|
|
137
|
-
- "CRITICAL: The File Changes section must contain the complete, untruncated grouped-stats output from `ace-git diff`. Paste it verbatim — never summarize or abbreviate."
|
|
138
|
-
- "Include final release/version information and the key completed components when applicable."
|
|
139
|
-
- "Make sure the PR description reflects the post-review final state."
|
|
140
|
-
|
|
141
99
|
- name: mark-tasks-done
|
|
142
100
|
number: "155"
|
|
143
101
|
workflow: wfi://task/update
|
|
@@ -159,6 +117,28 @@ steps:
|
|
|
159
117
|
- "Capture what went well, what could improve, and action items across the batch."
|
|
160
118
|
- "Focus on process learnings, not just task outcomes."
|
|
161
119
|
|
|
120
|
+
- name: review-pr
|
|
121
|
+
number: "170"
|
|
122
|
+
workflow: wfi://review/pr
|
|
123
|
+
instructions:
|
|
124
|
+
- "Follow wfi://review/pr: minimum 3 completed PR rounds, last 2 without confirmed P0/P1. Include integration within those rounds."
|
|
125
|
+
- "Verify findings, fix concrete defects, and run appropriate tests. Record rounds and dispositions; commits do not reset counters."
|
|
126
|
+
|
|
127
|
+
- name: update-pr-desc
|
|
128
|
+
number: "180"
|
|
129
|
+
context: fork
|
|
130
|
+
workflow: wfi://github/pr/update
|
|
131
|
+
instructions:
|
|
132
|
+
- "Update the PR description with the final batch summary for: {{taskrefs}}."
|
|
133
|
+
- "CRITICAL: The File Changes section must contain the complete, untruncated grouped-stats output from `ace-git diff`. Paste it verbatim — never summarize or abbreviate."
|
|
134
|
+
- "Include final release/version information and the key completed components when applicable."
|
|
135
|
+
- "Make sure the PR description reflects the post-review final state."
|
|
136
|
+
|
|
137
|
+
- name: mark-pr-ready
|
|
138
|
+
number: "190"
|
|
139
|
+
instructions:
|
|
140
|
+
- "After review completes and appropriate tests pass, run `gh pr ready` on the draft PR."
|
|
141
|
+
|
|
162
142
|
expansion:
|
|
163
143
|
batch-parent:
|
|
164
144
|
name: batch-tasks
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.57.1] - 2026-09-27
|
|
11
|
+
|
|
12
|
+
### Technical
|
|
13
|
+
- Stop depending on the removed review-fit preset step in tests.
|
|
14
|
+
|
|
15
|
+
## [0.57.0] - 2026-09-24
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Delegate PR review rounds to the shared review workflow instead of duplicating fixed cycles in assignments.
|
|
20
|
+
- Create PRs as drafts and update their descriptions before marking them ready after review; no separate coverage receipt or SHA gate.
|
|
10
21
|
|
|
11
22
|
## [0.56.1] - 2026-09-02
|
|
12
23
|
|
|
@@ -156,7 +156,7 @@ Include:
|
|
|
156
156
|
Use AskUserQuestion when needed:
|
|
157
157
|
- Accept as-is
|
|
158
158
|
- Add/remove step
|
|
159
|
-
- Adjust review
|
|
159
|
+
- Adjust review scope and reviewer preferences; do not cap unresolved review rounds
|
|
160
160
|
- Provide custom changes
|
|
161
161
|
|
|
162
162
|
Re-validate after edits.
|
|
@@ -168,7 +168,7 @@ Concrete example:
|
|
|
168
168
|
|
|
169
169
|
- Never use report text to "skip" or synthesize completion for planned steps.
|
|
170
170
|
- **Fork-delegation constraint**: If the active step has `FORK: yes`, the driver MUST delegate via `ace-assign fork-run`. The driver MUST NOT execute fork-marked steps inline, absorb remaining fork children after partial failure, or inject retry steps as top-level siblings. All fork recovery goes through re-fork (see [Fork-Run Crash Recovery](#fork-run-crash-recovery-partial-completion)).
|
|
171
|
-
- **Conditional release
|
|
171
|
+
- **Conditional release after review**: A `release` step MUST skip the version bump when review and feedback application produced no code changes. Record "no-op: no changes to release" instead of bumping.
|
|
172
172
|
|
|
173
173
|
### Adaptation Assessment (After Each Step)
|
|
174
174
|
|
|
@@ -186,11 +186,7 @@ After completing or failing each step, evaluate whether the assignment needs ada
|
|
|
186
186
|
ace-assign add "fix-e2e" --instructions "Use /as-e2e-fix for the failing package and scenario IDs from the recorded evidence. If analysis is missing, let /as-e2e-fix generate it via wfi://e2e/analyze-failures before applying fixes. Re-run the targeted failing scenarios before completing this step." --assignment "$ASSIGNMENT_TARGET"
|
|
187
187
|
```
|
|
188
188
|
|
|
189
|
-
- **Review found critical issues** →
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
ace-assign add "apply-critical-fixes" --instructions "Address critical review findings before proceeding" --assignment "$ASSIGNMENT_TARGET"
|
|
193
|
-
```
|
|
189
|
+
- **Review found critical issues** → Keep the review step active and resolve them inside `wfi://review/pr`. Repeat affected scopes and the completed review rounds before completing the step.
|
|
194
190
|
|
|
195
191
|
- **Missing prerequisite discovered** → Consider adding the prerequisite step:
|
|
196
192
|
|
|
@@ -202,13 +198,9 @@ After completing or failing each step, evaluate whether the assignment needs ada
|
|
|
202
198
|
|
|
203
199
|
Use `decision_notes` from step metadata (if present) as additional guidance for these assessments.
|
|
204
200
|
|
|
205
|
-
- **Review
|
|
206
|
-
|
|
207
|
-
- If the **first** review cycle (valid) failed on providers: skip remaining cycles (fit, shine). Mark them done with "skipped: provider unavailable for prior cycle" reports.
|
|
208
|
-
- If the **second** cycle (fit) failed after valid succeeded: skip shine. Valid already captured correctness issues.
|
|
209
|
-
- **Never retry a provider-failed review cycle more than once.** If the re-fork also fails on providers, mark the cycle done-with-skip and move on.
|
|
201
|
+
- **Review provider failure**: When a reviewer is unavailable, try an available substitute. At least one reviewer must complete every needed scope within a round; integration belongs to that round. Retry a provider failure once; if no reviewer completes, leave the PR draft and report the blocker. Never mark an incomplete review done.
|
|
210
202
|
|
|
211
|
-
- **Transient network failure retry**: When
|
|
203
|
+
- **Transient network failure retry**: When review execution fails due to a transient network error (connection reset, DNS timeout, socket hangup), wait 30 seconds and retry once. If it fails again, try an available reviewer or leave the PR draft. Auth errors (401/403) and not-found errors (404) are not transient.
|
|
212
204
|
|
|
213
205
|
### 1. Check Status
|
|
214
206
|
|
|
@@ -172,35 +172,20 @@ When parsing informal instructions, identify:
|
|
|
172
172
|
- "review", "review pr" → `ace:review-pr`
|
|
173
173
|
- "commit" → `ace:git-commit`
|
|
174
174
|
- "onboard" → `onboard`
|
|
175
|
-
3. **Loop Indicators**:
|
|
175
|
+
3. **Loop Indicators**: Treat requested review counts as a minimum number of independent passes, never as a stopping rule for unresolved findings.
|
|
176
176
|
4. **Sequence Markers**: "then", "after that", "finally"
|
|
177
177
|
|
|
178
|
-
###
|
|
178
|
+
### Review continuation
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
Default PR delivery uses one `review-pr` workflow step after tracked code and history edits. The workflow verifies findings, applies fixes, reruns affected scopes, and finishes with a fresh integration review. It continues while important findings remain; a fixed count cannot declare completion.
|
|
181
181
|
|
|
182
182
|
```yaml
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
context: fork
|
|
186
|
-
sub_steps: [review-pr, apply-feedback, release]
|
|
183
|
+
- name: review-pr
|
|
184
|
+
workflow: wfi://review/pr
|
|
187
185
|
instructions:
|
|
188
|
-
- "
|
|
189
|
-
- "
|
|
190
|
-
|
|
191
|
-
- name: review-fit-1
|
|
192
|
-
context: fork
|
|
193
|
-
sub_steps: [review-pr, apply-feedback, release]
|
|
194
|
-
instructions:
|
|
195
|
-
- "Child review-pr: use preset code-fit."
|
|
196
|
-
- "Focus: quality — performance, architecture, standards, test coverage."
|
|
197
|
-
|
|
198
|
-
- name: review-shine-1
|
|
199
|
-
context: fork
|
|
200
|
-
sub_steps: [review-pr, apply-feedback, release]
|
|
201
|
-
instructions:
|
|
202
|
-
- "Child review-pr: use preset code-shine."
|
|
203
|
-
- "Focus: polish — simplification, naming, documentation (non-blocking suggestions)."
|
|
186
|
+
- "Cover all changed files with coherent scopes."
|
|
187
|
+
- "Verify findings and repeat affected scopes after fixes."
|
|
188
|
+
- "Require fresh integration evidence for the current head."
|
|
204
189
|
```
|
|
205
190
|
|
|
206
191
|
## Process Steps
|
|
@@ -269,7 +254,7 @@ ace-task show <taskref>
|
|
|
269
254
|
Parse modifications:
|
|
270
255
|
- "skip onboarding" → remove onboard step
|
|
271
256
|
- "add security review" → insert security review step
|
|
272
|
-
- "
|
|
257
|
+
- "2 reviews" → require at least 2 independent review passes; unresolved findings still require another pass
|
|
273
258
|
|
|
274
259
|
### 5. Expand and Inject Parameters
|
|
275
260
|
|
|
@@ -358,16 +343,14 @@ Report:
|
|
|
358
343
|
Job configuration created: job.yaml
|
|
359
344
|
|
|
360
345
|
Session: work-on-task-123
|
|
361
|
-
Steps:
|
|
346
|
+
Steps: 8 total
|
|
362
347
|
- onboard
|
|
363
348
|
- work-on-task
|
|
364
349
|
- create-pr
|
|
365
|
-
-
|
|
366
|
-
-
|
|
367
|
-
-
|
|
368
|
-
-
|
|
369
|
-
- review-cycle-3
|
|
370
|
-
- apply-feedback-3
|
|
350
|
+
- push-to-remote
|
|
351
|
+
- review-pr
|
|
352
|
+
- update-pr-desc
|
|
353
|
+
- mark-pr-ready
|
|
371
354
|
- finalize
|
|
372
355
|
|
|
373
356
|
Start assignment with: ace-assign create --yaml job.yaml
|
|
@@ -380,7 +363,7 @@ Start assignment with: ace-assign create --yaml job.yaml
|
|
|
380
363
|
```yaml
|
|
381
364
|
session:
|
|
382
365
|
name: work-on-task-123
|
|
383
|
-
description: Work on task 123 with PR and review
|
|
366
|
+
description: Work on task 123 with PR and iterative review
|
|
384
367
|
|
|
385
368
|
steps:
|
|
386
369
|
- name: onboard
|
|
@@ -424,20 +407,19 @@ steps:
|
|
|
424
407
|
/as-assign-prepare work-on-task --taskref 148
|
|
425
408
|
```
|
|
426
409
|
|
|
427
|
-
Creates job with
|
|
410
|
+
Creates a job with implementation, release, draft PR, history/push, and one iterative review workflow. The agent completes at least three PR rounds and stops after two consecutive rounds without confirmed P0/P1. There is no separate final review.
|
|
428
411
|
|
|
429
412
|
### Example 2: Informal Instructions
|
|
430
413
|
|
|
431
414
|
```
|
|
432
|
-
/as-assign-prepare "implement task 148, create pr, review
|
|
415
|
+
/as-assign-prepare "implement task 148, create pr, review until clear"
|
|
433
416
|
```
|
|
434
417
|
|
|
435
418
|
Parses instructions and creates job with:
|
|
436
419
|
- onboard
|
|
437
420
|
- work-on-task (148)
|
|
438
421
|
- create-pr
|
|
439
|
-
- review-
|
|
440
|
-
- review-fit-1 (fork subtree: review-pr → apply-feedback → release)
|
|
422
|
+
- review-pr (review → verify → fix; minimum 3 rounds, last 2 without confirmed P0/P1)
|
|
441
423
|
- finalize
|
|
442
424
|
|
|
443
425
|
### Example 3: Custom Output Path
|
|
@@ -21,7 +21,7 @@ module Ace
|
|
|
21
21
|
# Load composition rules from catalog directory.
|
|
22
22
|
#
|
|
23
23
|
# @param catalog_dir [String] Path to catalog/ directory
|
|
24
|
-
# @return [Hash] Parsed rules with ordering, pairs, conditional
|
|
24
|
+
# @return [Hash] Parsed rules with ordering, pairs, conditional
|
|
25
25
|
def self.load(catalog_dir)
|
|
26
26
|
rules_path = File.join(catalog_dir, "composition-rules.yml")
|
|
27
27
|
return default_rules unless File.exist?(rules_path)
|
|
@@ -78,11 +78,7 @@ module Ace
|
|
|
78
78
|
{
|
|
79
79
|
"ordering" => [],
|
|
80
80
|
"pairs" => [],
|
|
81
|
-
"conditional" => []
|
|
82
|
-
"review_cycles" => {
|
|
83
|
-
"default_count" => 2,
|
|
84
|
-
"max_count" => 5
|
|
85
|
-
}
|
|
81
|
+
"conditional" => []
|
|
86
82
|
}
|
|
87
83
|
end
|
|
88
84
|
private_class_method :default_rules
|
|
@@ -107,8 +103,10 @@ module Ace
|
|
|
107
103
|
|
|
108
104
|
# Before/after rules (e.g., "create-pr must come before review-pr")
|
|
109
105
|
if rule["before"] && rule["after"]
|
|
110
|
-
before_idx = find_step_index(step_names, rule["before"]
|
|
111
|
-
|
|
106
|
+
before_idx = find_step_index(step_names, rule["before"],
|
|
107
|
+
last: rule["before_occurrence"] == "last")
|
|
108
|
+
after_idx = find_step_index(step_names, rule["after"],
|
|
109
|
+
last: rule["after_occurrence"] == "last")
|
|
112
110
|
|
|
113
111
|
if before_idx && after_idx && before_idx >= after_idx
|
|
114
112
|
return {
|
|
@@ -134,11 +132,13 @@ module Ace
|
|
|
134
132
|
# @param step_names [Array<String>] Step name list
|
|
135
133
|
# @param name [String] Name to find (exact or prefix)
|
|
136
134
|
# @return [Integer, nil] Index or nil if not found
|
|
137
|
-
def self.find_step_index(step_names, name)
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
135
|
+
def self.find_step_index(step_names, name, last: false)
|
|
136
|
+
names = [name]
|
|
137
|
+
matches = step_names.each_index.select do |index|
|
|
138
|
+
step = step_names[index]
|
|
139
|
+
names.any? { |candidate| step == candidate || step.start_with?("#{candidate}-") }
|
|
140
|
+
end
|
|
141
|
+
last ? matches.last : matches.first
|
|
142
142
|
end
|
|
143
143
|
private_class_method :find_step_index
|
|
144
144
|
|
data/lib/ace/assign/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ace-assign
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.57.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michal Czyz
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-09-
|
|
10
|
+
date: 2026-09-27 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: ace-support-cli
|
|
@@ -200,6 +200,7 @@ files:
|
|
|
200
200
|
- ".ace-defaults/assign/catalog/steps/create-retro.step.yml"
|
|
201
201
|
- ".ace-defaults/assign/catalog/steps/fix-tests.step.yml"
|
|
202
202
|
- ".ace-defaults/assign/catalog/steps/lint.step.yml"
|
|
203
|
+
- ".ace-defaults/assign/catalog/steps/mark-pr-ready.step.yml"
|
|
203
204
|
- ".ace-defaults/assign/catalog/steps/mark-task-done.step.yml"
|
|
204
205
|
- ".ace-defaults/assign/catalog/steps/onboard-base.step.yml"
|
|
205
206
|
- ".ace-defaults/assign/catalog/steps/onboard.step.yml"
|