forge-orkes 0.9.0 → 0.9.2
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
|
@@ -23,16 +23,33 @@ Structured conversation: approach, trade-offs, decisions. Clarity, not artifacts
|
|
|
23
23
|
|
|
24
24
|
## Progressive Persistence
|
|
25
25
|
|
|
26
|
-
**Decisions persist immediately
|
|
26
|
+
**Decisions persist immediately. This is a hard gate — not a guideline.**
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
After each user response that confirms a decision:
|
|
29
29
|
|
|
30
|
-
1. **
|
|
31
|
-
2. **
|
|
32
|
-
3. **
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
1. **STOP** — do not continue the discussion
|
|
31
|
+
2. **Write to disk** — append to `.forge/context.md` (create from template if missing)
|
|
32
|
+
3. **THEN** continue to the next question
|
|
33
|
+
|
|
34
|
+
Never accumulate decisions in working memory. Never batch writes to convergence.
|
|
35
|
+
|
|
36
|
+
### Write Protocol
|
|
37
|
+
|
|
38
|
+
**On first decision of the session:**
|
|
39
|
+
- Check if `.forge/context.md` exists. If not → create it from `.forge/templates/context.md`
|
|
40
|
+
- Add a milestone heading inside `## Locked Decisions`: `### M{id} — {name} (drafting)` (use "M?" if no milestone yet)
|
|
41
|
+
|
|
42
|
+
**On each confirmed decision:**
|
|
43
|
+
- Append under the milestone heading: `- **[Topic]**: [Decision]. Reason: [Why]`
|
|
44
|
+
|
|
45
|
+
**On deferred ideas** (user says "not now" / "later" / "skip"):
|
|
46
|
+
- Append to `## Deferred Ideas` immediately: `- [Idea] — Deferred because: [reason]`
|
|
47
|
+
|
|
48
|
+
**On discretion areas** (left to agent judgment):
|
|
49
|
+
- Append to `## Discretion Areas` immediately
|
|
50
|
+
|
|
51
|
+
**At Phase Handoff:**
|
|
52
|
+
- Rename `(drafting)` → `(locked {date})` — decisions are already written, just finalize the heading
|
|
36
53
|
|
|
37
54
|
### Why
|
|
38
55
|
|
|
@@ -145,7 +162,13 @@ Apply Functionality Distillation (above), grounded in research findings.
|
|
|
145
162
|
|
|
146
163
|
**After each user response:** write confirmed behavioral decisions to `context.md` immediately.
|
|
147
164
|
|
|
148
|
-
### Step 5:
|
|
165
|
+
### Step 5: Pre-Convergence Audit
|
|
166
|
+
|
|
167
|
+
**Before summarizing, read `.forge/context.md` and verify all confirmed decisions are present.**
|
|
168
|
+
|
|
169
|
+
If any decision from the conversation is missing from the file → write it now. Do not proceed to the summary until the file matches the conversation. This is a hard gate.
|
|
170
|
+
|
|
171
|
+
### Step 6: Converge
|
|
149
172
|
|
|
150
173
|
Summarize decided items, then confirm:
|
|
151
174
|
|
|
@@ -99,9 +99,8 @@ No match → fall through to Step 2B (tier detection).
|
|
|
99
99
|
|
|
100
100
|
### Parent Session Model Advisory
|
|
101
101
|
|
|
102
|
-
Check `models.parent_session` from `project.yml`.
|
|
103
|
-
|
|
104
|
-
- Advisory only -- no block. Reviewer enforces at review gate.
|
|
102
|
+
Check `models.parent_session` from `project.yml`. Show only on mismatch: *"Session model: {current}. Project recommends: {parent_session} — use `/model {parent_session}` to switch."*
|
|
103
|
+
- Advisory only — no block. Reviewer enforces at review gate.
|
|
105
104
|
|
|
106
105
|
## Step 2A: Project Init
|
|
107
106
|
|
|
@@ -157,11 +156,11 @@ Read `models` from `project.yml`:
|
|
|
157
156
|
2. `models.default` → fallback
|
|
158
157
|
3. Inherit parent session
|
|
159
158
|
|
|
160
|
-
Resolve `{model}` for `{next}` skill using precedence above.
|
|
159
|
+
Resolve `{model}` for `{next}` skill using precedence above. Show only on mismatch:
|
|
161
160
|
|
|
162
|
-
*"
|
|
161
|
+
*"Session: {current_model}. {next} expects {model} (from {source}) — use `/model {model}` to switch."*
|
|
163
162
|
|
|
164
|
-
Where `{source}` = `skills.{name}` | `models.default` | `parent session`.
|
|
163
|
+
Where `{source}` = `skills.{name}` | `models.default` | `parent session`. Suppress when session model matches expected.
|
|
165
164
|
|
|
166
165
|
**Model routing is advisory.** All phases use `Skill()`. Display expected model at each transition. Mismatch → suggest `/model {expected}`. Review gate logs model used.
|
|
167
166
|
|