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,198 @@
1
+ {
2
+ "kind": "native-windows-cpu-component-acceptance",
3
+ "testedArchiveSourceCommit": "eea17907c01023f7bc51c1c5aedb28a304e88895",
4
+ "rawReportSha256": "13d95064b694280b44e6fac7e8aba648ed0a840f6dfba6f794703dccc27ff91f",
5
+ "redactions": ["tempRoot (owned temporary directory, removed after run)"],
6
+ "schemaVersion": 1,
7
+ "platform": "win32",
8
+ "arch": "x64",
9
+ "node": "v24.19.0",
10
+ "osRelease": "10.0.26200",
11
+ "osVersion": "Windows 11 Pro",
12
+ "npm": "11.17.0",
13
+ "dependencies": {
14
+ "zorya-classifier": "0.1.0",
15
+ "onnxruntime-node": "1.23.2",
16
+ "sharp": "0.34.5"
17
+ },
18
+ "executionProvider": "cpu",
19
+ "intraOpThreads": 1,
20
+ "latencyTag": "concurrent-with-linux-soak",
21
+ "scope": "native-segmentation-component; no classifier or vision locator calls",
22
+ "freeBytesBeforeInstall": 182426755072,
23
+ "packageArchiveSha256": "f41de58a35763910f912859a3ad823a4a4e23e40ee60be70adb7c4752eb5d7c3",
24
+ "runtimeImport": "passed",
25
+ "declarationProbe": "passed",
26
+ "cpuSessionProbe": "passed-cpu-only",
27
+ "modelAssets": {
28
+ "encoder": {
29
+ "name": "mobile_sam_image_encoder.onnx",
30
+ "bytes": 28157093,
31
+ "sha256": "580f5fb648ea1062c0aabc26217aed56921985f03f0cbbd852bba81d760cc749"
32
+ },
33
+ "decoder": {
34
+ "name": "sam_mask_decoder_multi.onnx",
35
+ "bytes": 16496559,
36
+ "sha256": "8976b90a87ba50a6a72217a5ff994f7d25ce16f2229fcc1ed259e1294c622ffe"
37
+ }
38
+ },
39
+ "photoCases": [
40
+ {
41
+ "caseId": "photo-dev-present-06",
42
+ "status": "segmented",
43
+ "durationMs": 2005,
44
+ "predictedPixels": 23039,
45
+ "iou": 0.8778299545680144,
46
+ "metadata": {
47
+ "method": "mobile-sam-box-prompt",
48
+ "backend": "mobile-sam",
49
+ "durationMs": 2001.4099999999999,
50
+ "input": {
51
+ "width": 1024,
52
+ "height": 683
53
+ }
54
+ }
55
+ },
56
+ {
57
+ "caseId": "photo-dev-present-08",
58
+ "status": "segmented",
59
+ "durationMs": 1911,
60
+ "predictedPixels": 8838,
61
+ "iou": 0.8585428206220708,
62
+ "metadata": {
63
+ "method": "mobile-sam-box-prompt",
64
+ "backend": "mobile-sam",
65
+ "durationMs": 1907.7086000000018,
66
+ "input": {
67
+ "width": 1024,
68
+ "height": 683
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "caseId": "photo-dev-present-09",
74
+ "status": "segmented",
75
+ "durationMs": 1924,
76
+ "predictedPixels": 81383,
77
+ "iou": 0.9432335832924522,
78
+ "metadata": {
79
+ "method": "mobile-sam-box-prompt",
80
+ "backend": "mobile-sam",
81
+ "durationMs": 1918.9593999999997,
82
+ "input": {
83
+ "width": 1024,
84
+ "height": 768
85
+ }
86
+ }
87
+ },
88
+ {
89
+ "caseId": "photo-dev-present-13",
90
+ "status": "segmented",
91
+ "durationMs": 1830,
92
+ "predictedPixels": 357965,
93
+ "iou": 0.6699974685542723,
94
+ "metadata": {
95
+ "method": "mobile-sam-box-prompt",
96
+ "backend": "mobile-sam",
97
+ "durationMs": 1825.9470000000001,
98
+ "input": {
99
+ "width": 1024,
100
+ "height": 681
101
+ }
102
+ }
103
+ },
104
+ {
105
+ "caseId": "photo-dev-present-15",
106
+ "status": "segmented",
107
+ "durationMs": 1865,
108
+ "predictedPixels": 53807,
109
+ "iou": 0.9470228458355819,
110
+ "metadata": {
111
+ "method": "mobile-sam-box-prompt",
112
+ "backend": "mobile-sam",
113
+ "durationMs": 1860.4578000000001,
114
+ "input": {
115
+ "width": 1024,
116
+ "height": 768
117
+ }
118
+ }
119
+ }
120
+ ],
121
+ "fixtureProvenance": [
122
+ {
123
+ "id": "photo-dev-present-06",
124
+ "sourceUrl": "https://www.flickr.com/photos/126942156@N08/15072003400",
125
+ "license": "CC-BY-2.0",
126
+ "photoSha256": "ad0eb4bf4a6c2c1be585846a943aa06ec2440696b7e8874374904eb25dcc594a",
127
+ "maskSha256": "0a82516a43057329a7b2cafa4fcbe1c714d997a87a9e1dbe6d84ffcbf1bbbe26",
128
+ "order": 0
129
+ },
130
+ {
131
+ "id": "photo-dev-present-08",
132
+ "sourceUrl": "https://www.flickr.com/photos/jdqueen/6310191834",
133
+ "license": "CC-BY-2.0",
134
+ "photoSha256": "74b944d3b7d88a046d01f2d813c88e8a6415296db938a343a83d86048f4c3a4f",
135
+ "maskSha256": "4e72cfb83de41421ed4a41c02ee4c700ca8bdf57f9c2f903017cf21ad6d4c772",
136
+ "order": 1
137
+ },
138
+ {
139
+ "id": "photo-dev-present-09",
140
+ "sourceUrl": "https://www.flickr.com/photos/vikingdread/3585699111",
141
+ "license": "CC-BY-2.0",
142
+ "photoSha256": "6710905e971316f4b0d0fe1535eb64702807bc4c041bc161ea1ce1208eff5a0f",
143
+ "maskSha256": "602668e56dd5ae8c5a0b7f24afe1b3da88d5e28446e96a870d6d0778478b0703",
144
+ "order": 2
145
+ },
146
+ {
147
+ "id": "photo-dev-present-13",
148
+ "sourceUrl": "https://www.flickr.com/photos/favitia/6390569267",
149
+ "license": "CC-BY-2.0",
150
+ "photoSha256": "750f09aeeb5d1113088eedaf47f201f0837ad64720f836a69fec9ed3e4f1e5a7",
151
+ "maskSha256": "417bb4bf0272c4322e6dd5905505abd221ff8af286735b125e9c1c1f549dc9b0",
152
+ "order": 3
153
+ },
154
+ {
155
+ "id": "photo-dev-present-15",
156
+ "sourceUrl": "https://www.flickr.com/photos/loqueveelojo/2905202023/",
157
+ "license": "CC-BY-2.0",
158
+ "photoSha256": "a0a80df65932f8cb7cf7367305372c04aa37f1991436e4f1cb7828c9138f708e",
159
+ "maskSha256": "256b081bcf95f744d5524eb16ff1c21795bf5c9896ae0e43d3d4198d53f8e1e3",
160
+ "order": 4
161
+ }
162
+ ],
163
+ "syntheticCase": {
164
+ "caseId": "synthetic-red-panel-v1",
165
+ "status": "segmented",
166
+ "durationMs": 1848,
167
+ "predictedPixels": 11244,
168
+ "iou": 0.9996443812233285,
169
+ "metadata": {
170
+ "method": "mobile-sam-box-prompt",
171
+ "backend": "mobile-sam",
172
+ "durationMs": 1846.3192999999992,
173
+ "input": {
174
+ "width": 256,
175
+ "height": 256
176
+ }
177
+ }
178
+ },
179
+ "lifecycle": {
180
+ "cancellationCode": "ABORTED",
181
+ "queueCapacityRejected": 1,
182
+ "queueSettled": 4,
183
+ "disposedIdempotently": true,
184
+ "afterDisposeCode": "DISPOSED"
185
+ },
186
+ "processOwnership": {
187
+ "starts": 11,
188
+ "closes": 11,
189
+ "stillOwnedPids": []
190
+ },
191
+ "acceptance": true,
192
+ "limits": [
193
+ "Oracle whole-object boxes and independent reference masks test segmentation, not end-to-end vision localization.",
194
+ "Timings were concurrent with a separate Linux native soak and are not eligible for route/backend latency ranking.",
195
+ "Four of five photo masks meet IoU >= 0.8; photo-dev-present-13 remains below threshold.",
196
+ "This is an unpublished 0.1.0 development archive, not the final 0.2 release."
197
+ ]
198
+ }
@@ -0,0 +1,228 @@
1
+ {
2
+ "kind": "native-windows-cpu-component-acceptance",
3
+ "testedArchiveSourceCommit": "eea17907c01023f7bc51c1c5aedb28a304e88895",
4
+ "rawReportSha256": "8056a5d7897541f0257b783d21bd4ba2b29d7164c55a3e2f5ce48999ea9741b1",
5
+ "redactions": ["tempRoot (owned temporary directory, removed after run)"],
6
+ "schemaVersion": 1,
7
+ "platform": "win32",
8
+ "arch": "x64",
9
+ "node": "v24.19.0",
10
+ "osRelease": "10.0.26200",
11
+ "osVersion": "Windows 11 Pro",
12
+ "npm": "11.17.0",
13
+ "dependencies": {
14
+ "zorya-classifier": "0.1.0",
15
+ "onnxruntime-node": "1.23.2",
16
+ "sharp": "0.34.5"
17
+ },
18
+ "executionProvider": "cpu",
19
+ "intraOpThreads": 1,
20
+ "latencyTag": "concurrent-with-linux-soak",
21
+ "scope": "native-segmentation-component; no classifier or vision locator calls",
22
+ "freeBytesBeforeInstall": 183388491776,
23
+ "packageArchiveSha256": "f41de58a35763910f912859a3ad823a4a4e23e40ee60be70adb7c4752eb5d7c3",
24
+ "runtimeImport": "passed",
25
+ "declarationProbe": "passed",
26
+ "cpuSessionProbe": "passed-cpu-only",
27
+ "modelAssets": {
28
+ "encoder": {
29
+ "name": "mobile_sam_image_encoder.onnx",
30
+ "bytes": 28157093,
31
+ "sha256": "580f5fb648ea1062c0aabc26217aed56921985f03f0cbbd852bba81d760cc749"
32
+ },
33
+ "decoder": {
34
+ "name": "sam_mask_decoder_multi.onnx",
35
+ "bytes": 16496559,
36
+ "sha256": "8976b90a87ba50a6a72217a5ff994f7d25ce16f2229fcc1ed259e1294c622ffe"
37
+ }
38
+ },
39
+ "photoCases": [
40
+ {
41
+ "caseId": "photo-dev-present-06",
42
+ "status": "segmented",
43
+ "durationMs": 1758,
44
+ "predictedPixels": 23039,
45
+ "iou": 0.8778299545680144,
46
+ "metadata": {
47
+ "method": "mobile-sam-box-prompt",
48
+ "backend": "mobile-sam",
49
+ "durationMs": 1755.1697000000004,
50
+ "input": {
51
+ "width": 1024,
52
+ "height": 683
53
+ }
54
+ }
55
+ },
56
+ {
57
+ "caseId": "photo-dev-present-08",
58
+ "status": "segmented",
59
+ "durationMs": 1779,
60
+ "predictedPixels": 8838,
61
+ "iou": 0.8585428206220708,
62
+ "metadata": {
63
+ "method": "mobile-sam-box-prompt",
64
+ "backend": "mobile-sam",
65
+ "durationMs": 1774.8545999999988,
66
+ "input": {
67
+ "width": 1024,
68
+ "height": 683
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "caseId": "photo-dev-present-09",
74
+ "status": "segmented",
75
+ "durationMs": 1785,
76
+ "predictedPixels": 81383,
77
+ "iou": 0.9432335832924522,
78
+ "metadata": {
79
+ "method": "mobile-sam-box-prompt",
80
+ "backend": "mobile-sam",
81
+ "durationMs": 1781.490600000001,
82
+ "input": {
83
+ "width": 1024,
84
+ "height": 768
85
+ }
86
+ }
87
+ },
88
+ {
89
+ "caseId": "photo-dev-present-13",
90
+ "status": "segmented",
91
+ "durationMs": 1695,
92
+ "predictedPixels": 357965,
93
+ "iou": 0.6699974685542723,
94
+ "metadata": {
95
+ "method": "mobile-sam-box-prompt",
96
+ "backend": "mobile-sam",
97
+ "durationMs": 1691.109800000002,
98
+ "input": {
99
+ "width": 1024,
100
+ "height": 681
101
+ }
102
+ }
103
+ },
104
+ {
105
+ "caseId": "photo-dev-present-15",
106
+ "status": "segmented",
107
+ "durationMs": 1733,
108
+ "predictedPixels": 53807,
109
+ "iou": 0.9470228458355819,
110
+ "metadata": {
111
+ "method": "mobile-sam-box-prompt",
112
+ "backend": "mobile-sam",
113
+ "durationMs": 1729.4650000000001,
114
+ "input": {
115
+ "width": 1024,
116
+ "height": 768
117
+ }
118
+ }
119
+ }
120
+ ],
121
+ "fixtureProvenance": [
122
+ {
123
+ "id": "photo-dev-present-06",
124
+ "sourceUrl": "https://www.flickr.com/photos/126942156@N08/15072003400",
125
+ "license": "CC-BY-2.0",
126
+ "photoSha256": "ad0eb4bf4a6c2c1be585846a943aa06ec2440696b7e8874374904eb25dcc594a",
127
+ "maskSha256": "0a82516a43057329a7b2cafa4fcbe1c714d997a87a9e1dbe6d84ffcbf1bbbe26",
128
+ "order": 0
129
+ },
130
+ {
131
+ "id": "photo-dev-present-08",
132
+ "sourceUrl": "https://www.flickr.com/photos/jdqueen/6310191834",
133
+ "license": "CC-BY-2.0",
134
+ "photoSha256": "74b944d3b7d88a046d01f2d813c88e8a6415296db938a343a83d86048f4c3a4f",
135
+ "maskSha256": "4e72cfb83de41421ed4a41c02ee4c700ca8bdf57f9c2f903017cf21ad6d4c772",
136
+ "order": 1
137
+ },
138
+ {
139
+ "id": "photo-dev-present-09",
140
+ "sourceUrl": "https://www.flickr.com/photos/vikingdread/3585699111",
141
+ "license": "CC-BY-2.0",
142
+ "photoSha256": "6710905e971316f4b0d0fe1535eb64702807bc4c041bc161ea1ce1208eff5a0f",
143
+ "maskSha256": "602668e56dd5ae8c5a0b7f24afe1b3da88d5e28446e96a870d6d0778478b0703",
144
+ "order": 2
145
+ },
146
+ {
147
+ "id": "photo-dev-present-13",
148
+ "sourceUrl": "https://www.flickr.com/photos/favitia/6390569267",
149
+ "license": "CC-BY-2.0",
150
+ "photoSha256": "750f09aeeb5d1113088eedaf47f201f0837ad64720f836a69fec9ed3e4f1e5a7",
151
+ "maskSha256": "417bb4bf0272c4322e6dd5905505abd221ff8af286735b125e9c1c1f549dc9b0",
152
+ "order": 3
153
+ },
154
+ {
155
+ "id": "photo-dev-present-15",
156
+ "sourceUrl": "https://www.flickr.com/photos/loqueveelojo/2905202023/",
157
+ "license": "CC-BY-2.0",
158
+ "photoSha256": "a0a80df65932f8cb7cf7367305372c04aa37f1991436e4f1cb7828c9138f708e",
159
+ "maskSha256": "256b081bcf95f744d5524eb16ff1c21795bf5c9896ae0e43d3d4198d53f8e1e3",
160
+ "order": 4
161
+ }
162
+ ],
163
+ "syntheticCase": {
164
+ "caseId": "synthetic-red-panel-v1",
165
+ "status": "segmented",
166
+ "durationMs": 1717,
167
+ "predictedPixels": 11244,
168
+ "iou": 0.9996443812233285,
169
+ "metadata": {
170
+ "method": "mobile-sam-box-prompt",
171
+ "backend": "mobile-sam",
172
+ "durationMs": 1714.7798000000003,
173
+ "input": {
174
+ "width": 256,
175
+ "height": 256
176
+ }
177
+ }
178
+ },
179
+ "lifecycle": {
180
+ "cancellationCode": "ABORTED",
181
+ "queueCapacityRejected": 1,
182
+ "queueSettled": 4,
183
+ "queueFulfilled": 3,
184
+ "disposedIdempotently": true,
185
+ "afterDisposeCode": "DISPOSED"
186
+ },
187
+ "processOwnership": {
188
+ "starts": 11,
189
+ "closes": 11,
190
+ "stillOwnedPids": []
191
+ },
192
+ "cleanupErrors": [],
193
+ "checks": {
194
+ "runtimeImport": true,
195
+ "declarationProbe": true,
196
+ "cpuSessionProbe": true,
197
+ "syntheticSegmented": true,
198
+ "syntheticQuality": true,
199
+ "allExpectedPositivePhotosSegmented": true,
200
+ "cancellation": true,
201
+ "capacity": true,
202
+ "disposal": true,
203
+ "processOwnership": true,
204
+ "cleanup": true,
205
+ "worker": true
206
+ },
207
+ "photoQuality": {
208
+ "threshold": 0.8,
209
+ "caseCount": 5,
210
+ "meanIou": 0.8593253345744782,
211
+ "minimumIou": 0.6699974685542723,
212
+ "belowThreshold": [
213
+ {
214
+ "caseId": "photo-dev-present-13",
215
+ "iou": 0.6699974685542723
216
+ }
217
+ ]
218
+ },
219
+ "acceptance": true,
220
+ "workerStatus": 0,
221
+ "workerError": null,
222
+ "limits": [
223
+ "Oracle whole-object boxes and independent reference masks test segmentation, not end-to-end vision localization.",
224
+ "Timings were concurrent with a separate Linux native soak and are not eligible for route/backend latency ranking.",
225
+ "Four of five photo masks meet IoU >= 0.8; photo-dev-present-13 remains below threshold.",
226
+ "This is an unpublished 0.1.0 development archive, not the final 0.2 release."
227
+ ]
228
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "runId": "v02-ordinary-luna-axis-2026-10-20T094356905Z-5caea950",
4
+ "purpose": "ordinary Luna vision adapter on boundary-axis presentation; exposed diagnostic, not qualification",
5
+ "startedAt": "2026-10-20T09:43:56.906Z",
6
+ "variant": {
7
+ "id": "ordinary-luna-axis-v1",
8
+ "promptId": "ordinary-vision-closed-choice-v1",
9
+ "model": "openai/gpt-6-luna",
10
+ "provider": "openai",
11
+ "providerName": "OpenAI",
12
+ "apiEndpoint": "https://openrouter.ai/api/v1/chat/completions",
13
+ "allowFallbacks": false,
14
+ "responseFormat": "json-schema",
15
+ "reasoningEffort": "none",
16
+ "maxOutputTokens": 1024,
17
+ "boxTolerancePx": 8,
18
+ "maxExtentPasses": 3,
19
+ "timeoutMs": 45000,
20
+ "retries": 0,
21
+ "presentation": "axis-rulers-v1"
22
+ },
23
+ "variantSha256": "d83f6bfc666451123354830f968f3926582915c294413cdab00abcc35ab9dd9a",
24
+ "sourceHashes": {
25
+ "./ordinaryvisionpilot.ts": "8ad6804d6cf0f6a5357cfb02e1ddd42337e3d793d1d72386b0e0ad9af5f5b900",
26
+ "./ordinaryvisionvariant.ts": "007d4edf4932cdcb0652980d4590117836e32316c9bfb0659ba5205528971c9b",
27
+ "./run-ordinary-vision-axis-pilot.ts": "68fecbbe53d740add84959dbaa674e9740d4e1cd19fd88c47ee9703bf305d257",
28
+ "./presentationpilot.ts": "b4680fb0d2cc77e8cae009cf755837308a8068f73bc772a431693927af863944",
29
+ "./protocol.ts": "0bb02aab603b752ca77249be84f23aa532f7a574fb29fb5cb0e588ed7ec56eef",
30
+ "./recording.ts": "7cf73a6e988491a443caeca6de33fa3824c2253d083d9155b9bde74b317d85f9",
31
+ "../../src/app/create-classifier.ts": "c427b509a80172a4883bd0724e22fe2eb6af8e6784660f03e36ac6ea718e35d3",
32
+ "../../src/processes/whole-object.ts": "fdab7fd0c758d1d426356d88477eca4c3ecd99521724faba5503b462f40d269e",
33
+ "../../src/processes/boundary-state.ts": "77c636e2a2311ed989e514ee78adef66f80230d5eee394549917c9ff13fc99d7",
34
+ "../../src/processes/locate.ts": "a5a1320c2dff4060a3c5ab5e32cb5f0af2d94fcad458caba3818b6a0a28dab3d",
35
+ "../../src/features/prompts.ts": "b808ed8f42e8c92daf08060d2805da618f2b140f99b6a9b07df49622d57b62aa",
36
+ "../../src/features/choice.ts": "ff972121520a339b82895914242bf40f7b8dcd198b4305fd57e51b204b13952d",
37
+ "../../src/features/choice-beam-layout.ts": "8f61d6f784e0e6273467cea01315f17bbfa4fffa695dd7a7bb9cd5cac5354e1a",
38
+ "../../src/features/uniform-grid.ts": "8cee38aee52ba2c4ac2eaed909d5f53cc0e5aa2c04fe87585c66b29573e21c4d",
39
+ "../../src/infrastructure/vision-chat.ts": "314e2c236a75ad43023c6ae34544a849df027f025eda32abdc2a7e1d49c742f3",
40
+ "../../src/infrastructure/openrouter-vision.ts": "b72e4699e132c1ac598772c49287edb0b5ca355ad2af33481f9c741ddcb13eaa",
41
+ "../../src/infrastructure/openrouter-common.ts": "415462c42da7a3748c6bfe942ee99085fba71bc1f4158d369edda8269efeb124",
42
+ "../../src/infrastructure/boundary-view.ts": "2fb5546ae4a47a2a08f13ccad74c5a9cc7b9736ff052738637bfd65f1acd7775"
43
+ },
44
+ "producerSourceSha256": "306dc80ca49d0123d5de88e2fc32b0aef73bcff5e68acb01f1dc12abbc6969cd",
45
+ "sourceManifestSha256": "d2a3ab497a9cff07e0199a7be9e8e91c844e2efc773cd3335bc248c334a6e7a9",
46
+ "selectedCaseIds": [
47
+ "photo-dev-02",
48
+ "photo-dev-03",
49
+ "photo-dev-01",
50
+ "photo-dev-05"
51
+ ],
52
+ "initialPositiveCaseIds": [
53
+ "photo-dev-02",
54
+ "photo-dev-03"
55
+ ],
56
+ "conditionalCaseIds": [
57
+ "photo-dev-01",
58
+ "photo-dev-05"
59
+ ],
60
+ "route": {
61
+ "model": "openai/gpt-6-luna",
62
+ "provider": "openai",
63
+ "providerName": "OpenAI",
64
+ "apiEndpoint": "/api/v1/chat/completions",
65
+ "allowFallbacks": false
66
+ },
67
+ "transport": {
68
+ "responseFormat": "json-schema",
69
+ "reasoningEffort": "none",
70
+ "maxOutputTokens": 1024,
71
+ "promptId": "ordinary-vision-closed-choice-v1",
72
+ "promptSource": "src/infrastructure/vision-chat.ts",
73
+ "promptSourceSha256": "314e2c236a75ad43023c6ae34544a849df027f025eda32abdc2a7e1d49c742f3",
74
+ "modelEvidence": "https://openrouter.ai/openai/gpt-6-luna",
75
+ "transportEvidence": "https://openrouter.ai/docs/api/api-reference/chat/send-chat-completion-request?explorer=true"
76
+ },
77
+ "wholeObject": {
78
+ "boxTolerancePx": 8,
79
+ "maxExtentPasses": 3,
80
+ "timeoutMs": 45000,
81
+ "retries": 0,
82
+ "allowFallbacks": false
83
+ },
84
+ "limits": {
85
+ "maxPhysicalCalls": 32,
86
+ "maxCostUsd": 1,
87
+ "unknownCostReserveUsd": 0.02,
88
+ "firstPairCalls": 2,
89
+ "totalOperations": 4
90
+ },
91
+ "latencyEnvironment": "concurrent-with-linux-native-soak",
92
+ "latencyRankingEligible": false,
93
+ "modelBoundary": {
94
+ "evaluatorTruthRead": false,
95
+ "retries": 0,
96
+ "fallback": false,
97
+ "conditionalPairRunsOnlyIfOneInitialPositiveLocates": true
98
+ }
99
+ }