ace-assign 0.42.4 → 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.ace-defaults/assign/catalog/composition-rules.yml +2 -17
  3. data/.ace-defaults/assign/catalog/steps/create-pr.step.yml +0 -26
  4. data/.ace-defaults/assign/catalog/steps/create-retro.step.yml +1 -1
  5. data/.ace-defaults/assign/catalog/steps/mark-task-done.step.yml +1 -2
  6. data/.ace-defaults/assign/catalog/steps/onboard.step.yml +0 -17
  7. data/.ace-defaults/assign/catalog/steps/plan-task.step.yml +0 -11
  8. data/.ace-defaults/assign/catalog/steps/pre-commit-review.step.yml +3 -0
  9. data/.ace-defaults/assign/catalog/steps/reflect-and-refactor.step.yml +3 -2
  10. data/.ace-defaults/assign/catalog/steps/review-pr.step.yml +0 -16
  11. data/.ace-defaults/assign/catalog/steps/split-subtree-root.step.yml +4 -2
  12. data/.ace-defaults/assign/catalog/steps/task-load.step.yml +1 -1
  13. data/.ace-defaults/assign/catalog/steps/verify-test-suite.step.yml +7 -34
  14. data/.ace-defaults/assign/catalog/steps/verify-test.step.yml +7 -4
  15. data/.ace-defaults/assign/catalog/steps/work-on-task.step.yml +0 -17
  16. data/.ace-defaults/assign/config.yml +1 -0
  17. data/.ace-defaults/assign/presets/fix-bug.yml +4 -3
  18. data/.ace-defaults/assign/presets/quick-implement.yml +1 -1
  19. data/.ace-defaults/assign/presets/work-on-task.yml +6 -16
  20. data/CHANGELOG.md +216 -0
  21. data/README.md +20 -43
  22. data/docs/demo/canonical-skill-source.gif +0 -0
  23. data/docs/demo/canonical-skill-source.tape.yml +51 -0
  24. data/docs/demo/fork-provider.cast +834 -0
  25. data/docs/demo/fork-provider.gif +0 -0
  26. data/docs/demo/fork-provider.recording.json +30 -0
  27. data/docs/demo/fork-provider.tape.yml +77 -20
  28. data/docs/getting-started.md +5 -2
  29. data/docs/usage.md +74 -4
  30. data/handbook/guides/fork-context.g.md +31 -7
  31. data/handbook/skills/as-assign-drive/SKILL.md +13 -1
  32. data/handbook/skills/as-create-retro-internal/SKILL.md +29 -0
  33. data/handbook/skills/as-mark-task-done-internal/SKILL.md +29 -0
  34. data/handbook/skills/as-reflect-and-refactor-internal/SKILL.md +30 -0
  35. data/handbook/skills/as-task-load-internal/SKILL.md +28 -0
  36. data/handbook/workflow-instructions/assign/compose.wf.md +3 -3
  37. data/handbook/workflow-instructions/assign/create-retro-internal.wf.md +11 -0
  38. data/handbook/workflow-instructions/assign/create.wf.md +6 -3
  39. data/handbook/workflow-instructions/assign/drive.wf.md +330 -40
  40. data/handbook/workflow-instructions/assign/mark-task-done-internal.wf.md +12 -0
  41. data/handbook/workflow-instructions/assign/prepare.wf.md +10 -5
  42. data/handbook/workflow-instructions/assign/reflect-and-refactor-internal.wf.md +14 -0
  43. data/handbook/workflow-instructions/assign/run-in-batches.wf.md +4 -1
  44. data/handbook/workflow-instructions/assign/start.wf.md +5 -2
  45. data/handbook/workflow-instructions/assign/task-load-internal.wf.md +12 -0
  46. data/handbook/workflow-instructions/assign/verify-test-suite.wf.md +36 -0
  47. data/lib/ace/assign/atoms/catalog_loader.rb +105 -2
  48. data/lib/ace/assign/atoms/preset_expander.rb +4 -0
  49. data/lib/ace/assign/atoms/step_file_parser.rb +15 -0
  50. data/lib/ace/assign/atoms/tree_formatter.rb +2 -2
  51. data/lib/ace/assign/cli/commands/add.rb +20 -11
  52. data/lib/ace/assign/cli/commands/assignment_target.rb +87 -3
  53. data/lib/ace/assign/cli/commands/create.rb +1 -1
  54. data/lib/ace/assign/cli/commands/fail.rb +1 -1
  55. data/lib/ace/assign/cli/commands/finish.rb +32 -8
  56. data/lib/ace/assign/cli/commands/fork_run.rb +58 -16
  57. data/lib/ace/assign/cli/commands/fork_session.rb +52 -0
  58. data/lib/ace/assign/cli/commands/list.rb +4 -3
  59. data/lib/ace/assign/cli/commands/retry_cmd.rb +1 -1
  60. data/lib/ace/assign/cli/commands/start.rb +9 -3
  61. data/lib/ace/assign/cli/commands/status.rb +237 -230
  62. data/lib/ace/assign/cli/commands/step.rb +62 -0
  63. data/lib/ace/assign/cli.rb +8 -1
  64. data/lib/ace/assign/models/assignment_info.rb +33 -4
  65. data/lib/ace/assign/models/queue_state.rb +101 -39
  66. data/lib/ace/assign/models/step.rb +17 -5
  67. data/lib/ace/assign/molecules/fork_session_launcher.rb +218 -21
  68. data/lib/ace/assign/molecules/queue_scanner.rb +1 -0
  69. data/lib/ace/assign/molecules/skill_assign_source_resolver.rb +223 -47
  70. data/lib/ace/assign/molecules/step_writer.rb +3 -3
  71. data/lib/ace/assign/molecules/tmux_control_surface_runner.rb +249 -0
  72. data/lib/ace/assign/organisms/assignment_executor.rb +355 -106
  73. data/lib/ace/assign/version.rb +1 -1
  74. data/lib/ace/assign.rb +1 -0
  75. metadata +35 -5
  76. data/.ace-defaults/assign/catalog/steps/verify-e2e.step.yml +0 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 214f383018bb2b9861e03cedf52c8eca4df627d9787357d00998725be36cbe36
4
- data.tar.gz: 5f8d577f6f0eacd399c2a317d8dee720f237194af70968b65fcca8a1de676dea
3
+ metadata.gz: 1f0f554ace326dc469a945fc93f86f81d087b7c4e6197cb59a23b38bd913c821
4
+ data.tar.gz: faf2665d5a3e0e88bf626ec35951bfac2af109fb465de44215c32aed766e3d54
5
5
  SHA512:
6
- metadata.gz: 3be4c93c1264e83f808bd0fed4d92780a65e00da59561c428bf3d7a6f65ce63c21398d256113d601e3849ba25dc546c1eb841e6dbf9db21804809c3afac35239
7
- data.tar.gz: daab1a233b937ef79fa3d3b406404350b6b34ca0ade254cb7ff96b6f11c810f0c7dc255fe271e8e00cd8c194c6a941330ed8af725e22d49dfcceb0c627ad1ddf
6
+ metadata.gz: d41c5204d7060d3359e1adcfb91a3a77adfc6fd3c193a531f3128a6e1e08759d835180fae64be3203acf5f8d0bb94905f278d61a731536702769a1f2fade90a9
7
+ data.tar.gz: 04c7d468bc85e49fccbc9b4250957803fbc7a204878e5fc47a0b804615aae66bcdf057b6cd7ed682aedbb530a204ae6274de2a77a6210f2c506bb8ebe6d2c742
@@ -108,11 +108,6 @@ ordering:
108
108
  after: create-retro
109
109
  note: "Retro should follow all feedback application in review cycles"
110
110
 
111
- - rule: e2e-before-release
112
- before: verify-e2e
113
- after: release
114
- note: "E2E must pass before bumping version — catch failures early"
115
-
116
111
  - rule: update-docs-after-release
117
112
  before: release
118
113
  after: update-docs
@@ -123,11 +118,6 @@ ordering:
123
118
  after: create-pr
124
119
  note: "Updated docs should be visible to PR reviewers"
125
120
 
126
- - rule: e2e-after-verify
127
- before: verify-test-suite
128
- after: verify-e2e
129
- note: "Unit tests should pass before E2E runs"
130
-
131
121
  pairs:
132
122
  - name: review-apply-cycle
133
123
  steps: [review-pr, apply-feedback]
@@ -167,11 +157,6 @@ pairs:
167
157
  cap: 1
168
158
  note: "Re-plan produces 1-2 sub-tasks, then reflect runs once more (no further re-plan)"
169
159
 
170
- - name: e2e-review-run-pair
171
- steps: [verify-e2e]
172
- pattern: sequential
173
- note: "E2E review (coverage matrix) and targeted run are a single step with two steps"
174
-
175
160
  - name: docs-update-validate-pair
176
161
  steps: [update-docs]
177
162
  pattern: sequential
@@ -191,9 +176,9 @@ conditional:
191
176
  note: "Test suite verification with profiling catches slow tests and regressions before release. In explicit-step mode this remains advisory unless policy elevates it."
192
177
 
193
178
  - when: "assignment includes work-on-task and touches CLI commands or public API"
194
- suggest: [verify-e2e, update-docs, record-demo]
179
+ suggest: [update-docs, record-demo]
195
180
  strength: recommended
196
- note: "Public contract changes require E2E verification, doc updates, and demo recording"
181
+ note: "Public contract changes require doc updates and demo recording"
197
182
 
198
183
  - when: "task involves auth, security, or data handling"
199
184
  suggest: [security-audit]
@@ -1,28 +1,2 @@
1
1
  name: create-pr
2
2
  skill: as-github-pr-create
3
- description: Create a pull request for the implemented changes
4
- intent:
5
- phrases:
6
- - "create pr"
7
- - "create a pr"
8
- - "open pr"
9
- - "open pull request"
10
-
11
- prerequisites:
12
- - name: work-on-task
13
- strength: required
14
- reason: "Must have code changes to create a PR"
15
-
16
- produces: [pull-request]
17
- consumes: [code-changes, commits]
18
-
19
- context:
20
- default: null
21
- reason: "PR creation needs access to git state in main context"
22
-
23
- when_to_skip:
24
- - "PR already exists for this branch"
25
- - "Changes don't warrant a PR (e.g., direct push allowed)"
26
-
27
- effort: light
28
- tags: [git, pr, publishing]
@@ -1,5 +1,5 @@
1
1
  name: create-retro
2
- skill: null
2
+ skill: as-create-retro-internal
3
3
  description: Create a retrospective summarizing what was accomplished and lessons learned
4
4
 
5
5
  prerequisites:
@@ -1,7 +1,6 @@
1
1
  name: mark-task-done
2
- skill: null
2
+ skill: as-mark-task-done-internal
3
3
  description: Mark task as done in ace-task after successful implementation
4
- workflow: wfi://task/update
5
4
 
6
5
  prerequisites:
7
6
  - name: work-on-task
@@ -1,19 +1,2 @@
1
1
  name: onboard
2
2
  skill: as-onboard
3
- description: Load project context and understand the codebase
4
-
5
- prerequisites: []
6
-
7
- produces: [project-context]
8
- consumes: []
9
-
10
- context:
11
- default: null
12
- reason: "Onboarding needs access to the main conversation context"
13
-
14
- when_to_skip:
15
- - "Already onboarded in a previous assignment"
16
- - "Working in a context where project is already loaded"
17
-
18
- effort: light
19
- tags: [setup, context-loading]
@@ -1,13 +1,2 @@
1
1
  name: plan-task
2
2
  skill: as-task-plan
3
- description: Analyze task requirements and create an implementation plan
4
-
5
- produces: [implementation-plan]
6
- consumes: [project-base-context, task-spec]
7
-
8
- when_to_skip:
9
- - "Task is trivial and doesn't need a plan"
10
- - "Implementation plan already exists"
11
-
12
- effort: light
13
- tags: [planning, analysis]
@@ -1,6 +1,9 @@
1
1
  name: pre-commit-review
2
2
  skill: null
3
3
  description: Run /review agent command (conversation slash command, not bash) when supported; fall back to ace-lint
4
+ migration_state: transitional-exception
5
+ migration_target: internal orchestration skill/workflow
6
+ migration_reason: "Nested review mode and runtime client detection still encoded in step-template YAML."
4
7
 
5
8
  prerequisites:
6
9
  - name: work-on-task
@@ -1,5 +1,6 @@
1
1
  name: reflect-and-refactor
2
- skill: null # No dedicated skill — the driving agent follows the steps directly, using ace-review and ace-git-commit as tools
2
+ skill: as-reflect-and-refactor-internal
3
+ render: step_template
3
4
  description: Analyze implementation against ATOM principles and execute targeted refactoring before PR creation
4
5
 
5
6
  prerequisites:
@@ -29,7 +30,7 @@ steps:
29
30
  - name: demo-validate
30
31
  optional: true
31
32
  description: "Run functional demo proving the feature works end-to-end"
32
- skip_when: "verify-test-suite already covers functional validation (E2E tests exist and passed)"
33
+ skip_when: "verify-test-suite already covers the required deterministic validation for this change"
33
34
  on_failure: "Trigger re-plan mechanism instead of proceeding to analysis"
34
35
 
35
36
  - name: analyze
@@ -1,18 +1,2 @@
1
1
  name: review-pr
2
2
  skill: as-review-pr
3
- description: Review code changes for correctness, style, and best practices
4
-
5
- prerequisites:
6
- - name: create-pr
7
- strength: required
8
- reason: "Must have a PR to review"
9
-
10
- produces: [review-feedback]
11
- consumes: [pull-request]
12
-
13
- when_to_skip:
14
- - "No code changes since last review"
15
- - "Changes are trivial (typo fix, config update)"
16
-
17
- effort: medium
18
- tags: [review, quality]
@@ -10,9 +10,11 @@ instructions:
10
10
  - "If subtree execution fails: use adaptive minimal-safe replay (do not replay whole subtree by default)."
11
11
  - "Inject only required recovery steps before retrying failed or affected steps."
12
12
  fork:
13
- - "Delegate this subtree into forked context:"
13
+ - "Unscoped driver action: delegate this subtree into forked context:"
14
14
  - "- ace-assign fork-run --assignment <assignment-id>@{{parent_number}}"
15
- - "Inside the forked agent, continue execution within this subtree scope only."
15
+ - "Scoped forked agent action: do not call fork-run again for {{parent_number}}."
16
+ - "If this scoped root is active and no child step is active yet: ace-assign start --assignment <assignment-id>@{{parent_number}}"
17
+ - "After a child step becomes active, continue execution within this subtree scope only."
16
18
  - "Note: fork-run may take 10-30 minutes. If your environment has bash timeout limits, run in background and poll scoped status with stepped backoff (5m -> 3m -> 1m -> every 60s)."
17
19
  - "After fork-run completes: read all subtree report files before continuing. The driver is the guard — review reports to verify quality before advancing."
18
20
  - "For failed subtrees: recovery typically includes context refresh (onboard + report review) and verify-test-suite before retry."
@@ -1,5 +1,5 @@
1
1
  name: task-load
2
- skill: null
2
+ skill: as-task-load-internal
3
3
  description: "Load task behavioral spec: run `ace-bundle task://<taskref>`"
4
4
 
5
5
  prerequisites:
@@ -1,48 +1,21 @@
1
1
  name: verify-test-suite
2
- skill: as-test-verify-suite
2
+ workflow: wfi://assign/verify-test-suite
3
3
  render: step_template
4
- description: Run package test suites with profiling to verify correctness and performance
5
- intent:
6
- phrases:
7
- - "run tests"
8
- - "run test suite"
9
- - "verify tests"
10
- - "test changes"
11
- - "check tests"
12
-
13
- prerequisites:
14
- - name: work-on-task
15
- strength: recommended
16
- reason: "Should have code changes to verify"
17
-
18
- produces: [test-results]
19
- consumes: [code-changes]
20
-
21
- context:
22
- default: null
23
- reason: "Test execution needs access to project environment"
24
-
25
- when_to_skip:
26
- - "No code changes that could affect tests (documentation-only)"
27
- - "Tests were already run and profiled in a previous step"
28
-
29
- effort: light
30
- tags: [testing, verification, performance]
31
4
 
32
5
  steps:
33
6
  - name: run-package-tests
34
- description: "Run ace-test --profile 6 for each modified package"
35
- tool: "ace-test --profile 6"
36
- note: "Profile reveals slow tests; run per-package, not full monorepo"
7
+ description: "Run ace-test <package> all --profile 6 for each modified package"
8
+ tool: "ace-test <package> all --profile 6"
9
+ note: "Profile reveals slow tests; verify modified packages with their explicit full deterministic target first"
37
10
 
38
11
  - name: check-performance-budgets
39
12
  description: "Verify no test exceeds documented thresholds"
40
- note: "Atoms <50ms, molecules <100ms, integration <1s, full package <30s. Tests must not make real network calls or unnecessary filesystem I/O."
13
+ note: "Fast atoms <50ms, fast molecules <100ms, feat tests <1s, full package <30s. Tests must not make real network calls or unnecessary filesystem I/O."
41
14
 
42
15
  - name: fix-violations
43
16
  description: "Stub I/O and mock external calls for tests exceeding budgets"
44
17
  conditional: "performance violations detected"
45
18
 
46
19
  - name: run-suite
47
- description: "Run ace-test-suite to verify no cross-package regressions"
48
- tool: "ace-test-suite"
20
+ description: "Run ace-test-suite --target all to verify no cross-package regressions in the full deterministic suite"
21
+ tool: "ace-test-suite --target all"
@@ -1,6 +1,9 @@
1
1
  name: verify-test
2
2
  skill: null
3
3
  description: Run profile-guided tests for modified packages only; no full-suite run in subtree
4
+ migration_state: transitional-exception
5
+ migration_target: internal orchestration skill/workflow
6
+ migration_reason: "Nested per-package test sequencing and budget checks still encoded in step-template YAML."
4
7
 
5
8
  prerequisites:
6
9
  - name: work-on-task
@@ -23,13 +26,13 @@ tags: [testing, verification, performance]
23
26
 
24
27
  steps:
25
28
  - name: run-package-tests
26
- description: "Run ace-test --profile 6 for each modified package in this subtree"
27
- tool: "ace-test --profile 6"
28
- note: "Execute per-package; do not run full-stack suite here"
29
+ description: "Run ace-test <package> all --profile 6 for each modified package in this subtree"
30
+ tool: "ace-test <package> all --profile 6"
31
+ note: "Execute per-package only; do not run the monorepo suite in this subtree step"
29
32
 
30
33
  - name: check-performance-budgets
31
34
  description: "Verify no test exceeds documented thresholds"
32
- note: "Atoms <50ms, molecules <100ms, integration <1s, full package suite <30s. Tests must not make real network calls or unnecessary filesystem I/O."
35
+ note: "Fast atoms <50ms, fast molecules <100ms, feat tests <1s, full package suite <30s. Tests must not make real network calls or unnecessary filesystem I/O."
33
36
 
34
37
  - name: fix-violations
35
38
  description: "Fix slow or environment-coupled tests when violations are detected"
@@ -1,19 +1,2 @@
1
1
  name: work-on-task
2
2
  skill: as-task-work
3
- description: Implement task changes following project conventions
4
- intent:
5
- phrases:
6
- - "work on task"
7
- - "implement task"
8
- - "task work"
9
- - "build feature"
10
-
11
- produces: [code-changes, commits]
12
- consumes: [project-base-context, task-spec]
13
-
14
- when_to_skip:
15
- - "Task is documentation-only"
16
- - "Changes are already implemented"
17
-
18
- effort: medium
19
- tags: [implementation, core-workflow]
@@ -26,6 +26,7 @@ workflow_source_paths:
26
26
  execution:
27
27
  provider: "claude:opus@yolo"
28
28
  timeout: 1800
29
+ launch_mode: auto # auto | headless | tmux
29
30
 
30
31
  # Subtree execution behavior
31
32
  subtree:
@@ -34,10 +34,11 @@ steps:
34
34
  - "Commit the archive file moves: `ace-git-commit .ace-tasks/ -i 'archive completed task'`"
35
35
 
36
36
  - name: verify-test-suite
37
- skill: as-test-verify-suite
37
+ workflow: wfi://assign/verify-test-suite
38
38
  instructions:
39
- - Run the test suite to verify the fix doesn't break anything.
40
- - Ensure all tests pass.
39
+ - Run `ace-test <package> all --profile 6` for each modified package first.
40
+ - Then run `ace-test-suite --target all` to verify the fix does not break the wider deterministic suite.
41
+ - Ensure all required checks pass before continuing.
41
42
 
42
43
  - name: create-pr
43
44
  skill: as-github-pr-create
@@ -36,6 +36,6 @@ steps:
36
36
  - Use a descriptive commit message following project conventions.
37
37
 
38
38
  customization_hints:
39
- - "Add verify-test-suite before commit for complex changes"
39
+ - "Add verify-test-suite before commit for complex changes; that step should run `ace-test <package> all --profile 6` for modified packages and then `ace-test-suite --target all`."
40
40
  - "Add lint after work-on-task for style enforcement"
41
41
  - "Skip onboard if already onboarded"
@@ -22,26 +22,13 @@ steps:
22
22
 
23
23
  - name: verify-test-suite
24
24
  number: "012"
25
- workflow: wfi://test/verify-suite
25
+ workflow: wfi://assign/verify-test-suite
26
26
  instructions:
27
27
  - "Verify test coverage and performance across batch tasks: {{taskrefs}}."
28
- - "Focus on packages modified by this batch before any broader regression checks required by the workflow."
28
+ - "First run `ace-test <package> all --profile 6` for each package modified by this batch."
29
+ - "Then run `ace-test-suite --target all`."
29
30
  - "If the batch is documentation-only or otherwise does not affect runnable code, mark this step skipped with a clear reason."
30
31
 
31
- - name: verify-e2e
32
- number: "015"
33
- context: fork
34
- instructions:
35
- - "Run E2E tests for packages modified across batch tasks: {{taskrefs}}."
36
- - "Detect modified packages from the current diff: `git diff origin/main --name-only | grep '^ace-' | cut -d/ -f1 | sort -u`."
37
- - "Run `ace-test-e2e <package>` for each modified package that has test/e2e/ scenarios."
38
- - "If more than 5 packages were modified with cross-dependencies, run the full suite: `ace-test-e2e-suite`."
39
- - "If any scenarios fail, use /as-e2e-fix to diagnose and fix each failing scenario."
40
- - "After fixing, rerun the failing scenarios to confirm they pass."
41
- - "Repeat fix→rerun cycle up to 3 times if new failures appear."
42
- - "Final gate: all previously-failing scenarios must pass before completing this step."
43
- - "Skip only when no modified package has test/e2e/ scenarios."
44
-
45
32
  - name: release-minor
46
33
  number: "020"
47
34
  instructions:
@@ -176,6 +163,9 @@ expansion:
176
163
  batch-parent:
177
164
  name: batch-tasks
178
165
  number: "010"
166
+ batch_parent: true
167
+ parallel: false
168
+ fork_retry_limit: 1
179
169
  instructions: |
180
170
  Batch container for multiple task implementations.
181
171
  This step auto-completes when all child tasks are done.
data/CHANGELOG.md CHANGED
@@ -6,6 +6,222 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
+ ## [0.55.0] - 2026-04-23
10
+
11
+ ### Changed
12
+ - Migrated tmux-backed `fork-run` orchestration to consume the shared `ace-tmux` runtime/control surface instead of maintaining a private `ace-assign` tmux runner.
13
+ - Added step-level `fork.mode` plus config-level `execution.launch_mode` so `ace-assign fork-run` can default subtree launch behavior to `auto`, `headless`, or `tmux` while still letting `--launch-mode` override both.
14
+ - Added `ace-assign fork-run --callback` for tmux-backed parent/child agent flows so a fork can capture the origin pane, launch the child subtree, and let the child send one final status sentence back with `ace-tmux send` instead of keeping the parent on a polling loop.
15
+ - Updated the `/as-assign-drive` fork workflow contract to document callback-mode idle waiting, direct `ace-tmux send` callback delivery, and assignment-state recovery when a callback is missing on re-entry.
16
+
17
+ ### Fixed
18
+ - Updated the `ace-tmux` runtime dependency constraint to `~> 0.17` so assignment tmux delegation stays aligned with the new runtime inspection release line.
19
+
20
+ ### Technical
21
+ - Kept assignment queue state as the authoritative fork completion signal while limiting tmux pane capture to launch and failure diagnostics.
22
+ - Persisted fork callback pane metadata in tmux session files, exported it into tmux fork launch environments as `ACE_ASSIGN_CALLBACK_PANE`, and added command/launcher/runner contract coverage for the new non-blocking callback path.
23
+ - Added parser/model/launcher/command regression coverage for launch-mode precedence across CLI, step frontmatter, and assign config defaults.
24
+
25
+ ## [0.53.4] - 2026-04-20
26
+
27
+ ### Technical
28
+ - Tightened `TS-ASSIGN-002` hierarchy E2E contracts so auto-completion uses derived assignment IDs, valid cross-assignment `finish --assignment` syntax, and explicit scoped status artifacts for subtree verification.
29
+ - Clarified `ace-assign finish` usage docs so positional step targeting is reserved for the active assignment while cross-assignment/scoped completion uses `--assignment <id[@step]>`.
30
+
31
+ ## [0.53.3] - 2026-04-18
32
+
33
+ ### Technical
34
+ - Corrected `TS-ASSIGN-001` lifecycle fixture-path guidance so Goal 1 resolves the real sandbox fixture files and no longer records a false create failure before the lifecycle flow completes.
35
+
36
+ ## [0.53.2] - 2026-04-16
37
+
38
+ ### Technical
39
+ - Reworked retained fork-context E2E capture around explicit regular, fork, return, and final checkpoints so lifecycle transitions are proven from stable artifacts instead of generic completion text.
40
+
41
+ ## [0.53.1] - 2026-04-16
42
+
43
+ ### Fixed
44
+ - Hid failed retry history from compact `ace-assign status` pending previews after assignment completion so terminal state no longer mixes `Status: completed` with a misleading `Pending steps:` block.
45
+
46
+ ### Technical
47
+ - Added a status-command regression covering completed assignments with failed retry ancestry and validated the retained lifecycle E2E path against the corrected compact status output.
48
+
49
+ ## [0.53.0] - 2026-04-15
50
+
51
+ ### Changed
52
+ - Rewrote retained assignment E2E runner/verifier contracts to emphasize public command journeys and impact-first state oracles over rigid capture choreography.
53
+ - Added `TS-ASSIGN-003` operations coverage for multi-assignment operator flow and scoped `fork-run` delegation behavior.
54
+
55
+ ### Technical
56
+ - Refreshed hierarchy/lifecycle/fork scenario guidance so debug artifacts remain fallback evidence and CLI-visible status transitions are primary evidence.
57
+
58
+ ## [0.52.0] - 2026-04-15
59
+
60
+ ### Changed
61
+ - Tightened the committed tmux fork demo contract so the recording is aimed at the visible `work -> work-fs -> agent starts working` transition instead of a synthetic transcript.
62
+
63
+ ### Technical
64
+ - Made tmux fork wrappers print the translated skill handoff before launching the interactive agent, keeping the fork pane bootstrap visible and testable.
65
+
66
+ ## [0.51.0] - 2026-04-15
67
+
68
+ ### Changed
69
+ - Reworked tmux fork execution to start a real interactive agent session via `ace-llm --interactive` in the `<current-window>-fs` pane and auto-send the scoped `/as-assign-drive <assignment>@<root>` handoff instead of running the old headless fork-session wrapper in tmux.
70
+
71
+ ### Technical
72
+ - Switched tmux fork completion tracking from pane-process exit to subtree-state polling so interactive agents can stay open while forked assignment progress is still tracked to completion.
73
+
74
+ ## [0.50.3] - 2026-04-15
75
+
76
+ ### Fixed
77
+ - Fixed tmux fork-window lookup by correcting `TmuxForkRunner` result normalization, so explicit-session launches resolve the current window instead of failing under detached-session demo/recording runs.
78
+
79
+ ### Changed
80
+ - Refined the committed `fork-provider` asciinema tape/setup and refreshed the demo artifacts (`.gif`, `.cast`, and recording manifest) after rerunning the verified tmux fork demo against PR-ready behavior.
81
+
82
+ ## [0.50.2] - 2026-04-15
83
+
84
+ ### Fixed
85
+ - Resolved tmux-backed fork window detection when `ACE_TMUX_SESSION` is set without a live `TMUX` variable, so visible fork demos and detached-session launches still resolve the current window correctly.
86
+
87
+ ### Changed
88
+ - Replaced the stale `fork-provider` demo tape with an asciinema/YAML recording that verifies the real `work -> work-fs` tmux fork transition.
89
+
90
+ ## [0.50.1] - 2026-04-15
91
+
92
+ ### Changed
93
+ - Refreshed the tmux-backed fork demo asset so the recorded flow starts in the operator work window and visibly opens the fork staging window during `fork-run`.
94
+
95
+ ## [0.50.0] - 2026-04-15
96
+
97
+ ### Changed
98
+ - Added `ace-assign fork-run --launch-mode auto|headless|tmux`, keeping the existing headless subprocess path while allowing tmux-backed fork execution in the current tmux session.
99
+ - Tmux-backed fork runs now create or reuse a `<current-window>-fs` window, launch forked provider sessions in panes there, and persist tmux session/window/pane metadata alongside existing fork session files.
100
+
101
+ ### Technical
102
+ - Added an internal `ace-assign fork-session` entrypoint plus launcher/test coverage to reuse the existing provider-backed fork session path from tmux panes.
103
+ - Added a recorded tmux fork demo GIF under `docs/demo/` and updated usage docs for the new launch-mode contract.
104
+
105
+ ## [0.49.2] - 2026-04-13
106
+
107
+ ### Fixed
108
+ - Rewrote `TS-ASSIGN-002` around sandbox end-state and runner observations so hierarchy renumbering, auto-completion, and audit coverage no longer depend on synthetic helper artifacts under `results/`.
109
+
110
+ ## [0.49.1] - 2026-04-13
111
+
112
+ ### Fixed
113
+ - Tightened `TS-ASSIGN-002` hierarchy scenario evidence so cascade renumbering is proven from concrete step-file artifacts and display-audit checks read the copied sandbox fixture path instead of a repo-relative path.
114
+
115
+ ## [0.49.0] - 2026-04-13
116
+
117
+ ### Changed
118
+ - Split assignment status from instruction loading: `ace-assign status` now defaults to compact status-only output with `compact`, `progress`, and `full` text modes, while the new `ace-assign step` command prints current/next/exact step instructions.
119
+ - Made `ace-assign start` and `ace-assign finish` concise by pointing operators to `ace-assign step` instead of printing raw instruction blocks inline.
120
+
121
+ ### Technical
122
+ - Updated drive/fork guidance, deterministic command coverage, and fork-context E2E specs to treat `status` as state-only and `step` as the instruction-loading surface.
123
+
124
+ ## [0.48.0] - 2026-04-13
125
+
126
+ ### Changed
127
+ - Removed the shipped `verify-e2e` assignment step from the public catalog, presets, and composition defaults so standard `ace-assign` workflows no longer schedule package E2E verification.
128
+ - Narrowed assignment-level `verify-test-suite` to deterministic verification only: modified packages run `ace-test <package> all --profile 6`, then the monorepo gate runs `ace-test-suite --target all`.
129
+
130
+ ### Technical
131
+ - Added an `ace-assign`-local `wfi://assign/verify-test-suite` workflow and preserved local step runtime bindings during canonical catalog metadata merges so assignment-specific verification contracts are not overwritten by shared skill defaults.
132
+
133
+ ## [0.47.3] - 2026-04-13
134
+
135
+ ### Changed
136
+ - Completed the batch i05 migration follow-through for this package and aligned it with the restarted `fast` / `feat` / `e2e` verification model.
137
+
138
+ ### Technical
139
+ - Included in the coordinated assignment-driven patch release for batch i05 package updates.
140
+
141
+
142
+ ## [0.47.2] - 2026-04-12
143
+
144
+ ### Fixed
145
+ - Hardened `wfi://assign/drive` so forked subtree completion is driven by scoped `ace-assign status`, with explicit 6-minute polling, detached resume guidance, and immediate parent-queue re-entry after terminal child status.
146
+
147
+ ### Technical
148
+ - Updated the canonical and projected `as-assign-drive` skill contracts plus workflow contract coverage to lock in status-driven fork completion pickup after terminal or session interruption.
149
+
150
+ ## [0.47.1] - 2026-04-12
151
+
152
+ ### Fixed
153
+ - Simplified `TS-ASSIGN-001` to keep only lifecycle and fork-context E2E coverage, moving help, prepare, and no-skip policy assertions down to deterministic fast and feat contracts.
154
+ - Tightened `TS-ASSIGN-002` into a 4-goal hierarchy scenario by moving hierarchy error-path checks to command tests and requiring explicit multi-level auto-completion and audit-trail evidence.
155
+
156
+ ### Technical
157
+ - Added regression coverage for invalid `add --after` references, pending-parent `finish` rejection after child injection, the canonical `work-on-task` preset contract, and the `assign/drive` no-skip workflow contract.
158
+
159
+ ## [0.47.0] - 2026-04-11
160
+
161
+ ### Changed
162
+ - Taught `wfi://assign/drive` to prefer an E2E-specific `fix-e2e` recovery step after `ace-test-e2e` failures so assignment retries route into `/as-e2e-fix` instead of generic test-fix instructions.
163
+ - Updated the shipped work-on-task verification fixture to require `/as-e2e-fix` to bootstrap `wfi://e2e/analyze-failures` automatically when scenario-failure analysis is missing or incomplete.
164
+
165
+ ## [0.46.0] - 2026-04-11
166
+
167
+ ### Changed
168
+ - Migrated package test layout to the `fast` / `feat` / `e2e` model by moving deterministic ATOM and command tests under `test/fast/`, adding deterministic feature-level coverage under `test/feat/`, and keeping scenario assets under `test/e2e/`.
169
+ - Updated package documentation and E2E scenario metadata to reference the new testing contract (`ace-test ace-assign`, `ace-test ace-assign feat`, `ace-test ace-assign all`, `ace-test-e2e ace-assign`) and `test/fast/*` deterministic coverage paths.
170
+ - Tightened E2E goal runner/verifier contracts to reduce brittle artifact-name coupling and keep policy/lifecycle evidence checks aligned with current command outputs.
171
+
172
+ ## [0.45.0] - 2026-04-11
173
+
174
+ ### Changed
175
+ - Updated assignment verification presets, step templates, and runtime child-step instructions so modified packages run `ace-test <package> all --profile 6`, batch suite checks stay on plain `ace-test-suite`, and E2E verification stays package-targeted via `ace-test-e2e <package>`.
176
+
177
+ ### Technical
178
+ - Synced the shipped work-on-task prepare fixture and executor rendering coverage to the new verification contract.
179
+
180
+ ## [0.44.5] - 2026-04-10
181
+
182
+ ### Fixed
183
+ - Updated verify-E2E guidance to support both `test-e2e/scenarios/` and legacy `test/e2e/` paths during migration in assignment presets and runtime executor output.
184
+ - Synced the work-on-task E2E fixture contract with the dual-path migration guidance.
185
+
186
+ ## [0.44.3] - 2026-04-07
187
+
188
+ ### Fixed
189
+ - Added missing `Bash(ace-bundle:*)` permissions to internal helper skills that execute `ace-bundle` workflows (`as-create-retro-internal`, `as-mark-task-done-internal`, `as-reflect-and-refactor-internal`).
190
+ - Restored required canonical skill metadata headers (`# bundle`, `# agent`) for internal helper skills `as-create-retro-internal` and `as-reflect-and-refactor-internal`.
191
+ - Added source-based canonical step-definition fallback in assignment step materialization so custom-named steps with explicit `source` preserve canonical metadata.
192
+
193
+ ### Technical
194
+ - Added regression coverage for custom-named explicit-source step materialization preserving canonical fork metadata.
195
+
196
+ ## [0.44.2] - 2026-04-07
197
+
198
+ ### Fixed
199
+ - Preserved project-level `.ace/assign/catalog/steps/*.step.yml` overrides when canonical skill metadata is present by applying project definitions after canonical merge in assignment step catalog resolution.
200
+ - Restored canonical step metadata in `CatalogLoader.load_all` results for migrated public steps so direct catalog consumers retain description/prerequisite/artifact semantics, while keeping raw-YAML opt-out support via `canonical_steps: false`.
201
+
202
+ ## [0.44.1] - 2026-04-07
203
+
204
+ ### Fixed
205
+ - Preserved canonical step-level `assign.steps` presentation fields (`name` and `description`) when resolving skill-backed step rendering.
206
+
207
+ ### Technical
208
+ - Added required canonical metadata headers (`# bundle`, `# agent`) to internal helper skills `as-task-load-internal` and `as-mark-task-done-internal`.
209
+ - Added regression coverage for step-level description preservation in `SkillAssignSourceResolver`.
210
+
211
+ ## [0.44.0] - 2026-04-07
212
+
213
+ ### Changed
214
+ - Migrated helper-step ownership for `task-load`, `mark-task-done`, `reflect-and-refactor`, and `create-retro` from permanent `skill: null` templates to internal canonical helper skills.
215
+ - Migrated public step metadata ownership for `onboard`, `plan-task`, `work-on-task`, `review-pr`, `create-pr`, and `verify-test-suite` into canonical skill `assign.steps`, with public workflow binding resolved from `skill.execution.workflow` (legacy `assign.source` fallback retained).
216
+ - Normalized runtime execution and materialization paths around canonical step `source` (`skill://...` and explicit `wfi://...`) while preserving legacy `skill`/`workflow` compatibility as migration fallback.
217
+ - Updated shipped assign compose/create/prepare workflow docs to use source-first step contract examples.
218
+
219
+ ### Fixed
220
+ - Restricted public assign-step discovery to canonical skills with `user-invocable: true`, preventing internal helper skills from appearing in public assignment composition inventory.
221
+
222
+ ### Technical
223
+ - Added internal helper workflows and skills under `ace-assign/handbook` to preserve helper execution contracts while keeping them non-discoverable.
224
+ - Marked `pre-commit-review` and `verify-test` helper templates as explicit transitional exceptions with migration metadata.
9
225
 
10
226
  ## [0.42.4] - 2026-04-05
11
227