ace-assign 0.56.1 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7982f8868f50e88cbaa0934bd8b68e2032338b9e65ea73dddcbdb6e53aa8dba0
4
- data.tar.gz: ed218dffe3d5b5783aebda6931ae6de9db997dd5740a9dcf0bd2235ed5ee6e41
3
+ metadata.gz: 2ae38e39385e77c124bb67fc25b8ae8f1f5eef5e79d4779e8b40f1047bae52b6
4
+ data.tar.gz: 323a3390bf57c7543443ba3c49b1d67483436cff03c5cfcebcb2aec2c8f99bc0
5
5
  SHA512:
6
- metadata.gz: 39b4c93407ddb18fa3abb8c21702f52b5d10f23ab912ed4fd58e3333dcf9e1c415b7f1b1a749a21e4e0016d67243bc37fa202628c1b400bd198cf577b0947cbe
7
- data.tar.gz: 8f1526590957d67c23e7d6b7216bc6d868c12cd5b5c540b0c531b56dd3a490cf3c6e88d9a95081746f58a4e439a98a87983d04dec9326809a938af87605fd0b5
6
+ metadata.gz: '02824e0e864c5694a606c11e10c68259bbc4d31741e934dfe89c99ef643f8a501d7126beba2fc85230732653e930d82c9ec2cdbb58662e077df6b4e3a0b0e88c'
7
+ data.tar.gz: 5e602ed50ddf6f34bfc5ee73a1808a507901d36f9d469063759482c9334ff1a2f08494c3243d997ce2deda876671b6353619ea9494881dd6da62cf18ec7722c0
@@ -10,9 +10,27 @@ ordering:
10
10
  before: create-pr
11
11
  after: review-pr
12
12
 
13
- - rule: review-before-apply
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: apply-feedback
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 cycles, and releases
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
- - name: review-cycle
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: false
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
- - "Add review cycles if changes need review"
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-cycle for critical documentation"
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
- - name: review-cycle
26
- repeat: "{{review_cycles}}"
27
- sub_steps: [review-pr, apply-feedback]
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
- - "Increase review cycles for critical fixes"
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 iterate through review cycles with releases
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
- - name: review-cycle
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: false
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
- - "Reduce review cycles to 1 for simple changes"
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]
@@ -1,2 +1,3 @@
1
1
  name: create-pr
2
2
  skill: as-github-pr-create
3
+ instructions: "Create the pull request with --draft before PR review begins."
@@ -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]
@@ -1,2 +1,4 @@
1
1
  name: review-pr
2
2
  skill: as-review-pr
3
+ produces:
4
+ - 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-cycle-1
50
- skill: as-review-pr
51
- context: fork
46
+ - name: review-pr
47
+ workflow: wfi://review/pr
52
48
  instructions:
53
- - "First: onboard yourself using /as-onboard skill to load project context."
54
- - Review the bug fix code.
55
- - Focus on correctness and edge cases.
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: apply-feedback-1
58
- skill: as-review-apply-feedback
57
+ - name: mark-pr-ready
59
58
  instructions:
60
- - Apply feedback from the review.
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
- - "Increase review cycles for critical fixes"
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: "155"
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: "160"
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 cycles, and advance authorization for guarded auto-merge
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: "155"
33
+ number: "142"
45
34
  workflow: wfi://task/update
46
35
  instructions:
47
- - "Mark task {{taskrefs}} done during final delivery."
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."
@@ -3,6 +3,7 @@
3
3
 
4
4
  name: work-on-task-in-place
5
5
  description: Work on a task in the current checkout with reviewed, verified, scoped commit (no worktree, PR, or merge)
6
+ # This local-only preset does not create a PR; the PR review workflow does not apply.
6
7
 
7
8
  parameters:
8
9
  taskrefs:
@@ -1,11 +1,11 @@
1
- # Unified task workflow: single or multi-task implement → release → PR → review cycles → reorganize → push
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 cycles, release, and clean history
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,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.57.0] - 2026-09-24
11
+
12
+ ### Changed
13
+
14
+ - Delegate PR review rounds to the shared review workflow instead of duplicating fixed cycles in assignments.
15
+ - Create PRs as drafts and update their descriptions before marking them ready after review; no separate coverage receipt or SHA gate.
10
16
 
11
17
  ## [0.56.1] - 2026-09-02
12
18
 
@@ -156,7 +156,7 @@ Include:
156
156
  Use AskUserQuestion when needed:
157
157
  - Accept as-is
158
158
  - Add/remove step
159
- - Adjust review cycles
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 in review subtrees**: A `release` step inside a review cycle (e.g., `[review-pr, apply-feedback, release]`) MUST skip the version bump when prior sibling steps produced no code changes. If `apply-feedback` reported no findings or `git diff HEAD~1 --stat` shows only report files, mark release done with "no-op: no changes to release" instead of bumping.
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** → Consider adding an apply-critical-fixes step:
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-cycle circuit breaker**: When a review fork subtree fails due to provider unavailability (not code bugs), evaluate whether to attempt the next review cycle:
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 a fork subtree fails due to a transient network error (connection reset, DNS timeout, socket hangup) -- as opposed to provider unavailability or auth failure -- wait 30 seconds and re-fork once. If the re-fork also fails on a network error, treat it as a hard failure and apply the circuit breaker rules above. Auth errors (401/403) and not-found errors (404) are never transient -- fail immediately on those.
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**: "2 cycles", "3 iterations", "twice"
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
- ### Loop Expansion
178
+ ### Review continuation
179
179
 
180
- Review loops expand into forked cycle parent steps with standard child sub-steps:
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
- # "do 3 review cycles" becomes:
184
- - name: review-valid-1
185
- context: fork
186
- sub_steps: [review-pr, apply-feedback, release]
183
+ - name: review-pr
184
+ workflow: wfi://review/pr
187
185
  instructions:
188
- - "Child review-pr: use preset code-valid."
189
- - "Focus: correctness — bugs, logic errors, missing functionality, broken contracts."
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
- - "only 2 cycles" → adjust loop count
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: 10 total
346
+ Steps: 8 total
362
347
  - onboard
363
348
  - work-on-task
364
349
  - create-pr
365
- - review-cycle-1
366
- - apply-feedback-1
367
- - review-cycle-2
368
- - apply-feedback-2
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 cycles
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 13 steps: onboard, work-on-task, release, create-pr, 2 review cycles (review + apply-feedback + release each), reorganize-commits, push-to-remote, update-pr-desc.
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 twice"
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-valid-1 (fork subtree: review-pr → apply-feedback → release)
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, review_cycles
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
- after_idx = find_step_index(step_names, rule["after"])
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
- idx = step_names.index(name)
139
- return idx if idx
140
-
141
- step_names.index { |p| p.start_with?("#{name}-") }
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
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Assign
5
- VERSION = "0.56.1"
5
+ VERSION = "0.57.0"
6
6
  end
7
7
  end
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.56.1
4
+ version: 0.57.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-09-05 00:00:00.000000000 Z
10
+ date: 2026-09-24 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"