Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Removed

- **Deprecated goal qualification command**: Removed the `jumbo goal qualify` command surface. Use `jumbo goal approve` for successful QA review approvals.

## [3.12.2] - 2026-07-06

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/advanced-workflows.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Tips:

- Use `jumbo goal update-progress --id <goalId> --task-description "..."` after each meaningful sub-task.
- If QA finds issues, use `jumbo goal reject --id <goalId> --audit-findings "..."`, fix, then `submit` again.
- `jumbo goal qualify --id <goalId>` exists for backward compatibility but is deprecated in favor of `goal approve`.
- Use `jumbo goal approve --id <goalId>` after QA review passes.

## Control phase handoffs with --continue

Expand Down
26 changes: 0 additions & 26 deletions docs/reference/commands/goal.md
Original file line number Diff line number Diff line change
Expand Up @@ -313,32 +313,6 @@ Approve a goal after successful QA review — transitions from `in-review` to `a
> jumbo goal approve --id goal_abc123 --continue
```

---

## jumbo goal qualify

Qualify a goal after successful QA review. This command is deprecated and retained for compatibility. Prefer `jumbo goal approve`.

### Synopsis

```bash
> jumbo goal qualify --id <goalId>
```

### Options

| Option | Description |
|--------|-------------|
| `-i, --id <goalId>` | ID of the goal to qualify (required) |

### Examples

```bash
> jumbo goal qualify --id goal_abc123
```

---

## jumbo goal reject

Reject a goal after failed QA review — transitions from `in-review` back to `doing`.
Expand Down
3 changes: 1 addition & 2 deletions src/presentation/cli/commands/goals/approve/goal.approve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
* Transitions goal from 'in-review' to 'approved' status and renders codification instructions.
*
* This is the primary command for review approval.
* See also: goal.qualify (deprecated alias).
*/

import { CommandMetadata, CONTINUE_OPTION } from "../../registry/CommandMetadata.js";
Expand Down Expand Up @@ -49,7 +48,7 @@ export async function goalApprove(
const outputBuilder = new GoalApproveOutputBuilder();

try {
// 1. Execute via controller (delegates to same QualifyGoalController)
// 1. Execute via the existing approval workflow
const response = await container.qualifyGoalController.handle({
goalId: options.id,
});
Expand Down

This file was deleted.

66 changes: 0 additions & 66 deletions src/presentation/cli/commands/goals/qualify/goal.qualify.ts

This file was deleted.

2 changes: 1 addition & 1 deletion src/presentation/cli/commands/goals/reject/goal.reject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export const metadata: CommandMetadata = {
description: "Reject a goal with review issues"
}
],
related: ["goal review", "goal qualify", "goal start"],
related: ["goal review", "goal approve", "goal start"],
requiresProject: true
};

Expand Down
2 changes: 1 addition & 1 deletion src/presentation/cli/commands/goals/review/goal.review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export const metadata: CommandMetadata = {
description: "Start QA review on a submitted goal"
}
],
related: ["goal submit", "goal qualify", "goal reject"],
related: ["goal submit", "goal approve", "goal reject"],
requiresProject: true
};

Expand Down
6 changes: 0 additions & 6 deletions src/presentation/cli/commands/registry/generated-commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ import { goalCodify, metadata as goalCodifyMeta } from '../../commands/goals/cod
import { goalCommit, metadata as goalCommitMeta } from '../../commands/goals/commit/goal.commit.js';
import { goalsList, metadata as goalsListMeta } from '../../commands/goals/list/goals.list.js';
import { goalPause, metadata as goalPauseMeta } from '../../commands/goals/pause/goal.pause.js';
import { goalQualify, metadata as goalQualifyMeta } from '../../commands/goals/qualify/goal.qualify.js';
import { goalRefine, metadata as goalRefineMeta } from '../../commands/goals/refine/goal.refine.js';
import { goalReject, metadata as goalRejectMeta } from '../../commands/goals/reject/goal.reject.js';
import { goalRemove, metadata as goalRemoveMeta } from '../../commands/goals/remove/goal.remove.js';
Expand Down Expand Up @@ -300,11 +299,6 @@ export const commands: RegisteredCommand[] = [
metadata: goalPauseMeta,
handler: goalPause
},
{
path: 'goal qualify',
metadata: goalQualifyMeta,
handler: goalQualify
},
{
path: 'goal refine',
metadata: goalRefineMeta,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,11 @@ describe("requiresProject metadata", () => {
expect(command).toBeDefined();
expect(command?.metadata.requiresProject).toBe(true);
});

it("registers goal approve and no longer registers goal qualify", () => {
const paths = commands.map((c) => c.path);

expect(paths).toContain("goal approve");
expect(paths).not.toContain("goal qualify");
});
});
Loading