@mc-and-his-agents/loom-installer 0.1.113 → 0.1.115

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 (211) hide show
  1. package/package.json +1 -1
  2. package/payload/manifest.json +421 -421
  3. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/loom-init/SKILL.md +5 -3
  4. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  5. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  6. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  7. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  8. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  9. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py +130 -2
  10. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  11. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py +105 -103
  12. package/payload/plugin/loom/skills/loom-build/.loom-runtime/loom-init/SKILL.md +5 -3
  13. package/payload/plugin/loom/skills/loom-build/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  14. package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  15. package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  16. package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  17. package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  18. package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/loom_check.py +130 -2
  19. package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  20. package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/loom_init.py +105 -103
  21. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/loom-init/SKILL.md +5 -3
  22. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  23. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  24. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  25. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  26. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  27. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py +130 -2
  28. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  29. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py +105 -103
  30. package/payload/plugin/loom/skills/loom-init/.loom-runtime/loom-init/SKILL.md +5 -3
  31. package/payload/plugin/loom/skills/loom-init/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  32. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  33. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  34. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  35. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  36. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py +130 -2
  37. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  38. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_init.py +105 -103
  39. package/payload/plugin/loom/skills/loom-init/SKILL.md +5 -3
  40. package/payload/plugin/loom/skills/loom-init/references/intake-signals.md +5 -5
  41. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/loom-init/SKILL.md +5 -3
  42. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  43. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  44. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  45. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  46. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  47. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py +130 -2
  48. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  49. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py +105 -103
  50. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/loom-init/SKILL.md +5 -3
  51. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  52. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  53. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  54. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  55. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  56. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
  57. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  58. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
  59. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/loom-init/SKILL.md +5 -3
  60. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  61. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  62. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  63. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  64. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  65. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py +130 -2
  66. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  67. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py +105 -103
  68. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/loom-init/SKILL.md +5 -3
  69. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  70. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  71. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  72. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  73. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  74. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py +130 -2
  75. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  76. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py +105 -103
  77. package/payload/plugin/loom/skills/loom-review/.loom-runtime/loom-init/SKILL.md +5 -3
  78. package/payload/plugin/loom/skills/loom-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  79. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  80. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  81. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  82. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  83. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
  84. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  85. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
  86. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/loom-init/SKILL.md +5 -3
  87. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  88. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  89. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  90. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  91. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  92. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
  93. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  94. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
  95. package/payload/plugin/loom/skills/loom-story/.loom-runtime/loom-init/SKILL.md +5 -3
  96. package/payload/plugin/loom/skills/loom-story/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  97. package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  98. package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  99. package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  100. package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  101. package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/scripts/loom_check.py +130 -2
  102. package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  103. package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/scripts/loom_init.py +105 -103
  104. package/payload/plugin/loom/skills/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  105. package/payload/plugin/loom/skills/shared/references/adoption/repo-companion-contract.md +4 -7
  106. package/payload/plugin/loom/skills/shared/references/adoption/target-repo-version-contract.md +3 -1
  107. package/payload/plugin/loom/skills/shared/scripts/governance_surface.py +0 -3
  108. package/payload/plugin/loom/skills/shared/scripts/loom_check.py +130 -2
  109. package/payload/plugin/loom/skills/shared/scripts/loom_flow.py +0 -52
  110. package/payload/plugin/loom/skills/shared/scripts/loom_init.py +105 -103
  111. package/payload/skills/loom-adopt/.loom-runtime/loom-init/SKILL.md +5 -3
  112. package/payload/skills/loom-adopt/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  113. package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  114. package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  115. package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  116. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  117. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py +130 -2
  118. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  119. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py +105 -103
  120. package/payload/skills/loom-build/.loom-runtime/loom-init/SKILL.md +5 -3
  121. package/payload/skills/loom-build/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  122. package/payload/skills/loom-build/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  123. package/payload/skills/loom-build/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  124. package/payload/skills/loom-build/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  125. package/payload/skills/loom-build/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  126. package/payload/skills/loom-build/.loom-runtime/shared/scripts/loom_check.py +130 -2
  127. package/payload/skills/loom-build/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  128. package/payload/skills/loom-build/.loom-runtime/shared/scripts/loom_init.py +105 -103
  129. package/payload/skills/loom-handoff/.loom-runtime/loom-init/SKILL.md +5 -3
  130. package/payload/skills/loom-handoff/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  131. package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  132. package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  133. package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  134. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  135. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py +130 -2
  136. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  137. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py +105 -103
  138. package/payload/skills/loom-init/.loom-runtime/loom-init/SKILL.md +5 -3
  139. package/payload/skills/loom-init/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  140. package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  141. package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  142. package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  143. package/payload/skills/loom-init/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  144. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py +130 -2
  145. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  146. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_init.py +105 -103
  147. package/payload/skills/loom-init/SKILL.md +5 -3
  148. package/payload/skills/loom-init/references/intake-signals.md +5 -5
  149. package/payload/skills/loom-merge-ready/.loom-runtime/loom-init/SKILL.md +5 -3
  150. package/payload/skills/loom-merge-ready/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  151. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  152. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  153. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  154. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  155. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py +130 -2
  156. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  157. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py +105 -103
  158. package/payload/skills/loom-pre-review/.loom-runtime/loom-init/SKILL.md +5 -3
  159. package/payload/skills/loom-pre-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  160. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  161. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  162. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  163. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  164. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
  165. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  166. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
  167. package/payload/skills/loom-resume/.loom-runtime/loom-init/SKILL.md +5 -3
  168. package/payload/skills/loom-resume/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  169. package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  170. package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  171. package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  172. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  173. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py +130 -2
  174. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  175. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py +105 -103
  176. package/payload/skills/loom-retire/.loom-runtime/loom-init/SKILL.md +5 -3
  177. package/payload/skills/loom-retire/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  178. package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  179. package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  180. package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  181. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  182. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py +130 -2
  183. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  184. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py +105 -103
  185. package/payload/skills/loom-review/.loom-runtime/loom-init/SKILL.md +5 -3
  186. package/payload/skills/loom-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  187. package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  188. package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  189. package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  190. package/payload/skills/loom-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  191. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
  192. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  193. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
  194. package/payload/skills/loom-spec-review/.loom-runtime/loom-init/SKILL.md +5 -3
  195. package/payload/skills/loom-spec-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  196. package/payload/skills/loom-spec-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  197. package/payload/skills/loom-spec-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  198. package/payload/skills/loom-spec-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  199. package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  200. package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
  201. package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  202. package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
  203. package/payload/skills/loom-story/.loom-runtime/loom-init/SKILL.md +5 -3
  204. package/payload/skills/loom-story/.loom-runtime/loom-init/references/intake-signals.md +5 -5
  205. package/payload/skills/loom-story/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
  206. package/payload/skills/loom-story/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
  207. package/payload/skills/loom-story/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
  208. package/payload/skills/loom-story/.loom-runtime/shared/scripts/governance_surface.py +0 -3
  209. package/payload/skills/loom-story/.loom-runtime/shared/scripts/loom_check.py +130 -2
  210. package/payload/skills/loom-story/.loom-runtime/shared/scripts/loom_flow.py +0 -52
  211. package/payload/skills/loom-story/.loom-runtime/shared/scripts/loom_init.py +105 -103
@@ -1033,9 +1033,9 @@ def deferred_capabilities(scenario: str, adoption_path: str, profile: str) -> li
1033
1033
  if profile == "light-governance":
1034
1034
  return [
1035
1035
  {
1036
- "name": "loom-owned-work-item-progress-status",
1037
- "reason": "light-governance keeps first-round adoption to a companion, review/spec, and PR-template loop",
1038
- "upgrade_trigger": "the repo explicitly opts into execution-control or needs Loom-owned recovery/status carriers",
1036
+ "name": "loom-owned-work-item-progress-status-spec",
1037
+ "reason": "light-governance keeps first-round adoption to a companion, review guidance, and PR-template loop without Loom-owned execution carriers",
1038
+ "upgrade_trigger": "the repo explicitly opts into execution-control or needs Loom-owned work item, recovery, status, or spec carriers",
1039
1039
  },
1040
1040
  {
1041
1041
  "name": "host-gate-merge-closeout-control",
@@ -1126,13 +1126,6 @@ def profile_common_artifacts() -> list[dict[str, str]]:
1126
1126
  {"path": ".loom/companion/review.md", "kind": "repo-companion-doc", "source": "generated"},
1127
1127
  {"path": ".loom/companion/merge-ready.md", "kind": "repo-companion-doc", "source": "generated"},
1128
1128
  {"path": ".loom/companion/closeout.md", "kind": "repo-companion-doc", "source": "generated"},
1129
- {"path": ".loom/companion/releases/changelog.md", "kind": "repo-release-surface", "source": "generated"},
1130
- {"path": ".loom/companion/releases/release-notes.md", "kind": "repo-release-surface", "source": "generated"},
1131
- {"path": ".loom/companion/releases/migration-notes.md", "kind": "repo-release-surface", "source": "generated"},
1132
- {"path": ".loom/companion/releases/rollback.md", "kind": "repo-release-surface", "source": "generated"},
1133
- {"path": ".loom/companion/releases/catalog.json", "kind": "repo-release-surface", "source": "generated"},
1134
- {"path": ".loom/companion/releases/current.json", "kind": "repo-release-surface", "source": "generated"},
1135
- {"path": ".loom/companion/releases/status.json", "kind": "repo-release-surface", "source": "generated"},
1136
1129
  {"path": ".loom/shadow/admission-loom.json", "kind": "shadow-parity-surface", "source": "generated"},
1137
1130
  {"path": ".loom/shadow/admission-repo.json", "kind": "shadow-parity-surface", "source": "generated"},
1138
1131
  {"path": ".loom/shadow/review-loom.json", "kind": "shadow-parity-surface", "source": "generated"},
@@ -1162,13 +1155,6 @@ def profile_light_artifacts(target_root: Path) -> list[dict[str, str]]:
1162
1155
  [
1163
1156
  {"path": ".loom/reviews/INIT-0001.json", "kind": "review-entry", "source": "generated"},
1164
1157
  {"path": ".loom/reviews/INIT-0001.spec.json", "kind": "review-entry", "source": "generated"},
1165
- {"path": ".loom/specs/INIT-0001/spec.md", "kind": "spec", "source": "skills/shared/assets/templates/scaffold/spec.md"},
1166
- {"path": ".loom/specs/INIT-0001/plan.md", "kind": "plan", "source": "skills/shared/assets/templates/scaffold/plan.md"},
1167
- {
1168
- "path": ".loom/specs/INIT-0001/implementation-contract.md",
1169
- "kind": "implementation-contract",
1170
- "source": "skills/shared/assets/templates/scaffold/implementation-contract.md",
1171
- },
1172
1158
  ]
1173
1159
  )
1174
1160
  return artifacts
@@ -1181,6 +1167,13 @@ def profile_execution_artifacts(target_root: Path) -> list[dict[str, str]]:
1181
1167
  {"path": ".loom/work-items/INIT-0001.md", "kind": "work-item", "source": "generated"},
1182
1168
  {"path": ".loom/progress/INIT-0001.md", "kind": "progress", "source": "generated"},
1183
1169
  {"path": ".loom/status/current.md", "kind": "status-surface", "source": "generated"},
1170
+ {"path": ".loom/specs/INIT-0001/spec.md", "kind": "spec", "source": "skills/shared/assets/templates/scaffold/spec.md"},
1171
+ {"path": ".loom/specs/INIT-0001/plan.md", "kind": "plan", "source": "skills/shared/assets/templates/scaffold/plan.md"},
1172
+ {
1173
+ "path": ".loom/specs/INIT-0001/implementation-contract.md",
1174
+ "kind": "implementation-contract",
1175
+ "source": "skills/shared/assets/templates/scaffold/implementation-contract.md",
1176
+ },
1184
1177
  ]
1185
1178
  )
1186
1179
  return artifacts
@@ -1242,6 +1235,23 @@ def initial_work_items(
1242
1235
  }
1243
1236
  ]
1244
1237
  artifacts = artifact_paths(initial_artifacts(target_root, install_pr_template, adoption_path, profile))
1238
+ if profile == "light-governance":
1239
+ return [
1240
+ {
1241
+ "id": WORK_ITEM_ID,
1242
+ "goal": "Establish the first lightweight Loom governance loop for this repository",
1243
+ "scope": "Create companion, review guidance, and PR template surfaces without Loom-owned execution carriers",
1244
+ "execution_path": "adoption/light-governance",
1245
+ "workspace_entry": ".",
1246
+ "recovery_entry": "checkpoint-lite issue or PR notes",
1247
+ "review_entry": ".loom/reviews/INIT-0001.json",
1248
+ "validation_entry": "python3 .loom/bin/loom_init.py verify --target .",
1249
+ "artifacts": artifacts,
1250
+ "closing_condition": "The companion entry, review guidance, PR template, and bootstrap metadata are readable without generated work/progress/status/spec carriers",
1251
+ "post_build_continuation": "Upgrade to execution-control only when the repo needs Loom-owned work item, recovery, status, or spec carriers",
1252
+ "owner_for_checkpoint_lite": "repository owner or current lightweight adoption operator",
1253
+ }
1254
+ ]
1245
1255
  return [
1246
1256
  {
1247
1257
  "id": WORK_ITEM_ID,
@@ -1346,13 +1356,6 @@ def planned_write_targets(result: dict[str, object], adoption_path: str) -> list
1346
1356
  (".loom/companion/review.md", "repo-companion-doc"),
1347
1357
  (".loom/companion/merge-ready.md", "repo-companion-doc"),
1348
1358
  (".loom/companion/closeout.md", "repo-companion-doc"),
1349
- (".loom/companion/releases/changelog.md", "repo-release-surface"),
1350
- (".loom/companion/releases/release-notes.md", "repo-release-surface"),
1351
- (".loom/companion/releases/migration-notes.md", "repo-release-surface"),
1352
- (".loom/companion/releases/rollback.md", "repo-release-surface"),
1353
- (".loom/companion/releases/catalog.json", "repo-release-surface"),
1354
- (".loom/companion/releases/current.json", "repo-release-surface"),
1355
- (".loom/companion/releases/status.json", "repo-release-surface"),
1356
1359
  (".loom/shadow/admission-loom.json", "shadow-parity-surface"),
1357
1360
  (".loom/shadow/admission-repo.json", "shadow-parity-surface"),
1358
1361
  (".loom/shadow/review-loom.json", "shadow-parity-surface"),
@@ -1368,6 +1371,10 @@ def planned_write_targets(result: dict[str, object], adoption_path: str) -> list
1368
1371
 
1369
1372
 
1370
1373
  def intentionally_absent_targets(adoption_path: str, profile: str) -> list[dict[str, str]]:
1374
+ release_target_absent = {
1375
+ "path": ".loom/companion/releases/**",
1376
+ "reason": "release target truth stays absent until the repo declares release target intent",
1377
+ }
1371
1378
  if profile == "attach-only":
1372
1379
  return [
1373
1380
  {"path": ".loom/work-items/**", "reason": "attach-only preserves host-owned work item truth"},
@@ -1375,18 +1382,27 @@ def intentionally_absent_targets(adoption_path: str, profile: str) -> list[dict[
1375
1382
  {"path": ".loom/status/current.md", "reason": "attach-only does not author Loom status truth"},
1376
1383
  {"path": ".loom/reviews/**", "reason": "attach-only preserves host-owned review truth"},
1377
1384
  {"path": ".loom/specs/**", "reason": "attach-only does not author Loom execution specs"},
1385
+ release_target_absent,
1378
1386
  ]
1379
1387
  if adoption_path == "defer":
1380
- return [{"path": "*", "reason": "observe-only intent is read-only"}]
1388
+ return [
1389
+ {"path": "*", "reason": "observe-only intent is read-only"},
1390
+ release_target_absent,
1391
+ ]
1381
1392
  if adoption_path == "skill-install-only":
1382
- return [{"path": ".loom/work-items/**", "reason": "skill install does not adopt execution governance"}]
1393
+ return [
1394
+ {"path": ".loom/work-items/**", "reason": "skill install does not adopt execution governance"},
1395
+ release_target_absent,
1396
+ ]
1383
1397
  if profile == "light-governance":
1384
1398
  return [
1385
1399
  {"path": ".loom/work-items/**", "reason": "light-governance does not author Loom work item truth"},
1386
1400
  {"path": ".loom/progress/**", "reason": "light-governance does not author Loom recovery truth"},
1387
1401
  {"path": ".loom/status/current.md", "reason": "light-governance does not author Loom status truth"},
1402
+ {"path": ".loom/specs/**", "reason": "light-governance keeps formal Loom specs deferred until execution-control"},
1403
+ release_target_absent,
1388
1404
  ]
1389
- return []
1405
+ return [release_target_absent]
1390
1406
 
1391
1407
 
1392
1408
  def risk_summary(adoption_path: str, intake: dict[str, object], planned: list[dict[str, object]]) -> dict[str, object]:
@@ -1476,7 +1492,7 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
1476
1492
  "observe-only": "read-only repository observation; no Loom adoption carriers are written",
1477
1493
  "skill-install-only": "skill/runtime installation intent without repository governance adoption carriers",
1478
1494
  "attach-only": "companion/read-surface attachment that preserves repo-owned execution truth",
1479
- "light-governance": "companion, review/spec, and PR-template loop without Loom-owned work item/progress/status carriers",
1495
+ "light-governance": "companion, review guidance, and PR-template loop without Loom-owned work item/progress/status/spec carriers",
1480
1496
  "execution-control": "Loom-owned work item, progress, review, status, and spec carriers",
1481
1497
  "strong-governance": "execution-control surface prepared for host gates, required checks, merge, and closeout consumption",
1482
1498
  }[profile],
@@ -1539,7 +1555,7 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
1539
1555
  ]
1540
1556
  if attach_only
1541
1557
  else [
1542
- "admission checkpoint confirms the companion entry, review record, spec suite, and PR template are readable",
1558
+ "admission checkpoint confirms the companion entry, review guidance, bootstrap metadata, and PR template are readable",
1543
1559
  "build checkpoint confirms generated light-governance surfaces are internally consistent",
1544
1560
  "merge checkpoint remains repo-owned until the intent upgrades to execution-control or strong-governance",
1545
1561
  ]
@@ -1553,7 +1569,7 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
1553
1569
  "clean_state": (
1554
1570
  "all generated attach-only Loom artifacts are readable, verified, and do not introduce Loom-authored work/progress/status/review/spec truth carriers"
1555
1571
  if attach_only
1556
- else "all generated light-governance artifacts are readable, verified, and do not introduce Loom-owned work/progress/status carriers"
1572
+ else "all generated light-governance artifacts are readable, verified, and do not introduce Loom-owned work/progress/status/spec carriers"
1557
1573
  if profile == "light-governance"
1558
1574
  else "all generated Loom artifacts are readable, verified, and free of conflicting duplicates"
1559
1575
  ),
@@ -1566,7 +1582,7 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
1566
1582
  if attach_only
1567
1583
  else [
1568
1584
  "the target repo has a readable Loom companion entry",
1569
- "the review record, spec suite, and PR template exist",
1585
+ "the companion review guidance, lightweight review placeholders, and PR template exist",
1570
1586
  "the bootstrap manifest and init-result are verifiable",
1571
1587
  ]
1572
1588
  if profile == "light-governance"
@@ -1736,7 +1752,7 @@ def render_loom_readme(result: dict[str, object]) -> str:
1736
1752
  path_lines = (
1737
1753
  "- Repo companion entry: `.loom/companion/README.md`\n"
1738
1754
  "- Review record: `.loom/reviews/INIT-0001.json`\n"
1739
- "- Spec suite: `.loom/specs/INIT-0001/`\n"
1755
+ "- Spec-review guidance: `.loom/reviews/INIT-0001.spec.json`\n"
1740
1756
  )
1741
1757
  else:
1742
1758
  path_lines = (
@@ -1852,12 +1868,6 @@ def repo_interface_payload(profile_name: str = "execution-control") -> dict[str,
1852
1868
  "dynamic_tool_locators": [],
1853
1869
  "policy_locators": [],
1854
1870
  "hook_locators": [],
1855
- "release_targets": {
1856
- "catalog_locator": ".loom/companion/releases/catalog.json",
1857
- "current_target_locator": ".loom/companion/releases/current.json",
1858
- "enforcement": "blocking",
1859
- "status_locator": ".loom/companion/releases/status.json",
1860
- },
1861
1871
  }
1862
1872
  if profile_name == "attach-only":
1863
1873
  payload["host_truth_locators"] = ATTACH_ONLY_HOST_TRUTH_LOCATORS
@@ -1972,6 +1982,13 @@ def render_progress(result: dict[str, object]) -> str:
1972
1982
 
1973
1983
  def render_review_entry(result: dict[str, object]) -> str:
1974
1984
  item = result["initial_work_items"][0]
1985
+ profile = result.get("scaffold_profile")
1986
+ profile_name = str(profile.get("name")) if isinstance(profile, dict) else "execution-control"
1987
+ validation_summary = (
1988
+ "Bootstrap manifest exists; init-result JSON can be read mechanically; companion review guidance and PR template artifacts exist."
1989
+ if profile_name == "light-governance"
1990
+ else "Bootstrap manifest exists; init-result JSON can be read mechanically; the first work item, status surface, and spec/plan artifacts exist."
1991
+ )
1975
1992
  payload = {
1976
1993
  "schema_version": "loom-review/v1",
1977
1994
  "item_id": item["id"],
@@ -1980,7 +1997,7 @@ def render_review_entry(result: dict[str, object]) -> str:
1980
1997
  "summary": "Bootstrap has not entered formal review yet.",
1981
1998
  "reviewer": "not yet assigned",
1982
1999
  "reviewed_head": "bootstrap-placeholder",
1983
- "reviewed_validation_summary": "Bootstrap manifest exists; init-result JSON can be read mechanically; the first work item, status surface, and spec/plan artifacts exist.",
2000
+ "reviewed_validation_summary": validation_summary,
1984
2001
  "fallback_to": "admission",
1985
2002
  "blocking_issues": [
1986
2003
  "Formal review starts only after downstream work replaces the bootstrap placeholder item."
@@ -1994,6 +2011,23 @@ def render_review_entry(result: dict[str, object]) -> str:
1994
2011
 
1995
2012
  def render_spec_review_entry(result: dict[str, object]) -> str:
1996
2013
  item = result["initial_work_items"][0]
2014
+ profile = result.get("scaffold_profile")
2015
+ profile_name = str(profile.get("name")) if isinstance(profile, dict) else "execution-control"
2016
+ validation_summary = (
2017
+ "Bootstrap manifest exists; init-result JSON can be read mechanically; lightweight spec review is represented as review guidance until execution-control creates formal spec carriers."
2018
+ if profile_name == "light-governance"
2019
+ else "Bootstrap manifest exists; init-result JSON can be read mechanically; the first work item, status surface, and spec/plan artifacts exist."
2020
+ )
2021
+ blocking_issue = (
2022
+ "Spec review remains guidance-only until the repo uses a repo-owned spec locator or upgrades to execution-control."
2023
+ if profile_name == "light-governance"
2024
+ else "Spec gate remains open until the formal spec path receives its own review record."
2025
+ )
2026
+ follow_up = (
2027
+ "Keep spec review guidance tied to repo-owned locators, or upgrade to execution-control before creating formal Loom spec carriers."
2028
+ if profile_name == "light-governance"
2029
+ else "Record a spec_review decision before implementation review or merge-ready consumes the formal spec path."
2030
+ )
1997
2031
  payload = {
1998
2032
  "schema_version": "loom-review/v1",
1999
2033
  "item_id": item["id"],
@@ -2002,14 +2036,10 @@ def render_spec_review_entry(result: dict[str, object]) -> str:
2002
2036
  "summary": "Formal spec review has not been completed yet.",
2003
2037
  "reviewer": "not yet assigned",
2004
2038
  "reviewed_head": "bootstrap-placeholder",
2005
- "reviewed_validation_summary": "Bootstrap manifest exists; init-result JSON can be read mechanically; the first work item, status surface, and spec/plan artifacts exist.",
2039
+ "reviewed_validation_summary": validation_summary,
2006
2040
  "fallback_to": "admission",
2007
- "blocking_issues": [
2008
- "Spec gate remains open until the formal spec path receives its own review record."
2009
- ],
2010
- "follow_ups": [
2011
- "Record a spec_review decision before implementation review or merge-ready consumes the formal spec path."
2012
- ],
2041
+ "blocking_issues": [blocking_issue],
2042
+ "follow_ups": [follow_up],
2013
2043
  }
2014
2044
  return json.dumps(payload, ensure_ascii=False, indent=2) + "\n"
2015
2045
 
@@ -2138,6 +2168,7 @@ def scaffold_target(
2138
2168
  profile_name = str(profile.get("name")) if isinstance(profile, dict) else "execution-control"
2139
2169
  writes_light_loop = profile_name in {"light-governance", "execution-control", "strong-governance"}
2140
2170
  writes_work_item_carriers = profile_has_work_item_carriers(profile_name)
2171
+ writes_formal_spec_suite = writes_work_item_carriers
2141
2172
  if profile_name == "attach-only":
2142
2173
  forbidden_errors = attach_only_forbidden_carrier_errors(target_root, result)
2143
2174
  if forbidden_errors:
@@ -2157,59 +2188,6 @@ def scaffold_target(
2157
2188
  (target_root / ".loom/companion/review.md", render_companion_review(), "text"),
2158
2189
  (target_root / ".loom/companion/merge-ready.md", render_companion_merge_ready(), "text"),
2159
2190
  (target_root / ".loom/companion/closeout.md", render_companion_closeout(), "text"),
2160
- (target_root / ".loom/companion/releases/changelog.md", "# Changelog\n\n- Bootstrap release intake example.\n", "text"),
2161
- (target_root / ".loom/companion/releases/release-notes.md", "# Release Notes\n\n- Bootstrap release target is ready for Loom-derived status consumption.\n", "text"),
2162
- (target_root / ".loom/companion/releases/migration-notes.md", "# Migration Notes\n\n- not_applicable\n", "text"),
2163
- (target_root / ".loom/companion/releases/rollback.md", "# Rollback Basis\n\n- Revert the companion-owned release target declaration and rerun Loom checks.\n", "text"),
2164
- (
2165
- target_root / ".loom/companion/releases/catalog.json",
2166
- {
2167
- "schema_version": "loom-target-release-catalog/v1",
2168
- "current_release_id": "bootstrap-v0.1.0",
2169
- "releases": [{"release_id": "bootstrap-v0.1.0", "locator": ".loom/companion/releases/current.json"}],
2170
- },
2171
- "json",
2172
- ),
2173
- (
2174
- target_root / ".loom/companion/releases/current.json",
2175
- {
2176
- "schema_version": "loom-target-release/v1",
2177
- "release_id": "bootstrap-v0.1.0",
2178
- "display_name": "Bootstrap v0.1.0",
2179
- "target_branch": "main",
2180
- "release_goal": "Bootstrap the first executable Loom path for this repository.",
2181
- "status": "unreleased",
2182
- "included_scope": {
2183
- "phase": [{"id": "bootstrap-phase", "locator": ".loom/companion/checkpoints.md", "delivery_status": "planned"}],
2184
- "fr": [],
2185
- "work_item": [{"id": "INIT-0001", "locator": ".loom/work-items/INIT-0001.md", "delivery_status": "unmerged"}],
2186
- "implementation_pr": [],
2187
- "merge_commit": [],
2188
- },
2189
- "evidence": {
2190
- "changelog_locator": ".loom/companion/releases/changelog.md",
2191
- "release_notes_locator": ".loom/companion/releases/release-notes.md",
2192
- "migration_notes_locator": ".loom/companion/releases/migration-notes.md",
2193
- "tag_or_artifact_locator": ".loom/companion/README.md",
2194
- "rollback_basis_locator": ".loom/companion/releases/rollback.md",
2195
- },
2196
- "authority": {
2197
- "owner": "repo-companion",
2198
- "source_kind": "repo_owned_locator",
2199
- "source_locator": ".loom/companion/releases/current.json",
2200
- },
2201
- },
2202
- "json",
2203
- ),
2204
- (
2205
- target_root / ".loom/companion/releases/status.json",
2206
- {
2207
- "schema_version": "loom-target-release-status/v1",
2208
- "result": "pass",
2209
- "summary": "repo-owned release status example is readable.",
2210
- },
2211
- "json",
2212
- ),
2213
2191
  ]
2214
2192
  if writes_light_loop:
2215
2193
  writes.extend(
@@ -2259,7 +2237,7 @@ def scaffold_target(
2259
2237
  if copy_file(source, destination, force=force):
2260
2238
  written += 1
2261
2239
  touched.append(str(destination.relative_to(target_root)))
2262
- if writes_light_loop:
2240
+ if writes_formal_spec_suite:
2263
2241
  for source, destination in (
2264
2242
  (shared_asset(__file__, "templates/scaffold/spec.md"), target_root / ".loom/specs/INIT-0001/spec.md"),
2265
2243
  (shared_asset(__file__, "templates/scaffold/plan.md"), target_root / ".loom/specs/INIT-0001/plan.md"),
@@ -2420,9 +2398,33 @@ def verify_target(target_root: Path, output_path: Path) -> list[str]:
2420
2398
  for artifact in result.get("initial_artifacts", [])
2421
2399
  if isinstance(artifact, dict) and isinstance(artifact.get("path"), str)
2422
2400
  }
2423
- for forbidden in (".loom/work-items/INIT-0001.md", ".loom/progress/INIT-0001.md", ".loom/status/current.md"):
2424
- if forbidden in declared_generated:
2425
- errors.append(f"light-governance bootstrap must not declare execution-control carrier `{forbidden}`")
2401
+ planned_generated = {
2402
+ item.get("path")
2403
+ for item in result.get("planned_writes", [])
2404
+ if isinstance(item, dict) and isinstance(item.get("path"), str)
2405
+ }
2406
+ forbidden_patterns = (
2407
+ ".loom/work-items/**",
2408
+ ".loom/progress/**",
2409
+ ".loom/status/current.md",
2410
+ ".loom/specs/**",
2411
+ )
2412
+ for collection_name, paths in (("initial_artifacts", declared_generated), ("planned_writes", planned_generated)):
2413
+ for path in paths:
2414
+ if not isinstance(path, str):
2415
+ continue
2416
+ if any(matches_forbidden_authored_carrier(path, pattern) for pattern in forbidden_patterns):
2417
+ errors.append(f"light-governance bootstrap must not declare execution-control carrier `{path}` in {collection_name}")
2418
+ for path in (
2419
+ ".loom/work-items/INIT-0001.md",
2420
+ ".loom/progress/INIT-0001.md",
2421
+ ".loom/status/current.md",
2422
+ ".loom/specs/INIT-0001/spec.md",
2423
+ ".loom/specs/INIT-0001/plan.md",
2424
+ ".loom/specs/INIT-0001/implementation-contract.md",
2425
+ ):
2426
+ if (target_root / path).exists():
2427
+ errors.append(f"light-governance bootstrap must not leave execution-control carrier on disk: {path}")
2426
2428
 
2427
2429
  for relative in required_paths:
2428
2430
  if not (target_root / relative).exists():
@@ -66,7 +66,7 @@ description: Loom 的 root entry。负责初始化新项目或既有仓库,并
66
66
 
67
67
  `--intent` 用来表达采用意图,而不是仓库静态分类。未显式给出 intent 时,dry-run 仍会输出推荐路径、风险摘要和计划写入载体;如果实际写入会创建重执行控制面,必须先显式选择 `execution-control` 或 `strong-governance`。
68
68
 
69
- 每个 intent 会收敛到一个 `scaffold_profile`。`observe-only` 与 `skill-install-only` 不写 adoption carriers;`attach-only` 只写 companion/read surfaces,并显式禁止 `.loom/work-items/**`、`.loom/progress/**`、`.loom/status/current.md`、`.loom/reviews/**`、`.loom/specs/**` 等 Loom-authored truth carriers;`light-governance` 写 companion、review/spec 与 PR 最小闭环但不写 Loom-owned work/progress/status;`execution-control` 与 `strong-governance` 才写 Loom-owned execution carriers。
69
+ 每个 intent 会收敛到一个 `scaffold_profile`。`observe-only` 与 `skill-install-only` 不写 adoption carriers;`attach-only` 只写 companion/read surfaces,并显式禁止 `.loom/work-items/**`、`.loom/progress/**`、`.loom/status/current.md`、`.loom/reviews/**`、`.loom/specs/**` 等 Loom-authored truth carriers;`light-governance` 写 companion、review guidance 与 PR 最小闭环但不写 Loom-owned work/progress/status/spec carriers;`execution-control` 与 `strong-governance` 才写 Loom-owned execution carriers。
70
70
 
71
71
  ## 1. 读取顺序
72
72
 
@@ -164,13 +164,15 @@ description: Loom 的 root entry。负责初始化新项目或既有仓库,并
164
164
  - `code_review`
165
165
  - `spec_review`
166
166
  - 最小 PR 模板
167
- - 条件化 `spec.md` / `plan.md`
167
+ - repo companion bootstrap metadata
168
+ - review guidance / spec-review guidance
168
169
  - 默认不装配:
169
170
  - 完整 recovery 模型
170
171
  - work item 合同
171
172
  - 状态面
172
173
  - profile 分层
173
174
  - 重 harness
175
+ - formal spec suite
174
176
  - 若需要轻量跨轮承接,默认使用 `checkpoint-lite`
175
177
  - 即使本轮不装配标准恢复或状态面,也必须写清:
176
178
  - issue / PR 中谁是恢复主入口
@@ -199,7 +201,7 @@ description: Loom 的 root entry。负责初始化新项目或既有仓库,并
199
201
  - 保留 root rules
200
202
  - 保留 retained host actions
201
203
  - 保留 repo-native carriers
202
- - 第一轮不生成 Loom-owned `work-item` / `progress` / `status-surface` placeholder
204
+ - 第一轮不生成 Loom-owned `work-item` / `progress` / `status-surface` / `spec` placeholder
203
205
 
204
206
  ## 4. 输出初始化结果
205
207
 
@@ -26,7 +26,7 @@
26
26
  - 是否已有 CI / 基础测试
27
27
  - 是否已有统一的仓库级验证入口
28
28
  - 当前主要缺口属于哪一类:
29
- - 治理入口 / review 合同 / 条件化 spec 路径
29
+ - 治理入口 / review 合同 / 条件化 spec-review 路径
30
30
  - 恢复 / 状态 / 执行支撑
31
31
  - 是否有明显长任务恢复痛点
32
32
  - 是否存在共享契约 / 共享数据模型 / 核心抽象 / 高风险链路
@@ -77,7 +77,7 @@
77
77
  - 已有清晰根级边界文档
78
78
  - 已有 CI / 基础测试
79
79
  - 已有统一的仓库级验证入口
80
- - 当前缺口主要在治理入口、review 合同、条件化 spec 路径
80
+ - 当前缺口主要在治理入口、review 合同、条件化 spec-review 路径
81
81
  - 尚无明显长任务恢复痛点
82
82
  - 当前没有需要立即进入更重路径的共享边界或高风险核心抽象信号
83
83
  - 当前主产物本身不是共享 contract、shared skill 或 governance module
@@ -86,8 +86,8 @@
86
86
 
87
87
  - 直接采用 [../../shared/references/adoption/lightweight-retrofit-default.md](../../shared/references/adoption/lightweight-retrofit-default.md)
88
88
  - 默认 `companion docs` 接入
89
- - 默认装配最小治理包
90
- - 默认不装配完整 recovery、`Work Item`、`status control plane` 与重 harness
89
+ - 默认装配最小治理包、repo companion、bootstrap metadata、review guidance 与 PR 模板
90
+ - 默认不装配完整 recovery、`Work Item`、`status control plane`、formal spec suite 与重 harness
91
91
  - 若需要轻量跨轮承接,默认 `checkpoint-lite`
92
92
 
93
93
  ### 4.3 `复杂既有仓库`
@@ -129,7 +129,7 @@
129
129
  - 若缺少统一验证入口,或仓库主产物本身是共享 contract、shared skill 或 governance module,优先判为 `复杂既有仓库`
130
130
  - 任何共享契约、运行模型或高风险核心抽象变化,优先提升到更重路径
131
131
  - 任何多轮恢复成本明显升高或出现多个入口并行记录,优先从 `checkpoint-lite` 升级到标准恢复形态
132
- - 只有在缺口主要集中于治理入口、review 合同、条件化 spec 路径,且恢复痛点不明显时,才保持轻量路径
132
+ - 只有在缺口主要集中于治理入口、review 合同、条件化 spec-review 路径,且恢复痛点不明显时,才保持轻量路径
133
133
 
134
134
  ## 6. 场景到默认装配映射
135
135
 
@@ -11,19 +11,20 @@
11
11
  - 已有清晰的工程边界文档,例如 `AGENTS.md`
12
12
  - 已有 CI 与基础测试
13
13
  - 已有统一的仓库级验证入口,而不是只有零散子模块脚本
14
- - 当前缺的是治理入口、review 合同或条件化 spec 路径
14
+ - 当前缺的是治理入口、review 合同或条件化 spec-review 路径
15
15
  - 当前还没有明显的长任务恢复痛点
16
16
  - 当前主产物本身不是共享 contract、shared skill 或 governance module
17
17
 
18
18
  ## 2. 默认目标
19
19
 
20
- 第一轮 retrofit 的目标不是装完整 Loom,而是先建立最小治理闭环。
20
+ 第一轮 retrofit 的目标不是装完整 Loom,也不是创建 Loom-owned execution truth,而是先建立最小治理闭环。
21
21
 
22
22
  默认先解决:
23
23
 
24
24
  - 改动如何进入实现
25
25
  - reviewer 如何判断改动
26
26
  - 哪些边界改动必须先说明再实现
27
+ - 后续何时需要显式升级到 `execution-control`
27
28
 
28
29
  ## 3. 默认装配
29
30
 
@@ -33,7 +34,10 @@
33
34
  - `code_review`
34
35
  - `spec_review`
35
36
  - 最小 PR 模板
36
- - 条件化 `spec.md` / `plan.md`
37
+ - repo companion bootstrap metadata
38
+ - review guidance / spec-review guidance
39
+
40
+ 本策略对应 `light-governance` scaffold profile。该 profile 可以暴露 review/spec-review 指引和轻量 review placeholder,但不生成 Loom-owned formal spec suite。
37
41
 
38
42
  ## 4. 默认接入方式
39
43
 
@@ -44,6 +48,7 @@
44
48
  - 在 `repo-interface.json` 中显式声明 `review_instruction_locators`;已有规则用 repo-owned locator,确无规则时才声明 `loom_default`
45
49
  - 不在第一轮重写整个根级规则体系
46
50
  - 不把轻量 retrofit 升级成 unattended strong adoption
51
+ - 不在默认 `light-governance` 中生成 `.loom/work-items/**`、`.loom/progress/**`、`.loom/status/current.md` 或 `.loom/specs/**`
47
52
 
48
53
  轻量仓库可以从 Loom default review instruction 起步,但这个选择必须是显式 locator 合同,而不是自动猜测 `spec_review.md`、`code_review.md` 或任何单仓历史路径。
49
54
 
@@ -56,6 +61,9 @@
56
61
  - 状态面
57
62
  - profile 分层
58
63
  - 重 harness
64
+ - formal spec suite
65
+
66
+ 如果目标仓库需要 Loom-owned `work item`、`progress`、`status` 或 `spec` carriers,必须把接入意图显式升级到 `execution-control`;此时才允许脚手架生成 `.loom/work-items/**`、`.loom/progress/**`、`.loom/status/current.md` 和 `.loom/specs/**`。
59
67
 
60
68
  ## 6. checkpoint-lite
61
69
 
@@ -143,13 +143,7 @@
143
143
  },
144
144
  "dynamic_tool_locators": [],
145
145
  "policy_locators": [],
146
- "hook_locators": [],
147
- "release_targets": {
148
- "catalog_locator": ".loom/companion/releases/catalog.json",
149
- "current_target_locator": ".loom/companion/releases/current.json",
150
- "enforcement": "blocking",
151
- "status_locator": ".loom/companion/releases/status.json"
152
- }
146
+ "hook_locators": []
153
147
  }
154
148
  ```
155
149
 
@@ -372,6 +366,8 @@
372
366
 
373
367
  `release_targets` 用于声明目标仓库自己的 release / version 真相入口。
374
368
 
369
+ 默认 adoption 不生成或声明 `release_targets`。只有目标仓库已有明确的 release target truth,并且接入决策显式要求暴露这组 repo-owned / host-owned locator 时,才写入本 section。
370
+
375
371
  它回答的是:
376
372
 
377
373
  - 目标仓库 release target catalog 去哪里读
@@ -403,6 +399,7 @@
403
399
  稳定约束:
404
400
 
405
401
  - `catalog_locator` 与 `current_target_locator` 只允许使用仓内相对路径;绝对路径、越界或不可读路径必须 fail closed
402
+ - 缺省状态必须视为 `availability: absent` / `target_release.result: not_applicable`,不得生成 `bootstrap-v0.1.0`、空 release 或示例 release truth
406
403
  - target release object 必须与 Loom distribution version authority 分离;不得把 installer version、plugin version、runtime version、schema version 或 `VERSION` 回写成 target release truth
407
404
  - target release object 可以消费 `Phase` / `FR` / `Work Item` / `PR` / `merge commit` locator,但不得让 target release 直接成为执行入口
408
405
  - `status_locator` 若缺失,Loom 仍应从 authored target release object 与 delivery chain 派生自己的 target release status summary
@@ -63,7 +63,7 @@ Loom 读取 target release truth 后,应派生 `loom-target-release-status/v1`
63
63
 
64
64
  ## 4. `repo companion` 挂接方式
65
65
 
66
- 目标仓库通过 `.loom/companion/repo-interface.json` `v2.release_targets` 挂接这一能力。
66
+ 目标仓库通过 `.loom/companion/repo-interface.json` `v2.release_targets` 挂接这一能力。默认 adoption 必须省略该 section;没有 release target intent 的仓库应被读取为 `release_targets.availability = absent` 与 `target_release.result = not_applicable`,而不是由 Loom 生成占位 release truth。
67
67
 
68
68
  最小字段:
69
69
 
@@ -79,6 +79,8 @@ Loom 读取 target release truth 后,应派生 `loom-target-release-status/v1`
79
79
  - `status_locator` 若存在,只能是 repo-owned derived status,不替代 Loom 自己的状态面
80
80
  - `enforcement` 只允许 `blocking | advisory`
81
81
 
82
+ Loom 不得为了满足 schema 而生成 `bootstrap-v0.1.0`、空 catalog、示例 current release 或示例 status。声明 `release_targets` 时,locator 指向的对象必须来自目标仓库明确选择的 repo-owned 或 host-owned release/version truth。
83
+
82
84
  ## 5. closeout 语义
83
85
 
84
86
  若仓库声明了 target release truth,closeout 至少要能区分:
@@ -2228,9 +2228,6 @@ def detect_repo_interface(root: Path) -> tuple[dict[str, Any], list[str]]:
2228
2228
  repo_interface_surface["specialized_gates"] = manifest_repo_interface.copy()
2229
2229
  repo_interface_surface["dynamic_tool_locators"] = manifest_repo_interface.copy()
2230
2230
  repo_interface_surface["policy_locators"] = manifest_repo_interface.copy()
2231
- repo_interface_surface["release_targets"]["catalog"] = manifest_repo_interface.copy()
2232
- repo_interface_surface["release_targets"]["current_target"] = manifest_repo_interface.copy()
2233
- repo_interface_surface["release_targets"]["status"] = manifest_repo_interface.copy()
2234
2231
  if manifest_repo_interface_error:
2235
2232
  missing_inputs.append(manifest_repo_interface_error)
2236
2233