ace-assign 0.41.10 → 0.53.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) 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 -15
  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 -20
  11. data/.ace-defaults/assign/catalog/steps/task-load.step.yml +1 -1
  12. data/.ace-defaults/assign/catalog/steps/verify-test-suite.step.yml +7 -34
  13. data/.ace-defaults/assign/catalog/steps/verify-test.step.yml +7 -4
  14. data/.ace-defaults/assign/catalog/steps/work-on-task.step.yml +0 -21
  15. data/.ace-defaults/assign/presets/fix-bug.yml +4 -3
  16. data/.ace-defaults/assign/presets/quick-implement.yml +1 -1
  17. data/.ace-defaults/assign/presets/work-on-task.yml +3 -16
  18. data/CHANGELOG.md +260 -0
  19. data/README.md +20 -43
  20. data/docs/demo/canonical-skill-source.gif +0 -0
  21. data/docs/demo/canonical-skill-source.tape.yml +51 -0
  22. data/docs/demo/fork-provider.cast +957 -0
  23. data/docs/demo/fork-provider.gif +0 -0
  24. data/docs/demo/fork-provider.recording.json +32 -0
  25. data/docs/demo/fork-provider.tape.yml +65 -20
  26. data/docs/getting-started.md +5 -2
  27. data/docs/usage.md +63 -3
  28. data/handbook/guides/fork-context.g.md +2 -2
  29. data/handbook/skills/as-assign-drive/SKILL.md +13 -1
  30. data/handbook/skills/as-create-retro-internal/SKILL.md +29 -0
  31. data/handbook/skills/as-mark-task-done-internal/SKILL.md +29 -0
  32. data/handbook/skills/as-reflect-and-refactor-internal/SKILL.md +30 -0
  33. data/handbook/skills/as-task-load-internal/SKILL.md +28 -0
  34. data/handbook/workflow-instructions/assign/compose.wf.md +3 -3
  35. data/handbook/workflow-instructions/assign/create-retro-internal.wf.md +11 -0
  36. data/handbook/workflow-instructions/assign/create.wf.md +6 -3
  37. data/handbook/workflow-instructions/assign/drive.wf.md +273 -15
  38. data/handbook/workflow-instructions/assign/mark-task-done-internal.wf.md +12 -0
  39. data/handbook/workflow-instructions/assign/prepare.wf.md +5 -5
  40. data/handbook/workflow-instructions/assign/reflect-and-refactor-internal.wf.md +14 -0
  41. data/handbook/workflow-instructions/assign/run-in-batches.wf.md +4 -1
  42. data/handbook/workflow-instructions/assign/start.wf.md +5 -2
  43. data/handbook/workflow-instructions/assign/task-load-internal.wf.md +12 -0
  44. data/handbook/workflow-instructions/assign/verify-test-suite.wf.md +36 -0
  45. data/lib/ace/assign/atoms/catalog_loader.rb +105 -2
  46. data/lib/ace/assign/atoms/preset_expander.rb +12 -1
  47. data/lib/ace/assign/atoms/step_file_parser.rb +15 -0
  48. data/lib/ace/assign/cli/commands/assignment_target.rb +53 -0
  49. data/lib/ace/assign/cli/commands/finish.rb +7 -4
  50. data/lib/ace/assign/cli/commands/fork_run.rb +4 -1
  51. data/lib/ace/assign/cli/commands/fork_session.rb +52 -0
  52. data/lib/ace/assign/cli/commands/start.rb +9 -3
  53. data/lib/ace/assign/cli/commands/status.rb +231 -226
  54. data/lib/ace/assign/cli/commands/step.rb +62 -0
  55. data/lib/ace/assign/cli.rb +8 -1
  56. data/lib/ace/assign/models/step.rb +4 -2
  57. data/lib/ace/assign/molecules/fork_session_launcher.rb +189 -8
  58. data/lib/ace/assign/molecules/queue_scanner.rb +1 -0
  59. data/lib/ace/assign/molecules/skill_assign_source_resolver.rb +252 -50
  60. data/lib/ace/assign/molecules/tmux_fork_runner.rb +191 -0
  61. data/lib/ace/assign/organisms/assignment_executor.rb +294 -40
  62. data/lib/ace/assign/version.rb +1 -1
  63. metadata +21 -5
  64. 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: '06674279e2b0b541d4da053a4bb8e385ea6e76b8d8cb58e6fc4b5032dac2e15e'
4
- data.tar.gz: aa8e3423d01ebe3b86e355474b1a77e506cc1efcdf68f953e449f9bc671fbd72
3
+ metadata.gz: 9ca5adfb378f5dde05614d1ddac3cd1b363f20fae8b86941377c8a2973d8e6f5
4
+ data.tar.gz: 64116c0b867eb931ee1197b56944b7c05ce99dd3cc1baeed2188d849f15c41b1
5
5
  SHA512:
6
- metadata.gz: 51a4be473d02363c49c5439b4f4814c4c22dddfa30d2c7674aeae68f2c29a98f9dfe44440cd26aa4d5fc1633f5918d045cc24a190ab68a38e41d797a95e3e00f
7
- data.tar.gz: f97ce64ca4fecb86f9bdad9312f6864e70f5cbe098c8f00a4db408d77e91b4d0691f36868b6728238231e2ce923effd3e73c1f242d2c94cdb16e18f3a89526d9
6
+ metadata.gz: fae0fa4fbf25776497f8182e6074a95a4a553a9dcb213c513d2ae09a7b7fe2a725cb5b2175ca12056a566ea7e034b6dd7fdacdbe447bc89bf06a2ec7e4e16b0f
7
+ data.tar.gz: 115e8ad8b42d461daed625bed9a2c2b4704e94b00f6cb98044bc16022e4e3f9098c2f30ed9081acacdc557547ff176896baca0372bf0b241fbab102f428ee59c
@@ -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,17 +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
- context:
9
- default: fork
10
- reason: "Planning benefits from focused exploration"
11
-
12
- when_to_skip:
13
- - "Task is trivial and doesn't need a plan"
14
- - "Implementation plan already exists"
15
-
16
- effort: light
17
- 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,22 +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
- context:
14
- default: fork
15
- reason: "Review benefits from isolated analysis without implementation bias"
16
-
17
- when_to_skip:
18
- - "No code changes since last review"
19
- - "Changes are trivial (typo fix, config update)"
20
-
21
- effort: medium
22
- tags: [review, quality]
@@ -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,23 +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
- context:
15
- default: fork
16
- reason: "Substantial implementation benefits from focused agent"
17
-
18
- when_to_skip:
19
- - "Task is documentation-only"
20
- - "Changes are already implemented"
21
-
22
- effort: medium
23
- tags: [implementation, core-workflow]
@@ -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:
data/CHANGELOG.md CHANGED
@@ -7,6 +7,266 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.53.4] - 2026-04-20
11
+
12
+ ### Technical
13
+ - 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.
14
+ - 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]>`.
15
+
16
+ ## [0.53.3] - 2026-04-18
17
+
18
+ ### Technical
19
+ - 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.
20
+
21
+ ## [0.53.2] - 2026-04-16
22
+
23
+ ### Technical
24
+ - 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.
25
+
26
+ ## [0.53.1] - 2026-04-16
27
+
28
+ ### Fixed
29
+ - 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.
30
+
31
+ ### Technical
32
+ - 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.
33
+
34
+ ## [0.53.0] - 2026-04-15
35
+
36
+ ### Changed
37
+ - Rewrote retained assignment E2E runner/verifier contracts to emphasize public command journeys and impact-first state oracles over rigid capture choreography.
38
+ - Added `TS-ASSIGN-003` operations coverage for multi-assignment operator flow and scoped `fork-run` delegation behavior.
39
+
40
+ ### Technical
41
+ - Refreshed hierarchy/lifecycle/fork scenario guidance so debug artifacts remain fallback evidence and CLI-visible status transitions are primary evidence.
42
+
43
+ ## [0.52.0] - 2026-04-15
44
+
45
+ ### Changed
46
+ - 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.
47
+
48
+ ### Technical
49
+ - Made tmux fork wrappers print the translated skill handoff before launching the interactive agent, keeping the fork pane bootstrap visible and testable.
50
+
51
+ ## [0.51.0] - 2026-04-15
52
+
53
+ ### Changed
54
+ - 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.
55
+
56
+ ### Technical
57
+ - 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.
58
+
59
+ ## [0.50.3] - 2026-04-15
60
+
61
+ ### Fixed
62
+ - 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.
63
+
64
+ ### Changed
65
+ - 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.
66
+
67
+ ## [0.50.2] - 2026-04-15
68
+
69
+ ### Fixed
70
+ - 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.
71
+
72
+ ### Changed
73
+ - Replaced the stale `fork-provider` demo tape with an asciinema/YAML recording that verifies the real `work -> work-fs` tmux fork transition.
74
+
75
+ ## [0.50.1] - 2026-04-15
76
+
77
+ ### Changed
78
+ - 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`.
79
+
80
+ ## [0.50.0] - 2026-04-15
81
+
82
+ ### Changed
83
+ - 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.
84
+ - 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.
85
+
86
+ ### Technical
87
+ - Added an internal `ace-assign fork-session` entrypoint plus launcher/test coverage to reuse the existing provider-backed fork session path from tmux panes.
88
+ - Added a recorded tmux fork demo GIF under `docs/demo/` and updated usage docs for the new launch-mode contract.
89
+
90
+ ## [0.49.2] - 2026-04-13
91
+
92
+ ### Fixed
93
+ - 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/`.
94
+
95
+ ## [0.49.1] - 2026-04-13
96
+
97
+ ### Fixed
98
+ - 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.
99
+
100
+ ## [0.49.0] - 2026-04-13
101
+
102
+ ### Changed
103
+ - 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.
104
+ - Made `ace-assign start` and `ace-assign finish` concise by pointing operators to `ace-assign step` instead of printing raw instruction blocks inline.
105
+
106
+ ### Technical
107
+ - 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.
108
+
109
+ ## [0.48.0] - 2026-04-13
110
+
111
+ ### Changed
112
+ - 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.
113
+ - 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`.
114
+
115
+ ### Technical
116
+ - 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.
117
+
118
+ ## [0.47.3] - 2026-04-13
119
+
120
+ ### Changed
121
+ - Completed the batch i05 migration follow-through for this package and aligned it with the restarted `fast` / `feat` / `e2e` verification model.
122
+
123
+ ### Technical
124
+ - Included in the coordinated assignment-driven patch release for batch i05 package updates.
125
+
126
+
127
+ ## [0.47.2] - 2026-04-12
128
+
129
+ ### Fixed
130
+ - 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.
131
+
132
+ ### Technical
133
+ - 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.
134
+
135
+ ## [0.47.1] - 2026-04-12
136
+
137
+ ### Fixed
138
+ - 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.
139
+ - 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.
140
+
141
+ ### Technical
142
+ - 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.
143
+
144
+ ## [0.47.0] - 2026-04-11
145
+
146
+ ### Changed
147
+ - 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.
148
+ - 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.
149
+
150
+ ## [0.46.0] - 2026-04-11
151
+
152
+ ### Changed
153
+ - 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/`.
154
+ - 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.
155
+ - Tightened E2E goal runner/verifier contracts to reduce brittle artifact-name coupling and keep policy/lifecycle evidence checks aligned with current command outputs.
156
+
157
+ ## [0.45.0] - 2026-04-11
158
+
159
+ ### Changed
160
+ - 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>`.
161
+
162
+ ### Technical
163
+ - Synced the shipped work-on-task prepare fixture and executor rendering coverage to the new verification contract.
164
+
165
+ ## [0.44.5] - 2026-04-10
166
+
167
+ ### Fixed
168
+ - Updated verify-E2E guidance to support both `test-e2e/scenarios/` and legacy `test/e2e/` paths during migration in assignment presets and runtime executor output.
169
+ - Synced the work-on-task E2E fixture contract with the dual-path migration guidance.
170
+
171
+ ## [0.44.3] - 2026-04-07
172
+
173
+ ### Fixed
174
+ - 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`).
175
+ - Restored required canonical skill metadata headers (`# bundle`, `# agent`) for internal helper skills `as-create-retro-internal` and `as-reflect-and-refactor-internal`.
176
+ - Added source-based canonical step-definition fallback in assignment step materialization so custom-named steps with explicit `source` preserve canonical metadata.
177
+
178
+ ### Technical
179
+ - Added regression coverage for custom-named explicit-source step materialization preserving canonical fork metadata.
180
+
181
+ ## [0.44.2] - 2026-04-07
182
+
183
+ ### Fixed
184
+ - 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.
185
+ - 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`.
186
+
187
+ ## [0.44.1] - 2026-04-07
188
+
189
+ ### Fixed
190
+ - Preserved canonical step-level `assign.steps` presentation fields (`name` and `description`) when resolving skill-backed step rendering.
191
+
192
+ ### Technical
193
+ - Added required canonical metadata headers (`# bundle`, `# agent`) to internal helper skills `as-task-load-internal` and `as-mark-task-done-internal`.
194
+ - Added regression coverage for step-level description preservation in `SkillAssignSourceResolver`.
195
+
196
+ ## [0.44.0] - 2026-04-07
197
+
198
+ ### Changed
199
+ - 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.
200
+ - 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).
201
+ - Normalized runtime execution and materialization paths around canonical step `source` (`skill://...` and explicit `wfi://...`) while preserving legacy `skill`/`workflow` compatibility as migration fallback.
202
+ - Updated shipped assign compose/create/prepare workflow docs to use source-first step contract examples.
203
+
204
+ ### Fixed
205
+ - Restricted public assign-step discovery to canonical skills with `user-invocable: true`, preventing internal helper skills from appearing in public assignment composition inventory.
206
+
207
+ ### Technical
208
+ - Added internal helper workflows and skills under `ace-assign/handbook` to preserve helper execution contracts while keeping them non-discoverable.
209
+ - Marked `pre-commit-review` and `verify-test` helper templates as explicit transitional exceptions with migration metadata.
210
+
211
+ ## [0.42.4] - 2026-04-05
212
+
213
+ ### Fixed
214
+ - Scoped canonical `skill://` and `wfi://` source discovery to in-project defaults and explicitly registered external sources so ambient installed gems no longer leak into assign resolution.
215
+ - Preserved child `skill` metadata only for hand-authored explicit split sub-steps while keeping inferred and preset-expanded canonical sub-steps fully materialized.
216
+
217
+ ## [0.42.3] - 2026-04-02
218
+
219
+ ### Changed
220
+ - Updated HITL guidance wording in `ace-assign status` and assignment workflow/docs to use canonical "event" terminology (`Review event`, `HITL event`).
221
+
222
+ ### Technical
223
+ - Refreshed status command test expectations for the updated HITL wording contract.
224
+
225
+ ## [0.42.2] - 2026-04-02
226
+
227
+ ### Technical
228
+ - Updated HITL stall-path fixture expectations in status command coverage from `.ace-hitl/...` to `.ace-local/hitl/...` to match the new default HITL root.
229
+
230
+ ## [0.42.1] - 2026-04-02
231
+
232
+ ### Changed
233
+ - Updated `wfi://assign/drive` HITL guidance to use per-item polling (`ace-hitl wait <id>`) as the default requester path and `ace-hitl update --resume` as fallback dispatch.
234
+
235
+ ### Fixed
236
+ - Updated `ace-assign status` HITL operator guidance output to display polling-first and fallback resume commands aligned with the current HITL contract.
237
+
238
+ ### Technical
239
+ - Refreshed command-level status tests for the new HITL guidance text contract.
240
+
241
+ ## [0.42.0] - 2026-04-01
242
+
243
+ ### Changed
244
+ - Added a dedicated HITL stall protocol to `wfi://assign/drive`, documenting `ace-hitl` create/list/show/update usage, canonical `ace-assign fail --message "HITL: <id> <path>"` formatting, and resume/archive flow without reintroducing gate-state mechanics.
245
+
246
+ ### Fixed
247
+ - `ace-assign status` now detects HITL-formatted stall reasons and prints direct operator guidance for `ace-hitl show <id>` plus stored-path hints.
248
+
249
+ ### Technical
250
+ - Added command-level status coverage for HITL and non-HITL stall reason rendering to prevent regressions in current-step guidance output.
251
+
252
+ ## [0.41.12] - 2026-04-01
253
+
254
+ ### Fixed
255
+ - Restored parent-only fork boundaries for generated split subtrees by preventing child steps from inheriting fork context defaults when the parent step is the fork root.
256
+ - Removed default fork context declarations from canonical `plan-task`, `work-on-task`, and `review-pr` catalog steps so only explicitly fork-root parent steps run in forked context.
257
+
258
+ ### Technical
259
+ - Added regression coverage for symbolized/string fork-context normalization in child-step materialization paths.
260
+
261
+ ## [0.41.11] - 2026-04-01
262
+
263
+ ### Fixed
264
+ - Restored parent-only fork semantics for split-subtree execution by preventing canonical child-step `context: fork` defaults from being materialized onto generated subtree children (notably `plan-task` and `work-on-task`).
265
+ - Updated workflow-backed child-step rendering to strip inherited fork context/provider metadata when the child did not explicitly declare fork settings.
266
+
267
+ ### Technical
268
+ - Added regression coverage for split-subtree child materialization and scoped status output to ensure child `plan-task` does not emit fork-execution guidance.
269
+
10
270
  ## [0.41.10] - 2026-03-31
11
271
 
12
272
  ### Changed