@garygentry/feature-forge 0.3.2 → 0.3.5

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 (389) hide show
  1. package/README.md +1 -1
  2. package/adapters/claude/.feature-forge-bundle.json +1 -1
  3. package/adapters/claude/agents/forge-verifier.md +3 -1
  4. package/adapters/claude/references/decisions/single-writer-threat-model.md +53 -0
  5. package/adapters/claude/references/epic-state-schema.json +50 -0
  6. package/adapters/claude/references/forge-config-schema.json +20 -2
  7. package/adapters/claude/references/forge-decisions-schema.json +33 -0
  8. package/adapters/claude/references/pipeline-state-schema.json +34 -2
  9. package/adapters/claude/references/ralph-loop-contract.md +6 -3
  10. package/adapters/claude/references/shared-conventions.md +15 -4
  11. package/adapters/claude/references/stage-exit-protocol.md +55 -11
  12. package/adapters/claude/scripts/epic-manifest.py +82 -4
  13. package/adapters/claude/scripts/fix-sweep.py +1180 -0
  14. package/adapters/claude/scripts/forge-session.py +1151 -32
  15. package/adapters/claude/skills/forge/SKILL.md +5 -5
  16. package/adapters/claude/skills/forge/references/pipeline-state-schema.json +34 -2
  17. package/adapters/claude/skills/forge/references/shared-conventions.md +15 -4
  18. package/adapters/claude/skills/forge/references/stage-exit-protocol.md +55 -11
  19. package/adapters/claude/skills/forge-0-epic/references/edit-mode.md +5 -1
  20. package/adapters/claude/skills/forge-0-epic/references/epic-manifest-subcommands.md +5 -0
  21. package/adapters/claude/skills/forge-0-epic/references/pipeline-state-schema.json +34 -2
  22. package/adapters/claude/skills/forge-0-epic/references/shared-conventions.md +15 -4
  23. package/adapters/claude/skills/forge-0-epic/references/stage-exit-protocol.md +55 -11
  24. package/adapters/claude/skills/forge-1-prd/SKILL.md +3 -1
  25. package/adapters/claude/skills/forge-1-prd/references/shared-conventions.md +15 -4
  26. package/adapters/claude/skills/forge-1-prd/references/stage-exit-protocol.md +55 -11
  27. package/adapters/claude/skills/forge-2-tech/SKILL.md +5 -1
  28. package/adapters/claude/skills/forge-2-tech/references/shared-conventions.md +15 -4
  29. package/adapters/claude/skills/forge-2-tech/references/stage-exit-protocol.md +55 -11
  30. package/adapters/claude/skills/forge-3-specs/SKILL.md +5 -1
  31. package/adapters/claude/skills/forge-3-specs/references/shared-conventions.md +15 -4
  32. package/adapters/claude/skills/forge-3-specs/references/stage-exit-protocol.md +55 -11
  33. package/adapters/claude/skills/forge-4-backlog/SKILL.md +41 -3
  34. package/adapters/claude/skills/forge-4-backlog/references/shared-conventions.md +15 -4
  35. package/adapters/claude/skills/forge-4-backlog/references/stage-exit-protocol.md +55 -11
  36. package/adapters/claude/skills/forge-5-loop/SKILL.md +36 -36
  37. package/adapters/claude/skills/forge-5-loop/references/agent-selection.md +16 -0
  38. package/adapters/claude/skills/forge-5-loop/references/ralph-loop-contract.md +6 -3
  39. package/adapters/claude/skills/forge-5-loop/references/recovery-procedure.md +349 -0
  40. package/adapters/claude/skills/forge-5-loop/references/result-reporting.md +40 -11
  41. package/adapters/claude/skills/forge-5-loop/references/runner-contract.md +22 -4
  42. package/adapters/claude/skills/forge-5-loop/references/shared-conventions.md +15 -4
  43. package/adapters/claude/skills/forge-5-loop/references/stage-exit-protocol.md +55 -11
  44. package/adapters/claude/skills/forge-6-docs/SKILL.md +29 -6
  45. package/adapters/claude/skills/forge-6-docs/references/shared-conventions.md +15 -4
  46. package/adapters/claude/skills/forge-6-docs/references/stage-exit-protocol.md +55 -11
  47. package/adapters/claude/skills/forge-fix/SKILL.md +34 -0
  48. package/adapters/claude/skills/forge-fix/references/shared-conventions.md +15 -4
  49. package/adapters/claude/skills/forge-fix/references/stage-exit-protocol.md +55 -11
  50. package/adapters/claude/skills/forge-guide/references/forge-config-schema.json +20 -2
  51. package/adapters/claude/skills/forge-guide/references/ralph-loop-contract.md +6 -3
  52. package/adapters/claude/skills/forge-guide/references/shared-conventions.md +15 -4
  53. package/adapters/claude/skills/forge-verify/SKILL.md +10 -11
  54. package/adapters/claude/skills/forge-verify/references/decisions/single-writer-threat-model.md +53 -0
  55. package/adapters/claude/skills/forge-verify/references/findings-template.md +30 -0
  56. package/adapters/claude/skills/forge-verify/references/shared-conventions.md +15 -4
  57. package/adapters/claude/skills/forge-verify/references/stage-exit-protocol.md +55 -11
  58. package/adapters/claude/skills/forge-verify/references/verification-checklists/backlog.md +73 -0
  59. package/adapters/claude/skills/forge-verify/references/verification-checklists/impl.md +85 -0
  60. package/adapters/claude/skills/forge-verify/references/verification-checklists/specs.md +43 -1
  61. package/adapters/codex/.feature-forge-bundle.json +1 -1
  62. package/adapters/codex/agents/forge-verifier.toml +3 -1
  63. package/adapters/codex/references/decisions/single-writer-threat-model.md +53 -0
  64. package/adapters/codex/references/epic-state-schema.json +50 -0
  65. package/adapters/codex/references/forge-config-schema.json +20 -2
  66. package/adapters/codex/references/forge-decisions-schema.json +33 -0
  67. package/adapters/codex/references/pipeline-state-schema.json +34 -2
  68. package/adapters/codex/references/process-overview.md +2 -2
  69. package/adapters/codex/references/ralph-loop-contract.md +6 -3
  70. package/adapters/codex/references/shared-conventions.md +44 -33
  71. package/adapters/codex/references/stage-exit-protocol.md +64 -20
  72. package/adapters/codex/scripts/epic-manifest.py +82 -4
  73. package/adapters/codex/scripts/fix-sweep.py +1180 -0
  74. package/adapters/codex/scripts/forge-session.py +1151 -32
  75. package/adapters/codex/skills/forge/SKILL.md +8 -8
  76. package/adapters/codex/skills/forge/references/pipeline-state-schema.json +34 -2
  77. package/adapters/codex/skills/forge/references/process-overview.md +2 -2
  78. package/adapters/codex/skills/forge/references/shared-conventions.md +44 -33
  79. package/adapters/codex/skills/forge/references/stage-exit-protocol.md +64 -20
  80. package/adapters/codex/skills/forge-0-epic/references/edit-mode.md +14 -10
  81. package/adapters/codex/skills/forge-0-epic/references/epic-manifest-subcommands.md +8 -3
  82. package/adapters/codex/skills/forge-0-epic/references/pipeline-state-schema.json +34 -2
  83. package/adapters/codex/skills/forge-0-epic/references/shared-conventions.md +44 -33
  84. package/adapters/codex/skills/forge-0-epic/references/stage-exit-protocol.md +64 -20
  85. package/adapters/codex/skills/forge-1-prd/SKILL.md +3 -1
  86. package/adapters/codex/skills/forge-1-prd/references/shared-conventions.md +44 -33
  87. package/adapters/codex/skills/forge-1-prd/references/stage-exit-protocol.md +64 -20
  88. package/adapters/codex/skills/forge-2-tech/SKILL.md +5 -1
  89. package/adapters/codex/skills/forge-2-tech/references/shared-conventions.md +44 -33
  90. package/adapters/codex/skills/forge-2-tech/references/stage-exit-protocol.md +64 -20
  91. package/adapters/codex/skills/forge-3-specs/SKILL.md +5 -1
  92. package/adapters/codex/skills/forge-3-specs/references/shared-conventions.md +44 -33
  93. package/adapters/codex/skills/forge-3-specs/references/stage-exit-protocol.md +64 -20
  94. package/adapters/codex/skills/forge-4-backlog/SKILL.md +41 -3
  95. package/adapters/codex/skills/forge-4-backlog/references/shared-conventions.md +44 -33
  96. package/adapters/codex/skills/forge-4-backlog/references/stage-exit-protocol.md +64 -20
  97. package/adapters/codex/skills/forge-5-loop/SKILL.md +36 -36
  98. package/adapters/codex/skills/forge-5-loop/references/agent-selection.md +17 -1
  99. package/adapters/codex/skills/forge-5-loop/references/ralph-loop-contract.md +6 -3
  100. package/adapters/codex/skills/forge-5-loop/references/recovery-procedure.md +349 -0
  101. package/adapters/codex/skills/forge-5-loop/references/result-reporting.md +40 -11
  102. package/adapters/codex/skills/forge-5-loop/references/runner-contract.md +26 -8
  103. package/adapters/codex/skills/forge-5-loop/references/shared-conventions.md +44 -33
  104. package/adapters/codex/skills/forge-5-loop/references/stage-exit-protocol.md +64 -20
  105. package/adapters/codex/skills/forge-6-docs/SKILL.md +29 -6
  106. package/adapters/codex/skills/forge-6-docs/references/shared-conventions.md +44 -33
  107. package/adapters/codex/skills/forge-6-docs/references/stage-exit-protocol.md +64 -20
  108. package/adapters/codex/skills/forge-fix/SKILL.md +34 -0
  109. package/adapters/codex/skills/forge-fix/references/shared-conventions.md +44 -33
  110. package/adapters/codex/skills/forge-fix/references/stage-exit-protocol.md +64 -20
  111. package/adapters/codex/skills/forge-guide/SKILL.md +1 -1
  112. package/adapters/codex/skills/forge-guide/references/forge-config-schema.json +20 -2
  113. package/adapters/codex/skills/forge-guide/references/process-overview.md +2 -2
  114. package/adapters/codex/skills/forge-guide/references/ralph-loop-contract.md +6 -3
  115. package/adapters/codex/skills/forge-guide/references/shared-conventions.md +44 -33
  116. package/adapters/codex/skills/forge-init/SKILL.md +1 -1
  117. package/adapters/codex/skills/forge-verify/SKILL.md +11 -12
  118. package/adapters/codex/skills/forge-verify/references/decisions/single-writer-threat-model.md +53 -0
  119. package/adapters/codex/skills/forge-verify/references/findings-template.md +32 -2
  120. package/adapters/codex/skills/forge-verify/references/shared-conventions.md +44 -33
  121. package/adapters/codex/skills/forge-verify/references/stage-exit-protocol.md +64 -20
  122. package/adapters/codex/skills/forge-verify/references/verification-checklists/backlog.md +73 -0
  123. package/adapters/codex/skills/forge-verify/references/verification-checklists/epic.md +1 -1
  124. package/adapters/codex/skills/forge-verify/references/verification-checklists/impl.md +85 -0
  125. package/adapters/codex/skills/forge-verify/references/verification-checklists/specs.md +43 -1
  126. package/adapters/copilot/.feature-forge-bundle.json +1 -1
  127. package/adapters/copilot/agents/forge-verifier.md +3 -1
  128. package/adapters/copilot/references/decisions/single-writer-threat-model.md +53 -0
  129. package/adapters/copilot/references/epic-state-schema.json +50 -0
  130. package/adapters/copilot/references/forge-config-schema.json +20 -2
  131. package/adapters/copilot/references/forge-decisions-schema.json +33 -0
  132. package/adapters/copilot/references/pipeline-state-schema.json +34 -2
  133. package/adapters/copilot/references/process-overview.md +2 -2
  134. package/adapters/copilot/references/ralph-loop-contract.md +6 -3
  135. package/adapters/copilot/references/shared-conventions.md +44 -33
  136. package/adapters/copilot/references/stage-exit-protocol.md +64 -20
  137. package/adapters/copilot/scripts/epic-manifest.py +82 -4
  138. package/adapters/copilot/scripts/fix-sweep.py +1180 -0
  139. package/adapters/copilot/scripts/forge-session.py +1151 -32
  140. package/adapters/copilot/skills/forge/forge.md +8 -8
  141. package/adapters/copilot/skills/forge/references/pipeline-state-schema.json +34 -2
  142. package/adapters/copilot/skills/forge/references/process-overview.md +2 -2
  143. package/adapters/copilot/skills/forge/references/shared-conventions.md +44 -33
  144. package/adapters/copilot/skills/forge/references/stage-exit-protocol.md +64 -20
  145. package/adapters/copilot/skills/forge-0-epic/references/edit-mode.md +14 -10
  146. package/adapters/copilot/skills/forge-0-epic/references/epic-manifest-subcommands.md +8 -3
  147. package/adapters/copilot/skills/forge-0-epic/references/pipeline-state-schema.json +34 -2
  148. package/adapters/copilot/skills/forge-0-epic/references/shared-conventions.md +44 -33
  149. package/adapters/copilot/skills/forge-0-epic/references/stage-exit-protocol.md +64 -20
  150. package/adapters/copilot/skills/forge-1-prd/forge-1-prd.md +3 -1
  151. package/adapters/copilot/skills/forge-1-prd/references/shared-conventions.md +44 -33
  152. package/adapters/copilot/skills/forge-1-prd/references/stage-exit-protocol.md +64 -20
  153. package/adapters/copilot/skills/forge-2-tech/forge-2-tech.md +5 -1
  154. package/adapters/copilot/skills/forge-2-tech/references/shared-conventions.md +44 -33
  155. package/adapters/copilot/skills/forge-2-tech/references/stage-exit-protocol.md +64 -20
  156. package/adapters/copilot/skills/forge-3-specs/forge-3-specs.md +5 -1
  157. package/adapters/copilot/skills/forge-3-specs/references/shared-conventions.md +44 -33
  158. package/adapters/copilot/skills/forge-3-specs/references/stage-exit-protocol.md +64 -20
  159. package/adapters/copilot/skills/forge-4-backlog/forge-4-backlog.md +41 -3
  160. package/adapters/copilot/skills/forge-4-backlog/references/shared-conventions.md +44 -33
  161. package/adapters/copilot/skills/forge-4-backlog/references/stage-exit-protocol.md +64 -20
  162. package/adapters/copilot/skills/forge-5-loop/forge-5-loop.md +36 -36
  163. package/adapters/copilot/skills/forge-5-loop/references/agent-selection.md +17 -1
  164. package/adapters/copilot/skills/forge-5-loop/references/ralph-loop-contract.md +6 -3
  165. package/adapters/copilot/skills/forge-5-loop/references/recovery-procedure.md +349 -0
  166. package/adapters/copilot/skills/forge-5-loop/references/result-reporting.md +40 -11
  167. package/adapters/copilot/skills/forge-5-loop/references/runner-contract.md +26 -8
  168. package/adapters/copilot/skills/forge-5-loop/references/shared-conventions.md +44 -33
  169. package/adapters/copilot/skills/forge-5-loop/references/stage-exit-protocol.md +64 -20
  170. package/adapters/copilot/skills/forge-6-docs/forge-6-docs.md +29 -6
  171. package/adapters/copilot/skills/forge-6-docs/references/shared-conventions.md +44 -33
  172. package/adapters/copilot/skills/forge-6-docs/references/stage-exit-protocol.md +64 -20
  173. package/adapters/copilot/skills/forge-fix/forge-fix.md +34 -0
  174. package/adapters/copilot/skills/forge-fix/references/shared-conventions.md +44 -33
  175. package/adapters/copilot/skills/forge-fix/references/stage-exit-protocol.md +64 -20
  176. package/adapters/copilot/skills/forge-guide/forge-guide.md +1 -1
  177. package/adapters/copilot/skills/forge-guide/references/forge-config-schema.json +20 -2
  178. package/adapters/copilot/skills/forge-guide/references/process-overview.md +2 -2
  179. package/adapters/copilot/skills/forge-guide/references/ralph-loop-contract.md +6 -3
  180. package/adapters/copilot/skills/forge-guide/references/shared-conventions.md +44 -33
  181. package/adapters/copilot/skills/forge-init/forge-init.md +1 -1
  182. package/adapters/copilot/skills/forge-verify/forge-verify.md +11 -12
  183. package/adapters/copilot/skills/forge-verify/references/decisions/single-writer-threat-model.md +53 -0
  184. package/adapters/copilot/skills/forge-verify/references/findings-template.md +32 -2
  185. package/adapters/copilot/skills/forge-verify/references/shared-conventions.md +44 -33
  186. package/adapters/copilot/skills/forge-verify/references/stage-exit-protocol.md +64 -20
  187. package/adapters/copilot/skills/forge-verify/references/verification-checklists/backlog.md +73 -0
  188. package/adapters/copilot/skills/forge-verify/references/verification-checklists/epic.md +1 -1
  189. package/adapters/copilot/skills/forge-verify/references/verification-checklists/impl.md +85 -0
  190. package/adapters/copilot/skills/forge-verify/references/verification-checklists/specs.md +43 -1
  191. package/adapters/cursor/.feature-forge-bundle.json +1 -1
  192. package/adapters/cursor/agents/forge-verifier.mdc +3 -1
  193. package/adapters/cursor/references/decisions/single-writer-threat-model.md +53 -0
  194. package/adapters/cursor/references/epic-state-schema.json +50 -0
  195. package/adapters/cursor/references/forge-config-schema.json +20 -2
  196. package/adapters/cursor/references/forge-decisions-schema.json +33 -0
  197. package/adapters/cursor/references/pipeline-state-schema.json +34 -2
  198. package/adapters/cursor/references/process-overview.md +2 -2
  199. package/adapters/cursor/references/ralph-loop-contract.md +6 -3
  200. package/adapters/cursor/references/shared-conventions.md +44 -33
  201. package/adapters/cursor/references/stage-exit-protocol.md +64 -20
  202. package/adapters/cursor/scripts/epic-manifest.py +82 -4
  203. package/adapters/cursor/scripts/fix-sweep.py +1180 -0
  204. package/adapters/cursor/scripts/forge-session.py +1151 -32
  205. package/adapters/cursor/skills/forge/forge.mdc +8 -8
  206. package/adapters/cursor/skills/forge/references/pipeline-state-schema.json +34 -2
  207. package/adapters/cursor/skills/forge/references/process-overview.md +2 -2
  208. package/adapters/cursor/skills/forge/references/shared-conventions.md +44 -33
  209. package/adapters/cursor/skills/forge/references/stage-exit-protocol.md +64 -20
  210. package/adapters/cursor/skills/forge-0-epic/references/edit-mode.md +14 -10
  211. package/adapters/cursor/skills/forge-0-epic/references/epic-manifest-subcommands.md +8 -3
  212. package/adapters/cursor/skills/forge-0-epic/references/pipeline-state-schema.json +34 -2
  213. package/adapters/cursor/skills/forge-0-epic/references/shared-conventions.md +44 -33
  214. package/adapters/cursor/skills/forge-0-epic/references/stage-exit-protocol.md +64 -20
  215. package/adapters/cursor/skills/forge-1-prd/forge-1-prd.mdc +3 -1
  216. package/adapters/cursor/skills/forge-1-prd/references/shared-conventions.md +44 -33
  217. package/adapters/cursor/skills/forge-1-prd/references/stage-exit-protocol.md +64 -20
  218. package/adapters/cursor/skills/forge-2-tech/forge-2-tech.mdc +5 -1
  219. package/adapters/cursor/skills/forge-2-tech/references/shared-conventions.md +44 -33
  220. package/adapters/cursor/skills/forge-2-tech/references/stage-exit-protocol.md +64 -20
  221. package/adapters/cursor/skills/forge-3-specs/forge-3-specs.mdc +5 -1
  222. package/adapters/cursor/skills/forge-3-specs/references/shared-conventions.md +44 -33
  223. package/adapters/cursor/skills/forge-3-specs/references/stage-exit-protocol.md +64 -20
  224. package/adapters/cursor/skills/forge-4-backlog/forge-4-backlog.mdc +41 -3
  225. package/adapters/cursor/skills/forge-4-backlog/references/shared-conventions.md +44 -33
  226. package/adapters/cursor/skills/forge-4-backlog/references/stage-exit-protocol.md +64 -20
  227. package/adapters/cursor/skills/forge-5-loop/forge-5-loop.mdc +36 -36
  228. package/adapters/cursor/skills/forge-5-loop/references/agent-selection.md +17 -1
  229. package/adapters/cursor/skills/forge-5-loop/references/ralph-loop-contract.md +6 -3
  230. package/adapters/cursor/skills/forge-5-loop/references/recovery-procedure.md +349 -0
  231. package/adapters/cursor/skills/forge-5-loop/references/result-reporting.md +40 -11
  232. package/adapters/cursor/skills/forge-5-loop/references/runner-contract.md +26 -8
  233. package/adapters/cursor/skills/forge-5-loop/references/shared-conventions.md +44 -33
  234. package/adapters/cursor/skills/forge-5-loop/references/stage-exit-protocol.md +64 -20
  235. package/adapters/cursor/skills/forge-6-docs/forge-6-docs.mdc +29 -6
  236. package/adapters/cursor/skills/forge-6-docs/references/shared-conventions.md +44 -33
  237. package/adapters/cursor/skills/forge-6-docs/references/stage-exit-protocol.md +64 -20
  238. package/adapters/cursor/skills/forge-fix/forge-fix.mdc +34 -0
  239. package/adapters/cursor/skills/forge-fix/references/shared-conventions.md +44 -33
  240. package/adapters/cursor/skills/forge-fix/references/stage-exit-protocol.md +64 -20
  241. package/adapters/cursor/skills/forge-guide/forge-guide.mdc +1 -1
  242. package/adapters/cursor/skills/forge-guide/references/forge-config-schema.json +20 -2
  243. package/adapters/cursor/skills/forge-guide/references/process-overview.md +2 -2
  244. package/adapters/cursor/skills/forge-guide/references/ralph-loop-contract.md +6 -3
  245. package/adapters/cursor/skills/forge-guide/references/shared-conventions.md +44 -33
  246. package/adapters/cursor/skills/forge-init/forge-init.mdc +1 -1
  247. package/adapters/cursor/skills/forge-verify/forge-verify.mdc +11 -12
  248. package/adapters/cursor/skills/forge-verify/references/decisions/single-writer-threat-model.md +53 -0
  249. package/adapters/cursor/skills/forge-verify/references/findings-template.md +32 -2
  250. package/adapters/cursor/skills/forge-verify/references/shared-conventions.md +44 -33
  251. package/adapters/cursor/skills/forge-verify/references/stage-exit-protocol.md +64 -20
  252. package/adapters/cursor/skills/forge-verify/references/verification-checklists/backlog.md +73 -0
  253. package/adapters/cursor/skills/forge-verify/references/verification-checklists/epic.md +1 -1
  254. package/adapters/cursor/skills/forge-verify/references/verification-checklists/impl.md +85 -0
  255. package/adapters/cursor/skills/forge-verify/references/verification-checklists/specs.md +43 -1
  256. package/adapters/gemini/.feature-forge-bundle.json +1 -1
  257. package/adapters/gemini/agents/forge-verifier.md +3 -1
  258. package/adapters/gemini/gemini-extension.json +1 -1
  259. package/adapters/gemini/references/decisions/single-writer-threat-model.md +53 -0
  260. package/adapters/gemini/references/epic-state-schema.json +50 -0
  261. package/adapters/gemini/references/forge-config-schema.json +20 -2
  262. package/adapters/gemini/references/forge-decisions-schema.json +33 -0
  263. package/adapters/gemini/references/pipeline-state-schema.json +34 -2
  264. package/adapters/gemini/references/process-overview.md +2 -2
  265. package/adapters/gemini/references/ralph-loop-contract.md +6 -3
  266. package/adapters/gemini/references/shared-conventions.md +44 -33
  267. package/adapters/gemini/references/stage-exit-protocol.md +64 -20
  268. package/adapters/gemini/scripts/epic-manifest.py +82 -4
  269. package/adapters/gemini/scripts/fix-sweep.py +1180 -0
  270. package/adapters/gemini/scripts/forge-session.py +1151 -32
  271. package/adapters/gemini/skills/forge/forge.md +8 -8
  272. package/adapters/gemini/skills/forge/references/pipeline-state-schema.json +34 -2
  273. package/adapters/gemini/skills/forge/references/process-overview.md +2 -2
  274. package/adapters/gemini/skills/forge/references/shared-conventions.md +44 -33
  275. package/adapters/gemini/skills/forge/references/stage-exit-protocol.md +64 -20
  276. package/adapters/gemini/skills/forge-0-epic/references/edit-mode.md +14 -10
  277. package/adapters/gemini/skills/forge-0-epic/references/epic-manifest-subcommands.md +8 -3
  278. package/adapters/gemini/skills/forge-0-epic/references/pipeline-state-schema.json +34 -2
  279. package/adapters/gemini/skills/forge-0-epic/references/shared-conventions.md +44 -33
  280. package/adapters/gemini/skills/forge-0-epic/references/stage-exit-protocol.md +64 -20
  281. package/adapters/gemini/skills/forge-1-prd/forge-1-prd.md +3 -1
  282. package/adapters/gemini/skills/forge-1-prd/references/shared-conventions.md +44 -33
  283. package/adapters/gemini/skills/forge-1-prd/references/stage-exit-protocol.md +64 -20
  284. package/adapters/gemini/skills/forge-2-tech/forge-2-tech.md +5 -1
  285. package/adapters/gemini/skills/forge-2-tech/references/shared-conventions.md +44 -33
  286. package/adapters/gemini/skills/forge-2-tech/references/stage-exit-protocol.md +64 -20
  287. package/adapters/gemini/skills/forge-3-specs/forge-3-specs.md +5 -1
  288. package/adapters/gemini/skills/forge-3-specs/references/shared-conventions.md +44 -33
  289. package/adapters/gemini/skills/forge-3-specs/references/stage-exit-protocol.md +64 -20
  290. package/adapters/gemini/skills/forge-4-backlog/forge-4-backlog.md +41 -3
  291. package/adapters/gemini/skills/forge-4-backlog/references/shared-conventions.md +44 -33
  292. package/adapters/gemini/skills/forge-4-backlog/references/stage-exit-protocol.md +64 -20
  293. package/adapters/gemini/skills/forge-5-loop/forge-5-loop.md +36 -36
  294. package/adapters/gemini/skills/forge-5-loop/references/agent-selection.md +17 -1
  295. package/adapters/gemini/skills/forge-5-loop/references/ralph-loop-contract.md +6 -3
  296. package/adapters/gemini/skills/forge-5-loop/references/recovery-procedure.md +349 -0
  297. package/adapters/gemini/skills/forge-5-loop/references/result-reporting.md +40 -11
  298. package/adapters/gemini/skills/forge-5-loop/references/runner-contract.md +26 -8
  299. package/adapters/gemini/skills/forge-5-loop/references/shared-conventions.md +44 -33
  300. package/adapters/gemini/skills/forge-5-loop/references/stage-exit-protocol.md +64 -20
  301. package/adapters/gemini/skills/forge-6-docs/forge-6-docs.md +29 -6
  302. package/adapters/gemini/skills/forge-6-docs/references/shared-conventions.md +44 -33
  303. package/adapters/gemini/skills/forge-6-docs/references/stage-exit-protocol.md +64 -20
  304. package/adapters/gemini/skills/forge-fix/forge-fix.md +34 -0
  305. package/adapters/gemini/skills/forge-fix/references/shared-conventions.md +44 -33
  306. package/adapters/gemini/skills/forge-fix/references/stage-exit-protocol.md +64 -20
  307. package/adapters/gemini/skills/forge-guide/forge-guide.md +1 -1
  308. package/adapters/gemini/skills/forge-guide/references/forge-config-schema.json +20 -2
  309. package/adapters/gemini/skills/forge-guide/references/process-overview.md +2 -2
  310. package/adapters/gemini/skills/forge-guide/references/ralph-loop-contract.md +6 -3
  311. package/adapters/gemini/skills/forge-guide/references/shared-conventions.md +44 -33
  312. package/adapters/gemini/skills/forge-init/forge-init.md +1 -1
  313. package/adapters/gemini/skills/forge-verify/forge-verify.md +11 -12
  314. package/adapters/gemini/skills/forge-verify/references/decisions/single-writer-threat-model.md +53 -0
  315. package/adapters/gemini/skills/forge-verify/references/findings-template.md +32 -2
  316. package/adapters/gemini/skills/forge-verify/references/shared-conventions.md +44 -33
  317. package/adapters/gemini/skills/forge-verify/references/stage-exit-protocol.md +64 -20
  318. package/adapters/gemini/skills/forge-verify/references/verification-checklists/backlog.md +73 -0
  319. package/adapters/gemini/skills/forge-verify/references/verification-checklists/epic.md +1 -1
  320. package/adapters/gemini/skills/forge-verify/references/verification-checklists/impl.md +85 -0
  321. package/adapters/gemini/skills/forge-verify/references/verification-checklists/specs.md +43 -1
  322. package/adapters/pi/.feature-forge-bundle.json +1 -1
  323. package/adapters/pi/agents/forge-verifier.md +3 -1
  324. package/adapters/pi/references/decisions/single-writer-threat-model.md +53 -0
  325. package/adapters/pi/references/epic-state-schema.json +50 -0
  326. package/adapters/pi/references/forge-config-schema.json +20 -2
  327. package/adapters/pi/references/forge-decisions-schema.json +33 -0
  328. package/adapters/pi/references/pipeline-state-schema.json +34 -2
  329. package/adapters/pi/references/process-overview.md +2 -2
  330. package/adapters/pi/references/ralph-loop-contract.md +6 -3
  331. package/adapters/pi/references/shared-conventions.md +33 -22
  332. package/adapters/pi/references/stage-exit-protocol.md +63 -19
  333. package/adapters/pi/scripts/epic-manifest.py +82 -4
  334. package/adapters/pi/scripts/fix-sweep.py +1180 -0
  335. package/adapters/pi/scripts/forge-session.py +1151 -32
  336. package/adapters/pi/skills/forge/SKILL.md +5 -5
  337. package/adapters/pi/skills/forge/references/pipeline-state-schema.json +34 -2
  338. package/adapters/pi/skills/forge/references/process-overview.md +2 -2
  339. package/adapters/pi/skills/forge/references/shared-conventions.md +33 -22
  340. package/adapters/pi/skills/forge/references/stage-exit-protocol.md +63 -19
  341. package/adapters/pi/skills/forge-0-epic/references/edit-mode.md +8 -4
  342. package/adapters/pi/skills/forge-0-epic/references/epic-manifest-subcommands.md +6 -1
  343. package/adapters/pi/skills/forge-0-epic/references/pipeline-state-schema.json +34 -2
  344. package/adapters/pi/skills/forge-0-epic/references/shared-conventions.md +33 -22
  345. package/adapters/pi/skills/forge-0-epic/references/stage-exit-protocol.md +63 -19
  346. package/adapters/pi/skills/forge-1-prd/SKILL.md +3 -1
  347. package/adapters/pi/skills/forge-1-prd/references/shared-conventions.md +33 -22
  348. package/adapters/pi/skills/forge-1-prd/references/stage-exit-protocol.md +63 -19
  349. package/adapters/pi/skills/forge-2-tech/SKILL.md +5 -1
  350. package/adapters/pi/skills/forge-2-tech/references/shared-conventions.md +33 -22
  351. package/adapters/pi/skills/forge-2-tech/references/stage-exit-protocol.md +63 -19
  352. package/adapters/pi/skills/forge-3-specs/SKILL.md +5 -1
  353. package/adapters/pi/skills/forge-3-specs/references/shared-conventions.md +33 -22
  354. package/adapters/pi/skills/forge-3-specs/references/stage-exit-protocol.md +63 -19
  355. package/adapters/pi/skills/forge-4-backlog/SKILL.md +41 -3
  356. package/adapters/pi/skills/forge-4-backlog/references/shared-conventions.md +33 -22
  357. package/adapters/pi/skills/forge-4-backlog/references/stage-exit-protocol.md +63 -19
  358. package/adapters/pi/skills/forge-5-loop/SKILL.md +36 -36
  359. package/adapters/pi/skills/forge-5-loop/references/agent-selection.md +16 -0
  360. package/adapters/pi/skills/forge-5-loop/references/ralph-loop-contract.md +6 -3
  361. package/adapters/pi/skills/forge-5-loop/references/recovery-procedure.md +349 -0
  362. package/adapters/pi/skills/forge-5-loop/references/result-reporting.md +40 -11
  363. package/adapters/pi/skills/forge-5-loop/references/runner-contract.md +25 -7
  364. package/adapters/pi/skills/forge-5-loop/references/shared-conventions.md +33 -22
  365. package/adapters/pi/skills/forge-5-loop/references/stage-exit-protocol.md +63 -19
  366. package/adapters/pi/skills/forge-6-docs/SKILL.md +29 -6
  367. package/adapters/pi/skills/forge-6-docs/references/shared-conventions.md +33 -22
  368. package/adapters/pi/skills/forge-6-docs/references/stage-exit-protocol.md +63 -19
  369. package/adapters/pi/skills/forge-fix/SKILL.md +34 -0
  370. package/adapters/pi/skills/forge-fix/references/shared-conventions.md +33 -22
  371. package/adapters/pi/skills/forge-fix/references/stage-exit-protocol.md +63 -19
  372. package/adapters/pi/skills/forge-guide/references/forge-config-schema.json +20 -2
  373. package/adapters/pi/skills/forge-guide/references/process-overview.md +2 -2
  374. package/adapters/pi/skills/forge-guide/references/ralph-loop-contract.md +6 -3
  375. package/adapters/pi/skills/forge-guide/references/shared-conventions.md +33 -22
  376. package/adapters/pi/skills/forge-verify/SKILL.md +10 -11
  377. package/adapters/pi/skills/forge-verify/references/decisions/single-writer-threat-model.md +53 -0
  378. package/adapters/pi/skills/forge-verify/references/findings-template.md +31 -1
  379. package/adapters/pi/skills/forge-verify/references/shared-conventions.md +33 -22
  380. package/adapters/pi/skills/forge-verify/references/stage-exit-protocol.md +63 -19
  381. package/adapters/pi/skills/forge-verify/references/verification-checklists/backlog.md +73 -0
  382. package/adapters/pi/skills/forge-verify/references/verification-checklists/epic.md +1 -1
  383. package/adapters/pi/skills/forge-verify/references/verification-checklists/impl.md +85 -0
  384. package/adapters/pi/skills/forge-verify/references/verification-checklists/specs.md +43 -1
  385. package/dist/manifest.d.ts +1 -1
  386. package/dist/rauf.d.ts +3 -3
  387. package/dist/rauf.js +2 -2
  388. package/dist/types.d.ts +1 -1
  389. package/package.json +1 -1
@@ -12,9 +12,12 @@ Usage:
12
12
  python3 epic-manifest.py render-status <epic> [--specs-dir DIR] [--json]
13
13
  python3 epic-manifest.py add-feature <epic> <name> --charter TEXT \
14
14
  [--depends-on A,B] [--specs-dir DIR] [--json]
15
+ python3 epic-manifest.py adopt-feature <epic> <name> [--charter TEXT] \
16
+ [--depends-on A,B] [--specs-dir DIR] [--json]
15
17
  python3 epic-manifest.py remove-feature <epic> <name> [--specs-dir DIR] [--json]
16
18
  python3 epic-manifest.py reorder <epic> --order A,B,C [--specs-dir DIR] [--json]
17
19
  python3 epic-manifest.py set-dep <epic> <name> --depends-on A,B [--specs-dir DIR] [--json]
20
+ python3 epic-manifest.py set-charter <epic> <name> --charter TEXT [--specs-dir DIR] [--json]
18
21
  python3 epic-manifest.py set-status <epic> --status STATE [--specs-dir DIR] [--json]
19
22
 
20
23
  Exit codes:
@@ -179,6 +182,12 @@ class FeatureStatus(TypedDict):
179
182
  blockingEpicChangeRequests: The subset of ``openEpicChangeRequests`` with
180
183
  ``blocksCurrent == true`` (pause-now, reconcile-before-specs). Always
181
184
  ``<= openEpicChangeRequests``.
185
+ docsStatus: The member's recorded ``stages["forge-6-docs"].status``, or
186
+ None when absent/malformed. DISTINCT from the orchestration rollup
187
+ (which reads forge-5-loop + impl verify and deliberately ignores
188
+ docs): consumers gating a DOCUMENTATION decision — the epic-level
189
+ doc offer (#173) — read this, treating ``complete`` and ``skipped``
190
+ (#197's deliberate skip) both as docs-settled.
182
191
  """
183
192
 
184
193
  name: str
@@ -188,6 +197,7 @@ class FeatureStatus(TypedDict):
188
197
  unmetDeps: list[str]
189
198
  openEpicChangeRequests: int
190
199
  blockingEpicChangeRequests: int
200
+ docsStatus: str | None
191
201
 
192
202
 
193
203
  class Rollup(TypedDict):
@@ -390,7 +400,8 @@ def atomic_write(path: Path, data: dict) -> None:
390
400
  and fsyncs it, then ``os.replace`` swaps it into place. ``os.replace`` is
391
401
  atomic on POSIX within a single filesystem, so an interrupted write never
392
402
  leaves a partial or corrupt manifest (REQ-ROBUST-03). Concurrent multi-
393
- session mutation is out of scope (single-writer assumed, PRD REQ-ROBUST-03).
403
+ session mutation is out of scope (single-writer assumed, PRD REQ-ROBUST-03;
404
+ decision record: references/decisions/single-writer-threat-model.md, #180).
394
405
 
395
406
  Args:
396
407
  path: The destination manifest path (e.g. {epic}/epic-manifest.json).
@@ -1202,6 +1213,13 @@ def derive_status(feature_dir: Path) -> FeatureStatus:
1202
1213
  open_count = len(open_reqs)
1203
1214
  blocking_count = sum(1 for r in open_reqs if r.get("blocksCurrent") is True)
1204
1215
 
1216
+ # Docs state for the epic-level doc offer gate (#173). Read directly rather
1217
+ # than folded into `derived`: docs completeness is deliberately invisible to
1218
+ # the orchestration rollup, and conflating them is the bug this field fixes.
1219
+ stages = state.get("stages", {})
1220
+ docs = stages.get("forge-6-docs") if isinstance(stages, dict) else None
1221
+ docs_status = docs.get("status") if isinstance(docs, dict) else None
1222
+
1205
1223
  return {
1206
1224
  "name": name,
1207
1225
  "stage": stage,
@@ -1210,6 +1228,7 @@ def derive_status(feature_dir: Path) -> FeatureStatus:
1210
1228
  "unmetDeps": [],
1211
1229
  "openEpicChangeRequests": open_count,
1212
1230
  "blockingEpicChangeRequests": blocking_count,
1231
+ "docsStatus": docs_status if isinstance(docs_status, str) else None,
1213
1232
  }
1214
1233
 
1215
1234
 
@@ -1232,14 +1251,16 @@ def _next_production_stage(state: dict) -> str | None:
1232
1251
  The epic-side mirror of ``next_stage()`` in forge-session.py, and for the same
1233
1252
  reason its docstring gives: "what runs next" is DERIVED from ``stages[].status``,
1234
1253
  never read from the stored ``currentStage``. A missing, pending, in-progress or
1235
- stale stage all count as "not done".
1254
+ stale stage all count as "not done"; ``complete`` and ``skipped`` both count as
1255
+ done (``skipped`` is legal only on forge-6-docs — schema ``docsStageEntry`` —
1256
+ so a deliberately docs-skipped member is never re-offered forge-6-docs, #197).
1236
1257
  """
1237
1258
  stages = state.get("stages")
1238
1259
  if not isinstance(stages, dict):
1239
1260
  return _PRODUCTION_STAGES[0]
1240
1261
  for stage in _PRODUCTION_STAGES:
1241
1262
  entry = stages.get(stage)
1242
- if not isinstance(entry, dict) or entry.get("status") != "complete":
1263
+ if not isinstance(entry, dict) or entry.get("status") not in ("complete", "skipped"):
1243
1264
  return stage
1244
1265
  return None
1245
1266
 
@@ -1607,6 +1628,52 @@ def set_dep(
1607
1628
  return _bump_and_write(epic_dir, specs_dir, manifest)
1608
1629
 
1609
1630
 
1631
+ def set_charter(
1632
+ epic_dir: Path, specs_dir: Path, name: str, charter: str
1633
+ ) -> list[Finding]:
1634
+ """Replace a member feature's charter text (#166).
1635
+
1636
+ The charter is the member field most likely to need revision after creation
1637
+ (an ADR lands, a boundary moves, a member turns out to own more than
1638
+ expected) — and it previously had no mutator, so edit mode had no sanctioned
1639
+ path to rewrite one. Same shape as ``set_dep``: an atomic, re-validated,
1640
+ revision-bumping replacement. EPIC.md prose is NOT touched — the agent
1641
+ re-syncs the mirror afterward (edit-mode Step E5), exactly as for every
1642
+ other mutation.
1643
+
1644
+ Args:
1645
+ epic_dir: The epic subtree directory.
1646
+ specs_dir: The configured specs directory.
1647
+ name: The member feature to edit.
1648
+ charter: The replacement charter text (argparse requires the flag; an
1649
+ empty string is refused below — a charter is required prose, and
1650
+ blanking it would only manufacture a schema-shaped hole).
1651
+
1652
+ Returns:
1653
+ Empty list on success; blocking findings (not-found / empty-charter, or
1654
+ anything re-validation raises) on refusal — manifest left unchanged.
1655
+
1656
+ Raises:
1657
+ UsageError: Unsafe name, corrupt/missing manifest, or write failure.
1658
+ """
1659
+ if not charter.strip():
1660
+ return [{"code": "empty-charter",
1661
+ "message": "refusing to blank a charter: pass non-empty --charter text",
1662
+ "feature": name}]
1663
+ manifest = load_manifest(epic_dir)
1664
+ by_name = {
1665
+ f["name"]: f
1666
+ for f in manifest.get("features", [])
1667
+ if isinstance(f, dict) and isinstance(f.get("name"), str)
1668
+ }
1669
+ if name not in by_name:
1670
+ return [{"code": "not-found",
1671
+ "message": f"feature {name!r} is not a member of epic {epic_dir.name!r}",
1672
+ "feature": name}]
1673
+ by_name[name]["charter"] = charter
1674
+ return _bump_and_write(epic_dir, specs_dir, manifest)
1675
+
1676
+
1610
1677
  def set_status(epic_dir: Path, specs_dir: Path, status: str) -> list[Finding]:
1611
1678
  """Set the epic-level lifecycle status.
1612
1679
 
@@ -1919,7 +1986,8 @@ def _dispatch(args: argparse.Namespace, specs_dir: Path) -> int:
1919
1986
  return 0
1920
1987
 
1921
1988
  # Mutators ---------------------------------------------------------------
1922
- if cmd in {"add-feature", "remove-feature", "reorder", "set-dep", "set-status"}:
1989
+ if cmd in {"add-feature", "remove-feature", "reorder", "set-dep", "set-charter",
1990
+ "set-status"}:
1923
1991
  epic_dir = contained_path(specs_dir, args.epic)
1924
1992
  if cmd == "add-feature":
1925
1993
  findings = add_feature(
@@ -1934,6 +2002,8 @@ def _dispatch(args: argparse.Namespace, specs_dir: Path) -> int:
1934
2002
  findings = set_dep(
1935
2003
  epic_dir, specs_dir, args.name, _split_list(args.depends_on)
1936
2004
  )
2005
+ elif cmd == "set-charter":
2006
+ findings = set_charter(epic_dir, specs_dir, args.name, args.charter)
1937
2007
  else: # set-status
1938
2008
  findings = set_status(epic_dir, specs_dir, args.status)
1939
2009
  if findings:
@@ -2028,6 +2098,14 @@ def _build_parser() -> argparse.ArgumentParser:
2028
2098
  add_specs_dir(p_setdep)
2029
2099
  add_json(p_setdep)
2030
2100
 
2101
+ # set-charter ----------------------------------------------------------- #
2102
+ p_setcharter = sub.add_parser("set-charter", help="Replace a feature's charter")
2103
+ p_setcharter.add_argument("epic")
2104
+ p_setcharter.add_argument("name")
2105
+ p_setcharter.add_argument("--charter", required=True, help="Replacement charter text")
2106
+ add_specs_dir(p_setcharter)
2107
+ add_json(p_setcharter)
2108
+
2031
2109
  # set-status ------------------------------------------------------------ #
2032
2110
  p_setstatus = sub.add_parser("set-status", help="Set the epic lifecycle status")
2033
2111
  p_setstatus.add_argument("epic")