@rig-c/create 0.0.0-stage → 1.0.0

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 +163 -2
  3. package/docs/CHECKS.md +1665 -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
@@ -0,0 +1,1071 @@
1
+ {
2
+ "schema": "rig-create/project@0",
3
+ "name": "lantern-keeper",
4
+ "title": "The lantern keeper (a made-up painting, for the shape only)",
5
+ "stage": "accepted",
6
+ "stage_values": [
7
+ "interview",
8
+ "plan-approved",
9
+ "parts",
10
+ "parts-review",
11
+ "rigging",
12
+ "rig-review",
13
+ "post-interview",
14
+ "post",
15
+ "direction-review",
16
+ "accepted",
17
+ "paused"
18
+ ],
19
+ "signoffs": [
20
+ { "stage": "interview", "checkpoint": null, "by": "user", "at": "2026-11-10T14:20:00Z", "verbatim": "that's everything" },
21
+ { "stage": "plan-approved", "checkpoint": null, "by": "user", "at": "2026-11-10T16:05:00Z", "verbatim": "go", "step_hashes": {"seethrough":"6913f7c8b3fac3f5b88631115fab6fc352027ea15e0f44619f27fefcb9bd3c82","assemble":"cfd24972de2e64f0e357e0a3dc787e3ce4d8ae24f7ffa5db79c4cc6a5ce2f53d","bones":"457fdb23b2fba7eacaab9a54765d45b651d2059b070bfdafb10226f3cfba0e8d","meshes":"a159b1bd45ba764819c10cbd2e5ad3116822d1cc584232a4b97dfe432a113da7","constraints":"91690a465a7b4a9fd2fdbfd6a229ec07ddf521adcc1107dca97f7b2d90adb601","motion":"eee1686a07951c92b3ee62abe7a7ff79865570f09f3c134d2b09fc2994e242d2"} },
22
+ { "stage": "parts", "checkpoint": "assemble", "by": "user", "at": "2026-11-11T09:40:00Z", "verbatim": "the cut is fine" },
23
+ { "stage": "parts-review", "checkpoint": null, "by": "user", "at": "2026-11-11T10:20:00Z", "verbatim": "the parts are clean, rig it", "evidence": { "kind": "parts-verdict", "path": "evidence/parts-review.json", "sha256": "b5e29c7060c7d912baee40b2e920ed9f11e4db2adba8da710d3ee3cb156d78bf" }, "diff_map": {"report":{"path":"evidence/diff-components.json","sha256":"6b26d802dd85b30a00aa714f643ff5238badf4b1124e44068dc9d93c90a61df3"},"components":[{"id":"p10-n3","status":"in-painting","why":"the synthetic painting deliberately differs here"},{"id":"p1000-n3","status":"in-painting","why":"the synthetic painting deliberately differs here"}]} },
24
+ { "stage": "rigging", "checkpoint": "constraints", "by": "user", "at": "2026-11-11T13:10:00Z", "verbatim": "ok, the scarf looks right in the sketch" },
25
+ { "stage": "plan-approved", "checkpoint": null, "steps": ["bones","constraints"], "by": "user", "at": "2026-11-12T10:30:00Z", "verbatim": "yes, re-run those two", "step_hashes": {"bones":"457fdb23b2fba7eacaab9a54765d45b651d2059b070bfdafb10226f3cfba0e8d","constraints":"91690a465a7b4a9fd2fdbfd6a229ec07ddf521adcc1107dca97f7b2d90adb601"} },
26
+ { "stage": "rigging", "checkpoint": "constraints", "by": "user", "at": "2026-11-12T15:00:00Z", "verbatim": "better" },
27
+ { "stage": "rig-review", "checkpoint": null, "by": "user", "at": "2026-11-13T09:15:00Z", "verbatim": "yes, that's her" },
28
+ { "stage": "post-interview", "checkpoint": null, "by": "user", "at": "2026-11-13T10:30:00Z", "verbatim": "go", "step_hashes": {"camera":"99c0ca10adeecb036f9f966a7698134ea274562fe777e2af2b275fb409b46191","timing":"12eca3ed1507b0ac4ec86665294e7ca391f4f93b50e13f8124b21dbe465f199e","composition":"f4a1e6923ffd1c84a2108bd41831ceee68b340dcf3538b0180aae081d8028e07"} },
29
+ { "stage": "direction-review", "checkpoint": null, "by": "user", "at": "2026-11-15T11:00:00Z", "verbatim": "done, I like it" }
30
+ ],
31
+ "interview": {
32
+ "question_set": "rig-create/interview@0 (waypoints read from @rig-c/parts 2.14.1)",
33
+ "held": true,
34
+ "date": "2026-11-10",
35
+ "interviewer": "agent",
36
+ "respondent": "user",
37
+ "framing": [
38
+ {
39
+ "id": "rig_type",
40
+ "text": "What is this: a character rig (standing idle / complex motion / a monster with its own moves) or a full-screen scene (minimal motion: breath, blink / motion tied to game logic)?",
41
+ "source": "rig-create",
42
+ "required_for": ["all"],
43
+ "answer": {
44
+ "delegated": false,
45
+ "by": "user",
46
+ "at": "2026-11-10T14:01:00Z",
47
+ "verbatim": "A standing character, idle. She holds a lantern.",
48
+ "value": "character.idle",
49
+ "source": "interview, chat"
50
+ },
51
+ "history": []
52
+ },
53
+ {
54
+ "id": "reference",
55
+ "text": "'Make it feel like this': a video, an existing demo, a game you have in mind?",
56
+ "source": "rig-create",
57
+ "required_for": ["all"],
58
+ "answer": {
59
+ "delegated": false,
60
+ "by": "user",
61
+ "at": "2026-11-10T14:02:00Z",
62
+ "verbatim": "None.",
63
+ "value": "none",
64
+ "source": "interview, chat"
65
+ },
66
+ "history": []
67
+ }
68
+ ],
69
+ "waypoints": [
70
+ {
71
+ "id": "seethrough",
72
+ "config": ["seethrough"],
73
+ "prompts": [
74
+ {
75
+ "id": "x_layers",
76
+ "text": "Is there anything the layer split must keep together or keep apart: a hat with the head, a held object on its own?",
77
+ "source": "rig-create",
78
+ "required_for": ["all"]
79
+ }
80
+ ],
81
+ "guide": {
82
+ "delegated": true,
83
+ "by": "user",
84
+ "at": "2026-11-10T14:03:00Z",
85
+ "verbatim": "auto",
86
+ "source": "interview, chat",
87
+ "agent_decision": {
88
+ "value": {
89
+ "passes": [
90
+ "full",
91
+ "head"
92
+ ],
93
+ "head_box": "her face and the hair tail's root, from the painting",
94
+ "resolution": "full painting resolution for the full pass; crop resolution for the head pass",
95
+ "seed": 0,
96
+ "grouping": "keep painted groups except the independently moving parts named by the guides"
97
+ },
98
+ "by": "agent",
99
+ "at": "2026-11-10T15:10:00Z",
100
+ "reasoning": "Blink needs the eyelids as their own layers; at full-figure resolution the face is too small for the split to find them. The lantern is far enough from the body that the full pass separates it on its own."
101
+ },
102
+ "asks": [
103
+ {
104
+ "id": "layers",
105
+ "state": "delegated"
106
+ },
107
+ {
108
+ "id": "resolution",
109
+ "state": "delegated"
110
+ },
111
+ {
112
+ "id": "head_crop",
113
+ "state": "delegated"
114
+ },
115
+ {
116
+ "id": "seed",
117
+ "state": "delegated"
118
+ }
119
+ ]
120
+ },
121
+ "history": [
122
+ {
123
+ "at": "2026-11-11T08:00:00Z",
124
+ "bounce": {
125
+ "cause": "agent",
126
+ "failed": "The first full-resolution split merged the eyelids into the face",
127
+ "bar": "Blink needs the eyelids as their own layers",
128
+ "replacement": "Run the recorded full pass plus a head pass before assembly"
129
+ }
130
+ }
131
+ ]
132
+ },
133
+ {
134
+ "id": "assemble",
135
+ "config": ["assemble", "limbs", "scene", "waist"],
136
+ "prompts": [
137
+ {
138
+ "id": "split_granularity",
139
+ "text": "How finely should it be cut?",
140
+ "source": "rig-create",
141
+ "required_for": ["all"]
142
+ },
143
+ {
144
+ "id": "split_emphasis",
145
+ "text": "Which parts matter most: more detail, or kept exactly as painted?",
146
+ "source": "rig-create",
147
+ "required_for": ["all"]
148
+ }
149
+ ],
150
+ "guide": {
151
+ "delegated": false,
152
+ "by": "user",
153
+ "at": "2026-11-10T14:06:00Z",
154
+ "verbatim": "Standard cut, at the joints. Keep her face exactly as painted. The lantern is its own part. The rest is up to you. Use core projection.",
155
+ "value": {
156
+ "project": "core",
157
+ "split_granularity": "standard",
158
+ "split_emphasis": [
159
+ {
160
+ "part": "face",
161
+ "want": "untouched"
162
+ },
163
+ {
164
+ "part": "lantern",
165
+ "want": "own part"
166
+ }
167
+ ]
168
+ },
169
+ "source": "interview, chat",
170
+ "agent_decision": {
171
+ "covers": "the remaining part list, draw order, new authored parts, occluded content and outfit sets",
172
+ "value": {
173
+ "parts_in_draw_order": [
174
+ "background",
175
+ "lighthouse",
176
+ "coat_tail_l",
177
+ "coat_tail_r",
178
+ "legs",
179
+ "torso",
180
+ "upperarm_l",
181
+ "forearm_l",
182
+ "hand_l",
183
+ "scarf",
184
+ "head",
185
+ "hair_tail",
186
+ "hair_front",
187
+ "eyelids_l",
188
+ "eyelids_r",
189
+ "upperarm_r",
190
+ "forearm_r",
191
+ "hand_r",
192
+ "lantern"
193
+ ],
194
+ "authored_new": "none beyond the separated painted parts",
195
+ "under_occluders": "retain underlying painted surfaces for the stated motion",
196
+ "outfit_sets": []
197
+ },
198
+ "by": "agent",
199
+ "at": "2026-11-10T15:25:00Z",
200
+ "reasoning": "Standard cut: limbs at shoulder, elbow and wrist; the coat tails and scarf as their own parts because the constraints guide puts wind on them; the hair tail its own part for the same reason. Nothing is cut below the knee because nothing there moves."
201
+ },
202
+ "asks": [
203
+ { "id": "projection", "state": "user" },
204
+ {
205
+ "id": "cut",
206
+ "state": "user"
207
+ },
208
+ {
209
+ "id": "emphasis",
210
+ "state": "user"
211
+ },
212
+ {
213
+ "id": "draw_order",
214
+ "state": "delegated"
215
+ },
216
+ {
217
+ "id": "authored",
218
+ "state": "delegated"
219
+ },
220
+ {
221
+ "id": "occluders",
222
+ "state": "delegated"
223
+ },
224
+ {
225
+ "id": "outfits",
226
+ "state": "delegated"
227
+ }
228
+ ]
229
+ },
230
+ "history": []
231
+ },
232
+ {
233
+ "id": "bones",
234
+ "config": ["bones"],
235
+ "prompts": [
236
+ {
237
+ "id": "x_chains",
238
+ "text": "What moves on its own: hair strands, coat tails, sleeves, held things?",
239
+ "source": "rig-create",
240
+ "required_for": ["all"]
241
+ }
242
+ ],
243
+ "guide": {
244
+ "delegated": false,
245
+ "by": "user",
246
+ "at": "2026-11-10T14:09:00Z",
247
+ "verbatim": "A chain down the scarf, one in each coat tail, one in her hair tail. Bone placement and chain lengths are yours.",
248
+ "value": [
249
+ {
250
+ "chain": "scarf"
251
+ },
252
+ {
253
+ "chain": "coat_tail_l"
254
+ },
255
+ {
256
+ "chain": "coat_tail_r"
257
+ },
258
+ {
259
+ "chain": "hair_tail"
260
+ }
261
+ ],
262
+ "source": "interview, chat",
263
+ "additions": [
264
+ {
265
+ "by": "user",
266
+ "at": "2026-11-12T09:30:00Z",
267
+ "verbatim": "It should hang from her hand and swing on its own.",
268
+ "value": [
269
+ {
270
+ "hinge": "lantern",
271
+ "from": "hand_r"
272
+ }
273
+ ],
274
+ "source": "polish feedback, v1"
275
+ }
276
+ ],
277
+ "asks": [
278
+ {
279
+ "id": "chains",
280
+ "state": "user"
281
+ },
282
+ {
283
+ "id": "placement",
284
+ "state": "delegated"
285
+ },
286
+ {
287
+ "id": "length",
288
+ "state": "delegated"
289
+ }
290
+ ],
291
+ "agent_decision": {
292
+ "covers": "bone placement and chain lengths",
293
+ "value": {
294
+ "placement": "along the named parts in the painting",
295
+ "length": "span each named part"
296
+ },
297
+ "by": "agent",
298
+ "at": "2026-11-10T15:30:00Z",
299
+ "reasoning": "Fit each chain to its named part; preserve the rigid rest."
300
+ }
301
+ },
302
+ "history": []
303
+ },
304
+ {
305
+ "id": "meshes",
306
+ "config": ["meshes", "regions"],
307
+ "prompts": [
308
+ {
309
+ "id": "x_deform",
310
+ "text": "What must bend smoothly as one piece, and what must stay rigid?",
311
+ "source": "rig-create",
312
+ "required_for": ["all"]
313
+ }
314
+ ],
315
+ "guide": {
316
+ "delegated": false,
317
+ "by": "user",
318
+ "at": "2026-11-10T14:11:00Z",
319
+ "verbatim": "The coat is one piece that bends with her breath. Face and lantern stay rigid. The mesh density is yours.",
320
+ "value": {
321
+ "meshes": [
322
+ "torso"
323
+ ],
324
+ "rigid": [
325
+ "head",
326
+ "lantern"
327
+ ]
328
+ },
329
+ "source": "interview, chat",
330
+ "asks": [
331
+ {
332
+ "id": "bend",
333
+ "state": "user"
334
+ },
335
+ {
336
+ "id": "rigid",
337
+ "state": "user"
338
+ },
339
+ {
340
+ "id": "density",
341
+ "state": "delegated"
342
+ }
343
+ ],
344
+ "agent_decision": {
345
+ "covers": "mesh density",
346
+ "value": {
347
+ "density": "standard"
348
+ },
349
+ "by": "agent",
350
+ "at": "2026-11-10T15:30:00Z",
351
+ "reasoning": "Use standard density for the bending coat; keep rigid parts rigid."
352
+ }
353
+ },
354
+ "history": []
355
+ },
356
+ {
357
+ "id": "constraints",
358
+ "config": ["constraints", "stops", "cloth"],
359
+ "prompts": [
360
+ {
361
+ "id": "split_effects",
362
+ "text": "Which parts have special effects (sway on physics, move in wind, jiggle, glow, flicker), and how far do they move?",
363
+ "source": "rig-create",
364
+ "required_for": ["all"]
365
+ }
366
+ ],
367
+ "guide": {
368
+ "delegated": false,
369
+ "by": "user",
370
+ "at": "2026-11-10T14:14:00Z",
371
+ "verbatim": "The scarf and the coat tails move in the wind off the sea, the scarf a little more than the coat. Her hair tail barely moves. Nothing else on physics. Gravity and stops are yours.",
372
+ "value": [
373
+ {
374
+ "part": "scarf",
375
+ "effect": "wind",
376
+ "extent": "a little more than the coat tails"
377
+ },
378
+ {
379
+ "part": "coat_tail_l",
380
+ "effect": "wind",
381
+ "extent": "as said"
382
+ },
383
+ {
384
+ "part": "coat_tail_r",
385
+ "effect": "wind",
386
+ "extent": "as said"
387
+ },
388
+ {
389
+ "part": "hair_tail",
390
+ "effect": "wind",
391
+ "extent": "barely"
392
+ },
393
+ {
394
+ "part": "*",
395
+ "effect": "still",
396
+ "extent": "every other part"
397
+ }
398
+ ],
399
+ "source": "interview, chat",
400
+ "asks": [
401
+ {
402
+ "id": "effects",
403
+ "state": "user"
404
+ },
405
+ {
406
+ "id": "strength",
407
+ "state": "user"
408
+ },
409
+ {
410
+ "id": "extent",
411
+ "state": "user"
412
+ },
413
+ {
414
+ "id": "gravity",
415
+ "state": "delegated"
416
+ },
417
+ {
418
+ "id": "stops",
419
+ "state": "delegated"
420
+ }
421
+ ],
422
+ "agent_decision": {
423
+ "covers": "gravity and chain stops",
424
+ "value": {
425
+ "gravity": "downward",
426
+ "stops": "bound each chain to its stated extent"
427
+ },
428
+ "by": "agent",
429
+ "at": "2026-11-10T15:30:00Z",
430
+ "reasoning": "Keep each chain within the extent already stated."
431
+ }
432
+ },
433
+ "history": []
434
+ },
435
+ {
436
+ "id": "motion",
437
+ "config": ["motion"],
438
+ "prompts": [
439
+ {
440
+ "id": "motions",
441
+ "text": "Which moves? Name each one.",
442
+ "source": "rig-create",
443
+ "required_for": [
444
+ "character.idle",
445
+ "character.complex",
446
+ "character.monster",
447
+ "fullscreen.minimal"
448
+ ]
449
+ },
450
+ {
451
+ "id": "game_states",
452
+ "text": "Which states, and what moves it from one to the next?",
453
+ "source": "rig-create",
454
+ "required_for": ["fullscreen.game_logic"]
455
+ }
456
+ ],
457
+ "guide": {
458
+ "delegated": false,
459
+ "by": "user",
460
+ "at": "2026-11-10T14:17:00Z",
461
+ "verbatim": "Breath and blink. The lantern flame flickers. The rest is yours; keep it subtle.",
462
+ "value": [
463
+ {
464
+ "motion": "breath"
465
+ },
466
+ {
467
+ "motion": "blink"
468
+ },
469
+ {
470
+ "motion": "flame_flicker",
471
+ "note": "on the lantern part"
472
+ }
473
+ ],
474
+ "source": "interview, chat",
475
+ "asks": [
476
+ {
477
+ "id": "tracks",
478
+ "state": "user"
479
+ },
480
+ {
481
+ "id": "extent",
482
+ "state": "delegated"
483
+ },
484
+ {
485
+ "id": "speed",
486
+ "state": "delegated"
487
+ },
488
+ {
489
+ "id": "loop",
490
+ "state": "delegated"
491
+ },
492
+ {
493
+ "id": "blink",
494
+ "state": "user"
495
+ }
496
+ ],
497
+ "agent_decision": {
498
+ "covers": "motion extent, speed and loop length",
499
+ "value": {
500
+ "extent": "subtle breath and flame variation",
501
+ "speed": "slow breath, brief blink, irregular flicker",
502
+ "loop_seconds": 8
503
+ },
504
+ "by": "agent",
505
+ "at": "2026-11-10T15:30:00Z",
506
+ "reasoning": "Use a subtle eight-second loop for the named tracks; the post clip can use one full cycle."
507
+ }
508
+ },
509
+ "history": []
510
+ }
511
+ ],
512
+ "post": {
513
+ "held": true,
514
+ "date": "2026-11-13",
515
+ "items": [
516
+ {
517
+ "id": "camera_depth",
518
+ "config": ["turn", "depth"],
519
+ "text": "Does the view move (a 2.5D head-turn with parallax, a push-in) or is it fixed?",
520
+ "source": "rig-create",
521
+ "guide": {
522
+ "delegated": false,
523
+ "by": "user",
524
+ "at": "2026-11-13T10:02:00Z",
525
+ "verbatim": "A slow push-in, no parallax.",
526
+ "value": { "camera": "push_in", "depth": false },
527
+ "source": "post-interview, chat"
528
+ },
529
+ "history": []
530
+ },
531
+ {
532
+ "id": "post_timing",
533
+ "config": [],
534
+ "text": "How long, does it loop, and where are the beats?",
535
+ "source": "rig-create",
536
+ "guide": {
537
+ "delegated": false,
538
+ "by": "user",
539
+ "at": "2026-11-13T10:04:00Z",
540
+ "verbatim": "Eight seconds, looping. The beam sweeps past once, near the end.",
541
+ "value": { "seconds": 8, "loop": true, "beats": [{ "what": "beam sweep", "when": "near the end" }] },
542
+ "source": "post-interview, chat"
543
+ },
544
+ "history": []
545
+ },
546
+ {
547
+ "id": "post_composition",
548
+ "config": [],
549
+ "text": "What is around the figure: background, framing, other figures, light?",
550
+ "source": "rig-create",
551
+ "guide": {
552
+ "delegated": false,
553
+ "by": "user",
554
+ "at": "2026-11-13T10:06:00Z",
555
+ "verbatim": "Keep the whole lighthouse in frame. It's night; don't brighten it.",
556
+ "value": { "framing": "lighthouse fully in frame", "light": "as painted" },
557
+ "source": "post-interview, chat"
558
+ },
559
+ "history": []
560
+ }
561
+ ]
562
+ }
563
+ },
564
+ "plan": {
565
+ "drafted_by": "agent",
566
+ "drafted_at": "2026-11-10T15:40:00Z",
567
+ "steps": [
568
+ {
569
+ "id": "seethrough",
570
+ "phase": "rig",
571
+ "order": 1,
572
+ "does": "Decompose the painting into layers: a full pass and a head pass",
573
+ "produces": "config seethrough; derived/layers/",
574
+ "rests_on": ["seethrough"],
575
+ "bar": "Both passes produce eyelid layers on both eyes; the lantern comes out as its own layer",
576
+ "checkpoint_proposed": false,
577
+ "checkpoint": { "delegated": false, "by": "user", "at": "2026-11-10T16:00:00Z", "verbatim": "no need", "value": false },
578
+ "status": "done"
579
+ },
580
+ {
581
+ "id": "assemble",
582
+ "phase": "rig",
583
+ "order": 2,
584
+ "does": "Turn layers into parts, in draw order, limbs cut at their joints; propose the split as an image, one label per part",
585
+ "produces": "config assemble, limbs; split.proposal_image, split.parts[]",
586
+ "rests_on": ["assemble", "constraints"],
587
+ "bar": "Every part the assemble guide names exists (face untouched, lantern its own part); limbs cut at shoulder, elbow, wrist; every part has one label; the setup-pose recomposite matches the painting",
588
+ "checkpoint_proposed": true,
589
+ "checkpoint": { "delegated": false, "by": "user", "at": "2026-11-10T16:01:00Z", "verbatim": "yes, show me the cut", "value": true },
590
+ "status": "done"
591
+ },
592
+ {
593
+ "id": "bones",
594
+ "phase": "rig",
595
+ "order": 3,
596
+ "does": "Place the bones; chains on the scarf, both coat tails and the hair tail; a hinge for the lantern under hand_r",
597
+ "produces": "config bones",
598
+ "rests_on": ["bones"],
599
+ "bar": "Exactly the four chains the sentence names, plus the lantern hinge from the v1 feedback; no other chain",
600
+ "checkpoint_proposed": false,
601
+ "checkpoint": { "delegated": false, "by": "user", "at": "2026-11-10T16:02:00Z", "verbatim": "no", "value": false },
602
+ "status": "done"
603
+ },
604
+ {
605
+ "id": "meshes",
606
+ "phase": "rig",
607
+ "order": 4,
608
+ "does": "Torso as a weighted mesh; head and lantern as rigid regions; the rest proposed",
609
+ "produces": "config meshes, regions",
610
+ "rests_on": ["meshes", "assemble"],
611
+ "bar": "torso is a mesh; head and lantern are regions; 0 changed pixels inside the face box outside the eyelid masks, every frame",
612
+ "checkpoint_proposed": false,
613
+ "checkpoint": { "delegated": false, "by": "user", "at": "2026-11-10T16:02:30Z", "verbatim": "no", "value": false },
614
+ "status": "done"
615
+ },
616
+ {
617
+ "id": "constraints",
618
+ "phase": "rig",
619
+ "order": 5,
620
+ "does": "Wind physics on scarf, coat tails and hair tail; a stop on the lantern hinge; nothing else on physics",
621
+ "produces": "config constraints, stops",
622
+ "rests_on": ["constraints", "bones"],
623
+ "bar": "Only scarf, coat tails, hair tail and the lantern hinge move on physics; the scarf's amplitude is the largest and the hair tail's the smallest; every other part changes 0 pixels from physics",
624
+ "checkpoint_proposed": true,
625
+ "checkpoint": {
626
+ "delegated": true,
627
+ "by": "user",
628
+ "at": "2026-11-10T16:03:00Z",
629
+ "verbatim": "you decide",
630
+ "source": "plan review, chat",
631
+ "agent_decision": {
632
+ "value": true,
633
+ "by": "agent",
634
+ "at": "2026-11-10T16:04:00Z",
635
+ "reasoning": "Physics extents are the item most often sent back; a motion sketch before the build is cheaper than a rebuild after."
636
+ }
637
+ },
638
+ "status": "done"
639
+ },
640
+ {
641
+ "id": "motion",
642
+ "phase": "rig",
643
+ "order": 6,
644
+ "does": "Breath on the torso, blink on the eyelids, flicker on the lantern; render the still-frame check",
645
+ "produces": "config motion; the still-frame check for rig-review",
646
+ "rests_on": ["motion", "rig_type"],
647
+ "bar": "Every loop closes; breath, blink and flicker are each present as a track; the still-frame check renders at a fixed camera",
648
+ "checkpoint_proposed": false,
649
+ "checkpoint": { "delegated": false, "by": "user", "at": "2026-11-10T16:04:30Z", "verbatim": "no", "value": false },
650
+ "status": "done"
651
+ },
652
+ {
653
+ "id": "camera",
654
+ "phase": "post",
655
+ "order": 7,
656
+ "does": "A slow push-in over the loop; no depth built",
657
+ "produces": "the take's camera track",
658
+ "rests_on": ["camera_depth"],
659
+ "bar": "The push-in spans the full loop; no layer parallax; no depth sheet is built",
660
+ "checkpoint_proposed": false,
661
+ "checkpoint": { "delegated": false, "by": "user", "at": "2026-11-13T10:20:00Z", "verbatim": "no", "value": false },
662
+ "status": "done"
663
+ },
664
+ {
665
+ "id": "timing",
666
+ "phase": "post",
667
+ "order": 8,
668
+ "does": "Eight-second loop; one beam sweep late in the loop",
669
+ "produces": "the take's length and beat sheet",
670
+ "rests_on": ["post_timing", "motion"],
671
+ "bar": "The loop closes at 8.0 s; exactly one beam sweep, starting between 5.5 s and 7.0 s; for the scarf, coat_tail_l, coat_tail_r, hair_tail and lantern_hinge chain tips, each boundary jump at 8 s and 16 s in a three-period measurement twin is no larger than that tip's own largest in-loop step in the adjacent periods. Run node_modules/.bin/rigc render --candidate derived/loop-twin --animation idle --fps 24 --geometry --out derived/loop-reading. Read each named chain's tip bone in the built rig's geometry.json, compute its world-space endpoint per frame, take Euclidean distances between consecutive endpoints, and compare steps 191-to-192 and 383-to-384 with that tip's largest consecutive step inside each adjacent 192-frame period, excluding the boundary steps",
672
+ "checkpoint_proposed": false,
673
+ "checkpoint": { "delegated": false, "by": "user", "at": "2026-11-13T10:21:00Z", "verbatim": "no", "value": false },
674
+ "status": "done"
675
+ },
676
+ {
677
+ "id": "composition",
678
+ "phase": "post",
679
+ "order": 9,
680
+ "does": "Frame with the whole lighthouse in shot; keep the painting's exposure",
681
+ "produces": "the take's framing",
682
+ "rests_on": ["post_composition"],
683
+ "bar": "The lighthouse is fully in frame on every frame; mean luminance within 2% of the painting's",
684
+ "checkpoint_proposed": false,
685
+ "checkpoint": { "delegated": false, "by": "user", "at": "2026-11-13T10:22:00Z", "verbatim": "no", "value": false },
686
+ "status": "done"
687
+ }
688
+ ]
689
+ },
690
+ "split": {
691
+ "label_values": ["physics", "wind", "jiggle", "rigid", "still"],
692
+ "proposal_image": "evidence/split/proposal.png",
693
+ "proposed_by": "agent",
694
+ "proposed_at": "2026-11-11T09:10:00Z",
695
+ "parts": [
696
+ { "name": "background", "label": "still", "note": "" },
697
+ { "name": "lighthouse", "label": "still", "note": "" },
698
+ { "name": "coat_tail_l", "label": "wind", "note": "" },
699
+ { "name": "coat_tail_r", "label": "wind", "note": "" },
700
+ { "name": "legs", "label": "still", "note": "" },
701
+ { "name": "torso", "label": "still", "note": "moves on the breath track, not on physics" },
702
+ { "name": "upperarm_l", "label": "still", "note": "" },
703
+ { "name": "forearm_l", "label": "still", "note": "" },
704
+ { "name": "hand_l", "label": "still", "note": "" },
705
+ { "name": "scarf", "label": "wind", "note": "largest amplitude" },
706
+ { "name": "head", "label": "rigid", "note": "face untouched" },
707
+ { "name": "hair_tail", "label": "wind", "note": "barely" },
708
+ { "name": "hair_front", "label": "still", "note": "" },
709
+ { "name": "eyelids_l", "label": "still", "note": "blink track" },
710
+ { "name": "eyelids_r", "label": "still", "note": "blink track" },
711
+ { "name": "upperarm_r", "label": "still", "note": "" },
712
+ { "name": "forearm_r", "label": "still", "note": "" },
713
+ { "name": "hand_r", "label": "still", "note": "" },
714
+ { "name": "lantern", "label": "rigid", "note": "flicker track; hangs from hand_r since v2" }
715
+ ]
716
+ },
717
+ "inputs": [
718
+ {
719
+ "path": "inputs/painting.png",
720
+ "sha256": "dfe043fffb97edc92701b1239e15f026c2b4859cf0065f957f5299303416766b",
721
+ "bytes": 4183290,
722
+ "origin": "the user's painting, handed over at the start of the interview"
723
+ }
724
+ ],
725
+ "derived": [
726
+ {
727
+ "kind": "prepared-input",
728
+ "source": { "path": "inputs/preparation-source.svg", "sha256": "3b2012bb72f7c55b64d7fec307bba26ff53f9bf8474ec7409650d218c168942e" },
729
+ "path": "derived/prepared.svg",
730
+ "sha256": "3c5bf74326c06a17795179b27a894f20eb64246b5ef6e028761061483a51d654",
731
+ "operation": "scale the synthetic circle to 32 by 32 and composite on white; performed by an external tool"
732
+ },
733
+ {
734
+ "path": "derived/layers/",
735
+ "what": "See-through layers, full pass and head pass",
736
+ "command": "parts layers --config derived/v1/config.json",
737
+ "inputs": [
738
+ { "path": "inputs/painting.png", "sha256": "dfe043fffb97edc92701b1239e15f026c2b4859cf0065f957f5299303416766b" }
739
+ ],
740
+ "bytes": 61202944
741
+ },
742
+ {
743
+ "path": "derived/v1/config.json",
744
+ "what": "the rig config v1 was built from",
745
+ "command": "written by the agent from the guides; sections cited in versions[0].provenance",
746
+ "inputs": [],
747
+ "bytes": 18211
748
+ },
749
+ {
750
+ "path": "derived/v2/config.json",
751
+ "what": "the rig config v2 was built from",
752
+ "command": "written by the agent from the guides; sections cited in versions[1].provenance",
753
+ "inputs": [],
754
+ "bytes": 18740
755
+ }
756
+ ],
757
+ "versions": [
758
+ {
759
+ "n": 1,
760
+ "kind": "rig",
761
+ "review_origin": null,
762
+ "rig_version": null,
763
+ "at": "2026-11-11T17:30:00Z",
764
+ "built_by": "agent",
765
+ "built_with": { "@rig-c/parts": "2.4.1", "@rig-c/core": "3.2.0" },
766
+ "answers_feedback": [],
767
+ "changed": "first rig version",
768
+ "review_package": {
769
+ "config": {
770
+ "path": "evidence/v1/review-config.json",
771
+ "sha256": "baa3ad05351a82fd81b0b25d33ef2d49fcba57086fb1cb77c22145655bba5a16"
772
+ },
773
+ "from": "outputs/v1/out",
774
+ "files": [
775
+ {
776
+ "path": "config.json",
777
+ "sha256": "baa3ad05351a82fd81b0b25d33ef2d49fcba57086fb1cb77c22145655bba5a16"
778
+ },
779
+ {
780
+ "path": "out/check/build/skeleton.model.json",
781
+ "sha256": "788d646919113729157770361bd430d0b54d65cdf022c2c030d8d5cf4e3e40d2"
782
+ },
783
+ {
784
+ "path": "out/parts.json",
785
+ "sha256": "35fc842c19dca7f8013487ce58a65b6befce4c64b167a7c11035b7bc69d1726b"
786
+ },
787
+ {
788
+ "path": "out/parts/piece.svg",
789
+ "sha256": "6ec2f4a2f9a829090f39d73b174f56dbd90302103725632d1942066ca70f3825"
790
+ },
791
+ {
792
+ "path": "out/rig/mesh_report.json",
793
+ "sha256": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356"
794
+ },
795
+ {
796
+ "path": "out/rig/motion.json",
797
+ "sha256": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356"
798
+ },
799
+ {
800
+ "path": "out/rig/rig.json",
801
+ "sha256": "5158500209d18a0f094980cf83e5b49af06a99f14a7bea1cd502dcccabf22514"
802
+ }
803
+ ],
804
+ "open": "rig-review open 'derived/review/v1/out'"
805
+ },
806
+ "outputs": [
807
+ { "path": "outputs/v1/skeleton.json", "sha256": "078ac07a231f8f2749edf4906c1517dc8df04c1cc59866dfb7507f2aba4ce8f3", "bytes": 212998 },
808
+ { "path": "outputs/v1/atlas.png", "sha256": "347f9f67ca9ba2cb4f09e82a73a7d1d9a8d15fc9b073bd3863f89ecf9e9194be", "bytes": 3902211 }
809
+ ],
810
+ "evidence": [
811
+ { "kind": "still", "path": "evidence/v1/still-frame.png", "sha256": "c15f4c3fefb52f482778c20836a4dab5dce16947e089db0f0b595d9f5eb5b4e3", "camera": "fixed", "frame": 2, "what": "the rig at the fixed camera, posed 2 s into the loop, used at rig-review" }
812
+ ],
813
+ "provenance": {
814
+ "config": { "path": "derived/v1/config.json", "sha256": "d198cadf6e02c011f11be5ba47f8253e7787424320a234018f10ada419a7b14a" },
815
+ "sections": {
816
+ "seethrough": [
817
+ { "entry": "*", "guide": "seethrough", "delegated": true, "asks": ["layers", "resolution", "head_crop", "seed"] }
818
+ ],
819
+ "assemble": [
820
+ { "entry": "plan[lantern]", "guide": "assemble", "quote": "The lantern is its own part.", "asks": ["emphasis"] },
821
+ { "entry": "plan[head] untouched face", "guide": "assemble", "quote": "Keep her face exactly as painted.", "asks": ["emphasis"] },
822
+ { "entry": "plan[*] order and the remaining parts", "guide": "assemble", "delegated": true, "asks": ["draw_order", "authored", "occluders", "outfits"] }
823
+ ],
824
+ "limbs": [
825
+ { "entry": "arm_l, arm_r", "guide": "assemble", "quote": "Standard cut, at the joints.", "asks": ["cut"] }
826
+ ],
827
+ "bones": [
828
+ { "entry": "chain scarf", "guide": "bones", "quote": "A chain down the scarf", "asks": ["chains"] },
829
+ { "entry": "chain coat_tail_l, coat_tail_r", "guide": "bones", "quote": "one in each coat tail", "asks": ["chains"] },
830
+ { "entry": "chain hair_tail", "guide": "bones", "quote": "one in her hair tail", "asks": ["chains"] }
831
+ ],
832
+ "meshes": [
833
+ { "entry": "torso", "guide": "meshes", "quote": "The coat is one piece that bends with her breath.", "asks": ["bend"] }
834
+ ],
835
+ "regions": [
836
+ { "entry": "head, lantern", "guide": "meshes", "quote": "Face and lantern stay rigid.", "asks": ["rigid"] },
837
+ { "entry": "every other part", "guide": "assemble", "delegated": true, "asks": ["draw_order"] }
838
+ ],
839
+ "constraints": [
840
+ { "entry": "scarf_wind", "guide": "constraints", "quote": "the scarf a little more than the coat", "asks": ["effects", "strength"] },
841
+ { "entry": "coat_tail_l_wind, coat_tail_r_wind", "guide": "constraints", "quote": "The scarf and the coat tails move in the wind off the sea", "asks": ["effects"] },
842
+ { "entry": "hair_tail_wind", "guide": "constraints", "quote": "Her hair tail barely moves.", "asks": ["effects", "strength"] }
843
+ ],
844
+ "motion": [
845
+ { "entry": "breath", "guide": "motion", "quote": "Breath", "asks": ["tracks"] },
846
+ { "entry": "blink", "guide": "motion", "quote": "blink", "asks": ["blink"] },
847
+ { "entry": "flame_flicker", "guide": "motion", "quote": "The lantern flame flickers.", "asks": ["tracks"] }
848
+ ]
849
+ }
850
+ },
851
+ "verdicts": [
852
+ {
853
+ "by": "user",
854
+ "at": "2026-11-12T09:30:00Z",
855
+ "review": "rig-review",
856
+ "verdict": "bounced",
857
+ "verbatim": "The lantern swings with the whole arm, like it's glued to her hand. It should hang from her hand and swing on its own. And the scarf whips around too hard; I said a little more than the coat, not a flag.",
858
+ "source": "chat",
859
+ "on_items": [
860
+ { "id": "bones", "answer_was": "not-asked" },
861
+ { "id": "constraints", "answer_was": "user" }
862
+ ]
863
+ }
864
+ ]
865
+ },
866
+ {
867
+ "n": 2,
868
+ "kind": "rig",
869
+ "review_origin": null,
870
+ "rig_version": null,
871
+ "at": "2026-11-12T18:00:00Z",
872
+ "built_by": "agent",
873
+ "built_with": { "@rig-c/parts": "2.4.1", "@rig-c/core": "3.2.0" },
874
+ "answers_feedback": [{ "version": 1, "verdict": 0 }],
875
+ "changed": "The lantern hangs from hand_r on its own hinge bone with a stop (new bones guide sentence from v1 feedback); the scarf's wind amplitude reduced to just above the coat tails'",
876
+ "review_package": {
877
+ "config": {
878
+ "path": "evidence/v2/review-config.json",
879
+ "sha256": "baa3ad05351a82fd81b0b25d33ef2d49fcba57086fb1cb77c22145655bba5a16"
880
+ },
881
+ "from": "outputs/v2/out",
882
+ "files": [
883
+ {
884
+ "path": "config.json",
885
+ "sha256": "baa3ad05351a82fd81b0b25d33ef2d49fcba57086fb1cb77c22145655bba5a16"
886
+ },
887
+ {
888
+ "path": "out/check/build/skeleton.model.json",
889
+ "sha256": "788d646919113729157770361bd430d0b54d65cdf022c2c030d8d5cf4e3e40d2"
890
+ },
891
+ {
892
+ "path": "out/parts.json",
893
+ "sha256": "35fc842c19dca7f8013487ce58a65b6befce4c64b167a7c11035b7bc69d1726b"
894
+ },
895
+ {
896
+ "path": "out/parts/piece.svg",
897
+ "sha256": "6ec2f4a2f9a829090f39d73b174f56dbd90302103725632d1942066ca70f3825"
898
+ },
899
+ {
900
+ "path": "out/rig/mesh_report.json",
901
+ "sha256": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356"
902
+ },
903
+ {
904
+ "path": "out/rig/motion.json",
905
+ "sha256": "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356"
906
+ },
907
+ {
908
+ "path": "out/rig/rig.json",
909
+ "sha256": "5158500209d18a0f094980cf83e5b49af06a99f14a7bea1cd502dcccabf22514"
910
+ }
911
+ ],
912
+ "open": "rig-review open 'derived/review/v2/out'"
913
+ },
914
+ "outputs": [
915
+ { "path": "outputs/v2/skeleton.json", "sha256": "bccbb57626e8c212cab40596abc9584148bcb8d4dc2215a1de92e4c2cc3c4dba", "bytes": 214106 },
916
+ { "path": "outputs/v2/atlas.png", "sha256": "0f036ba3966425678ac8d4fd7d9c115effcaeb79159a75c05a07b1a0eb3a9666", "bytes": 3902211 }
917
+ ],
918
+ "evidence": [
919
+ { "kind": "still", "path": "evidence/v2/still-frame.png", "sha256": "dc859658e5c8b4cbd66d10d85a5780649e9679be4c4717e3878487925913a55f", "camera": "fixed", "frame": 2, "what": "the rig at the fixed camera, posed 2 s into the loop, used at rig-review" }
920
+ ],
921
+ "provenance": {
922
+ "config": { "path": "derived/v2/config.json", "sha256": "16d9ef7330ff8dd3642d2d7fecbe1979aae55e8ea5a35859cd4061b18989592a" },
923
+ "sections": {
924
+ "seethrough": [
925
+ { "entry": "*", "guide": "seethrough", "delegated": true, "asks": ["layers", "resolution", "head_crop", "seed"] }
926
+ ],
927
+ "assemble": [
928
+ { "entry": "plan[lantern]", "guide": "assemble", "quote": "The lantern is its own part.", "asks": ["emphasis"] },
929
+ { "entry": "plan[head] untouched face", "guide": "assemble", "quote": "Keep her face exactly as painted.", "asks": ["emphasis"] },
930
+ { "entry": "plan[*] order and the remaining parts", "guide": "assemble", "delegated": true, "asks": ["draw_order", "authored", "occluders", "outfits"] }
931
+ ],
932
+ "limbs": [
933
+ { "entry": "arm_l, arm_r", "guide": "assemble", "quote": "Standard cut, at the joints.", "asks": ["cut"] }
934
+ ],
935
+ "bones": [
936
+ { "entry": "chain scarf", "guide": "bones", "quote": "A chain down the scarf", "asks": ["chains"] },
937
+ { "entry": "chain coat_tail_l, coat_tail_r", "guide": "bones", "quote": "one in each coat tail", "asks": ["chains"] },
938
+ { "entry": "chain hair_tail", "guide": "bones", "quote": "one in her hair tail", "asks": ["chains"] },
939
+ { "entry": "lantern_hinge", "guide": "bones", "quote": "It should hang from her hand and swing on its own.", "asks": ["chains"] }
940
+ ],
941
+ "meshes": [
942
+ { "entry": "torso", "guide": "meshes", "quote": "The coat is one piece that bends with her breath.", "asks": ["bend"] }
943
+ ],
944
+ "regions": [
945
+ { "entry": "head, lantern", "guide": "meshes", "quote": "Face and lantern stay rigid.", "asks": ["rigid"] },
946
+ { "entry": "every other part", "guide": "assemble", "delegated": true, "asks": ["draw_order"] }
947
+ ],
948
+ "constraints": [
949
+ { "entry": "scarf_wind", "guide": "constraints", "quote": "the scarf a little more than the coat", "asks": ["effects", "strength"] },
950
+ { "entry": "coat_tail_l_wind, coat_tail_r_wind", "guide": "constraints", "quote": "The scarf and the coat tails move in the wind off the sea", "asks": ["effects"] },
951
+ { "entry": "hair_tail_wind", "guide": "constraints", "quote": "Her hair tail barely moves.", "asks": ["effects", "strength"] },
952
+ { "entry": "lantern_hinge_physics", "guide": "bones", "quote": "swing on its own", "asks": ["chains"] }
953
+ ],
954
+ "stops": [
955
+ { "entry": "lantern_hinge", "guide": "bones", "quote": "hang from her hand", "asks": ["chains"] }
956
+ ],
957
+ "motion": [
958
+ { "entry": "breath", "guide": "motion", "quote": "Breath", "asks": ["tracks"] },
959
+ { "entry": "blink", "guide": "motion", "quote": "blink", "asks": ["blink"] },
960
+ { "entry": "flame_flicker", "guide": "motion", "quote": "The lantern flame flickers.", "asks": ["tracks"] }
961
+ ]
962
+ }
963
+ },
964
+ "verdicts": [
965
+ {
966
+ "by": "user",
967
+ "at": "2026-11-13T09:15:00Z",
968
+ "review": "rig-review",
969
+ "verdict": "accepted",
970
+ "verbatim": "yes, that's her",
971
+ "source": "chat",
972
+ "on_items": []
973
+ }
974
+ ]
975
+ },
976
+ {
977
+ "n": 3,
978
+ "kind": "post",
979
+ "review_origin": null,
980
+ "rig_version": 2,
981
+ "at": "2026-11-14T16:00:00Z",
982
+ "built_by": "agent",
983
+ "built_with": { "@rig-c/parts": "2.4.1", "@rig-c/core": "3.2.0" },
984
+ "answers_feedback": [],
985
+ "changed": "first post version on rig v2",
986
+ "outputs": [
987
+ { "path": "outputs/v3/take.mp4", "sha256": "5215feb4d65bf48cbf0bf38e069ac35a0b73b579c8b2b2ea09a333c60a612865", "bytes": 22841103 }
988
+ ],
989
+ "evidence": [
990
+ { "path": "evidence/v3/beat-sheet.png", "sha256": "9379cc453a56cf8370a5ca9939d661f2383edd9089d510a978cb09532db4945d", "what": "frames at 0, 2, 4, 6 and 8 s with the beam sweep marked" }
991
+ ],
992
+ "provenance": {
993
+ "config": { "path": "derived/v3/take.json", "sha256": "4cd0f57549e7c463383ea7fd68f736558706cc4aa77a6d013fa423c5a8ae47c7" },
994
+ "sections": {
995
+ "camera": [
996
+ { "entry": "push_in", "guide": "camera_depth", "quote": "A slow push-in, no parallax." }
997
+ ],
998
+ "timing": [
999
+ { "entry": "duration 8 s, loop", "guide": "post_timing", "quote": "Eight seconds, looping." },
1000
+ { "entry": "beam_sweep", "guide": "post_timing", "quote": "The beam sweeps past once, near the end." }
1001
+ ],
1002
+ "framing": [
1003
+ { "entry": "crop", "guide": "post_composition", "quote": "Keep the whole lighthouse in frame." },
1004
+ { "entry": "exposure", "guide": "post_composition", "quote": "don't brighten it" }
1005
+ ]
1006
+ }
1007
+ },
1008
+ "verdicts": [
1009
+ {
1010
+ "by": "user",
1011
+ "at": "2026-11-14T18:40:00Z",
1012
+ "review": "direction-review",
1013
+ "verdict": "bounced",
1014
+ "verbatim": "The beam sweeps right at the start. I said near the end.",
1015
+ "source": "chat",
1016
+ "on_items": [
1017
+ { "id": "post_timing", "answer_was": "user" }
1018
+ ]
1019
+ }
1020
+ ]
1021
+ },
1022
+ {
1023
+ "n": 4,
1024
+ "kind": "post",
1025
+ "review_origin": null,
1026
+ "rig_version": 2,
1027
+ "at": "2026-11-15T10:00:00Z",
1028
+ "built_by": "agent",
1029
+ "built_with": { "@rig-c/parts": "2.4.1", "@rig-c/core": "3.2.0" },
1030
+ "answers_feedback": [{ "version": 3, "verdict": 0 }],
1031
+ "changed": "beam sweep moved to start at 6.2 s",
1032
+ "outputs": [
1033
+ { "path": "outputs/v4/take.mp4", "sha256": "7a23b6f0df77a5b4e82f85eca806f10ec70475b71800f6741ca7d61e312dba93", "bytes": 22839877 }
1034
+ ],
1035
+ "evidence": [
1036
+ { "path": "evidence/v4/beat-sheet.png", "sha256": "51731f17808dece75bb165c8e5d695bf791ad5b2621aa91849deb38e168de318", "what": "frames at 0, 2, 4, 6 and 8 s with the beam sweep marked" }
1037
+ ],
1038
+ "provenance": {
1039
+ "config": { "path": "derived/v4/take.json", "sha256": "a254add3c9b992eda452000bc8fa8828d33506fd70fcbf871893e448efe2f5dc" },
1040
+ "sections": {
1041
+ "camera": [
1042
+ { "entry": "push_in", "guide": "camera_depth", "quote": "A slow push-in, no parallax." }
1043
+ ],
1044
+ "timing": [
1045
+ { "entry": "duration 8 s, loop", "guide": "post_timing", "quote": "Eight seconds, looping." },
1046
+ { "entry": "beam_sweep at 6.2 s", "guide": "post_timing", "quote": "near the end" }
1047
+ ],
1048
+ "framing": [
1049
+ { "entry": "crop", "guide": "post_composition", "quote": "Keep the whole lighthouse in frame." },
1050
+ { "entry": "exposure", "guide": "post_composition", "quote": "don't brighten it" }
1051
+ ]
1052
+ }
1053
+ },
1054
+ "verdicts": [
1055
+ {
1056
+ "by": "user",
1057
+ "at": "2026-11-15T11:00:00Z",
1058
+ "review": "direction-review",
1059
+ "verdict": "accepted",
1060
+ "verbatim": "done, I like it",
1061
+ "source": "chat",
1062
+ "on_items": []
1063
+ }
1064
+ ]
1065
+ }
1066
+ ],
1067
+ "archive": null,
1068
+ "notes": [
1069
+ "A made-up painting and a made-up conversation, for the shape of the record only."
1070
+ ]
1071
+ }