@rig-c/create 0.0.0-stage → 1.0.1

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 (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -2
  3. package/docs/CHECKS.md +1682 -0
  4. package/docs/COLLECTIONS.md +337 -0
  5. package/docs/CRAFT.md +277 -0
  6. package/docs/INTERVIEW.md +886 -0
  7. package/docs/LESSONS.md +172 -0
  8. package/docs/PROJECT.md +2657 -0
  9. package/docs/SOURCE.md +225 -0
  10. package/package.json +44 -4
  11. package/src/agent-bounce.ts +27 -0
  12. package/src/agent-guide.ts +237 -0
  13. package/src/amend.ts +193 -0
  14. package/src/applied-review.ts +104 -0
  15. package/src/ask-coverage.ts +69 -0
  16. package/src/assemble-answers.ts +53 -0
  17. package/src/cg-gates.ts +211 -0
  18. package/src/check-reads.ts +106 -0
  19. package/src/check.ts +1059 -0
  20. package/src/checkpoint-evidence-writer.ts +125 -0
  21. package/src/checkpoint-evidence.ts +152 -0
  22. package/src/choice-writers.ts +271 -0
  23. package/src/choices.ts +378 -0
  24. package/src/cli.ts +371 -0
  25. package/src/collection-answer.ts +136 -0
  26. package/src/collection-binding-reader.ts +496 -0
  27. package/src/collection-binding.ts +478 -0
  28. package/src/collection.ts +348 -0
  29. package/src/config-inputs.ts +155 -0
  30. package/src/config-lost.ts +135 -0
  31. package/src/correction-writers.ts +207 -0
  32. package/src/corrections.ts +685 -0
  33. package/src/diff-classes.ts +219 -0
  34. package/src/diff-map.ts +248 -0
  35. package/src/direction-citation.ts +13 -0
  36. package/src/direction-writers.ts +119 -0
  37. package/src/direction.ts +266 -0
  38. package/src/drafts.ts +363 -0
  39. package/src/feedback.ts +744 -0
  40. package/src/figure-mask.ts +143 -0
  41. package/src/fix-ledger.ts +355 -0
  42. package/src/init.ts +265 -0
  43. package/src/inputs.ts +160 -0
  44. package/src/intake.ts +158 -0
  45. package/src/interview.ts +53 -0
  46. package/src/invariants.ts +132 -0
  47. package/src/job-acts.ts +80 -0
  48. package/src/job-advance.ts +65 -0
  49. package/src/job-close.ts +226 -0
  50. package/src/job-host.ts +529 -0
  51. package/src/job-outbox.ts +383 -0
  52. package/src/job-publication.ts +701 -0
  53. package/src/job-runtime.ts +99 -0
  54. package/src/job-writer.ts +123 -0
  55. package/src/meshes-bust.ts +63 -0
  56. package/src/next.ts +1506 -0
  57. package/src/overrides.ts +42 -0
  58. package/src/package-upgrades.ts +32 -0
  59. package/src/packages-upgrade-check.ts +6 -0
  60. package/src/packages-upgrade.ts +168 -0
  61. package/src/parts-act.ts +96 -0
  62. package/src/parts-check.ts +242 -0
  63. package/src/parts-review.ts +196 -0
  64. package/src/parts-sections.ts +98 -0
  65. package/src/parts-verdict-record.ts +265 -0
  66. package/src/parts-verdict.ts +33 -0
  67. package/src/pause.ts +118 -0
  68. package/src/pins-check.ts +619 -0
  69. package/src/pins.ts +17 -0
  70. package/src/plan-bar-amendments.ts +54 -0
  71. package/src/plan-history.ts +147 -0
  72. package/src/plan-writers.ts +202 -0
  73. package/src/plate-receipt.ts +110 -0
  74. package/src/pre-interview.ts +302 -0
  75. package/src/prepared-inputs.ts +113 -0
  76. package/src/progress-writers.ts +181 -0
  77. package/src/provenance.ts +301 -0
  78. package/src/record-direction-target.ts +26 -0
  79. package/src/record-input.ts +18 -0
  80. package/src/refusal-baseline.ts +55 -0
  81. package/src/refusal.ts +30 -0
  82. package/src/reopen-lapses.ts +80 -0
  83. package/src/reopen.ts +144 -0
  84. package/src/republish.ts +93 -0
  85. package/src/restart.ts +141 -0
  86. package/src/review-act-runtime.ts +16 -0
  87. package/src/review-act.ts +592 -0
  88. package/src/review-package.ts +524 -0
  89. package/src/review-read.ts +238 -0
  90. package/src/review.ts +432 -0
  91. package/src/rig-version-date.ts +22 -0
  92. package/src/rig-version.ts +1047 -0
  93. package/src/run-record.ts +232 -0
  94. package/src/scene-authority.ts +410 -0
  95. package/src/scene-writers.ts +144 -0
  96. package/src/scene.ts +284 -0
  97. package/src/setup-painting.ts +46 -0
  98. package/src/signable.ts +65 -0
  99. package/src/signoff-answers.ts +76 -0
  100. package/src/signoff-checkpoint-act.ts +95 -0
  101. package/src/signoff-target.ts +127 -0
  102. package/src/signoff.ts +331 -0
  103. package/src/split-captions.ts +154 -0
  104. package/src/stage-progress.ts +379 -0
  105. package/src/stages.ts +148 -0
  106. package/src/step-hash.ts +19 -0
  107. package/src/structure-snapshot.ts +109 -0
  108. package/src/structure.ts +166 -0
  109. package/src/templates.ts +16 -0
  110. package/src/waypoints.ts +163 -0
  111. package/templates/agent-guide.md +108 -0
  112. package/templates/collection-agent-guide.md +72 -0
  113. package/templates/collection.json +252 -0
  114. package/templates/example-chain/AGENTS.md +134 -0
  115. package/templates/example-chain/CLAUDE.md +3 -0
  116. package/templates/example-chain/README.md +13 -0
  117. package/templates/example-chain/chain.json +2869 -0
  118. package/templates/example-chain/checkpoints/0a-interview-options/AGENTS.md +134 -0
  119. package/templates/example-chain/checkpoints/0a-interview-options/CLAUDE.md +3 -0
  120. package/templates/example-chain/checkpoints/0a-interview-options/evidence/.gitkeep +0 -0
  121. package/templates/example-chain/checkpoints/0a-interview-options/evidence/approval.txt +1 -0
  122. package/templates/example-chain/checkpoints/0a-interview-options/evidence/interview/rig_type.json +59 -0
  123. package/templates/example-chain/checkpoints/0a-interview-options/evidence/split-config.json +1 -0
  124. package/templates/example-chain/checkpoints/0a-interview-options/inputs/painting.png +0 -0
  125. package/templates/example-chain/checkpoints/0a-interview-options/inputs/references/.gitkeep +0 -0
  126. package/templates/example-chain/checkpoints/0a-interview-options/package.json +9 -0
  127. package/templates/example-chain/checkpoints/0a-interview-options/project.json +295 -0
  128. package/templates/example-chain/checkpoints/0a-interview-options.json +127 -0
  129. package/templates/example-chain/checkpoints/0b-plan-pending/AGENTS.md +134 -0
  130. package/templates/example-chain/checkpoints/0b-plan-pending/CLAUDE.md +3 -0
  131. package/templates/example-chain/checkpoints/0b-plan-pending/evidence/.gitkeep +0 -0
  132. package/templates/example-chain/checkpoints/0b-plan-pending/evidence/approval.txt +1 -0
  133. package/templates/example-chain/checkpoints/0b-plan-pending/evidence/interview/assemble.json +309 -0
  134. package/templates/example-chain/checkpoints/0b-plan-pending/evidence/interview/reference.json +59 -0
  135. package/templates/example-chain/checkpoints/0b-plan-pending/evidence/interview/rig_type.json +59 -0
  136. package/templates/example-chain/checkpoints/0b-plan-pending/evidence/interview/seethrough.json +186 -0
  137. package/templates/example-chain/checkpoints/0b-plan-pending/evidence/split-config.json +1 -0
  138. package/templates/example-chain/checkpoints/0b-plan-pending/inputs/painting.png +0 -0
  139. package/templates/example-chain/checkpoints/0b-plan-pending/inputs/references/.gitkeep +0 -0
  140. package/templates/example-chain/checkpoints/0b-plan-pending/package.json +9 -0
  141. package/templates/example-chain/checkpoints/0b-plan-pending/project.json +685 -0
  142. package/templates/example-chain/checkpoints/0b-plan-pending.json +81 -0
  143. package/templates/example-chain/checkpoints/1-parts-verdict/AGENTS.md +134 -0
  144. package/templates/example-chain/checkpoints/1-parts-verdict/CLAUDE.md +3 -0
  145. package/templates/example-chain/checkpoints/1-parts-verdict/evidence/.gitkeep +0 -0
  146. package/templates/example-chain/checkpoints/1-parts-verdict/evidence/approval.txt +1 -0
  147. package/templates/example-chain/checkpoints/1-parts-verdict/evidence/interview/assemble.json +309 -0
  148. package/templates/example-chain/checkpoints/1-parts-verdict/evidence/interview/reference.json +59 -0
  149. package/templates/example-chain/checkpoints/1-parts-verdict/evidence/interview/rig_type.json +59 -0
  150. package/templates/example-chain/checkpoints/1-parts-verdict/evidence/interview/seethrough.json +186 -0
  151. package/templates/example-chain/checkpoints/1-parts-verdict/evidence/parts-check.json +127 -0
  152. package/templates/example-chain/checkpoints/1-parts-verdict/evidence/split-config.json +1 -0
  153. package/templates/example-chain/checkpoints/1-parts-verdict/inputs/painting.png +0 -0
  154. package/templates/example-chain/checkpoints/1-parts-verdict/inputs/references/.gitkeep +0 -0
  155. package/templates/example-chain/checkpoints/1-parts-verdict/package.json +9 -0
  156. package/templates/example-chain/checkpoints/1-parts-verdict/project.json +955 -0
  157. package/templates/example-chain/checkpoints/1-parts-verdict.json +204 -0
  158. package/templates/example-chain/checkpoints/2-rigging-answers/AGENTS.md +134 -0
  159. package/templates/example-chain/checkpoints/2-rigging-answers/CLAUDE.md +3 -0
  160. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/.gitkeep +0 -0
  161. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/approval.txt +1 -0
  162. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/diff-components.json +34 -0
  163. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/interview/assemble.json +309 -0
  164. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/interview/bones.json +190 -0
  165. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/interview/reference.json +59 -0
  166. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/interview/rig_type.json +59 -0
  167. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/interview/seethrough.json +186 -0
  168. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/parts-check.json +127 -0
  169. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/parts-review.json +88 -0
  170. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/review-reads/a12dea02d32508acc99386f894af76a14f1c85f45f804db2aa6b4dea5297973f.json +59 -0
  171. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/split-config.json +1 -0
  172. package/templates/example-chain/checkpoints/2-rigging-answers/evidence/structure.json +30 -0
  173. package/templates/example-chain/checkpoints/2-rigging-answers/inputs/painting.png +0 -0
  174. package/templates/example-chain/checkpoints/2-rigging-answers/inputs/references/.gitkeep +0 -0
  175. package/templates/example-chain/checkpoints/2-rigging-answers/package.json +9 -0
  176. package/templates/example-chain/checkpoints/2-rigging-answers/project.json +1198 -0
  177. package/templates/example-chain/checkpoints/2-rigging-answers.json +254 -0
  178. package/templates/example-chain/checkpoints/3-rig-review/AGENTS.md +134 -0
  179. package/templates/example-chain/checkpoints/3-rig-review/CLAUDE.md +3 -0
  180. package/templates/example-chain/checkpoints/3-rig-review/evidence/.gitkeep +0 -0
  181. package/templates/example-chain/checkpoints/3-rig-review/evidence/approval.txt +1 -0
  182. package/templates/example-chain/checkpoints/3-rig-review/evidence/diff-components.json +34 -0
  183. package/templates/example-chain/checkpoints/3-rig-review/evidence/interview/assemble.json +309 -0
  184. package/templates/example-chain/checkpoints/3-rig-review/evidence/interview/bones.json +190 -0
  185. package/templates/example-chain/checkpoints/3-rig-review/evidence/interview/constraints.json +272 -0
  186. package/templates/example-chain/checkpoints/3-rig-review/evidence/interview/meshes.json +190 -0
  187. package/templates/example-chain/checkpoints/3-rig-review/evidence/interview/motion.json +272 -0
  188. package/templates/example-chain/checkpoints/3-rig-review/evidence/interview/reference.json +59 -0
  189. package/templates/example-chain/checkpoints/3-rig-review/evidence/interview/rig_type.json +59 -0
  190. package/templates/example-chain/checkpoints/3-rig-review/evidence/interview/seethrough.json +186 -0
  191. package/templates/example-chain/checkpoints/3-rig-review/evidence/parts-check.json +127 -0
  192. package/templates/example-chain/checkpoints/3-rig-review/evidence/parts-review.json +88 -0
  193. package/templates/example-chain/checkpoints/3-rig-review/evidence/review-reads/a12dea02d32508acc99386f894af76a14f1c85f45f804db2aa6b4dea5297973f.json +59 -0
  194. package/templates/example-chain/checkpoints/3-rig-review/evidence/setup.png +0 -0
  195. package/templates/example-chain/checkpoints/3-rig-review/evidence/split-config.json +1 -0
  196. package/templates/example-chain/checkpoints/3-rig-review/evidence/structure.json +30 -0
  197. package/templates/example-chain/checkpoints/3-rig-review/evidence/v1/config.json +88 -0
  198. package/templates/example-chain/checkpoints/3-rig-review/evidence/v1/interview-requirements.json +8 -0
  199. package/templates/example-chain/checkpoints/3-rig-review/inputs/painting.png +0 -0
  200. package/templates/example-chain/checkpoints/3-rig-review/inputs/references/.gitkeep +0 -0
  201. package/templates/example-chain/checkpoints/3-rig-review/package.json +9 -0
  202. package/templates/example-chain/checkpoints/3-rig-review/project.json +1909 -0
  203. package/templates/example-chain/checkpoints/3-rig-review.json +424 -0
  204. package/templates/example-chain/checkpoints/4-direction-post/AGENTS.md +134 -0
  205. package/templates/example-chain/checkpoints/4-direction-post/CLAUDE.md +3 -0
  206. package/templates/example-chain/checkpoints/4-direction-post/evidence/.gitkeep +0 -0
  207. package/templates/example-chain/checkpoints/4-direction-post/evidence/approval.txt +1 -0
  208. package/templates/example-chain/checkpoints/4-direction-post/evidence/diff-components.json +34 -0
  209. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/assemble.json +309 -0
  210. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/bones.json +190 -0
  211. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/camera_depth.json +102 -0
  212. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/constraints.json +272 -0
  213. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/meshes.json +190 -0
  214. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/motion.json +272 -0
  215. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/post_composition.json +122 -0
  216. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/post_timing.json +102 -0
  217. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/reference.json +59 -0
  218. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/rig_type.json +59 -0
  219. package/templates/example-chain/checkpoints/4-direction-post/evidence/interview/seethrough.json +186 -0
  220. package/templates/example-chain/checkpoints/4-direction-post/evidence/parts-check.json +127 -0
  221. package/templates/example-chain/checkpoints/4-direction-post/evidence/parts-review.json +88 -0
  222. package/templates/example-chain/checkpoints/4-direction-post/evidence/review-reads/a12dea02d32508acc99386f894af76a14f1c85f45f804db2aa6b4dea5297973f.json +59 -0
  223. package/templates/example-chain/checkpoints/4-direction-post/evidence/setup.png +0 -0
  224. package/templates/example-chain/checkpoints/4-direction-post/evidence/split-config.json +1 -0
  225. package/templates/example-chain/checkpoints/4-direction-post/evidence/structure.json +30 -0
  226. package/templates/example-chain/checkpoints/4-direction-post/evidence/v1/config.json +88 -0
  227. package/templates/example-chain/checkpoints/4-direction-post/evidence/v1/interview-requirements.json +8 -0
  228. package/templates/example-chain/checkpoints/4-direction-post/inputs/painting.png +0 -0
  229. package/templates/example-chain/checkpoints/4-direction-post/inputs/references/.gitkeep +0 -0
  230. package/templates/example-chain/checkpoints/4-direction-post/package.json +9 -0
  231. package/templates/example-chain/checkpoints/4-direction-post/project.json +2302 -0
  232. package/templates/example-chain/checkpoints/4-direction-post.json +456 -0
  233. package/templates/example-chain/evidence/.gitkeep +0 -0
  234. package/templates/example-chain/evidence/approval.txt +1 -0
  235. package/templates/example-chain/evidence/captions.json +101 -0
  236. package/templates/example-chain/evidence/diff-components.json +34 -0
  237. package/templates/example-chain/evidence/direction/v2.json +74 -0
  238. package/templates/example-chain/evidence/direction-input.json +74 -0
  239. package/templates/example-chain/evidence/interview/assemble.json +309 -0
  240. package/templates/example-chain/evidence/interview/bones.json +190 -0
  241. package/templates/example-chain/evidence/interview/camera_depth.json +102 -0
  242. package/templates/example-chain/evidence/interview/constraints.json +272 -0
  243. package/templates/example-chain/evidence/interview/meshes.json +190 -0
  244. package/templates/example-chain/evidence/interview/motion.json +272 -0
  245. package/templates/example-chain/evidence/interview/post_composition.json +122 -0
  246. package/templates/example-chain/evidence/interview/post_timing.json +102 -0
  247. package/templates/example-chain/evidence/interview/reference.json +59 -0
  248. package/templates/example-chain/evidence/interview/rig_type.json +59 -0
  249. package/templates/example-chain/evidence/interview/seethrough.json +186 -0
  250. package/templates/example-chain/evidence/parts-check.json +127 -0
  251. package/templates/example-chain/evidence/parts-review.json +88 -0
  252. package/templates/example-chain/evidence/review-reads/a12dea02d32508acc99386f894af76a14f1c85f45f804db2aa6b4dea5297973f.json +59 -0
  253. package/templates/example-chain/evidence/scene/s1.json +65 -0
  254. package/templates/example-chain/evidence/scene-citations.json +9 -0
  255. package/templates/example-chain/evidence/setup.png +0 -0
  256. package/templates/example-chain/evidence/split-config.json +1 -0
  257. package/templates/example-chain/evidence/structure.json +30 -0
  258. package/templates/example-chain/evidence/v1/config.json +88 -0
  259. package/templates/example-chain/evidence/v1/interview-requirements.json +8 -0
  260. package/templates/example-chain/inputs/background.png +0 -0
  261. package/templates/example-chain/inputs/painting.png +0 -0
  262. package/templates/example-chain/inputs/references/.gitkeep +0 -0
  263. package/templates/example-chain/package.json +9 -0
  264. package/templates/example-chain/project.json +2593 -0
  265. package/templates/example-diff/diff-components.json +71 -0
  266. package/templates/example-diff/recomposite_rig.png +0 -0
  267. package/templates/example-direction/approval.txt +1 -0
  268. package/templates/example-direction/derived/review/v1/out/check/build/rectangle.png +0 -0
  269. package/templates/example-direction/derived/review/v1/out/check/build/run.json +40 -0
  270. package/templates/example-direction/derived/review/v1/out/check/build/skeleton.atlas +8 -0
  271. package/templates/example-direction/derived/review/v1/out/check/build/skeleton.json +73 -0
  272. package/templates/example-direction/derived/review/v1/out/check/build/skeleton.model.json +195 -0
  273. package/templates/example-direction/evidence/direction/v2.json +69 -0
  274. package/templates/example-direction/evidence/direction/v3.json +59 -0
  275. package/templates/example-direction/evidence/images/rectangle.png +0 -0
  276. package/templates/example-direction/evidence/input.json +69 -0
  277. package/templates/example-direction/evidence/motion.json +33 -0
  278. package/templates/example-direction/evidence/patch.json +23 -0
  279. package/templates/example-direction/evidence/rig-config.json +55 -0
  280. package/templates/example-direction/evidence/still.png +0 -0
  281. package/templates/example-direction/project.json +372 -0
  282. package/templates/example-direction/reasoning.txt +1 -0
  283. package/templates/example-direction/words.txt +1 -0
  284. package/templates/example-draft/README.md +28 -0
  285. package/templates/example-draft/config.json +71 -0
  286. package/templates/example-draft/derived/drafts/lantern/config.json +71 -0
  287. package/templates/example-draft/derived/drafts/lantern/input/painting_in_rig.png +0 -0
  288. package/templates/example-draft/derived/drafts/lantern/input/parts/background.png +0 -0
  289. package/templates/example-draft/derived/drafts/lantern/input/parts/eye_l.png +0 -0
  290. package/templates/example-draft/derived/drafts/lantern/input/parts/eye_r.png +0 -0
  291. package/templates/example-draft/derived/drafts/lantern/input/parts/face.png +0 -0
  292. package/templates/example-draft/derived/drafts/lantern/input/parts/lantern.png +0 -0
  293. package/templates/example-draft/derived/drafts/lantern/input/parts/torso.png +0 -0
  294. package/templates/example-draft/derived/drafts/lantern/input/parts.json +188 -0
  295. package/templates/example-draft/derived/drafts/lantern/input/recomposite_rig.png +0 -0
  296. package/templates/example-draft/derived/drafts/lantern/interview-requirements.json +8 -0
  297. package/templates/example-draft/derived/drafts/lantern/out/check/build/run.json +40 -0
  298. package/templates/example-draft/derived/drafts/lantern/out/check/build/skeleton.atlas +28 -0
  299. package/templates/example-draft/derived/drafts/lantern/out/check/build/skeleton.json +193 -0
  300. package/templates/example-draft/derived/drafts/lantern/out/check/build/skeleton.model.json +483 -0
  301. package/templates/example-draft/derived/drafts/lantern/out/check/build/skeleton.png +0 -0
  302. package/templates/example-draft/derived/drafts/lantern/out/images/background.png +0 -0
  303. package/templates/example-draft/derived/drafts/lantern/out/images/eye_l.png +0 -0
  304. package/templates/example-draft/derived/drafts/lantern/out/images/eye_r.png +0 -0
  305. package/templates/example-draft/derived/drafts/lantern/out/images/face.png +0 -0
  306. package/templates/example-draft/derived/drafts/lantern/out/images/lantern.png +0 -0
  307. package/templates/example-draft/derived/drafts/lantern/out/images/torso.png +0 -0
  308. package/templates/example-draft/derived/drafts/lantern/out/mesh_report.json +1 -0
  309. package/templates/example-draft/derived/drafts/lantern/out/motion.json +137 -0
  310. package/templates/example-draft/derived/drafts/lantern/out/rig.json +102 -0
  311. package/templates/example-draft/derived/drafts/lantern/out/run.json +52 -0
  312. package/templates/example-draft/derived/parts/rig/painting_in_rig.png +0 -0
  313. package/templates/example-draft/derived/parts/rig/parts/background.png +0 -0
  314. package/templates/example-draft/derived/parts/rig/parts/eye_l.png +0 -0
  315. package/templates/example-draft/derived/parts/rig/parts/eye_r.png +0 -0
  316. package/templates/example-draft/derived/parts/rig/parts/face.png +0 -0
  317. package/templates/example-draft/derived/parts/rig/parts/lantern.png +0 -0
  318. package/templates/example-draft/derived/parts/rig/parts/torso.png +0 -0
  319. package/templates/example-draft/derived/parts/rig/parts.json +188 -0
  320. package/templates/example-draft/derived/parts/rig/recomposite_rig.png +0 -0
  321. package/templates/example-draft/derived/review/v1/config.json +71 -0
  322. package/templates/example-draft/derived/review/v1/interview-requirements.json +8 -0
  323. package/templates/example-draft/derived/review/v1/out/check/build/run.json +40 -0
  324. package/templates/example-draft/derived/review/v1/out/check/build/skeleton.atlas +28 -0
  325. package/templates/example-draft/derived/review/v1/out/check/build/skeleton.json +193 -0
  326. package/templates/example-draft/derived/review/v1/out/check/build/skeleton.model.json +483 -0
  327. package/templates/example-draft/derived/review/v1/out/check/build/skeleton.png +0 -0
  328. package/templates/example-draft/derived/review/v1/out/parts/background.png +0 -0
  329. package/templates/example-draft/derived/review/v1/out/parts/eye_l.png +0 -0
  330. package/templates/example-draft/derived/review/v1/out/parts/eye_r.png +0 -0
  331. package/templates/example-draft/derived/review/v1/out/parts/face.png +0 -0
  332. package/templates/example-draft/derived/review/v1/out/parts/lantern.png +0 -0
  333. package/templates/example-draft/derived/review/v1/out/parts/torso.png +0 -0
  334. package/templates/example-draft/derived/review/v1/out/parts.json +188 -0
  335. package/templates/example-draft/derived/review/v1/out/rig/images/background.png +0 -0
  336. package/templates/example-draft/derived/review/v1/out/rig/images/eye_l.png +0 -0
  337. package/templates/example-draft/derived/review/v1/out/rig/images/eye_r.png +0 -0
  338. package/templates/example-draft/derived/review/v1/out/rig/images/face.png +0 -0
  339. package/templates/example-draft/derived/review/v1/out/rig/images/lantern.png +0 -0
  340. package/templates/example-draft/derived/review/v1/out/rig/images/torso.png +0 -0
  341. package/templates/example-draft/derived/review/v1/out/rig/mesh_report.json +1 -0
  342. package/templates/example-draft/derived/review/v1/out/rig/motion.json +137 -0
  343. package/templates/example-draft/derived/review/v1/out/rig/rig.json +102 -0
  344. package/templates/example-draft/derived/review/v1/out/rig/run.json +52 -0
  345. package/templates/example-draft/derived/review/v2/config.json +71 -0
  346. package/templates/example-draft/derived/review/v2/interview-requirements.json +8 -0
  347. package/templates/example-draft/derived/review/v2/out/check/build/run.json +40 -0
  348. package/templates/example-draft/derived/review/v2/out/check/build/skeleton.atlas +28 -0
  349. package/templates/example-draft/derived/review/v2/out/check/build/skeleton.json +193 -0
  350. package/templates/example-draft/derived/review/v2/out/check/build/skeleton.model.json +483 -0
  351. package/templates/example-draft/derived/review/v2/out/check/build/skeleton.png +0 -0
  352. package/templates/example-draft/derived/review/v2/out/parts/background.png +0 -0
  353. package/templates/example-draft/derived/review/v2/out/parts/eye_l.png +0 -0
  354. package/templates/example-draft/derived/review/v2/out/parts/eye_r.png +0 -0
  355. package/templates/example-draft/derived/review/v2/out/parts/face.png +0 -0
  356. package/templates/example-draft/derived/review/v2/out/parts/lantern.png +0 -0
  357. package/templates/example-draft/derived/review/v2/out/parts/torso.png +0 -0
  358. package/templates/example-draft/derived/review/v2/out/parts.json +188 -0
  359. package/templates/example-draft/derived/review/v2/out/rig/images/background.png +0 -0
  360. package/templates/example-draft/derived/review/v2/out/rig/images/eye_l.png +0 -0
  361. package/templates/example-draft/derived/review/v2/out/rig/images/eye_r.png +0 -0
  362. package/templates/example-draft/derived/review/v2/out/rig/images/face.png +0 -0
  363. package/templates/example-draft/derived/review/v2/out/rig/images/lantern.png +0 -0
  364. package/templates/example-draft/derived/review/v2/out/rig/images/torso.png +0 -0
  365. package/templates/example-draft/derived/review/v2/out/rig/mesh_report.json +1 -0
  366. package/templates/example-draft/derived/review/v2/out/rig/motion.json +137 -0
  367. package/templates/example-draft/derived/review/v2/out/rig/rig.json +102 -0
  368. package/templates/example-draft/derived/review/v2/out/rig/run.json +52 -0
  369. package/templates/example-draft/evidence/diff-components.json +71 -0
  370. package/templates/example-draft/evidence/direction/v4.json +64 -0
  371. package/templates/example-draft/evidence/direction-input-v4.json +64 -0
  372. package/templates/example-draft/evidence/fix-ledger/lantern.json +17 -0
  373. package/templates/example-draft/evidence/parts-check.json +127 -0
  374. package/templates/example-draft/evidence/parts-review.json +88 -0
  375. package/templates/example-draft/evidence/review-reads/4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05.json +59 -0
  376. package/templates/example-draft/evidence/scene/s1.json +65 -0
  377. package/templates/example-draft/evidence/scene-background.png +0 -0
  378. package/templates/example-draft/evidence/scene-citations.json +9 -0
  379. package/templates/example-draft/evidence/structure-decisions.json +9 -0
  380. package/templates/example-draft/evidence/v1/interview-config.json +71 -0
  381. package/templates/example-draft/evidence/v1/interview-requirements.json +8 -0
  382. package/templates/example-draft/evidence/v1/review-config.json +71 -0
  383. package/templates/example-draft/evidence/v2/interview-config.json +71 -0
  384. package/templates/example-draft/evidence/v2/interview-requirements.json +8 -0
  385. package/templates/example-draft/evidence/v2/review-config.json +71 -0
  386. package/templates/example-draft/input/painting_in_rig.png +0 -0
  387. package/templates/example-draft/input/parts/background.png +0 -0
  388. package/templates/example-draft/input/parts/eye_l.png +0 -0
  389. package/templates/example-draft/input/parts/eye_r.png +0 -0
  390. package/templates/example-draft/input/parts/face.png +0 -0
  391. package/templates/example-draft/input/parts/lantern.png +0 -0
  392. package/templates/example-draft/input/parts/torso.png +0 -0
  393. package/templates/example-draft/input/parts.json +188 -0
  394. package/templates/example-draft/input/recomposite_rig.png +0 -0
  395. package/templates/example-draft/inputs/painting.png +0 -0
  396. package/templates/example-draft/interview-requirements.json +8 -0
  397. package/templates/example-draft/out/check/build/run.json +40 -0
  398. package/templates/example-draft/out/check/build/skeleton.atlas +28 -0
  399. package/templates/example-draft/out/check/build/skeleton.json +193 -0
  400. package/templates/example-draft/out/check/build/skeleton.model.json +483 -0
  401. package/templates/example-draft/out/check/build/skeleton.png +0 -0
  402. package/templates/example-draft/out/images/background.png +0 -0
  403. package/templates/example-draft/out/images/eye_l.png +0 -0
  404. package/templates/example-draft/out/images/eye_r.png +0 -0
  405. package/templates/example-draft/out/images/face.png +0 -0
  406. package/templates/example-draft/out/images/lantern.png +0 -0
  407. package/templates/example-draft/out/images/torso.png +0 -0
  408. package/templates/example-draft/out/mesh_report.json +1 -0
  409. package/templates/example-draft/out/motion.json +137 -0
  410. package/templates/example-draft/out/rig.json +102 -0
  411. package/templates/example-draft/out/run.json +52 -0
  412. package/templates/example-draft/outputs/v1/out/check/build/run.json +40 -0
  413. package/templates/example-draft/outputs/v1/out/check/build/skeleton.atlas +28 -0
  414. package/templates/example-draft/outputs/v1/out/check/build/skeleton.json +193 -0
  415. package/templates/example-draft/outputs/v1/out/check/build/skeleton.model.json +483 -0
  416. package/templates/example-draft/outputs/v1/out/check/build/skeleton.png +0 -0
  417. package/templates/example-draft/outputs/v1/out/painting_in_rig.png +0 -0
  418. package/templates/example-draft/outputs/v1/out/parts/background.png +0 -0
  419. package/templates/example-draft/outputs/v1/out/parts/eye_l.png +0 -0
  420. package/templates/example-draft/outputs/v1/out/parts/eye_r.png +0 -0
  421. package/templates/example-draft/outputs/v1/out/parts/face.png +0 -0
  422. package/templates/example-draft/outputs/v1/out/parts/lantern.png +0 -0
  423. package/templates/example-draft/outputs/v1/out/parts/torso.png +0 -0
  424. package/templates/example-draft/outputs/v1/out/parts.json +188 -0
  425. package/templates/example-draft/outputs/v1/out/rig/images/background.png +0 -0
  426. package/templates/example-draft/outputs/v1/out/rig/images/eye_l.png +0 -0
  427. package/templates/example-draft/outputs/v1/out/rig/images/eye_r.png +0 -0
  428. package/templates/example-draft/outputs/v1/out/rig/images/face.png +0 -0
  429. package/templates/example-draft/outputs/v1/out/rig/images/lantern.png +0 -0
  430. package/templates/example-draft/outputs/v1/out/rig/images/torso.png +0 -0
  431. package/templates/example-draft/outputs/v1/out/rig/mesh_report.json +1 -0
  432. package/templates/example-draft/outputs/v1/out/rig/motion.json +137 -0
  433. package/templates/example-draft/outputs/v1/out/rig/rig.json +102 -0
  434. package/templates/example-draft/outputs/v1/out/rig/run.json +52 -0
  435. package/templates/example-draft/outputs/v2/out/check/build/run.json +40 -0
  436. package/templates/example-draft/outputs/v2/out/check/build/skeleton.atlas +28 -0
  437. package/templates/example-draft/outputs/v2/out/check/build/skeleton.json +193 -0
  438. package/templates/example-draft/outputs/v2/out/check/build/skeleton.model.json +483 -0
  439. package/templates/example-draft/outputs/v2/out/check/build/skeleton.png +0 -0
  440. package/templates/example-draft/outputs/v2/out/painting_in_rig.png +0 -0
  441. package/templates/example-draft/outputs/v2/out/parts/background.png +0 -0
  442. package/templates/example-draft/outputs/v2/out/parts/eye_l.png +0 -0
  443. package/templates/example-draft/outputs/v2/out/parts/eye_r.png +0 -0
  444. package/templates/example-draft/outputs/v2/out/parts/face.png +0 -0
  445. package/templates/example-draft/outputs/v2/out/parts/lantern.png +0 -0
  446. package/templates/example-draft/outputs/v2/out/parts/torso.png +0 -0
  447. package/templates/example-draft/outputs/v2/out/parts.json +188 -0
  448. package/templates/example-draft/outputs/v2/out/rig/images/background.png +0 -0
  449. package/templates/example-draft/outputs/v2/out/rig/images/eye_l.png +0 -0
  450. package/templates/example-draft/outputs/v2/out/rig/images/eye_r.png +0 -0
  451. package/templates/example-draft/outputs/v2/out/rig/images/face.png +0 -0
  452. package/templates/example-draft/outputs/v2/out/rig/images/lantern.png +0 -0
  453. package/templates/example-draft/outputs/v2/out/rig/images/torso.png +0 -0
  454. package/templates/example-draft/outputs/v2/out/rig/mesh_report.json +1 -0
  455. package/templates/example-draft/outputs/v2/out/rig/motion.json +137 -0
  456. package/templates/example-draft/outputs/v2/out/rig/rig.json +102 -0
  457. package/templates/example-draft/outputs/v2/out/rig/run.json +52 -0
  458. package/templates/example-interview-choice.json +1068 -0
  459. package/templates/example-interview-options/constraint.json +376 -0
  460. package/templates/example-interview-options/example-assemble.json +376 -0
  461. package/templates/example-interview-options/example-bones.json +190 -0
  462. package/templates/example-interview-options/example-camera-depth.json +99 -0
  463. package/templates/example-interview-options/example-constraints.json +272 -0
  464. package/templates/example-interview-options/example-meshes.json +190 -0
  465. package/templates/example-interview-options/example-motion.json +272 -0
  466. package/templates/example-interview-options/example-picks.json +15 -0
  467. package/templates/example-interview-options/example-post-composition.json +110 -0
  468. package/templates/example-interview-options/example-post-timing.json +105 -0
  469. package/templates/example-interview-options/example-reference.json +63 -0
  470. package/templates/example-interview-options/example-rig-type.json +63 -0
  471. package/templates/example-interview-options/example-seethrough.json +190 -0
  472. package/templates/example-interview-options/fullscreen.json +63 -0
  473. package/templates/example-interview-options/other-explicit.json +63 -0
  474. package/templates/example-interview-options/other-pending.json +63 -0
  475. package/templates/example-interview-options/other-picks.json +16 -0
  476. package/templates/example-interview.md +213 -0
  477. package/templates/example-invariants/invariants.json +1339 -0
  478. package/templates/example-prepared/prepared.svg +1 -0
  479. package/templates/example-prepared/source.svg +1 -0
  480. package/templates/example-project.json +4259 -0
  481. package/templates/example-remesh/AGENTS.md +134 -0
  482. package/templates/example-remesh/CLAUDE.md +3 -0
  483. package/templates/example-remesh/evidence/.gitkeep +0 -0
  484. package/templates/example-remesh/evidence/approval.txt +1 -0
  485. package/templates/example-remesh/evidence/captions.json +101 -0
  486. package/templates/example-remesh/evidence/diff-components.json +34 -0
  487. package/templates/example-remesh/evidence/direction/v4.json +74 -0
  488. package/templates/example-remesh/evidence/direction/v5.json +74 -0
  489. package/templates/example-remesh/evidence/direction-input-v4.json +74 -0
  490. package/templates/example-remesh/evidence/direction-input-v5.json +74 -0
  491. package/templates/example-remesh/evidence/interview/assemble.json +309 -0
  492. package/templates/example-remesh/evidence/interview/bones.json +190 -0
  493. package/templates/example-remesh/evidence/interview/camera_depth.json +103 -0
  494. package/templates/example-remesh/evidence/interview/constraints.json +272 -0
  495. package/templates/example-remesh/evidence/interview/meshes.json +190 -0
  496. package/templates/example-remesh/evidence/interview/motion.json +272 -0
  497. package/templates/example-remesh/evidence/interview/post_composition.json +123 -0
  498. package/templates/example-remesh/evidence/interview/post_timing.json +103 -0
  499. package/templates/example-remesh/evidence/interview/reference.json +59 -0
  500. package/templates/example-remesh/evidence/interview/rig_type.json +59 -0
  501. package/templates/example-remesh/evidence/interview/seethrough.json +186 -0
  502. package/templates/example-remesh/evidence/parts-check.json +127 -0
  503. package/templates/example-remesh/evidence/parts-review.json +88 -0
  504. package/templates/example-remesh/evidence/reopen.txt +1 -0
  505. package/templates/example-remesh/evidence/review-reads/6a17db694db96f1b6049a61a017e0c8e66757b982b8851e0187e561cfcf9af68.json +59 -0
  506. package/templates/example-remesh/evidence/scene/s1.json +69 -0
  507. package/templates/example-remesh/evidence/scene-citations.json +9 -0
  508. package/templates/example-remesh/evidence/setup.png +0 -0
  509. package/templates/example-remesh/evidence/split-config.json +1 -0
  510. package/templates/example-remesh/evidence/structure.json +30 -0
  511. package/templates/example-remesh/evidence/v1/registration/at-source.json +44 -0
  512. package/templates/example-remesh/evidence/v1/registration/citations.json +68 -0
  513. package/templates/example-remesh/evidence/v1/registration/compile-report.json +368 -0
  514. package/templates/example-remesh/evidence/v1/registration/config-source.json +88 -0
  515. package/templates/example-remesh/evidence/v1/registration/config.json +88 -0
  516. package/templates/example-remesh/evidence/v1/registration/interview-requirements.json +8 -0
  517. package/templates/example-remesh/evidence/v1/registration/package-lock.json +11 -0
  518. package/templates/example-remesh/evidence/v1/registration/path-adapter.json +1 -0
  519. package/templates/example-remesh/evidence/v1/registration/rigc-run-1.json +44 -0
  520. package/templates/example-remesh/evidence/v2/registration/at-source.json +44 -0
  521. package/templates/example-remesh/evidence/v2/registration/citations.json +68 -0
  522. package/templates/example-remesh/evidence/v2/registration/compile-report.json +368 -0
  523. package/templates/example-remesh/evidence/v2/registration/config-source.json +88 -0
  524. package/templates/example-remesh/evidence/v2/registration/config.json +88 -0
  525. package/templates/example-remesh/evidence/v2/registration/interview-requirements.json +8 -0
  526. package/templates/example-remesh/evidence/v2/registration/package-lock.json +11 -0
  527. package/templates/example-remesh/evidence/v2/registration/path-adapter.json +1 -0
  528. package/templates/example-remesh/evidence/v2/registration/rigc-run-1.json +44 -0
  529. package/templates/example-remesh/evidence/v3/registration/at-source.json +44 -0
  530. package/templates/example-remesh/evidence/v3/registration/citations.json +68 -0
  531. package/templates/example-remesh/evidence/v3/registration/compile-report.json +368 -0
  532. package/templates/example-remesh/evidence/v3/registration/config-source.json +88 -0
  533. package/templates/example-remesh/evidence/v3/registration/config.json +88 -0
  534. package/templates/example-remesh/evidence/v3/registration/interview-requirements.json +8 -0
  535. package/templates/example-remesh/evidence/v3/registration/package-lock.json +11 -0
  536. package/templates/example-remesh/evidence/v3/registration/path-adapter.json +1 -0
  537. package/templates/example-remesh/evidence/v3/registration/rigc-run-1.json +44 -0
  538. package/templates/example-remesh/inputs/background.png +0 -0
  539. package/templates/example-remesh/inputs/painting.png +0 -0
  540. package/templates/example-remesh/inputs/references/.gitkeep +0 -0
  541. package/templates/example-remesh/package.json +9 -0
  542. package/templates/example-remesh/project.json +3916 -0
  543. package/templates/example-reopened/project.json +4568 -0
  544. package/templates/example-review/config.json +1 -0
  545. package/templates/example-review/out/check/build/skeleton.model.json +1 -0
  546. package/templates/example-review/out/parts/piece.svg +1 -0
  547. package/templates/example-review/out/parts.json +1 -0
  548. package/templates/example-review/out/rig/mesh_report.json +1 -0
  549. package/templates/example-review/out/rig/motion.json +1 -0
  550. package/templates/example-review/out/rig/rig.json +1 -0
  551. package/templates/example-split/captions.json +357 -0
  552. package/templates/example-split/config.json +215 -0
  553. package/templates/legacy-example-project.json +1071 -0
  554. package/templates/project.json +199 -0
  555. package/templates/shared/conventions.json +23 -0
package/docs/SOURCE.md ADDED
@@ -0,0 +1,225 @@
1
+ # Source: the layer split and the cut
2
+
3
+ Most bounces are decided before a bone exists: at the layer split (See-through)
4
+ and at the cut. This page is what to do there, in what order, and why. Read it
5
+ before `seethrough` and before `assemble`.
6
+
7
+ It is the working order, not the machine contract. The contract — which fields,
8
+ which lines `assemble` prints, which refusals fire — is in rig-c/parts
9
+ [AUTHORING.md](https://github.com/rig-c/parts/blob/v2.37.0/docs/AUTHORING.md)
10
+ and its [README](https://github.com/rig-c/parts/blob/v2.37.0/README.md), linked
11
+ here at the version a new project pins (2.37.0) and not copied. In a project, read
12
+ the same files under `node_modules/@rig-c/parts/`.
13
+
14
+ Every rule carries its source: a parts section, an owner ruling with its date,
15
+ or a pilot measurement with its date.
16
+
17
+ ## The order
18
+
19
+ 1. [Upscale a small source](#upscale-a-small-source-first), before it goes into
20
+ `inputs/`.
21
+ 2. [Run the split twice](#two-passes-the-whole-figure-then-the-head): the whole
22
+ figure, then the head.
23
+ 3. [Check the split](#look-at-the-split-before-calling-it-good): pairs, hidden
24
+ surface, doubled outlines, specks and holes.
25
+ 4. [Re-run first](#re-run-first) when it is bad. Several runs before any cut.
26
+ 5. [Cut only for structure](#where-a-cut-is-allowed), and at a limb only at its
27
+ joint.
28
+ 6. [Edit in the image editor, with a receipt](#the-editor-rung), when re-runs
29
+ cannot fix a visible-pixel defect.
30
+ 7. [Check density](#density-the-split-against-the-rig) and
31
+ [mixed sources](#mixed-sources) before `assemble` is called done.
32
+
33
+ ## The layer split
34
+
35
+ ### Upscale a small source first
36
+
37
+ A painting smaller than the rig needs is upscaled before the split, with a 4x
38
+ anime upscaler: the RGB upscaled on a black matte, the alpha upscaled separately
39
+ as grey, then the two recombined un-premultiplied and alpha below 8 clipped to 0.
40
+ A painting already in `inputs/` gets its upscale as a new input; inputs are never
41
+ edited.
42
+
43
+ - **Why**: See-through and every later stage can only lose detail. Upscaling RGB
44
+ and alpha apart keeps the matte colour out of the edge, which an upscale of the
45
+ composited image does not.
46
+ - **A light fringe is not from such an upscale.** When a light halo shows along
47
+ an edge, look for a step later in the chain that flattened the image on white.
48
+ - *Source*: owner ruling, 2026-10-29/31 (recipe); pilot measurement, 2026-11-03
49
+ (the fringe).
50
+
51
+ ### Two passes: the whole figure, then the head
52
+
53
+ Run See-through on the whole figure (`st_input_full.png`), then on the head crop
54
+ on its own (`st_input_head.png`, cut by `rig-parts inputs` from
55
+ `seethrough.head_box`).
56
+
57
+ - **Why**: on every route that was read, the model's own head stage pastes the
58
+ face back at the full run's pixel density. The separate head run is what gives
59
+ the eyes their pixels.
60
+ - *Source*: parts AUTHORING
61
+ [*See-through head-run source reading*](https://github.com/rig-c/parts/blob/v2.37.0/docs/AUTHORING.md#see-through-head-run-source-reading);
62
+ the routes in the parts README,
63
+ [*Getting See-through layers*](https://github.com/rig-c/parts/blob/v2.37.0/README.md#getting-see-through-layers).
64
+
65
+ ### Resolution: check the memory first
66
+
67
+ Read the model's memory requirement before raising the run's `resolution`. "The
68
+ wrapper accepts it" is not "it fits": a 2048 run needs about 24 GB. Do not raise
69
+ the full run's resolution to buy face detail; the face gets its density from the
70
+ head pass.
71
+
72
+ - **Why**: a run that does not fit fails or falls back silently, and the time is
73
+ lost either way; the head pass already does what the higher resolution was for.
74
+ - *Source*: owner ruling, 2026-10-29/31; pilot measurement, 2026-11-03.
75
+
76
+ ### Look at the split before calling it good
77
+
78
+ Before `assemble`, on the raw layers:
79
+
80
+ - **Pairs** (left/right bust, eyes, hair ends, hem panels): both present,
81
+ comparable area, mirrored edge placement, measured on the layers and compared
82
+ with the same measure on the painting, so an asymmetry the painting has is not
83
+ flagged ([CRAFT.md G8](CRAFT.md#for-the-gates-not-the-interview)).
84
+ - **Hidden surface**: under every part that will move over another, the part
85
+ behind is painted (amodal), not empty.
86
+ - **No doubled outline**: an edge drawn twice, once on each of two layers, is a
87
+ ghost.
88
+ - **Specks and holes**, counted on each layer PNG straight out of See-through, on
89
+ a sentinel colour ([LESSONS.md](LESSONS.md#specks-and-holes-in-the-split-layers),
90
+ [CRAFT.md G9](CRAFT.md#for-the-gates-not-the-interview)).
91
+ - **Why**: every one of these is cheaper to fix here than after `assemble`,
92
+ where it is mixed with cut and draw-order effects.
93
+ - *Source*: owner ruling, 2026-10-29/31; owner ruling, 2026-11-03 (specks and
94
+ holes).
95
+
96
+ ### Re-run first
97
+
98
+ When the split is bad — an uneven pair, a poor hidden surface behind an arm, a
99
+ ghost, specks or holes — re-run before anything else, and record what each run
100
+ measured:
101
+
102
+ 1. another layer or run: `full` versus `head`, another tag, `assemble.alternates`;
103
+ 2. a tighter crop pass of the bad region, on its own;
104
+ 3. other settings (a resolution that fits in memory, another run of the same input).
105
+
106
+ Several runs are cheaper than one bounce. Only when re-runs cannot fix a
107
+ visible-pixel defect does the [editor rung](#the-editor-rung) come next.
108
+
109
+ - **Why**: a defect in the split is a source problem, and a source problem
110
+ patched downstream comes back at every motion extreme.
111
+ - *Source*: parts AUTHORING
112
+ [*Source before scissors*](https://github.com/rig-c/parts/blob/v2.37.0/docs/AUTHORING.md#source-before-scissors)
113
+ (the repair ladder: another layer or run, a re-run, then config); owner ruling,
114
+ 2026-10-29/31 (re-run first, several runs before a cut).
115
+
116
+ ## Cutting
117
+
118
+ ### Where a cut is allowed
119
+
120
+ **Scissors are for structure, never for repair.** A cut (`assemble.cuts`, a patch,
121
+ an `author:<label>` layer) is admitted only to separate something that must move
122
+ or draw on its own and has no layer:
123
+
124
+ - a joint (an arm or a leg, [below](#at-a-limb-joint));
125
+ - an accessory still inside its parent's layer;
126
+ - a rear piece that needs its own draw position;
127
+ - **a draw-order split**: two arms on opposite sides of a held object are
128
+ separate parts, even though they never move apart.
129
+
130
+ A tear, ghost, smudge, stray outline or seam is repaired from the source (the
131
+ [re-run ladder](#re-run-first)), never by a cut-out or an under-piece. No hand
132
+ polygon where the piece has no material past its joint: no source means stop and
133
+ name the gap.
134
+
135
+ - **Why**: a polygon cut supplies no material for the turn it is meant to allow,
136
+ so it tears at the edge in motion; a cut over a defect hides it at rest and
137
+ shows it moving.
138
+ - *Source*: parts AUTHORING
139
+ [*Source before scissors*](https://github.com/rig-c/parts/blob/v2.37.0/docs/AUTHORING.md#source-before-scissors)
140
+ (scissors for structure, the cases a cut fits, no material past the joint) and
141
+ its paragraph *A layer the author made*; owner ruling, 2026-10-29/31; pilot
142
+ measurement, 2026-11-03 (the draw-order split).
143
+
144
+ ### At a limb joint
145
+
146
+ At an arm or leg joint, and only there: cut in the image editor and round the
147
+ seam with its smudge tool. The limb is still separate rigid parts, one bone each;
148
+ it is never one mesh bent across the joint (`LIMB_ONE_BONE`).
149
+
150
+ - **Why**: a limb cut anywhere else, or bent as one mesh, shows a straight edge
151
+ or a grotesque bend.
152
+ - *Source*: parts AUTHORING
153
+ [*Limbs: cut at their joints*](https://github.com/rig-c/parts/blob/v2.37.0/docs/AUTHORING.md#limbs-cut-at-their-joints-limbs-issue-349);
154
+ [CRAFT.md A2](CRAFT.md#a2-limbs-that-bend-are-cut-at-the-joint-and-rounded);
155
+ owner ruling, 2026-10-29/31.
156
+
157
+ ### The editor rung
158
+
159
+ The rung after re-runs: a piece taken from the painting along its painted
160
+ outlines, in an image editor, with See-through's own alpha loaded as the
161
+ selection where no line is painted. Refine the edge with a slight outward shift
162
+ and feather 0. Missing material: content-aware fill, clone stamp, healing brush.
163
+ Every edit leaves a receipt: the commands, the input and output hashes, and a
164
+ layered file saved beside the PNG.
165
+
166
+ **Never a polygon in code or config, and never a per-pixel repair in code.**
167
+ See-through stays the source for hidden surface.
168
+
169
+ One exception covers step-4 plates only: a receipted generative plate pass from a
170
+ package command is a source, not a repair. The parts plate command removes the
171
+ figure from the background, or mattes the foreground, using a mask from a source
172
+ (See-through figure layers or the declared figure mask). Its
173
+ `rig-parts-plate-receipt/1` receipt records the painting, mask, model, every
174
+ parameter, the GPU and the output by hash. Character parts and joints never take
175
+ this route.
176
+
177
+ Measured limits:
178
+
179
+ - an anti-aliased edge that sits inward reads light on white; the outward shift
180
+ fixes it;
181
+ - a fill holds flat colour but does not continue an outline.
182
+
183
+ - **Why**: an edit with a receipt can be checked and redone; a scripted edit
184
+ cannot be told from a defect ([CRAFT.md G6, G7](CRAFT.md#for-the-gates-not-the-interview)).
185
+ - *Source*: owner ruling, 2026-10-29/31 (editor and receipt, the fill limit);
186
+ pilot measurement, 2026-11-03 (outline selection, alpha where no line, shift
187
+ outward, feather 0, the inward-edge limit).
188
+
189
+ ### Feather only continuous skin
190
+
191
+ Feather a cut face only on continuous skin (a bare arm below a short sleeve);
192
+ keep a designed cut face (a cuff, an armour plate) crisp.
193
+
194
+ - *Source*: [CRAFT.md A3](CRAFT.md#a3-soften-a-cut-through-skin-not-a-designed-edge);
195
+ owner ruling, 2026-10-29/31.
196
+
197
+ ## Density: the split against the rig
198
+
199
+ When the split's canvas is coarser than the rig, every split layer is upscaled
200
+ into the rig and reads softer than the painting. Measure the edge rise width
201
+ (10–90 % of the step, across an outline) on the parts and on the painting at the
202
+ same place. A rig scale near the guide value (parts AUTHORING, `assemble.rig_scale`
203
+ in [*`config.json`, field by field*](https://github.com/rig-c/parts/blob/v2.37.0/docs/AUTHORING.md#3-configjson-field-by-field):
204
+ the figure about 1,100 to 1,200 rig px tall) can close it. When the guide value
205
+ is at least as good on every figure measured, the guide value wins.
206
+
207
+ - **Why**: softness is not a seam, so no bar reads it, and it shows only beside
208
+ the painting.
209
+ - *Source*: pilot measurement, 2026-11-03.
210
+
211
+ ## Mixed sources
212
+
213
+ When a plan mixes runs (`full` and `head`), keep every run's manifest
214
+ (`layers.json`) entries listed, including the entries the plan does not take from
215
+ that run. Do not unlist the other run's copies of those regions.
216
+
217
+ - **Why**: an entry that no planned part takes still holds depth ownership
218
+ (`pixelOwners`) in its run, which stops a neighbouring planned part from
219
+ claiming its pixels. Measured on a pilot (`full` + `head`, same layer PNGs byte
220
+ for byte), unlisting the unused entries changed 12 of 24 planned parts (`face`
221
+ 5,424 px, `hair_back` 2,679 px, `neck` 1,575 px, `hair_front` 402 px, and 8
222
+ parts under 100 px) and baked the face and eyes into the back hair, hair
223
+ strands into the face, and the chin line into the neck; with the entries kept
224
+ listed, all three were clean.
225
+ - *Source*: pilot measurement, 2026-11-07.
package/package.json CHANGED
@@ -1,6 +1,46 @@
1
1
  {
2
2
  "name": "@rig-c/create",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.1",
4
+ "type": "module",
5
+ "description": "Create a rig project: its folder, decision record, repository and pinned rig-c packages",
6
+ "license": "MIT",
7
+ "files": [
8
+ "src/",
9
+ "templates/",
10
+ "README.md",
11
+ "LICENSE",
12
+ "docs/PROJECT.md",
13
+ "docs/INTERVIEW.md",
14
+ "docs/CHECKS.md",
15
+ "docs/COLLECTIONS.md",
16
+ "docs/CRAFT.md",
17
+ "docs/SOURCE.md",
18
+ "docs/LESSONS.md"
19
+ ],
20
+ "bin": {
21
+ "rig-create": "src/cli.ts"
22
+ },
23
+ "scripts": {
24
+ "typecheck": "tsc --noEmit",
25
+ "lint": "eslint .",
26
+ "test": "bun test"
27
+ },
28
+ "dependencies": {
29
+ "@rig-c/core": "3.7.0",
30
+ "@rig-c/parts": "2.37.0",
31
+ "@rig-c/review": "4.0.0"
32
+ },
33
+ "devDependencies": {
34
+ "@types/bun": "^1.3.0",
35
+ "eslint": "^10.11.0",
36
+ "typescript": "^5.9.3",
37
+ "typescript-eslint": "^8.70.1"
38
+ },
39
+ "engines": {
40
+ "bun": ">=1.4.0"
41
+ },
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/rig-c/create.git"
45
+ }
46
+ }
@@ -0,0 +1,27 @@
1
+ import { asArray, collectionQuestion, isObject, type Ctx } from './check.ts';
2
+ import { AGENT_BOUNCE_SINCE } from './stages.ts';
3
+ import type { JsonObject } from './templates.ts';
4
+
5
+ /** A mid-step rejection is history, separate from human version verdicts. */
6
+ export function checkAgentBounces(ctx: Ctx): void {
7
+ const records = new Map<string, JsonObject>();
8
+ for (const item of ctx.items) {
9
+ records.set(item.path.replace(/\.(answer|guide)$/, ''), item.record);
10
+ if (isObject(item.raw) && item.raw.basis === 'inherited' && isObject(item.raw.from) && typeof item.raw.from.question === 'string' && ctx.collection !== null) {
11
+ const question = collectionQuestion(ctx.collection, item.raw.from.question);
12
+ if (question !== undefined) records.set(`collection.interview[${item.raw.from.question}]`, question);
13
+ }
14
+ }
15
+ for (const [base, record] of records) asArray(record.history).forEach((entry, i) => {
16
+ if (!isObject(entry) || !('bounce' in entry)) return;
17
+ const bounce = entry.bounce;
18
+ if (isObject(bounce) && bounce.cause === 'agent' && ['failed', 'bar', 'replacement'].every((k) => typeof bounce[k] === 'string' && (bounce[k] as string).trim() !== '')) return;
19
+ const at = typeof entry.at === 'string' ? Date.parse(entry.at) : Number.NaN;
20
+ const legacy = !Number.isFinite(at) || at < Date.parse(AGENT_BOUNCE_SINCE);
21
+ const path = `${base}.history[${i}].bounce`;
22
+ (legacy ? ctx.warnings : ctx.refusals).push({
23
+ code: legacy ? 'AGENT_BOUNCE_LEGACY' : 'AGENT_BOUNCE_MALFORMED', path,
24
+ message: `${path}: needs { cause: 'agent', failed, bar, replacement } with non-empty text${legacy ? `; history entry predates ${AGENT_BOUNCE_SINCE} or has no readable at; kept as legacy` : ''}`,
25
+ });
26
+ });
27
+ }
@@ -0,0 +1,237 @@
1
+ import { writeFileSync } from 'node:fs';
2
+ import { readFileSync } from './check-reads.ts';
3
+ import { join } from 'node:path';
4
+
5
+ import { PINNED_PACKAGES } from './pins.ts';
6
+ import { TEMPLATES_DIR } from './templates.ts';
7
+
8
+ /**
9
+ * create's own docs are linked on GitHub at `main`: create is not installed in
10
+ * a project, it has no published version or tag to pin to, and init already
11
+ * points at `main` for the interview (init.ts). A commit pin would send every
12
+ * new project to docs that were already stale when it was made.
13
+ */
14
+ export const CREATE_DOCS_BASE = 'https://github.com/rig-c/create/blob/main/';
15
+
16
+ export type PinnedPackage = keyof typeof PINNED_PACKAGES;
17
+
18
+ export interface PackageDoc {
19
+ package: PinnedPackage;
20
+ /** Path inside the installed package, as `npm pack --dry-run` lists it. */
21
+ path: string;
22
+ /** Why and when to read it. Says what the document is for, never what it says. */
23
+ why: string;
24
+ }
25
+
26
+ /**
27
+ * The installed packages' documents the guide links, checked against the files
28
+ * each pinned version ships (`npm pack --dry-run`). A pin bump is an edit here,
29
+ * and the network test fails if a listed path is not in the installed package.
30
+ *
31
+ * Shipped but left out on purpose:
32
+ * - core `docs/PROMPTING.md`: written for the person operating an agent; it
33
+ * says the agent should read AUTHORING.md instead.
34
+ * - core `docs/SPEC_COVERAGE.md`: core's AUTHORING.md calls it not an
35
+ * authoring input and leaves it unlinked.
36
+ */
37
+ export const PACKAGE_DOCS: readonly PackageDoc[] = [
38
+ {
39
+ package: '@rig-c/parts',
40
+ path: 'README.md',
41
+ why: 'painting-to-rig pipeline and command order',
42
+ },
43
+ {
44
+ package: '@rig-c/parts',
45
+ path: 'docs/AUTHORING.md',
46
+ why: 'config fields, interview waypoints and refusal remedies',
47
+ },
48
+ {
49
+ package: '@rig-c/parts',
50
+ path: 'docs/PAINTING.md',
51
+ why: 'what makes a painting riggable, and the check to run on it before See-through',
52
+ },
53
+ {
54
+ package: '@rig-c/parts',
55
+ path: 'docs/DEPTH.md',
56
+ why: 'when the plan has a head turn driven by depth',
57
+ },
58
+ {
59
+ package: '@rig-c/parts',
60
+ path: 'docs/STABILITY.md',
61
+ why: 'stable commands, fields and outputs',
62
+ },
63
+ {
64
+ package: '@rig-c/parts',
65
+ path: 'docs/MIGRATION.md',
66
+ why: 'only when the pinned version is bumped',
67
+ },
68
+ {
69
+ package: '@rig-c/core',
70
+ path: 'README.md',
71
+ why: 'rigc scope, commands and documentation',
72
+ },
73
+ {
74
+ package: '@rig-c/core',
75
+ path: 'docs/AUTHORING.md',
76
+ why: 'rig/motion formats, build loop and failure remedies',
77
+ },
78
+ {
79
+ package: '@rig-c/core',
80
+ path: 'docs/RIGGING.md',
81
+ why: 'bones and pivots at the bones waypoint',
82
+ },
83
+ {
84
+ package: '@rig-c/core',
85
+ path: 'docs/MOTION.md',
86
+ why: 'key-pose motions at the motion waypoint',
87
+ },
88
+ {
89
+ package: '@rig-c/core',
90
+ path: 'docs/FACE.md',
91
+ why: 'blink, gaze and head-turn plans',
92
+ },
93
+ {
94
+ package: '@rig-c/core',
95
+ path: 'docs/INGEST.md',
96
+ why: 'only when you were handed a skeleton this project did not author',
97
+ },
98
+ ];
99
+
100
+ export interface CreateDoc {
101
+ /** Path in the rig-c/create repository. */
102
+ path: string;
103
+ why: string;
104
+ }
105
+
106
+ export const CREATE_DOCS: readonly CreateDoc[] = [
107
+ {
108
+ path: 'docs/PROJECT.md',
109
+ why: 'the folder, stages and sign-offs, the plan, versions, and `project.json` field by field',
110
+ },
111
+ {
112
+ path: 'docs/INTERVIEW.md',
113
+ why: 'how to ask, and the shape every answer, delegation and piece of feedback takes',
114
+ },
115
+ {
116
+ path: 'docs/CRAFT.md',
117
+ why: 'the default to propose at each waypoint',
118
+ },
119
+ {
120
+ path: 'docs/COLLECTIONS.md',
121
+ why: 'when this project is a member of a collection',
122
+ },
123
+ ];
124
+
125
+ /** Links into create's docs that carry an anchor; the tests check each anchor is a heading. */
126
+ export const RESUME_LINK = { path: 'docs/PROJECT.md', anchor: 'how-an-agent-resumes-a-project' } as const;
127
+ export const DERIVED_LINK = { path: 'docs/INTERVIEW.md', anchor: 'derived-answers' } as const;
128
+ export const GATES_LINK = { path: 'docs/CRAFT.md', anchor: 'for-the-gates-not-the-interview' } as const;
129
+ export const DRAFTS_LINK = { path: 'docs/PROJECT.md', anchor: 'labelled-draft-rigs-and-structure-decisions' } as const;
130
+ export const STAGES_LINK = { path: 'docs/PROJECT.md', anchor: 'stages' } as const;
131
+ export const LIFETIME_LINK = { path: 'docs/PROJECT.md', anchor: 'data-is-split-by-lifetime' } as const;
132
+ export const INTAKE_LINK = { path: 'docs/PROJECT.md', anchor: 'advisory-intake-reports' } as const;
133
+ export const CG_GATES_LINK = { path: 'docs/CHECKS.md', anchor: 'cg-gates' } as const;
134
+ export const APPEARANCE_LINK = { path: 'docs/CHECKS.md', anchor: 'appearance-bar-wording' } as const;
135
+ export const BUST_LINK = { path: 'docs/CHECKS.md', anchor: 'the-bust-at-meshes' } as const;
136
+ export const PROJECTION_LINK = { path: 'docs/CHECKS.md', anchor: 'projection-and-ground' } as const;
137
+ /** The heading is "Parts-stage check at the parts → parts-review move": the arrow drops, leaving two hyphens. */
138
+ export const PARTS_CHECK_LINK = { path: 'docs/CHECKS.md', anchor: 'parts-stage-check-at-the-parts--parts-review-move' } as const;
139
+
140
+ /** The refusals `advance parts-review --parts-check` can give, all in one CHECKS.md table. */
141
+ export const PARTS_CHECK_CODES = ['MISSING', 'UNREAD', 'INVALID', 'CHANGED', 'FAILED', 'STALE'].map((c) => `PARTS_CHECK_${c}`);
142
+
143
+ export function createDocUrl(path: string, anchor?: string): string {
144
+ return `${CREATE_DOCS_BASE}${path}${anchor === undefined ? '' : `#${anchor}`}`;
145
+ }
146
+
147
+ function createLink(label: string, path: string, anchor?: string): string {
148
+ return `[${label}](${createDocUrl(path, anchor)})`;
149
+ }
150
+
151
+ /**
152
+ * The one ordered entry point (rig-c/create#24): what to read before each step,
153
+ * naming the page and the section. create's pages are absolute links (create is
154
+ * not installed in a project); the parts and core sections are named, not
155
+ * linked, because the package links below are exactly PACKAGE_DOCS.
156
+ */
157
+ export const READ_FIRST = [
158
+ '1. **Before the interview**: INTERVIEW.md, and CRAFT.md for the default at each',
159
+ ' waypoint (both linked below); parts AUTHORING §3, *`config.json`, field by',
160
+ ` field*; ${createLink('CHECKS.md', 'docs/CHECKS.md')} before a sign-off.`,
161
+ '2. **Before `seethrough` and `assemble`**: SOURCE.md, the order of the split and',
162
+ ` the cut: ${createLink('re-running a bad split', 'docs/SOURCE.md', 're-run-first')},`,
163
+ ` ${createLink('where a cut is allowed', 'docs/SOURCE.md', 'where-a-cut-is-allowed')};`,
164
+ ' then parts AUTHORING *See-through head-run source reading*, *Source before',
165
+ ' scissors* and *Limbs: cut at their joints*.',
166
+ `3. **Before rigging**: ${createLink('CRAFT.md § For the gates', 'docs/CRAFT.md', 'for-the-gates-not-the-interview')}`,
167
+ ' (G1–G9); core RIGGING and MOTION; parts AUTHORING §7, the bars `check` enforces.',
168
+ `4. **Before showing the user**: ${createLink('LESSONS.md § The self-check', 'docs/LESSONS.md', 'the-self-check')},`,
169
+ ` the ${createLink('per-frame seam count', 'docs/LESSONS.md', 'count-the-seam-bar-over-every-frame')},`,
170
+ ` ${createLink('what to show first', 'docs/LESSONS.md', 'what-to-show-the-user-first')}.`,
171
+ ].join('\n');
172
+
173
+ /**
174
+ * The check an agent runs before asking for the interview sign-off: since
175
+ * rig-c/create#3 it is `rig-create interview --check`, which refuses every
176
+ * `null` answer by name, so the line names the command, not the doc reference.
177
+ */
178
+ export const INTERVIEW_CHECK_LINE = 'Before asking the user to sign the interview, run `rig-create interview --check`: it names every `null` answer.';
179
+
180
+ export const GUIDE_TEMPLATE = 'agent-guide.md';
181
+
182
+ /** CLAUDE.md is a pointer: Claude Code reads CLAUDE.md, and an `@path` line imports that file into it. */
183
+ export const CLAUDE_MD = [
184
+ '@AGENTS.md',
185
+ '',
186
+ 'The agent guide for this project is AGENTS.md, imported above. It is the only copy: change it there, not here.',
187
+ '',
188
+ ].join('\n');
189
+
190
+ export function packageDocPath(doc: PackageDoc): string {
191
+ return `node_modules/${doc.package}/${doc.path}`;
192
+ }
193
+
194
+ function linkLine(label: string, href: string, why: string): string {
195
+ return `- [${label}](${href}): ${why}.`;
196
+ }
197
+
198
+ /** The text of AGENTS.md, from the template and the tables above. */
199
+ export function renderAgentGuide(): string {
200
+ const fills: Record<string, string> = {
201
+ RESUME_LINK: `[PROJECT.md § How an agent resumes a project](${createDocUrl(RESUME_LINK.path, RESUME_LINK.anchor)})`,
202
+ INTERVIEW_CHECK: INTERVIEW_CHECK_LINE,
203
+ DERIVED_LINK: `[INTERVIEW.md § Derived answers](${createDocUrl(DERIVED_LINK.path, DERIVED_LINK.anchor)})`,
204
+ GATES_LINK: `[CRAFT.md G8](${createDocUrl(GATES_LINK.path, GATES_LINK.anchor)})`,
205
+ DRAFTS_LINK: `[PROJECT.md § Labelled draft rigs](${createDocUrl(DRAFTS_LINK.path, DRAFTS_LINK.anchor)})`,
206
+ STAGES_LINK: `[PROJECT.md § Stages](${createDocUrl(STAGES_LINK.path, STAGES_LINK.anchor)})`,
207
+ LIFETIME_LINK: `[PROJECT.md § Data is split by lifetime](${createDocUrl(LIFETIME_LINK.path, LIFETIME_LINK.anchor)})`,
208
+ INTAKE_LINK: `[PROJECT.md § Advisory intake reports](${createDocUrl(INTAKE_LINK.path, INTAKE_LINK.anchor)})`,
209
+ CG_GATES_LINK: `[CHECKS.md § CG gates](${createDocUrl(CG_GATES_LINK.path, CG_GATES_LINK.anchor)})`,
210
+ APPEARANCE_LINK: `[CHECKS.md § Appearance bar wording](${createDocUrl(APPEARANCE_LINK.path, APPEARANCE_LINK.anchor)})`,
211
+ BUST_LINK: `[CHECKS.md § The bust at meshes](${createDocUrl(BUST_LINK.path, BUST_LINK.anchor)})`,
212
+ PROJECTION_LINK: `[CHECKS.md § Projection and ground](${createDocUrl(PROJECTION_LINK.path, PROJECTION_LINK.anchor)})`,
213
+ PARTS_CHECK_LINK: `[${PARTS_CHECK_CODES.map((code) => `\`${code}\``).join(', ')}](${createDocUrl(PARTS_CHECK_LINK.path, PARTS_CHECK_LINK.anchor)})`,
214
+ READ_FIRST,
215
+ PACKAGE_DOCS: PACKAGE_DOCS.map((doc) =>
216
+ linkLine(`${doc.package} ${doc.path}`, packageDocPath(doc), doc.why),
217
+ ).join('\n'),
218
+ CREATE_DOCS: CREATE_DOCS.map((doc) => linkLine(doc.path, createDocUrl(doc.path), doc.why)).join('\n'),
219
+ };
220
+ const template = readFileSync(join(TEMPLATES_DIR, GUIDE_TEMPLATE), 'utf8');
221
+ return template.replace(/\{\{([A-Z_]+)\}\}/g, (marker, key: string) => {
222
+ const fill = fills[key];
223
+ if (fill === undefined) throw new Error(`${GUIDE_TEMPLATE}: unknown marker ${marker}`);
224
+ return fill;
225
+ });
226
+ }
227
+
228
+ /**
229
+ * Writes the guide an agent reads first in a project — AGENTS.md, and a
230
+ * CLAUDE.md that imports it — and returns the paths written (relative to the
231
+ * project) so init can add exactly those to git.
232
+ */
233
+ export function writeAgentGuide(dir: string): string[] {
234
+ writeFileSync(join(dir, 'AGENTS.md'), renderAgentGuide());
235
+ writeFileSync(join(dir, 'CLAUDE.md'), CLAUDE_MD);
236
+ return ['AGENTS.md', 'CLAUDE.md'];
237
+ }