forge-orkes 0.11.0 → 0.12.1

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forge-orkes",
3
- "version": "0.11.0",
3
+ "version": "0.12.1",
4
4
  "description": "Set up the Forge meta-prompting framework for Claude Code in your project",
5
5
  "bin": {
6
6
  "create-forge": "./bin/create-forge.js"
@@ -27,6 +27,8 @@ Structured conversation: approach, trade-offs, decisions. Clarity, not artifacts
27
27
  > Write to `.forge/context.md` after EVERY confirmed decision, before asking the next question.
28
28
  > If you reach convergence without having written each decision individually — you already violated this rule.
29
29
 
30
+ > **Advisory mode (no milestone yet):** Storage still exists. Use `### M? — {topic} (drafting)` heading. Do NOT wait for milestone creation in Step A to start writing. First decision → create heading → append. Same protocol as milestone-bound discussions.
31
+
30
32
  After each user response that confirms a decision:
31
33
 
32
34
  1. **STOP** — do not continue the discussion
@@ -96,12 +98,14 @@ options:
96
98
  If fresh (after `/clear`):
97
99
 
98
100
  ```
99
- Read: .forge/state/milestone-{id}.yml → current position, progress
101
+ Read: .forge/state/milestone-{id}.yml → current position, progress (skip if no milestone — advisory mode)
100
102
  Read: .forge/project.yml → tech stack, project description
101
103
  Read: .forge/context.md → existing locked decisions (if exists)
102
104
  Read: .forge/constitution.md → active gates (if exists)
103
105
  ```
104
106
 
107
+ **Advisory mode (no milestone):** Skip milestone state load. Progressive persistence still applies — writes go to `.forge/context.md` under `### M? — {topic} (drafting)` heading from the first decision. Milestone gets created in Step A only if scope warrants it.
108
+
105
109
  Check `.forge/phases/` for research. If inline-only: *"Summarize findings, or re-scan?"*
106
110
 
107
111
  ### Step 1: Present Decisions with AskUserQuestion
@@ -306,6 +310,12 @@ If milestone exists → skip to Step B.
306
310
 
307
311
  ### Step B: Standard Handoff
308
312
 
313
+ > **HARD GATE — VERIFY BEFORE HANDOFF.**
314
+ > Read `.forge/context.md` now. Count decisions under the active milestone heading. Compare against decisions confirmed in this conversation.
315
+ > - **If counts match** → proceed to handoff steps below.
316
+ > - **If file is missing, heading absent, or decisions undercount** → progressive persistence failed. STOP. Do NOT recommend `/clear`. Write the missing decisions now from conversation memory, then re-verify. Only then proceed.
317
+ > - **Never claim "state written" without having just read the file.** The recommendation `/clear` is destructive to working memory — earn it.
318
+
309
319
  1. **Promote decisions in `context.md`** -- Rename milestone heading from `(drafting)` → `(locked {date})`. Decisions already written progressively — just finalize:
310
320
  - Verify all confirmed decisions present under `## Locked Decisions`
311
321
  - Verify deferred items under `## Deferred Ideas`
@@ -313,4 +323,4 @@ If milestone exists → skip to Step B.
313
323
  - Add any unresolved items to `## Needs Resolution`
314
324
  - If `context.md` already exists (post-planning discussion), update relevant sections + log amendments
315
325
  2. **Update state** -- `current.status` = `planning` (`architecting` for Full) in milestone yml
316
- 3. **Recommend clear:** *"State written. `/clear` then `/forge` for {planning/architecting}."*
326
+ 3. **Recommend clear:** *"State written and verified ({N} decisions in context.md). `/clear` then `/forge` for {planning/architecting}."*
@@ -37,7 +37,40 @@ Read `.forge/context.md`. **Needs Resolution** unchecked → warn: *"{N} unresol
37
37
 
38
38
  Check `.forge/refactor-backlog.yml`:
39
39
  - *"{N} refactors ({Q} quick, {S} standard). Tackle first?"*
40
- - Pick → `quick-tasking`/Standard, set `in_progress`. Decline → proceed.
40
+ - Pick item branch on `effort`:
41
+ - `effort: quick` → `quick-tasking`, set `status: in_progress`. Unchanged.
42
+ - `effort: standard` → **Promote to milestone** (procedure below), then fall through to Step 3 Standard routing.
43
+ - Decline → proceed.
44
+
45
+ **Promotion procedure (effort: standard only):**
46
+
47
+ 1. Read backlog item `id` (e.g. `R61-002`). Synthesize milestone id `m-{R-id}` (e.g. `m-R61-002`).
48
+ 2. Copy `.forge/templates/state/milestone.yml` → `.forge/state/milestone-{m-R-id}.yml`. Populate:
49
+ - `milestone.id: m-{R-id}`
50
+ - `milestone.name: "Promoted from {R-id}: {backlog item title}"`
51
+ - `milestone.origin: {R-id}`
52
+ - `current.tier: standard`, `current.status: researching`
53
+ - `progress.last_update: {ISO date}`
54
+ 3. Append to `.forge/state/index.yml` `milestones:`:
55
+ ```yaml
56
+ - id: m-{R-id}
57
+ name: "Promoted from {R-id}: {title}"
58
+ status: active
59
+ last_updated: "{ISO date}"
60
+ ```
61
+ 4. Append to `.forge/roadmap.yml` — one milestone entry + one phase (`refactor-{R-id}`, `requirements_source: refactor-backlog.yml#{R-id}`, `dependencies: []`).
62
+ 5. Update `.forge/refactor-backlog.yml` item: `status: in_progress`, add `promoted_to: m-{R-id}`.
63
+ 6. Confirm: *"Promoted {R-id} → milestone m-{R-id}. State + roadmap created. Routing to researching."*
64
+
65
+ ```text
66
+ backlog pickup → effort: standard
67
+ ├─ write milestone-{m-R-id}.yml (origin: {R-id})
68
+ ├─ append index.yml + roadmap.yml
69
+ ├─ flip backlog item (in_progress + promoted_to)
70
+ └─ fall through → Standard tier routing
71
+ ```
72
+
73
+ Downstream skills (researching, discussing, planning, executing, verifying, reviewing) see a normal milestone — no special branching.
41
74
 
42
75
  Check `desire_paths` 3+ occurrences:
43
76
  - *"Recurring: [{description}] ({N}x). Fix via [suggestion]?"*
@@ -304,16 +304,28 @@ Report = audit trail.
304
304
  ## Backlog Lifecycle
305
305
 
306
306
  ```
307
- pending → in_progress → done
308
- pending → dismissed (during triage or later)
307
+ pending → in_progress → resolved
308
+ pending → wontfix (during triage or later)
309
309
  ```
310
310
 
311
- `quick` -> `quick-tasking`. `standard` -> Standard tier.
311
+ `quick` -> `quick-tasking`. `standard` -> promoted to milestone via `forge` Step 1.2.
312
312
 
313
- `forge` surfaces -> user selects -> route by effort -> `status: done` + date.
313
+ `forge` surfaces -> user selects -> route by effort -> on completion, `status: resolved` + date.
314
+
315
+ Legacy items may use `done`/`dismissed` — both still readable; new transitions use `resolved`/`wontfix`.
316
+
317
+ ## Promoted Milestone Completion Hook
318
+
319
+ If the milestone being completed has `milestone.origin: {R-id}` set (promoted from refactor-backlog), flip the originating item before exit:
320
+
321
+ 1. Read `milestone.origin` from `milestone-{id}.yml`. If null → skip (fresh milestone, no hook).
322
+ 2. Open `.forge/refactor-backlog.yml`. Find item with matching `id`.
323
+ 3. Update item: `status: resolved`, set `completed: "<ISO 8601 date>"`. Keep `promoted_to: {milestone-id}` intact for audit trail.
324
+ 4. Log in summary: *"Backlog item {R-id} → resolved (promoted milestone {id} complete)."*
314
325
 
315
326
  ## Phase Handoff
316
327
 
317
328
  1. Confirm report + backlog
318
- 2. Set `current.status: complete` and `current.completed_at: "<ISO 8601 timestamp>"`
319
- 3. *"Milestone [{name}] complete. Report: `.forge/audits/milestone-{id}-health-report.md`. {N} backlog items. `/forge` or backlog."*
329
+ 2. **Run promoted-milestone completion hook** (above) if `milestone.origin` set
330
+ 3. Set `current.status: complete` and `current.completed_at: "<ISO 8601 timestamp>"`
331
+ 4. *"Milestone [{name}] complete. Report: `.forge/audits/milestone-{id}-health-report.md`. {N} backlog items. `/forge` or backlog."*
@@ -6,6 +6,7 @@
6
6
  milestone:
7
7
  id: null # Milestone ID from roadmap
8
8
  name: "" # Human-readable milestone name
9
+ origin: null # Backlog item ID if this milestone was promoted from refactor-backlog.yml. null for fresh milestones.
9
10
 
10
11
  current:
11
12
  tier: null # quick | standard | full