@entelligentsia/forgecli 0.19.0 → 0.20.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/dist/bin/config.js +9 -9
  3. package/dist/bin/config.js.map +1 -1
  4. package/dist/bin/forge.js +3 -3
  5. package/dist/bin/forge.js.map +1 -1
  6. package/dist/bin/update-cli.js +2 -1
  7. package/dist/bin/update-cli.js.map +1 -1
  8. package/dist/extensions/forgecli/add-pipeline.js.map +1 -1
  9. package/dist/extensions/forgecli/add-task.js.map +1 -1
  10. package/dist/extensions/forgecli/approve.d.ts +2 -2
  11. package/dist/extensions/forgecli/approve.js +2 -2
  12. package/dist/extensions/forgecli/approve.js.map +1 -1
  13. package/dist/extensions/forgecli/ask-user-tool.js.map +1 -1
  14. package/dist/extensions/forgecli/audience-gate.js.map +1 -1
  15. package/dist/extensions/forgecli/calibrate.d.ts +1 -1
  16. package/dist/extensions/forgecli/calibrate.js +8 -10
  17. package/dist/extensions/forgecli/calibrate.js.map +1 -1
  18. package/dist/extensions/forgecli/collate.d.ts +2 -2
  19. package/dist/extensions/forgecli/collate.js +2 -2
  20. package/dist/extensions/forgecli/collate.js.map +1 -1
  21. package/dist/extensions/forgecli/commit.d.ts +2 -2
  22. package/dist/extensions/forgecli/commit.js +2 -2
  23. package/dist/extensions/forgecli/commit.js.map +1 -1
  24. package/dist/extensions/forgecli/config-command.js.map +1 -1
  25. package/dist/extensions/forgecli/config-layer.js +4 -2
  26. package/dist/extensions/forgecli/config-layer.js.map +1 -1
  27. package/dist/extensions/forgecli/config-tui/component.d.ts +1 -1
  28. package/dist/extensions/forgecli/config-tui/component.js +25 -21
  29. package/dist/extensions/forgecli/config-tui/component.js.map +1 -1
  30. package/dist/extensions/forgecli/config-tui/handler.js +2 -6
  31. package/dist/extensions/forgecli/config-tui/handler.js.map +1 -1
  32. package/dist/extensions/forgecli/config-tui/keys.js.map +1 -1
  33. package/dist/extensions/forgecli/config-tui/plugin-config-reader.js.map +1 -1
  34. package/dist/extensions/forgecli/config-tui/screens/advanced-menu.d.ts +2 -2
  35. package/dist/extensions/forgecli/config-tui/screens/advanced-menu.js +10 -8
  36. package/dist/extensions/forgecli/config-tui/screens/advanced-menu.js.map +1 -1
  37. package/dist/extensions/forgecli/config-tui/screens/confirm-quit.d.ts +2 -2
  38. package/dist/extensions/forgecli/config-tui/screens/confirm-quit.js +2 -5
  39. package/dist/extensions/forgecli/config-tui/screens/confirm-quit.js.map +1 -1
  40. package/dist/extensions/forgecli/config-tui/screens/override-editor.d.ts +2 -2
  41. package/dist/extensions/forgecli/config-tui/screens/override-editor.js +15 -11
  42. package/dist/extensions/forgecli/config-tui/screens/override-editor.js.map +1 -1
  43. package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.d.ts +2 -2
  44. package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js +15 -11
  45. package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js.map +1 -1
  46. package/dist/extensions/forgecli/config-tui/screens/overrides-list.d.ts +2 -2
  47. package/dist/extensions/forgecli/config-tui/screens/overrides-list.js +7 -4
  48. package/dist/extensions/forgecli/config-tui/screens/overrides-list.js.map +1 -1
  49. package/dist/extensions/forgecli/config-tui/screens/persona-editor.d.ts +2 -2
  50. package/dist/extensions/forgecli/config-tui/screens/persona-editor.js +6 -12
  51. package/dist/extensions/forgecli/config-tui/screens/persona-editor.js.map +1 -1
  52. package/dist/extensions/forgecli/config-tui/screens/persona-picker.d.ts +2 -2
  53. package/dist/extensions/forgecli/config-tui/screens/persona-picker.js +3 -6
  54. package/dist/extensions/forgecli/config-tui/screens/persona-picker.js.map +1 -1
  55. package/dist/extensions/forgecli/config-tui/screens/personas-list.d.ts +2 -2
  56. package/dist/extensions/forgecli/config-tui/screens/personas-list.js +2 -2
  57. package/dist/extensions/forgecli/config-tui/screens/personas-list.js.map +1 -1
  58. package/dist/extensions/forgecli/config-tui/screens/shared.d.ts +1 -1
  59. package/dist/extensions/forgecli/config-tui/screens/shared.js +4 -5
  60. package/dist/extensions/forgecli/config-tui/screens/shared.js.map +1 -1
  61. package/dist/extensions/forgecli/config-tui/screens/show-resolved.d.ts +2 -2
  62. package/dist/extensions/forgecli/config-tui/screens/show-resolved.js +9 -11
  63. package/dist/extensions/forgecli/config-tui/screens/show-resolved.js.map +1 -1
  64. package/dist/extensions/forgecli/config-tui/screens/tier-menu.d.ts +2 -2
  65. package/dist/extensions/forgecli/config-tui/screens/tier-menu.js +2 -2
  66. package/dist/extensions/forgecli/config-tui/screens/tier-menu.js.map +1 -1
  67. package/dist/extensions/forgecli/config-tui/screens/tier-picker.d.ts +2 -2
  68. package/dist/extensions/forgecli/config-tui/screens/tier-picker.js +12 -3
  69. package/dist/extensions/forgecli/config-tui/screens/tier-picker.js.map +1 -1
  70. package/dist/extensions/forgecli/config-tui/screens/types.d.ts +1 -1
  71. package/dist/extensions/forgecli/config-tui/screens.d.ts +10 -10
  72. package/dist/extensions/forgecli/config-tui/screens.js +16 -16
  73. package/dist/extensions/forgecli/config-tui/screens.js.map +1 -1
  74. package/dist/extensions/forgecli/config-tui/state/buffer.d.ts +2 -2
  75. package/dist/extensions/forgecli/config-tui/state/buffer.js +1 -2
  76. package/dist/extensions/forgecli/config-tui/state/buffer.js.map +1 -1
  77. package/dist/extensions/forgecli/config-tui/state/constants.js.map +1 -1
  78. package/dist/extensions/forgecli/config-tui/state/index.d.ts +3 -3
  79. package/dist/extensions/forgecli/config-tui/state/index.js +2 -2
  80. package/dist/extensions/forgecli/config-tui/state/index.js.map +1 -1
  81. package/dist/extensions/forgecli/config-tui/state/init.js.map +1 -1
  82. package/dist/extensions/forgecli/config-tui/state/reducer.js +2 -4
  83. package/dist/extensions/forgecli/config-tui/state/reducer.js.map +1 -1
  84. package/dist/extensions/forgecli/config-tui/state/selectors.d.ts +1 -1
  85. package/dist/extensions/forgecli/config-tui/state/selectors.js +7 -6
  86. package/dist/extensions/forgecli/config-tui/state/selectors.js.map +1 -1
  87. package/dist/extensions/forgecli/config-tui/state.d.ts +3 -3
  88. package/dist/extensions/forgecli/config-tui/state.js +2 -2
  89. package/dist/extensions/forgecli/config-tui/state.js.map +1 -1
  90. package/dist/extensions/forgecli/config-tui/theme.js +1 -1
  91. package/dist/extensions/forgecli/config-tui/theme.js.map +1 -1
  92. package/dist/extensions/forgecli/config-tui/tier-meta.js.map +1 -1
  93. package/dist/extensions/forgecli/config-writer.js +4 -2
  94. package/dist/extensions/forgecli/config-writer.js.map +1 -1
  95. package/dist/extensions/forgecli/enhance.d.ts +2 -2
  96. package/dist/extensions/forgecli/enhance.js +3 -3
  97. package/dist/extensions/forgecli/enhance.js.map +1 -1
  98. package/dist/extensions/forgecli/fix-bug.d.ts +1 -1
  99. package/dist/extensions/forgecli/fix-bug.js +148 -58
  100. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  101. package/dist/extensions/forgecli/forge-artifact-tool.d.ts +8 -1
  102. package/dist/extensions/forgecli/forge-artifact-tool.js +85 -15
  103. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
  104. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  105. package/dist/extensions/forgecli/forge-header.d.ts +1 -1
  106. package/dist/extensions/forgecli/forge-header.js +1 -1
  107. package/dist/extensions/forgecli/forge-header.js.map +1 -1
  108. package/dist/extensions/forgecli/forge-init/phase-descriptors.js +14 -5
  109. package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +1 -1
  110. package/dist/extensions/forgecli/forge-init/phase4-register.js +20 -1
  111. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
  112. package/dist/extensions/forgecli/forge-init.js +5 -7
  113. package/dist/extensions/forgecli/forge-init.js.map +1 -1
  114. package/dist/extensions/forgecli/forge-subagent.d.ts +1 -1
  115. package/dist/extensions/forgecli/forge-subagent.js +4 -2
  116. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  117. package/dist/extensions/forgecli/forge-tools.js +10 -4
  118. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  119. package/dist/extensions/forgecli/forge-update-command.d.ts +32 -11
  120. package/dist/extensions/forgecli/forge-update-command.js +207 -155
  121. package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
  122. package/dist/extensions/forgecli/friction-emit.js +3 -5
  123. package/dist/extensions/forgecli/friction-emit.js.map +1 -1
  124. package/dist/extensions/forgecli/health-check.js +10 -6
  125. package/dist/extensions/forgecli/health-check.js.map +1 -1
  126. package/dist/extensions/forgecli/hook-dispatcher.js +2 -2
  127. package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
  128. package/dist/extensions/forgecli/hooks/check-update.js.map +1 -1
  129. package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -1
  130. package/dist/extensions/forgecli/hooks/post-init-hook.js +1 -1
  131. package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
  132. package/dist/extensions/forgecli/hooks/post-sprint-hook.js +1 -1
  133. package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
  134. package/dist/extensions/forgecli/hooks/write-guard.js +5 -3
  135. package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -1
  136. package/dist/extensions/forgecli/implement.d.ts +2 -2
  137. package/dist/extensions/forgecli/implement.js +2 -2
  138. package/dist/extensions/forgecli/implement.js.map +1 -1
  139. package/dist/extensions/forgecli/index.js +47 -41
  140. package/dist/extensions/forgecli/index.js.map +1 -1
  141. package/dist/extensions/forgecli/input-router.js +4 -1
  142. package/dist/extensions/forgecli/input-router.js.map +1 -1
  143. package/dist/extensions/forgecli/lib/catalog-helpers.js +2 -1
  144. package/dist/extensions/forgecli/lib/catalog-helpers.js.map +1 -1
  145. package/dist/extensions/forgecli/lib/catalog-loader.js.map +1 -1
  146. package/dist/extensions/forgecli/lib/catalog-types.js +1 -6
  147. package/dist/extensions/forgecli/lib/catalog-types.js.map +1 -1
  148. package/dist/extensions/forgecli/lib/exec-helpers.js +1 -1
  149. package/dist/extensions/forgecli/lib/exec-helpers.js.map +1 -1
  150. package/dist/extensions/forgecli/lib/forge-config.js.map +1 -1
  151. package/dist/extensions/forgecli/lib/orchestrator-preflight.js.map +1 -1
  152. package/dist/extensions/forgecli/lib/parsers.js.map +1 -1
  153. package/dist/extensions/forgecli/lib/spawn-store-cli.js +17 -7
  154. package/dist/extensions/forgecli/lib/spawn-store-cli.js.map +1 -1
  155. package/dist/extensions/forgecli/materialize.js.map +1 -1
  156. package/dist/extensions/forgecli/migrate.js +1 -1
  157. package/dist/extensions/forgecli/migrate.js.map +1 -1
  158. package/dist/extensions/forgecli/migration-engine.js +3 -6
  159. package/dist/extensions/forgecli/migration-engine.js.map +1 -1
  160. package/dist/extensions/forgecli/model-resolver.js.map +1 -1
  161. package/dist/extensions/forgecli/model-validator.js.map +1 -1
  162. package/dist/extensions/forgecli/parsers/persona-skill-loader.js +1 -1
  163. package/dist/extensions/forgecli/parsers/workflow-loader.js +2 -6
  164. package/dist/extensions/forgecli/parsers/workflow-loader.js.map +1 -1
  165. package/dist/extensions/forgecli/paths/migrator.js +2 -7
  166. package/dist/extensions/forgecli/paths/migrator.js.map +1 -1
  167. package/dist/extensions/forgecli/plan.d.ts +2 -2
  168. package/dist/extensions/forgecli/plan.js +2 -2
  169. package/dist/extensions/forgecli/plan.js.map +1 -1
  170. package/dist/extensions/forgecli/quiz-agent.js.map +1 -1
  171. package/dist/extensions/forgecli/read-command.js +1 -1
  172. package/dist/extensions/forgecli/read-command.js.map +1 -1
  173. package/dist/extensions/forgecli/regenerate.js +1 -3
  174. package/dist/extensions/forgecli/regenerate.js.map +1 -1
  175. package/dist/extensions/forgecli/remove-command.js.map +1 -1
  176. package/dist/extensions/forgecli/report-bug.js +2 -2
  177. package/dist/extensions/forgecli/report-bug.js.map +1 -1
  178. package/dist/extensions/forgecli/retrospective.js +2 -2
  179. package/dist/extensions/forgecli/retrospective.js.map +1 -1
  180. package/dist/extensions/forgecli/review-code.d.ts +2 -2
  181. package/dist/extensions/forgecli/review-code.js +2 -2
  182. package/dist/extensions/forgecli/review-code.js.map +1 -1
  183. package/dist/extensions/forgecli/review-plan.d.ts +2 -2
  184. package/dist/extensions/forgecli/review-plan.js +2 -2
  185. package/dist/extensions/forgecli/review-plan.js.map +1 -1
  186. package/dist/extensions/forgecli/review-server.js +3 -5
  187. package/dist/extensions/forgecli/review-server.js.map +1 -1
  188. package/dist/extensions/forgecli/run-sprint.d.ts +1 -1
  189. package/dist/extensions/forgecli/run-sprint.js +27 -21
  190. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  191. package/dist/extensions/forgecli/run-task.js +102 -42
  192. package/dist/extensions/forgecli/run-task.js.map +1 -1
  193. package/dist/extensions/forgecli/session-registry.js.map +1 -1
  194. package/dist/extensions/forgecli/skill-curator-subagent.js +4 -8
  195. package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -1
  196. package/dist/extensions/forgecli/skill-retriever.js +1 -1
  197. package/dist/extensions/forgecli/skill-retriever.js.map +1 -1
  198. package/dist/extensions/forgecli/skill-usage-tracker.js +1 -1
  199. package/dist/extensions/forgecli/skill-usage-tracker.js.map +1 -1
  200. package/dist/extensions/forgecli/status-command.js.map +1 -1
  201. package/dist/extensions/forgecli/store-error-remediation.js +16 -8
  202. package/dist/extensions/forgecli/store-error-remediation.js.map +1 -1
  203. package/dist/extensions/forgecli/store-query.js.map +1 -1
  204. package/dist/extensions/forgecli/store-repair.js.map +1 -1
  205. package/dist/extensions/forgecli/store-resolver.js +1 -1
  206. package/dist/extensions/forgecli/store-resolver.js.map +1 -1
  207. package/dist/extensions/forgecli/store-validator.js +1 -1
  208. package/dist/extensions/forgecli/store-validator.js.map +1 -1
  209. package/dist/extensions/forgecli/subagent/agents.js +1 -1
  210. package/dist/extensions/forgecli/subagent/agents.js.map +1 -1
  211. package/dist/extensions/forgecli/subagent/index.js +1 -1
  212. package/dist/extensions/forgecli/subagent/index.js.map +1 -1
  213. package/dist/extensions/forgecli/test-orchestrate.js +1 -1
  214. package/dist/extensions/forgecli/test-orchestrate.js.map +1 -1
  215. package/dist/extensions/forgecli/thread-switcher.js +8 -18
  216. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  217. package/dist/extensions/forgecli/transition-guard.js +1 -1
  218. package/dist/extensions/forgecli/transition-guard.js.map +1 -1
  219. package/dist/extensions/forgecli/update-tools.js +1 -2
  220. package/dist/extensions/forgecli/update-tools.js.map +1 -1
  221. package/dist/extensions/forgecli/validate.d.ts +2 -2
  222. package/dist/extensions/forgecli/validate.js +2 -2
  223. package/dist/extensions/forgecli/validate.js.map +1 -1
  224. package/dist/extensions/forgecli/viewport-events.js +2 -2
  225. package/dist/extensions/forgecli/viewport-events.js.map +1 -1
  226. package/dist/extensions/forgecli/wf-engine/engine.d.ts +1 -1
  227. package/dist/extensions/forgecli/wf-engine/engine.js +51 -31
  228. package/dist/extensions/forgecli/wf-engine/engine.js.map +1 -1
  229. package/dist/extensions/forgecli/wf-engine/event-parser.js.map +1 -1
  230. package/dist/extensions/forgecli/wf-engine/id-gen.js +4 -1
  231. package/dist/extensions/forgecli/wf-engine/id-gen.js.map +1 -1
  232. package/dist/extensions/forgecli/wf-engine/loader.js +7 -7
  233. package/dist/extensions/forgecli/wf-engine/loader.js.map +1 -1
  234. package/dist/extensions/forgecli/wf-engine/predicate.js +14 -7
  235. package/dist/extensions/forgecli/wf-engine/predicate.js.map +1 -1
  236. package/dist/extensions/forgecli/wf-engine/prompt-compiler.js.map +1 -1
  237. package/dist/extensions/forgecli/wf-engine/register.js +1 -1
  238. package/dist/extensions/forgecli/wf-engine/register.js.map +1 -1
  239. package/dist/extensions/forgecli/wf-engine/remit-check.js +3 -3
  240. package/dist/extensions/forgecli/wf-engine/remit-check.js.map +1 -1
  241. package/dist/extensions/forgecli/wf-engine/state-store.js +7 -3
  242. package/dist/extensions/forgecli/wf-engine/state-store.js.map +1 -1
  243. package/dist/extensions/forgecli/wf-engine/worker.js +3 -3
  244. package/dist/extensions/forgecli/wf-engine/worker.js.map +1 -1
  245. package/dist/extensions/forgecli/whats-new-widget.js +8 -6
  246. package/dist/extensions/forgecli/whats-new-widget.js.map +1 -1
  247. package/dist/extensions/forgecli/whats-new.js +1 -2
  248. package/dist/extensions/forgecli/whats-new.js.map +1 -1
  249. package/dist/forge-payload/commands/update.md +23 -1
  250. package/dist/forge-payload/schemas/_defs/phaseSummary.schema.json +18 -0
  251. package/dist/forge-payload/schemas/bug.schema.json +40 -0
  252. package/dist/forge-payload/schemas/collation-state.schema.json +16 -0
  253. package/dist/forge-payload/schemas/config.schema.json +215 -0
  254. package/dist/forge-payload/schemas/enum-catalog.json +71 -0
  255. package/dist/forge-payload/schemas/event-sidecar.schema.json +22 -0
  256. package/dist/forge-payload/schemas/event.schema.json +184 -0
  257. package/dist/forge-payload/schemas/feature.schema.json +22 -0
  258. package/dist/forge-payload/schemas/progress-entry.schema.json +16 -0
  259. package/dist/forge-payload/schemas/project-context.schema.json +167 -0
  260. package/dist/forge-payload/schemas/project-overlay.schema.json +25 -0
  261. package/dist/forge-payload/schemas/proposal.schema.json +40 -0
  262. package/dist/forge-payload/schemas/sprint.schema.json +27 -0
  263. package/dist/forge-payload/schemas/structure-versions.schema.json +57 -0
  264. package/dist/forge-payload/schemas/task.schema.json +43 -0
  265. package/dist/forge-payload/schemas/transitions/bug.json +31 -0
  266. package/dist/forge-payload/schemas/transitions/sprint.json +46 -0
  267. package/dist/forge-payload/schemas/transitions/task.json +109 -0
  268. package/dist/forge-payload/tools/manage-config.cjs +120 -2
  269. package/package.json +3 -3
@@ -0,0 +1,167 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "project-context.schema.json",
4
+ "title": "Project Context",
5
+ "description": "Machine-readable bridge file produced by the Discover phase (Phase 2) of the Forge init flow. Governs project-context.json written by the Phase 2 Discover agent and read by the T03 substitution tool. Distinct from project-overlay.schema.json, which is a per-spawn runtime context overlay; this schema captures persistent project metadata discovered at init/migrate time.",
6
+ "type": "object",
7
+ "required": ["project"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "project": {
11
+ "type": "object",
12
+ "required": ["name", "prefix"],
13
+ "additionalProperties": false,
14
+ "properties": {
15
+ "name": { "type": "string", "description": "Human-readable project name" },
16
+ "prefix": { "type": "string", "description": "Short identifier prefix (e.g. MYAPP)" },
17
+ "description": { "type": "string", "description": "Brief project description", "default": "" },
18
+ "stack": {
19
+ "type": "array",
20
+ "items": { "type": "string" },
21
+ "description": "Technology stack in display order (e.g. [\"Express 4.22\", \"MongoDB 7\"])",
22
+ "default": []
23
+ },
24
+ "commands": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "description": "Primary project lifecycle commands",
28
+ "properties": {
29
+ "test": { "type": "string", "default": "" },
30
+ "build": { "type": "string", "default": "" },
31
+ "deploy": { "type": "string", "default": "" }
32
+ }
33
+ }
34
+ }
35
+ },
36
+ "architecture": {
37
+ "type": "object",
38
+ "additionalProperties": false,
39
+ "properties": {
40
+ "frameworks": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "x-placeholder": "STACK_SUMMARY",
44
+ "description": "Primary frameworks by tier. Rendered as 'backend + frontend + database' string by T03 substitution tool.",
45
+ "properties": {
46
+ "backend": { "type": "string", "default": "" },
47
+ "frontend": { "type": "string", "default": "" },
48
+ "database": { "type": "string", "default": "" }
49
+ }
50
+ },
51
+ "dataAccess": {
52
+ "type": "string",
53
+ "description": "Data access pattern (e.g. 'Mongoose ODM')",
54
+ "default": ""
55
+ },
56
+ "deployment": {
57
+ "type": "string",
58
+ "description": "Deployment target summary (e.g. 'AWS ECS')",
59
+ "default": ""
60
+ },
61
+ "keyDirectories": {
62
+ "type": "array",
63
+ "items": { "type": "string" },
64
+ "x-placeholder": "KEY_DIRECTORIES",
65
+ "description": "Key source directories joined to 'routes/, admin-app/, ...' by T03.",
66
+ "default": []
67
+ }
68
+ }
69
+ },
70
+ "entities": {
71
+ "type": "array",
72
+ "items": { "type": "string" },
73
+ "description": "Domain entity names (e.g. [\"User\", \"Order\", \"Product\"])",
74
+ "default": []
75
+ },
76
+ "conventions": {
77
+ "type": "object",
78
+ "additionalProperties": false,
79
+ "properties": {
80
+ "branching": {
81
+ "type": "string",
82
+ "x-placeholder": "BRANCHING_CONVENTION",
83
+ "description": "Branching strategy description (e.g. 'feature/TASK-ID-slug'). Direct string substitution by T03.",
84
+ "default": ""
85
+ },
86
+ "taskIdFormat": {
87
+ "type": "string",
88
+ "description": "Task ID format pattern (e.g. 'PROJ-###')",
89
+ "default": ""
90
+ }
91
+ }
92
+ },
93
+ "impactCategories": {
94
+ "type": "array",
95
+ "items": { "type": "string" },
96
+ "x-placeholder": "IMPACT_CATEGORIES",
97
+ "description": "Impact/risk category labels joined to comma-separated string by T03.",
98
+ "default": []
99
+ },
100
+ "technicalDebt": {
101
+ "type": "array",
102
+ "items": { "type": "string" },
103
+ "x-placeholder": "TECHNICAL_DEBT",
104
+ "description": "Known technical debt items joined to comma-separated string by T03.",
105
+ "default": []
106
+ },
107
+ "deployment": {
108
+ "type": "object",
109
+ "additionalProperties": false,
110
+ "properties": {
111
+ "environments": {
112
+ "type": "array",
113
+ "x-placeholder": "DEPLOYMENT_ENVIRONMENTS",
114
+ "description": "Deployment environment definitions rendered as a markdown table by T03.",
115
+ "items": {
116
+ "type": "object",
117
+ "additionalProperties": false,
118
+ "properties": {
119
+ "name": { "type": "string", "default": "" },
120
+ "frontend": { "type": "string", "default": "" },
121
+ "backend": { "type": "string", "default": "" },
122
+ "region": { "type": "string", "default": "" }
123
+ }
124
+ },
125
+ "default": []
126
+ },
127
+ "impactNotes": {
128
+ "type": "string",
129
+ "description": "Freeform deployment impact notes",
130
+ "default": ""
131
+ }
132
+ }
133
+ },
134
+ "verification": {
135
+ "type": "object",
136
+ "x-placeholder": "VERIFICATION_COMMANDS",
137
+ "additionalProperties": false,
138
+ "description": "Full verification command suite. Rendered as 'npm run type-check, npm test, npm run build' by T03.",
139
+ "properties": {
140
+ "typeCheck": { "type": "string", "default": "" },
141
+ "lint": { "type": "string", "default": "" },
142
+ "test": { "type": "string", "default": "" },
143
+ "build": { "type": "string", "default": "" },
144
+ "infraBuild": { "type": "string", "default": "" }
145
+ }
146
+ },
147
+ "skillWiring": {
148
+ "type": "array",
149
+ "x-placeholder": "SKILL_DIRECTIVES",
150
+ "description": "Skill-to-persona wiring. Rendered as 'skill → persona1, persona2' lines by T03. Mirrors config.json skillWiring so T03 has a single source.",
151
+ "items": {
152
+ "type": "object",
153
+ "additionalProperties": false,
154
+ "required": ["skill"],
155
+ "properties": {
156
+ "skill": { "type": "string" },
157
+ "personas": {
158
+ "type": "array",
159
+ "items": { "type": "string" },
160
+ "default": []
161
+ }
162
+ }
163
+ },
164
+ "default": []
165
+ }
166
+ }
167
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "project-overlay.schema.json",
4
+ "title": "Project Overlay",
5
+ "description": "Per-spawn context overlay materialized by the orchestrator. Budget: ≤1kB JSON.",
6
+ "version": "1.0.0",
7
+ "type": "object",
8
+ "required": ["projectPrefix", "storeRoot", "indexSlice"],
9
+ "additionalProperties": false,
10
+ "properties": {
11
+ "version": { "type": "string", "description": "Schema version string. Read by manage-versions.cjs to populate overlayToolVersion at init time.", "default": "1.0.0" },
12
+ "projectPrefix": { "type": "string", "pattern": "^[A-Z][A-Z0-9-]+$" },
13
+ "sprintId": { "type": "string" },
14
+ "sprintDir": { "type": "string" },
15
+ "taskId": { "type": "string" },
16
+ "taskDir": { "type": "string" },
17
+ "taskStatus": { "type": "string" },
18
+ "bugId": { "type": "string" },
19
+ "bugDir": { "type": "string" },
20
+ "storeRoot": { "type": "string" },
21
+ "indexSlice": { "type": "string", "maxLength": 800 },
22
+ "toolCommands": { "type": "object" },
23
+ "lastPhaseSummary": { "type": "object" }
24
+ }
25
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "forge/proposal.schema.json",
4
+ "title": "EnhancementProposal",
5
+ "description": "A single Phase 2 enrichment proposal emitted by /forge:enhance. Each record carries an op classification (insert/update/delete a skill artifact), the target file path, and a diff body. Foundation for the T03 judge, T05 delete detection, T06 compression gate, and T07 queue drain.",
6
+ "type": "object",
7
+ "required": ["op", "target_path", "diff_body"],
8
+ "properties": {
9
+ "proposalId": { "type": "string", "minLength": 1 },
10
+ "op": {
11
+ "type": "string",
12
+ "enum": ["insert_skill", "update_skill", "delete_skill"],
13
+ "description": "Three-op classification: insert a new skill artifact, update an existing one, or delete an existing one."
14
+ },
15
+ "target_path": {
16
+ "type": "string",
17
+ "minLength": 1,
18
+ "description": "Repository-relative path to the artifact being inserted, updated, or deleted (e.g. forge/skills/engineer-skills.md)."
19
+ },
20
+ "diff_body": {
21
+ "type": "string",
22
+ "description": "Unified-diff body or full file body for inserts. For delete_skill this may be empty — the op + target_path is sufficient."
23
+ },
24
+ "rationale": { "type": "string" },
25
+ "sourceFrictionIds": { "type": "array", "items": { "type": "string" } },
26
+ "generated_at": { "type": "string", "format": "date-time" },
27
+ "sprintId": { "type": "string" },
28
+ "recurrence_count": {
29
+ "type": "integer",
30
+ "minimum": 1,
31
+ "description": "FORGE-S24-T04 — count of distinct tasks within the same sprint that emitted a matching (subkind, evidence.skillId) friction event, including the originating task. Always >= 1."
32
+ },
33
+ "recurrence_task_ids": {
34
+ "type": "array",
35
+ "items": { "type": "string" },
36
+ "description": "FORGE-S24-T04 — taskOrder-sorted list of task IDs that contributed to recurrence_count. Empty when the originating friction event cannot be resolved from sourceFrictionIds."
37
+ }
38
+ },
39
+ "additionalProperties": false
40
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "forge/sprint.schema.json",
4
+ "title": "Sprint",
5
+ "type": "object",
6
+ "required": ["sprintId", "title", "status", "taskIds", "createdAt"],
7
+ "properties": {
8
+ "sprintId": { "type": "string" },
9
+ "feature_id": { "type": ["string", "null"] },
10
+ "title": { "type": "string" },
11
+ "description": { "type": "string" },
12
+ "goal": { "type": "string" },
13
+ "status": {
14
+ "type": "string",
15
+ "enum": ["planning", "active", "completed", "retrospective-done", "blocked", "partially-completed", "abandoned"]
16
+ },
17
+ "taskIds": { "type": "array", "items": { "type": "string" } },
18
+ "dependencies": { "type": "object" },
19
+ "executionMode": { "type": "string", "enum": ["sequential", "wave-parallel", "full-parallel"] },
20
+ "createdAt": { "type": "string", "format": "date-time" },
21
+ "completedAt": { "type": "string", "format": "date-time" },
22
+ "path": { "type": "string" },
23
+ "humanEstimates": { "type": "object" },
24
+ "features": { "type": "array", "items": { "type": "string" } }
25
+ },
26
+ "additionalProperties": false
27
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "structure-versions.schema.json",
4
+ "title": "Structure Versions",
5
+ "description": "Tracks versioned structural snapshots of .forge/ elements. Lives at .forge/structure-versions.json (NOT under .forge/store/). Composition model: Working Artifact = base@pluginVersion + snapshot@currentSnapshot + user_enhancements. Snapshot-array invariant: snapshots is ordered ascending by index; currentSnapshot always equals snapshots[snapshots.length - 1].index. Idempotency: manage-versions.cjs init is a no-op if the file already exists.",
6
+ "type": "object",
7
+ "required": ["basePackVersion", "overlayToolVersion", "currentSnapshot", "snapshots"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "basePackVersion": {
11
+ "type": "string",
12
+ "description": "Plugin version at materialization time. Ties the snapshot set to a specific base-pack release."
13
+ },
14
+ "overlayToolVersion": {
15
+ "type": "string",
16
+ "description": "Version of project-overlay.schema.json at materialization time. Independent of structural drift; lets /forge:update detect runtime-contract drift."
17
+ },
18
+ "currentSnapshot": {
19
+ "type": "integer",
20
+ "minimum": 0,
21
+ "description": "Index of the snapshot that produced the current .forge/ working set. Always equals snapshots[snapshots.length - 1].index."
22
+ },
23
+ "snapshots": {
24
+ "type": "array",
25
+ "description": "Ordered list of snapshots, ascending by index. Index 0 is always the base-pack snapshot.",
26
+ "items": {
27
+ "type": "object",
28
+ "required": ["index", "createdAt", "source"],
29
+ "additionalProperties": false,
30
+ "properties": {
31
+ "index": {
32
+ "type": "integer",
33
+ "minimum": 0
34
+ },
35
+ "createdAt": {
36
+ "type": "string",
37
+ "format": "date-time"
38
+ },
39
+ "source": {
40
+ "type": "string",
41
+ "description": "Origin of the snapshot: 'base-pack', 'post-init', 'post-sprint:SPRINT_ID', 'manual'"
42
+ },
43
+ "enhancedElements": {
44
+ "type": "array",
45
+ "items": { "type": "string" },
46
+ "description": "Relative paths of .forge/ elements modified in this snapshot. Empty for snapshot 0.",
47
+ "default": []
48
+ },
49
+ "archivePath": {
50
+ "type": ["string", "null"],
51
+ "description": "Path to the archive directory for this snapshot, e.g. .forge/archive/snap-1/. Null for snapshot 0 (nothing to archive before first enhancement)."
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "forge/task.schema.json",
4
+ "title": "Task",
5
+ "type": "object",
6
+ "required": ["taskId", "sprintId", "title", "status", "path"],
7
+ "properties": {
8
+ "taskId": { "type": "string" },
9
+ "feature_id": { "type": ["string", "null"] },
10
+ "sprintId": { "type": "string" },
11
+ "title": { "type": "string" },
12
+ "description": { "type": "string" },
13
+ "status": {
14
+ "type": "string",
15
+ "enum": [
16
+ "draft", "planned", "plan-approved", "implementing",
17
+ "implemented", "review-approved", "approved", "committed",
18
+ "plan-revision-required", "code-revision-required", "blocked", "escalated", "abandoned"
19
+ ]
20
+ },
21
+ "path": { "type": "string" },
22
+ "estimate": { "type": "string", "enum": ["S", "M", "L", "XL"] },
23
+ "dependencies": { "type": "array", "items": { "type": "string" } },
24
+ "knowledgeUpdates": { "type": "array" },
25
+ "planIterations": { "type": "integer", "minimum": 0 },
26
+ "codeReviewIterations": { "type": "integer", "minimum": 0 },
27
+ "assignedModel": { "type": "string" },
28
+ "pipeline": { "type": "string" },
29
+ "summaries": {
30
+ "type": "object",
31
+ "description": "Terse structured summaries of phase artifacts. Optional; full artifacts on disk remain authoritative.",
32
+ "properties": {
33
+ "plan": { "$ref": "_defs/phaseSummary.schema.json" },
34
+ "review_plan": { "$ref": "_defs/phaseSummary.schema.json" },
35
+ "implementation": { "$ref": "_defs/phaseSummary.schema.json" },
36
+ "code_review": { "$ref": "_defs/phaseSummary.schema.json" },
37
+ "validation": { "$ref": "_defs/phaseSummary.schema.json" }
38
+ },
39
+ "additionalProperties": false
40
+ }
41
+ },
42
+ "additionalProperties": false
43
+ }
@@ -0,0 +1,31 @@
1
+ [
2
+ {
3
+ "from": "reported",
4
+ "to": [
5
+ "triaged",
6
+ "abandoned"
7
+ ]
8
+ },
9
+ {
10
+ "from": "triaged",
11
+ "to": [
12
+ "in-progress",
13
+ "abandoned"
14
+ ]
15
+ },
16
+ {
17
+ "from": "in-progress",
18
+ "to": [
19
+ "fixed",
20
+ "abandoned"
21
+ ]
22
+ },
23
+ {
24
+ "from": "fixed",
25
+ "to": []
26
+ },
27
+ {
28
+ "from": "abandoned",
29
+ "to": []
30
+ }
31
+ ]
@@ -0,0 +1,46 @@
1
+ [
2
+ {
3
+ "from": "planning",
4
+ "to": [
5
+ "active",
6
+ "blocked",
7
+ "abandoned"
8
+ ]
9
+ },
10
+ {
11
+ "from": "active",
12
+ "to": [
13
+ "completed",
14
+ "partially-completed",
15
+ "blocked",
16
+ "abandoned"
17
+ ]
18
+ },
19
+ {
20
+ "from": "completed",
21
+ "to": [
22
+ "retrospective-done"
23
+ ]
24
+ },
25
+ {
26
+ "from": "partially-completed",
27
+ "to": [
28
+ "retrospective-done"
29
+ ]
30
+ },
31
+ {
32
+ "from": "retrospective-done",
33
+ "to": []
34
+ },
35
+ {
36
+ "from": "blocked",
37
+ "to": [
38
+ "active",
39
+ "abandoned"
40
+ ]
41
+ },
42
+ {
43
+ "from": "abandoned",
44
+ "to": []
45
+ }
46
+ ]
@@ -0,0 +1,109 @@
1
+ [
2
+ {
3
+ "from": "draft",
4
+ "to": [
5
+ "planned",
6
+ "blocked",
7
+ "escalated",
8
+ "abandoned"
9
+ ]
10
+ },
11
+ {
12
+ "from": "planned",
13
+ "to": [
14
+ "plan-approved",
15
+ "plan-revision-required",
16
+ "blocked",
17
+ "escalated",
18
+ "abandoned"
19
+ ]
20
+ },
21
+ {
22
+ "from": "plan-approved",
23
+ "to": [
24
+ "implementing",
25
+ "plan-revision-required",
26
+ "blocked",
27
+ "escalated",
28
+ "abandoned"
29
+ ]
30
+ },
31
+ {
32
+ "from": "implementing",
33
+ "to": [
34
+ "implemented",
35
+ "plan-revision-required",
36
+ "code-revision-required",
37
+ "blocked",
38
+ "escalated",
39
+ "abandoned"
40
+ ]
41
+ },
42
+ {
43
+ "from": "implemented",
44
+ "to": [
45
+ "review-approved",
46
+ "plan-revision-required",
47
+ "code-revision-required",
48
+ "blocked",
49
+ "escalated",
50
+ "abandoned"
51
+ ]
52
+ },
53
+ {
54
+ "from": "review-approved",
55
+ "to": [
56
+ "approved",
57
+ "plan-revision-required",
58
+ "code-revision-required",
59
+ "blocked",
60
+ "escalated",
61
+ "abandoned"
62
+ ]
63
+ },
64
+ {
65
+ "from": "approved",
66
+ "to": [
67
+ "committed",
68
+ "plan-revision-required",
69
+ "code-revision-required",
70
+ "blocked",
71
+ "escalated",
72
+ "abandoned"
73
+ ]
74
+ },
75
+ {
76
+ "from": "plan-revision-required",
77
+ "to": [
78
+ "planned",
79
+ "blocked",
80
+ "escalated",
81
+ "abandoned"
82
+ ]
83
+ },
84
+ {
85
+ "from": "code-revision-required",
86
+ "to": [
87
+ "implementing",
88
+ "blocked",
89
+ "escalated",
90
+ "abandoned"
91
+ ]
92
+ },
93
+ {
94
+ "from": "committed",
95
+ "to": []
96
+ },
97
+ {
98
+ "from": "blocked",
99
+ "to": []
100
+ },
101
+ {
102
+ "from": "escalated",
103
+ "to": []
104
+ },
105
+ {
106
+ "from": "abandoned",
107
+ "to": []
108
+ }
109
+ ]