@entelligentsia/forgecli 0.10.0 → 0.11.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.
Files changed (188) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +21 -3
  3. package/dist/CHANGELOG-forge-plugin.md +90 -0
  4. package/dist/bin/config.js +6 -0
  5. package/dist/bin/config.js.map +1 -1
  6. package/dist/extensions/forgecli/add-pipeline.d.ts +19 -0
  7. package/dist/extensions/forgecli/add-pipeline.js +143 -0
  8. package/dist/extensions/forgecli/add-pipeline.js.map +1 -0
  9. package/dist/extensions/forgecli/add-task.d.ts +20 -0
  10. package/dist/extensions/forgecli/add-task.js +154 -0
  11. package/dist/extensions/forgecli/add-task.js.map +1 -0
  12. package/dist/extensions/forgecli/calibrate.d.ts +61 -0
  13. package/dist/extensions/forgecli/calibrate.js +488 -0
  14. package/dist/extensions/forgecli/calibrate.js.map +1 -0
  15. package/dist/extensions/forgecli/fix-bug.d.ts +9 -1
  16. package/dist/extensions/forgecli/fix-bug.js +155 -45
  17. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  18. package/dist/extensions/forgecli/forge-commands.js +15 -22
  19. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  20. package/dist/extensions/forgecli/forge-subagent.d.ts +16 -1
  21. package/dist/extensions/forgecli/forge-subagent.js +45 -8
  22. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  23. package/dist/extensions/forgecli/forge-update-command.d.ts +9 -0
  24. package/dist/extensions/forgecli/forge-update-command.js +106 -7
  25. package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
  26. package/dist/extensions/forgecli/health-check.d.ts +22 -1
  27. package/dist/extensions/forgecli/health-check.js +177 -4
  28. package/dist/extensions/forgecli/health-check.js.map +1 -1
  29. package/dist/extensions/forgecli/hook-dispatcher.d.ts +25 -1
  30. package/dist/extensions/forgecli/hook-dispatcher.js +104 -9
  31. package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
  32. package/dist/extensions/forgecli/hooks/check-update.d.ts +81 -0
  33. package/dist/extensions/forgecli/hooks/check-update.js +308 -0
  34. package/dist/extensions/forgecli/hooks/check-update.js.map +1 -0
  35. package/dist/extensions/forgecli/hooks/forge-permissions.d.ts +32 -0
  36. package/dist/extensions/forgecli/hooks/forge-permissions.js +119 -0
  37. package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -0
  38. package/dist/extensions/forgecli/hooks/triage-error.d.ts +23 -0
  39. package/dist/extensions/forgecli/hooks/triage-error.js +62 -0
  40. package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -0
  41. package/dist/extensions/forgecli/hooks/write-guard.d.ts +28 -0
  42. package/dist/extensions/forgecli/hooks/write-guard.js +225 -0
  43. package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -0
  44. package/dist/extensions/forgecli/index.js +60 -0
  45. package/dist/extensions/forgecli/index.js.map +1 -1
  46. package/dist/extensions/forgecli/init-context.d.ts +1 -1
  47. package/dist/extensions/forgecli/init-context.js +21 -6
  48. package/dist/extensions/forgecli/init-context.js.map +1 -1
  49. package/dist/extensions/forgecli/materialize.d.ts +16 -0
  50. package/dist/extensions/forgecli/materialize.js +195 -0
  51. package/dist/extensions/forgecli/materialize.js.map +1 -0
  52. package/dist/extensions/forgecli/migrate.d.ts +19 -0
  53. package/dist/extensions/forgecli/migrate.js +258 -0
  54. package/dist/extensions/forgecli/migrate.js.map +1 -0
  55. package/dist/extensions/forgecli/migration-engine.d.ts +111 -0
  56. package/dist/extensions/forgecli/migration-engine.js +533 -0
  57. package/dist/extensions/forgecli/migration-engine.js.map +1 -0
  58. package/dist/extensions/forgecli/quiz-agent.d.ts +17 -0
  59. package/dist/extensions/forgecli/quiz-agent.js +98 -0
  60. package/dist/extensions/forgecli/quiz-agent.js.map +1 -0
  61. package/dist/extensions/forgecli/remove-command.d.ts +17 -0
  62. package/dist/extensions/forgecli/remove-command.js +124 -0
  63. package/dist/extensions/forgecli/remove-command.js.map +1 -0
  64. package/dist/extensions/forgecli/report-bug.d.ts +25 -0
  65. package/dist/extensions/forgecli/report-bug.js +159 -0
  66. package/dist/extensions/forgecli/report-bug.js.map +1 -0
  67. package/dist/extensions/forgecli/retrospective.d.ts +19 -0
  68. package/dist/extensions/forgecli/retrospective.js +156 -0
  69. package/dist/extensions/forgecli/retrospective.js.map +1 -0
  70. package/dist/extensions/forgecli/run-sprint.js +36 -3
  71. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  72. package/dist/extensions/forgecli/run-task.d.ts +9 -1
  73. package/dist/extensions/forgecli/run-task.js +66 -13
  74. package/dist/extensions/forgecli/run-task.js.map +1 -1
  75. package/dist/extensions/forgecli/session-registry.d.ts +40 -2
  76. package/dist/extensions/forgecli/session-registry.js +71 -1
  77. package/dist/extensions/forgecli/session-registry.js.map +1 -1
  78. package/dist/extensions/forgecli/status-command.d.ts +19 -0
  79. package/dist/extensions/forgecli/status-command.js +140 -0
  80. package/dist/extensions/forgecli/status-command.js.map +1 -0
  81. package/dist/extensions/forgecli/store-query.d.ts +22 -0
  82. package/dist/extensions/forgecli/store-query.js +107 -0
  83. package/dist/extensions/forgecli/store-query.js.map +1 -0
  84. package/dist/extensions/forgecli/store-repair.d.ts +17 -0
  85. package/dist/extensions/forgecli/store-repair.js +123 -0
  86. package/dist/extensions/forgecli/store-repair.js.map +1 -0
  87. package/dist/extensions/forgecli/test-orchestrate.js +1 -0
  88. package/dist/extensions/forgecli/test-orchestrate.js.map +1 -1
  89. package/dist/extensions/forgecli/thread-switcher.js +286 -41
  90. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  91. package/dist/extensions/forgecli/transition-guard.js +7 -2
  92. package/dist/extensions/forgecli/transition-guard.js.map +1 -1
  93. package/dist/extensions/forgecli/update-tools.d.ts +23 -0
  94. package/dist/extensions/forgecli/update-tools.js +136 -0
  95. package/dist/extensions/forgecli/update-tools.js.map +1 -0
  96. package/dist/extensions/forgecli/viewport-events.js +10 -0
  97. package/dist/extensions/forgecli/viewport-events.js.map +1 -1
  98. package/dist/extensions/forgecli/viewport-renderer.d.ts +18 -0
  99. package/dist/extensions/forgecli/viewport-renderer.js +27 -0
  100. package/dist/extensions/forgecli/viewport-renderer.js.map +1 -1
  101. package/dist/extensions/forgecli/viewport-theme.js +4 -0
  102. package/dist/extensions/forgecli/viewport-theme.js.map +1 -1
  103. package/dist/extensions/forgecli/whats-new-widget.d.ts +13 -8
  104. package/dist/extensions/forgecli/whats-new-widget.js +111 -42
  105. package/dist/extensions/forgecli/whats-new-widget.js.map +1 -1
  106. package/dist/forge-payload/.base-pack/workflows/architect_approve.md +29 -3
  107. package/dist/forge-payload/.base-pack/workflows/commit_task.md +15 -8
  108. package/dist/forge-payload/.base-pack/workflows/fix_bug.md +327 -185
  109. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +18 -10
  110. package/dist/forge-payload/.base-pack/workflows/plan_task.md +15 -9
  111. package/dist/forge-payload/.base-pack/workflows/review_code.md +14 -6
  112. package/dist/forge-payload/.base-pack/workflows/review_plan.md +18 -10
  113. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  114. package/dist/forge-payload/.schemas/bug.schema.json +3 -2
  115. package/dist/forge-payload/.schemas/config.schema.json +83 -0
  116. package/dist/forge-payload/.schemas/migrations.json +2049 -0
  117. package/dist/forge-payload/commands/regenerate.md +17 -1
  118. package/dist/forge-payload/meta/personas/README.md +16 -0
  119. package/dist/forge-payload/meta/personas/meta-architect.md +70 -0
  120. package/dist/forge-payload/meta/personas/meta-bug-fixer.md +73 -0
  121. package/dist/forge-payload/meta/personas/meta-collator.md +72 -0
  122. package/dist/forge-payload/meta/personas/meta-engineer.md +70 -0
  123. package/dist/forge-payload/meta/personas/meta-orchestrator.md +71 -0
  124. package/dist/forge-payload/meta/personas/meta-product-manager.md +82 -0
  125. package/dist/forge-payload/meta/personas/meta-qa-engineer.md +91 -0
  126. package/dist/forge-payload/meta/personas/meta-supervisor.md +92 -0
  127. package/dist/forge-payload/meta/skill-recommendations.md +154 -0
  128. package/dist/forge-payload/meta/skills/meta-architect-skills.md +43 -0
  129. package/dist/forge-payload/meta/skills/meta-bug-fixer-skills.md +43 -0
  130. package/dist/forge-payload/meta/skills/meta-collator-skills.md +41 -0
  131. package/dist/forge-payload/meta/skills/meta-engineer-skills.md +43 -0
  132. package/dist/forge-payload/meta/skills/meta-generic-skills.md +58 -0
  133. package/dist/forge-payload/meta/skills/meta-qa-engineer-skills.md +46 -0
  134. package/dist/forge-payload/meta/skills/meta-supervisor-skills.md +43 -0
  135. package/dist/forge-payload/meta/store-schema/bug.schema.md +71 -0
  136. package/dist/forge-payload/meta/store-schema/event.schema.md +76 -0
  137. package/dist/forge-payload/meta/store-schema/feature.schema.md +65 -0
  138. package/dist/forge-payload/meta/store-schema/sprint.schema.md +64 -0
  139. package/dist/forge-payload/meta/store-schema/task.schema.md +78 -0
  140. package/dist/forge-payload/meta/templates/meta-code-review.md +26 -0
  141. package/dist/forge-payload/meta/templates/meta-plan-review.md +28 -0
  142. package/dist/forge-payload/meta/templates/meta-plan.md +28 -0
  143. package/dist/forge-payload/meta/templates/meta-progress.md +25 -0
  144. package/dist/forge-payload/meta/templates/meta-retrospective.md +28 -0
  145. package/dist/forge-payload/meta/templates/meta-sprint-manifest.md +26 -0
  146. package/dist/forge-payload/meta/templates/meta-sprint-requirements.md +91 -0
  147. package/dist/forge-payload/meta/templates/meta-task-prompt.md +26 -0
  148. package/dist/forge-payload/meta/tool-specs/collate.spec.md +88 -0
  149. package/dist/forge-payload/meta/tool-specs/generation-manifest.spec.md +139 -0
  150. package/dist/forge-payload/meta/tool-specs/manage-config.spec.md +143 -0
  151. package/dist/forge-payload/meta/tool-specs/seed-store.spec.md +91 -0
  152. package/dist/forge-payload/meta/tool-specs/store-cli.spec.md +328 -0
  153. package/dist/forge-payload/meta/tool-specs/validate-store.spec.md +191 -0
  154. package/dist/forge-payload/meta/workflows/_fragments/context-injection.md +75 -0
  155. package/dist/forge-payload/meta/workflows/_fragments/event-emission-schema.md +73 -0
  156. package/dist/forge-payload/meta/workflows/_fragments/finalize.md +13 -0
  157. package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +73 -0
  158. package/dist/forge-payload/meta/workflows/_fragments/progress-reporting.md +38 -0
  159. package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +39 -0
  160. package/dist/forge-payload/meta/workflows/meta-approve.md +119 -0
  161. package/dist/forge-payload/meta/workflows/meta-collate.md +89 -0
  162. package/dist/forge-payload/meta/workflows/meta-commit.md +93 -0
  163. package/dist/forge-payload/meta/workflows/meta-enhance.md +286 -0
  164. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +501 -0
  165. package/dist/forge-payload/meta/workflows/meta-implement.md +132 -0
  166. package/dist/forge-payload/meta/workflows/meta-migrate.md +455 -0
  167. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +993 -0
  168. package/dist/forge-payload/meta/workflows/meta-plan-task.md +133 -0
  169. package/dist/forge-payload/meta/workflows/meta-quiz-agent.md +135 -0
  170. package/dist/forge-payload/meta/workflows/meta-retrospective.md +65 -0
  171. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +119 -0
  172. package/dist/forge-payload/meta/workflows/meta-review-plan.md +108 -0
  173. package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +65 -0
  174. package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +76 -0
  175. package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +147 -0
  176. package/dist/forge-payload/meta/workflows/meta-update-implementation.md +76 -0
  177. package/dist/forge-payload/meta/workflows/meta-update-plan.md +76 -0
  178. package/dist/forge-payload/meta/workflows/meta-validate.md +111 -0
  179. package/dist/forge-payload/tools/check-structure.cjs +344 -0
  180. package/dist/forge-payload/tools/collate.cjs +34 -9
  181. package/dist/forge-payload/tools/list-skills.js +76 -0
  182. package/dist/forge-payload/tools/parse-gates.cjs +8 -2
  183. package/dist/forge-payload/tools/store-cli.cjs +56 -11
  184. package/dist/forge-payload/tools/store.cjs +61 -0
  185. package/dist/forge-payload/tools/substitute-placeholders.cjs +60 -8
  186. package/dist/forge-payload/tools/validate-store.cjs +6 -2
  187. package/dist/forge-payload/tools/verify-integrity.cjs +86 -0
  188. package/package.json +2 -2
@@ -0,0 +1,2049 @@
1
+ {
2
+ "0.44.5": {
3
+ "version": "0.44.6",
4
+ "date": "2026-05-20",
5
+ "notes": "P1 bug-fix batch (forge-cli#25): (C) substitute-placeholders.cjs now probes .base-pack/ before init/base-pack/ when no --base-pack flag is given, and short-circuits on --help/--h before any path check; (D) store-cli.cjs list event traverses all events/ sub-directories (bugs/, enhancement/, <sprintId>/) and returns the union — previously exited 1 with 'Unknown entity type: event'; (E) substitute-placeholders.cjs gains --category flag to limit materialisation to named subdirectories; commands/regenerate.md documents the --category scope-enforcement rule.",
6
+ "regenerate": [
7
+ "tools:substitute-placeholders",
8
+ "tools:store-cli",
9
+ "commands:regenerate"
10
+ ],
11
+ "breaking": false,
12
+ "manual": []
13
+ },
14
+ "0.44.4": {
15
+ "version": "0.44.5",
16
+ "date": "2026-05-21",
17
+ "notes": "Migration apply path — runMigrations() deterministic engine + /forge:update integration (FORGE-S23-T01). Adds forge-cli migration-engine.ts: semver-range traversal [from, to) on keys, per-category resolver (84 unique category strings), idempotency ledger at .forge/applied-migrations.json, always-on schema refresh post-pass, fileOps forward-compat, path-traversal defense. The /forge:update command now prompts to apply migrations after npm upgrade; FORGE_NON_INTERACTIVE=1 auto-applies. update_plan and plan_task workflows reference migration application steps.",
18
+ "regenerate": ["workflows:update_plan", "workflows:plan_task"],
19
+ "breaking": false,
20
+ "manual": []
21
+ },
22
+ "0.44.3": {
23
+ "version": "0.44.4",
24
+ "date": "2026-05-19",
25
+ "notes": "Supervisor persona gains a top-level Iron Law forbidding `store-cli update-status` writes from any review phase. The workflow-level guard at meta-review-plan.md:76 and meta-review-implementation.md:82 (\"Bug mode — NO status write\") already existed; this is the persona-level reinforcement. Surfaced during FORGE-BUG-003 re-run testing of the forge-cli stale-ctx fix, where a supervisor subagent attempted `update-status bug FORGE-BUG-003 status plan-approved` against a bug already in terminal `fixed` state. store-cli correctly rejected the illegal transition; the persona update is defense-in-depth so the model stops attempting the write at all.",
26
+ "regenerate": ["personas:supervisor"],
27
+ "breaking": false,
28
+ "manual": []
29
+ },
30
+ "0.44.2": {
31
+ "version": "0.44.3",
32
+ "date": "2026-05-19",
33
+ "notes": "Add `route` (enum [A, B]) to phaseSummary in bug.schema.json and the mirrored PHASE_SUMMARY_SCHEMA constant in store-cli.cjs. Required so triage subagents can record the fix-bug pipeline route decision via set-bug-summary. EMG-BUG-001 v0.44.2 first run failed with `route: undeclared field` because the schema's additionalProperties:false rejected the new field. Optional, triage-only by convention; non-triage phases ignore it.",
34
+ "regenerate": ["tools:store-cli", "schemas:bug"],
35
+ "breaking": false,
36
+ "manual": []
37
+ },
38
+ "0.44.1": {
39
+ "version": "0.44.2",
40
+ "date": "2026-05-19",
41
+ "notes": "parse-gates.cjs now accepts `n/a` as a valid `after <phase> = <verdict>` directive value, matching read-verdict.cjs § ALLOWED_VERDICTS. EMBERGLOW-BUG-001 (v0.44.1 second run) halted at preflight exit 2 (gate misconfigured) because the new fix-bug meta uses `after triage = n/a` (legitimate for setup phases that produce verdict: \"n/a\") and the parser hardcoded the verdict set to {approved, revision}. Test added covering n/a parsing.",
42
+ "regenerate": ["tools:parse-gates"],
43
+ "breaking": false,
44
+ "manual": []
45
+ },
46
+ "0.44.0": {
47
+ "version": "0.44.1",
48
+ "date": "2026-05-19",
49
+ "notes": "Rename the triage route field from summaries.triage.path to summaries.triage.route to avoid collision with bug.path (artifact directory). Symptom from v0.44.0 first run on emberglow (EMBERGLOW-BUG-001): triage subagent wrote `\"path\": \"A\"` to the bug record, overwriting the artifact directory, causing TRIAGE.md to land under .forge/store/bugs/ instead of engineering/bugs/. Field is now `route`. The fix-bug meta carries a 'Field-naming caution' callout citing the regression so future readers understand why route is named route, not path.",
50
+ "regenerate": ["workflows:fix_bug"],
51
+ "breaking": false,
52
+ "manual": [
53
+ "If any bug at EMBERGLOW-BUG-001 vintage carries `path: \"A\"` or `path: \"B\"`, restore its real artifact directory before regeneration: FORGE_ALLOW_FORCE=1 node .forge/tools/store-cli.cjs write bug '{...corrected JSON with path: \"engineering/bugs/{slug}\"...}'"
54
+ ]
55
+ },
56
+ "0.43.19": {
57
+ "version": "0.44.0",
58
+ "date": "2026-05-19",
59
+ "notes": "fix-bug workflow rewrite — aligns with run-task persona/phase/state-transition model except for a single post-triage branch: Path A (short-circuit — minor severity, single-file ≤20-line diff, obvious regression test) skips plan-fix and review-plan; Path B (default, full loop) runs the entire pipeline. Six sub-workflows (plan_task, implement_plan, review_plan, review_code, architect_approve, commit_task) accept --bug in addition to --task and route bug-mode through BUG_PHASE_VERDICT_SOURCE in read-verdict.cjs. Bug status enum collapsed to reported→triaged→in-progress→fixed (terminal); removed approved and verified — vestigial states that produced the FORGE-BUG-002 LLM-translation trap. store-cli emit and validate-store now reserve the virtual sprint dir 'bugs' (matches validate-store.spec.md). collate.cjs reads bug events from the shared events/bugs/ directory filtered by event.bugId; new store.cjs purgeBugEvents filters and deletes only the target bug's events plus matching sidecars. Fixes silent cost-summary data loss and disk leak in bug-phase event tracking.",
60
+ "regenerate": [
61
+ "workflows:fix_bug",
62
+ "workflows:plan_task",
63
+ "workflows:implement_plan",
64
+ "workflows:review_plan",
65
+ "workflows:review_code",
66
+ "workflows:architect_approve",
67
+ "workflows:commit_task",
68
+ "tools:store-cli",
69
+ "tools:store",
70
+ "tools:validate-store",
71
+ "tools:collate",
72
+ "schemas:bug"
73
+ ],
74
+ "breaking": false,
75
+ "manual": [
76
+ "Run /forge:update to regenerate the seven workflows, four tools, and bug schema.",
77
+ "If any bug record in .forge/store/bugs/ has status 'approved' or 'verified', transition it to 'fixed' before regeneration — those enum values were removed. Use: FORGE_ALLOW_FORCE=1 node .forge/tools/store-cli.cjs update-status bug <BUG-ID> status fixed --force"
78
+ ]
79
+ },
80
+ "0.43.18": {
81
+ "version": "0.43.19",
82
+ "date": "2026-05-17",
83
+ "notes": "G7 — FK-check on store-cli emit sprintId, reserved-prefix carve-out (SYS-*), --allow-synthetic escape hatch, and orphan event-dir flagger in validate-store. store-cli emit now rejects sprintIds not found in .forge/store/sprints/ and not matching SYS-* prefix, with Did-you-mean suggestions. validate-store adds Pass 2b scanning .forge/store/events/ for subdirs with no matching sprint record (warns ORPHAN_EVENT_DIR). Fixes silent acceptance of bare-string sprintIds that created orphan event dirs.",
84
+ "regenerate": [
85
+ "tools:store-cli",
86
+ "tools:validate-store"
87
+ ],
88
+ "breaking": false,
89
+ "manual": []
90
+ },
91
+ "0.43.17": {
92
+ "version": "0.43.18",
93
+ "date": "2026-05-17",
94
+ "notes": "G4 — Vocab-drift detector and 'Did you mean?' suggestions across store-cli + validate.js error paths. New lib/suggest.cjs (Levenshtein + curated DRIFT_MAP) attaches suggestions at 12 store-cli error sites (entity types, transition rules, illegal transitions, unknown entity, unknown command) and at validate.js enum + undeclared-field errors. 46 suggest.test.cjs unit tests + 10 store-cli CLI integration tests added. Agent self-correction observed in fresh-corpus capture (e.g. `list tasks` → 'Did you mean \"task\"?'). Pairs with G3 aliases (0.43.17).",
95
+ "regenerate": [
96
+ "tools:store-cli",
97
+ "tools:validate-store"
98
+ ],
99
+ "breaking": false,
100
+ "manual": []
101
+ },
102
+ "0.43.16": {
103
+ "version": "0.43.17",
104
+ "date": "2026-05-17",
105
+ "notes": "G3 — Six read-aliases for high-friction get ops on store-cli (get, get-task, get-bug, get-sprint, get-summary, get-bug-summary). ALIAS_MAP rewrites argv to ['read', entity, id, ...flags]; summary aliases route as direct cmdGetSummary/cmdGetBugSummary switch cases. Eliminates 37 of 39 erroring get* ops in the 927-op friction fixture (94.9%). Additive surface — no schema change, no removed verbs. 15 new node:test cases including byte-equality pairs and error variants. store-cli-verbs.md (base-pack + meta) refreshed.",
106
+ "regenerate": [
107
+ "tools:store-cli",
108
+ "workflows:_fragments_store-cli-verbs"
109
+ ],
110
+ "breaking": false,
111
+ "manual": []
112
+ },
113
+ "0.43.15": {
114
+ "version": "0.43.16",
115
+ "date": "2026-05-15",
116
+ "notes": "Sprint finalization ceremony (Plan 12). Add sprint-complete and sprint-halted event variants to event.schema.json with conditional requireds via allOf/if/then. Loosen top-level required (move taskId/phase/iteration into task-scoped allOf branch). Gate workflow finalize step-4 on verdict (Approved \u2192 completed; Revision Required + partial \u2192 partially-completed; Revision Required + complete \u2192 no transition). Update validate-store.cjs allOf if/then interpreter to support enum predicates alongside const. Pairs with forge-cli v0.6.6.",
117
+ "regenerate": [
118
+ "schemas:event",
119
+ "workflows:architect_review_sprint_completion"
120
+ ],
121
+ "breaking": false,
122
+ "manual": []
123
+ },
124
+ "0.43.14": {
125
+ "version": "0.43.15",
126
+ "date": "2026-05-14",
127
+ "notes": "Slice-2 fragment-sweep completion. v0.43.14 introduced the orchestrator-emits-everything contract and surgically rewrote the five phase workflows (plan/review-plan/implement/validate/commit) plus their meta sources, but 16 other workflows \u2014 every other base-pack workflow body \u2014 still carried the pre-Slice-2 'Emit the complete event ... via store-cli emit' instruction and 'Execute Token Reporting' step in their Finalize blocks. Any subagent reading those workflows would faithfully reproduce the exact hallucination class Slice 2 was built to kill (LLM-fabricated model/provider strings). This patch removes those two lines from every remaining workflow \u2014 meta sources (meta-approve, meta-update-implementation, meta-review-implementation, meta-review-sprint-completion, meta-sprint-intake, meta-sprint-plan, meta-collate, meta-update-plan, meta-fix-bug, meta-retrospective) and base-pack mirrors (architect_sprint_plan, sprint_retrospective, architect_approve, collator_agent, architect_review_sprint_completion, fix_bug, update_implementation, architect_sprint_intake, update_plan, review_code). Replaced with the canonical 'Do NOT emit a phase event yourself; the orchestrator (or kickoff handler) owns event emission' directive. Also swept the friction-emit code block in meta-fix-bug.md and base-pack/fix_bug.md to point at friction-emit.cjs (matches the pattern shipped for meta-orchestrate in v0.43.14). For workflows that are kickoff-only standalones today (sprint-intake, sprint-plan, collate, retrospective, review-sprint-completion), removing the hardcoded emit means honest-absence of event coverage until the corresponding forge-cli kickoff handlers learn to emit on the LLM's behalf \u2014 a follow-up item. Tests: 1202 pass.",
128
+ "regenerate": [
129
+ "workflows:fix_bug",
130
+ "workflows:update_plan",
131
+ "workflows:update_implementation",
132
+ "workflows:review_code",
133
+ "workflows:architect_approve",
134
+ "workflows:architect_sprint_intake",
135
+ "workflows:architect_sprint_plan",
136
+ "workflows:architect_review_sprint_completion",
137
+ "workflows:sprint_retrospective",
138
+ "workflows:collator_agent",
139
+ "tools:integrity"
140
+ ],
141
+ "breaking": false,
142
+ "manual": []
143
+ },
144
+ "0.43.13": {
145
+ "version": "0.43.14",
146
+ "date": "2026-05-14",
147
+ "notes": "Telemetry contract Slice 2 \u2014 orchestrator-emits-everything. Slice 1 (v0.43.13) added `provider` as required and moved cost out of the schema, but subagents were still hand-building 14-field event JSON containing runtime facts (model, provider, eventId, timestamps, iteration) and hallucinating them (HLO-S01-T05 evidence: events carried `provider:\"anthropic\"`/`model:\"claude-sonnet-4-20250514\"` while the subagent actually ran on `glm-5.1:cloud`). Slice 2 makes runtime attribution the orchestrator's responsibility end-to-end. Plugin-side changes: (1) workflow fragments `_fragments/event-emission-schema.md` and `_fragments/friction-emit.md` rewritten in both meta/ and init/base-pack/ \u2014 replace 'build a 14-field event JSON' instructions with 'write {PHASE}-SUMMARY.json; the orchestrator emits the event'. ALL hardcoded example model strings removed (the source of pattern-copy hallucination). (2) Phase meta workflows (meta-plan-task, meta-review-plan, meta-implement, meta-validate, meta-commit) and their base-pack mirrors (plan_task, review_plan, implement_plan, validate_task, commit_task) drop the `Emit the complete event ... via store-cli emit` line and the `Execute Token Reporting` step \u2014 subagents now only write SUMMARY and return. (3) meta-orchestrate.md + base-pack/orchestrate_task.md Event Emission and Friction Emit sections rewritten: orchestrator owns emission; friction is recorded by subagents via the new `friction-emit.cjs` tool which appends judgement-only records to `.forge/cache/FRICTION-{workflow}.jsonl`, drained and stamped with runtime attribution by the orchestrator. (4) New tool `forge/forge/tools/friction-emit.cjs` \u2014 judgement-only CLI that refuses any runtime-attribution flag (--model, --provider, --eventId, timestamps, tokens). (5) New tool `forge/forge/tools/backfill-provider.cjs` \u2014 one-shot helper for the 0.43.13 manual[] item (stamps provider:\"unknown\" on legacy events missing the field; sidecars skipped). Both tools shipped test-first per Iron Law 2. Slice 2 runtime emit site lives in forge-cli (run-task.ts) \u2014 see forge-cli v0.6.5 changelog. Tests: 1202 pass.",
148
+ "regenerate": [
149
+ "fragments:event-emission-schema",
150
+ "fragments:friction-emit",
151
+ "workflows:plan_task",
152
+ "workflows:review_plan",
153
+ "workflows:implement_plan",
154
+ "workflows:validate_task",
155
+ "workflows:commit_task",
156
+ "workflows:orchestrate_task",
157
+ "tools:friction-emit",
158
+ "tools:backfill-provider",
159
+ "tools:integrity"
160
+ ],
161
+ "breaking": false,
162
+ "manual": [
163
+ "Run `node $FORGE_ROOT/tools/backfill-provider.cjs` once on existing installs to stamp `provider:\"unknown\"` on legacy events missing the field \u2014 this is the helper promised in 0.43.13 manual[]. After backfill, all event reads should validate cleanly."
164
+ ]
165
+ },
166
+ "0.43.12": {
167
+ "version": "0.43.13",
168
+ "date": "2026-05-14",
169
+ "notes": "Telemetry contract fix (Slice 1) \u2014 refactors the token-usage capture pipeline from a subagent self-probe (which never worked: pi runtime has no `/cost` probe, and the workflow's `tokenSource: \"missing\"` writes were rejected by the schema enum [reported, estimated] causing 8 schema_drift errors per HLO-S01-T04 run) to an orchestrator-owned model. Three changes: (1) event.schema.json adds `provider` as a required field \u2014 same model is priced differently across providers (Anthropic direct vs Bedrock vs Vertex; ZAI cloud vs self-host) and cost is unattributable without it; auto-populated via new discoverProvider() helper from FORGE_PROVIDER / CLAUDE_CODE_PROVIDER env vars, falling back to \"unknown\" rather than guessing. (2) Dropped `estimatedCostUSD` from event + event-sidecar schemas entirely \u2014 cost is derived at collate time from (provider, model, tokens) via tools/lib/pricing.cjs, keeping the dataset truthful when pricing changes. (3) Rewrote meta/workflows/_fragments/finalize.md AND init/base-pack/workflows/_fragments/finalize.md to delete the broken `/cost` probe + `\"missing\"` write instructions; new rule: subagents MUST NOT write token sidecars; orchestrator owns telemetry and emits the canonical event with provider-reported usage. If runtime doesn't surface usage, fields are omitted (honest absence beats placeholder zeros). collate.cjs drops the `missing` bucket from tokenSourceCounts \u2014 token-less events surface as husks instead. Tool changes: store-cli.cjs (CANONICAL_TOKEN_FIELDS + SIDECAR_ACCEPTED_FIELDS adjusted, --provider flag added on record-usage, --estimated-cost-usd flag explicitly rejected with helpful error, discoverProvider() exported); estimate-usage.cjs (removed PRICE_PER_1M heuristic table + DEFAULT_PRICE_PER_1M \u2014 returns only inputTokens/outputTokens/tokenSource); collate.cjs (cost recomputed via pricing.cjs is now the only source). Slice 2 (forge-cli runtime emit site) will wire the orchestrator emit path that consumes this contract \u2014 out of scope here. Tests: 1173 pass, 1 pre-existing FRAGMENT_MAP failure unrelated to this slice. No `.forge/` or `engineering/` edits.",
170
+ "regenerate": [
171
+ "schemas:events",
172
+ "schemas:event-sidecar",
173
+ "fragments:finalize",
174
+ "tools:store-cli",
175
+ "tools:estimate-usage",
176
+ "tools:collate",
177
+ "tools:integrity"
178
+ ],
179
+ "breaking": false,
180
+ "manual": [
181
+ "Existing event records on disk that lack `provider` will fail strict validation. On re-running collate or any read path that validates events, stamp legacy records with `provider: \"unknown\"` \u2014 a one-shot backfill helper will ship in a follow-up patch. New events emitted by `store-cli emit` auto-populate `provider` via FORGE_PROVIDER env var or fall back to \"unknown\".",
182
+ "`estimatedCostUSD` is no longer accepted on event or event-sidecar records. Existing records on disk that carry the field will fail strict validation; collate's recomputation path (lib/pricing.cjs) is now authoritative."
183
+ ]
184
+ },
185
+ "0.43.11": {
186
+ "version": "0.43.12",
187
+ "date": "2026-05-14",
188
+ "notes": "build-base-pack.cjs + build-manifest.cjs allowlist bug \u2014 fragments added to meta/workflows/_fragments/ after the allowlists were last edited never reached init/base-pack/workflows/_fragments/, so the user-facing bundle silently dropped them. Discovered while debugging HLO-S01-T03 plan-phase friction in the testbench: store-cli verb fumble (#95) and event-shape iteration (#87) persisted after /forge:regenerate because store-cli-verbs.md and friction-emit.md were missing from the regenerated `.forge/workflows/_fragments/` even though the workflow body referenced them. Fix: both build-base-pack.cjs (fragment copy loop + expected-files validator) and build-manifest.cjs (FRAGMENT_MAP) now enumerate fragments dynamically from `meta/workflows/_fragments/*.md` instead of from hardcoded lists. Added parity assertion in build-base-pack.test.cjs that base-pack `_fragments/` must equal meta `_fragments/` exactly. Also bumped base-pack-byte-budget overrides for plan_task.md (5120\u21925632), implement_plan.md (5120\u21925888), validate_task.md (4096\u21924608) to absorb the now-included fragment references. Discovered blind spot: the replay-friction harness validates meta-source, not base-pack output \u2014 #95 PASSed in HLO-S01 without ever generating the user-facing fragment. Manifest fragment count 4 \u2192 6 (store-cli-verbs.md + friction-emit.md now shipped).",
189
+ "regenerate": [
190
+ "tools:build-base-pack",
191
+ "tools:build-manifest",
192
+ "fragments:store-cli-verbs",
193
+ "fragments:friction-emit",
194
+ "tools:integrity"
195
+ ],
196
+ "breaking": false,
197
+ "manual": []
198
+ },
199
+ "0.43.10": {
200
+ "version": "0.43.11",
201
+ "date": "2026-05-13",
202
+ "notes": "HLO-S01 friction-fix sweep \u2014 batched migration covering 10 fixes surfaced by the 2026-05-13 dogfood run on /home/boni/src/forge-testbench/hello/ (umbrella forge#93). All non-breaking; each verified by the replay-friction harness (engineering/runbooks/hlo-s01/ in forge-engineering). Fixes: (a) #78/#76 meta-review-plan: `review-approved` \u2192 `plan-approved` so the review\u2192plan-approved status flip matches the FSM; (b) #80 widen `event.type` enum to cover task-implemented, plan-complete, review-passed and the rest of the emitted set; (c) #79 task FSM permits `planned \u2192 implemented` (was illegal, breaking run-task phase 4 writeback); (d) #96 inline FSM transition table into plan_task / review_plan / implement_plan workflow prose so subagents read state machine inline, not from a sibling fragment; (e) #95 embed store-cli verb cheat-sheet into all run-task / fix-bug phase workflows via new shared `_fragments/store-cli-verbs.md` \u2014 eliminates `forge_store` invocation hallucinations; (f) #84 replace `/cost` slash-command pre-flight in implement/validate/update-implementation with a runtime-conditional probe ({{RUNTIME_COST_CMD}}) \u2014 fixes hard-fail when /cost is unavailable in the runtime; (g) #94 surface resolved `commands.test` (placeholder substitution) in workflow bodies, not just frontmatter \u2014 subagents now see the actual test command; (h) #87 gate `--force` behind `FORGE_ALLOW_FORCE` env in store-cli AND inline canonical event-shape into every workflow emit line (was two-bug pair: LLM-bypass + event mismatch); (i) #82 commit_task no longer hardcodes 'Claude' as Co-author \u2014 uses runtime principal; (j) forge-cli#5 forge-tools piece \u2014 native `--task-suffix` / `--sprint-suffix` flags on store-cli short-form resolution. Row 8 (forge#86 kickoff-shim markers in review_plan/review_code) was already covered by the 0.43.5 wave-2 migration \u2014 no new sub-target needed. forge#7 deferred (SKIPPED: needs live FORGE_DEBUG capture). Also bumped per-file byte budgets in phase-frontmatter.test.cjs across all nine subagent-targeted meta-workflow files (e.g. meta-plan-task 5500\u21926912, meta-implement 5500\u21927168, meta-update-plan 3072\u21923584) \u2014 same precedent as the 0.43.6 wave: legitimate friction-fix growth from #95 cheat-sheet + #96 FSM table + #87 event-shape + #84 cost probe + #94 commands.test inlined across phases. Budgets sized to current bytes + ~10% headroom, 512B-aligned.",
203
+ "regenerate": [
204
+ "workflows:plan_task",
205
+ "workflows:review_plan",
206
+ "workflows:implement_plan",
207
+ "workflows:validate_task",
208
+ "workflows:update_implementation",
209
+ "workflows:commit_task",
210
+ "schemas:events",
211
+ "tools:store-cli",
212
+ "fragments:store-cli-verbs",
213
+ "tools:integrity"
214
+ ],
215
+ "breaking": false,
216
+ "manual": []
217
+ },
218
+ "0.43.9": {
219
+ "version": "0.43.10",
220
+ "date": "2026-05-13",
221
+ "notes": "Verdict-source refactor: preflight-gate `after <phase>` predicates now read structured verdicts from store.task.summaries.<canonical>.verdict (and task.status for approve), not regex-parse markdown. New module forge/tools/read-verdict.cjs centralises the phase.role \u2192 canonical-summary-key mapping (mirrors VALID_SUMMARY_PHASES) and the approve-via-status sentinel. Eliminates three classes of recurring bugs: (a) forge#91 (approve phase markdown-vs-store mismatch), (b) forge-cli#11 (review-code \u2192 code_review key reversal), (c) the underscore-swap defensive fallback dance in run-task.ts (still present, now redundant). Removed: forge/tools/parse-verdict.cjs and its test (no consumers remaining). preflight()'s `verdictSources` parameter and the `resolveVerdictSources` helper are gone \u2014 `after` reads live from state.task / state.bug directly. The `**Verdict:**` line in review markdown is now a human breadcrumb only; the byte-budget lint asserting its presence is retained but documented as advisory. meta-approve.md updated to clarify the markdown line is not load-bearing. Live testbench HLO-S01-T01 commit preflight: EXIT=0 via the new store path. +11 read-verdict unit tests, +2 preflight tests (approve via status; revision in store).",
222
+ "regenerate": [
223
+ "tools:preflight-gate",
224
+ "tools:read-verdict",
225
+ "workflows:architect_approve"
226
+ ],
227
+ "breaking": false,
228
+ "manual": []
229
+ },
230
+ "0.43.8": {
231
+ "version": "0.43.9",
232
+ "date": "2026-05-13",
233
+ "notes": "meta-approve.md now instructs the architect persona to emit the canonical `**Verdict:** [Approved | Revision Required]` line, matching the contract review-plan / review-code / validate meta workflows already document. The commit-phase preflight gate parses this exact line via parse-verdict.cjs; alternative phrasings (e.g. `Approval Status: APPROVED`) yield null and fail with `predecessor review for \"approve\" has no parseable **Verdict:** line`. Live regression on testbench HLO-S01-T01 phase 8 (commit). +1 Generation Instruction `Verdict Detection`, +4 structural lint tests in base-pack-byte-budget.test.cjs that assert every verdict-emitting phase file (review_plan, review_code, validate_task, architect_approve) contains the literal `**Verdict:**` token.",
234
+ "regenerate": [
235
+ "workflows:architect_approve"
236
+ ],
237
+ "breaking": false,
238
+ "manual": []
239
+ },
240
+ "0.43.7": {
241
+ "version": "0.43.8",
242
+ "date": "2026-05-13",
243
+ "notes": "preflight-gate.cjs: gate-less phases now pass through (exit 0) instead of escalating (exit 2). Some run-task phases are intentionally gate-less by design \u2014 writeback (collator regen) has no predecessor verdict to check. The previous semantic conflated `phase not declared in any workflow` and `workflow declares no gate block for phase` with `misconfiguration` (exit 2), causing live regression at phase 7 (writeback) of /forge:run-task HLO-S01-T01: `\u00d7 preflight gate escalated for phase writeback (exit 2); manual intervention required`. Both `no workflow declares phase` and `no gate block for declared phase` now exit 0 with an informational stderr note. Exit 2 stays reserved for real argument / parse errors (unchanged). +1 regression test (sibling case: workflow exists, no gate block).",
244
+ "regenerate": [
245
+ "tools:preflight-gate"
246
+ ],
247
+ "breaking": false,
248
+ "manual": []
249
+ },
250
+ "0.43.6": {
251
+ "version": "0.43.7",
252
+ "date": "2026-05-13",
253
+ "notes": "Pack-06 materialization-marker regression fix, third (final) wave + structural lint. Adds Iron Laws + Store-Write Verification sections (plus persona-load step and `forge_store` token) to the remaining six meta workflows that subagent-target the run-task / fix-bug pipeline: meta-validate.md, meta-approve.md, meta-collate.md, meta-commit.md, meta-update-plan.md, meta-update-implementation.md. Live testbench surfaced the gap at phase 5 (validate) of /forge:run-task: kickoff shim hard-failed with `\u00d7 workflow regression: Store-Write Verification not found in validate_task.md`. Three waves (0.43.2 plan/implement, 0.43.5 review-plan/review-code, 0.43.6 validate/approve/collate/commit/update-plan/update-impl) is the cost of discovering one phase at a time. Encoded a regression lint in base-pack-byte-budget.test.cjs (`phase files carry kickoff-shim markers`) that asserts all four markers across every PHASE_FILE \u2014 future drop-throughs fail the build, not the smoke test. Also bumped per-file byte budgets for meta-validate.md (4096\u21925120), meta-approve.md / meta-commit.md (3072\u21924096). See forge#? (this entry's GH issue).",
254
+ "regenerate": [
255
+ "workflows:validate_task",
256
+ "workflows:architect_approve",
257
+ "workflows:collator_agent",
258
+ "workflows:commit_task",
259
+ "workflows:update_plan",
260
+ "workflows:update_implementation"
261
+ ],
262
+ "breaking": false,
263
+ "manual": []
264
+ },
265
+ "0.43.5": {
266
+ "version": "0.43.6",
267
+ "date": "2026-05-13",
268
+ "notes": "preflight-gate.cjs artifact-dir resolution fix. Two compounding bugs surfaced when a sprint dir contained an artifact directory named exactly `<taskId>` (no `-<slug>` suffix \u2014 modern convention). (1) resolveTaskArtifactDir Pass 1 required `entry.startsWith(taskId + '-')`, rejecting exact-match entries. Pass 2's `<sprintId>-` prefix matcher also didn't apply when taskId already embeds sprintId (e.g. taskId=`HLO-S01-T01`, sprintId=`S01`). resolveTaskArtifactDir returned null. (2) The fallback then set `taskArtifactPath = taskRecord.path` directly \u2014 but `taskRecord.path` is the primary source FILE (e.g. `TASK_PROMPT.md`), not a directory. Predecessor-review resolution then appended `PLAN_REVIEW.md` to the file path, producing bogus paths like `.../TASK_PROMPT.md/PLAN_REVIEW.md` (ENOTDIR), failing every `after <phase>` gate. Fix: Pass 1 now also accepts `entry === taskId`; fallback dirname()s task.path when it has a file extension. Live testbench regression: phase 3 (implement) of `/forge:run-task HLO-S01-T01` was hard-failing preflight. After patch, EXIT=0. See forge#?.",
269
+ "regenerate": [
270
+ "tools:preflight-gate"
271
+ ],
272
+ "breaking": false,
273
+ "manual": []
274
+ },
275
+ "0.43.4": {
276
+ "version": "0.43.5",
277
+ "date": "2026-05-13",
278
+ "notes": "Pack-06 materialization-marker regression fix, second wave. Adds Iron Laws + Store-Write Verification sections (plus `.forge/personas/supervisor.md` persona-load step and `forge_store` tokens) to meta-review-plan.md and meta-review-implementation.md so generated review_plan.md and review_code.md carry the four markers required by forge-cli /forge:run-task's per-phase kickoff shim. Without these markers, every fresh init since 0.43.2 has shipped review-plan / review-code workflows that hard-fail phase 2 (and phase 4) of /forge:run-task with `\u00d7 workflow regression: Store-Write Verification not found ...`. Root cause: 0.43.2 patched meta-plan-task.md and meta-implement.md, but the symmetric review metas were missed. Side-effect: per-file byte budgets bumped for review_plan.md / review_code.md (4096\u21925120) and meta-review-plan.md / meta-review-implementation.md (3200/4200\u21924500/5500) to fit the marker blocks. See forge#85.",
279
+ "regenerate": [
280
+ "workflows:review_plan",
281
+ "workflows:review_code"
282
+ ],
283
+ "breaking": false,
284
+ "manual": []
285
+ },
286
+ "0.43.3": {
287
+ "version": "0.43.4",
288
+ "date": "2026-05-13",
289
+ "notes": "meta-sprint-intake.md gains a step 0 Project Orientation block that tells the subagent its cwd is the project root and points it at `.forge/config.json` (+ `forge_config` MCP) for config and `engineering/` for knowledge. Philosophy: orientation, not enforcement. Surfaced via forge-cli dogfooding (glm-5.1:cloud on pi/ollama runtime) where a model without that context hallucinated `cd /home/user/project` and ran `find / -name config.json` across five sibling project roots before the user aborted (see forge#83). Regression test `meta-sprint-intake-cwd-anchor.test.cjs` asserts the orientation text remains.",
290
+ "regenerate": [
291
+ "workflows:sprint_intake"
292
+ ],
293
+ "breaking": false,
294
+ "manual": []
295
+ },
296
+ "0.43.2": {
297
+ "version": "0.43.3",
298
+ "date": "2026-05-10",
299
+ "notes": "Adds workflows/enhance.md to base-pack (FORGE-S20-T04 sprint-completion gap fix). meta-enhance.md now generates init/base-pack/workflows/enhance.md via the standard transformWorkflow path; build-base-pack expects 20 workflow files (was 19); enhance.md ships with Iron Laws + Store-Write Verification + forge_store + engineer.md markers required by the forge-cli /forge:enhance kickoff shim. Without this file, /forge:enhance hard-failed every fresh init with `\u00d7 forge:enhance \u2014 workflow not found at .forge/workflows/enhance.md`. enhance.md is orchestrator-only audience and exempt from the 4KB phase-file byte budget. Pairs with forge-cli v0.5.7.",
300
+ "regenerate": [
301
+ "workflows:enhance"
302
+ ],
303
+ "breaking": false,
304
+ "manual": []
305
+ },
306
+ "0.43.1": {
307
+ "version": "0.43.2",
308
+ "date": "2026-05-10",
309
+ "notes": "Pack-06 materialization-marker regression fix. Adds Iron Laws + Store-Write Verification sections (plus persona-load step and forge_store token) to meta-plan-task.md and meta-implement.md so generated plan_task.md and implement_plan.md carry the four markers required by forge-cli /forge:plan and /forge:implement kickoff shims. Without these markers, every fresh init produced workflows that hard-failed on dispatch with `\u00d7 workflow regression: Store-Write Verification not found` (and three siblings: Iron Laws, forge_store, persona file path). Root cause: forge-cli FORGE-S20-T04/T05/T06 added kickoff-shim materialization preconditions but never updated the corresponding meta sources or base-pack regen. Side-effect: bumps base-pack byte budget for plan_task.md/implement_plan.md from 4096\u21925120 (per-file overrides) and meta-plan-task/meta-implement from 4096\u21925500 to fit the marker blocks. Pairs with forge-cli v0.5.6.",
310
+ "regenerate": [
311
+ "workflows:plan_task",
312
+ "workflows:implement_plan"
313
+ ],
314
+ "breaking": false,
315
+ "manual": []
316
+ },
317
+ "0.43.0": {
318
+ "version": "0.43.1",
319
+ "date": "2026-05-10",
320
+ "notes": "Direct-exec contract patch. Replaces all `/forge:store ...` slash-command references in init/base-pack/workflows/*.md (and _fragments/) with the canonical `node \"$FORGE_ROOT/tools/store-cli.cjs\" ...` direct-cjs form already used by meta/workflows/*.md. Pairs with forge-cli v0.5.1 (system-prompt tool-discipline block, kickoff-prompt rewrites, and bin fast-path for `forge {store|collate|validate-store|store-query} ...`). Root cause: cartographer testbench observed haiku-4-5 burning 26-220s per `bash forge store ...` shell-out \u2014 each invocation spawned a fresh pi/agent loop. Fix: prescriptive system prompt + canonical workflow text + bin fast-path. Existing `/forge:store` materialized workflows remain functional under the bin fast-path; no manual migration required for projects on v0.43.0.",
321
+ "regenerate": [
322
+ "workflows:base-pack-store-cli-form"
323
+ ],
324
+ "breaking": false,
325
+ "manual": []
326
+ },
327
+ "0.42.0": {
328
+ "version": "0.43.0",
329
+ "date": "2026-05-10",
330
+ "notes": "FORGE-S20 Sprint A \u2014 Friction emit channel + foundation. T00 lands the writer side of the friction channel: event.schema.json gains `type:\"friction\"` enum with conditional required {workflow, persona, issue} via a JSON-Schema `allOf if/then` block; validate-store.cjs gains a minimal `allOf if/then required` interpreter; five meta-workflows (implement, fix-bug, validate, plan-task, orchestrate) now carry an explicit Friction Emit section describing trigger conditions and the canonical flat-payload `node \"$FORGE_ROOT/tools/store-cli.cjs\" emit` shape. T01 narrows the optional slots reserved by T00: `subkind` is constrained to a frozen enum (skill_unused|skill_failed|skill_missing|skill_stale|skill_redundant) plus a reserved `^x_[a-z_]+$` experimental namespace (no migration required for x_*), encoded as a single combined regex pattern; `evidence` is shaped into a closed object (trajectory_excerpt:string, tool_errors:string[], retrieval_score:number 0..1, skillId:string ref); validate-store.cjs gains a minimal `pattern` interpreter on string fields. Unblocks Plan 08 Phase B (dynamic skill curation): /forge:enhance --phase 2 reader has been waiting for typed writers since S13-T08. Non-breaking: events without `type` continue to validate exactly as before, and T00-shaped friction events without subkind/evidence remain valid because those slots are not in the friction allOf then-required block.",
331
+ "regenerate": [
332
+ "events:friction-emit",
333
+ "events:friction-subkind",
334
+ "workflows:implement",
335
+ "workflows:fix-bug",
336
+ "workflows:validate",
337
+ "workflows:plan-task",
338
+ "workflows:orchestrate",
339
+ "tools:store-cli",
340
+ "tools:validate-store",
341
+ "schemas:event"
342
+ ],
343
+ "breaking": false,
344
+ "manual": []
345
+ },
346
+ "0.41.0": {
347
+ "version": "0.42.0",
348
+ "date": "2026-05-10",
349
+ "notes": "Release-routine catch-up bump. No code changes. Promotes v0.40.3 (substitute-placeholders --target pi) and v0.41.0 (store-cli describe/template + validate hint) cumulatively to skillforge marketplace under a single tag. Users on v0.40+ \u2192 /forge:update is non-breaking. Users on <v0.40 still need the v0.40.0 manual migration path (run /forge:update then /forge:migrate per v0.40.0 entry).",
350
+ "regenerate": [],
351
+ "breaking": false,
352
+ "manual": []
353
+ },
354
+ "0.40.3": {
355
+ "version": "0.41.0",
356
+ "date": "2026-05-09",
357
+ "notes": "Add store-cli describe/template subcommands and validate.js error hint (FORGE-BUG-029-friction). describe <entity> prints raw JSON Schema; template <entity> prints canonical sample with required fields populated. validateRecord errors now include a hint pointing to template/describe when entity is known. Reduces write\u2192reject\u2192retry friction on weak/non-Anthropic models. No breaking changes.",
358
+ "regenerate": [
359
+ "tools:store-cli",
360
+ "tools:lib:validate"
361
+ ],
362
+ "breaking": false,
363
+ "manual": []
364
+ },
365
+ "0.40.2": {
366
+ "version": "0.40.3",
367
+ "date": "2026-05-08",
368
+ "notes": "Add --target pi mode to substitute-placeholders.cjs (FORGE-S16-T01). New walkBasePackPi() function and PI_TARGET_SUBDIRS constant enable forge-cli T02 build pipeline to produce flat pi-shaped output trees from init/base-pack/ with {{KEY}} tokens preserved for downstream resolution. No user-side action required.",
369
+ "regenerate": [
370
+ "tools:substitute-placeholders"
371
+ ],
372
+ "breaking": false,
373
+ "manual": []
374
+ },
375
+ "0.40.1": {
376
+ "version": "0.40.2",
377
+ "date": "2026-05-05",
378
+ "notes": "v0.40.2 hotfix bundle (FORGE-S14). Fixes: manage-versions/manage-config FORGE_ROOT resolution (FR-001, FR-005); substitute-placeholders _fragments nesting and commands path SoT (FR-004, FR-006); structure-manifest missing entries and check-structure alignment (FR-006, FR-007); build-persona-pack/build-context-pack source_hash (FR-012); manage-versions --source flag (FR-013); update-check-cache idempotent write (FR-014); build-overlay exit code (FR-015); /forge:update completion semantics and subagent probe (FR-002, FR-009, ADR-S14-01); sprintsCovered union-merge preservation (FR-003, ADR-S14-02); init CLAUDE.md creation (FR-008); forgeRef portability (FR-010); migrate export FORGE_ROOT (FR-011); .gitignore store/events/ unconditional (FR-016); /forge:update phase numbering (FR-017). New shared libraries: forge-root.cjs, paths.cjs. No breaking changes.",
379
+ "regenerate": [
380
+ "tools:manage-versions",
381
+ "tools:manage-config",
382
+ "tools:substitute-placeholders",
383
+ "tools:check-structure",
384
+ "tools:build-manifest",
385
+ "tools:build-persona-pack",
386
+ "tools:build-context-pack",
387
+ "tools:build-overlay",
388
+ "tools:lib/forge-root",
389
+ "tools:lib/paths",
390
+ "commands:update",
391
+ "commands:init",
392
+ "commands:migrate",
393
+ "workflows:migrate_structural",
394
+ "workflows:_fragments",
395
+ "schemas:config",
396
+ "schemas:update-check-cache",
397
+ "schemas:structure-manifest"
398
+ ],
399
+ "breaking": false,
400
+ "manual": []
401
+ },
402
+ "0.40.0": {
403
+ "version": "0.40.1",
404
+ "date": "2026-05-02",
405
+ "notes": "Read-side collate patch (FORGE-S13-T12): sidecar merge by eventId deduplication, ingestion-quality (IQ) section in COST_REPORT.md, model canonicalization via new pricing.cjs library, no (unknown) row in cost table, deterministic cost recompute replaces stale sidecar values. Foundation for v0.41 emit-side improvements. New tool: tools/lib/pricing.cjs (29 tests). No schema changes. No emit-side changes. No workflow regeneration required.",
406
+ "regenerate": [
407
+ "tools:collate",
408
+ "tools:pricing"
409
+ ],
410
+ "breaking": false,
411
+ "manual": []
412
+ },
413
+ "0.32.0": {
414
+ "version": "0.40.0",
415
+ "date": "2026-05-02",
416
+ "notes": "Base-pack init with progressive enhancement (S13 \u2014 T02\u2013T06 + T08\u2013T10 + T11 friction reconciliation). Replaces multi-minute LLM cold-start init with a deterministic 4-phase pipeline (Collect \u2192 Discover \u2192 Materialize \u2192 Register, ~30\u201345s). Working artefacts ship as a base-pack with {{KEY}} placeholders; init substitutes from config.json + project-context.json (no LLM in materialization). New project-context.json schema (T02), substitute-placeholders.cjs tool (T03), 4-phase sdlc-init.md (T04), versioned structural snapshots in structure-versions.json (T05), npm run build-base-pack regeneration script (T06), enhancement agent skill at meta/workflows/meta-enhance.md and commands/enhance.md (T08), post-init + post-sprint hooks (T09), migration agent at meta/workflows/meta-migrate.md (T10), and bucket-A friction fixes (T11) covering forge#71 (7 sub-bugs in /forge:update) and forge#72 (preflight-gate workflow shadowing). Breaking: --fast aliases to default; init-progress.json is now 4-phase; structure-versions.json + project-context.json are net-new files; manage-versions.cjs is now the gateway for snapshot writes.",
417
+ "regenerate": [
418
+ "workflows:orchestrate_task",
419
+ "workflows:fix_bug",
420
+ "workflows:plan_task",
421
+ "workflows:implement_plan",
422
+ "workflows:review_plan",
423
+ "workflows:review_code",
424
+ "workflows:validate_task",
425
+ "workflows:architect_approve",
426
+ "workflows:commit_task",
427
+ "workflows:update_plan",
428
+ "workflows:update_implementation",
429
+ "workflows:sprint_retrospective",
430
+ "workflows:architect_sprint_intake",
431
+ "workflows:architect_sprint_plan",
432
+ "workflows:architect_review_sprint_completion",
433
+ "workflows:run_sprint",
434
+ "workflows:quiz_agent",
435
+ "workflows:collator_agent",
436
+ "workflows:_fragments",
437
+ "workflows:enhance",
438
+ "workflows:migrate_structural",
439
+ "commands:init",
440
+ "commands:enhance",
441
+ "commands:migrate",
442
+ "commands:calibrate",
443
+ "commands:update",
444
+ "commands:regenerate",
445
+ "tools:substitute-placeholders",
446
+ "tools:manage-versions",
447
+ "tools:build-base-pack",
448
+ "tools:preflight-gate"
449
+ ],
450
+ "breaking": true,
451
+ "manual": [
452
+ "Init flow is now 4 phases (Collect \u2192 Discover \u2192 Materialize \u2192 Register). --fast and --full both run the same deterministic pipeline; existing init-progress.json checkpoints from 12-phase runs are deleted automatically on resume.",
453
+ "structure-versions.json and project-context.json are net-new files at .forge/. Existing installations without them are migrated by /forge:migrate (T10).",
454
+ "Existing users on v0.28\u2013v0.30.x: run /forge:update to install the new tools and workflows, then /forge:migrate to synthesise project-context.json from existing .forge/ artefacts. /forge:migrate archives the pre-migration .forge/ contents to .forge/archive/pre-migration/.",
455
+ "After /forge:update, run /forge:update-tools to install the three new schemas (project-context.schema.json, structure-versions.schema.json, project-overlay.schema.json) into .forge/schemas/. /forge:update does not regenerate schemas \u2014 this is by design (T11 forge#71-bug3); /forge:update-tools is the dedicated path for schema installation.",
456
+ "After /forge:update-tools, run /forge:health to verify integrity.json and snapshot v0 register cleanly.",
457
+ "T11 fixes: /forge:update Step 1 baseline derivation now uses localVersion ?? migratedFrom ?? LOCAL_VERSION; preflight-gate.cjs no longer requires --workflow workaround for orchestrate_task; integrity.json regenerated from current hashes (no false-positive on /forge:health post-update)."
458
+ ]
459
+ },
460
+ "0.31.0": {
461
+ "version": "0.32.0",
462
+ "date": "2026-05-01",
463
+ "notes": "Init flow rewrite (T04): replace 12-phase init with 4-phase model (Collect \u2192 Discover \u2192 Materialize \u2192 Register). forge/commands/init.md and forge/init/sdlc-init.md fully rewritten. Phase 3 calls substitute-placeholders.cjs to produce fully functional workflows (no stubs). Phase 4 writes structure-versions.json at .forge/structure-versions.json (T05 stub), generation-manifest.json, persona-pack.json, context-pack.md/json, init-context.json/md, store seed, update-check cache, and invokes refresh-kb-links. --fast and --full flags accepted as no-ops (both run identical 4-phase flow). Old 12-phase checkpoint files deleted automatically on resume.",
464
+ "regenerate": [],
465
+ "breaking": false,
466
+ "manual": []
467
+ },
468
+ "0.30.0": {
469
+ "version": "0.31.0",
470
+ "date": "2026-05-01",
471
+ "notes": "Add build-base-pack development tool (T06): new forge/tools/build-base-pack.cjs regenerates init/base-pack/ from meta-sources with genericization rules; forge/tools/build-base-pack-rules.json defines string-replacement map; re-genericizes all base-pack files (workflows, templates, commands, personas, skills) to replace hardcoded 'Forge' persona names with {{PROJECT_NAME}} placeholders; forge/package.json exposes npm run build-base-pack; 208 tests pass.",
472
+ "regenerate": [],
473
+ "breaking": false,
474
+ "manual": []
475
+ },
476
+ "0.29.0": {
477
+ "version": "0.30.0",
478
+ "date": "2026-05-01",
479
+ "notes": "Prompt-efficiency structural cut (T01_6): (1) phase meta sources split by audience \u2014 orchestrate_task/fix_bug carry audience:orchestrator-only, all phase files carry audience:subagent with context: block; (2) PROJECT_OVERLAY replaces mandatory MASTER_INDEX.md reads \u2014 build-overlay.cjs materialises a \u22641kB task-scoped index slice injected by the orchestrator; architecture_block is now conditional on phase.context.architecture; (3) store-cli success-path stdout is now silent \u2014 pass --verbose for legacy JSON echo; (4) new _fragments/finalize.md carries the /cost sidecar contract; (5) review-code and validate phases default to diff-first read mode. Breaking: store-cli JSON stdout no longer emitted on success.",
480
+ "regenerate": [
481
+ "workflows:orchestrate_task",
482
+ "workflows:fix_bug",
483
+ "workflows:plan_task",
484
+ "workflows:implement_plan",
485
+ "workflows:review_plan",
486
+ "workflows:review_code",
487
+ "workflows:validate_task",
488
+ "workflows:architect_approve",
489
+ "workflows:commit_task",
490
+ "workflows:update_plan",
491
+ "workflows:update_implementation",
492
+ "workflows:_fragments",
493
+ "schemas:project-overlay",
494
+ "tools:build-overlay",
495
+ "tools:store-cli"
496
+ ],
497
+ "breaking": true,
498
+ "manual": [
499
+ "store-cli success-path stdout is now silent. Any script that parsed store-cli JSON output must be updated to pass --verbose or read from disk. Run /forge:update to regenerate all workflows and tools."
500
+ ]
501
+ },
502
+ "0.28.1": {
503
+ "version": "0.29.0",
504
+ "date": "2026-04-29",
505
+ "notes": "Security hardening (FORGE-BUG-016): fix 5 critical findings from security scan v0.28.0. (1) Bulk permission escalation: persist only matched rule instead of all 31 rules. (2) Remove node -e/p auto-approve \u2014 arbitrary code execution requires explicit approval. (3) Add domain allowlist for update URLs. (4) Block prototype pollution (__proto__/constructor/prototype) in getByPath/setByPath. (5) Add path traversal guard to cmdProgress/cmdProgressClear. Also scopes broad wildcards (touch, rmdir, rm -f) and adds require.main guard to forge-permissions.js.",
506
+ "regenerate": [
507
+ "hooks:forge-permissions",
508
+ "hooks:check-update",
509
+ "tools:manage-config",
510
+ "tools:store-cli"
511
+ ],
512
+ "breaking": true,
513
+ "manual": [
514
+ "node -e one-liners will now prompt for approval \u2014 this is intentional. Run /forge:update to refresh hooks and tools."
515
+ ]
516
+ },
517
+ "0.27.1": {
518
+ "version": "0.28.0",
519
+ "date": "2026-04-29",
520
+ "notes": "Escalation hardening (GH-66): subagent response validation with retry-then-escalate, blocked/escalated status guard in phase gates and pre-task check, inline escalation procedure at all call sites, Iron Law prohibiting silent workarounds, expanded Error Recovery table. No schema changes.",
521
+ "regenerate": [
522
+ "workflows:orchestrate_task",
523
+ "personas:orchestrator"
524
+ ],
525
+ "breaking": false,
526
+ "manual": [
527
+ "Run /forge:update to regenerate the orchestrate_task workflow and orchestrator persona. Tasks previously stuck in blocked/escalated status will now be skipped by the orchestrator instead of re-attempted."
528
+ ]
529
+ },
530
+ "0.27.0": {
531
+ "version": "0.27.1",
532
+ "date": "2026-04-28",
533
+ "notes": "Fix check-structure.cjs false-negative for namespaced commands: add prefixed:true to commands namespace in structure-manifest.json so the tool resolves .claude/commands/{prefix}/*.md correctly (GH-70).",
534
+ "regenerate": [],
535
+ "breaking": false,
536
+ "manual": []
537
+ },
538
+ "0.26.0": {
539
+ "version": "0.27.0",
540
+ "date": "2026-04-23",
541
+ "notes": "Store query engine: deterministic NLP-based store querying via store-cli nlp/query/schema commands. Decomposes store-query marketplace experiment into 4 forge tool modules (store-query.cjs, lib/store-facade.cjs, lib/store-nlp.cjs, lib/store-query-exec.cjs). Adds query-logger.cjs PostToolUse hook, forge:store-query-nlp and forge:store-query-grammar plugin skills, forge:store-query-validator agent, /forge:store-query command, and context-gathering shortcuts in plan/fix-bug/sprint-plan workflows. Replaces 5-6 manual KB navigation tool calls with 1-2 structured query calls.",
542
+ "regenerate": [
543
+ "tools",
544
+ "workflows"
545
+ ],
546
+ "breaking": false,
547
+ "manual": []
548
+ },
549
+ "0.25.0": {
550
+ "version": "0.26.0",
551
+ "date": "2026-04-23",
552
+ "notes": "Permission prompt storm fix (BUG-014): add PermissionRequest hook that auto-approves known Forge tool patterns (node tools, shell commands, writes to .forge/ and .claude/commands/, WebFetch to raw.githubusercontent.com). First run shows ~17 approval prompts that persist to .claude/settings.local.json; subsequent runs have zero prompts for Forge patterns. Also updates bug status for FORGE-BUG-014.",
553
+ "regenerate": [
554
+ "hooks"
555
+ ],
556
+ "breaking": false,
557
+ "manual": [
558
+ "Restart Claude Code after updating for the new hook to take effect. On first Forge command, approve each permission prompt once \u2014 they will persist for future sessions."
559
+ ]
560
+ },
561
+ "0.24.2": {
562
+ "version": "0.25.0",
563
+ "date": "2026-04-22",
564
+ "notes": "Fix permission-check rejection of $FORGE_ROOT in slash command frontmatter. Replace all !-prefixed manage-config.cjs calls with direct .forge/config.json reads using literal paths. Eliminates 'Contains simple_expansion' errors when running Forge commands without --dangerously-skip-permissions.",
565
+ "regenerate": [],
566
+ "breaking": false,
567
+ "manual": []
568
+ },
569
+ "0.24.1": {
570
+ "version": "0.24.2",
571
+ "date": "2026-04-22",
572
+ "notes": "Token telemetry reliability: workflows now emit placeholder sidecars with null token fields when /cost unavailable (was: skip silently). Users backfill via estimate-usage.cjs. Always emit sidecar with source: reported or missing.",
573
+ "regenerate": [
574
+ "workflows"
575
+ ],
576
+ "breaking": false,
577
+ "manual": []
578
+ },
579
+ "0.23.0": {
580
+ "version": "0.24.0",
581
+ "date": "2026-04-21",
582
+ "notes": "Multi-plugin detection: check-update.js now scans all plugin locations (~/.claude/plugins/, ./.claude/plugins/) to detect multiple Forge installations. Reports scope (user/project), distribution (forge@forge/forge@skillforge), and enabled status. Enables /forge:update to advise users with multiple installations.",
583
+ "regenerate": [],
584
+ "breaking": false,
585
+ "manual": []
586
+ },
587
+ "0.24.0": {
588
+ "version": "0.24.1",
589
+ "date": "2026-04-21",
590
+ "notes": "Fix init mode selection: Resume Detection now requires the mode field to be present in init-progress.json. Stale checkpoints without a mode field (from interrupted runs that didn't complete Mode Selection) fall through to the full Fast/Full prompt instead of silently defaulting to 'full' via config.json fallback.",
591
+ "regenerate": [],
592
+ "breaking": false,
593
+ "manual": []
594
+ },
595
+ "0.22.1": {
596
+ "version": "0.23.0",
597
+ "date": "2026-04-21",
598
+ "notes": "Fix path resolution bug: replace require('.forge/config.json') in node -e one-liners with manage-config.cjs calls. The bare require() resolved from process.cwd() which failed when the shell wasn't in the project root.",
599
+ "regenerate": [],
600
+ "breaking": false,
601
+ "manual": []
602
+ },
603
+ "0.22.0": {
604
+ "version": "0.22.1",
605
+ "date": "2026-04-20",
606
+ "notes": "Fix preflight-gate.cjs task directory resolution: scan sprint directory for artifact directory name instead of extracting source filename from task.path. Also fixes resolveVerdictSources to use the correct artifact directory path for verdict files.",
607
+ "regenerate": [],
608
+ "breaking": false,
609
+ "manual": []
610
+ },
611
+ "0.21.0": {
612
+ "version": "0.22.0",
613
+ "date": "2026-04-20",
614
+ "notes": "Calibrate baseline auto-initialization: /forge:calibrate now computes and writes the initial calibration baseline when absent instead of dead-ending with 'run /forge:init'. health.md recommends /forge:calibrate for missing baseline.",
615
+ "regenerate": [
616
+ "commands"
617
+ ],
618
+ "breaking": false,
619
+ "manual": []
620
+ },
621
+ "0.20.0": {
622
+ "version": "0.21.0",
623
+ "date": "2026-04-20",
624
+ "notes": "Structured Result returns for resolveTaskDir (collate.cjs) and estimateTokens (estimate-usage.cjs): both now return { ok, value } / { ok, code, message } instead of null. Shared error codes in forge/tools/lib/result.js. Callers checking for null must update to check result.ok.",
625
+ "regenerate": [
626
+ "tools"
627
+ ],
628
+ "breaking": false,
629
+ "manual": []
630
+ },
631
+ "0.19.2": {
632
+ "version": "0.20.0",
633
+ "date": "2026-04-20",
634
+ "notes": "S11 tech-debt fixes: event timestamp zeroing fixed (store-cli.cjs), preflight-gate now scans all workflow files, ROLE_TIER fallback applied in orchestrate_task, collate generates task INDEX.md files with correct links, calibrationBaseline backfilled in fast-mode init/update, quiz-agent slash command added, generate-commands updated with quiz-agent and flat-file cleanup.",
635
+ "regenerate": [
636
+ "tools",
637
+ "workflows",
638
+ "commands"
639
+ ],
640
+ "breaking": false,
641
+ "manual": []
642
+ },
643
+ "0.19.1": {
644
+ "version": "0.19.2",
645
+ "notes": "Add Japanese kanji to each banner, shown alongside the name in render and badge",
646
+ "regenerate": [],
647
+ "breaking": false,
648
+ "manual": []
649
+ },
650
+ "0.19.0": {
651
+ "version": "0.19.1",
652
+ "notes": "Collapse banner art from 5-line ASCII blocks to single creative lines",
653
+ "regenerate": [],
654
+ "breaking": false,
655
+ "manual": []
656
+ },
657
+ "0.18.1": {
658
+ "version": "0.19.0",
659
+ "notes": "UX polish: tomoshibi prefix lowercase, progress IPC persona emoji, ensure-ready single-line banner",
660
+ "regenerate": [],
661
+ "breaking": false,
662
+ "manual": []
663
+ },
664
+ "0.18.0": {
665
+ "version": "0.18.1",
666
+ "date": "2026-04-19",
667
+ "notes": "Bug fix: preflight-gate.cjs now scans all .forge/workflows/*.md files for gates phase blocks instead of looking only for two hardcoded meta-*.md filenames that only exist in the Forge development environment.",
668
+ "regenerate": [
669
+ "tools"
670
+ ],
671
+ "breaking": false,
672
+ "manual": []
673
+ },
674
+ "0.17.1": {
675
+ "version": "0.18.0",
676
+ "date": "2026-04-19",
677
+ "notes": "Write-boundary schema enforcement. New PreToolUse hook (hooks/validate-write.js) intercepts Write/Edit/MultiEdit against Forge-owned paths under .forge/store/ and validates the proposed contents against the matching schema \u2014 task, sprint, bug, feature, event, event-sidecar, collation-state, and progress-log entries. Three new schemas added (event-sidecar, progress-entry, collation-state). store-cli gains schema enforcement on the four previously unvalidated write paths (sidecar emit, sidecar merge, progress append, collation-state write). Shared validator extracted to tools/lib/validate.js and reused by both the hook and store-cli. Emergency bypass via FORGE_SKIP_WRITE_VALIDATION=1, which also appends an audit line to the affected sprint's progress.log.",
678
+ "regenerate": [
679
+ "hooks",
680
+ "schemas"
681
+ ],
682
+ "breaking": false,
683
+ "manual": [
684
+ "Run /forge:update to install the new write-boundary hook. Any existing tooling that writes malformed JSON to .forge/store/ will now be rejected at write time \u2014 fix the data, don't bypass the hook."
685
+ ]
686
+ },
687
+ "0.17.0": {
688
+ "version": "0.17.1",
689
+ "date": "2026-04-19",
690
+ "notes": "Architecture context pack. build-context-pack.cjs walks engineering/architecture/*.md and emits .forge/cache/context-pack.md and context-pack.json. Orchestrators inject the pack summary into every subagent prompt, replacing per-phase stack.md reads with a single cached summary. Phase workflows updated to consult the injected summary first and read full docs only on escalation. /forge:health detects stale packs. /forge:regenerate, /forge:collate, and /forge:materialize rebuild the pack.",
691
+ "regenerate": [
692
+ "workflows",
693
+ "tools"
694
+ ],
695
+ "breaking": false,
696
+ "manual": [
697
+ "Run /forge:regenerate to build the initial context pack at .forge/cache/context-pack.md."
698
+ ]
699
+ },
700
+ "0.16.0": {
701
+ "version": "0.17.0",
702
+ "date": "2026-04-19",
703
+ "notes": "Artifact summaries in task manifest. Tasks and bugs gain an optional summaries field (plan, review_plan, implementation, code_review, validation). Phase workflows emit terse JSON sidecars via store-cli set-summary / set-bug-summary. Orchestrator injects summaries into downstream subagent prompts as a fast path, falling back to full artifact paths when summaries are absent. Old tasks without summaries continue to work unchanged.",
704
+ "regenerate": [
705
+ "workflows",
706
+ "tools"
707
+ ],
708
+ "breaking": false,
709
+ "manual": []
710
+ },
711
+ "0.15.0": {
712
+ "version": "0.16.0",
713
+ "date": "2026-04-19",
714
+ "notes": "Persona/skill by reference. Subagent prompts inject a compact persona/skill summary from .forge/cache/persona-pack.json instead of verbatim persona and skill file prose. build-persona-pack.cjs compiles YAML frontmatter from meta/personas/ and meta/skills/ into the pack, triggered by /forge:regenerate and /forge:materialize. FORGE_PROMPT_MODE=inline preserves legacy behaviour for one version as a rollback path.",
715
+ "regenerate": [
716
+ "personas",
717
+ "workflows"
718
+ ],
719
+ "breaking": false,
720
+ "manual": [
721
+ "Run /forge:regenerate to rebuild the persona pack at .forge/cache/persona-pack.json."
722
+ ]
723
+ },
724
+ "0.14.1": {
725
+ "version": "0.15.0",
726
+ "date": "2026-04-19",
727
+ "notes": "Gate-check enforcement. Orchestrator and atomic phase workflows now run preflight-gate.cjs before every subagent spawn and parse verdicts via parse-verdict.cjs (closed vocabulary). Missing artifacts, forbidden states, and malformed verdicts halt loudly with structured events instead of silently advancing. No schema changes.",
728
+ "regenerate": [
729
+ "workflows"
730
+ ],
731
+ "breaking": false,
732
+ "manual": []
733
+ },
734
+ "0.14.0": {
735
+ "version": "0.14.1",
736
+ "date": "2026-04-18",
737
+ "notes": "collate now generates Sprint, Task, and Bug INDEX.md files \u2014 closes broken knowledge graph links from MASTER_INDEX.md. refresh-kb-links skill gains KB integrity check that warns when INDEX files are missing.",
738
+ "regenerate": [],
739
+ "breaking": false,
740
+ "manual": []
741
+ },
742
+ "0.13.1": {
743
+ "version": "0.14.0",
744
+ "date": "2026-04-18",
745
+ "notes": "Tomoshibi unified into single oracle agent; KB-visibility logic extracted to forge:refresh-kb-links plugin skill. Agent-tool Tomoshibi invocations in update, init, and collate replaced with Skill-tool invocations.",
746
+ "regenerate": [],
747
+ "breaking": false,
748
+ "manual": []
749
+ },
750
+ "0.13.0": {
751
+ "version": "0.13.1",
752
+ "date": "2026-04-18",
753
+ "notes": "Tomoshibi Oracle warns before config changes that require regeneration \u2014 project.prefix change now shows impact and exact follow-up command before [Y/n] prompt.",
754
+ "regenerate": [],
755
+ "breaking": false,
756
+ "manual": []
757
+ },
758
+ "0.12.6": {
759
+ "version": "0.13.0",
760
+ "date": "2026-04-18",
761
+ "notes": "Generated commands are now namespaced under project prefix (/{prefix}:plan etc.). Command files gain description: frontmatter. /forge:remove is prefix-aware. /forge:add-task shows namespaced next-step commands.",
762
+ "regenerate": [
763
+ "commands",
764
+ "workflows"
765
+ ],
766
+ "breaking": false,
767
+ "manual": [
768
+ "After regenerating, delete the old flat command files: rm -f .claude/commands/{sprint-intake,sprint-plan,run-task,run-sprint,plan,review-plan,implement,review-code,fix-bug,approve,commit,collate,retrospective}.md"
769
+ ]
770
+ },
771
+ "0.12.5": {
772
+ "version": "0.12.6",
773
+ "date": "2026-04-18",
774
+ "notes": "New /forge:ask command (Tomoshibi Oracle concierge) + plugin integrity checks. /forge:ask routes project-status, config, version, workflow/command explanation queries through the new tomoshibi-oracle agent. /forge:health gains a tamper-evident integrity check via verify-integrity.cjs + inline verifier hash. gen-integrity.cjs generates the release-time hash manifest (integrity.json).",
775
+ "regenerate": [],
776
+ "breaking": false,
777
+ "manual": []
778
+ },
779
+ "0.12.4": {
780
+ "version": "0.12.5",
781
+ "date": "2026-04-17",
782
+ "notes": "Visual upgrade for fast-mode capability announcement: framed em-dash block with lantern-yellow progress bars and zen-blue horizontal rules. New banners.cjs ZEN_BLUE constant + ruleLine() helper + --rule CLI subcommand. phaseHeader em-dash banner is now zen-blue tinted for system-wide horizontal-rule consistency.",
783
+ "regenerate": [],
784
+ "breaking": false,
785
+ "manual": []
786
+ },
787
+ "0.12.3": {
788
+ "version": "0.12.4",
789
+ "date": "2026-04-17",
790
+ "notes": "Fast-mode capability announcement: every materialise round (per-workflow stub trigger or /forge:materialize --all) now emits a 2-line summary like '\u3007 Forge is currently in fast mode \u00b7 5% capabilities generated (2 of 41) \u2014 this round will lift capabilities to 29% (12 of 41, +10 artifact(s))'. Silent on full installs. New ensure-ready.cjs subcommands: --capabilities, --capabilities-after, --announce.",
791
+ "regenerate": [],
792
+ "breaking": false,
793
+ "manual": []
794
+ },
795
+ "0.12.2": {
796
+ "version": "0.12.3",
797
+ "date": "2026-04-17",
798
+ "notes": "Visual onboarding character: hero banners and per-phase/step badges across /forge:init, /forge:update, /forge:regenerate, /forge:health (and light touch on /forge:config and /forge:materialize). banners.cjs gains progressBar, subtitle, phaseHeader, plain-mode (NO_COLOR / non-tty / --plain). Backwards-compatible \u2014 all existing API + emits still work; new visuals are additive.",
799
+ "regenerate": [],
800
+ "breaking": false,
801
+ "manual": []
802
+ },
803
+ "0.12.1": {
804
+ "version": "0.12.2",
805
+ "date": "2026-04-17",
806
+ "notes": "/forge:init mode prompt now defaults to Fast (was Full). Order in the prompt and the resume switch options is also flipped so [1] = Fast, [2] = Full. Pressing Enter at the prompt picks Fast. Pre-existing --fast and --full flags continue to work unchanged.",
807
+ "regenerate": [],
808
+ "breaking": false,
809
+ "manual": []
810
+ },
811
+ "0.12.0": {
812
+ "version": "0.12.1",
813
+ "date": "2026-04-17",
814
+ "notes": "Interactive fast/full prompt for /forge:init (with --full escape hatch). New /forge:config command for mode switching. Regenerate and materialize now respect fast mode and no longer auto-flip to full. Explicit promotion: /forge:config mode full. /forge:init Phase 12 and /forge:update Step 5 now offer to gitignore .forge/store/events/ (transient agent logs).",
815
+ "regenerate": [],
816
+ "breaking": false,
817
+ "manual": []
818
+ },
819
+ "0.11.3": {
820
+ "version": "0.12.0",
821
+ "date": "2026-04-17",
822
+ "notes": "Fast-mode init: /forge:init --fast runs in ~30s + Phase 2, deferring heavy LLM generation to first use. Machine-readable dep graph (deps: frontmatter in all 17 meta workflows, edges section in structure-manifest.json). New lazy-materialize.md rulebook, ensure-ready.cjs tool, /forge:materialize command. Per-file scoping for skills and templates in /forge:regenerate. Config mode field (fast/full).",
823
+ "regenerate": [],
824
+ "breaking": false,
825
+ "manual": []
826
+ },
827
+ "0.11.2": {
828
+ "version": "0.11.3",
829
+ "date": "2026-04-16",
830
+ "notes": "Parallelise init and regenerate: Phase 3 KB fan-out (7 parallel docs), Phase 4 personas fan-out, Phases 5+6 skills+templates parallel, Phases 8+9 orchestration+commands parallel. Regenerate workflows now uses build-init-context.cjs fan-out. Regenerate default runs 4 parallel steps instead of 5 sequential categories. New per-subagent rulebooks: generate-persona.md, generate-skill.md, generate-template.md, generate-kb-doc.md.",
831
+ "regenerate": [],
832
+ "breaking": false,
833
+ "manual": []
834
+ },
835
+ "0.11.1": {
836
+ "version": "0.11.2",
837
+ "date": "2026-04-16",
838
+ "notes": "Fix generate-workflows.md: preserve meta-workflow requirements frontmatter in generated output (needed for runtime model selection); fix self-check to look for persona symbol after closing --- rather than at absolute line 1.",
839
+ "regenerate": [
840
+ "workflows"
841
+ ],
842
+ "breaking": false,
843
+ "manual": []
844
+ },
845
+ "0.11.0": {
846
+ "version": "0.11.1",
847
+ "date": "2026-04-16",
848
+ "notes": "Fix Phase 7 fan-out: extractPersonaSymbol now handles first-line emoji format; generate-workflows.md strips meta YAML frontmatter; workflow-gen-plan.json corrects architect_sprint_intake persona to product-manager.",
849
+ "regenerate": [
850
+ "workflows"
851
+ ],
852
+ "breaking": false,
853
+ "manual": []
854
+ },
855
+ "0.10.1": {
856
+ "version": "0.11.0",
857
+ "date": "2026-04-16",
858
+ "notes": "Phase 7 of /forge:init now fans out all 16 atomic workflow generations in parallel via Agent subagents; adds build-init-context.cjs (deterministic project brief) and workflow-gen-plan.json (fan-out table).",
859
+ "regenerate": [],
860
+ "breaking": false,
861
+ "manual": []
862
+ },
863
+ "0.10.0": {
864
+ "version": "0.10.1",
865
+ "date": "2026-04-16",
866
+ "notes": "Fix: quiz_agent.md was missing from new inits \u2014 add meta-quiz-agent.md so Phase 7 generates the KB knowledge-check workflow.",
867
+ "regenerate": [
868
+ "workflows"
869
+ ],
870
+ "breaking": false,
871
+ "manual": []
872
+ },
873
+ "0.9.18": {
874
+ "version": "0.10.0",
875
+ "date": "2026-04-16",
876
+ "notes": "0.9.x \u2192 0.10.0 \u2014 Tomoshibi agent (\u706f): coding-agent instruction files linked to Forge KB and workflows; KB folder name configurable at init pre-flight (paths.engineering); forge:init Phase 12, forge:update Step 7, meta-collate Finalize. Full 0.9.x cycle: store custodian gateway, named-agent IPC with phase banners and Monitor streaming, orchestrator context compaction, banner library, calibrate command, add-task, health improvements, structure manifest, BUG-008/009 fixes.",
877
+ "regenerate": [
878
+ "workflows",
879
+ "commands",
880
+ "personas",
881
+ "skills",
882
+ "tools"
883
+ ],
884
+ "breaking": false,
885
+ "manual": []
886
+ },
887
+ "0.9.17": {
888
+ "version": "0.10.0",
889
+ "date": "2026-04-16",
890
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
891
+ "regenerate": [
892
+ "workflows",
893
+ "commands",
894
+ "personas",
895
+ "skills",
896
+ "tools"
897
+ ],
898
+ "breaking": false,
899
+ "manual": []
900
+ },
901
+ "0.9.16": {
902
+ "version": "0.10.0",
903
+ "date": "2026-04-16",
904
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
905
+ "regenerate": [
906
+ "workflows",
907
+ "commands",
908
+ "personas",
909
+ "skills",
910
+ "tools"
911
+ ],
912
+ "breaking": false,
913
+ "manual": []
914
+ },
915
+ "0.9.15": {
916
+ "version": "0.10.0",
917
+ "date": "2026-04-16",
918
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
919
+ "regenerate": [
920
+ "workflows",
921
+ "commands",
922
+ "personas",
923
+ "skills",
924
+ "tools"
925
+ ],
926
+ "breaking": false,
927
+ "manual": []
928
+ },
929
+ "0.9.14": {
930
+ "version": "0.10.0",
931
+ "date": "2026-04-16",
932
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
933
+ "regenerate": [
934
+ "workflows",
935
+ "commands",
936
+ "personas",
937
+ "skills",
938
+ "tools"
939
+ ],
940
+ "breaking": false,
941
+ "manual": []
942
+ },
943
+ "0.9.13": {
944
+ "version": "0.10.0",
945
+ "date": "2026-04-16",
946
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
947
+ "regenerate": [
948
+ "workflows",
949
+ "commands",
950
+ "personas",
951
+ "skills",
952
+ "tools"
953
+ ],
954
+ "breaking": false,
955
+ "manual": []
956
+ },
957
+ "0.9.12": {
958
+ "version": "0.10.0",
959
+ "date": "2026-04-16",
960
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
961
+ "regenerate": [
962
+ "workflows",
963
+ "commands",
964
+ "personas",
965
+ "skills",
966
+ "tools"
967
+ ],
968
+ "breaking": false,
969
+ "manual": []
970
+ },
971
+ "0.9.11": {
972
+ "version": "0.10.0",
973
+ "date": "2026-04-16",
974
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
975
+ "regenerate": [
976
+ "workflows",
977
+ "commands",
978
+ "personas",
979
+ "skills",
980
+ "tools"
981
+ ],
982
+ "breaking": false,
983
+ "manual": []
984
+ },
985
+ "0.9.10": {
986
+ "version": "0.10.0",
987
+ "date": "2026-04-16",
988
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
989
+ "regenerate": [
990
+ "workflows",
991
+ "commands",
992
+ "personas",
993
+ "skills",
994
+ "tools"
995
+ ],
996
+ "breaking": false,
997
+ "manual": []
998
+ },
999
+ "0.9.9": {
1000
+ "version": "0.10.0",
1001
+ "date": "2026-04-16",
1002
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1003
+ "regenerate": [
1004
+ "workflows",
1005
+ "commands",
1006
+ "personas",
1007
+ "skills",
1008
+ "tools"
1009
+ ],
1010
+ "breaking": false,
1011
+ "manual": []
1012
+ },
1013
+ "0.9.8": {
1014
+ "version": "0.10.0",
1015
+ "date": "2026-04-16",
1016
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1017
+ "regenerate": [
1018
+ "workflows",
1019
+ "commands",
1020
+ "personas",
1021
+ "skills",
1022
+ "tools"
1023
+ ],
1024
+ "breaking": false,
1025
+ "manual": []
1026
+ },
1027
+ "0.9.7": {
1028
+ "version": "0.10.0",
1029
+ "date": "2026-04-16",
1030
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1031
+ "regenerate": [
1032
+ "workflows",
1033
+ "commands",
1034
+ "personas",
1035
+ "skills",
1036
+ "tools"
1037
+ ],
1038
+ "breaking": false,
1039
+ "manual": []
1040
+ },
1041
+ "0.9.6": {
1042
+ "version": "0.10.0",
1043
+ "date": "2026-04-16",
1044
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1045
+ "regenerate": [
1046
+ "workflows",
1047
+ "commands",
1048
+ "personas",
1049
+ "skills",
1050
+ "tools"
1051
+ ],
1052
+ "breaking": false,
1053
+ "manual": []
1054
+ },
1055
+ "0.9.5": {
1056
+ "version": "0.10.0",
1057
+ "date": "2026-04-16",
1058
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1059
+ "regenerate": [
1060
+ "workflows",
1061
+ "commands",
1062
+ "personas",
1063
+ "skills",
1064
+ "tools"
1065
+ ],
1066
+ "breaking": false,
1067
+ "manual": []
1068
+ },
1069
+ "0.9.4": {
1070
+ "version": "0.10.0",
1071
+ "date": "2026-04-16",
1072
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1073
+ "regenerate": [
1074
+ "workflows",
1075
+ "commands",
1076
+ "personas",
1077
+ "skills",
1078
+ "tools"
1079
+ ],
1080
+ "breaking": false,
1081
+ "manual": []
1082
+ },
1083
+ "0.9.3": {
1084
+ "version": "0.10.0",
1085
+ "date": "2026-04-16",
1086
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1087
+ "regenerate": [
1088
+ "workflows",
1089
+ "commands",
1090
+ "personas",
1091
+ "skills",
1092
+ "tools"
1093
+ ],
1094
+ "breaking": false,
1095
+ "manual": []
1096
+ },
1097
+ "0.9.2": {
1098
+ "version": "0.10.0",
1099
+ "date": "2026-04-16",
1100
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1101
+ "regenerate": [
1102
+ "workflows",
1103
+ "commands",
1104
+ "personas",
1105
+ "skills",
1106
+ "tools"
1107
+ ],
1108
+ "breaking": false,
1109
+ "manual": []
1110
+ },
1111
+ "0.9.1": {
1112
+ "version": "0.10.0",
1113
+ "date": "2026-04-16",
1114
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1115
+ "regenerate": [
1116
+ "workflows",
1117
+ "commands",
1118
+ "personas",
1119
+ "skills",
1120
+ "tools"
1121
+ ],
1122
+ "breaking": false,
1123
+ "manual": []
1124
+ },
1125
+ "0.9.0": {
1126
+ "version": "0.10.0",
1127
+ "date": "2026-04-16",
1128
+ "notes": "0.9.x \u2192 0.10.0 \u2014 see 0.9.18 entry.",
1129
+ "regenerate": [
1130
+ "workflows",
1131
+ "commands",
1132
+ "personas",
1133
+ "skills",
1134
+ "tools"
1135
+ ],
1136
+ "breaking": false,
1137
+ "manual": []
1138
+ },
1139
+ "0.8.10": {
1140
+ "version": "0.9.0",
1141
+ "date": "2026-04-15",
1142
+ "notes": "0.8.x \u2192 0.9.0 \u2014 Store Custodian: deterministic store gateway (store-cli.cjs), 16 meta-workflows migrated from direct writes to custodian, sprint schema gains goal and features fields. Full 0.8.x cycle: Sprint S06 cap, slug-aware directory discovery, ghost event fix, collate purge-events, init migration baseline stamp, workflow canonical naming, effort: frontmatter, fix sprint-plan and forge:update Step 4.",
1143
+ "regenerate": [
1144
+ "workflows",
1145
+ "commands",
1146
+ "personas",
1147
+ "skills",
1148
+ "tools"
1149
+ ],
1150
+ "breaking": false,
1151
+ "manual": []
1152
+ },
1153
+ "0.8.9": {
1154
+ "version": "0.9.0",
1155
+ "date": "2026-04-15",
1156
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1157
+ "regenerate": [
1158
+ "workflows",
1159
+ "commands",
1160
+ "personas",
1161
+ "skills",
1162
+ "tools"
1163
+ ],
1164
+ "breaking": false,
1165
+ "manual": []
1166
+ },
1167
+ "0.8.8": {
1168
+ "version": "0.9.0",
1169
+ "date": "2026-04-15",
1170
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1171
+ "regenerate": [
1172
+ "workflows",
1173
+ "commands",
1174
+ "personas",
1175
+ "skills",
1176
+ "tools"
1177
+ ],
1178
+ "breaking": false,
1179
+ "manual": []
1180
+ },
1181
+ "0.8.7": {
1182
+ "version": "0.9.0",
1183
+ "date": "2026-04-15",
1184
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1185
+ "regenerate": [
1186
+ "workflows",
1187
+ "commands",
1188
+ "personas",
1189
+ "skills",
1190
+ "tools"
1191
+ ],
1192
+ "breaking": false,
1193
+ "manual": []
1194
+ },
1195
+ "0.8.6": {
1196
+ "version": "0.9.0",
1197
+ "date": "2026-04-15",
1198
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1199
+ "regenerate": [
1200
+ "workflows",
1201
+ "commands",
1202
+ "personas",
1203
+ "skills",
1204
+ "tools"
1205
+ ],
1206
+ "breaking": false,
1207
+ "manual": []
1208
+ },
1209
+ "0.8.5": {
1210
+ "version": "0.9.0",
1211
+ "date": "2026-04-15",
1212
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1213
+ "regenerate": [
1214
+ "workflows",
1215
+ "commands",
1216
+ "personas",
1217
+ "skills",
1218
+ "tools"
1219
+ ],
1220
+ "breaking": false,
1221
+ "manual": []
1222
+ },
1223
+ "0.8.4": {
1224
+ "version": "0.9.0",
1225
+ "date": "2026-04-15",
1226
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1227
+ "regenerate": [
1228
+ "workflows",
1229
+ "commands",
1230
+ "personas",
1231
+ "skills",
1232
+ "tools"
1233
+ ],
1234
+ "breaking": false,
1235
+ "manual": []
1236
+ },
1237
+ "0.8.3": {
1238
+ "version": "0.9.0",
1239
+ "date": "2026-04-15",
1240
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1241
+ "regenerate": [
1242
+ "workflows",
1243
+ "commands",
1244
+ "personas",
1245
+ "skills",
1246
+ "tools"
1247
+ ],
1248
+ "breaking": false,
1249
+ "manual": []
1250
+ },
1251
+ "0.8.2": {
1252
+ "version": "0.9.0",
1253
+ "date": "2026-04-15",
1254
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1255
+ "regenerate": [
1256
+ "workflows",
1257
+ "commands",
1258
+ "personas",
1259
+ "skills",
1260
+ "tools"
1261
+ ],
1262
+ "breaking": false,
1263
+ "manual": []
1264
+ },
1265
+ "0.8.1": {
1266
+ "version": "0.9.0",
1267
+ "date": "2026-04-15",
1268
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1269
+ "regenerate": [
1270
+ "workflows",
1271
+ "commands",
1272
+ "personas",
1273
+ "skills",
1274
+ "tools"
1275
+ ],
1276
+ "breaking": false,
1277
+ "manual": []
1278
+ },
1279
+ "0.8.0": {
1280
+ "version": "0.9.0",
1281
+ "date": "2026-04-15",
1282
+ "notes": "0.8.x \u2192 0.9.0 \u2014 see 0.8.10 entry.",
1283
+ "regenerate": [
1284
+ "workflows",
1285
+ "commands",
1286
+ "personas",
1287
+ "skills",
1288
+ "tools"
1289
+ ],
1290
+ "breaking": false,
1291
+ "manual": []
1292
+ },
1293
+ "0.7.11": {
1294
+ "version": "0.8.0",
1295
+ "date": "2026-04-14",
1296
+ "notes": "0.7.x \u2192 0.8.0 \u2014 Sprint S06: orchestrator persona noun-based lookup, meta-workflows purged of inline Persona sections, forge:regenerate includes personas, sprint schema path field, slug-aware seed-store/collate/validate-store. Full 0.7.x cycle: Japanese nature persona palette, orchestrator announcements, ghost event fix, false breaking-change suppression, validate-store slug and filesystem checks.",
1297
+ "regenerate": [
1298
+ "workflows",
1299
+ "commands",
1300
+ "personas",
1301
+ "skills"
1302
+ ],
1303
+ "breaking": false,
1304
+ "manual": []
1305
+ },
1306
+ "0.7.10": {
1307
+ "version": "0.8.0",
1308
+ "date": "2026-04-14",
1309
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1310
+ "regenerate": [
1311
+ "workflows",
1312
+ "commands",
1313
+ "personas",
1314
+ "skills"
1315
+ ],
1316
+ "breaking": false,
1317
+ "manual": []
1318
+ },
1319
+ "0.7.9": {
1320
+ "version": "0.8.0",
1321
+ "date": "2026-04-14",
1322
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1323
+ "regenerate": [
1324
+ "workflows",
1325
+ "commands",
1326
+ "personas",
1327
+ "skills"
1328
+ ],
1329
+ "breaking": false,
1330
+ "manual": []
1331
+ },
1332
+ "0.7.8": {
1333
+ "version": "0.8.0",
1334
+ "date": "2026-04-14",
1335
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1336
+ "regenerate": [
1337
+ "workflows",
1338
+ "commands",
1339
+ "personas",
1340
+ "skills"
1341
+ ],
1342
+ "breaking": false,
1343
+ "manual": []
1344
+ },
1345
+ "0.7.7": {
1346
+ "version": "0.8.0",
1347
+ "date": "2026-04-14",
1348
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1349
+ "regenerate": [
1350
+ "workflows",
1351
+ "commands",
1352
+ "personas",
1353
+ "skills"
1354
+ ],
1355
+ "breaking": false,
1356
+ "manual": []
1357
+ },
1358
+ "0.7.6": {
1359
+ "version": "0.8.0",
1360
+ "date": "2026-04-14",
1361
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1362
+ "regenerate": [
1363
+ "workflows",
1364
+ "commands",
1365
+ "personas",
1366
+ "skills"
1367
+ ],
1368
+ "breaking": false,
1369
+ "manual": []
1370
+ },
1371
+ "0.7.5": {
1372
+ "version": "0.8.0",
1373
+ "date": "2026-04-14",
1374
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1375
+ "regenerate": [
1376
+ "workflows",
1377
+ "commands",
1378
+ "personas",
1379
+ "skills"
1380
+ ],
1381
+ "breaking": false,
1382
+ "manual": []
1383
+ },
1384
+ "0.7.4": {
1385
+ "version": "0.8.0",
1386
+ "date": "2026-04-14",
1387
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1388
+ "regenerate": [
1389
+ "workflows",
1390
+ "commands",
1391
+ "personas",
1392
+ "skills"
1393
+ ],
1394
+ "breaking": false,
1395
+ "manual": []
1396
+ },
1397
+ "0.7.3": {
1398
+ "version": "0.8.0",
1399
+ "date": "2026-04-14",
1400
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1401
+ "regenerate": [
1402
+ "workflows",
1403
+ "commands",
1404
+ "personas",
1405
+ "skills"
1406
+ ],
1407
+ "breaking": false,
1408
+ "manual": []
1409
+ },
1410
+ "0.7.2": {
1411
+ "version": "0.8.0",
1412
+ "date": "2026-04-14",
1413
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1414
+ "regenerate": [
1415
+ "workflows",
1416
+ "commands",
1417
+ "personas",
1418
+ "skills"
1419
+ ],
1420
+ "breaking": false,
1421
+ "manual": []
1422
+ },
1423
+ "0.7.1": {
1424
+ "version": "0.8.0",
1425
+ "date": "2026-04-14",
1426
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1427
+ "regenerate": [
1428
+ "workflows",
1429
+ "commands",
1430
+ "personas",
1431
+ "skills"
1432
+ ],
1433
+ "breaking": false,
1434
+ "manual": []
1435
+ },
1436
+ "0.7.0": {
1437
+ "version": "0.8.0",
1438
+ "date": "2026-04-14",
1439
+ "notes": "0.7.x \u2192 0.8.0 \u2014 see 0.7.11 entry.",
1440
+ "regenerate": [
1441
+ "workflows",
1442
+ "commands",
1443
+ "personas",
1444
+ "skills"
1445
+ ],
1446
+ "breaking": false,
1447
+ "manual": []
1448
+ },
1449
+ "0.6.13": {
1450
+ "version": "0.7.0",
1451
+ "date": "2026-04-13",
1452
+ "notes": "0.6.x \u2192 0.7.0 \u25b3 Breaking \u2014 Portability migration: legacy model: fields \u2192 structured requirements blocks (3D Agent Model); grounding and descriptive pathing (ID-description folder naming, absolute path injection). Full 0.6.x cycle: distribution-aware update URLs, QA validate phase, store.cjs facade, collate fixes, skillforge git-subdir.",
1453
+ "regenerate": [
1454
+ "workflows",
1455
+ "commands",
1456
+ "personas",
1457
+ "skills",
1458
+ "tools"
1459
+ ],
1460
+ "breaking": true,
1461
+ "manual": [
1462
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1463
+ ]
1464
+ },
1465
+ "0.6.12": {
1466
+ "version": "0.7.0",
1467
+ "date": "2026-04-13",
1468
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1469
+ "regenerate": [
1470
+ "workflows",
1471
+ "commands",
1472
+ "personas",
1473
+ "skills",
1474
+ "tools"
1475
+ ],
1476
+ "breaking": true,
1477
+ "manual": [
1478
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1479
+ ]
1480
+ },
1481
+ "0.6.11": {
1482
+ "version": "0.7.0",
1483
+ "date": "2026-04-13",
1484
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1485
+ "regenerate": [
1486
+ "workflows",
1487
+ "commands",
1488
+ "personas",
1489
+ "skills",
1490
+ "tools"
1491
+ ],
1492
+ "breaking": true,
1493
+ "manual": [
1494
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1495
+ ]
1496
+ },
1497
+ "0.6.10": {
1498
+ "version": "0.7.0",
1499
+ "date": "2026-04-13",
1500
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1501
+ "regenerate": [
1502
+ "workflows",
1503
+ "commands",
1504
+ "personas",
1505
+ "skills",
1506
+ "tools"
1507
+ ],
1508
+ "breaking": true,
1509
+ "manual": [
1510
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1511
+ ]
1512
+ },
1513
+ "0.6.9": {
1514
+ "version": "0.7.0",
1515
+ "date": "2026-04-13",
1516
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1517
+ "regenerate": [
1518
+ "workflows",
1519
+ "commands",
1520
+ "personas",
1521
+ "skills",
1522
+ "tools"
1523
+ ],
1524
+ "breaking": true,
1525
+ "manual": [
1526
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1527
+ ]
1528
+ },
1529
+ "0.6.8": {
1530
+ "version": "0.7.0",
1531
+ "date": "2026-04-13",
1532
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1533
+ "regenerate": [
1534
+ "workflows",
1535
+ "commands",
1536
+ "personas",
1537
+ "skills",
1538
+ "tools"
1539
+ ],
1540
+ "breaking": true,
1541
+ "manual": [
1542
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1543
+ ]
1544
+ },
1545
+ "0.6.7": {
1546
+ "version": "0.7.0",
1547
+ "date": "2026-04-13",
1548
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1549
+ "regenerate": [
1550
+ "workflows",
1551
+ "commands",
1552
+ "personas",
1553
+ "skills",
1554
+ "tools"
1555
+ ],
1556
+ "breaking": true,
1557
+ "manual": [
1558
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1559
+ ]
1560
+ },
1561
+ "0.6.6": {
1562
+ "version": "0.7.0",
1563
+ "date": "2026-04-13",
1564
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1565
+ "regenerate": [
1566
+ "workflows",
1567
+ "commands",
1568
+ "personas",
1569
+ "skills",
1570
+ "tools"
1571
+ ],
1572
+ "breaking": true,
1573
+ "manual": [
1574
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1575
+ ]
1576
+ },
1577
+ "0.6.5": {
1578
+ "version": "0.7.0",
1579
+ "date": "2026-04-13",
1580
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1581
+ "regenerate": [
1582
+ "workflows",
1583
+ "commands",
1584
+ "personas",
1585
+ "skills",
1586
+ "tools"
1587
+ ],
1588
+ "breaking": true,
1589
+ "manual": [
1590
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1591
+ ]
1592
+ },
1593
+ "0.6.4": {
1594
+ "version": "0.7.0",
1595
+ "date": "2026-04-13",
1596
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1597
+ "regenerate": [
1598
+ "workflows",
1599
+ "commands",
1600
+ "personas",
1601
+ "skills",
1602
+ "tools"
1603
+ ],
1604
+ "breaking": true,
1605
+ "manual": [
1606
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1607
+ ]
1608
+ },
1609
+ "0.6.3": {
1610
+ "version": "0.7.0",
1611
+ "date": "2026-04-13",
1612
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1613
+ "regenerate": [
1614
+ "workflows",
1615
+ "commands",
1616
+ "personas",
1617
+ "skills",
1618
+ "tools"
1619
+ ],
1620
+ "breaking": true,
1621
+ "manual": [
1622
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1623
+ ]
1624
+ },
1625
+ "0.6.2": {
1626
+ "version": "0.7.0",
1627
+ "date": "2026-04-13",
1628
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1629
+ "regenerate": [
1630
+ "workflows",
1631
+ "commands",
1632
+ "personas",
1633
+ "skills",
1634
+ "tools"
1635
+ ],
1636
+ "breaking": true,
1637
+ "manual": [
1638
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1639
+ ]
1640
+ },
1641
+ "0.6.1": {
1642
+ "version": "0.7.0",
1643
+ "date": "2026-04-13",
1644
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1645
+ "regenerate": [
1646
+ "workflows",
1647
+ "commands",
1648
+ "personas",
1649
+ "skills",
1650
+ "tools"
1651
+ ],
1652
+ "breaking": true,
1653
+ "manual": [
1654
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1655
+ ]
1656
+ },
1657
+ "0.6.0": {
1658
+ "version": "0.7.0",
1659
+ "date": "2026-04-13",
1660
+ "notes": "0.6.x \u2192 0.7.0 \u2014 see 0.6.13 entry.",
1661
+ "regenerate": [
1662
+ "workflows",
1663
+ "commands",
1664
+ "personas",
1665
+ "skills",
1666
+ "tools"
1667
+ ],
1668
+ "breaking": true,
1669
+ "manual": [
1670
+ "Check .forge/config.json for custom model overrides in config.pipelines. If present, migrate to the requirements block format in the corresponding workflow artifacts."
1671
+ ]
1672
+ },
1673
+ "0.5.9": {
1674
+ "version": "0.6.0",
1675
+ "date": "2026-04-09",
1676
+ "notes": "0.5.x \u2192 0.6.0 \u2014 Feature tier: Feature entity (feature.schema.json, .forge/store/features/), feature_id in sprint/task schemas, collate generates features/ registry, health reports per-feature coverage, docs/concepts/ added. Full 0.5.x cycle: fix-bug as true orchestrator, validate-store null handling, collate FORGE_ROOT fix, update UX improvements, canary source detection.",
1677
+ "regenerate": [
1678
+ "workflows",
1679
+ "commands",
1680
+ "tools"
1681
+ ],
1682
+ "breaking": false,
1683
+ "manual": []
1684
+ },
1685
+ "0.5.8": {
1686
+ "version": "0.6.0",
1687
+ "date": "2026-04-09",
1688
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1689
+ "regenerate": [
1690
+ "workflows",
1691
+ "commands",
1692
+ "tools"
1693
+ ],
1694
+ "breaking": false,
1695
+ "manual": []
1696
+ },
1697
+ "0.5.7": {
1698
+ "version": "0.6.0",
1699
+ "date": "2026-04-09",
1700
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1701
+ "regenerate": [
1702
+ "workflows",
1703
+ "commands",
1704
+ "tools"
1705
+ ],
1706
+ "breaking": false,
1707
+ "manual": []
1708
+ },
1709
+ "0.5.6": {
1710
+ "version": "0.6.0",
1711
+ "date": "2026-04-09",
1712
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1713
+ "regenerate": [
1714
+ "workflows",
1715
+ "commands",
1716
+ "tools"
1717
+ ],
1718
+ "breaking": false,
1719
+ "manual": []
1720
+ },
1721
+ "0.5.5": {
1722
+ "version": "0.6.0",
1723
+ "date": "2026-04-09",
1724
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1725
+ "regenerate": [
1726
+ "workflows",
1727
+ "commands",
1728
+ "tools"
1729
+ ],
1730
+ "breaking": false,
1731
+ "manual": []
1732
+ },
1733
+ "0.5.4": {
1734
+ "version": "0.6.0",
1735
+ "date": "2026-04-09",
1736
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1737
+ "regenerate": [
1738
+ "workflows",
1739
+ "commands",
1740
+ "tools"
1741
+ ],
1742
+ "breaking": false,
1743
+ "manual": []
1744
+ },
1745
+ "0.5.3": {
1746
+ "version": "0.6.0",
1747
+ "date": "2026-04-09",
1748
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1749
+ "regenerate": [
1750
+ "workflows",
1751
+ "commands",
1752
+ "tools"
1753
+ ],
1754
+ "breaking": false,
1755
+ "manual": []
1756
+ },
1757
+ "0.5.2": {
1758
+ "version": "0.6.0",
1759
+ "date": "2026-04-09",
1760
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1761
+ "regenerate": [
1762
+ "workflows",
1763
+ "commands",
1764
+ "tools"
1765
+ ],
1766
+ "breaking": false,
1767
+ "manual": []
1768
+ },
1769
+ "0.5.1": {
1770
+ "version": "0.6.0",
1771
+ "date": "2026-04-09",
1772
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1773
+ "regenerate": [
1774
+ "workflows",
1775
+ "commands",
1776
+ "tools"
1777
+ ],
1778
+ "breaking": false,
1779
+ "manual": []
1780
+ },
1781
+ "0.5.0": {
1782
+ "version": "0.6.0",
1783
+ "date": "2026-04-09",
1784
+ "notes": "0.5.x \u2192 0.6.0 \u2014 see 0.5.9 entry.",
1785
+ "regenerate": [
1786
+ "workflows",
1787
+ "commands",
1788
+ "tools"
1789
+ ],
1790
+ "breaking": false,
1791
+ "manual": []
1792
+ },
1793
+ "0.4.1": {
1794
+ "version": "0.5.0",
1795
+ "date": "2026-04-06",
1796
+ "notes": "0.4.x \u2192 0.5.0 \u2014 Japanese-style marks (\u3007\u25b3\u00d7\ud83c\udf31\ud83c\udf3f\u26f0\ufe0f) across all output, agent personas with symbols, command renames (plan/review-plan/review-code), generation-manifest tool, engineering/tools/ eliminated (all tools from $FORGE_ROOT/tools/), paths.forgeRoot and paths.customCommands added to config schema.",
1797
+ "regenerate": [
1798
+ "workflows",
1799
+ "commands"
1800
+ ],
1801
+ "breaking": false,
1802
+ "manual": []
1803
+ },
1804
+ "0.4.0": {
1805
+ "version": "0.5.0",
1806
+ "date": "2026-04-06",
1807
+ "notes": "0.4.x \u2192 0.5.0 \u2014 see 0.4.1 entry. If upgrading from 0.4.0 directly, first run: node engineering/tools/manage-config.cjs pipeline backfill-models",
1808
+ "regenerate": [
1809
+ "workflows",
1810
+ "commands"
1811
+ ],
1812
+ "breaking": false,
1813
+ "manual": []
1814
+ },
1815
+ "0.3.15": {
1816
+ "version": "0.4.0",
1817
+ "date": "2026-04-05",
1818
+ "notes": "0.3.x \u2192 0.4.0 \u25b3 Breaking \u2014 Pre-built CJS tools shipped (collate, seed-store, validate-store, manage-config); revision loop fix; context accumulation fix (BUG-001); error triage hook; graceful error handling. Full 0.3.x cycle included.",
1819
+ "regenerate": [
1820
+ "workflows",
1821
+ "commands",
1822
+ "tools"
1823
+ ],
1824
+ "breaking": true,
1825
+ "manual": [
1826
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1827
+ ]
1828
+ },
1829
+ "0.3.14": {
1830
+ "version": "0.4.0",
1831
+ "date": "2026-04-05",
1832
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1833
+ "regenerate": [
1834
+ "workflows",
1835
+ "commands",
1836
+ "tools"
1837
+ ],
1838
+ "breaking": true,
1839
+ "manual": [
1840
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1841
+ ]
1842
+ },
1843
+ "0.3.13": {
1844
+ "version": "0.4.0",
1845
+ "date": "2026-04-05",
1846
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1847
+ "regenerate": [
1848
+ "workflows",
1849
+ "commands",
1850
+ "tools"
1851
+ ],
1852
+ "breaking": true,
1853
+ "manual": [
1854
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1855
+ ]
1856
+ },
1857
+ "0.3.12": {
1858
+ "version": "0.4.0",
1859
+ "date": "2026-04-05",
1860
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1861
+ "regenerate": [
1862
+ "workflows",
1863
+ "commands",
1864
+ "tools"
1865
+ ],
1866
+ "breaking": true,
1867
+ "manual": [
1868
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1869
+ ]
1870
+ },
1871
+ "0.3.11": {
1872
+ "version": "0.4.0",
1873
+ "date": "2026-04-05",
1874
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1875
+ "regenerate": [
1876
+ "workflows",
1877
+ "commands",
1878
+ "tools"
1879
+ ],
1880
+ "breaking": true,
1881
+ "manual": [
1882
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1883
+ ]
1884
+ },
1885
+ "0.3.10": {
1886
+ "version": "0.4.0",
1887
+ "date": "2026-04-05",
1888
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1889
+ "regenerate": [
1890
+ "workflows",
1891
+ "commands",
1892
+ "tools"
1893
+ ],
1894
+ "breaking": true,
1895
+ "manual": [
1896
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1897
+ ]
1898
+ },
1899
+ "0.3.9": {
1900
+ "version": "0.4.0",
1901
+ "date": "2026-04-05",
1902
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1903
+ "regenerate": [
1904
+ "workflows",
1905
+ "commands",
1906
+ "tools"
1907
+ ],
1908
+ "breaking": true,
1909
+ "manual": [
1910
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1911
+ ]
1912
+ },
1913
+ "0.3.8": {
1914
+ "version": "0.4.0",
1915
+ "date": "2026-04-05",
1916
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1917
+ "regenerate": [
1918
+ "workflows",
1919
+ "commands",
1920
+ "tools"
1921
+ ],
1922
+ "breaking": true,
1923
+ "manual": [
1924
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1925
+ ]
1926
+ },
1927
+ "0.3.7": {
1928
+ "version": "0.4.0",
1929
+ "date": "2026-04-05",
1930
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1931
+ "regenerate": [
1932
+ "workflows",
1933
+ "commands",
1934
+ "tools"
1935
+ ],
1936
+ "breaking": true,
1937
+ "manual": [
1938
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1939
+ ]
1940
+ },
1941
+ "0.3.6": {
1942
+ "version": "0.4.0",
1943
+ "date": "2026-04-05",
1944
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1945
+ "regenerate": [
1946
+ "workflows",
1947
+ "commands",
1948
+ "tools"
1949
+ ],
1950
+ "breaking": true,
1951
+ "manual": [
1952
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1953
+ ]
1954
+ },
1955
+ "0.3.5": {
1956
+ "version": "0.4.0",
1957
+ "date": "2026-04-05",
1958
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1959
+ "regenerate": [
1960
+ "workflows",
1961
+ "commands",
1962
+ "tools"
1963
+ ],
1964
+ "breaking": true,
1965
+ "manual": [
1966
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1967
+ ]
1968
+ },
1969
+ "0.3.4": {
1970
+ "version": "0.4.0",
1971
+ "date": "2026-04-05",
1972
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1973
+ "regenerate": [
1974
+ "workflows",
1975
+ "commands",
1976
+ "tools"
1977
+ ],
1978
+ "breaking": true,
1979
+ "manual": [
1980
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1981
+ ]
1982
+ },
1983
+ "0.3.3": {
1984
+ "version": "0.4.0",
1985
+ "date": "2026-04-05",
1986
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
1987
+ "regenerate": [
1988
+ "workflows",
1989
+ "commands",
1990
+ "tools"
1991
+ ],
1992
+ "breaking": true,
1993
+ "manual": [
1994
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
1995
+ ]
1996
+ },
1997
+ "0.3.2": {
1998
+ "version": "0.4.0",
1999
+ "date": "2026-04-05",
2000
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2001
+ "regenerate": [
2002
+ "workflows",
2003
+ "commands",
2004
+ "tools"
2005
+ ],
2006
+ "breaking": true,
2007
+ "manual": [
2008
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
2009
+ ]
2010
+ },
2011
+ "0.3.1": {
2012
+ "version": "0.4.0",
2013
+ "date": "2026-04-05",
2014
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2015
+ "regenerate": [
2016
+ "workflows",
2017
+ "commands",
2018
+ "tools"
2019
+ ],
2020
+ "breaking": true,
2021
+ "manual": [
2022
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
2023
+ ]
2024
+ },
2025
+ "0.3.0": {
2026
+ "version": "0.4.0",
2027
+ "date": "2026-04-05",
2028
+ "notes": "0.3.x \u2192 0.4.0 \u2014 see 0.3.15 entry.",
2029
+ "regenerate": [
2030
+ "workflows",
2031
+ "commands",
2032
+ "tools"
2033
+ ],
2034
+ "breaking": true,
2035
+ "manual": [
2036
+ "Backfill explicit model fields on pipeline phases: node engineering/tools/manage-config.cjs pipeline backfill-models"
2037
+ ]
2038
+ },
2039
+ "0.2.0": {
2040
+ "version": "0.3.0",
2041
+ "date": "2026-04-02",
2042
+ "notes": "Pluggable pipeline routing, /forge:add-pipeline command, manage-config tool spec, extended /forge:regenerate with tools and knowledge-base categories.",
2043
+ "regenerate": [
2044
+ "workflows"
2045
+ ],
2046
+ "breaking": false,
2047
+ "manual": []
2048
+ }
2049
+ }