zorya-classifier 0.1.0 → 0.2.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 (313) hide show
  1. package/NOTICE.md +2 -0
  2. package/README.md +18 -6
  3. package/dist/app/cli-arguments.d.ts +40 -0
  4. package/dist/app/cli-arguments.js +67 -0
  5. package/dist/app/create-classifier.d.ts +19 -0
  6. package/dist/app/create-classifier.js +226 -14
  7. package/dist/app/extraction-files.d.ts +9 -0
  8. package/dist/app/extraction-files.js +28 -0
  9. package/dist/cli.js +58 -14
  10. package/dist/entities/boundary-view.d.ts +29 -0
  11. package/dist/entities/boundary-view.js +1 -0
  12. package/dist/entities/contracts.d.ts +77 -1
  13. package/dist/entities/contracts.js +7 -0
  14. package/dist/entities/cutout-raster.d.ts +7 -0
  15. package/dist/entities/cutout-raster.js +1 -0
  16. package/dist/entities/object-proposals.d.ts +53 -0
  17. package/dist/entities/object-proposals.js +8 -0
  18. package/dist/entities/representation.d.ts +225 -0
  19. package/dist/entities/representation.js +33 -0
  20. package/dist/entities/segmentation-metadata.d.ts +11 -0
  21. package/dist/entities/segmentation-metadata.js +1 -0
  22. package/dist/entities/segmentation-verification.d.ts +30 -0
  23. package/dist/entities/segmentation-verification.js +1 -0
  24. package/dist/entities/segmentation.d.ts +159 -0
  25. package/dist/entities/segmentation.js +5 -0
  26. package/dist/entities/whole-object.d.ts +128 -0
  27. package/dist/entities/whole-object.js +7 -0
  28. package/dist/features/choice.d.ts +1 -1
  29. package/dist/features/choice.js +2 -2
  30. package/dist/features/segmentation/box-check.d.ts +10 -0
  31. package/dist/features/segmentation/box-check.js +299 -0
  32. package/dist/features/segmentation/mask.d.ts +6 -0
  33. package/dist/features/segmentation/mask.js +89 -0
  34. package/dist/features/segmentation/packed-mask.d.ts +5 -0
  35. package/dist/features/segmentation/packed-mask.js +53 -0
  36. package/dist/index.d.ts +6 -1
  37. package/dist/infrastructure/boundary-view.d.ts +2 -0
  38. package/dist/infrastructure/boundary-view.js +263 -0
  39. package/dist/infrastructure/openrouter-common.d.ts +8 -8
  40. package/dist/infrastructure/openrouter-vision.d.ts +3 -0
  41. package/dist/infrastructure/openrouter-vision.js +5 -0
  42. package/dist/infrastructure/raster.d.ts +10 -1
  43. package/dist/infrastructure/raster.js +99 -4
  44. package/dist/infrastructure/segmentation/box-presentation.d.ts +2 -0
  45. package/dist/infrastructure/segmentation/box-presentation.js +136 -0
  46. package/dist/infrastructure/segmentation/cutout-raster.d.ts +3 -0
  47. package/dist/infrastructure/segmentation/cutout-raster.js +79 -0
  48. package/dist/infrastructure/segmentation/grabcut/index.d.ts +13 -0
  49. package/dist/infrastructure/segmentation/grabcut/index.js +118 -0
  50. package/dist/infrastructure/segmentation/grabcut/worker-inference.d.ts +47 -0
  51. package/dist/infrastructure/segmentation/grabcut/worker-inference.js +260 -0
  52. package/dist/infrastructure/segmentation/index.d.ts +2 -0
  53. package/dist/infrastructure/segmentation/index.js +2 -0
  54. package/dist/infrastructure/segmentation/mobile-sam/index.d.ts +58 -0
  55. package/dist/infrastructure/segmentation/mobile-sam/index.js +472 -0
  56. package/dist/infrastructure/segmentation/mobile-sam/worker-inference.d.ts +149 -0
  57. package/dist/infrastructure/segmentation/mobile-sam/worker-inference.js +845 -0
  58. package/dist/infrastructure/segmentation/native-child.d.ts +23 -0
  59. package/dist/infrastructure/segmentation/native-child.js +297 -0
  60. package/dist/infrastructure/segmentation/native-protocol.d.ts +923 -0
  61. package/dist/infrastructure/segmentation/native-protocol.js +242 -0
  62. package/dist/infrastructure/segmentation/native-worker.d.ts +1 -0
  63. package/dist/infrastructure/segmentation/native-worker.js +93 -0
  64. package/dist/infrastructure/segmentation/probe-backend.d.ts +1 -0
  65. package/dist/infrastructure/segmentation/probe-backend.js +31 -0
  66. package/dist/infrastructure/segmentation/proposal-presentation.d.ts +3 -0
  67. package/dist/infrastructure/segmentation/proposal-presentation.js +371 -0
  68. package/dist/infrastructure/segmentation/verify-asset.d.ts +4 -0
  69. package/dist/infrastructure/segmentation/verify-asset.js +32 -0
  70. package/dist/infrastructure/text-representation.d.ts +23 -0
  71. package/dist/infrastructure/text-representation.js +226 -0
  72. package/dist/infrastructure/vision-chat.d.ts +1 -1
  73. package/dist/infrastructure/vision-chat.js +13 -4
  74. package/dist/openai-compatible.d.ts +3 -0
  75. package/dist/openai-compatible.js +4 -0
  76. package/dist/openrouter.d.ts +2 -2
  77. package/dist/openrouter.js +1 -1
  78. package/dist/processes/boundary-state.d.ts +12 -0
  79. package/dist/processes/boundary-state.js +196 -0
  80. package/dist/processes/classify.d.ts +2 -1
  81. package/dist/processes/classify.js +21 -3
  82. package/dist/processes/extract-from-region.d.ts +19 -0
  83. package/dist/processes/extract-from-region.js +415 -0
  84. package/dist/processes/extract.d.ts +25 -0
  85. package/dist/processes/extract.js +223 -0
  86. package/dist/processes/locate.d.ts +2 -1
  87. package/dist/processes/locate.js +84 -11
  88. package/dist/processes/proposal-location.d.ts +19 -0
  89. package/dist/processes/proposal-location.js +396 -0
  90. package/dist/processes/whole-object.d.ts +7 -0
  91. package/dist/processes/whole-object.js +272 -0
  92. package/dist/segmentation.d.ts +10 -0
  93. package/dist/segmentation.js +4 -0
  94. package/dist/shared/input-budget.d.ts +7 -0
  95. package/dist/shared/input-budget.js +21 -0
  96. package/docs/0.2.0-plan.md +190 -0
  97. package/docs/README.ru.md +18 -5
  98. package/docs/acceptance.md +116 -3
  99. package/docs/api.md +8 -4
  100. package/docs/architecture.md +20 -7
  101. package/docs/benchmarks.md +10 -0
  102. package/docs/categorical-presence-port.md +26 -0
  103. package/docs/evidence/v02/baseline.json +1043 -0
  104. package/docs/evidence/v02/boundary-variants.md +17 -0
  105. package/docs/evidence/v02/box-confirmation-dev40/README.md +15 -0
  106. package/docs/evidence/v02/box-confirmation-dev40/component-refinement.json +246 -0
  107. package/docs/evidence/v02/box-confirmation-dev40/evaluation.json +1663 -0
  108. package/docs/evidence/v02/box-confirmation-dev40/provenance.json +130 -0
  109. package/docs/evidence/v02/box-confirmation-dev40/report.json +127 -0
  110. package/docs/evidence/v02/box-confirmation-dev40-freeze-20261020-v1.json +230 -0
  111. package/docs/evidence/v02/box-confirmation-method-selection-20261020-v1.json +85 -0
  112. package/docs/evidence/v02/box-heldout-cancelled-before-dispatch-20261021-v1.json +32 -0
  113. package/docs/evidence/v02/box-heldout-combined-seal-20261021-v1.json +89 -0
  114. package/docs/evidence/v02/box-heldout-evaluator-truth-seal-20261021-v1.json +61 -0
  115. package/docs/evidence/v02/box-heldout-exclusion-audit-20261020-v1.json +81 -0
  116. package/docs/evidence/v02/box-heldout-map-seal-20261021-v1.json +48 -0
  117. package/docs/evidence/v02/box-heldout-photo-seal-20261020-v1.json +62 -0
  118. package/docs/evidence/v02/box-heldout-run-freeze-20261021-v1.json +61 -0
  119. package/docs/evidence/v02/box-heldout-source-review-20261020-v1.json +134 -0
  120. package/docs/evidence/v02/box-heldout-ui-seal-20261020-v1.json +44 -0
  121. package/docs/evidence/v02/calculator-proof-root-review-20261020-v1.json +63 -0
  122. package/docs/evidence/v02/categorical-dev40-freeze.json +94 -0
  123. package/docs/evidence/v02/categorical-dev40-preserve.json +460 -0
  124. package/docs/evidence/v02/categorical-dev40-target-only.json +460 -0
  125. package/docs/evidence/v02/categorical-heldout-admission-20261020-v3.json +215 -0
  126. package/docs/evidence/v02/categorical-heldout-admission-20261020-v4.json +270 -0
  127. package/docs/evidence/v02/categorical-heldout-dispatch-authorization-20261020-v4.json +79 -0
  128. package/docs/evidence/v02/categorical-heldout-predispatch-20261020-v3.json +57 -0
  129. package/docs/evidence/v02/categorical-heldout-producer-source-map-v4.json +262 -0
  130. package/docs/evidence/v02/categorical-heldout-producer-source-map.json +263 -0
  131. package/docs/evidence/v02/categorical-heldout-run-freeze-20261020-v3.json +35 -0
  132. package/docs/evidence/v02/categorical-heldout-run-freeze-20261020-v4.json +35 -0
  133. package/docs/evidence/v02/categorical-heldout-v4/README.md +35 -0
  134. package/docs/evidence/v02/categorical-heldout-v4/candidate-evaluation.json +2812 -0
  135. package/docs/evidence/v02/categorical-heldout-v4/candidate-physical-receipts.json +15261 -0
  136. package/docs/evidence/v02/categorical-heldout-v4/candidate-provenance.json +131 -0
  137. package/docs/evidence/v02/categorical-heldout-v4/control-evaluation.json +855 -0
  138. package/docs/evidence/v02/categorical-heldout-v4/control-physical-receipts.json +4402 -0
  139. package/docs/evidence/v02/categorical-heldout-v4/control-provenance.json +31 -0
  140. package/docs/evidence/v02/categorical-heldout-v4/mask-normalized-exploratory.json +682 -0
  141. package/docs/evidence/v02/categorical-heldout-v4/paired-qualification.json +21 -0
  142. package/docs/evidence/v02/categorical-heldout-v4/report.json +258 -0
  143. package/docs/evidence/v02/categorical-presence-dev6.json +144 -0
  144. package/docs/evidence/v02/categorical-presence-dev6.md +18 -0
  145. package/docs/evidence/v02/categorical-vision-method-selection.json +90 -0
  146. package/docs/evidence/v02/checked-region-component-v1/README.md +7 -0
  147. package/docs/evidence/v02/checked-region-component-v1/evidence.json +311 -0
  148. package/docs/evidence/v02/checked-region-resource-interrupted-2b0d09f.json +102 -0
  149. package/docs/evidence/v02/checked-region-segmentation-resource-4df544c-receipt.json +167 -0
  150. package/docs/evidence/v02/checked-region-segmentation-resource-4df544c-root-review.json +58 -0
  151. package/docs/evidence/v02/checked-region-segmentation-resource-987ac32-receipt.json +158 -0
  152. package/docs/evidence/v02/ci-012b935.json +17 -0
  153. package/docs/evidence/v02/ci-0c365cb.json +372 -0
  154. package/docs/evidence/v02/ci-185bde8.json +32 -0
  155. package/docs/evidence/v02/ci-24f849f.json +95 -0
  156. package/docs/evidence/v02/ci-25c19cd.json +375 -0
  157. package/docs/evidence/v02/ci-2922caf.json +375 -0
  158. package/docs/evidence/v02/ci-29357d7.json +29 -0
  159. package/docs/evidence/v02/ci-32aa90d.json +24 -0
  160. package/docs/evidence/v02/ci-35e3064.json +376 -0
  161. package/docs/evidence/v02/ci-4331b1b.json +384 -0
  162. package/docs/evidence/v02/ci-43b7426.json +376 -0
  163. package/docs/evidence/v02/ci-450439c.json +373 -0
  164. package/docs/evidence/v02/ci-46283fe.json +29 -0
  165. package/docs/evidence/v02/ci-4c9c09f.json +34 -0
  166. package/docs/evidence/v02/ci-5579646.json +27 -0
  167. package/docs/evidence/v02/ci-6f9cc15.json +127 -0
  168. package/docs/evidence/v02/ci-7c1051f.json +27 -0
  169. package/docs/evidence/v02/ci-9837888.json +34 -0
  170. package/docs/evidence/v02/ci-987ac32.json +29 -0
  171. package/docs/evidence/v02/ci-9d00fe5.json +25 -0
  172. package/docs/evidence/v02/ci-9f85acc.json +127 -0
  173. package/docs/evidence/v02/ci-be275a6.json +201 -0
  174. package/docs/evidence/v02/ci-c107ddf.json +372 -0
  175. package/docs/evidence/v02/ci-c35f67d.json +127 -0
  176. package/docs/evidence/v02/ci-c5eddd8.json +32 -0
  177. package/docs/evidence/v02/ci-d2042e0.json +372 -0
  178. package/docs/evidence/v02/ci-d684259.json +375 -0
  179. package/docs/evidence/v02/ci-e0c190b.json +127 -0
  180. package/docs/evidence/v02/ci-e551253.json +372 -0
  181. package/docs/evidence/v02/ci-f9d4633.json +29 -0
  182. package/docs/evidence/v02/dev1-proposal-evaluation.md +13 -0
  183. package/docs/evidence/v02/dev2-mobile-sam-proposal-oracle.md +21 -0
  184. package/docs/evidence/v02/dev2-proposal-evaluation.md +21 -0
  185. package/docs/evidence/v02/fresh-development.md +16 -0
  186. package/docs/evidence/v02/fresh-native-numeric/artifact-hashes.json +9 -0
  187. package/docs/evidence/v02/fresh-native-numeric/evaluation-root-v1.json +568 -0
  188. package/docs/evidence/v02/fresh-native-numeric/run-manifest.json +342 -0
  189. package/docs/evidence/v02/fresh-native-numeric/summary.json +5654 -0
  190. package/docs/evidence/v02/fresh-native-outline-axis/artifact-hashes.json +9 -0
  191. package/docs/evidence/v02/fresh-native-outline-axis/evaluation-root-v1.json +568 -0
  192. package/docs/evidence/v02/fresh-native-outline-axis/run-manifest.json +378 -0
  193. package/docs/evidence/v02/fresh-native-outline-axis/summary.json +5605 -0
  194. package/docs/evidence/v02/fresh-text/README.md +23 -0
  195. package/docs/evidence/v02/fresh-text/ascii-contours-v1/classify-followup-run-manifest.json +405 -0
  196. package/docs/evidence/v02/fresh-text/ascii-contours-v1/classify-followup-summary.json +1646 -0
  197. package/docs/evidence/v02/fresh-text/ascii-contours-v1/evaluation.json +568 -0
  198. package/docs/evidence/v02/fresh-text/ascii-contours-v1/original-run-manifest.json +404 -0
  199. package/docs/evidence/v02/fresh-text/ascii-contours-v1/original-summary.json +4416 -0
  200. package/docs/evidence/v02/fresh-text/ascii-luma-v1/classify-followup-run-manifest.json +405 -0
  201. package/docs/evidence/v02/fresh-text/ascii-luma-v1/classify-followup-summary.json +1646 -0
  202. package/docs/evidence/v02/fresh-text/ascii-luma-v1/evaluation.json +568 -0
  203. package/docs/evidence/v02/fresh-text/ascii-luma-v1/original-run-manifest.json +404 -0
  204. package/docs/evidence/v02/fresh-text/ascii-luma-v1/original-summary.json +4647 -0
  205. package/docs/evidence/v02/fresh-text/ascii-svg-layered-v1/classify-followup-run-manifest.json +405 -0
  206. package/docs/evidence/v02/fresh-text/ascii-svg-layered-v1/classify-followup-summary.json +846 -0
  207. package/docs/evidence/v02/fresh-text/ascii-svg-layered-v1/evaluation.json +568 -0
  208. package/docs/evidence/v02/fresh-text/ascii-svg-layered-v1/original-run-manifest.json +404 -0
  209. package/docs/evidence/v02/fresh-text/ascii-svg-layered-v1/original-summary.json +1789 -0
  210. package/docs/evidence/v02/fresh-text/no-image-control/evaluation.json +568 -0
  211. package/docs/evidence/v02/fresh-text/no-image-control/original-run-manifest.json +404 -0
  212. package/docs/evidence/v02/fresh-text/no-image-control/original-summary.json +3953 -0
  213. package/docs/evidence/v02/fresh-text/palette-grid-v1/classify-followup-run-manifest.json +405 -0
  214. package/docs/evidence/v02/fresh-text/palette-grid-v1/classify-followup-summary.json +1646 -0
  215. package/docs/evidence/v02/fresh-text/palette-grid-v1/evaluation.json +568 -0
  216. package/docs/evidence/v02/fresh-text/palette-grid-v1/original-run-manifest.json +404 -0
  217. package/docs/evidence/v02/fresh-text/palette-grid-v1/original-summary.json +3974 -0
  218. package/docs/evidence/v02/fresh-text/pixel-rle-v1/classify-followup-run-manifest.json +405 -0
  219. package/docs/evidence/v02/fresh-text/pixel-rle-v1/classify-followup-summary.json +1646 -0
  220. package/docs/evidence/v02/fresh-text/pixel-rle-v1/evaluation.json +568 -0
  221. package/docs/evidence/v02/fresh-text/pixel-rle-v1/original-run-manifest.json +404 -0
  222. package/docs/evidence/v02/fresh-text/pixel-rle-v1/original-summary.json +4945 -0
  223. package/docs/evidence/v02/fresh-text/report.json +284 -0
  224. package/docs/evidence/v02/fresh-text/svg-contours-v1/classify-followup-run-manifest.json +405 -0
  225. package/docs/evidence/v02/fresh-text/svg-contours-v1/classify-followup-summary.json +846 -0
  226. package/docs/evidence/v02/fresh-text/svg-contours-v1/evaluation.json +568 -0
  227. package/docs/evidence/v02/fresh-text/svg-contours-v1/original-run-manifest.json +404 -0
  228. package/docs/evidence/v02/fresh-text/svg-contours-v1/original-summary.json +2189 -0
  229. package/docs/evidence/v02/heldout-evaluation-20261020.md +37 -0
  230. package/docs/evidence/v02/heldout-input-derivation.md +18 -0
  231. package/docs/evidence/v02/integration-0c365cb.json +90 -0
  232. package/docs/evidence/v02/integration-25c19cd.json +52 -0
  233. package/docs/evidence/v02/integration-35e3064.json +41 -0
  234. package/docs/evidence/v02/integration-4331b1b.json +42 -0
  235. package/docs/evidence/v02/integration-4c9c09f.json +46 -0
  236. package/docs/evidence/v02/integration-8010aad.json +48 -0
  237. package/docs/evidence/v02/integration-c1aa640.json +41 -0
  238. package/docs/evidence/v02/integration-eea1790.json +46 -0
  239. package/docs/evidence/v02/integration-fa82e65.json +42 -0
  240. package/docs/evidence/v02/jpeg-transport-offline.json +268 -0
  241. package/docs/evidence/v02/jpeg-transport-offline.md +7 -0
  242. package/docs/evidence/v02/local-archive-cleanup.json +59 -0
  243. package/docs/evidence/v02/native-base64-after.json +30 -0
  244. package/docs/evidence/v02/native-base64-before.json +32 -0
  245. package/docs/evidence/v02/native-checked-region-windows-46283fe.json +248 -0
  246. package/docs/evidence/v02/native-checked-region-windows-987ac32.json +141 -0
  247. package/docs/evidence/v02/native-grabcut-windows-4c494a3-run2.json +148 -0
  248. package/docs/evidence/v02/native-grabcut-windows-4c494a3-run3.json +148 -0
  249. package/docs/evidence/v02/native-grabcut-windows-4c494a3.json +56 -0
  250. package/docs/evidence/v02/native-proposal-windows-0c365cb.json +148 -0
  251. package/docs/evidence/v02/native-proposal-windows-450439c.json +156 -0
  252. package/docs/evidence/v02/native-proposal-windows-4c9c09f-retry1.json +147 -0
  253. package/docs/evidence/v02/native-proposal-windows-4c9c09f.json +52 -0
  254. package/docs/evidence/v02/native-region-windows-efc9318.json +163 -0
  255. package/docs/evidence/v02/native-windows-eea1790-baseline.json +198 -0
  256. package/docs/evidence/v02/native-windows-eea1790.json +228 -0
  257. package/docs/evidence/v02/ordinary-luna-axis/run-manifest.json +99 -0
  258. package/docs/evidence/v02/ordinary-luna-axis/summary.json +811 -0
  259. package/docs/evidence/v02/owned-temp-cleanup-20261020-v1.json +28 -0
  260. package/docs/evidence/v02/presentation-paired-20261020.json +1438 -0
  261. package/docs/evidence/v02/proposal-resource-soak-261dc23.json +201 -0
  262. package/docs/evidence/v02/proposal-resource-soak-261dc23.md +15 -0
  263. package/docs/evidence/v02/proposal-resource-soak-450439c-receipt.md +13 -0
  264. package/docs/evidence/v02/reconstructed-c03-box.json +41 -0
  265. package/docs/evidence/v02/region-seeded-dev-v1/README.md +17 -0
  266. package/docs/evidence/v02/region-seeded-dev-v1/evaluation.json +260 -0
  267. package/docs/evidence/v02/region-seeded-dev-v2/README.md +15 -0
  268. package/docs/evidence/v02/region-seeded-dev-v2/evaluation.json +232 -0
  269. package/docs/evidence/v02/region-seeded-dev-v3-candidate-only/README.md +9 -0
  270. package/docs/evidence/v02/region-seeded-dev-v3-candidate-only/control-identity-failure.json +22 -0
  271. package/docs/evidence/v02/region-seeded-dev-v3-candidate-only/evaluation.json +160 -0
  272. package/docs/evidence/v02/region-seeded-dev-v3-control-r2/README.md +9 -0
  273. package/docs/evidence/v02/region-seeded-dev-v3-control-r2/attempt-accounting.json +55 -0
  274. package/docs/evidence/v02/region-seeded-dev-v3-control-r2/evaluation.json +136 -0
  275. package/docs/evidence/v02/region-seeded-development-control-r2-freeze-20261021.json +132 -0
  276. package/docs/evidence/v02/region-seeded-development-freeze-20261021-v1.json +167 -0
  277. package/docs/evidence/v02/region-seeded-development-freeze-20261021-v2.json +186 -0
  278. package/docs/evidence/v02/region-seeded-development-freeze-20261021-v3.json +205 -0
  279. package/docs/evidence/v02/region-seeded-heldout-cancelled-before-dispatch-20261021-v2.json +20 -0
  280. package/docs/evidence/v02/region-seeded-heldout-dispatch-authorization-20261021-v3.json +47 -0
  281. package/docs/evidence/v02/region-seeded-heldout-readiness-audit-20261021-v3.json +125 -0
  282. package/docs/evidence/v02/region-seeded-heldout-run-freeze-20261021-v2.json +234 -0
  283. package/docs/evidence/v02/region-seeded-heldout-run-freeze-20261021-v3.json +357 -0
  284. package/docs/evidence/v02/region-seeded-heldout-v3/README.md +19 -0
  285. package/docs/evidence/v02/region-seeded-heldout-v3/evaluation-summary.json +445 -0
  286. package/docs/evidence/v02/region-seeded-method-selection-20261021-v2.json +66 -0
  287. package/docs/evidence/v02/region-seeded-method-selection-20261021-v3.json +120 -0
  288. package/docs/evidence/v02/region-segmentation-resource-0ba4c87-receipt.json +156 -0
  289. package/docs/evidence/v02/resource-soak-linux-8010aad.json +125 -0
  290. package/docs/evidence/v02/screen-v2-terminal-evaluation.md +22 -0
  291. package/docs/evidence/v02/seed-outline/run-manifest.json +59 -0
  292. package/docs/evidence/v02/seed-outline/summary.json +487 -0
  293. package/docs/evidence/v02/seed-unbounded/run-manifest.json +80 -0
  294. package/docs/evidence/v02/seed-unbounded/summary.json +730 -0
  295. package/docs/evidence/v02/segmentation/README.md +21 -0
  296. package/docs/evidence/v02/segmentation/component-comparison-summary.json +240 -0
  297. package/docs/evidence/v02/segmentation/provenance/MOBILE-SAM-LICENSE.txt +201 -0
  298. package/docs/evidence/v02/segmentation/provenance/OPENCV-LICENSE.txt +202 -0
  299. package/docs/evidence/v02/segmentation/provenance/mobile-sam-download-receipt.json +29 -0
  300. package/docs/evidence/v02/segmentation/provenance/mobile-sam-graph-audit.json +214 -0
  301. package/docs/evidence/v02/segmentation/provenance/mobile-sam-model-metadata.json +166 -0
  302. package/docs/evidence/v02/split-choice-noul-dev6.json +72 -0
  303. package/docs/evidence/v02/split-choice-noul-dev6.md +11 -0
  304. package/docs/evidence/v02/supported-vision-screen-20261020.md +65 -0
  305. package/docs/evidence/v02/wesnoth-1.16.11-minimap-projection-source-audit.md +56 -0
  306. package/docs/evidence/v02/wesnoth-proof-root-review-20261020-v1.json +76 -0
  307. package/docs/operations.md +6 -0
  308. package/docs/plan.md +2 -0
  309. package/docs/publishing.md +10 -1
  310. package/docs/research/text-transport-audit.md +66 -0
  311. package/docs/v02-usage.md +162 -0
  312. package/docs/vision-results.md +29 -2
  313. package/package.json +30 -5
@@ -0,0 +1,268 @@
1
+ {
2
+ "profile": {
3
+ "id": "opaque-jpeg-if-smaller-v1",
4
+ "quality": 92,
5
+ "chromaSubsampling": "4:4:4",
6
+ "maximumImages": 9,
7
+ "maximumInputBytes": 67108864,
8
+ "resize": false,
9
+ "transparentImages": "preserve-original-png"
10
+ },
11
+ "scope": "offline full-image byte audit only; no provider requests and no quality/latency qualification",
12
+ "createdAt": "2026-10-20T10:14:05.380Z",
13
+ "physicalCalls": 0,
14
+ "records": [
15
+ {
16
+ "sourceSha256": "71e781adb0c2d47d97e6fd5868e6dbe4de8c1375536e1753f897931ff90575dc",
17
+ "pngSha256": "b1ceabe6b1ba1b60f9fd28e4ac0fde4d60cf201f61449ba686abecd2ae0974a6",
18
+ "stateIndex": 0,
19
+ "width": 1024,
20
+ "height": 768,
21
+ "inputBytes": 1759041,
22
+ "outputBytes": 177170,
23
+ "outputFormat": "jpeg",
24
+ "reason": "smaller-opaque-jpeg",
25
+ "preparationMs": 64.90445599999998
26
+ },
27
+ {
28
+ "sourceSha256": "a27d93b12fadd550899a1d1d8ce70d34ba3c692affebf09134eda838910fcab5",
29
+ "pngSha256": "8dab6407ea04e0c8550ba77a0ad0a9c224d440552ed26eea3c62e594252f735a",
30
+ "stateIndex": 0,
31
+ "width": 1024,
32
+ "height": 717,
33
+ "inputBytes": 1307361,
34
+ "outputBytes": 137457,
35
+ "outputFormat": "jpeg",
36
+ "reason": "smaller-opaque-jpeg",
37
+ "preparationMs": 47.700582999999995
38
+ },
39
+ {
40
+ "sourceSha256": "e20c5e6f6a9334aca94289a99a56f3c0ee7cb8de8f5e00eff886cf772600250c",
41
+ "pngSha256": "c8789d3cb8254717b904bb0b22cc91f39565a77e70d671c427e28358d6747faf",
42
+ "stateIndex": 0,
43
+ "width": 1024,
44
+ "height": 683,
45
+ "inputBytes": 1606302,
46
+ "outputBytes": 178604,
47
+ "outputFormat": "jpeg",
48
+ "reason": "smaller-opaque-jpeg",
49
+ "preparationMs": 54.036272
50
+ },
51
+ {
52
+ "sourceSha256": "66fe4e85ef638a2f28d5a2e7472ccebe46d2c8446304db73659d8af37f0d489c",
53
+ "pngSha256": "d54d272dfcf9d8494908248b0765504d1814732239dd42a2046ea5125b2886ce",
54
+ "stateIndex": 0,
55
+ "width": 1024,
56
+ "height": 687,
57
+ "inputBytes": 1822026,
58
+ "outputBytes": 255801,
59
+ "outputFormat": "jpeg",
60
+ "reason": "smaller-opaque-jpeg",
61
+ "preparationMs": 55.59389599999997
62
+ },
63
+ {
64
+ "sourceSha256": "71b99532e14abb6098a704e9bd9c2c50eebba72588a49e60c8a4b89af4eea4c5",
65
+ "pngSha256": "2b4e24c2c044e534de12f50aef464ccf278114cd2b72e6353b845cc614854755",
66
+ "stateIndex": 0,
67
+ "width": 1024,
68
+ "height": 683,
69
+ "inputBytes": 1506119,
70
+ "outputBytes": 211874,
71
+ "outputFormat": "jpeg",
72
+ "reason": "smaller-opaque-jpeg",
73
+ "preparationMs": 49.942634
74
+ },
75
+ {
76
+ "sourceSha256": "ad0eb4bf4a6c2c1be585846a943aa06ec2440696b7e8874374904eb25dcc594a",
77
+ "pngSha256": "8f08105d495d178a26c738e1a94a567bbbdc463a4efd66e20912ce2322ffd119",
78
+ "stateIndex": 0,
79
+ "width": 1024,
80
+ "height": 683,
81
+ "inputBytes": 1779958,
82
+ "outputBytes": 230595,
83
+ "outputFormat": "jpeg",
84
+ "reason": "smaller-opaque-jpeg",
85
+ "preparationMs": 53.31837900000005
86
+ },
87
+ {
88
+ "sourceSha256": "16cae5fc9b21c562a005d7e1a00809ea90e4b143ee13614aefffa75fb113e044",
89
+ "pngSha256": "0c5169205963708794d5dda485b1b3f938982cc68d36bf0832654e5803eb2718",
90
+ "stateIndex": 0,
91
+ "width": 1024,
92
+ "height": 680,
93
+ "inputBytes": 1778539,
94
+ "outputBytes": 304218,
95
+ "outputFormat": "jpeg",
96
+ "reason": "smaller-opaque-jpeg",
97
+ "preparationMs": 52.959182000000055
98
+ },
99
+ {
100
+ "sourceSha256": "74b944d3b7d88a046d01f2d813c88e8a6415296db938a343a83d86048f4c3a4f",
101
+ "pngSha256": "c1b8130135f9057200fe5d7c405a47feef3c0204655605d732ab4805f0c0ea8f",
102
+ "stateIndex": 0,
103
+ "width": 1024,
104
+ "height": 683,
105
+ "inputBytes": 1384510,
106
+ "outputBytes": 181408,
107
+ "outputFormat": "jpeg",
108
+ "reason": "smaller-opaque-jpeg",
109
+ "preparationMs": 48.92038600000001
110
+ },
111
+ {
112
+ "sourceSha256": "6710905e971316f4b0d0fe1535eb64702807bc4c041bc161ea1ce1208eff5a0f",
113
+ "pngSha256": "2d0c076acc76b5e6625c8482877c91fe373ea5b175f591393c003026bf732744",
114
+ "stateIndex": 0,
115
+ "width": 1024,
116
+ "height": 768,
117
+ "inputBytes": 1879796,
118
+ "outputBytes": 391039,
119
+ "outputFormat": "jpeg",
120
+ "reason": "smaller-opaque-jpeg",
121
+ "preparationMs": 60.89386100000013
122
+ },
123
+ {
124
+ "sourceSha256": "f118352c4bfeb65b0a2dae153428ce0f802a01a232d45d0be4b0a7176bfaa342",
125
+ "pngSha256": "bc85b56c0a104916c5327bd089105adbb9d27b989b92fdc965663a4af07d71e6",
126
+ "stateIndex": 0,
127
+ "width": 1024,
128
+ "height": 683,
129
+ "inputBytes": 1353853,
130
+ "outputBytes": 232529,
131
+ "outputFormat": "jpeg",
132
+ "reason": "smaller-opaque-jpeg",
133
+ "preparationMs": 57.87061700000004
134
+ },
135
+ {
136
+ "sourceSha256": "07ab595c6482338b5982d61ac175450295be81338e9c641b218d7794b658249e",
137
+ "pngSha256": "4e76fa8042de8dac4d0e0e3f314a0887beada88e5cdb516a384e3ca45c6389c3",
138
+ "stateIndex": 0,
139
+ "width": 1024,
140
+ "height": 678,
141
+ "inputBytes": 1510081,
142
+ "outputBytes": 249923,
143
+ "outputFormat": "jpeg",
144
+ "reason": "smaller-opaque-jpeg",
145
+ "preparationMs": 54.8257329999999
146
+ },
147
+ {
148
+ "sourceSha256": "65c38939211e8ae0d98e7d01fd3bc8d159fe8b96969940a169e82556071059c8",
149
+ "pngSha256": "dd2f9ed758b3a11b7fe474cf2a06bf808d9d6b6b5b2964a875cc4bddb72495ab",
150
+ "stateIndex": 0,
151
+ "width": 1024,
152
+ "height": 768,
153
+ "inputBytes": 1655891,
154
+ "outputBytes": 236701,
155
+ "outputFormat": "jpeg",
156
+ "reason": "smaller-opaque-jpeg",
157
+ "preparationMs": 56.17502599999989
158
+ },
159
+ {
160
+ "sourceSha256": "750f09aeeb5d1113088eedaf47f201f0837ad64720f836a69fec9ed3e4f1e5a7",
161
+ "pngSha256": "fa181a999b8128c8f534375dda34829ff107f4b468f4bd4245b6957b5411cd8c",
162
+ "stateIndex": 0,
163
+ "width": 1024,
164
+ "height": 681,
165
+ "inputBytes": 868047,
166
+ "outputBytes": 100948,
167
+ "outputFormat": "jpeg",
168
+ "reason": "smaller-opaque-jpeg",
169
+ "preparationMs": 39.31503899999984
170
+ },
171
+ {
172
+ "sourceSha256": "77681ffeb78a27bb0d59111acb638254948ece8115f6e5f6d1438b50c319c4d1",
173
+ "pngSha256": "fe6ad4a0dd9907ba7708c9296b71dd70dc2ba8cdc2eaa2c6db94fcf3aa66423a",
174
+ "stateIndex": 0,
175
+ "width": 1024,
176
+ "height": 682,
177
+ "inputBytes": 1075464,
178
+ "outputBytes": 173258,
179
+ "outputFormat": "jpeg",
180
+ "reason": "smaller-opaque-jpeg",
181
+ "preparationMs": 48.315607
182
+ },
183
+ {
184
+ "sourceSha256": "a0a80df65932f8cb7cf7367305372c04aa37f1991436e4f1cb7828c9138f708e",
185
+ "pngSha256": "941e37e0c975ef788e2f4373bd140eb6aca3dd3d0187d47053745894bffd17b7",
186
+ "stateIndex": 0,
187
+ "width": 1024,
188
+ "height": 768,
189
+ "inputBytes": 1087218,
190
+ "outputBytes": 134013,
191
+ "outputFormat": "jpeg",
192
+ "reason": "smaller-opaque-jpeg",
193
+ "preparationMs": 46.669137999999975
194
+ },
195
+ {
196
+ "sourceSha256": "4a0dffd0f9f85bacac77d4f372c1f3eb754ba6a7440de3bc7c7f6a42f4c53ecd",
197
+ "pngSha256": "f958168bef0624884738358568398cffc3ce49061f1c0a0df149255d020404d4",
198
+ "stateIndex": 0,
199
+ "width": 1024,
200
+ "height": 768,
201
+ "inputBytes": 1634706,
202
+ "outputBytes": 170000,
203
+ "outputFormat": "jpeg",
204
+ "reason": "smaller-opaque-jpeg",
205
+ "preparationMs": 51.84339499999987
206
+ },
207
+ {
208
+ "sourceSha256": "604b8fa9c30881acee7c67d078bb7d08f846aeac6152dc1bf23a41ddefe45988",
209
+ "pngSha256": "31f967be4ac01ac7efa1e2a109ac626bcd2e0d358d79db113a895e3053e5a35f",
210
+ "stateIndex": 0,
211
+ "width": 1024,
212
+ "height": 721,
213
+ "inputBytes": 235848,
214
+ "outputBytes": 65277,
215
+ "outputFormat": "jpeg",
216
+ "reason": "smaller-opaque-jpeg",
217
+ "preparationMs": 39.180341
218
+ },
219
+ {
220
+ "sourceSha256": "8bcbc695bc113f645bb66dd2e03615764cd37d80e5794d8f9ffc79f1e364e077",
221
+ "pngSha256": "06410690f4a4dc4be8101baffef7be8609ecfdb7e927816e572386cbc70c6f4e",
222
+ "stateIndex": 0,
223
+ "width": 1024,
224
+ "height": 683,
225
+ "inputBytes": 1845729,
226
+ "outputBytes": 227546,
227
+ "outputFormat": "jpeg",
228
+ "reason": "smaller-opaque-jpeg",
229
+ "preparationMs": 50.68842100000006
230
+ },
231
+ {
232
+ "sourceSha256": "f8c2cc736fd7941bf2bc51c73147aeec96deba4b22e6948fe088a2d9121c51a6",
233
+ "pngSha256": "d666ce6e92bc5981aaf5a60efd278135b5f3fa91b10eb7d4e3d17af42b9d6501",
234
+ "stateIndex": 0,
235
+ "width": 816,
236
+ "height": 1024,
237
+ "inputBytes": 2113573,
238
+ "outputBytes": 244455,
239
+ "outputFormat": "jpeg",
240
+ "reason": "smaller-opaque-jpeg",
241
+ "preparationMs": 60.71668399999999
242
+ },
243
+ {
244
+ "sourceSha256": "085ac7dc3243e28816e69f5e1ad56b9e8858c7135fac366f3172ad862e28eeae",
245
+ "pngSha256": "c0dca7552df29912a861c4d64aafa1df66b9530411b34e0f0a28668f44a05000",
246
+ "stateIndex": 0,
247
+ "width": 1024,
248
+ "height": 683,
249
+ "inputBytes": 1255275,
250
+ "outputBytes": 196937,
251
+ "outputFormat": "jpeg",
252
+ "reason": "smaller-opaque-jpeg",
253
+ "preparationMs": 53.799770999999964
254
+ },
255
+ {
256
+ "sourceSha256": "0f9fc1eee9473f8ecf03a61e9dc7fccf369e1bc58feb9d0671165b16eded1a09",
257
+ "pngSha256": "711e7f133f87e87dc7580c895334ec26f208c77a0d1b35791d7f60f79c00a3b3",
258
+ "stateIndex": 0,
259
+ "width": 1280,
260
+ "height": 800,
261
+ "inputBytes": 42093,
262
+ "outputBytes": 42093,
263
+ "outputFormat": "png",
264
+ "reason": "smaller-lossless-png",
265
+ "preparationMs": 40.78694200000018
266
+ }
267
+ ]
268
+ }
@@ -0,0 +1,7 @@
1
+ # Optional JPEG transport experiment
2
+
3
+ `opaque-jpeg-if-smaller-v1` is a research-only request transformation. It recompresses opaque PNG views as quality-92 JPEG with 4:4:4 chroma, without resizing or changing any coordinate metadata, question or closed candidate. Transparent PNGs, oriented PNGs whose transform is not baked in, and PNGs already smaller than JPEG remain byte-identical. At most nine images and 64 MiB aggregate decoded input are admitted; per-image library limits still apply. No semantic object analysis is involved.
4
+
5
+ An offline audit on the twenty licensed development photos and the controlled Geany screenshot found 29,501,430 PNG bytes versus 4,141,846 selected transport bytes across 21 distinct source images. Preparation took approximately 1.09 seconds total on this host while the native soak was running. These figures describe original full-image views, not complete multi-view requests or provider timings. There were zero model requests. They do not establish unchanged visual accuracy or a latency improvement; a separately frozen paired model comparison is required before promotion.
6
+
7
+ The exact per-image hashes, sizes and timings are retained in the [numeric report](jpeg-transport-offline.json). This helper is excluded from npm's runtime exports and does not alter the public default.
@@ -0,0 +1,59 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "scope": "completed v0.1 local public-corpus raw runs; immutable gzip archives kept locally, never bundled into npm",
4
+ "profiles": [
5
+ {
6
+ "profile": "decisions-completion-v1",
7
+ "status": "archived-byte-verified-original-purged",
8
+ "members": 244,
9
+ "originalBytes": 83619116,
10
+ "archiveBytes": 63081235,
11
+ "archiveSha256": "ab01014181cf4a703eabdb01575ba90161d84ee379a5f374a9e2aa891ea7863b",
12
+ "manifestSha256": "9d5b7099c3dae65c1a6978a26f201ce2003707eecd78330f170ae2d959bc65e9",
13
+ "elapsedSeconds": 2.295099973678589,
14
+ "restoreCommand": "tar -xzf .run/archive/v01/decisions-completion-v1.tar.gz -C .run",
15
+ "scope": "completed v0.1 local public-corpus runs; no current v0.2 inputs altered"
16
+ },
17
+ {
18
+ "profile": "decisions-selection-v1",
19
+ "status": "archived-byte-verified-original-purged",
20
+ "members": 262,
21
+ "originalBytes": 197849519,
22
+ "archiveBytes": 149422000,
23
+ "archiveSha256": "96308f21b92a5c696c0e27b4aa17cbfe540c08d25a405c2bba006419487d5e40",
24
+ "manifestSha256": "689105bc49db8fb3fd0b747ec1e0d2db548a4de9b3ae9fdc3aac0a5835679d67",
25
+ "elapsedSeconds": 5.277841329574585,
26
+ "restoreCommand": "tar -xzf .run/archive/v01/decisions-selection-v1.tar.gz -C .run",
27
+ "scope": "completed v0.1 local public-corpus runs; no current v0.2 inputs altered"
28
+ },
29
+ {
30
+ "profile": "live-v1",
31
+ "status": "archived-byte-verified-original-purged",
32
+ "members": 1004,
33
+ "originalBytes": 1011651069,
34
+ "archiveBytes": 782516901,
35
+ "archiveSha256": "c823bc7e84a9db9a2d2bf16049ce446a510d75498867db157d27a5bd861a4e67",
36
+ "manifestSha256": "9b9b123695793519f5973602f07771b51643763e36862a563526013c8b4e9dfc",
37
+ "elapsedSeconds": 29.739623546600342,
38
+ "restoreCommand": "tar -xzf .run/archive/v01/live-v1.tar.gz -C .run",
39
+ "scope": "completed v0.1 local public-corpus runs; no current v0.2 inputs altered"
40
+ },
41
+ {
42
+ "profile": "vision-selection-v1",
43
+ "status": "archived-byte-verified-original-purged",
44
+ "members": 983,
45
+ "originalBytes": 533416739,
46
+ "archiveBytes": 402668243,
47
+ "archiveSha256": "dbbc78532076ea5c9d8b2c8e46867bee48807090aca1eb6b7940e803bde3bf2f",
48
+ "manifestSha256": "71a4974918b02265f7e650e9d59c1d1dc93aff79198c28fa8fa2575994417429",
49
+ "elapsedSeconds": 14.500654697418213,
50
+ "restoreCommand": "tar -xzf .run/archive/v01/vision-selection-v1.tar.gz -C .run",
51
+ "scope": "completed v0.1 local public-corpus runs; no current v0.2 inputs altered"
52
+ }
53
+ ],
54
+ "originalBytes": 1826536443,
55
+ "archiveBytes": 1397688379,
56
+ "savedBytes": 428848064,
57
+ "validation": "Every archive member was compared bytewise by SHA256 against unchanged source inventory before the original directory was atomically quarantined and purged. Per-member SHA256 manifests and restoration commands are kept beside archives.",
58
+ "concurrency": "Archival occurred during the new source resource run warmup; route-screen latency is unranked."
59
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "kind": "offline-native-protocol-base64-stack-reproduction",
3
+ "revision": "fd2cd53c0f9aeec6000fd4cd5cf09b03b6c20d55",
4
+ "source": "src/infrastructure/segmentation/native-protocol.ts",
5
+ "sourceSha256": "b79299afb9b3951db524675f2b69b0faaf77fbb94efc6a826ba820e728bf1a30",
6
+ "node": "v24.12.0",
7
+ "platform": "linux",
8
+ "arch": "x64",
9
+ "modelCalls": 0,
10
+ "nativeChildren": 0,
11
+ "assetFilesOpened": 0,
12
+ "cases": [
13
+ {
14
+ "width": 640,
15
+ "height": 480,
16
+ "rawBytes": 1228800,
17
+ "base64Chars": 1638400,
18
+ "outcome": "accepted",
19
+ "durationMs": 5.256616000000008
20
+ },
21
+ {
22
+ "width": 1280,
23
+ "height": 800,
24
+ "rawBytes": 4096000,
25
+ "base64Chars": 5461336,
26
+ "outcome": "accepted",
27
+ "durationMs": 11.648692000000011
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "kind": "offline-native-protocol-base64-stack-reproduction",
3
+ "revision": "bbf46a0fb7bc921bd17a25b9480f8ff40a648188",
4
+ "source": "src/infrastructure/segmentation/native-protocol.ts",
5
+ "sourceSha256": "fda35ec675b1d5c1c1bccd7b00f2a02aea04efb90717be9e7d9e46521b964609",
6
+ "node": "v24.12.0",
7
+ "platform": "linux",
8
+ "arch": "x64",
9
+ "modelCalls": 0,
10
+ "nativeChildren": 0,
11
+ "assetFilesOpened": 0,
12
+ "cases": [
13
+ {
14
+ "width": 640,
15
+ "height": 480,
16
+ "rawBytes": 1228800,
17
+ "base64Chars": 1638400,
18
+ "outcome": "accepted",
19
+ "durationMs": 32.666562
20
+ },
21
+ {
22
+ "width": 1280,
23
+ "height": 800,
24
+ "rawBytes": 4096000,
25
+ "base64Chars": 5461336,
26
+ "outcome": "unexpected-throw",
27
+ "errorName": "RangeError",
28
+ "errorMessage": "Maximum call stack size exceeded",
29
+ "durationMs": 80.84951900000002
30
+ }
31
+ ]
32
+ }
@@ -0,0 +1,248 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "status": "passed",
4
+ "evidenceType": "native-installed-archive-component-wiring",
5
+ "workflow": "checked-region-segmentation",
6
+ "sourceCommit": "46283fea1f45725b47e3f883c3c4c1ab1455a172",
7
+ "harnessCommit": "6e7f132c61cc9600dabc94f627ed02ab5e50bb57",
8
+ "harnessSha256": "48ca587aa8e1b4f4b3bf255a856d555f2fe4f4dd051e0597d1c63e2f76eda74c",
9
+ "rawReportSha256": "b90a4205abb13745372112ae610694da555da580552657ab76d7d1de60fe6c06",
10
+ "rawReportBytes": 7211,
11
+ "runtime": {
12
+ "platform": "win32",
13
+ "architecture": "x64",
14
+ "node": "v24.19.0",
15
+ "windowsBuild": "10.0.26200",
16
+ "backend": "MobileSAM CPU",
17
+ "threads": 2,
18
+ "optionalRuntime": "onnxruntime-node 1.23.2"
19
+ },
20
+ "archive": {
21
+ "package": "zorya-classifier",
22
+ "version": "0.2.0",
23
+ "bytes": 705469,
24
+ "sha256": "4156a92fcc27db53d39bfab710719af9a7f36d7deeb76b1731fb705b3b4335d8",
25
+ "installedDistFileCount": 115,
26
+ "installedDistManifestSha256": "4fcaea3aca9d0b90304fb2bb1d536f35965070984f04181617d7bd82ac397731",
27
+ "segmentationRuntimeSha256": "e39c772dce27978c99e86682c442c1082686d05be8b8384ec0e0ad9564bf0e01"
28
+ },
29
+ "independentInstalledArchiveParity": true,
30
+ "checks": {
31
+ "importWithoutNativeChild": true,
32
+ "backendProbeSettled": true,
33
+ "closedBoxVerification": true,
34
+ "nativeEnclosingMask": true,
35
+ "locate": true,
36
+ "extract": true,
37
+ "cancellationAndPhysicalJoin": true,
38
+ "capacity": true,
39
+ "callerOwnedAdapter": true,
40
+ "dispose": true,
41
+ "fixtureDecisionOffline": true,
42
+ "emptyTransparentIsValidEmptyMask": true,
43
+ "childOwnership": true,
44
+ "cleanup": true,
45
+ "worker": true,
46
+ "tempCleanup": true
47
+ },
48
+ "controlledFixture": {
49
+ "seed": {
50
+ "region": {
51
+ "left": 0,
52
+ "top": 0,
53
+ "width": 13,
54
+ "height": 13
55
+ },
56
+ "center": {
57
+ "x": 6.5,
58
+ "y": 6.5
59
+ },
60
+ "centerInsideSyntheticTarget": true
61
+ },
62
+ "located": {
63
+ "status": "located",
64
+ "durationMs": 4308,
65
+ "seedRegion": {
66
+ "left": 0,
67
+ "top": 0,
68
+ "width": 13,
69
+ "height": 13
70
+ },
71
+ "region": {
72
+ "left": 0,
73
+ "top": 0,
74
+ "width": 64,
75
+ "height": 64
76
+ },
77
+ "method": "region-checked-segmentation-v1",
78
+ "center": {
79
+ "x": 32,
80
+ "y": 32
81
+ },
82
+ "verification": {
83
+ "checks": [
84
+ {
85
+ "verdict": "complete",
86
+ "selection": {
87
+ "choice": "complete",
88
+ "nativeChoice": "complete",
89
+ "probabilities": {
90
+ "complete": 1,
91
+ "needs-expansion": 0,
92
+ "unknown": 0
93
+ },
94
+ "tied": ["complete"]
95
+ },
96
+ "metadata": {
97
+ "model": null,
98
+ "provider": null,
99
+ "requestId": null,
100
+ "durationMs": 0,
101
+ "costUsd": 0,
102
+ "attempts": 1
103
+ }
104
+ }
105
+ ],
106
+ "expansion": "not-needed"
107
+ }
108
+ },
109
+ "extracted": {
110
+ "status": "extracted",
111
+ "durationMs": 1527,
112
+ "region": {
113
+ "left": 0,
114
+ "top": 0,
115
+ "width": 64,
116
+ "height": 64
117
+ },
118
+ "offset": {
119
+ "x": 0,
120
+ "y": 0
121
+ },
122
+ "pngBytes": 267,
123
+ "maskBytes": 4096,
124
+ "segmentation": {
125
+ "method": "mobile-sam-seed-point-v1",
126
+ "backend": "mobile-sam",
127
+ "durationMs": 1301.8304000000007,
128
+ "input": {
129
+ "width": 256,
130
+ "height": 256
131
+ }
132
+ },
133
+ "verification": {
134
+ "checks": [
135
+ {
136
+ "verdict": "complete",
137
+ "selection": {
138
+ "choice": "complete",
139
+ "nativeChoice": "complete",
140
+ "probabilities": {
141
+ "complete": 1,
142
+ "needs-expansion": 0,
143
+ "unknown": 0
144
+ },
145
+ "tied": ["complete"]
146
+ },
147
+ "metadata": {
148
+ "model": null,
149
+ "provider": null,
150
+ "requestId": null,
151
+ "durationMs": 0,
152
+ "costUsd": 0,
153
+ "attempts": 1
154
+ }
155
+ }
156
+ ],
157
+ "expansion": "not-needed"
158
+ }
159
+ },
160
+ "maskDerived": {
161
+ "sourceSize": {
162
+ "width": 256,
163
+ "height": 256
164
+ },
165
+ "segmenterInputSize": {
166
+ "width": 256,
167
+ "height": 256
168
+ },
169
+ "syntheticTarget": {
170
+ "left": 0,
171
+ "top": 0,
172
+ "width": 64,
173
+ "height": 64
174
+ },
175
+ "region": {
176
+ "left": 0,
177
+ "top": 0,
178
+ "width": 64,
179
+ "height": 64
180
+ },
181
+ "center": {
182
+ "x": 32,
183
+ "y": 32
184
+ },
185
+ "seedRegion": {
186
+ "left": 0,
187
+ "top": 0,
188
+ "width": 13,
189
+ "height": 13
190
+ },
191
+ "maskPixels": 4096,
192
+ "pngSize": {
193
+ "width": 64,
194
+ "height": 64
195
+ },
196
+ "method": "mobile-sam-seed-point-v1",
197
+ "cutoutAlphaMatchesMask": true,
198
+ "centerMatchesBounds": true,
199
+ "cropMatchesBounds": true,
200
+ "objectBoundsLargerThanSeed": true
201
+ },
202
+ "fixtureDecision": {
203
+ "calls": 8,
204
+ "providerHttpCalls": 0,
205
+ "noExtentSearchCalls": true,
206
+ "boxCheckRequests": 2,
207
+ "validRegionChoiceRequests": 6
208
+ },
209
+ "enclosingMaskComponent": {
210
+ "input": "controlled one-pixel fragment from actual native mask, not a photo-quality result",
211
+ "previousForeground": 1,
212
+ "point": {
213
+ "x": 0,
214
+ "y": 0
215
+ },
216
+ "status": "segmented",
217
+ "foreground": 4062,
218
+ "metadata": {
219
+ "method": "mobile-sam-enclosing-mask-v1",
220
+ "backend": "mobile-sam",
221
+ "durationMs": 1288.6422999999995,
222
+ "input": {
223
+ "width": 256,
224
+ "height": 256
225
+ },
226
+ "qualityScore": 0.9341034889221191
227
+ }
228
+ }
229
+ },
230
+ "childOwnership": {
231
+ "starts": 10,
232
+ "closes": 10,
233
+ "stillOwnedPids": []
234
+ },
235
+ "cleanup": {
236
+ "ownedNativeTemp": "removed by coordinator after worker exit",
237
+ "ownedWindowsStageRemoved": true,
238
+ "earlierLaunchAttemptsPreserved": true
239
+ },
240
+ "coordinatorExitCode": 0,
241
+ "workerExitCode": 0,
242
+ "providerHttpCalls": 0,
243
+ "limitations": [
244
+ "Controlled synthetic/native component checks, not photo accuracy or a real game session.",
245
+ "Initial PowerShell launch attempts preserved as coordinator-exit-unverified; qualified repeat used native WSL interop and observed exit code zero.",
246
+ "Final published archive still requires parity against these 114 compiled runtime files plus final source and package checks."
247
+ ]
248
+ }