forge-orkes 0.58.2 → 0.58.3

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.58.2",
3
+ "version": "0.58.3",
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"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "forge": {
3
- "version": "0.58.2",
3
+ "version": "0.58.3",
4
4
  "default_tier": "standard",
5
5
  "beads_integration": false,
6
6
  "context_gates": {
@@ -0,0 +1,103 @@
1
+ # Migration Guide: Render-on-read state registries (Forge 0.53.0)
2
+
3
+ Applies to projects whose derived registries — `.forge/state/index.yml` and/or
4
+ `.forge/streams/active.yml` — are still **git-tracked**. Both files were already
5
+ `DERIVED / DO NOT HAND-EDIT` projections; 0.53.0 makes them **git-ignored
6
+ render-on-read caches**: regenerated at every `forge` boot from their sources and
7
+ **never committed**. Because the value is computed on read and never stored in
8
+ git, the two-registry drift class — a committed projection going stale against
9
+ its source (e.g. a committed `active.yml` phase reading `researching` while the
10
+ milestone had moved to `discussing`) — can no longer occur.
11
+
12
+ Sources are unchanged: `index.yml` ← `.forge/state/milestone-*.yml` (Rollup 1.0);
13
+ `active.yml` ← `.forge/streams/*.yml` + active milestones (Stream Rollup). Only
14
+ the *storage* changes — tracked file → local cache.
15
+
16
+ Projects that never committed these files (fresh 0.53.0+ installs) need nothing.
17
+
18
+ ## Prerequisites
19
+
20
+ 1. On the new version's framework files (`npx forge-orkes upgrade`, or the
21
+ `upgrading` skill) — so the updated `.gitignore` entries and the render-then-read
22
+ `deferred`/`planning` skills are present.
23
+ 2. Working tree clean or changes committed — the migration stops tracking two
24
+ files and edits `.gitignore`.
25
+
26
+ ## Detection
27
+
28
+ Keyed on **git-tracking state**, not a content grep: the `DERIVED / DO NOT
29
+ HAND-EDIT` header is identical before and after, so only `git ls-files` can tell
30
+ a committed-pre-0.53.0 registry from a git-ignored-post-0.53.0 one. Fires while
31
+ either registry is still tracked; silent once both are untracked (already
32
+ migrated), and silent in a non-Forge / non-git tree:
33
+
34
+ ```bash
35
+ git rev-parse --is-inside-work-tree >/dev/null 2>&1 || exit 0
36
+ migrate=0
37
+ for f in .forge/state/index.yml .forge/streams/active.yml; do
38
+ if git ls-files --error-unmatch "$f" >/dev/null 2>&1; then
39
+ echo "MIGRATE — $f is still git-tracked (pre-0.53.0); render-on-read makes it a git-ignored cache regenerated at boot"
40
+ migrate=1
41
+ fi
42
+ done
43
+ [ "$migrate" -eq 0 ] && exit 0
44
+ ```
45
+
46
+ ## Migration steps
47
+
48
+ ### 1. Stop tracking the two registries (keep them on disk)
49
+
50
+ ```bash
51
+ git rm --cached .forge/state/index.yml .forge/streams/active.yml 2>/dev/null
52
+ ```
53
+
54
+ `--cached` removes them from the index only — the working-copy files stay as a
55
+ local cache and are re-rendered on the next boot. (If either was never tracked,
56
+ the command is a harmless no-op for that path.)
57
+
58
+ ### 2. Git-ignore both derived registries
59
+
60
+ Add to the project's root `.gitignore` (paths relative to the repo root):
61
+
62
+ ```
63
+ .forge/state/index.yml
64
+ .forge/streams/active.yml
65
+ ```
66
+
67
+ Consumer projects created from `create-forge` instead gain these under
68
+ `.forge/.gitignore` (paths relative to `.forge/`):
69
+
70
+ ```
71
+ state/index.yml
72
+ streams/active.yml
73
+ ```
74
+
75
+ Without this, the next `git add .forge/` would re-commit the caches and reopen
76
+ the drift class.
77
+
78
+ ### 3. Confirm the readers render-then-read
79
+
80
+ `forge` boot and `chief-of-staff` already render before reading. In 0.53.0 the
81
+ two direct readers are converted too: `deferred` and `planning` no longer treat a
82
+ missing `index.yml` as "not a Forge project" — the project sentinel moved to the
83
+ committed `.forge/project.yml`, and they derive milestone state from
84
+ `.forge/state/milestone-*.yml` (rendering the cache first) when `index.yml` is
85
+ absent. These ship with the framework upgrade; no per-project edit is needed.
86
+
87
+ ### 4. Regenerate the caches
88
+
89
+ Run `/forge` (boot) — it runs Rollup 1.0 and the Stream Rollup and rewrites both
90
+ files from their sources. From here they are regenerated on read, never committed.
91
+
92
+ ## Validation
93
+
94
+ - `git ls-files --error-unmatch .forge/state/index.yml` exits **non-zero**
95
+ (untracked); same for `.forge/streams/active.yml`.
96
+ - `git check-ignore .forge/state/index.yml` and `git check-ignore
97
+ .forge/streams/active.yml` each exit **0** (ignored).
98
+ - Both files still exist on disk after a `/forge` boot (rendered cache).
99
+ - A fresh clone with no prior boot: `deferred` and `planning` do **not** print
100
+ "No forge state found" (they key the sentinel on `project.yml`).
101
+ - Editing a milestone's phase and booting yields an `active.yml` whose row phase
102
+ matches the milestone — the projection can no longer be stale, because it is
103
+ never stored.
@@ -0,0 +1,42 @@
1
+ # Migration Guide: Render-on-read registries catch-up (Forge 0.58.3)
2
+
3
+ Applies to projects that upgraded **across 0.53.0 while the 0.53.0 migration
4
+ guide was missing from the shipped template** (missing 0.53.0–0.58.2; restored
5
+ in 0.58.3). For those projects, `/upgrading` Step 7's version-range detection
6
+ (`installed < v <= source`) fired for the crossed range but had no
7
+ `0.53.0-*.md` guide on disk to surface — so the render-on-read registry
8
+ migration (untrack `.forge/state/index.yml` + `.forge/streams/active.yml`) was
9
+ silently skipped, and range detection never looks backward at an
10
+ already-crossed version. Host-verified on ptnrkit: stamped 0.58.2 with both
11
+ derived registries still git-tracked and actively committed.
12
+
13
+ This guide exists solely to re-surface that skipped migration. It re-runs the
14
+ same detection; the actual steps live in the (now-delivered)
15
+ `0.53.0-render-on-read-registries.md` alongside this file.
16
+
17
+ ## Detection
18
+
19
+ Identical to the 0.53.0 guide — keyed on git-tracking state. Silent once both
20
+ registries are untracked (migrated, or a fresh ≥0.53.0 install):
21
+
22
+ ```bash
23
+ git rev-parse --is-inside-work-tree >/dev/null 2>&1 || exit 0
24
+ migrate=0
25
+ for f in .forge/state/index.yml .forge/streams/active.yml; do
26
+ if git ls-files --error-unmatch "$f" >/dev/null 2>&1; then
27
+ echo "MIGRATE — $f is still git-tracked; the 0.53.0 render-on-read migration was skipped"
28
+ migrate=1
29
+ fi
30
+ done
31
+ [ "$migrate" -eq 0 ] && echo "OK — already migrated (or never tracked the registries)"
32
+ ```
33
+
34
+ ## Steps
35
+
36
+ Detection fired → follow `0.53.0-render-on-read-registries.md` (same
37
+ directory) end to end: `git rm --cached` the two registries, gitignore them
38
+ (root `.gitignore`, or `state/index.yml` + `streams/active.yml` in
39
+ `.forge/.gitignore` for create-forge installs), then boot `/forge` to
40
+ regenerate the caches. Its Validation section applies unchanged.
41
+
42
+ Detection silent → nothing to do; this guide is a no-op.