rig-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,4568 @@
1
+ {
2
+ "schema": "rig-create/project@0",
3
+ "corrections_contract": {
4
+ "schema": "rig-create/corrections@1",
5
+ "adopted_at": "2026-11-09T00:00:00.000Z"
6
+ },
7
+ "corrections": [],
8
+ "name": "lantern-keeper",
9
+ "title": "The lantern keeper (a made-up painting, for the shape only)",
10
+ "stage": "parts-review",
11
+ "stage_values": [
12
+ "interview",
13
+ "plan-approved",
14
+ "parts",
15
+ "parts-review",
16
+ "rigging-interview",
17
+ "rigging",
18
+ "rig-review",
19
+ "post-interview",
20
+ "post",
21
+ "direction-review",
22
+ "accepted",
23
+ "paused"
24
+ ],
25
+ "signoffs": [
26
+ {
27
+ "stage": "interview",
28
+ "checkpoint": null,
29
+ "by": "user",
30
+ "at": "2026-11-09T00:00:18.000Z",
31
+ "verbatim": "that's everything",
32
+ "answer_hashes": {
33
+ "rig_type": "7dadbbfeb6bde120d27feb2341992af442fb223a640179e4f3d9e14bfdb8f6e2",
34
+ "reference": "c24369dae210ceaaaeac0c3e7404eaf0b630ddbfd465942b0052d70f5f12cfa6",
35
+ "seethrough": "bfd55531ccb6c75f1e39c26d9e792512bc740a28896eab6e41ddf77e443d81cc",
36
+ "assemble": "56d6449827ca14d12012d3c45e07fc77f95c5f29f40a8b32c3aba532b352364b"
37
+ }
38
+ },
39
+ {
40
+ "stage": "plan-approved",
41
+ "checkpoint": null,
42
+ "by": "user",
43
+ "at": "2026-11-09T00:00:30.000Z",
44
+ "verbatim": "Approve the synthetic plan-approved record.\n",
45
+ "steps": [
46
+ "seethrough",
47
+ "assemble"
48
+ ],
49
+ "step_hashes": {
50
+ "seethrough": "fb80a8476afa09a4589bbf8fc3f0a644310c51a2f56b16691120ff27ba8968fd",
51
+ "assemble": "86f6af331ecd8d73b07aa8f650f0c7f53e7a80932b06b1812d13fc53cabfda1e"
52
+ },
53
+ "answer_hashes": {
54
+ "seethrough": "c4ec03e2e3c5e5ff78e171ff11659e94101a9117978999b119d682d8848f17e6",
55
+ "assemble": "56d6449827ca14d12012d3c45e07fc77f95c5f29f40a8b32c3aba532b352364b"
56
+ }
57
+ },
58
+ {
59
+ "stage": "parts",
60
+ "checkpoint": "assemble",
61
+ "by": "user",
62
+ "at": "2026-11-09T00:00:34.000Z",
63
+ "verbatim": "the cut is fine"
64
+ },
65
+ {
66
+ "stage": "parts-review",
67
+ "checkpoint": null,
68
+ "by": "user",
69
+ "at": "2026-11-09T00:00:37.000Z",
70
+ "verbatim": "Approve the synthetic parts-review record.\n",
71
+ "evidence": {
72
+ "kind": "parts-verdict",
73
+ "path": "evidence/review-reads/4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05.json",
74
+ "sha256": "4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05",
75
+ "spec": "rig-create/parts-verdict-cli@1"
76
+ },
77
+ "draft_id": "example",
78
+ "structure": {
79
+ "path": "evidence/structure-decisions.json",
80
+ "sha256": "48a6bf6a09973f5c87cfcd1ca60173bef88ff53fcaed1989e2d70e21c67c0989"
81
+ }
82
+ },
83
+ {
84
+ "stage": "rigging-interview",
85
+ "checkpoint": null,
86
+ "by": "user",
87
+ "at": "2026-11-09T00:00:44.000Z",
88
+ "verbatim": "Approve the synthetic rigging-interview record.\n",
89
+ "steps": [
90
+ "bones",
91
+ "meshes",
92
+ "constraints",
93
+ "motion"
94
+ ],
95
+ "step_hashes": {
96
+ "bones": "ad4173f71847a9a5747832a4ebf578503fbea776c3fca817e59c21098fc5fab5",
97
+ "meshes": "75aa38463e70a159ea2e685275f77969038fe16d4307716503a0db6454acda1c",
98
+ "constraints": "c913d95c02d39078d2327dccb6defcbc1e81d67bf10c1af301b7427c93b9b327",
99
+ "motion": "0fc852ec4e95499d17f6ee8c28f4192219c057dd55f4e0543b61d3eda939ee65"
100
+ },
101
+ "answer_hashes": {
102
+ "bones": "da0839e63fd36041c823ea19474aa646b311211552879d6b09b6a5d7a6014c7e",
103
+ "meshes": "36293fc402cb2b86e6236c2c94546462e5eaea1d603ce11797ed67c2e0f53b53",
104
+ "assemble": "56d6449827ca14d12012d3c45e07fc77f95c5f29f40a8b32c3aba532b352364b",
105
+ "constraints": "5cb5ee1ba54a0d8fcd30f16aa04a0a2650db1061cc5d2273888874f44d046bc9",
106
+ "motion": "591004fbf7145f4172cbe59c6e65e8358ef6923c41e45ccc3077fdb1b9cf7c13",
107
+ "rig_type": "7dadbbfeb6bde120d27feb2341992af442fb223a640179e4f3d9e14bfdb8f6e2"
108
+ },
109
+ "accepted_parts": {
110
+ "signoff_at": "2026-11-09T00:00:37.000Z",
111
+ "evidence": {
112
+ "kind": "parts-verdict",
113
+ "path": "evidence/review-reads/4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05.json",
114
+ "sha256": "4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05",
115
+ "spec": "rig-create/parts-verdict-cli@1"
116
+ }
117
+ },
118
+ "structure": {
119
+ "path": "evidence/structure-decisions.json",
120
+ "sha256": "48a6bf6a09973f5c87cfcd1ca60173bef88ff53fcaed1989e2d70e21c67c0989"
121
+ }
122
+ },
123
+ {
124
+ "stage": "rigging-interview",
125
+ "checkpoint": null,
126
+ "by": "user",
127
+ "at": "2026-11-09T00:00:48.000Z",
128
+ "verbatim": "Approve the synthetic rigging-interview record.\n",
129
+ "steps": [
130
+ "bones",
131
+ "constraints"
132
+ ],
133
+ "step_hashes": {
134
+ "bones": "ad4173f71847a9a5747832a4ebf578503fbea776c3fca817e59c21098fc5fab5",
135
+ "constraints": "c913d95c02d39078d2327dccb6defcbc1e81d67bf10c1af301b7427c93b9b327"
136
+ },
137
+ "answer_hashes": {
138
+ "bones": "da0839e63fd36041c823ea19474aa646b311211552879d6b09b6a5d7a6014c7e",
139
+ "constraints": "5cb5ee1ba54a0d8fcd30f16aa04a0a2650db1061cc5d2273888874f44d046bc9"
140
+ },
141
+ "accepted_parts": {
142
+ "signoff_at": "2026-11-09T00:00:37.000Z",
143
+ "evidence": {
144
+ "kind": "parts-verdict",
145
+ "path": "evidence/review-reads/4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05.json",
146
+ "sha256": "4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05",
147
+ "spec": "rig-create/parts-verdict-cli@1"
148
+ }
149
+ },
150
+ "structure": {
151
+ "path": "evidence/structure-decisions.json",
152
+ "sha256": "48a6bf6a09973f5c87cfcd1ca60173bef88ff53fcaed1989e2d70e21c67c0989"
153
+ }
154
+ },
155
+ {
156
+ "stage": "rigging",
157
+ "checkpoint": "constraints",
158
+ "by": "user",
159
+ "at": "2026-11-09T00:00:45.000Z",
160
+ "verbatim": "ok, the scarf looks right in the sketch"
161
+ },
162
+ {
163
+ "stage": "rigging",
164
+ "checkpoint": "constraints",
165
+ "by": "user",
166
+ "at": "2026-11-09T00:00:49.000Z",
167
+ "verbatim": "better"
168
+ },
169
+ {
170
+ "stage": "rig-review",
171
+ "checkpoint": null,
172
+ "by": "user",
173
+ "at": "2026-11-09T00:00:51.000Z",
174
+ "verbatim": "yes, that's her",
175
+ "target": {
176
+ "version": 2,
177
+ "verdict": "versions[1].verdicts[0]",
178
+ "review_package": {
179
+ "path": "versions[1].review_package",
180
+ "sha256": "fbd1185f937f494f2b7e7fc4db47cb449d08b5cc44f5137cafd6b87d0941c426"
181
+ }
182
+ }
183
+ },
184
+ {
185
+ "stage": "post-interview",
186
+ "checkpoint": null,
187
+ "by": "user",
188
+ "at": "2026-11-09T00:01:00.000Z",
189
+ "verbatim": "go",
190
+ "steps": [
191
+ "camera",
192
+ "timing",
193
+ "composition"
194
+ ],
195
+ "step_hashes": {
196
+ "camera": "e4cd2ce19e3e0b79f718a52865d64618444ad3e27c34d056e67837cc31c0ff39",
197
+ "timing": "80b7b9d9643de05f407b9b0ddd2136302b43e6630ae978bb5d42c2264b5e14fa",
198
+ "composition": "07e07d80cf21f7cdc65caf6bc6056986fc31c637fa7345c3c5cdf1515624d111"
199
+ },
200
+ "answer_hashes": {
201
+ "camera_depth": "cfbe6b6a888fa0efddf882f7c7b8b01f1e52d7249169504252c0a66969f5b765",
202
+ "post_timing": "dab49f2a0a86044df285dc54438c28dd4d98935706bad1636b1009b71b3ad23d",
203
+ "motion": "591004fbf7145f4172cbe59c6e65e8358ef6923c41e45ccc3077fdb1b9cf7c13",
204
+ "post_composition": "746603abd443033a4a29a4213b652b983a4d1bf378e8403a3c074004aaa4e03f"
205
+ }
206
+ },
207
+ {
208
+ "stage": "direction-review",
209
+ "checkpoint": null,
210
+ "by": "user",
211
+ "at": "2026-11-09T00:01:04.000Z",
212
+ "verbatim": "done, I like it",
213
+ "target": {
214
+ "version": 4,
215
+ "verdict": "versions[3].verdicts[0]",
216
+ "direction": {
217
+ "path": "evidence/direction/v4.json",
218
+ "sha256": "ea93e49482932e40dc57e0702a6c98dd86b5791f22d1bfb260219e414e89ed24"
219
+ }
220
+ }
221
+ }
222
+ ],
223
+ "interview": {
224
+ "question_set": "rig-create/interview@2 (waypoints read from @rig-c/parts 2.37.0)",
225
+ "held": true,
226
+ "date": "2026-11-10",
227
+ "interviewer": "agent",
228
+ "respondent": "user",
229
+ "framing": [
230
+ {
231
+ "id": "rig_type",
232
+ "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)?",
233
+ "source": "rig-create",
234
+ "required_for": [
235
+ "all"
236
+ ],
237
+ "answer": {
238
+ "delegated": false,
239
+ "by": "user",
240
+ "at": "2026-11-09T00:00:04.000Z",
241
+ "verbatim": "A standing character, idle. She holds a lantern.\nAs answered on 2026-11-09T00:00:02.000Z in interview, chat",
242
+ "source": "review questionnaire",
243
+ "choice": {
244
+ "spec": "rig-create/interview-choice@1",
245
+ "set": {
246
+ "path": "evidence/interview/example-rig-type.json",
247
+ "sha256": "04a6a412c659551d2379935cba61b3636f8a0bf8b9abd409044d71dcf5abae29"
248
+ },
249
+ "picks": [
250
+ {
251
+ "ask": "rig_type",
252
+ "option_id": "keep",
253
+ "shown": {
254
+ "label": "A standing character, idle. She holds a lantern.",
255
+ "effect": "As answered on 2026-11-09T00:00:02.000Z in interview, chat"
256
+ }
257
+ }
258
+ ]
259
+ },
260
+ "asks": [
261
+ {
262
+ "id": "rig_type",
263
+ "state": "user"
264
+ }
265
+ ],
266
+ "value": "character.idle"
267
+ },
268
+ "history": [
269
+ {
270
+ "delegated": false,
271
+ "by": "user",
272
+ "at": "2026-11-09T00:00:02.000Z",
273
+ "verbatim": "A standing character, idle. She holds a lantern.",
274
+ "value": "character.idle",
275
+ "source": "interview, chat"
276
+ }
277
+ ]
278
+ },
279
+ {
280
+ "id": "reference",
281
+ "text": "'Make it feel like this': a video, an existing demo, a game you have in mind?",
282
+ "source": "rig-create",
283
+ "required_for": [
284
+ "all"
285
+ ],
286
+ "answer": {
287
+ "delegated": false,
288
+ "by": "user",
289
+ "at": "2026-11-09T00:00:04.000Z",
290
+ "verbatim": "None.\nAs answered on 2026-11-09T00:00:03.000Z in interview, chat",
291
+ "source": "review questionnaire",
292
+ "choice": {
293
+ "spec": "rig-create/interview-choice@1",
294
+ "set": {
295
+ "path": "evidence/interview/example-reference.json",
296
+ "sha256": "2aee9dc48d9bb15c017a4603e429bb5f8a6a71533a1ad0023d3f639c219bc279"
297
+ },
298
+ "picks": [
299
+ {
300
+ "ask": "reference",
301
+ "option_id": "keep",
302
+ "shown": {
303
+ "label": "None.",
304
+ "effect": "As answered on 2026-11-09T00:00:03.000Z in interview, chat"
305
+ }
306
+ }
307
+ ]
308
+ },
309
+ "asks": [
310
+ {
311
+ "id": "reference",
312
+ "state": "user"
313
+ }
314
+ ],
315
+ "value": "none"
316
+ },
317
+ "history": [
318
+ {
319
+ "delegated": false,
320
+ "by": "user",
321
+ "at": "2026-11-09T00:00:03.000Z",
322
+ "verbatim": "None.",
323
+ "value": "none",
324
+ "source": "interview, chat"
325
+ }
326
+ ]
327
+ }
328
+ ],
329
+ "waypoints": [
330
+ {
331
+ "id": "seethrough",
332
+ "config": [
333
+ "seethrough"
334
+ ],
335
+ "prompts": [
336
+ {
337
+ "id": "x_layers",
338
+ "text": "Is there anything the layer split must keep together or keep apart: a hat with the head, a held object on its own?",
339
+ "source": "rig-create",
340
+ "required_for": [
341
+ "all"
342
+ ]
343
+ }
344
+ ],
345
+ "guide": {
346
+ "delegated": false,
347
+ "by": "user",
348
+ "at": "2026-11-09T00:00:04.000Z",
349
+ "verbatim": "auto\nAs answered on 2026-11-09T00:00:04.000Z in interview, chat\n\nKeep the proposed resolution\nUse the proposed resolution on the named synthetic parts.\n\nKeep the proposed head_crop\nUse the proposed head_crop on the named synthetic parts.\n\nLet the agent decide\nThe agent must record this decision before approval.",
350
+ "source": "review questionnaire",
351
+ "choice": {
352
+ "spec": "rig-create/interview-choice@1",
353
+ "set": {
354
+ "path": "evidence/interview/example-seethrough.json",
355
+ "sha256": "9569fd8953f1037148d4a0851636a5c4aa6260c4bcc8704f719ceb08d128103b"
356
+ },
357
+ "picks": [
358
+ {
359
+ "ask": "layers",
360
+ "option_id": "keep",
361
+ "shown": {
362
+ "label": "auto",
363
+ "effect": "As answered on 2026-11-09T00:00:04.000Z in interview, chat"
364
+ }
365
+ },
366
+ {
367
+ "ask": "resolution",
368
+ "option_id": "keep",
369
+ "shown": {
370
+ "label": "Keep the proposed resolution",
371
+ "effect": "Use the proposed resolution on the named synthetic parts."
372
+ }
373
+ },
374
+ {
375
+ "ask": "head_crop",
376
+ "option_id": "keep",
377
+ "shown": {
378
+ "label": "Keep the proposed head_crop",
379
+ "effect": "Use the proposed head_crop on the named synthetic parts."
380
+ }
381
+ },
382
+ {
383
+ "ask": "seed",
384
+ "option_id": "auto",
385
+ "shown": {
386
+ "label": "Let the agent decide",
387
+ "effect": "The agent must record this decision before approval."
388
+ }
389
+ }
390
+ ]
391
+ },
392
+ "asks": [
393
+ {
394
+ "id": "layers",
395
+ "state": "user"
396
+ },
397
+ {
398
+ "id": "resolution",
399
+ "state": "user"
400
+ },
401
+ {
402
+ "id": "head_crop",
403
+ "state": "user"
404
+ },
405
+ {
406
+ "id": "seed",
407
+ "state": "delegated"
408
+ }
409
+ ],
410
+ "value": {
411
+ "layers": "synthetic layers on the approved parts",
412
+ "resolution": "synthetic resolution on the approved parts",
413
+ "head_crop": "synthetic head_crop on the approved parts"
414
+ },
415
+ "agent_decision": {
416
+ "by": "agent",
417
+ "at": "2026-11-09T00:00:05.000Z",
418
+ "reasoning": "Retain the declared synthetic seed direction.",
419
+ "covers": "seed",
420
+ "fragments": [
421
+ {
422
+ "ask": "seed",
423
+ "fragment": {
424
+ "seed": "synthetic seed on the approved parts"
425
+ }
426
+ }
427
+ ],
428
+ "value": {
429
+ "seed": "synthetic seed on the approved parts"
430
+ }
431
+ },
432
+ "refusal_baseline": [
433
+ {
434
+ "code": "INTERVIEW_CHOICE_REQUIRED",
435
+ "path": "interview.waypoints[seethrough].guide",
436
+ "count": 1
437
+ },
438
+ {
439
+ "code": "INTERVIEW_CHOICE_REQUIRED",
440
+ "path": "interview.waypoints[assemble].guide",
441
+ "count": 1
442
+ }
443
+ ]
444
+ },
445
+ "history": [
446
+ {
447
+ "at": "2026-11-09T00:00:32.000Z",
448
+ "bounce": {
449
+ "cause": "agent",
450
+ "failed": "The first full-resolution split merged the eyelids into the face",
451
+ "bar": "Blink needs the eyelids as their own layers",
452
+ "replacement": "Run the recorded full pass plus a head pass before assembly"
453
+ }
454
+ },
455
+ {
456
+ "delegated": true,
457
+ "by": "user",
458
+ "at": "2026-11-09T00:00:04.000Z",
459
+ "verbatim": "auto",
460
+ "source": "interview, chat",
461
+ "agent_decision": {
462
+ "value": {
463
+ "passes": [
464
+ "full",
465
+ "head"
466
+ ],
467
+ "head_box": "her face and the hair tail's root, from the painting",
468
+ "resolution": "full painting resolution for the full pass; crop resolution for the head pass",
469
+ "seed": 0,
470
+ "grouping": "keep painted groups except the independently moving parts named by the guides"
471
+ },
472
+ "by": "agent",
473
+ "at": "2026-11-09T00:00:19.000Z",
474
+ "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."
475
+ },
476
+ "asks": [
477
+ {
478
+ "id": "layers",
479
+ "state": "delegated"
480
+ },
481
+ {
482
+ "id": "resolution",
483
+ "state": "delegated"
484
+ },
485
+ {
486
+ "id": "head_crop",
487
+ "state": "delegated"
488
+ },
489
+ {
490
+ "id": "seed",
491
+ "state": "delegated"
492
+ }
493
+ ]
494
+ }
495
+ ]
496
+ },
497
+ {
498
+ "id": "assemble",
499
+ "config": [
500
+ "assemble",
501
+ "limbs",
502
+ "scene",
503
+ "waist"
504
+ ],
505
+ "prompts": [
506
+ {
507
+ "id": "split_granularity",
508
+ "text": "How finely should it be cut?",
509
+ "source": "rig-create",
510
+ "required_for": [
511
+ "all"
512
+ ]
513
+ },
514
+ {
515
+ "id": "split_emphasis",
516
+ "text": "Which parts matter most: more detail, or kept exactly as painted?",
517
+ "source": "rig-create",
518
+ "required_for": [
519
+ "all"
520
+ ]
521
+ }
522
+ ],
523
+ "guide": {
524
+ "delegated": false,
525
+ "by": "user",
526
+ "at": "2026-11-09T00:00:04.000Z",
527
+ "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.\nAs answered on 2026-11-09T00:00:06.000Z in interview, chat\n\nKeep the proposed ground\nUse the proposed ground on the named synthetic parts.\n\nKeep the proposed cut\nUse the proposed cut on the named synthetic parts.\n\nKeep the proposed emphasis\nUse the proposed emphasis on the named synthetic parts.\n\nKeep the proposed draw_order\nUse the proposed draw_order on the named synthetic parts.\n\nKeep the proposed authored\nUse the proposed authored on the named synthetic parts.\n\nKeep the proposed occluders\nUse the proposed occluders on the named synthetic parts.\n\nKeep the proposed outfits\nUse the proposed outfits on the named synthetic parts.",
528
+ "source": "review questionnaire",
529
+ "choice": {
530
+ "spec": "rig-create/interview-choice@1",
531
+ "set": {
532
+ "path": "evidence/interview/example-assemble.json",
533
+ "sha256": "b4f8b234cb563bf225a102327d10417d44834d22d6119c0532e25830b047085c"
534
+ },
535
+ "picks": [
536
+ {
537
+ "ask": "projection",
538
+ "option_id": "keep",
539
+ "shown": {
540
+ "label": "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.",
541
+ "effect": "As answered on 2026-11-09T00:00:06.000Z in interview, chat"
542
+ }
543
+ },
544
+ {
545
+ "ask": "ground",
546
+ "option_id": "keep",
547
+ "shown": {
548
+ "label": "Keep the proposed ground",
549
+ "effect": "Use the proposed ground on the named synthetic parts."
550
+ }
551
+ },
552
+ {
553
+ "ask": "cut",
554
+ "option_id": "keep",
555
+ "shown": {
556
+ "label": "Keep the proposed cut",
557
+ "effect": "Use the proposed cut on the named synthetic parts."
558
+ }
559
+ },
560
+ {
561
+ "ask": "emphasis",
562
+ "option_id": "keep",
563
+ "shown": {
564
+ "label": "Keep the proposed emphasis",
565
+ "effect": "Use the proposed emphasis on the named synthetic parts."
566
+ }
567
+ },
568
+ {
569
+ "ask": "draw_order",
570
+ "option_id": "keep",
571
+ "shown": {
572
+ "label": "Keep the proposed draw_order",
573
+ "effect": "Use the proposed draw_order on the named synthetic parts."
574
+ }
575
+ },
576
+ {
577
+ "ask": "authored",
578
+ "option_id": "keep",
579
+ "shown": {
580
+ "label": "Keep the proposed authored",
581
+ "effect": "Use the proposed authored on the named synthetic parts."
582
+ }
583
+ },
584
+ {
585
+ "ask": "occluders",
586
+ "option_id": "keep",
587
+ "shown": {
588
+ "label": "Keep the proposed occluders",
589
+ "effect": "Use the proposed occluders on the named synthetic parts."
590
+ }
591
+ },
592
+ {
593
+ "ask": "outfits",
594
+ "option_id": "keep",
595
+ "shown": {
596
+ "label": "Keep the proposed outfits",
597
+ "effect": "Use the proposed outfits on the named synthetic parts."
598
+ }
599
+ }
600
+ ]
601
+ },
602
+ "asks": [
603
+ {
604
+ "id": "projection",
605
+ "state": "user"
606
+ },
607
+ {
608
+ "id": "ground",
609
+ "state": "user"
610
+ },
611
+ {
612
+ "id": "cut",
613
+ "state": "user"
614
+ },
615
+ {
616
+ "id": "emphasis",
617
+ "state": "user"
618
+ },
619
+ {
620
+ "id": "draw_order",
621
+ "state": "user"
622
+ },
623
+ {
624
+ "id": "authored",
625
+ "state": "user"
626
+ },
627
+ {
628
+ "id": "occluders",
629
+ "state": "user"
630
+ },
631
+ {
632
+ "id": "outfits",
633
+ "state": "user"
634
+ }
635
+ ],
636
+ "value": {
637
+ "project": "core",
638
+ "ground": "plain",
639
+ "cut": "synthetic cut on the approved parts",
640
+ "emphasis": "synthetic emphasis on the approved parts",
641
+ "draw_order": "synthetic draw_order on the approved parts",
642
+ "authored": "synthetic authored on the approved parts",
643
+ "occluders": "synthetic occluders on the approved parts",
644
+ "outfits": "synthetic outfits on the approved parts"
645
+ }
646
+ },
647
+ "history": [
648
+ {
649
+ "delegated": false,
650
+ "by": "user",
651
+ "at": "2026-11-09T00:00:06.000Z",
652
+ "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.",
653
+ "value": {
654
+ "project": "core",
655
+ "split_granularity": "standard",
656
+ "split_emphasis": [
657
+ {
658
+ "part": "face",
659
+ "want": "untouched"
660
+ },
661
+ {
662
+ "part": "lantern",
663
+ "want": "own part"
664
+ }
665
+ ]
666
+ },
667
+ "source": "interview, chat",
668
+ "agent_decision": {
669
+ "covers": "the remaining part list, draw order, new authored parts, occluded content and outfit sets",
670
+ "value": {
671
+ "parts_in_draw_order": [
672
+ "background",
673
+ "lighthouse",
674
+ "coat_tail_l",
675
+ "coat_tail_r",
676
+ "legs",
677
+ "torso",
678
+ "upperarm_l",
679
+ "forearm_l",
680
+ "hand_l",
681
+ "scarf",
682
+ "head",
683
+ "hair_tail",
684
+ "hair_front",
685
+ "eyelids_l",
686
+ "eyelids_r",
687
+ "upperarm_r",
688
+ "forearm_r",
689
+ "hand_r",
690
+ "lantern"
691
+ ],
692
+ "authored_new": "none beyond the separated painted parts",
693
+ "under_occluders": "retain underlying painted surfaces for the stated motion",
694
+ "outfit_sets": []
695
+ },
696
+ "by": "agent",
697
+ "at": "2026-11-09T00:00:20.000Z",
698
+ "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."
699
+ },
700
+ "asks": [
701
+ {
702
+ "id": "projection",
703
+ "state": "user"
704
+ },
705
+ {
706
+ "id": "cut",
707
+ "state": "user"
708
+ },
709
+ {
710
+ "id": "emphasis",
711
+ "state": "user"
712
+ },
713
+ {
714
+ "id": "draw_order",
715
+ "state": "delegated"
716
+ },
717
+ {
718
+ "id": "authored",
719
+ "state": "delegated"
720
+ },
721
+ {
722
+ "id": "occluders",
723
+ "state": "delegated"
724
+ },
725
+ {
726
+ "id": "outfits",
727
+ "state": "delegated"
728
+ }
729
+ ]
730
+ }
731
+ ]
732
+ },
733
+ {
734
+ "id": "bones",
735
+ "config": [
736
+ "bones"
737
+ ],
738
+ "prompts": [
739
+ {
740
+ "id": "x_chains",
741
+ "text": "What moves on its own: hair strands, coat tails, sleeves, held things?",
742
+ "source": "rig-create",
743
+ "required_for": [
744
+ "all"
745
+ ]
746
+ }
747
+ ],
748
+ "guide": {
749
+ "delegated": false,
750
+ "by": "user",
751
+ "at": "2026-11-09T00:00:41.000Z",
752
+ "verbatim": "Synthetic bones answer after viewing the approved parts and structure.\nAs answered on 2026-11-09T00:00:38.000Z in interview, chat\n\nKeep the proposed placement\nUse the proposed placement on the named synthetic parts.\n\nKeep the proposed length\nUse the proposed length on the named synthetic parts.",
753
+ "source": "review questionnaire",
754
+ "choice": {
755
+ "spec": "rig-create/interview-choice@1",
756
+ "set": {
757
+ "path": "evidence/interview/example-bones.json",
758
+ "sha256": "4e6b74abfef5b8df83d0c8e09bc8bfea4ed18bcb00cd99517cc2113f4f66efdd"
759
+ },
760
+ "picks": [
761
+ {
762
+ "ask": "chains",
763
+ "option_id": "keep",
764
+ "shown": {
765
+ "label": "Synthetic bones answer after viewing the approved parts and structure.",
766
+ "effect": "As answered on 2026-11-09T00:00:38.000Z in interview, chat"
767
+ }
768
+ },
769
+ {
770
+ "ask": "placement",
771
+ "option_id": "keep",
772
+ "shown": {
773
+ "label": "Keep the proposed placement",
774
+ "effect": "Use the proposed placement on the named synthetic parts."
775
+ }
776
+ },
777
+ {
778
+ "ask": "length",
779
+ "option_id": "keep",
780
+ "shown": {
781
+ "label": "Keep the proposed length",
782
+ "effect": "Use the proposed length on the named synthetic parts."
783
+ }
784
+ }
785
+ ]
786
+ },
787
+ "asks": [
788
+ {
789
+ "id": "chains",
790
+ "state": "user"
791
+ },
792
+ {
793
+ "id": "placement",
794
+ "state": "user"
795
+ },
796
+ {
797
+ "id": "length",
798
+ "state": "user"
799
+ }
800
+ ],
801
+ "value": {
802
+ "chains": "synthetic chains on the approved parts",
803
+ "placement": "synthetic placement on the approved parts",
804
+ "length": "synthetic length on the approved parts"
805
+ }
806
+ },
807
+ "history": [
808
+ {
809
+ "delegated": false,
810
+ "by": "user",
811
+ "at": "2026-11-09T00:00:07.000Z",
812
+ "verbatim": "A chain down the scarf, one in each coat tail, one in her hair tail. Bone placement and chain lengths are yours.",
813
+ "value": [
814
+ {
815
+ "chain": "scarf"
816
+ },
817
+ {
818
+ "chain": "coat_tail_l"
819
+ },
820
+ {
821
+ "chain": "coat_tail_r"
822
+ },
823
+ {
824
+ "chain": "hair_tail"
825
+ }
826
+ ],
827
+ "source": "interview, chat",
828
+ "additions": [
829
+ {
830
+ "by": "user",
831
+ "at": "2026-11-09T00:00:47.000Z",
832
+ "verbatim": "It should hang from her hand and swing on its own.",
833
+ "value": [
834
+ {
835
+ "hinge": "lantern",
836
+ "from": "hand_r"
837
+ }
838
+ ],
839
+ "source": "polish feedback, v1"
840
+ }
841
+ ],
842
+ "asks": [
843
+ {
844
+ "id": "chains",
845
+ "state": "user"
846
+ },
847
+ {
848
+ "id": "placement",
849
+ "state": "delegated"
850
+ },
851
+ {
852
+ "id": "length",
853
+ "state": "delegated"
854
+ }
855
+ ],
856
+ "agent_decision": {
857
+ "covers": "bone placement and chain lengths",
858
+ "value": {
859
+ "placement": "along the named parts in the painting",
860
+ "length": "span each named part"
861
+ },
862
+ "by": "agent",
863
+ "at": "2026-11-09T00:00:21.000Z",
864
+ "reasoning": "Fit each chain to its named part; preserve the rigid rest."
865
+ }
866
+ },
867
+ {
868
+ "delegated": false,
869
+ "by": "user",
870
+ "at": "2026-11-09T00:00:38.000Z",
871
+ "verbatim": "Synthetic bones answer after viewing the approved parts and structure.",
872
+ "value": [
873
+ {
874
+ "chain": "scarf"
875
+ },
876
+ {
877
+ "chain": "coat_tail_l"
878
+ },
879
+ {
880
+ "chain": "coat_tail_r"
881
+ },
882
+ {
883
+ "chain": "hair_tail"
884
+ }
885
+ ],
886
+ "source": "interview, chat",
887
+ "additions": [
888
+ {
889
+ "by": "user",
890
+ "at": "2026-11-09T00:00:47.000Z",
891
+ "verbatim": "It should hang from her hand and swing on its own.",
892
+ "value": [
893
+ {
894
+ "hinge": "lantern",
895
+ "from": "hand_r"
896
+ }
897
+ ],
898
+ "source": "polish feedback, v1"
899
+ }
900
+ ],
901
+ "asks": [
902
+ {
903
+ "id": "chains",
904
+ "state": "user"
905
+ },
906
+ {
907
+ "id": "placement",
908
+ "state": "delegated"
909
+ },
910
+ {
911
+ "id": "length",
912
+ "state": "delegated"
913
+ }
914
+ ],
915
+ "agent_decision": {
916
+ "covers": "bone placement and chain lengths",
917
+ "value": {
918
+ "placement": "along the named parts in the painting",
919
+ "length": "span each named part"
920
+ },
921
+ "by": "agent",
922
+ "at": "2026-11-09T00:00:21.000Z",
923
+ "reasoning": "Fit each chain to its named part; preserve the rigid rest."
924
+ }
925
+ }
926
+ ]
927
+ },
928
+ {
929
+ "id": "meshes",
930
+ "config": [
931
+ "meshes",
932
+ "regions"
933
+ ],
934
+ "prompts": [
935
+ {
936
+ "id": "x_deform",
937
+ "text": "What must bend smoothly as one piece, and what must stay rigid?",
938
+ "source": "rig-create",
939
+ "required_for": [
940
+ "all"
941
+ ]
942
+ }
943
+ ],
944
+ "guide": {
945
+ "delegated": false,
946
+ "by": "user",
947
+ "at": "2026-11-09T00:00:41.000Z",
948
+ "verbatim": "Synthetic meshes answer after viewing the approved parts and structure.\nAs answered on 2026-11-09T00:00:38.000Z in interview, chat\n\nKeep the proposed rigid\nUse the proposed rigid on the named synthetic parts.\n\nKeep the proposed density\nUse the proposed density on the named synthetic parts.",
949
+ "source": "review questionnaire",
950
+ "choice": {
951
+ "spec": "rig-create/interview-choice@1",
952
+ "set": {
953
+ "path": "evidence/interview/example-meshes.json",
954
+ "sha256": "7b7677769e4ec8390de82418b5280b3a8877cbb34f5d58ac16c568333efb33f1"
955
+ },
956
+ "picks": [
957
+ {
958
+ "ask": "bend",
959
+ "option_id": "keep",
960
+ "shown": {
961
+ "label": "Synthetic meshes answer after viewing the approved parts and structure.",
962
+ "effect": "As answered on 2026-11-09T00:00:38.000Z in interview, chat"
963
+ }
964
+ },
965
+ {
966
+ "ask": "rigid",
967
+ "option_id": "keep",
968
+ "shown": {
969
+ "label": "Keep the proposed rigid",
970
+ "effect": "Use the proposed rigid on the named synthetic parts."
971
+ }
972
+ },
973
+ {
974
+ "ask": "density",
975
+ "option_id": "keep",
976
+ "shown": {
977
+ "label": "Keep the proposed density",
978
+ "effect": "Use the proposed density on the named synthetic parts."
979
+ }
980
+ }
981
+ ]
982
+ },
983
+ "asks": [
984
+ {
985
+ "id": "bend",
986
+ "state": "user"
987
+ },
988
+ {
989
+ "id": "rigid",
990
+ "state": "user"
991
+ },
992
+ {
993
+ "id": "density",
994
+ "state": "user"
995
+ }
996
+ ],
997
+ "value": {
998
+ "bend": "synthetic bend on the approved parts",
999
+ "rigid": "synthetic rigid on the approved parts",
1000
+ "density": "synthetic density on the approved parts"
1001
+ }
1002
+ },
1003
+ "history": [
1004
+ {
1005
+ "delegated": false,
1006
+ "by": "user",
1007
+ "at": "2026-11-09T00:00:10.000Z",
1008
+ "verbatim": "The coat is one piece that bends with her breath. Face and lantern stay rigid. The mesh density is yours.",
1009
+ "value": {
1010
+ "meshes": [
1011
+ "torso"
1012
+ ],
1013
+ "rigid": [
1014
+ "head",
1015
+ "lantern"
1016
+ ]
1017
+ },
1018
+ "source": "interview, chat",
1019
+ "asks": [
1020
+ {
1021
+ "id": "bend",
1022
+ "state": "user"
1023
+ },
1024
+ {
1025
+ "id": "rigid",
1026
+ "state": "user"
1027
+ },
1028
+ {
1029
+ "id": "density",
1030
+ "state": "delegated"
1031
+ }
1032
+ ],
1033
+ "agent_decision": {
1034
+ "covers": "mesh density",
1035
+ "value": {
1036
+ "density": "standard"
1037
+ },
1038
+ "by": "agent",
1039
+ "at": "2026-11-09T00:00:21.000Z",
1040
+ "reasoning": "Use standard density for the bending coat; keep rigid parts rigid."
1041
+ }
1042
+ },
1043
+ {
1044
+ "delegated": false,
1045
+ "by": "user",
1046
+ "at": "2026-11-09T00:00:38.000Z",
1047
+ "verbatim": "Synthetic meshes answer after viewing the approved parts and structure.",
1048
+ "value": {
1049
+ "meshes": [
1050
+ "torso"
1051
+ ],
1052
+ "rigid": [
1053
+ "head",
1054
+ "lantern"
1055
+ ]
1056
+ },
1057
+ "source": "interview, chat",
1058
+ "asks": [
1059
+ {
1060
+ "id": "bend",
1061
+ "state": "user"
1062
+ },
1063
+ {
1064
+ "id": "rigid",
1065
+ "state": "user"
1066
+ },
1067
+ {
1068
+ "id": "density",
1069
+ "state": "delegated"
1070
+ }
1071
+ ],
1072
+ "agent_decision": {
1073
+ "covers": "mesh density",
1074
+ "value": {
1075
+ "density": "standard"
1076
+ },
1077
+ "by": "agent",
1078
+ "at": "2026-11-09T00:00:21.000Z",
1079
+ "reasoning": "Use standard density for the bending coat; keep rigid parts rigid."
1080
+ }
1081
+ }
1082
+ ]
1083
+ },
1084
+ {
1085
+ "id": "constraints",
1086
+ "config": [
1087
+ "constraints",
1088
+ "stops",
1089
+ "cloth"
1090
+ ],
1091
+ "prompts": [
1092
+ {
1093
+ "id": "split_effects",
1094
+ "text": "Which parts have special effects (sway on physics, move in wind, jiggle, glow, flicker), and how far do they move?",
1095
+ "source": "rig-create",
1096
+ "required_for": [
1097
+ "all"
1098
+ ]
1099
+ }
1100
+ ],
1101
+ "guide": {
1102
+ "delegated": false,
1103
+ "by": "user",
1104
+ "at": "2026-11-09T00:00:41.000Z",
1105
+ "verbatim": "Synthetic constraints answer after viewing the approved parts and structure.\nAs answered on 2026-11-09T00:00:38.000Z in interview, chat\n\nKeep the proposed strength\nUse the proposed strength on the named synthetic parts.\n\nKeep the proposed extent\nUse the proposed extent on the named synthetic parts.\n\nKeep the proposed gravity\nUse the proposed gravity on the named synthetic parts.\n\nKeep the proposed stops\nUse the proposed stops on the named synthetic parts.",
1106
+ "source": "review questionnaire",
1107
+ "choice": {
1108
+ "spec": "rig-create/interview-choice@1",
1109
+ "set": {
1110
+ "path": "evidence/interview/example-constraints.json",
1111
+ "sha256": "38f61c92784a9a8a3e85985ee88ab41fcbd3e08ad7cfcaf95e2c810ae33f9354"
1112
+ },
1113
+ "picks": [
1114
+ {
1115
+ "ask": "effects",
1116
+ "option_id": "keep",
1117
+ "shown": {
1118
+ "label": "Synthetic constraints answer after viewing the approved parts and structure.",
1119
+ "effect": "As answered on 2026-11-09T00:00:38.000Z in interview, chat"
1120
+ }
1121
+ },
1122
+ {
1123
+ "ask": "strength",
1124
+ "option_id": "keep",
1125
+ "shown": {
1126
+ "label": "Keep the proposed strength",
1127
+ "effect": "Use the proposed strength on the named synthetic parts."
1128
+ }
1129
+ },
1130
+ {
1131
+ "ask": "extent",
1132
+ "option_id": "keep",
1133
+ "shown": {
1134
+ "label": "Keep the proposed extent",
1135
+ "effect": "Use the proposed extent on the named synthetic parts."
1136
+ }
1137
+ },
1138
+ {
1139
+ "ask": "gravity",
1140
+ "option_id": "keep",
1141
+ "shown": {
1142
+ "label": "Keep the proposed gravity",
1143
+ "effect": "Use the proposed gravity on the named synthetic parts."
1144
+ }
1145
+ },
1146
+ {
1147
+ "ask": "stops",
1148
+ "option_id": "keep",
1149
+ "shown": {
1150
+ "label": "Keep the proposed stops",
1151
+ "effect": "Use the proposed stops on the named synthetic parts."
1152
+ }
1153
+ }
1154
+ ]
1155
+ },
1156
+ "asks": [
1157
+ {
1158
+ "id": "effects",
1159
+ "state": "user"
1160
+ },
1161
+ {
1162
+ "id": "strength",
1163
+ "state": "user"
1164
+ },
1165
+ {
1166
+ "id": "extent",
1167
+ "state": "user"
1168
+ },
1169
+ {
1170
+ "id": "gravity",
1171
+ "state": "user"
1172
+ },
1173
+ {
1174
+ "id": "stops",
1175
+ "state": "user"
1176
+ }
1177
+ ],
1178
+ "value": {
1179
+ "effects": "synthetic effects on the approved parts",
1180
+ "strength": "synthetic strength on the approved parts",
1181
+ "extent": "synthetic extent on the approved parts",
1182
+ "gravity": "synthetic gravity on the approved parts",
1183
+ "stops": "synthetic stops on the approved parts"
1184
+ }
1185
+ },
1186
+ "history": [
1187
+ {
1188
+ "delegated": false,
1189
+ "by": "user",
1190
+ "at": "2026-11-09T00:00:15.000Z",
1191
+ "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.",
1192
+ "value": [
1193
+ {
1194
+ "part": "scarf",
1195
+ "effect": "wind",
1196
+ "extent": "a little more than the coat tails"
1197
+ },
1198
+ {
1199
+ "part": "coat_tail_l",
1200
+ "effect": "wind",
1201
+ "extent": "as said"
1202
+ },
1203
+ {
1204
+ "part": "coat_tail_r",
1205
+ "effect": "wind",
1206
+ "extent": "as said"
1207
+ },
1208
+ {
1209
+ "part": "hair_tail",
1210
+ "effect": "wind",
1211
+ "extent": "barely"
1212
+ },
1213
+ {
1214
+ "part": "*",
1215
+ "effect": "still",
1216
+ "extent": "every other part"
1217
+ }
1218
+ ],
1219
+ "source": "interview, chat",
1220
+ "asks": [
1221
+ {
1222
+ "id": "effects",
1223
+ "state": "user"
1224
+ },
1225
+ {
1226
+ "id": "strength",
1227
+ "state": "user"
1228
+ },
1229
+ {
1230
+ "id": "extent",
1231
+ "state": "user"
1232
+ },
1233
+ {
1234
+ "id": "gravity",
1235
+ "state": "delegated"
1236
+ },
1237
+ {
1238
+ "id": "stops",
1239
+ "state": "delegated"
1240
+ }
1241
+ ],
1242
+ "agent_decision": {
1243
+ "covers": "gravity and chain stops",
1244
+ "value": {
1245
+ "gravity": "downward",
1246
+ "stops": "bound each chain to its stated extent"
1247
+ },
1248
+ "by": "agent",
1249
+ "at": "2026-11-09T00:00:21.000Z",
1250
+ "reasoning": "Keep each chain within the extent already stated."
1251
+ }
1252
+ },
1253
+ {
1254
+ "delegated": false,
1255
+ "by": "user",
1256
+ "at": "2026-11-09T00:00:38.000Z",
1257
+ "verbatim": "Synthetic constraints answer after viewing the approved parts and structure.",
1258
+ "value": [
1259
+ {
1260
+ "part": "scarf",
1261
+ "effect": "wind",
1262
+ "extent": "a little more than the coat tails"
1263
+ },
1264
+ {
1265
+ "part": "coat_tail_l",
1266
+ "effect": "wind",
1267
+ "extent": "as said"
1268
+ },
1269
+ {
1270
+ "part": "coat_tail_r",
1271
+ "effect": "wind",
1272
+ "extent": "as said"
1273
+ },
1274
+ {
1275
+ "part": "hair_tail",
1276
+ "effect": "wind",
1277
+ "extent": "barely"
1278
+ },
1279
+ {
1280
+ "part": "*",
1281
+ "effect": "still",
1282
+ "extent": "every other part"
1283
+ }
1284
+ ],
1285
+ "source": "interview, chat",
1286
+ "asks": [
1287
+ {
1288
+ "id": "effects",
1289
+ "state": "user"
1290
+ },
1291
+ {
1292
+ "id": "strength",
1293
+ "state": "user"
1294
+ },
1295
+ {
1296
+ "id": "extent",
1297
+ "state": "user"
1298
+ },
1299
+ {
1300
+ "id": "gravity",
1301
+ "state": "delegated"
1302
+ },
1303
+ {
1304
+ "id": "stops",
1305
+ "state": "delegated"
1306
+ }
1307
+ ],
1308
+ "agent_decision": {
1309
+ "covers": "gravity and chain stops",
1310
+ "value": {
1311
+ "gravity": "downward",
1312
+ "stops": "bound each chain to its stated extent"
1313
+ },
1314
+ "by": "agent",
1315
+ "at": "2026-11-09T00:00:21.000Z",
1316
+ "reasoning": "Keep each chain within the extent already stated."
1317
+ }
1318
+ }
1319
+ ]
1320
+ },
1321
+ {
1322
+ "id": "motion",
1323
+ "config": [
1324
+ "motion"
1325
+ ],
1326
+ "prompts": [
1327
+ {
1328
+ "id": "motions",
1329
+ "text": "Which moves? Name each one.",
1330
+ "source": "rig-create",
1331
+ "required_for": [
1332
+ "character.idle",
1333
+ "character.complex",
1334
+ "character.monster",
1335
+ "fullscreen.minimal"
1336
+ ]
1337
+ },
1338
+ {
1339
+ "id": "game_states",
1340
+ "text": "Which states, and what moves it from one to the next?",
1341
+ "source": "rig-create",
1342
+ "required_for": [
1343
+ "fullscreen.game_logic"
1344
+ ]
1345
+ }
1346
+ ],
1347
+ "guide": {
1348
+ "delegated": false,
1349
+ "by": "user",
1350
+ "at": "2026-11-09T00:00:41.000Z",
1351
+ "verbatim": "Synthetic motion answer after viewing the approved parts and structure.\nAs answered on 2026-11-09T00:00:38.000Z in interview, chat\n\nKeep the proposed extent\nUse the proposed extent on the named synthetic parts.\n\nKeep the proposed speed\nUse the proposed speed on the named synthetic parts.\n\nKeep the proposed loop\nUse the proposed loop on the named synthetic parts.\n\nKeep the proposed blink\nUse the proposed blink on the named synthetic parts.",
1352
+ "source": "review questionnaire",
1353
+ "choice": {
1354
+ "spec": "rig-create/interview-choice@1",
1355
+ "set": {
1356
+ "path": "evidence/interview/example-motion.json",
1357
+ "sha256": "f9a625b40e9f3e3d91ebf47d1843d8708fbe4ac2db93b61322435e4a52cfcb08"
1358
+ },
1359
+ "picks": [
1360
+ {
1361
+ "ask": "tracks",
1362
+ "option_id": "keep",
1363
+ "shown": {
1364
+ "label": "Synthetic motion answer after viewing the approved parts and structure.",
1365
+ "effect": "As answered on 2026-11-09T00:00:38.000Z in interview, chat"
1366
+ }
1367
+ },
1368
+ {
1369
+ "ask": "extent",
1370
+ "option_id": "keep",
1371
+ "shown": {
1372
+ "label": "Keep the proposed extent",
1373
+ "effect": "Use the proposed extent on the named synthetic parts."
1374
+ }
1375
+ },
1376
+ {
1377
+ "ask": "speed",
1378
+ "option_id": "keep",
1379
+ "shown": {
1380
+ "label": "Keep the proposed speed",
1381
+ "effect": "Use the proposed speed on the named synthetic parts."
1382
+ }
1383
+ },
1384
+ {
1385
+ "ask": "loop",
1386
+ "option_id": "keep",
1387
+ "shown": {
1388
+ "label": "Keep the proposed loop",
1389
+ "effect": "Use the proposed loop on the named synthetic parts."
1390
+ }
1391
+ },
1392
+ {
1393
+ "ask": "blink",
1394
+ "option_id": "keep",
1395
+ "shown": {
1396
+ "label": "Keep the proposed blink",
1397
+ "effect": "Use the proposed blink on the named synthetic parts."
1398
+ }
1399
+ }
1400
+ ]
1401
+ },
1402
+ "asks": [
1403
+ {
1404
+ "id": "tracks",
1405
+ "state": "user"
1406
+ },
1407
+ {
1408
+ "id": "extent",
1409
+ "state": "user"
1410
+ },
1411
+ {
1412
+ "id": "speed",
1413
+ "state": "user"
1414
+ },
1415
+ {
1416
+ "id": "loop",
1417
+ "state": "user"
1418
+ },
1419
+ {
1420
+ "id": "blink",
1421
+ "state": "user"
1422
+ }
1423
+ ],
1424
+ "value": {
1425
+ "tracks": "synthetic tracks on the approved parts",
1426
+ "extent": "synthetic extent on the approved parts",
1427
+ "speed": "synthetic speed on the approved parts",
1428
+ "loop": "synthetic loop on the approved parts",
1429
+ "blink": "synthetic blink on the approved parts"
1430
+ }
1431
+ },
1432
+ "history": [
1433
+ {
1434
+ "delegated": false,
1435
+ "by": "user",
1436
+ "at": "2026-11-09T00:00:17.000Z",
1437
+ "verbatim": "Breath and blink. The lantern flame flickers. The rest is yours; keep it subtle.",
1438
+ "value": [
1439
+ {
1440
+ "motion": "breath"
1441
+ },
1442
+ {
1443
+ "motion": "blink"
1444
+ },
1445
+ {
1446
+ "motion": "flame_flicker",
1447
+ "note": "on the lantern part"
1448
+ }
1449
+ ],
1450
+ "source": "interview, chat",
1451
+ "asks": [
1452
+ {
1453
+ "id": "tracks",
1454
+ "state": "user"
1455
+ },
1456
+ {
1457
+ "id": "extent",
1458
+ "state": "delegated"
1459
+ },
1460
+ {
1461
+ "id": "speed",
1462
+ "state": "delegated"
1463
+ },
1464
+ {
1465
+ "id": "loop",
1466
+ "state": "delegated"
1467
+ },
1468
+ {
1469
+ "id": "blink",
1470
+ "state": "user"
1471
+ }
1472
+ ],
1473
+ "agent_decision": {
1474
+ "covers": "motion extent, speed and loop length",
1475
+ "value": {
1476
+ "extent": "subtle breath and flame variation",
1477
+ "speed": "slow breath, brief blink, irregular flicker",
1478
+ "loop_seconds": 8
1479
+ },
1480
+ "by": "agent",
1481
+ "at": "2026-11-09T00:00:21.000Z",
1482
+ "reasoning": "Use a subtle eight-second loop for the named tracks; the post clip can use one full cycle."
1483
+ }
1484
+ },
1485
+ {
1486
+ "delegated": false,
1487
+ "by": "user",
1488
+ "at": "2026-11-09T00:00:38.000Z",
1489
+ "verbatim": "Synthetic motion answer after viewing the approved parts and structure.",
1490
+ "value": [
1491
+ {
1492
+ "motion": "breath"
1493
+ },
1494
+ {
1495
+ "motion": "blink"
1496
+ },
1497
+ {
1498
+ "motion": "flame_flicker",
1499
+ "note": "on the lantern part"
1500
+ }
1501
+ ],
1502
+ "source": "interview, chat",
1503
+ "asks": [
1504
+ {
1505
+ "id": "tracks",
1506
+ "state": "user"
1507
+ },
1508
+ {
1509
+ "id": "extent",
1510
+ "state": "delegated"
1511
+ },
1512
+ {
1513
+ "id": "speed",
1514
+ "state": "delegated"
1515
+ },
1516
+ {
1517
+ "id": "loop",
1518
+ "state": "delegated"
1519
+ },
1520
+ {
1521
+ "id": "blink",
1522
+ "state": "user"
1523
+ }
1524
+ ],
1525
+ "agent_decision": {
1526
+ "covers": "motion extent, speed and loop length",
1527
+ "value": {
1528
+ "extent": "subtle breath and flame variation",
1529
+ "speed": "slow breath, brief blink, irregular flicker",
1530
+ "loop_seconds": 8
1531
+ },
1532
+ "by": "agent",
1533
+ "at": "2026-11-09T00:00:21.000Z",
1534
+ "reasoning": "Use a subtle eight-second loop for the named tracks; the post clip can use one full cycle."
1535
+ }
1536
+ }
1537
+ ]
1538
+ }
1539
+ ],
1540
+ "post": {
1541
+ "held": true,
1542
+ "date": "2026-11-13",
1543
+ "items": [
1544
+ {
1545
+ "id": "camera_depth",
1546
+ "config": [
1547
+ "turn",
1548
+ "depth"
1549
+ ],
1550
+ "text": "Does the view move (a 2.5D head-turn with parallax, a push-in) or is it fixed?",
1551
+ "source": "rig-create",
1552
+ "guide": {
1553
+ "delegated": false,
1554
+ "by": "user",
1555
+ "at": "2026-11-09T00:00:54.000Z",
1556
+ "verbatim": "A slow push-in, no parallax.\nAs answered on 2026-11-09T00:00:53.000Z in post-interview, chat",
1557
+ "source": "review questionnaire",
1558
+ "choice": {
1559
+ "spec": "rig-create/interview-choice@1",
1560
+ "set": {
1561
+ "path": "evidence/interview/example-camera-depth.json",
1562
+ "sha256": "1842e01c935f0f7caf585ea5eafd28f047108aa564c7eeabf0c245623fa9c8ad"
1563
+ },
1564
+ "picks": [
1565
+ {
1566
+ "ask": "camera_depth",
1567
+ "option_id": "keep",
1568
+ "shown": {
1569
+ "label": "A slow push-in, no parallax.",
1570
+ "effect": "As answered on 2026-11-09T00:00:53.000Z in post-interview, chat"
1571
+ }
1572
+ }
1573
+ ]
1574
+ },
1575
+ "asks": [
1576
+ {
1577
+ "id": "camera_depth",
1578
+ "state": "user"
1579
+ }
1580
+ ],
1581
+ "value": {
1582
+ "camera": "push_in",
1583
+ "depth": false
1584
+ }
1585
+ },
1586
+ "history": [
1587
+ {
1588
+ "delegated": false,
1589
+ "by": "user",
1590
+ "at": "2026-11-09T00:00:53.000Z",
1591
+ "verbatim": "A slow push-in, no parallax.",
1592
+ "value": {
1593
+ "camera": "push_in",
1594
+ "depth": false
1595
+ },
1596
+ "source": "post-interview, chat"
1597
+ }
1598
+ ]
1599
+ },
1600
+ {
1601
+ "id": "post_timing",
1602
+ "config": [],
1603
+ "text": "How long, does it loop, and where are the beats?",
1604
+ "source": "rig-create",
1605
+ "guide": {
1606
+ "delegated": false,
1607
+ "by": "user",
1608
+ "at": "2026-11-09T00:00:54.000Z",
1609
+ "verbatim": "Eight seconds, looping. The beam sweeps past once, near the end.\nAs answered on 2026-11-09T00:00:55.000Z in post-interview, chat",
1610
+ "source": "review questionnaire",
1611
+ "choice": {
1612
+ "spec": "rig-create/interview-choice@1",
1613
+ "set": {
1614
+ "path": "evidence/interview/example-post-timing.json",
1615
+ "sha256": "dcdc62960dbe5b763b1f0494ab5b8842f9a723e05878f6e6b7c3b5e5203fc85e"
1616
+ },
1617
+ "picks": [
1618
+ {
1619
+ "ask": "post_timing",
1620
+ "option_id": "keep",
1621
+ "shown": {
1622
+ "label": "Eight seconds, looping. The beam sweeps past once, near the end.",
1623
+ "effect": "As answered on 2026-11-09T00:00:55.000Z in post-interview, chat"
1624
+ }
1625
+ }
1626
+ ]
1627
+ },
1628
+ "asks": [
1629
+ {
1630
+ "id": "post_timing",
1631
+ "state": "user"
1632
+ }
1633
+ ],
1634
+ "value": {
1635
+ "seconds": 8,
1636
+ "loop": true,
1637
+ "beats": [
1638
+ {
1639
+ "what": "beam sweep",
1640
+ "when": "near the end"
1641
+ }
1642
+ ]
1643
+ }
1644
+ },
1645
+ "history": [
1646
+ {
1647
+ "delegated": false,
1648
+ "by": "user",
1649
+ "at": "2026-11-09T00:00:55.000Z",
1650
+ "verbatim": "Eight seconds, looping. The beam sweeps past once, near the end.",
1651
+ "value": {
1652
+ "seconds": 8,
1653
+ "loop": true,
1654
+ "beats": [
1655
+ {
1656
+ "what": "beam sweep",
1657
+ "when": "near the end"
1658
+ }
1659
+ ]
1660
+ },
1661
+ "source": "post-interview, chat"
1662
+ }
1663
+ ]
1664
+ },
1665
+ {
1666
+ "id": "post_composition",
1667
+ "config": [],
1668
+ "text": "What is around the figure: background, framing, other figures, light?",
1669
+ "source": "rig-create",
1670
+ "guide": {
1671
+ "delegated": false,
1672
+ "by": "user",
1673
+ "at": "2026-11-09T00:00:54.000Z",
1674
+ "verbatim": "Keep the whole lighthouse in frame. It's night; don't brighten it.\nAs answered on 2026-11-09T00:00:56.000Z in post-interview, chat",
1675
+ "source": "review questionnaire",
1676
+ "choice": {
1677
+ "spec": "rig-create/interview-choice@1",
1678
+ "set": {
1679
+ "path": "evidence/interview/example-post-composition.json",
1680
+ "sha256": "a6251f3fe77fec2e5235332bab7f071bdc017ab76ed02aaf2327f9f83c315c0b"
1681
+ },
1682
+ "picks": [
1683
+ {
1684
+ "ask": "post_composition",
1685
+ "option_id": "keep",
1686
+ "shown": {
1687
+ "label": "Keep the whole lighthouse in frame. It's night; don't brighten it.",
1688
+ "effect": "As answered on 2026-11-09T00:00:56.000Z in post-interview, chat"
1689
+ }
1690
+ }
1691
+ ]
1692
+ },
1693
+ "asks": [
1694
+ {
1695
+ "id": "post_composition",
1696
+ "state": "user"
1697
+ }
1698
+ ],
1699
+ "value": {
1700
+ "framing": "lighthouse fully in frame",
1701
+ "light": "as painted",
1702
+ "scene": {
1703
+ "background": {
1704
+ "path": "evidence/scene-background.png",
1705
+ "rect": {
1706
+ "x": -64,
1707
+ "y": 0,
1708
+ "width": 128,
1709
+ "height": 128
1710
+ }
1711
+ }
1712
+ }
1713
+ }
1714
+ },
1715
+ "history": [
1716
+ {
1717
+ "delegated": false,
1718
+ "by": "user",
1719
+ "at": "2026-11-09T00:00:56.000Z",
1720
+ "verbatim": "Keep the whole lighthouse in frame. It's night; don't brighten it.",
1721
+ "value": {
1722
+ "framing": "lighthouse fully in frame",
1723
+ "light": "as painted"
1724
+ },
1725
+ "source": "post-interview, chat"
1726
+ }
1727
+ ]
1728
+ }
1729
+ ]
1730
+ },
1731
+ "order": {
1732
+ "spec": "rig-create/stage-order@2",
1733
+ "adopted_at": "2026-11-09T00:00:01.000Z",
1734
+ "choices_adopted_at": "2026-11-09T00:00:01.000Z"
1735
+ },
1736
+ "rigging_context": {
1737
+ "accepted_parts": {
1738
+ "signoff_at": "2026-11-09T00:00:37.000Z",
1739
+ "evidence": {
1740
+ "kind": "parts-verdict",
1741
+ "path": "evidence/review-reads/4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05.json",
1742
+ "sha256": "4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05",
1743
+ "spec": "rig-create/parts-verdict-cli@1"
1744
+ }
1745
+ },
1746
+ "structure": {
1747
+ "path": "evidence/structure-decisions.json",
1748
+ "sha256": "48a6bf6a09973f5c87cfcd1ca60173bef88ff53fcaed1989e2d70e21c67c0989"
1749
+ }
1750
+ }
1751
+ },
1752
+ "plan": {
1753
+ "drafted_by": "agent",
1754
+ "drafted_at": "2026-11-09T00:00:22.000Z",
1755
+ "steps": [
1756
+ {
1757
+ "id": "seethrough",
1758
+ "phase": "rig",
1759
+ "order": 1,
1760
+ "does": "Decompose the painting into layers: a full pass and a head pass",
1761
+ "produces": "config seethrough; derived/layers/",
1762
+ "rests_on": [
1763
+ "seethrough"
1764
+ ],
1765
+ "bar": "Both passes produce eyelid layers on both eyes; the lantern comes out as its own layer",
1766
+ "checkpoint_proposed": false,
1767
+ "checkpoint": {
1768
+ "delegated": false,
1769
+ "by": "user",
1770
+ "at": "2026-11-09T00:00:23.000Z",
1771
+ "verbatim": "no need",
1772
+ "value": false
1773
+ },
1774
+ "status": "done",
1775
+ "status_history": [
1776
+ {
1777
+ "from_status": "pending",
1778
+ "status": "in-progress",
1779
+ "by": "agent",
1780
+ "at": "2026-11-09T00:00:34.000Z",
1781
+ "checkpoint_required": false,
1782
+ "signoff": null
1783
+ },
1784
+ {
1785
+ "from_status": "in-progress",
1786
+ "status": "at-checkpoint",
1787
+ "by": "agent",
1788
+ "at": "2026-11-09T00:00:34.000Z",
1789
+ "checkpoint_required": false,
1790
+ "signoff": null
1791
+ },
1792
+ {
1793
+ "from_status": "at-checkpoint",
1794
+ "status": "done",
1795
+ "by": "agent",
1796
+ "at": "2026-11-09T00:00:34.000Z",
1797
+ "checkpoint_required": false,
1798
+ "signoff": null
1799
+ }
1800
+ ]
1801
+ },
1802
+ {
1803
+ "id": "assemble",
1804
+ "phase": "rig",
1805
+ "order": 2,
1806
+ "does": "Turn layers into parts, in draw order, limbs cut at their joints; propose the split as an image, one label per part",
1807
+ "produces": "config assemble, limbs; split.proposal_image, split.parts[]",
1808
+ "rests_on": [
1809
+ "assemble"
1810
+ ],
1811
+ "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",
1812
+ "checkpoint_proposed": true,
1813
+ "checkpoint": {
1814
+ "delegated": false,
1815
+ "by": "user",
1816
+ "at": "2026-11-09T00:00:24.000Z",
1817
+ "verbatim": "yes, show me the cut",
1818
+ "value": true
1819
+ },
1820
+ "status": "done",
1821
+ "status_history": [
1822
+ {
1823
+ "from_status": "pending",
1824
+ "status": "in-progress",
1825
+ "by": "agent",
1826
+ "at": "2026-11-09T00:00:34.000Z",
1827
+ "checkpoint_required": true,
1828
+ "signoff": null
1829
+ },
1830
+ {
1831
+ "from_status": "in-progress",
1832
+ "status": "at-checkpoint",
1833
+ "by": "agent",
1834
+ "at": "2026-11-09T00:00:34.000Z",
1835
+ "checkpoint_required": true,
1836
+ "signoff": null
1837
+ },
1838
+ {
1839
+ "from_status": "at-checkpoint",
1840
+ "status": "done",
1841
+ "by": "agent",
1842
+ "at": "2026-11-09T00:00:34.000Z",
1843
+ "checkpoint_required": true,
1844
+ "signoff": {
1845
+ "stage": "parts",
1846
+ "checkpoint": "assemble",
1847
+ "at": "2026-11-09T00:00:34.000Z"
1848
+ }
1849
+ }
1850
+ ]
1851
+ },
1852
+ {
1853
+ "id": "bones",
1854
+ "phase": "rig",
1855
+ "order": 3,
1856
+ "does": "Place the bones; chains on the scarf, both coat tails and the hair tail; a hinge for the lantern under hand_r",
1857
+ "produces": "config bones",
1858
+ "rests_on": [
1859
+ "bones"
1860
+ ],
1861
+ "bar": "Exactly the four chains the sentence names, plus the lantern hinge from the v1 feedback; no other chain",
1862
+ "checkpoint_proposed": false,
1863
+ "checkpoint": {
1864
+ "delegated": false,
1865
+ "by": "user",
1866
+ "at": "2026-11-09T00:00:25.000Z",
1867
+ "verbatim": "no",
1868
+ "value": false
1869
+ },
1870
+ "status": "pending",
1871
+ "status_history": [
1872
+ {
1873
+ "from_status": "pending",
1874
+ "status": "in-progress",
1875
+ "by": "agent",
1876
+ "at": "2026-11-09T00:00:49.000Z",
1877
+ "checkpoint_required": false,
1878
+ "signoff": null
1879
+ },
1880
+ {
1881
+ "from_status": "in-progress",
1882
+ "status": "at-checkpoint",
1883
+ "by": "agent",
1884
+ "at": "2026-11-09T00:00:49.000Z",
1885
+ "checkpoint_required": false,
1886
+ "signoff": null
1887
+ },
1888
+ {
1889
+ "from_status": "at-checkpoint",
1890
+ "status": "done",
1891
+ "by": "agent",
1892
+ "at": "2026-11-09T00:00:49.000Z",
1893
+ "checkpoint_required": false,
1894
+ "signoff": null
1895
+ }
1896
+ ]
1897
+ },
1898
+ {
1899
+ "id": "meshes",
1900
+ "phase": "rig",
1901
+ "order": 4,
1902
+ "does": "Torso as a weighted mesh; head and lantern as rigid regions; the rest proposed",
1903
+ "produces": "config meshes, regions",
1904
+ "rests_on": [
1905
+ "meshes",
1906
+ "assemble"
1907
+ ],
1908
+ "bar": "torso is a mesh; head and lantern are regions; 0 changed pixels inside the face box outside the eyelid masks, every frame",
1909
+ "checkpoint_proposed": false,
1910
+ "checkpoint": {
1911
+ "delegated": false,
1912
+ "by": "user",
1913
+ "at": "2026-11-09T00:00:26.000Z",
1914
+ "verbatim": "no",
1915
+ "value": false
1916
+ },
1917
+ "status": "pending",
1918
+ "status_history": [
1919
+ {
1920
+ "from_status": "pending",
1921
+ "status": "in-progress",
1922
+ "by": "agent",
1923
+ "at": "2026-11-09T00:00:49.000Z",
1924
+ "checkpoint_required": false,
1925
+ "signoff": null
1926
+ },
1927
+ {
1928
+ "from_status": "in-progress",
1929
+ "status": "at-checkpoint",
1930
+ "by": "agent",
1931
+ "at": "2026-11-09T00:00:49.000Z",
1932
+ "checkpoint_required": false,
1933
+ "signoff": null
1934
+ },
1935
+ {
1936
+ "from_status": "at-checkpoint",
1937
+ "status": "done",
1938
+ "by": "agent",
1939
+ "at": "2026-11-09T00:00:49.000Z",
1940
+ "checkpoint_required": false,
1941
+ "signoff": null
1942
+ }
1943
+ ]
1944
+ },
1945
+ {
1946
+ "id": "constraints",
1947
+ "phase": "rig",
1948
+ "order": 5,
1949
+ "does": "Wind physics on scarf, coat tails and hair tail; a stop on the lantern hinge; nothing else on physics",
1950
+ "produces": "config constraints, stops",
1951
+ "rests_on": [
1952
+ "constraints",
1953
+ "bones"
1954
+ ],
1955
+ "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",
1956
+ "checkpoint_proposed": true,
1957
+ "checkpoint": {
1958
+ "delegated": true,
1959
+ "by": "user",
1960
+ "at": "2026-11-09T00:00:27.000Z",
1961
+ "verbatim": "you decide",
1962
+ "source": "plan review, chat",
1963
+ "agent_decision": {
1964
+ "value": true,
1965
+ "by": "agent",
1966
+ "at": "2026-11-09T00:00:28.000Z",
1967
+ "reasoning": "Physics extents are the item most often sent back; a motion sketch before the build is cheaper than a rebuild after."
1968
+ }
1969
+ },
1970
+ "status": "pending",
1971
+ "status_history": [
1972
+ {
1973
+ "from_status": "pending",
1974
+ "status": "in-progress",
1975
+ "by": "agent",
1976
+ "at": "2026-11-09T00:00:49.000Z",
1977
+ "checkpoint_required": true,
1978
+ "signoff": null
1979
+ },
1980
+ {
1981
+ "from_status": "in-progress",
1982
+ "status": "at-checkpoint",
1983
+ "by": "agent",
1984
+ "at": "2026-11-09T00:00:49.000Z",
1985
+ "checkpoint_required": true,
1986
+ "signoff": null
1987
+ },
1988
+ {
1989
+ "from_status": "at-checkpoint",
1990
+ "status": "done",
1991
+ "by": "agent",
1992
+ "at": "2026-11-09T00:00:49.000Z",
1993
+ "checkpoint_required": true,
1994
+ "signoff": {
1995
+ "stage": "rigging",
1996
+ "checkpoint": "constraints",
1997
+ "at": "2026-11-09T00:00:49.000Z"
1998
+ }
1999
+ }
2000
+ ]
2001
+ },
2002
+ {
2003
+ "id": "motion",
2004
+ "phase": "rig",
2005
+ "order": 6,
2006
+ "does": "Breath on the torso, blink on the eyelids, flicker on the lantern; render the still-frame check",
2007
+ "produces": "config motion; the still-frame check for rig-review",
2008
+ "rests_on": [
2009
+ "motion",
2010
+ "rig_type"
2011
+ ],
2012
+ "bar": "Every loop closes; breath, blink and flicker are each present as a track; the still-frame check renders at a fixed camera",
2013
+ "checkpoint_proposed": false,
2014
+ "checkpoint": {
2015
+ "delegated": false,
2016
+ "by": "user",
2017
+ "at": "2026-11-09T00:00:29.000Z",
2018
+ "verbatim": "no",
2019
+ "value": false
2020
+ },
2021
+ "status": "pending",
2022
+ "status_history": [
2023
+ {
2024
+ "from_status": "pending",
2025
+ "status": "in-progress",
2026
+ "by": "agent",
2027
+ "at": "2026-11-09T00:00:49.000Z",
2028
+ "checkpoint_required": false,
2029
+ "signoff": null
2030
+ },
2031
+ {
2032
+ "from_status": "in-progress",
2033
+ "status": "at-checkpoint",
2034
+ "by": "agent",
2035
+ "at": "2026-11-09T00:00:49.000Z",
2036
+ "checkpoint_required": false,
2037
+ "signoff": null
2038
+ },
2039
+ {
2040
+ "from_status": "at-checkpoint",
2041
+ "status": "done",
2042
+ "by": "agent",
2043
+ "at": "2026-11-09T00:00:49.000Z",
2044
+ "checkpoint_required": false,
2045
+ "signoff": null
2046
+ }
2047
+ ]
2048
+ },
2049
+ {
2050
+ "id": "camera",
2051
+ "phase": "post",
2052
+ "order": 7,
2053
+ "does": "A slow push-in over the loop; no depth built",
2054
+ "produces": "the take's camera track",
2055
+ "rests_on": [
2056
+ "camera_depth"
2057
+ ],
2058
+ "bar": "The push-in spans the full loop; no layer parallax; no depth sheet is built",
2059
+ "checkpoint_proposed": false,
2060
+ "checkpoint": {
2061
+ "delegated": false,
2062
+ "by": "user",
2063
+ "at": "2026-11-09T00:00:57.000Z",
2064
+ "verbatim": "no",
2065
+ "value": false
2066
+ },
2067
+ "status": "pending",
2068
+ "status_history": [
2069
+ {
2070
+ "from_status": "pending",
2071
+ "status": "in-progress",
2072
+ "by": "agent",
2073
+ "at": "2026-11-09T00:01:04.000Z",
2074
+ "checkpoint_required": false,
2075
+ "signoff": null
2076
+ },
2077
+ {
2078
+ "from_status": "in-progress",
2079
+ "status": "at-checkpoint",
2080
+ "by": "agent",
2081
+ "at": "2026-11-09T00:01:04.000Z",
2082
+ "checkpoint_required": false,
2083
+ "signoff": null
2084
+ },
2085
+ {
2086
+ "from_status": "at-checkpoint",
2087
+ "status": "done",
2088
+ "by": "agent",
2089
+ "at": "2026-11-09T00:01:04.000Z",
2090
+ "checkpoint_required": false,
2091
+ "signoff": null
2092
+ }
2093
+ ]
2094
+ },
2095
+ {
2096
+ "id": "timing",
2097
+ "phase": "post",
2098
+ "order": 8,
2099
+ "does": "Eight-second loop; one beam sweep late in the loop",
2100
+ "produces": "the take's length and beat sheet",
2101
+ "rests_on": [
2102
+ "post_timing",
2103
+ "motion"
2104
+ ],
2105
+ "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",
2106
+ "checkpoint_proposed": false,
2107
+ "checkpoint": {
2108
+ "delegated": false,
2109
+ "by": "user",
2110
+ "at": "2026-11-09T00:00:58.000Z",
2111
+ "verbatim": "no",
2112
+ "value": false
2113
+ },
2114
+ "status": "pending",
2115
+ "status_history": [
2116
+ {
2117
+ "from_status": "pending",
2118
+ "status": "in-progress",
2119
+ "by": "agent",
2120
+ "at": "2026-11-09T00:01:04.000Z",
2121
+ "checkpoint_required": false,
2122
+ "signoff": null
2123
+ },
2124
+ {
2125
+ "from_status": "in-progress",
2126
+ "status": "at-checkpoint",
2127
+ "by": "agent",
2128
+ "at": "2026-11-09T00:01:04.000Z",
2129
+ "checkpoint_required": false,
2130
+ "signoff": null
2131
+ },
2132
+ {
2133
+ "from_status": "at-checkpoint",
2134
+ "status": "done",
2135
+ "by": "agent",
2136
+ "at": "2026-11-09T00:01:04.000Z",
2137
+ "checkpoint_required": false,
2138
+ "signoff": null
2139
+ }
2140
+ ]
2141
+ },
2142
+ {
2143
+ "id": "composition",
2144
+ "phase": "post",
2145
+ "order": 9,
2146
+ "does": "Frame with the whole lighthouse in shot; keep the painting's exposure",
2147
+ "produces": "the take's framing",
2148
+ "rests_on": [
2149
+ "post_composition"
2150
+ ],
2151
+ "bar": "The lighthouse is fully in frame on every frame; mean luminance within 2% of the painting's",
2152
+ "checkpoint_proposed": false,
2153
+ "checkpoint": {
2154
+ "delegated": false,
2155
+ "by": "user",
2156
+ "at": "2026-11-09T00:00:59.000Z",
2157
+ "verbatim": "no",
2158
+ "value": false
2159
+ },
2160
+ "status": "pending",
2161
+ "status_history": [
2162
+ {
2163
+ "from_status": "pending",
2164
+ "status": "in-progress",
2165
+ "by": "agent",
2166
+ "at": "2026-11-09T00:01:04.000Z",
2167
+ "checkpoint_required": false,
2168
+ "signoff": null
2169
+ },
2170
+ {
2171
+ "from_status": "in-progress",
2172
+ "status": "at-checkpoint",
2173
+ "by": "agent",
2174
+ "at": "2026-11-09T00:01:04.000Z",
2175
+ "checkpoint_required": false,
2176
+ "signoff": null
2177
+ },
2178
+ {
2179
+ "from_status": "at-checkpoint",
2180
+ "status": "done",
2181
+ "by": "agent",
2182
+ "at": "2026-11-09T00:01:04.000Z",
2183
+ "checkpoint_required": false,
2184
+ "signoff": null
2185
+ }
2186
+ ]
2187
+ }
2188
+ ],
2189
+ "rigging_drafted_at": "2026-11-09T00:00:43.000Z"
2190
+ },
2191
+ "split": {
2192
+ "label_values": [
2193
+ "physics",
2194
+ "wind",
2195
+ "jiggle",
2196
+ "rigid",
2197
+ "still"
2198
+ ],
2199
+ "proposal_image": "evidence/split/proposal.png",
2200
+ "proposed_by": "agent",
2201
+ "proposed_at": "2026-11-09T00:00:33.000Z",
2202
+ "parts": [
2203
+ {
2204
+ "name": "background",
2205
+ "label": "still",
2206
+ "note": ""
2207
+ },
2208
+ {
2209
+ "name": "lighthouse",
2210
+ "label": "still",
2211
+ "note": ""
2212
+ },
2213
+ {
2214
+ "name": "coat_tail_l",
2215
+ "label": "wind",
2216
+ "note": ""
2217
+ },
2218
+ {
2219
+ "name": "coat_tail_r",
2220
+ "label": "wind",
2221
+ "note": ""
2222
+ },
2223
+ {
2224
+ "name": "legs",
2225
+ "label": "still",
2226
+ "note": ""
2227
+ },
2228
+ {
2229
+ "name": "torso",
2230
+ "label": "still",
2231
+ "note": "moves on the breath track, not on physics"
2232
+ },
2233
+ {
2234
+ "name": "upperarm_l",
2235
+ "label": "still",
2236
+ "note": ""
2237
+ },
2238
+ {
2239
+ "name": "forearm_l",
2240
+ "label": "still",
2241
+ "note": ""
2242
+ },
2243
+ {
2244
+ "name": "hand_l",
2245
+ "label": "still",
2246
+ "note": ""
2247
+ },
2248
+ {
2249
+ "name": "scarf",
2250
+ "label": "wind",
2251
+ "note": "largest amplitude"
2252
+ },
2253
+ {
2254
+ "name": "head",
2255
+ "label": "rigid",
2256
+ "note": "face untouched"
2257
+ },
2258
+ {
2259
+ "name": "hair_tail",
2260
+ "label": "wind",
2261
+ "note": "barely"
2262
+ },
2263
+ {
2264
+ "name": "hair_front",
2265
+ "label": "still",
2266
+ "note": ""
2267
+ },
2268
+ {
2269
+ "name": "eyelids_l",
2270
+ "label": "still",
2271
+ "note": "blink track"
2272
+ },
2273
+ {
2274
+ "name": "eyelids_r",
2275
+ "label": "still",
2276
+ "note": "blink track"
2277
+ },
2278
+ {
2279
+ "name": "upperarm_r",
2280
+ "label": "still",
2281
+ "note": ""
2282
+ },
2283
+ {
2284
+ "name": "forearm_r",
2285
+ "label": "still",
2286
+ "note": ""
2287
+ },
2288
+ {
2289
+ "name": "hand_r",
2290
+ "label": "still",
2291
+ "note": ""
2292
+ },
2293
+ {
2294
+ "name": "lantern",
2295
+ "label": "rigid",
2296
+ "note": "flicker track; hangs from hand_r since v2"
2297
+ }
2298
+ ]
2299
+ },
2300
+ "inputs": [
2301
+ {
2302
+ "path": "inputs/preparation-source.svg",
2303
+ "sha256": "3b2012bb72f7c55b64d7fec307bba26ff53f9bf8474ec7409650d218c168942e",
2304
+ "bytes": 112,
2305
+ "origin": "synthetic source painting",
2306
+ "at": "2026-11-09T00:00:00.000Z"
2307
+ },
2308
+ {
2309
+ "path": "inputs/painting.png",
2310
+ "sha256": "02e6ea41dfec89a7eced0f66b98e0fea048846c6f4174fa1cc7631fe360e614f",
2311
+ "bytes": 421,
2312
+ "origin": "synthetic painting generated by generateExampleParts",
2313
+ "at": "2026-11-09T00:00:00.000Z"
2314
+ },
2315
+ {
2316
+ "path": "evidence/scene-background.png",
2317
+ "sha256": "c180182b6666fb4d90d4f91e210bda103a4081f1ad7c45006db392fa6c4eaf36",
2318
+ "bytes": 300,
2319
+ "origin": "synthetic producer background plate",
2320
+ "at": "2026-11-09T00:01:00.000Z"
2321
+ }
2322
+ ],
2323
+ "derived": [
2324
+ {
2325
+ "kind": "prepared-input",
2326
+ "source": {
2327
+ "path": "inputs/preparation-source.svg",
2328
+ "sha256": "3b2012bb72f7c55b64d7fec307bba26ff53f9bf8474ec7409650d218c168942e"
2329
+ },
2330
+ "path": "derived/prepared.svg",
2331
+ "sha256": "3c5bf74326c06a17795179b27a894f20eb64246b5ef6e028761061483a51d654",
2332
+ "operation": "scale the synthetic circle to 32 by 32 and composite on white; performed by an external tool"
2333
+ },
2334
+ {
2335
+ "path": "derived/layers/",
2336
+ "what": "See-through layers, full pass and head pass",
2337
+ "command": "parts layers --config derived/v1/config.json",
2338
+ "inputs": [
2339
+ {
2340
+ "path": "inputs/painting.png",
2341
+ "sha256": "02e6ea41dfec89a7eced0f66b98e0fea048846c6f4174fa1cc7631fe360e614f"
2342
+ }
2343
+ ],
2344
+ "bytes": 61202944
2345
+ },
2346
+ {
2347
+ "path": "derived/v1/config.json",
2348
+ "what": "the rig config v1 was built from",
2349
+ "command": "written by the agent from the guides; sections cited in versions[0].provenance",
2350
+ "inputs": [],
2351
+ "bytes": 18211
2352
+ },
2353
+ {
2354
+ "path": "derived/v2/config.json",
2355
+ "what": "the rig config v2 was built from",
2356
+ "command": "written by the agent from the guides; sections cited in versions[1].provenance",
2357
+ "inputs": [],
2358
+ "bytes": 18740
2359
+ }
2360
+ ],
2361
+ "versions": [
2362
+ {
2363
+ "n": 1,
2364
+ "kind": "rig",
2365
+ "review_origin": null,
2366
+ "rig_version": null,
2367
+ "at": "2026-11-09T00:00:46.000Z",
2368
+ "built_by": "agent",
2369
+ "built_with": {
2370
+ "@rig-c/parts": "2.37.0",
2371
+ "@rig-c/core": "3.7.0"
2372
+ },
2373
+ "answers_feedback": [],
2374
+ "changed": "first rig version",
2375
+ "review_package": {
2376
+ "config": {
2377
+ "path": "evidence/v1/review-config.json",
2378
+ "sha256": "9989ec352840dae4e539f454bbf80fcd7d742c6c6b5208c4c63f82d09e8ccd2c"
2379
+ },
2380
+ "from": "outputs/v1/out",
2381
+ "files": [
2382
+ {
2383
+ "path": "config.json",
2384
+ "sha256": "9989ec352840dae4e539f454bbf80fcd7d742c6c6b5208c4c63f82d09e8ccd2c"
2385
+ },
2386
+ {
2387
+ "path": "interview-requirements.json",
2388
+ "sha256": "214ddb880e94a575cd4afb35f99ddfa3d90198b88095550f20e0b980d2fd0cff"
2389
+ },
2390
+ {
2391
+ "path": "out/check/build/run.json",
2392
+ "sha256": "4ddab6b9418752741c7f457c54e71317aec463a4950d9a22a53ca8c640d61184"
2393
+ },
2394
+ {
2395
+ "path": "out/check/build/skeleton.atlas",
2396
+ "sha256": "68f9cb5eea7a194d59fb14d5c2363894b2eca78c26bf9aee67a760955a6125f3"
2397
+ },
2398
+ {
2399
+ "path": "out/check/build/skeleton.json",
2400
+ "sha256": "ddf366446f30bdda13dea626976e719b8ebc6018322c38c64cfdd6e16cc4a47c"
2401
+ },
2402
+ {
2403
+ "path": "out/check/build/skeleton.model.json",
2404
+ "sha256": "15146157bfafc565b4eb0da7b66195283504692dc06d512dc404fd8f5849aa7e"
2405
+ },
2406
+ {
2407
+ "path": "out/check/build/skeleton.png",
2408
+ "sha256": "1b1836dc1a2700302723ebfebc8fd2be918ba69dff41029788a90595c426c6b2"
2409
+ },
2410
+ {
2411
+ "path": "out/parts.json",
2412
+ "sha256": "fb0b74d03b7e71d1c2bb2a6fe0ca1ef7415239863ea8eb95fc271b6eee38a0b7"
2413
+ },
2414
+ {
2415
+ "path": "out/parts/background.png",
2416
+ "sha256": "c180182b6666fb4d90d4f91e210bda103a4081f1ad7c45006db392fa6c4eaf36"
2417
+ },
2418
+ {
2419
+ "path": "out/parts/eye_l.png",
2420
+ "sha256": "c080dceac3b4d8fbc824ebb0ebffe61047f10af4e2cdd8d51b32bf779691617e"
2421
+ },
2422
+ {
2423
+ "path": "out/parts/eye_r.png",
2424
+ "sha256": "c080dceac3b4d8fbc824ebb0ebffe61047f10af4e2cdd8d51b32bf779691617e"
2425
+ },
2426
+ {
2427
+ "path": "out/parts/face.png",
2428
+ "sha256": "9626a5008eb90b22ab7623cb79048ed521c6aa651254287bbc9df8606b9f0bf7"
2429
+ },
2430
+ {
2431
+ "path": "out/parts/lantern.png",
2432
+ "sha256": "79ff42136a509e98032352ef9f8c0857a5d7f16667eb629bc048b9b8ef24d96a"
2433
+ },
2434
+ {
2435
+ "path": "out/parts/torso.png",
2436
+ "sha256": "adf6cd5d92568c5f51028df2874b69f4df5ff1d0e3a94484784c867e543cd912"
2437
+ },
2438
+ {
2439
+ "path": "out/rig/images/background.png",
2440
+ "sha256": "24eb570320b9e27ce6449b54e82abd811043b9a63f48387f13cbba2dbed5c5f8"
2441
+ },
2442
+ {
2443
+ "path": "out/rig/images/eye_l.png",
2444
+ "sha256": "97da226ecba85a1af18173df4eb28d72b0828cda8c171f8d4a2995a3da9cc733"
2445
+ },
2446
+ {
2447
+ "path": "out/rig/images/eye_r.png",
2448
+ "sha256": "97da226ecba85a1af18173df4eb28d72b0828cda8c171f8d4a2995a3da9cc733"
2449
+ },
2450
+ {
2451
+ "path": "out/rig/images/face.png",
2452
+ "sha256": "e2bd0d0736b3ecda20d6a08840468a2d46738c226631fd73e280dab3719c9e4c"
2453
+ },
2454
+ {
2455
+ "path": "out/rig/images/lantern.png",
2456
+ "sha256": "733d1cc36c0d1a01f1d330085316f8bcccb8d4331e2f20b9a3dfe2a3407a7041"
2457
+ },
2458
+ {
2459
+ "path": "out/rig/images/torso.png",
2460
+ "sha256": "356a2a89f530ef7ab5719eefa2cfbff37f8f39a274f41689f13a9c7a2d76adf5"
2461
+ },
2462
+ {
2463
+ "path": "out/rig/mesh_report.json",
2464
+ "sha256": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570"
2465
+ },
2466
+ {
2467
+ "path": "out/rig/motion.json",
2468
+ "sha256": "6c6c105be9c818556061aabc366357460712a7f7d0a5e3f8b25b0af6c533cceb"
2469
+ },
2470
+ {
2471
+ "path": "out/rig/rig.json",
2472
+ "sha256": "3e9666933af397939671c9d07e117cf3ab192d0a1d601109225986bc4e15f894"
2473
+ },
2474
+ {
2475
+ "path": "out/rig/run.json",
2476
+ "sha256": "0be4f6239211bffee323478ef8e673478b17b9b3c8f3e7a9e287816adcb783ee"
2477
+ }
2478
+ ],
2479
+ "open": "rig-review open 'derived/review/v1/out'"
2480
+ },
2481
+ "outputs": [
2482
+ {
2483
+ "path": "outputs/v1/skeleton.json",
2484
+ "sha256": "078ac07a231f8f2749edf4906c1517dc8df04c1cc59866dfb7507f2aba4ce8f3",
2485
+ "bytes": 212998
2486
+ },
2487
+ {
2488
+ "path": "outputs/v1/atlas.png",
2489
+ "sha256": "347f9f67ca9ba2cb4f09e82a73a7d1d9a8d15fc9b073bd3863f89ecf9e9194be",
2490
+ "bytes": 3902211
2491
+ }
2492
+ ],
2493
+ "evidence": [
2494
+ {
2495
+ "kind": "still",
2496
+ "path": "evidence/v1/still-frame.png",
2497
+ "sha256": "c15f4c3fefb52f482778c20836a4dab5dce16947e089db0f0b595d9f5eb5b4e3",
2498
+ "camera": "fixed",
2499
+ "frame": 2,
2500
+ "what": "the rig at the fixed camera, posed 2 s into the loop, used at rig-review"
2501
+ }
2502
+ ],
2503
+ "provenance": {
2504
+ "config": {
2505
+ "path": "evidence/v1/interview-config.json",
2506
+ "sha256": "9989ec352840dae4e539f454bbf80fcd7d742c6c6b5208c4c63f82d09e8ccd2c"
2507
+ },
2508
+ "sections": {
2509
+ "seethrough": [
2510
+ {
2511
+ "entry": "*",
2512
+ "guide": "seethrough",
2513
+ "delegated": true,
2514
+ "asks": [
2515
+ "layers",
2516
+ "resolution",
2517
+ "head_crop",
2518
+ "seed"
2519
+ ]
2520
+ }
2521
+ ],
2522
+ "assemble": [
2523
+ {
2524
+ "entry": "plan[lantern]",
2525
+ "guide": "assemble",
2526
+ "quote": "The lantern is its own part.",
2527
+ "asks": [
2528
+ "emphasis"
2529
+ ]
2530
+ },
2531
+ {
2532
+ "entry": "plan[head] untouched face",
2533
+ "guide": "assemble",
2534
+ "quote": "Keep her face exactly as painted.",
2535
+ "asks": [
2536
+ "emphasis"
2537
+ ]
2538
+ },
2539
+ {
2540
+ "entry": "plan[*] order and the remaining parts",
2541
+ "guide": "assemble",
2542
+ "delegated": true,
2543
+ "asks": [
2544
+ "draw_order",
2545
+ "authored",
2546
+ "occluders",
2547
+ "outfits"
2548
+ ]
2549
+ }
2550
+ ],
2551
+ "limbs": [
2552
+ {
2553
+ "entry": "arm_l, arm_r",
2554
+ "guide": "assemble",
2555
+ "quote": "Standard cut, at the joints.",
2556
+ "asks": [
2557
+ "cut"
2558
+ ]
2559
+ }
2560
+ ],
2561
+ "bones": [
2562
+ {
2563
+ "entry": "chain scarf",
2564
+ "guide": "bones",
2565
+ "quote": "A chain down the scarf",
2566
+ "asks": [
2567
+ "chains"
2568
+ ]
2569
+ },
2570
+ {
2571
+ "entry": "chain coat_tail_l, coat_tail_r",
2572
+ "guide": "bones",
2573
+ "quote": "one in each coat tail",
2574
+ "asks": [
2575
+ "chains"
2576
+ ]
2577
+ },
2578
+ {
2579
+ "entry": "chain hair_tail",
2580
+ "guide": "bones",
2581
+ "quote": "one in her hair tail",
2582
+ "asks": [
2583
+ "chains"
2584
+ ]
2585
+ }
2586
+ ],
2587
+ "meshes": [
2588
+ {
2589
+ "entry": "torso",
2590
+ "guide": "meshes",
2591
+ "quote": "The coat is one piece that bends with her breath.",
2592
+ "asks": [
2593
+ "bend"
2594
+ ]
2595
+ }
2596
+ ],
2597
+ "regions": [
2598
+ {
2599
+ "entry": "head, lantern",
2600
+ "guide": "meshes",
2601
+ "quote": "Face and lantern stay rigid.",
2602
+ "asks": [
2603
+ "rigid"
2604
+ ]
2605
+ },
2606
+ {
2607
+ "entry": "every other part",
2608
+ "guide": "assemble",
2609
+ "delegated": true,
2610
+ "asks": [
2611
+ "draw_order"
2612
+ ]
2613
+ }
2614
+ ],
2615
+ "constraints": [
2616
+ {
2617
+ "entry": "scarf_wind",
2618
+ "guide": "constraints",
2619
+ "quote": "the scarf a little more than the coat",
2620
+ "asks": [
2621
+ "effects",
2622
+ "strength"
2623
+ ]
2624
+ },
2625
+ {
2626
+ "entry": "coat_tail_l_wind, coat_tail_r_wind",
2627
+ "guide": "constraints",
2628
+ "quote": "The scarf and the coat tails move in the wind off the sea",
2629
+ "asks": [
2630
+ "effects"
2631
+ ]
2632
+ },
2633
+ {
2634
+ "entry": "hair_tail_wind",
2635
+ "guide": "constraints",
2636
+ "quote": "Her hair tail barely moves.",
2637
+ "asks": [
2638
+ "effects",
2639
+ "strength"
2640
+ ]
2641
+ }
2642
+ ],
2643
+ "motion": [
2644
+ {
2645
+ "entry": "breath",
2646
+ "guide": "motion",
2647
+ "quote": "Breath",
2648
+ "asks": [
2649
+ "tracks"
2650
+ ]
2651
+ },
2652
+ {
2653
+ "entry": "blink",
2654
+ "guide": "motion",
2655
+ "quote": "blink",
2656
+ "asks": [
2657
+ "blink"
2658
+ ]
2659
+ },
2660
+ {
2661
+ "entry": "flame_flicker",
2662
+ "guide": "motion",
2663
+ "quote": "The lantern flame flickers.",
2664
+ "asks": [
2665
+ "tracks"
2666
+ ]
2667
+ }
2668
+ ]
2669
+ }
2670
+ },
2671
+ "verdicts": [
2672
+ {
2673
+ "by": "user",
2674
+ "at": "2026-11-09T00:00:47.000Z",
2675
+ "review": "rig-review",
2676
+ "verdict": "bounced",
2677
+ "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.",
2678
+ "source": "chat",
2679
+ "on_items": [
2680
+ {
2681
+ "id": "bones",
2682
+ "answer_was": "not-asked"
2683
+ },
2684
+ {
2685
+ "id": "constraints",
2686
+ "answer_was": "user"
2687
+ }
2688
+ ]
2689
+ }
2690
+ ]
2691
+ },
2692
+ {
2693
+ "n": 2,
2694
+ "kind": "rig",
2695
+ "review_origin": null,
2696
+ "rig_version": null,
2697
+ "at": "2026-11-09T00:00:50.000Z",
2698
+ "built_by": "agent",
2699
+ "built_with": {
2700
+ "@rig-c/parts": "2.37.0",
2701
+ "@rig-c/core": "3.7.0"
2702
+ },
2703
+ "answers_feedback": [
2704
+ {
2705
+ "version": 1,
2706
+ "verdict": 0
2707
+ }
2708
+ ],
2709
+ "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'",
2710
+ "review_package": {
2711
+ "config": {
2712
+ "path": "evidence/v2/review-config.json",
2713
+ "sha256": "9989ec352840dae4e539f454bbf80fcd7d742c6c6b5208c4c63f82d09e8ccd2c"
2714
+ },
2715
+ "from": "outputs/v2/out",
2716
+ "files": [
2717
+ {
2718
+ "path": "config.json",
2719
+ "sha256": "9989ec352840dae4e539f454bbf80fcd7d742c6c6b5208c4c63f82d09e8ccd2c"
2720
+ },
2721
+ {
2722
+ "path": "interview-requirements.json",
2723
+ "sha256": "214ddb880e94a575cd4afb35f99ddfa3d90198b88095550f20e0b980d2fd0cff"
2724
+ },
2725
+ {
2726
+ "path": "out/check/build/run.json",
2727
+ "sha256": "4ddab6b9418752741c7f457c54e71317aec463a4950d9a22a53ca8c640d61184"
2728
+ },
2729
+ {
2730
+ "path": "out/check/build/skeleton.atlas",
2731
+ "sha256": "68f9cb5eea7a194d59fb14d5c2363894b2eca78c26bf9aee67a760955a6125f3"
2732
+ },
2733
+ {
2734
+ "path": "out/check/build/skeleton.json",
2735
+ "sha256": "ddf366446f30bdda13dea626976e719b8ebc6018322c38c64cfdd6e16cc4a47c"
2736
+ },
2737
+ {
2738
+ "path": "out/check/build/skeleton.model.json",
2739
+ "sha256": "15146157bfafc565b4eb0da7b66195283504692dc06d512dc404fd8f5849aa7e"
2740
+ },
2741
+ {
2742
+ "path": "out/check/build/skeleton.png",
2743
+ "sha256": "1b1836dc1a2700302723ebfebc8fd2be918ba69dff41029788a90595c426c6b2"
2744
+ },
2745
+ {
2746
+ "path": "out/parts.json",
2747
+ "sha256": "fb0b74d03b7e71d1c2bb2a6fe0ca1ef7415239863ea8eb95fc271b6eee38a0b7"
2748
+ },
2749
+ {
2750
+ "path": "out/parts/background.png",
2751
+ "sha256": "c180182b6666fb4d90d4f91e210bda103a4081f1ad7c45006db392fa6c4eaf36"
2752
+ },
2753
+ {
2754
+ "path": "out/parts/eye_l.png",
2755
+ "sha256": "c080dceac3b4d8fbc824ebb0ebffe61047f10af4e2cdd8d51b32bf779691617e"
2756
+ },
2757
+ {
2758
+ "path": "out/parts/eye_r.png",
2759
+ "sha256": "c080dceac3b4d8fbc824ebb0ebffe61047f10af4e2cdd8d51b32bf779691617e"
2760
+ },
2761
+ {
2762
+ "path": "out/parts/face.png",
2763
+ "sha256": "9626a5008eb90b22ab7623cb79048ed521c6aa651254287bbc9df8606b9f0bf7"
2764
+ },
2765
+ {
2766
+ "path": "out/parts/lantern.png",
2767
+ "sha256": "79ff42136a509e98032352ef9f8c0857a5d7f16667eb629bc048b9b8ef24d96a"
2768
+ },
2769
+ {
2770
+ "path": "out/parts/torso.png",
2771
+ "sha256": "adf6cd5d92568c5f51028df2874b69f4df5ff1d0e3a94484784c867e543cd912"
2772
+ },
2773
+ {
2774
+ "path": "out/rig/images/background.png",
2775
+ "sha256": "24eb570320b9e27ce6449b54e82abd811043b9a63f48387f13cbba2dbed5c5f8"
2776
+ },
2777
+ {
2778
+ "path": "out/rig/images/eye_l.png",
2779
+ "sha256": "97da226ecba85a1af18173df4eb28d72b0828cda8c171f8d4a2995a3da9cc733"
2780
+ },
2781
+ {
2782
+ "path": "out/rig/images/eye_r.png",
2783
+ "sha256": "97da226ecba85a1af18173df4eb28d72b0828cda8c171f8d4a2995a3da9cc733"
2784
+ },
2785
+ {
2786
+ "path": "out/rig/images/face.png",
2787
+ "sha256": "e2bd0d0736b3ecda20d6a08840468a2d46738c226631fd73e280dab3719c9e4c"
2788
+ },
2789
+ {
2790
+ "path": "out/rig/images/lantern.png",
2791
+ "sha256": "733d1cc36c0d1a01f1d330085316f8bcccb8d4331e2f20b9a3dfe2a3407a7041"
2792
+ },
2793
+ {
2794
+ "path": "out/rig/images/torso.png",
2795
+ "sha256": "356a2a89f530ef7ab5719eefa2cfbff37f8f39a274f41689f13a9c7a2d76adf5"
2796
+ },
2797
+ {
2798
+ "path": "out/rig/mesh_report.json",
2799
+ "sha256": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570"
2800
+ },
2801
+ {
2802
+ "path": "out/rig/motion.json",
2803
+ "sha256": "6c6c105be9c818556061aabc366357460712a7f7d0a5e3f8b25b0af6c533cceb"
2804
+ },
2805
+ {
2806
+ "path": "out/rig/rig.json",
2807
+ "sha256": "3e9666933af397939671c9d07e117cf3ab192d0a1d601109225986bc4e15f894"
2808
+ },
2809
+ {
2810
+ "path": "out/rig/run.json",
2811
+ "sha256": "0be4f6239211bffee323478ef8e673478b17b9b3c8f3e7a9e287816adcb783ee"
2812
+ }
2813
+ ],
2814
+ "open": "rig-review open 'derived/review/v2/out'"
2815
+ },
2816
+ "outputs": [
2817
+ {
2818
+ "path": "outputs/v2/skeleton.json",
2819
+ "sha256": "bccbb57626e8c212cab40596abc9584148bcb8d4dc2215a1de92e4c2cc3c4dba",
2820
+ "bytes": 214106
2821
+ },
2822
+ {
2823
+ "path": "outputs/v2/atlas.png",
2824
+ "sha256": "0f036ba3966425678ac8d4fd7d9c115effcaeb79159a75c05a07b1a0eb3a9666",
2825
+ "bytes": 3902211
2826
+ }
2827
+ ],
2828
+ "evidence": [
2829
+ {
2830
+ "kind": "still",
2831
+ "path": "evidence/v2/still-frame.png",
2832
+ "sha256": "dc859658e5c8b4cbd66d10d85a5780649e9679be4c4717e3878487925913a55f",
2833
+ "camera": "fixed",
2834
+ "frame": 2,
2835
+ "what": "the rig at the fixed camera, posed 2 s into the loop, used at rig-review"
2836
+ }
2837
+ ],
2838
+ "provenance": {
2839
+ "config": {
2840
+ "path": "evidence/v2/interview-config.json",
2841
+ "sha256": "9989ec352840dae4e539f454bbf80fcd7d742c6c6b5208c4c63f82d09e8ccd2c"
2842
+ },
2843
+ "sections": {
2844
+ "seethrough": [
2845
+ {
2846
+ "entry": "*",
2847
+ "guide": "seethrough",
2848
+ "delegated": true,
2849
+ "asks": [
2850
+ "layers",
2851
+ "resolution",
2852
+ "head_crop",
2853
+ "seed"
2854
+ ]
2855
+ }
2856
+ ],
2857
+ "assemble": [
2858
+ {
2859
+ "entry": "plan[lantern]",
2860
+ "guide": "assemble",
2861
+ "quote": "The lantern is its own part.",
2862
+ "asks": [
2863
+ "emphasis"
2864
+ ]
2865
+ },
2866
+ {
2867
+ "entry": "plan[head] untouched face",
2868
+ "guide": "assemble",
2869
+ "quote": "Keep her face exactly as painted.",
2870
+ "asks": [
2871
+ "emphasis"
2872
+ ]
2873
+ },
2874
+ {
2875
+ "entry": "plan[*] order and the remaining parts",
2876
+ "guide": "assemble",
2877
+ "delegated": true,
2878
+ "asks": [
2879
+ "draw_order",
2880
+ "authored",
2881
+ "occluders",
2882
+ "outfits"
2883
+ ]
2884
+ }
2885
+ ],
2886
+ "limbs": [
2887
+ {
2888
+ "entry": "arm_l, arm_r",
2889
+ "guide": "assemble",
2890
+ "quote": "Standard cut, at the joints.",
2891
+ "asks": [
2892
+ "cut"
2893
+ ]
2894
+ }
2895
+ ],
2896
+ "bones": [
2897
+ {
2898
+ "entry": "chain scarf",
2899
+ "guide": "bones",
2900
+ "quote": "A chain down the scarf",
2901
+ "asks": [
2902
+ "chains"
2903
+ ]
2904
+ },
2905
+ {
2906
+ "entry": "chain coat_tail_l, coat_tail_r",
2907
+ "guide": "bones",
2908
+ "quote": "one in each coat tail",
2909
+ "asks": [
2910
+ "chains"
2911
+ ]
2912
+ },
2913
+ {
2914
+ "entry": "chain hair_tail",
2915
+ "guide": "bones",
2916
+ "quote": "one in her hair tail",
2917
+ "asks": [
2918
+ "chains"
2919
+ ]
2920
+ },
2921
+ {
2922
+ "entry": "lantern_hinge",
2923
+ "guide": "bones",
2924
+ "quote": "It should hang from her hand and swing on its own.",
2925
+ "asks": [
2926
+ "chains"
2927
+ ]
2928
+ }
2929
+ ],
2930
+ "meshes": [
2931
+ {
2932
+ "entry": "torso",
2933
+ "guide": "meshes",
2934
+ "quote": "The coat is one piece that bends with her breath.",
2935
+ "asks": [
2936
+ "bend"
2937
+ ]
2938
+ }
2939
+ ],
2940
+ "regions": [
2941
+ {
2942
+ "entry": "head, lantern",
2943
+ "guide": "meshes",
2944
+ "quote": "Face and lantern stay rigid.",
2945
+ "asks": [
2946
+ "rigid"
2947
+ ]
2948
+ },
2949
+ {
2950
+ "entry": "every other part",
2951
+ "guide": "assemble",
2952
+ "delegated": true,
2953
+ "asks": [
2954
+ "draw_order"
2955
+ ]
2956
+ }
2957
+ ],
2958
+ "constraints": [
2959
+ {
2960
+ "entry": "scarf_wind",
2961
+ "guide": "constraints",
2962
+ "quote": "the scarf a little more than the coat",
2963
+ "asks": [
2964
+ "effects",
2965
+ "strength"
2966
+ ]
2967
+ },
2968
+ {
2969
+ "entry": "coat_tail_l_wind, coat_tail_r_wind",
2970
+ "guide": "constraints",
2971
+ "quote": "The scarf and the coat tails move in the wind off the sea",
2972
+ "asks": [
2973
+ "effects"
2974
+ ]
2975
+ },
2976
+ {
2977
+ "entry": "hair_tail_wind",
2978
+ "guide": "constraints",
2979
+ "quote": "Her hair tail barely moves.",
2980
+ "asks": [
2981
+ "effects",
2982
+ "strength"
2983
+ ]
2984
+ },
2985
+ {
2986
+ "entry": "lantern_hinge_physics",
2987
+ "guide": "bones",
2988
+ "quote": "swing on its own",
2989
+ "asks": [
2990
+ "chains"
2991
+ ]
2992
+ }
2993
+ ],
2994
+ "stops": [
2995
+ {
2996
+ "entry": "lantern_hinge",
2997
+ "guide": "bones",
2998
+ "quote": "hang from her hand",
2999
+ "asks": [
3000
+ "chains"
3001
+ ]
3002
+ }
3003
+ ],
3004
+ "motion": [
3005
+ {
3006
+ "entry": "breath",
3007
+ "guide": "motion",
3008
+ "quote": "Breath",
3009
+ "asks": [
3010
+ "tracks"
3011
+ ]
3012
+ },
3013
+ {
3014
+ "entry": "blink",
3015
+ "guide": "motion",
3016
+ "quote": "blink",
3017
+ "asks": [
3018
+ "blink"
3019
+ ]
3020
+ },
3021
+ {
3022
+ "entry": "flame_flicker",
3023
+ "guide": "motion",
3024
+ "quote": "The lantern flame flickers.",
3025
+ "asks": [
3026
+ "tracks"
3027
+ ]
3028
+ }
3029
+ ]
3030
+ }
3031
+ },
3032
+ "verdicts": [
3033
+ {
3034
+ "by": "user",
3035
+ "at": "2026-11-09T00:00:51.000Z",
3036
+ "review": "rig-review",
3037
+ "verdict": "accepted",
3038
+ "verbatim": "yes, that's her",
3039
+ "source": "chat",
3040
+ "on_items": []
3041
+ }
3042
+ ]
3043
+ },
3044
+ {
3045
+ "n": 3,
3046
+ "kind": "post",
3047
+ "review_origin": null,
3048
+ "rig_version": 2,
3049
+ "at": "2026-11-09T00:01:01.000Z",
3050
+ "built_by": "agent",
3051
+ "built_with": {
3052
+ "@rig-c/parts": "2.37.0",
3053
+ "@rig-c/core": "3.7.0"
3054
+ },
3055
+ "answers_feedback": [],
3056
+ "changed": "first post version on rig v2",
3057
+ "outputs": [
3058
+ {
3059
+ "path": "outputs/v3/take.mp4",
3060
+ "sha256": "5215feb4d65bf48cbf0bf38e069ac35a0b73b579c8b2b2ea09a333c60a612865",
3061
+ "bytes": 22841103
3062
+ }
3063
+ ],
3064
+ "evidence": [
3065
+ {
3066
+ "path": "evidence/v3/beat-sheet.png",
3067
+ "sha256": "9379cc453a56cf8370a5ca9939d661f2383edd9089d510a978cb09532db4945d",
3068
+ "what": "frames at 0, 2, 4, 6 and 8 s with the beam sweep marked"
3069
+ }
3070
+ ],
3071
+ "provenance": {
3072
+ "config": {
3073
+ "path": "derived/v3/take.json",
3074
+ "sha256": "4cd0f57549e7c463383ea7fd68f736558706cc4aa77a6d013fa423c5a8ae47c7"
3075
+ },
3076
+ "sections": {
3077
+ "camera": [
3078
+ {
3079
+ "entry": "push_in",
3080
+ "guide": "camera_depth",
3081
+ "quote": "A slow push-in, no parallax.",
3082
+ "asks": [
3083
+ "camera_depth"
3084
+ ]
3085
+ }
3086
+ ],
3087
+ "timing": [
3088
+ {
3089
+ "entry": "duration 8 s, loop",
3090
+ "guide": "post_timing",
3091
+ "quote": "Eight seconds, looping.",
3092
+ "asks": [
3093
+ "post_timing"
3094
+ ]
3095
+ },
3096
+ {
3097
+ "entry": "beam_sweep",
3098
+ "guide": "post_timing",
3099
+ "quote": "The beam sweeps past once, near the end.",
3100
+ "asks": [
3101
+ "post_timing"
3102
+ ]
3103
+ }
3104
+ ],
3105
+ "framing": [
3106
+ {
3107
+ "entry": "crop",
3108
+ "guide": "post_composition",
3109
+ "quote": "Keep the whole lighthouse in frame.",
3110
+ "asks": [
3111
+ "post_composition"
3112
+ ]
3113
+ },
3114
+ {
3115
+ "entry": "exposure",
3116
+ "guide": "post_composition",
3117
+ "quote": "don't brighten it",
3118
+ "asks": [
3119
+ "post_composition"
3120
+ ]
3121
+ }
3122
+ ]
3123
+ }
3124
+ },
3125
+ "verdicts": [
3126
+ {
3127
+ "by": "user",
3128
+ "at": "2026-11-09T00:01:02.000Z",
3129
+ "review": "direction-review",
3130
+ "verdict": "bounced",
3131
+ "verbatim": "The beam sweeps right at the start. I said near the end.",
3132
+ "source": "chat",
3133
+ "on_items": [
3134
+ {
3135
+ "id": "post_timing",
3136
+ "answer_was": "user"
3137
+ }
3138
+ ]
3139
+ }
3140
+ ]
3141
+ },
3142
+ {
3143
+ "n": 4,
3144
+ "kind": "post",
3145
+ "rig_version": 2,
3146
+ "at": "2026-11-09T00:01:03.000Z",
3147
+ "built_by": "agent",
3148
+ "built_with": {
3149
+ "create": "direction@2"
3150
+ },
3151
+ "changed": "beam sweep moved to start at 6.2 s",
3152
+ "outputs": [
3153
+ {
3154
+ "path": "evidence/direction/v4.json",
3155
+ "sha256": "ea93e49482932e40dc57e0702a6c98dd86b5791f22d1bfb260219e414e89ed24"
3156
+ }
3157
+ ],
3158
+ "evidence": [
3159
+ {
3160
+ "path": "evidence/v4/beat-sheet.png",
3161
+ "sha256": "51731f17808dece75bb165c8e5d695bf791ad5b2621aa91849deb38e168de318",
3162
+ "what": "frames at 0, 2, 4, 6 and 8 s with the beam sweep marked"
3163
+ }
3164
+ ],
3165
+ "verdicts": [
3166
+ {
3167
+ "by": "user",
3168
+ "at": "2026-11-09T00:01:04.000Z",
3169
+ "review": "direction-review",
3170
+ "verdict": "accepted",
3171
+ "verbatim": "done, I like it",
3172
+ "source": "chat",
3173
+ "on_items": []
3174
+ }
3175
+ ],
3176
+ "answers_feedback": [
3177
+ {
3178
+ "version": 3,
3179
+ "verdict": 0
3180
+ }
3181
+ ],
3182
+ "review_origin": null,
3183
+ "provenance": {
3184
+ "config": {
3185
+ "path": "evidence/direction/v4.json",
3186
+ "sha256": "ea93e49482932e40dc57e0702a6c98dd86b5791f22d1bfb260219e414e89ed24"
3187
+ },
3188
+ "direction": {
3189
+ "path": "evidence/direction/v4.json",
3190
+ "sha256": "ea93e49482932e40dc57e0702a6c98dd86b5791f22d1bfb260219e414e89ed24"
3191
+ },
3192
+ "sections": {
3193
+ "camera": [
3194
+ {
3195
+ "entry": "camera",
3196
+ "guide": "camera_depth",
3197
+ "asks": [
3198
+ "camera_depth"
3199
+ ],
3200
+ "quote": "A slow push-in, no parallax.\nAs answered on 2026-11-09T00:00:53.000Z in post-interview, chat"
3201
+ }
3202
+ ],
3203
+ "timing": [
3204
+ {
3205
+ "entry": "timing",
3206
+ "guide": "post_timing",
3207
+ "asks": [
3208
+ "post_timing"
3209
+ ],
3210
+ "quote": "Eight seconds, looping. The beam sweeps past once, near the end.\nAs answered on 2026-11-09T00:00:55.000Z in post-interview, chat"
3211
+ }
3212
+ ]
3213
+ }
3214
+ }
3215
+ }
3216
+ ],
3217
+ "archive": null,
3218
+ "notes": [
3219
+ "A made-up painting and a made-up conversation, for the shape of the record only."
3220
+ ],
3221
+ "diff_map": {
3222
+ "by": "agent",
3223
+ "at": "2026-11-09T00:00:37.000Z",
3224
+ "report": {
3225
+ "path": "evidence/diff-components.json",
3226
+ "sha256": "6b26d802dd85b30a00aa714f643ff5238badf4b1124e44068dc9d93c90a61df3"
3227
+ },
3228
+ "components": [
3229
+ {
3230
+ "id": "p10-n3",
3231
+ "status": "in-painting",
3232
+ "why": "the synthetic painting deliberately differs here"
3233
+ },
3234
+ {
3235
+ "id": "p1000-n3",
3236
+ "status": "in-painting",
3237
+ "why": "the synthetic painting deliberately differs here"
3238
+ }
3239
+ ]
3240
+ },
3241
+ "drafts": [
3242
+ {
3243
+ "id": "example",
3244
+ "kind": "draft-rig",
3245
+ "at": "2026-11-09T00:00:35.000Z",
3246
+ "producer": {
3247
+ "name": "@rig-c/parts",
3248
+ "version": "2.37.0"
3249
+ },
3250
+ "config": {
3251
+ "path": "derived/drafts/example/config.json",
3252
+ "sha256": "9989ec352840dae4e539f454bbf80fcd7d742c6c6b5208c4c63f82d09e8ccd2c"
3253
+ },
3254
+ "parts": {
3255
+ "path": "derived/drafts/example/input",
3256
+ "files": [
3257
+ {
3258
+ "path": "derived/drafts/example/input/painting_in_rig.png",
3259
+ "sha256": "02e6ea41dfec89a7eced0f66b98e0fea048846c6f4174fa1cc7631fe360e614f"
3260
+ },
3261
+ {
3262
+ "path": "derived/drafts/example/input/parts/background.png",
3263
+ "sha256": "c180182b6666fb4d90d4f91e210bda103a4081f1ad7c45006db392fa6c4eaf36"
3264
+ },
3265
+ {
3266
+ "path": "derived/drafts/example/input/parts/eye_l.png",
3267
+ "sha256": "c080dceac3b4d8fbc824ebb0ebffe61047f10af4e2cdd8d51b32bf779691617e"
3268
+ },
3269
+ {
3270
+ "path": "derived/drafts/example/input/parts/eye_r.png",
3271
+ "sha256": "c080dceac3b4d8fbc824ebb0ebffe61047f10af4e2cdd8d51b32bf779691617e"
3272
+ },
3273
+ {
3274
+ "path": "derived/drafts/example/input/parts/face.png",
3275
+ "sha256": "9626a5008eb90b22ab7623cb79048ed521c6aa651254287bbc9df8606b9f0bf7"
3276
+ },
3277
+ {
3278
+ "path": "derived/drafts/example/input/parts/lantern.png",
3279
+ "sha256": "79ff42136a509e98032352ef9f8c0857a5d7f16667eb629bc048b9b8ef24d96a"
3280
+ },
3281
+ {
3282
+ "path": "derived/drafts/example/input/parts/torso.png",
3283
+ "sha256": "adf6cd5d92568c5f51028df2874b69f4df5ff1d0e3a94484784c867e543cd912"
3284
+ },
3285
+ {
3286
+ "path": "derived/drafts/example/input/parts.json",
3287
+ "sha256": "fb0b74d03b7e71d1c2bb2a6fe0ca1ef7415239863ea8eb95fc271b6eee38a0b7"
3288
+ }
3289
+ ]
3290
+ },
3291
+ "files": [
3292
+ {
3293
+ "path": "derived/drafts/example/out/check/build/run.json",
3294
+ "sha256": "4ddab6b9418752741c7f457c54e71317aec463a4950d9a22a53ca8c640d61184"
3295
+ },
3296
+ {
3297
+ "path": "derived/drafts/example/out/check/build/skeleton.atlas",
3298
+ "sha256": "68f9cb5eea7a194d59fb14d5c2363894b2eca78c26bf9aee67a760955a6125f3"
3299
+ },
3300
+ {
3301
+ "path": "derived/drafts/example/out/check/build/skeleton.json",
3302
+ "sha256": "ddf366446f30bdda13dea626976e719b8ebc6018322c38c64cfdd6e16cc4a47c"
3303
+ },
3304
+ {
3305
+ "path": "derived/drafts/example/out/check/build/skeleton.model.json",
3306
+ "sha256": "15146157bfafc565b4eb0da7b66195283504692dc06d512dc404fd8f5849aa7e"
3307
+ },
3308
+ {
3309
+ "path": "derived/drafts/example/out/check/build/skeleton.png",
3310
+ "sha256": "1b1836dc1a2700302723ebfebc8fd2be918ba69dff41029788a90595c426c6b2"
3311
+ },
3312
+ {
3313
+ "path": "derived/drafts/example/out/images/background.png",
3314
+ "sha256": "24eb570320b9e27ce6449b54e82abd811043b9a63f48387f13cbba2dbed5c5f8"
3315
+ },
3316
+ {
3317
+ "path": "derived/drafts/example/out/images/eye_l.png",
3318
+ "sha256": "97da226ecba85a1af18173df4eb28d72b0828cda8c171f8d4a2995a3da9cc733"
3319
+ },
3320
+ {
3321
+ "path": "derived/drafts/example/out/images/eye_r.png",
3322
+ "sha256": "97da226ecba85a1af18173df4eb28d72b0828cda8c171f8d4a2995a3da9cc733"
3323
+ },
3324
+ {
3325
+ "path": "derived/drafts/example/out/images/face.png",
3326
+ "sha256": "e2bd0d0736b3ecda20d6a08840468a2d46738c226631fd73e280dab3719c9e4c"
3327
+ },
3328
+ {
3329
+ "path": "derived/drafts/example/out/images/lantern.png",
3330
+ "sha256": "733d1cc36c0d1a01f1d330085316f8bcccb8d4331e2f20b9a3dfe2a3407a7041"
3331
+ },
3332
+ {
3333
+ "path": "derived/drafts/example/out/images/torso.png",
3334
+ "sha256": "356a2a89f530ef7ab5719eefa2cfbff37f8f39a274f41689f13a9c7a2d76adf5"
3335
+ },
3336
+ {
3337
+ "path": "derived/drafts/example/out/mesh_report.json",
3338
+ "sha256": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570"
3339
+ },
3340
+ {
3341
+ "path": "derived/drafts/example/out/motion.json",
3342
+ "sha256": "6c6c105be9c818556061aabc366357460712a7f7d0a5e3f8b25b0af6c533cceb"
3343
+ },
3344
+ {
3345
+ "path": "derived/drafts/example/out/rig.json",
3346
+ "sha256": "3e9666933af397939671c9d07e117cf3ab192d0a1d601109225986bc4e15f894"
3347
+ },
3348
+ {
3349
+ "path": "derived/drafts/example/out/run.json",
3350
+ "sha256": "0be4f6239211bffee323478ef8e673478b17b9b3c8f3e7a9e287816adcb783ee"
3351
+ }
3352
+ ],
3353
+ "config_inputs": [
3354
+ {
3355
+ "path": "derived/drafts/example/interview-requirements.json",
3356
+ "sha256": "214ddb880e94a575cd4afb35f99ddfa3d90198b88095550f20e0b980d2fd0cff"
3357
+ }
3358
+ ]
3359
+ },
3360
+ {
3361
+ "id": "lantern",
3362
+ "kind": "draft-rig",
3363
+ "at": "2026-11-09T00:01:06.000Z",
3364
+ "producer": {
3365
+ "name": "@rig-c/parts",
3366
+ "version": "2.37.0"
3367
+ },
3368
+ "config": {
3369
+ "path": "derived/drafts/lantern/config.json",
3370
+ "sha256": "9989ec352840dae4e539f454bbf80fcd7d742c6c6b5208c4c63f82d09e8ccd2c"
3371
+ },
3372
+ "parts": {
3373
+ "path": "derived/drafts/lantern/input",
3374
+ "files": [
3375
+ {
3376
+ "path": "derived/drafts/lantern/input/painting_in_rig.png",
3377
+ "sha256": "02e6ea41dfec89a7eced0f66b98e0fea048846c6f4174fa1cc7631fe360e614f"
3378
+ },
3379
+ {
3380
+ "path": "derived/drafts/lantern/input/parts/background.png",
3381
+ "sha256": "c180182b6666fb4d90d4f91e210bda103a4081f1ad7c45006db392fa6c4eaf36"
3382
+ },
3383
+ {
3384
+ "path": "derived/drafts/lantern/input/parts/eye_l.png",
3385
+ "sha256": "c080dceac3b4d8fbc824ebb0ebffe61047f10af4e2cdd8d51b32bf779691617e"
3386
+ },
3387
+ {
3388
+ "path": "derived/drafts/lantern/input/parts/eye_r.png",
3389
+ "sha256": "c080dceac3b4d8fbc824ebb0ebffe61047f10af4e2cdd8d51b32bf779691617e"
3390
+ },
3391
+ {
3392
+ "path": "derived/drafts/lantern/input/parts/face.png",
3393
+ "sha256": "9626a5008eb90b22ab7623cb79048ed521c6aa651254287bbc9df8606b9f0bf7"
3394
+ },
3395
+ {
3396
+ "path": "derived/drafts/lantern/input/parts/lantern.png",
3397
+ "sha256": "79ff42136a509e98032352ef9f8c0857a5d7f16667eb629bc048b9b8ef24d96a"
3398
+ },
3399
+ {
3400
+ "path": "derived/drafts/lantern/input/parts/torso.png",
3401
+ "sha256": "adf6cd5d92568c5f51028df2874b69f4df5ff1d0e3a94484784c867e543cd912"
3402
+ },
3403
+ {
3404
+ "path": "derived/drafts/lantern/input/parts.json",
3405
+ "sha256": "fb0b74d03b7e71d1c2bb2a6fe0ca1ef7415239863ea8eb95fc271b6eee38a0b7"
3406
+ }
3407
+ ]
3408
+ },
3409
+ "files": [
3410
+ {
3411
+ "path": "derived/drafts/lantern/out/check/build/run.json",
3412
+ "sha256": "4ddab6b9418752741c7f457c54e71317aec463a4950d9a22a53ca8c640d61184"
3413
+ },
3414
+ {
3415
+ "path": "derived/drafts/lantern/out/check/build/skeleton.atlas",
3416
+ "sha256": "68f9cb5eea7a194d59fb14d5c2363894b2eca78c26bf9aee67a760955a6125f3"
3417
+ },
3418
+ {
3419
+ "path": "derived/drafts/lantern/out/check/build/skeleton.json",
3420
+ "sha256": "ddf366446f30bdda13dea626976e719b8ebc6018322c38c64cfdd6e16cc4a47c"
3421
+ },
3422
+ {
3423
+ "path": "derived/drafts/lantern/out/check/build/skeleton.model.json",
3424
+ "sha256": "15146157bfafc565b4eb0da7b66195283504692dc06d512dc404fd8f5849aa7e"
3425
+ },
3426
+ {
3427
+ "path": "derived/drafts/lantern/out/check/build/skeleton.png",
3428
+ "sha256": "1b1836dc1a2700302723ebfebc8fd2be918ba69dff41029788a90595c426c6b2"
3429
+ },
3430
+ {
3431
+ "path": "derived/drafts/lantern/out/images/background.png",
3432
+ "sha256": "24eb570320b9e27ce6449b54e82abd811043b9a63f48387f13cbba2dbed5c5f8"
3433
+ },
3434
+ {
3435
+ "path": "derived/drafts/lantern/out/images/eye_l.png",
3436
+ "sha256": "97da226ecba85a1af18173df4eb28d72b0828cda8c171f8d4a2995a3da9cc733"
3437
+ },
3438
+ {
3439
+ "path": "derived/drafts/lantern/out/images/eye_r.png",
3440
+ "sha256": "97da226ecba85a1af18173df4eb28d72b0828cda8c171f8d4a2995a3da9cc733"
3441
+ },
3442
+ {
3443
+ "path": "derived/drafts/lantern/out/images/face.png",
3444
+ "sha256": "e2bd0d0736b3ecda20d6a08840468a2d46738c226631fd73e280dab3719c9e4c"
3445
+ },
3446
+ {
3447
+ "path": "derived/drafts/lantern/out/images/lantern.png",
3448
+ "sha256": "733d1cc36c0d1a01f1d330085316f8bcccb8d4331e2f20b9a3dfe2a3407a7041"
3449
+ },
3450
+ {
3451
+ "path": "derived/drafts/lantern/out/images/torso.png",
3452
+ "sha256": "356a2a89f530ef7ab5719eefa2cfbff37f8f39a274f41689f13a9c7a2d76adf5"
3453
+ },
3454
+ {
3455
+ "path": "derived/drafts/lantern/out/mesh_report.json",
3456
+ "sha256": "37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570"
3457
+ },
3458
+ {
3459
+ "path": "derived/drafts/lantern/out/motion.json",
3460
+ "sha256": "6c6c105be9c818556061aabc366357460712a7f7d0a5e3f8b25b0af6c533cceb"
3461
+ },
3462
+ {
3463
+ "path": "derived/drafts/lantern/out/rig.json",
3464
+ "sha256": "3e9666933af397939671c9d07e117cf3ab192d0a1d601109225986bc4e15f894"
3465
+ },
3466
+ {
3467
+ "path": "derived/drafts/lantern/out/run.json",
3468
+ "sha256": "0be4f6239211bffee323478ef8e673478b17b9b3c8f3e7a9e287816adcb783ee"
3469
+ }
3470
+ ],
3471
+ "config_inputs": [
3472
+ {
3473
+ "path": "derived/drafts/lantern/interview-requirements.json",
3474
+ "sha256": "214ddb880e94a575cd4afb35f99ddfa3d90198b88095550f20e0b980d2fd0cff"
3475
+ }
3476
+ ],
3477
+ "ledger_report": {
3478
+ "path": "evidence/fix-ledger/lantern.json",
3479
+ "sha256": "ae1bc8582715207c961226e6d53a43c484d16955e2f5bcef2df4d11ac2ad0944",
3480
+ "spec": "rig-create/fix-ledger-report@1"
3481
+ },
3482
+ "fixes_against": "example",
3483
+ "fixes": [
3484
+ "T1"
3485
+ ]
3486
+ }
3487
+ ],
3488
+ "review_acts": [
3489
+ {
3490
+ "schema": "rig-create/parts-verdict-cli@1",
3491
+ "kind": "parts-verdict",
3492
+ "draft_id": "example",
3493
+ "evidence": {
3494
+ "kind": "parts-verdict",
3495
+ "path": "evidence/review-reads/4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05.json",
3496
+ "sha256": "4ed0507381809746443021554e012032be5b5f8417da0f2e525e9b6df16e9f05"
3497
+ },
3498
+ "route": "cli",
3499
+ "argv": [
3500
+ "derived/parts/rig",
3501
+ "--verdict",
3502
+ "evidence/parts-review.json"
3503
+ ],
3504
+ "tool": {
3505
+ "name": "@rig-c/review",
3506
+ "version": "0.0.0-synthetic"
3507
+ },
3508
+ "status": "approved",
3509
+ "flagged": [],
3510
+ "noted": [],
3511
+ "by": "user",
3512
+ "at": "2026-11-09T00:00:35.000Z"
3513
+ }
3514
+ ],
3515
+ "advances": [
3516
+ {
3517
+ "stage": "plan-approved",
3518
+ "from_stage": "interview",
3519
+ "at": "2026-11-09T00:00:18.000Z",
3520
+ "post_not_passed": false,
3521
+ "order": "split",
3522
+ "signoffs_before": [
3523
+ {
3524
+ "stage": "interview",
3525
+ "checkpoint": null,
3526
+ "at": "2026-11-09T00:00:18.000Z"
3527
+ }
3528
+ ],
3529
+ "signoff": {
3530
+ "stage": "interview",
3531
+ "checkpoint": null,
3532
+ "at": "2026-11-09T00:00:18.000Z"
3533
+ },
3534
+ "steps_before": [
3535
+ {
3536
+ "id": "seethrough",
3537
+ "phase": "rig",
3538
+ "status": "pending"
3539
+ },
3540
+ {
3541
+ "id": "assemble",
3542
+ "phase": "rig",
3543
+ "status": "pending"
3544
+ },
3545
+ {
3546
+ "id": "bones",
3547
+ "phase": "rig",
3548
+ "status": "pending"
3549
+ },
3550
+ {
3551
+ "id": "meshes",
3552
+ "phase": "rig",
3553
+ "status": "pending"
3554
+ },
3555
+ {
3556
+ "id": "constraints",
3557
+ "phase": "rig",
3558
+ "status": "pending"
3559
+ },
3560
+ {
3561
+ "id": "motion",
3562
+ "phase": "rig",
3563
+ "status": "pending"
3564
+ },
3565
+ {
3566
+ "id": "camera",
3567
+ "phase": "post",
3568
+ "status": "pending"
3569
+ },
3570
+ {
3571
+ "id": "timing",
3572
+ "phase": "post",
3573
+ "status": "pending"
3574
+ },
3575
+ {
3576
+ "id": "composition",
3577
+ "phase": "post",
3578
+ "status": "pending"
3579
+ }
3580
+ ]
3581
+ },
3582
+ {
3583
+ "stage": "parts",
3584
+ "from_stage": "plan-approved",
3585
+ "at": "2026-11-09T00:00:30.000Z",
3586
+ "post_not_passed": false,
3587
+ "order": "split",
3588
+ "signoffs_before": [
3589
+ {
3590
+ "stage": "interview",
3591
+ "checkpoint": null,
3592
+ "at": "2026-11-09T00:00:18.000Z"
3593
+ },
3594
+ {
3595
+ "stage": "plan-approved",
3596
+ "checkpoint": null,
3597
+ "at": "2026-11-09T00:00:30.000Z"
3598
+ }
3599
+ ],
3600
+ "signoff": {
3601
+ "stage": "plan-approved",
3602
+ "checkpoint": null,
3603
+ "at": "2026-11-09T00:00:30.000Z"
3604
+ },
3605
+ "steps_before": [
3606
+ {
3607
+ "id": "seethrough",
3608
+ "phase": "rig",
3609
+ "status": "pending"
3610
+ },
3611
+ {
3612
+ "id": "assemble",
3613
+ "phase": "rig",
3614
+ "status": "pending"
3615
+ },
3616
+ {
3617
+ "id": "bones",
3618
+ "phase": "rig",
3619
+ "status": "pending"
3620
+ },
3621
+ {
3622
+ "id": "meshes",
3623
+ "phase": "rig",
3624
+ "status": "pending"
3625
+ },
3626
+ {
3627
+ "id": "constraints",
3628
+ "phase": "rig",
3629
+ "status": "pending"
3630
+ },
3631
+ {
3632
+ "id": "motion",
3633
+ "phase": "rig",
3634
+ "status": "pending"
3635
+ },
3636
+ {
3637
+ "id": "camera",
3638
+ "phase": "post",
3639
+ "status": "pending"
3640
+ },
3641
+ {
3642
+ "id": "timing",
3643
+ "phase": "post",
3644
+ "status": "pending"
3645
+ },
3646
+ {
3647
+ "id": "composition",
3648
+ "phase": "post",
3649
+ "status": "pending"
3650
+ }
3651
+ ]
3652
+ },
3653
+ {
3654
+ "stage": "parts-review",
3655
+ "from_stage": "parts",
3656
+ "at": "2026-11-09T00:00:35.000Z",
3657
+ "post_not_passed": false,
3658
+ "order": "split",
3659
+ "signoffs_before": [
3660
+ {
3661
+ "stage": "interview",
3662
+ "checkpoint": null,
3663
+ "at": "2026-11-09T00:00:18.000Z"
3664
+ },
3665
+ {
3666
+ "stage": "plan-approved",
3667
+ "checkpoint": null,
3668
+ "at": "2026-11-09T00:00:30.000Z"
3669
+ },
3670
+ {
3671
+ "stage": "parts",
3672
+ "checkpoint": "assemble",
3673
+ "at": "2026-11-09T00:00:34.000Z"
3674
+ }
3675
+ ],
3676
+ "signoff": {
3677
+ "stage": "plan-approved",
3678
+ "checkpoint": null,
3679
+ "at": "2026-11-09T00:00:30.000Z"
3680
+ },
3681
+ "steps_before": [
3682
+ {
3683
+ "id": "seethrough",
3684
+ "phase": "rig",
3685
+ "status": "done"
3686
+ },
3687
+ {
3688
+ "id": "assemble",
3689
+ "phase": "rig",
3690
+ "status": "done"
3691
+ },
3692
+ {
3693
+ "id": "bones",
3694
+ "phase": "rig",
3695
+ "status": "pending"
3696
+ },
3697
+ {
3698
+ "id": "meshes",
3699
+ "phase": "rig",
3700
+ "status": "pending"
3701
+ },
3702
+ {
3703
+ "id": "constraints",
3704
+ "phase": "rig",
3705
+ "status": "pending"
3706
+ },
3707
+ {
3708
+ "id": "motion",
3709
+ "phase": "rig",
3710
+ "status": "pending"
3711
+ },
3712
+ {
3713
+ "id": "camera",
3714
+ "phase": "post",
3715
+ "status": "pending"
3716
+ },
3717
+ {
3718
+ "id": "timing",
3719
+ "phase": "post",
3720
+ "status": "pending"
3721
+ },
3722
+ {
3723
+ "id": "composition",
3724
+ "phase": "post",
3725
+ "status": "pending"
3726
+ }
3727
+ ],
3728
+ "parts_check": {
3729
+ "path": "evidence/parts-check.json",
3730
+ "sha256": "304e2330e0f54275cd29053510addb32720a20c1dfeca23488d96d6be54e91ea",
3731
+ "spec": "rig-parts-parts-check/1",
3732
+ "parts": "derived/drafts/example/input",
3733
+ "exit_code": 0,
3734
+ "holes": [
3735
+ {
3736
+ "code": "PARTS_PLATE_GHOST",
3737
+ "object": "parts",
3738
+ "reason": "no adopted plate-ghost discriminator; assemble outputs do not bind a background plate or composed figure outline",
3739
+ "line": "PARTS_PLATE_GHOST: HOLE — no adopted plate-ghost discriminator; assemble outputs do not bind a background plate or composed figure outline"
3740
+ },
3741
+ {
3742
+ "code": "PARTS_PLATE_STRUCTURE",
3743
+ "object": "parts",
3744
+ "reason": "no adopted background-structure continuation measure or reference",
3745
+ "line": "PARTS_PLATE_STRUCTURE: HOLE — no adopted background-structure continuation measure or reference"
3746
+ },
3747
+ {
3748
+ "code": "PARTS_PLATE_SMEAR",
3749
+ "object": "parts",
3750
+ "reason": "no adopted plate-smear discriminator",
3751
+ "line": "PARTS_PLATE_SMEAR: HOLE — no adopted plate-smear discriminator"
3752
+ },
3753
+ {
3754
+ "code": "PARTS_PLATE_STEPS",
3755
+ "object": "parts",
3756
+ "reason": "no adopted plate-fill continuity measure",
3757
+ "line": "PARTS_PLATE_STEPS: HOLE — no adopted plate-fill continuity measure"
3758
+ },
3759
+ {
3760
+ "code": "PARTS_INVENTED_MATERIAL",
3761
+ "object": "parts",
3762
+ "reason": "no validated producer-bound per-pixel painted-versus-invented record",
3763
+ "line": "PARTS_INVENTED_MATERIAL: HOLE — no validated producer-bound per-pixel painted-versus-invented record"
3764
+ },
3765
+ {
3766
+ "code": "PARTS_INVENTED_EXPOSURE",
3767
+ "object": "parts",
3768
+ "reason": "invented-material identity and posed-frame observations are unavailable at the parts stage",
3769
+ "line": "PARTS_INVENTED_EXPOSURE: HOLE — invented-material identity and posed-frame observations are unavailable at the parts stage"
3770
+ },
3771
+ {
3772
+ "code": "PARTS_SOURCE_COVER",
3773
+ "object": "source_cover.json",
3774
+ "reason": "source_cover.json is absent; direct unplanned source cover is unavailable",
3775
+ "line": "PARTS_SOURCE_COVER: HOLE — source_cover.json is absent; direct unplanned source cover is unavailable"
3776
+ },
3777
+ {
3778
+ "code": "PARTS_PAINTING_ALLOCATION",
3779
+ "object": "painting_allocation.json",
3780
+ "reason": "painting_allocation.json is absent; painting-edge transfer membership is unavailable",
3781
+ "line": "PARTS_PAINTING_ALLOCATION: HOLE — painting_allocation.json is absent; painting-edge transfer membership is unavailable"
3782
+ }
3783
+ ],
3784
+ "reported": []
3785
+ }
3786
+ },
3787
+ {
3788
+ "stage": "rigging-interview",
3789
+ "from_stage": "parts-review",
3790
+ "at": "2026-11-09T00:00:41.000Z",
3791
+ "post_not_passed": false,
3792
+ "order": "split",
3793
+ "signoffs_before": [
3794
+ {
3795
+ "stage": "interview",
3796
+ "checkpoint": null,
3797
+ "at": "2026-11-09T00:00:18.000Z"
3798
+ },
3799
+ {
3800
+ "stage": "plan-approved",
3801
+ "checkpoint": null,
3802
+ "at": "2026-11-09T00:00:30.000Z"
3803
+ },
3804
+ {
3805
+ "stage": "parts",
3806
+ "checkpoint": "assemble",
3807
+ "at": "2026-11-09T00:00:34.000Z"
3808
+ },
3809
+ {
3810
+ "stage": "parts-review",
3811
+ "checkpoint": null,
3812
+ "at": "2026-11-09T00:00:37.000Z"
3813
+ }
3814
+ ],
3815
+ "signoff": {
3816
+ "stage": "parts-review",
3817
+ "checkpoint": null,
3818
+ "at": "2026-11-09T00:00:37.000Z"
3819
+ },
3820
+ "steps_before": [
3821
+ {
3822
+ "id": "seethrough",
3823
+ "phase": "rig",
3824
+ "status": "done"
3825
+ },
3826
+ {
3827
+ "id": "assemble",
3828
+ "phase": "rig",
3829
+ "status": "done"
3830
+ },
3831
+ {
3832
+ "id": "bones",
3833
+ "phase": "rig",
3834
+ "status": "pending"
3835
+ },
3836
+ {
3837
+ "id": "meshes",
3838
+ "phase": "rig",
3839
+ "status": "pending"
3840
+ },
3841
+ {
3842
+ "id": "constraints",
3843
+ "phase": "rig",
3844
+ "status": "pending"
3845
+ },
3846
+ {
3847
+ "id": "motion",
3848
+ "phase": "rig",
3849
+ "status": "pending"
3850
+ },
3851
+ {
3852
+ "id": "camera",
3853
+ "phase": "post",
3854
+ "status": "pending"
3855
+ },
3856
+ {
3857
+ "id": "timing",
3858
+ "phase": "post",
3859
+ "status": "pending"
3860
+ },
3861
+ {
3862
+ "id": "composition",
3863
+ "phase": "post",
3864
+ "status": "pending"
3865
+ }
3866
+ ]
3867
+ },
3868
+ {
3869
+ "stage": "rigging",
3870
+ "from_stage": "rigging-interview",
3871
+ "at": "2026-11-09T00:00:44.000Z",
3872
+ "post_not_passed": false,
3873
+ "order": "split",
3874
+ "signoffs_before": [
3875
+ {
3876
+ "stage": "interview",
3877
+ "checkpoint": null,
3878
+ "at": "2026-11-09T00:00:18.000Z"
3879
+ },
3880
+ {
3881
+ "stage": "plan-approved",
3882
+ "checkpoint": null,
3883
+ "at": "2026-11-09T00:00:30.000Z"
3884
+ },
3885
+ {
3886
+ "stage": "parts",
3887
+ "checkpoint": "assemble",
3888
+ "at": "2026-11-09T00:00:34.000Z"
3889
+ },
3890
+ {
3891
+ "stage": "parts-review",
3892
+ "checkpoint": null,
3893
+ "at": "2026-11-09T00:00:37.000Z"
3894
+ },
3895
+ {
3896
+ "stage": "rigging-interview",
3897
+ "checkpoint": null,
3898
+ "at": "2026-11-09T00:00:44.000Z"
3899
+ }
3900
+ ],
3901
+ "signoff": {
3902
+ "stage": "rigging-interview",
3903
+ "checkpoint": null,
3904
+ "at": "2026-11-09T00:00:44.000Z"
3905
+ },
3906
+ "steps_before": [
3907
+ {
3908
+ "id": "seethrough",
3909
+ "phase": "rig",
3910
+ "status": "done"
3911
+ },
3912
+ {
3913
+ "id": "assemble",
3914
+ "phase": "rig",
3915
+ "status": "done"
3916
+ },
3917
+ {
3918
+ "id": "bones",
3919
+ "phase": "rig",
3920
+ "status": "pending"
3921
+ },
3922
+ {
3923
+ "id": "meshes",
3924
+ "phase": "rig",
3925
+ "status": "pending"
3926
+ },
3927
+ {
3928
+ "id": "constraints",
3929
+ "phase": "rig",
3930
+ "status": "pending"
3931
+ },
3932
+ {
3933
+ "id": "motion",
3934
+ "phase": "rig",
3935
+ "status": "pending"
3936
+ },
3937
+ {
3938
+ "id": "camera",
3939
+ "phase": "post",
3940
+ "status": "pending"
3941
+ },
3942
+ {
3943
+ "id": "timing",
3944
+ "phase": "post",
3945
+ "status": "pending"
3946
+ },
3947
+ {
3948
+ "id": "composition",
3949
+ "phase": "post",
3950
+ "status": "pending"
3951
+ }
3952
+ ]
3953
+ },
3954
+ {
3955
+ "stage": "rig-review",
3956
+ "from_stage": "rigging",
3957
+ "at": "2026-11-09T00:00:49.000Z",
3958
+ "post_not_passed": false,
3959
+ "order": "split",
3960
+ "signoffs_before": [
3961
+ {
3962
+ "stage": "interview",
3963
+ "checkpoint": null,
3964
+ "at": "2026-11-09T00:00:18.000Z"
3965
+ },
3966
+ {
3967
+ "stage": "plan-approved",
3968
+ "checkpoint": null,
3969
+ "at": "2026-11-09T00:00:30.000Z"
3970
+ },
3971
+ {
3972
+ "stage": "parts",
3973
+ "checkpoint": "assemble",
3974
+ "at": "2026-11-09T00:00:34.000Z"
3975
+ },
3976
+ {
3977
+ "stage": "parts-review",
3978
+ "checkpoint": null,
3979
+ "at": "2026-11-09T00:00:37.000Z"
3980
+ },
3981
+ {
3982
+ "stage": "rigging-interview",
3983
+ "checkpoint": null,
3984
+ "at": "2026-11-09T00:00:44.000Z"
3985
+ },
3986
+ {
3987
+ "stage": "rigging-interview",
3988
+ "checkpoint": null,
3989
+ "at": "2026-11-09T00:00:48.000Z"
3990
+ },
3991
+ {
3992
+ "stage": "rigging",
3993
+ "checkpoint": "constraints",
3994
+ "at": "2026-11-09T00:00:45.000Z"
3995
+ },
3996
+ {
3997
+ "stage": "rigging",
3998
+ "checkpoint": "constraints",
3999
+ "at": "2026-11-09T00:00:49.000Z"
4000
+ }
4001
+ ],
4002
+ "signoff": {
4003
+ "stage": "rigging-interview",
4004
+ "checkpoint": null,
4005
+ "at": "2026-11-09T00:00:48.000Z"
4006
+ },
4007
+ "steps_before": [
4008
+ {
4009
+ "id": "seethrough",
4010
+ "phase": "rig",
4011
+ "status": "done"
4012
+ },
4013
+ {
4014
+ "id": "assemble",
4015
+ "phase": "rig",
4016
+ "status": "done"
4017
+ },
4018
+ {
4019
+ "id": "bones",
4020
+ "phase": "rig",
4021
+ "status": "done"
4022
+ },
4023
+ {
4024
+ "id": "meshes",
4025
+ "phase": "rig",
4026
+ "status": "done"
4027
+ },
4028
+ {
4029
+ "id": "constraints",
4030
+ "phase": "rig",
4031
+ "status": "done"
4032
+ },
4033
+ {
4034
+ "id": "motion",
4035
+ "phase": "rig",
4036
+ "status": "done"
4037
+ },
4038
+ {
4039
+ "id": "camera",
4040
+ "phase": "post",
4041
+ "status": "pending"
4042
+ },
4043
+ {
4044
+ "id": "timing",
4045
+ "phase": "post",
4046
+ "status": "pending"
4047
+ },
4048
+ {
4049
+ "id": "composition",
4050
+ "phase": "post",
4051
+ "status": "pending"
4052
+ }
4053
+ ]
4054
+ },
4055
+ {
4056
+ "stage": "post-interview",
4057
+ "from_stage": "rig-review",
4058
+ "at": "2026-11-09T00:00:54.000Z",
4059
+ "post_not_passed": false,
4060
+ "order": "split",
4061
+ "signoffs_before": [
4062
+ {
4063
+ "stage": "interview",
4064
+ "checkpoint": null,
4065
+ "at": "2026-11-09T00:00:18.000Z"
4066
+ },
4067
+ {
4068
+ "stage": "plan-approved",
4069
+ "checkpoint": null,
4070
+ "at": "2026-11-09T00:00:30.000Z"
4071
+ },
4072
+ {
4073
+ "stage": "parts",
4074
+ "checkpoint": "assemble",
4075
+ "at": "2026-11-09T00:00:34.000Z"
4076
+ },
4077
+ {
4078
+ "stage": "parts-review",
4079
+ "checkpoint": null,
4080
+ "at": "2026-11-09T00:00:37.000Z"
4081
+ },
4082
+ {
4083
+ "stage": "rigging-interview",
4084
+ "checkpoint": null,
4085
+ "at": "2026-11-09T00:00:44.000Z"
4086
+ },
4087
+ {
4088
+ "stage": "rigging-interview",
4089
+ "checkpoint": null,
4090
+ "at": "2026-11-09T00:00:48.000Z"
4091
+ },
4092
+ {
4093
+ "stage": "rigging",
4094
+ "checkpoint": "constraints",
4095
+ "at": "2026-11-09T00:00:45.000Z"
4096
+ },
4097
+ {
4098
+ "stage": "rigging",
4099
+ "checkpoint": "constraints",
4100
+ "at": "2026-11-09T00:00:49.000Z"
4101
+ },
4102
+ {
4103
+ "stage": "rig-review",
4104
+ "checkpoint": null,
4105
+ "at": "2026-11-09T00:00:51.000Z"
4106
+ }
4107
+ ],
4108
+ "signoff": {
4109
+ "stage": "rig-review",
4110
+ "checkpoint": null,
4111
+ "at": "2026-11-09T00:00:51.000Z"
4112
+ },
4113
+ "steps_before": [
4114
+ {
4115
+ "id": "seethrough",
4116
+ "phase": "rig",
4117
+ "status": "done"
4118
+ },
4119
+ {
4120
+ "id": "assemble",
4121
+ "phase": "rig",
4122
+ "status": "done"
4123
+ },
4124
+ {
4125
+ "id": "bones",
4126
+ "phase": "rig",
4127
+ "status": "done"
4128
+ },
4129
+ {
4130
+ "id": "meshes",
4131
+ "phase": "rig",
4132
+ "status": "done"
4133
+ },
4134
+ {
4135
+ "id": "constraints",
4136
+ "phase": "rig",
4137
+ "status": "done"
4138
+ },
4139
+ {
4140
+ "id": "motion",
4141
+ "phase": "rig",
4142
+ "status": "done"
4143
+ },
4144
+ {
4145
+ "id": "camera",
4146
+ "phase": "post",
4147
+ "status": "pending"
4148
+ },
4149
+ {
4150
+ "id": "timing",
4151
+ "phase": "post",
4152
+ "status": "pending"
4153
+ },
4154
+ {
4155
+ "id": "composition",
4156
+ "phase": "post",
4157
+ "status": "pending"
4158
+ }
4159
+ ]
4160
+ },
4161
+ {
4162
+ "stage": "post",
4163
+ "from_stage": "post-interview",
4164
+ "at": "2026-11-09T00:01:00.000Z",
4165
+ "post_not_passed": false,
4166
+ "order": "split",
4167
+ "signoffs_before": [
4168
+ {
4169
+ "stage": "interview",
4170
+ "checkpoint": null,
4171
+ "at": "2026-11-09T00:00:18.000Z"
4172
+ },
4173
+ {
4174
+ "stage": "plan-approved",
4175
+ "checkpoint": null,
4176
+ "at": "2026-11-09T00:00:30.000Z"
4177
+ },
4178
+ {
4179
+ "stage": "parts",
4180
+ "checkpoint": "assemble",
4181
+ "at": "2026-11-09T00:00:34.000Z"
4182
+ },
4183
+ {
4184
+ "stage": "parts-review",
4185
+ "checkpoint": null,
4186
+ "at": "2026-11-09T00:00:37.000Z"
4187
+ },
4188
+ {
4189
+ "stage": "rigging-interview",
4190
+ "checkpoint": null,
4191
+ "at": "2026-11-09T00:00:44.000Z"
4192
+ },
4193
+ {
4194
+ "stage": "rigging-interview",
4195
+ "checkpoint": null,
4196
+ "at": "2026-11-09T00:00:48.000Z"
4197
+ },
4198
+ {
4199
+ "stage": "rigging",
4200
+ "checkpoint": "constraints",
4201
+ "at": "2026-11-09T00:00:45.000Z"
4202
+ },
4203
+ {
4204
+ "stage": "rigging",
4205
+ "checkpoint": "constraints",
4206
+ "at": "2026-11-09T00:00:49.000Z"
4207
+ },
4208
+ {
4209
+ "stage": "rig-review",
4210
+ "checkpoint": null,
4211
+ "at": "2026-11-09T00:00:51.000Z"
4212
+ },
4213
+ {
4214
+ "stage": "post-interview",
4215
+ "checkpoint": null,
4216
+ "at": "2026-11-09T00:01:00.000Z"
4217
+ }
4218
+ ],
4219
+ "signoff": {
4220
+ "stage": "post-interview",
4221
+ "checkpoint": null,
4222
+ "at": "2026-11-09T00:01:00.000Z"
4223
+ },
4224
+ "steps_before": [
4225
+ {
4226
+ "id": "seethrough",
4227
+ "phase": "rig",
4228
+ "status": "done"
4229
+ },
4230
+ {
4231
+ "id": "assemble",
4232
+ "phase": "rig",
4233
+ "status": "done"
4234
+ },
4235
+ {
4236
+ "id": "bones",
4237
+ "phase": "rig",
4238
+ "status": "done"
4239
+ },
4240
+ {
4241
+ "id": "meshes",
4242
+ "phase": "rig",
4243
+ "status": "done"
4244
+ },
4245
+ {
4246
+ "id": "constraints",
4247
+ "phase": "rig",
4248
+ "status": "done"
4249
+ },
4250
+ {
4251
+ "id": "motion",
4252
+ "phase": "rig",
4253
+ "status": "done"
4254
+ },
4255
+ {
4256
+ "id": "camera",
4257
+ "phase": "post",
4258
+ "status": "pending"
4259
+ },
4260
+ {
4261
+ "id": "timing",
4262
+ "phase": "post",
4263
+ "status": "pending"
4264
+ },
4265
+ {
4266
+ "id": "composition",
4267
+ "phase": "post",
4268
+ "status": "pending"
4269
+ }
4270
+ ]
4271
+ },
4272
+ {
4273
+ "stage": "direction-review",
4274
+ "from_stage": "post",
4275
+ "at": "2026-11-09T00:01:04.000Z",
4276
+ "post_not_passed": false,
4277
+ "order": "split",
4278
+ "signoffs_before": [
4279
+ {
4280
+ "stage": "interview",
4281
+ "checkpoint": null,
4282
+ "at": "2026-11-09T00:00:18.000Z"
4283
+ },
4284
+ {
4285
+ "stage": "plan-approved",
4286
+ "checkpoint": null,
4287
+ "at": "2026-11-09T00:00:30.000Z"
4288
+ },
4289
+ {
4290
+ "stage": "parts",
4291
+ "checkpoint": "assemble",
4292
+ "at": "2026-11-09T00:00:34.000Z"
4293
+ },
4294
+ {
4295
+ "stage": "parts-review",
4296
+ "checkpoint": null,
4297
+ "at": "2026-11-09T00:00:37.000Z"
4298
+ },
4299
+ {
4300
+ "stage": "rigging-interview",
4301
+ "checkpoint": null,
4302
+ "at": "2026-11-09T00:00:44.000Z"
4303
+ },
4304
+ {
4305
+ "stage": "rigging-interview",
4306
+ "checkpoint": null,
4307
+ "at": "2026-11-09T00:00:48.000Z"
4308
+ },
4309
+ {
4310
+ "stage": "rigging",
4311
+ "checkpoint": "constraints",
4312
+ "at": "2026-11-09T00:00:45.000Z"
4313
+ },
4314
+ {
4315
+ "stage": "rigging",
4316
+ "checkpoint": "constraints",
4317
+ "at": "2026-11-09T00:00:49.000Z"
4318
+ },
4319
+ {
4320
+ "stage": "rig-review",
4321
+ "checkpoint": null,
4322
+ "at": "2026-11-09T00:00:51.000Z"
4323
+ },
4324
+ {
4325
+ "stage": "post-interview",
4326
+ "checkpoint": null,
4327
+ "at": "2026-11-09T00:01:00.000Z"
4328
+ }
4329
+ ],
4330
+ "signoff": {
4331
+ "stage": "post-interview",
4332
+ "checkpoint": null,
4333
+ "at": "2026-11-09T00:01:00.000Z"
4334
+ },
4335
+ "steps_before": [
4336
+ {
4337
+ "id": "seethrough",
4338
+ "phase": "rig",
4339
+ "status": "done"
4340
+ },
4341
+ {
4342
+ "id": "assemble",
4343
+ "phase": "rig",
4344
+ "status": "done"
4345
+ },
4346
+ {
4347
+ "id": "bones",
4348
+ "phase": "rig",
4349
+ "status": "done"
4350
+ },
4351
+ {
4352
+ "id": "meshes",
4353
+ "phase": "rig",
4354
+ "status": "done"
4355
+ },
4356
+ {
4357
+ "id": "constraints",
4358
+ "phase": "rig",
4359
+ "status": "done"
4360
+ },
4361
+ {
4362
+ "id": "motion",
4363
+ "phase": "rig",
4364
+ "status": "done"
4365
+ },
4366
+ {
4367
+ "id": "camera",
4368
+ "phase": "post",
4369
+ "status": "done"
4370
+ },
4371
+ {
4372
+ "id": "timing",
4373
+ "phase": "post",
4374
+ "status": "done"
4375
+ },
4376
+ {
4377
+ "id": "composition",
4378
+ "phase": "post",
4379
+ "status": "done"
4380
+ }
4381
+ ]
4382
+ },
4383
+ {
4384
+ "stage": "accepted",
4385
+ "from_stage": "direction-review",
4386
+ "at": "2026-11-09T00:01:04.000Z",
4387
+ "post_not_passed": false,
4388
+ "order": "split",
4389
+ "signoffs_before": [
4390
+ {
4391
+ "stage": "interview",
4392
+ "checkpoint": null,
4393
+ "at": "2026-11-09T00:00:18.000Z"
4394
+ },
4395
+ {
4396
+ "stage": "plan-approved",
4397
+ "checkpoint": null,
4398
+ "at": "2026-11-09T00:00:30.000Z"
4399
+ },
4400
+ {
4401
+ "stage": "parts",
4402
+ "checkpoint": "assemble",
4403
+ "at": "2026-11-09T00:00:34.000Z"
4404
+ },
4405
+ {
4406
+ "stage": "parts-review",
4407
+ "checkpoint": null,
4408
+ "at": "2026-11-09T00:00:37.000Z"
4409
+ },
4410
+ {
4411
+ "stage": "rigging-interview",
4412
+ "checkpoint": null,
4413
+ "at": "2026-11-09T00:00:44.000Z"
4414
+ },
4415
+ {
4416
+ "stage": "rigging-interview",
4417
+ "checkpoint": null,
4418
+ "at": "2026-11-09T00:00:48.000Z"
4419
+ },
4420
+ {
4421
+ "stage": "rigging",
4422
+ "checkpoint": "constraints",
4423
+ "at": "2026-11-09T00:00:45.000Z"
4424
+ },
4425
+ {
4426
+ "stage": "rigging",
4427
+ "checkpoint": "constraints",
4428
+ "at": "2026-11-09T00:00:49.000Z"
4429
+ },
4430
+ {
4431
+ "stage": "rig-review",
4432
+ "checkpoint": null,
4433
+ "at": "2026-11-09T00:00:51.000Z"
4434
+ },
4435
+ {
4436
+ "stage": "post-interview",
4437
+ "checkpoint": null,
4438
+ "at": "2026-11-09T00:01:00.000Z"
4439
+ },
4440
+ {
4441
+ "stage": "direction-review",
4442
+ "checkpoint": null,
4443
+ "at": "2026-11-09T00:01:04.000Z"
4444
+ }
4445
+ ],
4446
+ "signoff": {
4447
+ "stage": "direction-review",
4448
+ "checkpoint": null,
4449
+ "at": "2026-11-09T00:01:04.000Z"
4450
+ },
4451
+ "steps_before": [
4452
+ {
4453
+ "id": "seethrough",
4454
+ "phase": "rig",
4455
+ "status": "done"
4456
+ },
4457
+ {
4458
+ "id": "assemble",
4459
+ "phase": "rig",
4460
+ "status": "done"
4461
+ },
4462
+ {
4463
+ "id": "bones",
4464
+ "phase": "rig",
4465
+ "status": "done"
4466
+ },
4467
+ {
4468
+ "id": "meshes",
4469
+ "phase": "rig",
4470
+ "status": "done"
4471
+ },
4472
+ {
4473
+ "id": "constraints",
4474
+ "phase": "rig",
4475
+ "status": "done"
4476
+ },
4477
+ {
4478
+ "id": "motion",
4479
+ "phase": "rig",
4480
+ "status": "done"
4481
+ },
4482
+ {
4483
+ "id": "camera",
4484
+ "phase": "post",
4485
+ "status": "done"
4486
+ },
4487
+ {
4488
+ "id": "timing",
4489
+ "phase": "post",
4490
+ "status": "done"
4491
+ },
4492
+ {
4493
+ "id": "composition",
4494
+ "phase": "post",
4495
+ "status": "done"
4496
+ }
4497
+ ]
4498
+ }
4499
+ ],
4500
+ "scenes": [
4501
+ {
4502
+ "n": 1,
4503
+ "path": "evidence/scene/s1.json",
4504
+ "sha256": "2c29c1c217044870605cf1470da390c772ec71dd5a718eaa0434fa80777d97a6",
4505
+ "at": "2026-11-09T00:01:00.000Z",
4506
+ "by": "agent"
4507
+ }
4508
+ ],
4509
+ "direction_contract": {
4510
+ "schema": "rig-create/direction-contract@1",
4511
+ "adopted_at": "2026-11-09T00:01:01.000Z",
4512
+ "grandfathered_posts": [
4513
+ 3
4514
+ ]
4515
+ },
4516
+ "fix_ledger": [
4517
+ {
4518
+ "id": "T1",
4519
+ "note": {
4520
+ "ref": "versions[v1].verdicts[0]",
4521
+ "verbatim": "It should hang from her hand and swing on its own."
4522
+ },
4523
+ "at": "2026-11-09T00:01:05.000Z",
4524
+ "by": "agent",
4525
+ "check": "lantern-hangs-from-hand",
4526
+ "bar": "the lantern pivots at the hand: its swing angle differs from the forearm angle by at least 10 degrees in the sway take"
4527
+ }
4528
+ ],
4529
+ "reopens": [
4530
+ {
4531
+ "from_stage": "accepted",
4532
+ "steps_before": [
4533
+ {
4534
+ "id": "bones",
4535
+ "status": "done"
4536
+ },
4537
+ {
4538
+ "id": "meshes",
4539
+ "status": "done"
4540
+ },
4541
+ {
4542
+ "id": "constraints",
4543
+ "status": "done"
4544
+ },
4545
+ {
4546
+ "id": "motion",
4547
+ "status": "done"
4548
+ },
4549
+ {
4550
+ "id": "camera",
4551
+ "status": "done"
4552
+ },
4553
+ {
4554
+ "id": "timing",
4555
+ "status": "done"
4556
+ },
4557
+ {
4558
+ "id": "composition",
4559
+ "status": "done"
4560
+ }
4561
+ ],
4562
+ "stage": "parts-review",
4563
+ "by": "user",
4564
+ "at": "2026-11-09T00:01:07.000Z",
4565
+ "verbatim": "Reopen the synthetic parts for correction.\n"
4566
+ }
4567
+ ]
4568
+ }