forge-orkes 0.24.0 → 0.25.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.
package/package.json
CHANGED
|
@@ -37,13 +37,19 @@ Check state files:
|
|
|
37
37
|
2. **Check arg first.** `/forge 2` or `/forge "Auth system"`:
|
|
38
38
|
- Match IDs (exact) or names (case-insensitive substring)
|
|
39
39
|
- Found → auto-select: *"Resuming {id}: [{name}] -- {current.status}, {percent}%"*
|
|
40
|
-
- No match → *"No match for '{arg}'. Active:"*
|
|
41
|
-
3. **
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
- No match → *"No match for '{arg}'. Active:"* (an explicit-but-unmatched arg does **not** fall through to the branch anchor — honor the no-match prompt)
|
|
41
|
+
3. **Branch anchor (worktree → milestone).** Only when **no arg** was given. The worktree's git branch is a deterministic milestone signal — consult it *before* the timestamp default so a worktree resolves to *its own* milestone, not merely the most-recently-touched one. Run `git branch --show-current`, then match in priority order:
|
|
42
|
+
- **Exact** — branch equals any milestone's `lifecycle.worktree_branch` (a Forge-managed worktree from `orchestrating`).
|
|
43
|
+
- **Id token** — branch name contains a milestone id as a **prefixed**, delimited token: `m-{id}` or `milestone-{id}`, bounded by `/`, `-`, `_`, or start/end of string (e.g. `feat/m-RT01-pipeline-observability` → `m-RT01`). **Never match a bare number** — `feat/fix-issue-2` must not anchor to milestone `2`. Forge controls both milestone ids and worktree branch names, so the prefix is always available. Ambiguous (≥2 distinct milestone ids in the branch name) → no anchor; fall through to step 4.
|
|
44
|
+
- Matched milestone is `active`/`not_started` → **hard-select it** (skip the timestamp default): *"Anchored to {id}: [{name}] from worktree branch `{branch}` -- {current.status}, {percent}%."* → go to step 7.
|
|
45
|
+
- Matched milestone is `deferred`/`complete` → **do not auto-resume.** Surface and ask: *"Worktree branch `{branch}` points at {id}: [{name}], but it's {status}. Resume it, or pick another?"* → fall through to step 4 (never silently reactivate frozen/finished work).
|
|
46
|
+
- No branch, detached HEAD, or no match → fall through to step 4.
|
|
47
|
+
4. **Multiple (no arg, no anchor):** Show active + not_started milestones with status + `last_updated`. Default most recent. After main list, show **Deferred:** section (id, name, frozen status `was: {current.status}`, defer date, reason). *"{N} active. Most recent: [{name}] ({current.status}, {date}). This one, or switch?"*
|
|
48
|
+
5. **One:** Auto-select. *"Resuming: [{name}] -- {current.status}, {percent}%"*
|
|
49
|
+
6. **None active:** If deferred exist, mention them: *"No active milestones. {N} deferred — 'resume milestone {id}' to reactivate."* Else → init or create.
|
|
50
|
+
7. Load `milestone-{id}.yml`
|
|
51
|
+
8. **Route on `current.status`, NOT `{percent}`.** Complete only at `complete`. 100% phases ≠ done -- verifying + reviewing must run.
|
|
52
|
+
9. Report + **immediately route** (Step 3). Show: `current.status`, phase labels (Executed/Verified/Pending/In progress -- **never "Complete" for unverified**), `{percent}`. **No menus.** Position → action → invoke.
|
|
47
53
|
|
|
48
54
|
**`{percent}` is derived on read — never stored.** Compute it, don't look it up:
|
|
49
55
|
- `total` = number of phases listed for this milestone in `.forge/roadmap.yml` (the milestone's `phases:` list length).
|