From 2e4a60e7319f87b21fd85798997f511ebf0fa95c Mon Sep 17 00:00:00 2001 From: Benjamin Borbe Date: Sat, 27 Jun 2026 23:38:15 +0200 Subject: [PATCH 1/3] feat(goal): align goal status enum with task statuses Add next, in_progress, backlog, hold, aborted to AvailableGoalStatuses alongside the existing active/completed/on_hold. Reads and writes accept either set so existing vault files keep validating and task-aligned UI controls (task-orchestrator drag-and-drop on the Goals view) can write the same vocabulary they use for tasks. active and on_hold remain accepted as backward-compat aliases. --- pkg/domain/goal.go | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/pkg/domain/goal.go b/pkg/domain/goal.go index c7e78f5..19ffdeb 100644 --- a/pkg/domain/goal.go +++ b/pkg/domain/goal.go @@ -36,18 +36,41 @@ func NewGoal(data map[string]any, meta FileMetadata, content Content) *Goal { } // GoalStatus represents the status of a goal. +// +// The enum is aligned with the task status taxonomy so a single mental model +// and a single UI control set (e.g. task-orchestrator's Kanban columns) can +// act on both tasks and goals. The original 3 values (active, completed, +// on_hold) are retained as accepted aliases for backward compatibility with +// existing goal files: active ↔ in_progress semantically, on_hold ↔ hold +// semantically. New writes from agents are expected to use the new canonical +// values; reads tolerate both. type GoalStatus string const ( - GoalStatusActive GoalStatus = "active" - GoalStatusCompleted GoalStatus = "completed" - GoalStatusOnHold GoalStatus = "on_hold" + GoalStatusNext GoalStatus = "next" + GoalStatusInProgress GoalStatus = "in_progress" + GoalStatusBacklog GoalStatus = "backlog" + GoalStatusCompleted GoalStatus = "completed" + GoalStatusHold GoalStatus = "hold" + GoalStatusAborted GoalStatus = "aborted" + + // Legacy values — accepted on read + write for backward compatibility. + // New code should prefer GoalStatusInProgress / GoalStatusHold. + GoalStatusActive GoalStatus = "active" + GoalStatusOnHold GoalStatus = "on_hold" ) // AvailableGoalStatuses lists all valid canonical goal status values. +// Includes both the new task-aligned set and the legacy 3-value set so +// existing vault files (which may use either) continue to validate. var AvailableGoalStatuses = GoalStatuses{ - GoalStatusActive, + GoalStatusNext, + GoalStatusInProgress, + GoalStatusBacklog, GoalStatusCompleted, + GoalStatusHold, + GoalStatusAborted, + GoalStatusActive, GoalStatusOnHold, } From f75263e080a0334a54cf72aa3f8be2a6c1aab551 Mon Sep 17 00:00:00 2001 From: Benjamin Borbe Date: Sat, 27 Jun 2026 23:41:13 +0200 Subject: [PATCH 2/3] docs(changelog): add v0.90.0 entry for goal status enum expansion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per dev guide — every code change ships with a CHANGELOG bullet. Release-watcher auto-tags once merged. --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f556502..b2101bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ Please choose versions by [Semantic Versioning](http://semver.org/). * MINOR version when you add functionality in a backwards-compatible manner, and * PATCH version when you make backwards-compatible bug fixes. +## v0.90.0 + +- feat(goal): align `AvailableGoalStatuses` with task statuses — `next, in_progress, backlog, hold, aborted` accepted alongside legacy `active, completed, on_hold` (kept as backward-compat aliases). `goal set status in_progress` etc. now succeed; existing vault files using either set continue to validate. Unblocks task-orchestrator drag-and-drop on the Goals view (bborbe/task-orchestrator#19). + ## v0.89.0 - feat(launch-goal): add new `/vault-cli:launch-goal` interview-driven goal framing command — discovery → fan-out exploration (5 parallel semantic searches + duplicate-check gate) → 3-lens framing (parallel subagents → top-3 candidates) → sharpen → draft-to-disk with `status: draft` + Obsidian link → parallel verify (Adversarial Laziness Test + outcome traceability + hedge-word grep) → audit fan-out (goal-auditor + graph-auditor + late dup-check) → status flip on PASS. Resolves the "create-goal jumps straight to writing" failure mode by forcing an outcome-sentence confirmation gate before file creation. Mirrors `/launch-agent` shape; positions as the rigorous front door beside `create-goal`'s template fast-path From ca51442a12251c0f5b5bdcc5f32d914cd0f9a4b3 Mon Sep 17 00:00:00 2001 From: Benjamin Borbe Date: Sat, 27 Jun 2026 23:42:45 +0200 Subject: [PATCH 3/3] fix(changelog): use `## Unreleased` header (releaser autoRelease=true promotes the version) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2101bd..b17bc2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Please choose versions by [Semantic Versioning](http://semver.org/). * MINOR version when you add functionality in a backwards-compatible manner, and * PATCH version when you make backwards-compatible bug fixes. -## v0.90.0 +## Unreleased - feat(goal): align `AvailableGoalStatuses` with task statuses — `next, in_progress, backlog, hold, aborted` accepted alongside legacy `active, completed, on_hold` (kept as backward-compat aliases). `goal set status in_progress` etc. now succeed; existing vault files using either set continue to validate. Unblocks task-orchestrator drag-and-drop on the Goals view (bborbe/task-orchestrator#19).