@jinn-network/client 0.1.8 → 0.1.9-canary.01623b98

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 (877) hide show
  1. package/CONTRIBUTING.md +2 -2
  2. package/README.md +6 -0
  3. package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
  4. package/deployments/deployment-stolas-l2-baseSepolia-fast.json +23 -3
  5. package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +34 -6
  6. package/dist/adapters/mech/adapter.d.ts +31 -1
  7. package/dist/adapters/mech/adapter.js +129 -54
  8. package/dist/adapters/mech/adapter.js.map +1 -1
  9. package/dist/adapters/mech/contracts.d.ts +174 -13
  10. package/dist/adapters/mech/contracts.js +99 -49
  11. package/dist/adapters/mech/contracts.js.map +1 -1
  12. package/dist/adapters/mech/safe-revert.d.ts +4 -0
  13. package/dist/adapters/mech/safe-revert.js +5 -1
  14. package/dist/adapters/mech/safe-revert.js.map +1 -1
  15. package/dist/adapters/mech/safe.js +77 -1
  16. package/dist/adapters/mech/safe.js.map +1 -1
  17. package/dist/adapters/mech/types.d.ts +5 -130
  18. package/dist/adapters/mech/types.js +9 -65
  19. package/dist/adapters/mech/types.js.map +1 -1
  20. package/dist/adapters/mech/verdict-code.js +1 -1
  21. package/dist/adapters/mech/verdict-code.js.map +1 -1
  22. package/dist/api/bootstrap-endpoint.d.ts +19 -3
  23. package/dist/api/bootstrap-endpoint.js +4 -0
  24. package/dist/api/bootstrap-endpoint.js.map +1 -1
  25. package/dist/api/discovery-endpoint.d.ts +1 -0
  26. package/dist/api/discovery-endpoint.js +24 -0
  27. package/dist/api/discovery-endpoint.js.map +1 -1
  28. package/dist/api/fleet-build.d.ts +1 -7
  29. package/dist/api/fleet-build.js +0 -7
  30. package/dist/api/fleet-build.js.map +1 -1
  31. package/dist/api/gather-status.d.ts +49 -17
  32. package/dist/api/gather-status.js +94 -530
  33. package/dist/api/gather-status.js.map +1 -1
  34. package/dist/api/harness-auth-status-endpoint.d.ts +21 -0
  35. package/dist/api/harness-auth-status-endpoint.js +17 -0
  36. package/dist/api/harness-auth-status-endpoint.js.map +1 -0
  37. package/dist/api/launcher-endpoints.js +6 -1
  38. package/dist/api/launcher-endpoints.js.map +1 -1
  39. package/dist/api/launcher-status.d.ts +2 -0
  40. package/dist/api/launcher-status.js.map +1 -1
  41. package/dist/api/launcher-tasks.d.ts +47 -0
  42. package/dist/api/launcher-tasks.js +88 -3
  43. package/dist/api/launcher-tasks.js.map +1 -1
  44. package/dist/api/loop-completion-build.d.ts +79 -0
  45. package/dist/api/loop-completion-build.js +154 -0
  46. package/dist/api/loop-completion-build.js.map +1 -0
  47. package/dist/api/operator-artifacts-endpoint.js +1 -1
  48. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  49. package/dist/api/portfolio-v0-build.d.ts +2 -1
  50. package/dist/api/portfolio-v0-build.js +5 -7
  51. package/dist/api/portfolio-v0-build.js.map +1 -1
  52. package/dist/api/prediction-v1-build.d.ts +2 -2
  53. package/dist/api/prediction-v1-build.js +5 -7
  54. package/dist/api/prediction-v1-build.js.map +1 -1
  55. package/dist/api/rewards-build.d.ts +8 -1
  56. package/dist/api/rewards-build.js +32 -4
  57. package/dist/api/rewards-build.js.map +1 -1
  58. package/dist/api/rewards-endpoint.d.ts +12 -0
  59. package/dist/api/rewards-endpoint.js +46 -0
  60. package/dist/api/rewards-endpoint.js.map +1 -0
  61. package/dist/api/run-outcome.d.ts +49 -0
  62. package/dist/api/run-outcome.js +65 -0
  63. package/dist/api/run-outcome.js.map +1 -0
  64. package/dist/api/server.d.ts +6 -16
  65. package/dist/api/server.js +36 -26
  66. package/dist/api/server.js.map +1 -1
  67. package/dist/api/setup-endpoints.d.ts +45 -0
  68. package/dist/api/setup-endpoints.js +271 -52
  69. package/dist/api/setup-endpoints.js.map +1 -1
  70. package/dist/api/solvernets-endpoints.js +4 -1
  71. package/dist/api/solvernets-endpoints.js.map +1 -1
  72. package/dist/api/status-build.d.ts +71 -94
  73. package/dist/api/status-build.js +12 -81
  74. package/dist/api/status-build.js.map +1 -1
  75. package/dist/api/status-rollup-build.d.ts +0 -4
  76. package/dist/api/status-rollup-build.js +0 -4
  77. package/dist/api/status-rollup-build.js.map +1 -1
  78. package/dist/api/stop-hook.d.ts +1 -1
  79. package/dist/api/stop-hook.js +1 -1
  80. package/dist/api/stop-hook.js.map +1 -1
  81. package/dist/api/task-run-routing.d.ts +1 -1
  82. package/dist/api/task-runs-build.d.ts +21 -2
  83. package/dist/api/task-runs-build.js +27 -7
  84. package/dist/api/task-runs-build.js.map +1 -1
  85. package/dist/bin/jinn-distill-mcp.js +813 -0
  86. package/dist/bin/jinn-layer.js +14057 -0
  87. package/dist/build-info.json +4 -4
  88. package/dist/build-meta.json +1 -1
  89. package/dist/captures/distil-export.d.ts +54 -0
  90. package/dist/captures/distil-export.js +135 -0
  91. package/dist/captures/distil-export.js.map +1 -0
  92. package/dist/captures/ingest.d.ts +21 -0
  93. package/dist/captures/ingest.js +144 -0
  94. package/dist/captures/ingest.js.map +1 -0
  95. package/dist/captures/live-publisher.d.ts +9 -0
  96. package/dist/captures/live-publisher.js +5 -3
  97. package/dist/captures/live-publisher.js.map +1 -1
  98. package/dist/captures/publish.d.ts +15 -0
  99. package/dist/captures/publish.js +17 -7
  100. package/dist/captures/publish.js.map +1 -1
  101. package/dist/cli/commands/codedigest-revert-check.js +6 -2
  102. package/dist/cli/commands/codedigest-revert-check.js.map +1 -1
  103. package/dist/cli/commands/doctor.d.ts +3 -0
  104. package/dist/cli/commands/doctor.js +36 -4
  105. package/dist/cli/commands/doctor.js.map +1 -1
  106. package/dist/cli/commands/eval.d.ts +87 -0
  107. package/dist/cli/commands/eval.js +481 -0
  108. package/dist/cli/commands/eval.js.map +1 -0
  109. package/dist/cli/commands/rewards.d.ts +2 -0
  110. package/dist/cli/commands/rewards.js +39 -10
  111. package/dist/cli/commands/rewards.js.map +1 -1
  112. package/dist/cli/commands/solver-nets.d.ts +6 -0
  113. package/dist/cli/commands/solver-nets.js +177 -0
  114. package/dist/cli/commands/solver-nets.js.map +1 -1
  115. package/dist/cli/commands/solver-plugins.js +2 -2
  116. package/dist/cli/commands/solver-plugins.js.map +1 -1
  117. package/dist/cli/commands/status.js +0 -1
  118. package/dist/cli/commands/status.js.map +1 -1
  119. package/dist/cli/commands/update.js +8 -0
  120. package/dist/cli/commands/update.js.map +1 -1
  121. package/dist/cli/commands/version.js +4 -0
  122. package/dist/cli/commands/version.js.map +1 -1
  123. package/dist/cli/execution-context.js +2 -1
  124. package/dist/cli/execution-context.js.map +1 -1
  125. package/dist/cli/index.js +2 -0
  126. package/dist/cli/index.js.map +1 -1
  127. package/dist/cli/introspection-context.js +0 -3
  128. package/dist/cli/introspection-context.js.map +1 -1
  129. package/dist/config.d.ts +235 -541
  130. package/dist/config.js +278 -197
  131. package/dist/config.js.map +1 -1
  132. package/dist/contracts/abis.d.ts +100 -0
  133. package/dist/contracts/abis.js +58 -0
  134. package/dist/contracts/abis.js.map +1 -0
  135. package/dist/contracts/addresses.d.ts +36 -0
  136. package/dist/contracts/addresses.js +60 -0
  137. package/dist/contracts/addresses.js.map +1 -0
  138. package/dist/corpus/acquire.d.ts +7 -6
  139. package/dist/corpus/acquire.js +10 -10
  140. package/dist/corpus/acquire.js.map +1 -1
  141. package/dist/corpus/fetch-artifact.d.ts +21 -0
  142. package/dist/corpus/fetch-artifact.js +33 -0
  143. package/dist/corpus/fetch-artifact.js.map +1 -0
  144. package/dist/corpus/index.d.ts +2 -2
  145. package/dist/corpus/onchain-query.d.ts +0 -1
  146. package/dist/corpus/onchain-query.js +2 -5
  147. package/dist/corpus/onchain-query.js.map +1 -1
  148. package/dist/corpus/route-resolver.d.ts +3 -3
  149. package/dist/corpus/route-resolver.js +3 -3
  150. package/dist/daemon/ai-units-gate.d.ts +6 -6
  151. package/dist/daemon/ai-units-gate.js +11 -10
  152. package/dist/daemon/ai-units-gate.js.map +1 -1
  153. package/dist/daemon/balance-topup-loop.js +27 -9
  154. package/dist/daemon/balance-topup-loop.js.map +1 -1
  155. package/dist/daemon/checkpoint-loop.js +2 -2
  156. package/dist/daemon/creator.d.ts +1 -0
  157. package/dist/daemon/creator.js +39 -25
  158. package/dist/daemon/creator.js.map +1 -1
  159. package/dist/daemon/daemon.d.ts +22 -10
  160. package/dist/daemon/daemon.js +133 -43
  161. package/dist/daemon/daemon.js.map +1 -1
  162. package/dist/daemon/delivery-watcher.d.ts +9 -0
  163. package/dist/daemon/delivery-watcher.js +24 -1
  164. package/dist/daemon/delivery-watcher.js.map +1 -1
  165. package/dist/daemon/eviction-loop.d.ts +10 -0
  166. package/dist/daemon/eviction-loop.js +22 -3
  167. package/dist/daemon/eviction-loop.js.map +1 -1
  168. package/dist/daemon/harvest-loop.d.ts +63 -0
  169. package/dist/daemon/harvest-loop.js +449 -0
  170. package/dist/daemon/harvest-loop.js.map +1 -0
  171. package/dist/daemon/join-applier.d.ts +35 -0
  172. package/dist/daemon/join-applier.js +49 -0
  173. package/dist/daemon/join-applier.js.map +1 -0
  174. package/dist/daemon/loop-heartbeat.d.ts +95 -0
  175. package/dist/daemon/loop-heartbeat.js +80 -0
  176. package/dist/daemon/loop-heartbeat.js.map +1 -0
  177. package/dist/{api/peers.js → daemon/peer-sync.js} +3 -1
  178. package/dist/daemon/peer-sync.js.map +1 -0
  179. package/dist/daemon/reward-claim-loop.js +28 -10
  180. package/dist/daemon/reward-claim-loop.js.map +1 -1
  181. package/dist/daemon/skip-log-dedup.d.ts +1 -1
  182. package/dist/daemon/skip-log-dedup.js +3 -0
  183. package/dist/daemon/skip-log-dedup.js.map +1 -1
  184. package/dist/daemon/spend-cap-gate.d.ts +0 -6
  185. package/dist/daemon/spend-cap-gate.js +1 -8
  186. package/dist/daemon/spend-cap-gate.js.map +1 -1
  187. package/dist/daemon/watchdog-loop.d.ts +84 -0
  188. package/dist/daemon/watchdog-loop.js +91 -0
  189. package/dist/daemon/watchdog-loop.js.map +1 -0
  190. package/dist/dashboard/assets/index-CwclFsAm.js +95 -0
  191. package/dist/dashboard/assets/index-D7rvJRNa.css +1 -0
  192. package/dist/dashboard/index.html +2 -2
  193. package/dist/discovery/http.d.ts +17 -0
  194. package/dist/discovery/http.js +459 -26
  195. package/dist/discovery/http.js.map +1 -1
  196. package/dist/discovery/onchain.js +185 -10
  197. package/dist/discovery/onchain.js.map +1 -1
  198. package/dist/discovery/types.d.ts +188 -0
  199. package/dist/discovery/types.js +40 -0
  200. package/dist/discovery/types.js.map +1 -1
  201. package/dist/discovery/with-fallback.js +33 -0
  202. package/dist/discovery/with-fallback.js.map +1 -1
  203. package/dist/earning/bootstrap-run.d.ts +25 -0
  204. package/dist/earning/bootstrap-run.js +315 -0
  205. package/dist/earning/bootstrap-run.js.map +1 -0
  206. package/dist/earning/bootstrap.d.ts +31 -11
  207. package/dist/earning/bootstrap.js +124 -223
  208. package/dist/earning/bootstrap.js.map +1 -1
  209. package/dist/earning/contracts.d.ts +2 -232
  210. package/dist/earning/contracts.js +16 -205
  211. package/dist/earning/contracts.js.map +1 -1
  212. package/dist/earning/faucet-topup-store.d.ts +41 -0
  213. package/dist/earning/faucet-topup-store.js +89 -0
  214. package/dist/earning/faucet-topup-store.js.map +1 -0
  215. package/dist/earning/faucet.d.ts +1 -1
  216. package/dist/earning/faucet.js +2 -2
  217. package/dist/earning/faucet.js.map +1 -1
  218. package/dist/earning/master-gas.d.ts +10 -0
  219. package/dist/earning/master-gas.js +11 -0
  220. package/dist/earning/master-gas.js.map +1 -0
  221. package/dist/earning/safe-adapter.js +12 -45
  222. package/dist/earning/safe-adapter.js.map +1 -1
  223. package/dist/earning/steps/context.d.ts +42 -0
  224. package/dist/earning/steps/context.js +4 -0
  225. package/dist/earning/steps/context.js.map +1 -0
  226. package/dist/earning/steps/fleet-identity-register.d.ts +4 -0
  227. package/dist/earning/steps/fleet-identity-register.js +65 -0
  228. package/dist/earning/steps/fleet-identity-register.js.map +1 -0
  229. package/dist/earning/steps/fleet-safe-deploy.d.ts +4 -0
  230. package/dist/earning/steps/fleet-safe-deploy.js +62 -0
  231. package/dist/earning/steps/fleet-safe-deploy.js.map +1 -0
  232. package/dist/earning/steps/fleet-safe-predict.d.ts +4 -0
  233. package/dist/earning/steps/fleet-safe-predict.js +18 -0
  234. package/dist/earning/steps/fleet-safe-predict.js.map +1 -0
  235. package/dist/earning/steps/receipt-parsing.d.ts +12 -0
  236. package/dist/earning/steps/receipt-parsing.js +71 -0
  237. package/dist/earning/steps/receipt-parsing.js.map +1 -0
  238. package/dist/earning/stolas-claim.js +8 -8
  239. package/dist/earning/stolas-claim.js.map +1 -1
  240. package/dist/earning/{jinn-rewards.d.ts → stolas-staking.d.ts} +4 -8
  241. package/dist/earning/{jinn-rewards.js → stolas-staking.js} +25 -23
  242. package/dist/earning/stolas-staking.js.map +1 -0
  243. package/dist/earning/testnet-setup-migration.d.ts +1 -0
  244. package/dist/earning/testnet-setup-migration.js +7 -2
  245. package/dist/earning/testnet-setup-migration.js.map +1 -1
  246. package/dist/earning/types.d.ts +9 -9
  247. package/dist/earning/types.js +1 -1
  248. package/dist/earning/types.js.map +1 -1
  249. package/dist/earning/viem-clients.d.ts +3 -19
  250. package/dist/earning/viem-clients.js +4 -31
  251. package/dist/earning/viem-clients.js.map +1 -1
  252. package/dist/erc8004/addresses.d.ts +6 -5
  253. package/dist/erc8004/addresses.js +7 -5
  254. package/dist/erc8004/addresses.js.map +1 -1
  255. package/dist/erc8004/identity.d.ts +12 -1
  256. package/dist/erc8004/identity.js +31 -0
  257. package/dist/erc8004/identity.js.map +1 -1
  258. package/dist/erc8004/index.d.ts +1 -1
  259. package/dist/erc8004/index.js +1 -1
  260. package/dist/erc8004/index.js.map +1 -1
  261. package/dist/erc8004/reputation.js +16 -12
  262. package/dist/erc8004/reputation.js.map +1 -1
  263. package/dist/erc8004/validation.js +5 -4
  264. package/dist/erc8004/validation.js.map +1 -1
  265. package/dist/eval/capability-slate.d.ts +54 -0
  266. package/dist/eval/capability-slate.js +116 -0
  267. package/dist/eval/capability-slate.js.map +1 -0
  268. package/dist/eval/capability-stats.d.ts +39 -0
  269. package/dist/eval/capability-stats.js +123 -0
  270. package/dist/eval/capability-stats.js.map +1 -0
  271. package/dist/eval/contested-band.d.ts +18 -0
  272. package/dist/eval/contested-band.js +19 -0
  273. package/dist/eval/contested-band.js.map +1 -0
  274. package/dist/eval/corpus-index.d.ts +21 -0
  275. package/dist/eval/corpus-index.js +55 -0
  276. package/dist/eval/corpus-index.js.map +1 -0
  277. package/dist/eval/disjointness.d.ts +26 -0
  278. package/dist/eval/disjointness.js +67 -0
  279. package/dist/eval/disjointness.js.map +1 -0
  280. package/dist/eval/eval-harness-run.d.ts +63 -0
  281. package/dist/eval/eval-harness-run.js +123 -0
  282. package/dist/eval/eval-harness-run.js.map +1 -0
  283. package/dist/eval/mcnemar-power.d.ts +14 -0
  284. package/dist/eval/mcnemar-power.js +40 -0
  285. package/dist/eval/mcnemar-power.js.map +1 -0
  286. package/dist/eval/orchestrator.d.ts +224 -0
  287. package/dist/eval/orchestrator.js +250 -0
  288. package/dist/eval/orchestrator.js.map +1 -0
  289. package/dist/eval/paired.d.ts +68 -0
  290. package/dist/eval/paired.js +93 -0
  291. package/dist/eval/paired.js.map +1 -0
  292. package/dist/eval/resolve-slate-tasks.d.ts +35 -0
  293. package/dist/eval/resolve-slate-tasks.js +56 -0
  294. package/dist/eval/resolve-slate-tasks.js.map +1 -0
  295. package/dist/eval/screen-discovery.d.ts +22 -0
  296. package/dist/eval/screen-discovery.js +71 -0
  297. package/dist/eval/screen-discovery.js.map +1 -0
  298. package/dist/eval/screen-progress.d.ts +41 -0
  299. package/dist/eval/screen-progress.js +60 -0
  300. package/dist/eval/screen-progress.js.map +1 -0
  301. package/dist/eval/screen-runner.d.ts +30 -0
  302. package/dist/eval/screen-runner.js +289 -0
  303. package/dist/eval/screen-runner.js.map +1 -0
  304. package/dist/eval/screen.d.ts +107 -0
  305. package/dist/eval/screen.js +159 -0
  306. package/dist/eval/screen.js.map +1 -0
  307. package/dist/eval/slope.d.ts +29 -0
  308. package/dist/eval/slope.js +46 -0
  309. package/dist/eval/slope.js.map +1 -0
  310. package/dist/eval/train-sequence.d.ts +35 -0
  311. package/dist/eval/train-sequence.js +59 -0
  312. package/dist/eval/train-sequence.js.map +1 -0
  313. package/dist/eval/wilson.d.ts +45 -0
  314. package/dist/eval/wilson.js +48 -0
  315. package/dist/eval/wilson.js.map +1 -0
  316. package/dist/events/types.d.ts +1 -1
  317. package/dist/events/types.js +1 -1
  318. package/dist/events/types.js.map +1 -1
  319. package/dist/harnesses/auth-source.d.ts +51 -0
  320. package/dist/harnesses/auth-source.js +155 -0
  321. package/dist/harnesses/auth-source.js.map +1 -0
  322. package/dist/harnesses/engine/canonical-json.js +5 -3
  323. package/dist/harnesses/engine/canonical-json.js.map +1 -1
  324. package/dist/harnesses/engine/engine.d.ts +40 -1
  325. package/dist/harnesses/engine/engine.js +100 -11
  326. package/dist/harnesses/engine/engine.js.map +1 -1
  327. package/dist/harnesses/engine/packaging.js +5 -5
  328. package/dist/harnesses/engine/packaging.js.map +1 -1
  329. package/dist/harnesses/engine/persistence.d.ts +19 -61
  330. package/dist/harnesses/engine/persistence.js +28 -0
  331. package/dist/harnesses/engine/persistence.js.map +1 -1
  332. package/dist/harnesses/impls/_evaluator-base.d.ts +48 -0
  333. package/dist/harnesses/impls/_evaluator-base.js +35 -0
  334. package/dist/harnesses/impls/_evaluator-base.js.map +1 -0
  335. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +1 -1
  336. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js +1 -1
  337. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -1
  338. package/dist/harnesses/impls/claude-mcp-prediction/index.d.ts +2 -3
  339. package/dist/harnesses/impls/claude-mcp-prediction/index.js +29 -99
  340. package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -1
  341. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js +4 -21
  342. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -1
  343. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.d.ts +2 -0
  344. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +1 -1
  345. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
  346. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js +30 -79
  347. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -1
  348. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js +4 -19
  349. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -1
  350. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +2 -0
  351. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +1 -1
  352. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
  353. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.d.ts +39 -0
  354. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js +62 -0
  355. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js.map +1 -0
  356. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.d.ts +40 -0
  357. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js +44 -0
  358. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js.map +1 -0
  359. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.d.ts +56 -0
  360. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js +79 -0
  361. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js.map +1 -0
  362. package/dist/harnesses/impls/hermes-agent/adapter.d.ts +2 -0
  363. package/dist/harnesses/impls/hermes-agent/adapter.js +9 -6
  364. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  365. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +1 -0
  366. package/dist/harnesses/impls/hermes-agent/bootstrap.js +6 -1
  367. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  368. package/dist/harnesses/impls/hermes-agent/harness.d.ts +25 -3
  369. package/dist/harnesses/impls/hermes-agent/harness.js +89 -5
  370. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  371. package/dist/harnesses/impls/index.d.ts +2 -0
  372. package/dist/harnesses/impls/index.js +10 -1
  373. package/dist/harnesses/impls/index.js.map +1 -1
  374. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.d.ts +34 -0
  375. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js +111 -0
  376. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js.map +1 -0
  377. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.d.ts +24 -0
  378. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js +19 -0
  379. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js.map +1 -0
  380. package/dist/harnesses/impls/jinn-repo-evaluator/harness.d.ts +64 -0
  381. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js +125 -0
  382. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js.map +1 -0
  383. package/dist/harnesses/impls/jinn-repo-evaluator/repro.d.ts +32 -0
  384. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js +73 -0
  385. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js.map +1 -0
  386. package/dist/harnesses/impls/learner/adapters/claude-code.js +5 -0
  387. package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
  388. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +11 -1
  389. package/dist/harnesses/impls/learner/adapters/codex-code.js +130 -15
  390. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  391. package/dist/harnesses/impls/learner/harness.d.ts +29 -1
  392. package/dist/harnesses/impls/learner/harness.js +93 -1
  393. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  394. package/dist/harnesses/impls/learner/harvest.d.ts +2 -0
  395. package/dist/harnesses/impls/learner/harvest.js +51 -1
  396. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  397. package/dist/harnesses/impls/learner/plugin-path.js +1 -0
  398. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  399. package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +5 -15
  400. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js +10 -29
  401. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -1
  402. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.d.ts +5 -15
  403. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +10 -23
  404. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
  405. package/dist/harnesses/impls/prediction-v0-evaluator/index.d.ts +5 -15
  406. package/dist/harnesses/impls/prediction-v0-evaluator/index.js +10 -25
  407. package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -1
  408. package/dist/harnesses/impls/stub.d.ts +2 -2
  409. package/dist/harnesses/impls/stub.js +2 -2
  410. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +16 -2
  411. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  412. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +50 -6
  413. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +505 -35
  414. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  415. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +2 -2
  416. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +3 -1
  417. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  418. package/dist/harnesses/impls/swe-rebench-v2-evaluator/routing-task-row-fetcher.d.ts +37 -0
  419. package/dist/harnesses/impls/swe-rebench-v2-evaluator/routing-task-row-fetcher.js +59 -0
  420. package/dist/harnesses/impls/swe-rebench-v2-evaluator/routing-task-row-fetcher.js.map +1 -0
  421. package/dist/harnesses/readiness-registry.d.ts +16 -0
  422. package/dist/harnesses/readiness-registry.js +28 -6
  423. package/dist/harnesses/readiness-registry.js.map +1 -1
  424. package/dist/harnesses/types.d.ts +26 -0
  425. package/dist/learner/revert-decision.d.ts +16 -1
  426. package/dist/learner/revert-decision.js +38 -18
  427. package/dist/learner/revert-decision.js.map +1 -1
  428. package/dist/learner/revert-stats.d.ts +14 -0
  429. package/dist/learner/revert-stats.js +42 -0
  430. package/dist/learner/revert-stats.js.map +1 -1
  431. package/dist/learner/verification-gate.d.ts +53 -0
  432. package/dist/learner/verification-gate.js +80 -0
  433. package/dist/learner/verification-gate.js.map +1 -0
  434. package/dist/local-provider-url.d.ts +3 -0
  435. package/dist/local-provider-url.js +28 -0
  436. package/dist/local-provider-url.js.map +1 -0
  437. package/dist/main.js +236 -569
  438. package/dist/main.js.map +1 -1
  439. package/dist/mcp/acquire-artifact.d.ts +3 -3
  440. package/dist/mcp/acquire-artifact.js +3 -3
  441. package/dist/mcp/operator-server.js +1 -1
  442. package/dist/mcp/operator-server.js.map +1 -1
  443. package/dist/mcp/server.js +5 -6
  444. package/dist/mcp/server.js.map +1 -1
  445. package/dist/monitoring/net-liveness.d.ts +143 -0
  446. package/dist/monitoring/net-liveness.js +301 -0
  447. package/dist/monitoring/net-liveness.js.map +1 -0
  448. package/dist/observability/emit-event.d.ts +1 -1
  449. package/dist/observability/emit-event.js +1 -4
  450. package/dist/observability/emit-event.js.map +1 -1
  451. package/dist/observability/progress.d.ts +11 -0
  452. package/dist/observability/progress.js +16 -0
  453. package/dist/observability/progress.js.map +1 -0
  454. package/dist/pilot/arm-homes.d.ts +39 -0
  455. package/dist/pilot/arm-homes.js +104 -0
  456. package/dist/pilot/arm-homes.js.map +1 -0
  457. package/dist/pilot/cost.d.ts +19 -0
  458. package/dist/pilot/cost.js +31 -0
  459. package/dist/pilot/cost.js.map +1 -0
  460. package/dist/pilot/instance.d.ts +26 -0
  461. package/dist/pilot/instance.js +53 -0
  462. package/dist/pilot/instance.js.map +1 -0
  463. package/dist/pilot/pipeline.d.ts +17 -0
  464. package/dist/pilot/pipeline.js +35 -0
  465. package/dist/pilot/pipeline.js.map +1 -0
  466. package/dist/pilot/repo.d.ts +37 -0
  467. package/dist/pilot/repo.js +65 -0
  468. package/dist/pilot/repo.js.map +1 -0
  469. package/dist/pilot/resume.d.ts +101 -0
  470. package/dist/pilot/resume.js +204 -0
  471. package/dist/pilot/resume.js.map +1 -0
  472. package/dist/pilot/solve.d.ts +23 -0
  473. package/dist/pilot/solve.js +37 -0
  474. package/dist/pilot/solve.js.map +1 -0
  475. package/dist/pilot/tally.d.ts +42 -0
  476. package/dist/pilot/tally.js +100 -0
  477. package/dist/pilot/tally.js.map +1 -0
  478. package/dist/pilot/task-selection.d.ts +27 -0
  479. package/dist/pilot/task-selection.js +112 -0
  480. package/dist/pilot/task-selection.js.map +1 -0
  481. package/dist/plugins/learner/.claude-plugin/plugin.json +1 -1
  482. package/dist/plugins/learner/.codex-plugin/plugin.json +1 -1
  483. package/dist/plugins/learner/hooks/session-start +30 -1
  484. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  485. package/dist/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
  486. package/dist/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
  487. package/dist/plugins/local-trace-distiller/.mcp.json +8 -0
  488. package/dist/plugins/local-trace-distiller/README.md +27 -0
  489. package/dist/plugins/local-trace-distiller/jinn.plugin.json +36 -0
  490. package/dist/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
  491. package/dist/plugins/resolvers.js +7 -4
  492. package/dist/plugins/resolvers.js.map +1 -1
  493. package/dist/plugins/types.d.ts +8 -0
  494. package/dist/preflight/deployment-readiness.d.ts +127 -0
  495. package/dist/preflight/deployment-readiness.js +308 -0
  496. package/dist/preflight/deployment-readiness.js.map +1 -0
  497. package/dist/preflight/pidfile-liveness.d.ts +7 -1
  498. package/dist/preflight/pidfile-liveness.js +14 -0
  499. package/dist/preflight/pidfile-liveness.js.map +1 -1
  500. package/dist/preflight/rpc-network.d.ts +10 -3
  501. package/dist/preflight/rpc-network.js +46 -13
  502. package/dist/preflight/rpc-network.js.map +1 -1
  503. package/dist/preflight/stable-cwd.d.ts +29 -0
  504. package/dist/preflight/stable-cwd.js +98 -0
  505. package/dist/preflight/stable-cwd.js.map +1 -0
  506. package/dist/rpc/transport.d.ts +43 -5
  507. package/dist/rpc/transport.js +131 -30
  508. package/dist/rpc/transport.js.map +1 -1
  509. package/dist/scripts/swe-rebench-v2-evaluator.bundle.v1.patch +79 -0
  510. package/dist/scripts/swe-rebench-v2-seed-pool.json +2 -1
  511. package/dist/solver-nets/registry.d.ts +19 -0
  512. package/dist/solver-nets/registry.js +95 -66
  513. package/dist/solver-nets/registry.js.map +1 -1
  514. package/dist/solver-types/_jinn-repo-pool.d.ts +27 -0
  515. package/dist/solver-types/_jinn-repo-pool.js +27 -0
  516. package/dist/solver-types/_jinn-repo-pool.js.map +1 -0
  517. package/dist/solver-types/_swe-rebench-v2-commit-echo-git.d.ts +46 -0
  518. package/dist/solver-types/_swe-rebench-v2-commit-echo-git.js +192 -0
  519. package/dist/solver-types/_swe-rebench-v2-commit-echo-git.js.map +1 -0
  520. package/dist/solver-types/_swe-rebench-v2-commit-echo.d.ts +57 -0
  521. package/dist/solver-types/_swe-rebench-v2-commit-echo.js +57 -0
  522. package/dist/solver-types/_swe-rebench-v2-commit-echo.js.map +1 -0
  523. package/dist/solver-types/_swe-rebench-v2-differential-admission.d.ts +395 -0
  524. package/dist/solver-types/_swe-rebench-v2-differential-admission.js +231 -0
  525. package/dist/solver-types/_swe-rebench-v2-differential-admission.js.map +1 -0
  526. package/dist/solver-types/_swe-rebench-v2-empirical-tests.d.ts +47 -0
  527. package/dist/solver-types/_swe-rebench-v2-empirical-tests.js +67 -0
  528. package/dist/solver-types/_swe-rebench-v2-empirical-tests.js.map +1 -0
  529. package/dist/solver-types/_swe-rebench-v2-escrow.d.ts +2 -0
  530. package/dist/solver-types/_swe-rebench-v2-escrow.js +13 -0
  531. package/dist/solver-types/_swe-rebench-v2-escrow.js.map +1 -1
  532. package/dist/solver-types/_swe-rebench-v2-guards.d.ts +42 -0
  533. package/dist/solver-types/_swe-rebench-v2-guards.js +111 -0
  534. package/dist/solver-types/_swe-rebench-v2-guards.js.map +1 -0
  535. package/dist/solver-types/_swe-rebench-v2-harvest-state.d.ts +191 -0
  536. package/dist/solver-types/_swe-rebench-v2-harvest-state.js +349 -0
  537. package/dist/solver-types/_swe-rebench-v2-harvest-state.js.map +1 -0
  538. package/dist/solver-types/_swe-rebench-v2-harvest.d.ts +92 -0
  539. package/dist/solver-types/_swe-rebench-v2-harvest.js +456 -0
  540. package/dist/solver-types/_swe-rebench-v2-harvest.js.map +1 -0
  541. package/dist/solver-types/_swe-rebench-v2-held-out-slate.d.ts +76 -0
  542. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js +156 -0
  543. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js.map +1 -0
  544. package/dist/solver-types/_swe-rebench-v2-hunk-echo.d.ts +28 -0
  545. package/dist/solver-types/_swe-rebench-v2-hunk-echo.js +32 -0
  546. package/dist/solver-types/_swe-rebench-v2-hunk-echo.js.map +1 -0
  547. package/dist/solver-types/_swe-rebench-v2-lookup-tripwire.d.ts +16 -0
  548. package/dist/solver-types/_swe-rebench-v2-lookup-tripwire.js +18 -0
  549. package/dist/solver-types/_swe-rebench-v2-lookup-tripwire.js.map +1 -0
  550. package/dist/solver-types/_swe-rebench-v2-mint-cli.d.ts +73 -0
  551. package/dist/solver-types/_swe-rebench-v2-mint-cli.js +388 -0
  552. package/dist/solver-types/_swe-rebench-v2-mint-cli.js.map +1 -0
  553. package/dist/solver-types/_swe-rebench-v2-minted-environment-verifier.d.ts +25 -0
  554. package/dist/solver-types/_swe-rebench-v2-minted-environment-verifier.js +101 -0
  555. package/dist/solver-types/_swe-rebench-v2-minted-environment-verifier.js.map +1 -0
  556. package/dist/solver-types/_swe-rebench-v2-minted-pool.d.ts +144 -0
  557. package/dist/solver-types/_swe-rebench-v2-minted-pool.js +353 -0
  558. package/dist/solver-types/_swe-rebench-v2-minted-pool.js.map +1 -0
  559. package/dist/solver-types/_swe-rebench-v2-pool-recovery.d.ts +81 -0
  560. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js +116 -0
  561. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js.map +1 -0
  562. package/dist/solver-types/_swe-rebench-v2-state.d.ts +9 -0
  563. package/dist/solver-types/_swe-rebench-v2-state.js +14 -0
  564. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
  565. package/dist/solver-types/_swe-rebench-v2-substrate.d.ts +11 -0
  566. package/dist/solver-types/_swe-rebench-v2-substrate.js +24 -0
  567. package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
  568. package/dist/solver-types/_swe-rebench-v2-synthetic-claim.d.ts +9 -0
  569. package/dist/solver-types/_swe-rebench-v2-synthetic-claim.js +16 -0
  570. package/dist/solver-types/_swe-rebench-v2-synthetic-claim.js.map +1 -0
  571. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +88 -1
  572. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +202 -14
  573. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  574. package/dist/solver-types/_swe-rebench-v2-yield-report-data.d.ts +5 -0
  575. package/dist/solver-types/_swe-rebench-v2-yield-report-data.js +16 -0
  576. package/dist/solver-types/_swe-rebench-v2-yield-report-data.js.map +1 -0
  577. package/dist/solver-types/_swe-rebench-v2-yield.d.ts +51 -0
  578. package/dist/solver-types/_swe-rebench-v2-yield.js +53 -0
  579. package/dist/solver-types/_swe-rebench-v2-yield.js.map +1 -0
  580. package/dist/solver-types/index.js +2 -0
  581. package/dist/solver-types/index.js.map +1 -1
  582. package/dist/solver-types/jinn-repo-admit.d.ts +17 -0
  583. package/dist/solver-types/jinn-repo-admit.js +16 -0
  584. package/dist/solver-types/jinn-repo-admit.js.map +1 -0
  585. package/dist/solver-types/jinn-repo-auto.d.ts +60 -0
  586. package/dist/solver-types/jinn-repo-auto.js +163 -0
  587. package/dist/solver-types/jinn-repo-auto.js.map +1 -0
  588. package/dist/solver-types/jinn-repo-definition.d.ts +15 -0
  589. package/dist/solver-types/jinn-repo-definition.js +34 -0
  590. package/dist/solver-types/jinn-repo-definition.js.map +1 -0
  591. package/dist/solver-types/jinn-repo-extract.d.ts +16 -0
  592. package/dist/solver-types/jinn-repo-extract.js +32 -0
  593. package/dist/solver-types/jinn-repo-extract.js.map +1 -0
  594. package/dist/solver-types/jinn-repo.d.ts +21 -0
  595. package/dist/solver-types/jinn-repo.js +23 -0
  596. package/dist/solver-types/jinn-repo.js.map +1 -0
  597. package/dist/solver-types/learner-loop-test.js +1 -1
  598. package/dist/solver-types/learner-loop-test.js.map +1 -1
  599. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json +20 -0
  600. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.json +19 -0
  601. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.screening-report.json +628 -0
  602. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v3.json +34 -0
  603. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v3.quality-screen.json +186 -0
  604. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v3.screening-report.json +488 -0
  605. package/dist/solver-types/solver-type.d.ts +8 -0
  606. package/dist/solver-types/swe-rebench-v2-auto.d.ts +13 -0
  607. package/dist/solver-types/swe-rebench-v2-auto.js +36 -1
  608. package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
  609. package/dist/solver-types/swe-rebench-v2.d.ts +2 -0
  610. package/dist/solver-types/swe-rebench-v2.js +153 -12
  611. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  612. package/dist/solvernets/launched-record-dispatcher.d.ts +5 -0
  613. package/dist/solvernets/launched-record-dispatcher.js +14 -1
  614. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  615. package/dist/solvernets/registry-client-erc8004.js +29 -37
  616. package/dist/solvernets/registry-client-erc8004.js.map +1 -1
  617. package/dist/solvernets/registry-client.d.ts +6 -0
  618. package/dist/solvernets/store.d.ts +1 -1
  619. package/dist/solvernets/store.js +8 -3
  620. package/dist/solvernets/store.js.map +1 -1
  621. package/dist/spend/ai-units-config.d.ts +10 -0
  622. package/dist/spend/ai-units-config.js +7 -1
  623. package/dist/spend/ai-units-config.js.map +1 -1
  624. package/dist/spend/ai-units.d.ts +51 -0
  625. package/dist/spend/ai-units.js +73 -0
  626. package/dist/spend/ai-units.js.map +1 -1
  627. package/dist/spend/credential.d.ts +2 -2
  628. package/dist/spend/credential.js +9 -3
  629. package/dist/spend/credential.js.map +1 -1
  630. package/dist/spend/record.js +12 -5
  631. package/dist/spend/record.js.map +1 -1
  632. package/dist/spend/spend-cap.d.ts +10 -0
  633. package/dist/spend/spend-cap.js +13 -0
  634. package/dist/spend/spend-cap.js.map +1 -0
  635. package/dist/spend/usage.js +39 -3
  636. package/dist/spend/usage.js.map +1 -1
  637. package/dist/store/store.d.ts +106 -5
  638. package/dist/store/store.js +194 -8
  639. package/dist/store/store.js.map +1 -1
  640. package/dist/task-creator/environment/adapters.d.ts +139 -0
  641. package/dist/task-creator/environment/adapters.js +446 -0
  642. package/dist/task-creator/environment/adapters.js.map +1 -0
  643. package/dist/task-creator/environment/build.d.ts +5 -0
  644. package/dist/task-creator/environment/build.js +53 -0
  645. package/dist/task-creator/environment/build.js.map +1 -0
  646. package/dist/task-creator/environment/contracts.d.ts +1338 -0
  647. package/dist/task-creator/environment/contracts.js +207 -0
  648. package/dist/task-creator/environment/contracts.js.map +1 -0
  649. package/dist/task-creator/environment/github.d.ts +25 -0
  650. package/dist/task-creator/environment/github.js +67 -0
  651. package/dist/task-creator/environment/github.js.map +1 -0
  652. package/dist/task-creator/environment/interfaces.d.ts +60 -0
  653. package/dist/task-creator/environment/interfaces.js +3 -0
  654. package/dist/task-creator/environment/interfaces.js.map +1 -0
  655. package/dist/task-creator/environment/jinn-differential-policy.d.ts +22 -0
  656. package/dist/task-creator/environment/jinn-differential-policy.js +73 -0
  657. package/dist/task-creator/environment/jinn-differential-policy.js.map +1 -0
  658. package/dist/task-creator/environment/policy.d.ts +38 -0
  659. package/dist/task-creator/environment/policy.js +51 -0
  660. package/dist/task-creator/environment/policy.js.map +1 -0
  661. package/dist/task-creator/environment/publication.d.ts +39 -0
  662. package/dist/task-creator/environment/publication.js +139 -0
  663. package/dist/task-creator/environment/publication.js.map +1 -0
  664. package/dist/task-creator/environment/publish-cli.d.ts +427 -0
  665. package/dist/task-creator/environment/publish-cli.js +180 -0
  666. package/dist/task-creator/environment/publish-cli.js.map +1 -0
  667. package/dist/task-creator/environment/recipes.d.ts +19 -0
  668. package/dist/task-creator/environment/recipes.js +122 -0
  669. package/dist/task-creator/environment/recipes.js.map +1 -0
  670. package/dist/task-creator/environment/resolver.d.ts +53 -0
  671. package/dist/task-creator/environment/resolver.js +57 -0
  672. package/dist/task-creator/environment/resolver.js.map +1 -0
  673. package/dist/task-creator/proofs/differential-receipt-bound-proof.d.ts +27 -0
  674. package/dist/task-creator/proofs/differential-receipt-bound-proof.js +86 -0
  675. package/dist/task-creator/proofs/differential-receipt-bound-proof.js.map +1 -0
  676. package/dist/task-creator/proofs/ipfs-cid.d.ts +7 -0
  677. package/dist/task-creator/proofs/ipfs-cid.js +98 -0
  678. package/dist/task-creator/proofs/ipfs-cid.js.map +1 -0
  679. package/dist/task-creator/proofs/live-proof.d.ts +99 -0
  680. package/dist/task-creator/proofs/live-proof.js +419 -0
  681. package/dist/task-creator/proofs/live-proof.js.map +1 -0
  682. package/dist/task-creator/proofs/public-repo-fixtures.d.ts +53 -0
  683. package/dist/task-creator/proofs/public-repo-fixtures.js +93 -0
  684. package/dist/task-creator/proofs/public-repo-fixtures.js.map +1 -0
  685. package/dist/task-creator/proofs/vitest-json-fixture.d.ts +40 -0
  686. package/dist/task-creator/proofs/vitest-json-fixture.js +115 -0
  687. package/dist/task-creator/proofs/vitest-json-fixture.js.map +1 -0
  688. package/dist/trajectory/emit.d.ts +6 -0
  689. package/dist/trajectory/emit.js +9 -1
  690. package/dist/trajectory/emit.js.map +1 -1
  691. package/dist/trajectory/harness-bundle-schema.d.ts +1 -1
  692. package/dist/trajectory/harness-bundle-schema.js +1 -1
  693. package/dist/trajectory/harness-bundle-schema.js.map +1 -1
  694. package/dist/trajectory/processors/identity-scrub.js +22 -3
  695. package/dist/trajectory/processors/identity-scrub.js.map +1 -1
  696. package/dist/trajectory/schema.d.ts +9 -1
  697. package/dist/trajectory/schema.js +5 -1
  698. package/dist/trajectory/schema.js.map +1 -1
  699. package/dist/trajectory/scrub/build.d.ts +49 -0
  700. package/dist/trajectory/scrub/build.js +89 -0
  701. package/dist/trajectory/scrub/build.js.map +1 -0
  702. package/dist/trajectory/scrub/emit-scrub.d.ts +41 -0
  703. package/dist/trajectory/scrub/emit-scrub.js +88 -0
  704. package/dist/trajectory/scrub/emit-scrub.js.map +1 -0
  705. package/dist/trajectory/scrub/key-policy.d.ts +20 -0
  706. package/dist/trajectory/scrub/key-policy.js +43 -0
  707. package/dist/trajectory/scrub/key-policy.js.map +1 -0
  708. package/dist/trajectory/scrub/layer2.d.ts +23 -0
  709. package/dist/trajectory/scrub/layer2.js +33 -0
  710. package/dist/trajectory/scrub/layer2.js.map +1 -0
  711. package/dist/trajectory/scrub/mineable-trace-gate.d.ts +9 -0
  712. package/dist/trajectory/scrub/mineable-trace-gate.js +33 -0
  713. package/dist/trajectory/scrub/mineable-trace-gate.js.map +1 -0
  714. package/dist/trajectory/scrub/ml-pii-stage.d.ts +24 -0
  715. package/dist/trajectory/scrub/ml-pii-stage.js +43 -0
  716. package/dist/trajectory/scrub/ml-pii-stage.js.map +1 -0
  717. package/dist/trajectory/scrub/openredaction-stage.d.ts +178 -0
  718. package/dist/trajectory/scrub/openredaction-stage.js +269 -0
  719. package/dist/trajectory/scrub/openredaction-stage.js.map +1 -0
  720. package/dist/trajectory/scrub/pii-build.d.ts +31 -0
  721. package/dist/trajectory/scrub/pii-build.js +64 -0
  722. package/dist/trajectory/scrub/pii-build.js.map +1 -0
  723. package/dist/trajectory/scrub/pipeline.d.ts +37 -0
  724. package/dist/trajectory/scrub/pipeline.js +83 -0
  725. package/dist/trajectory/scrub/pipeline.js.map +1 -0
  726. package/dist/trajectory/scrub/plain-patterns-stage.d.ts +31 -0
  727. package/dist/trajectory/scrub/plain-patterns-stage.js +85 -0
  728. package/dist/trajectory/scrub/plain-patterns-stage.js.map +1 -0
  729. package/dist/trajectory/scrub/secretlint-stage.d.ts +35 -0
  730. package/dist/trajectory/scrub/secretlint-stage.js +250 -0
  731. package/dist/trajectory/scrub/secretlint-stage.js.map +1 -0
  732. package/dist/trajectory/scrub/transformers-detector.d.ts +35 -0
  733. package/dist/trajectory/scrub/transformers-detector.js +68 -0
  734. package/dist/trajectory/scrub/transformers-detector.js.map +1 -0
  735. package/dist/trajectory/scrub/types.d.ts +25 -0
  736. package/dist/trajectory/scrub/types.js +2 -0
  737. package/dist/trajectory/scrub/types.js.map +1 -0
  738. package/dist/trajectory/transcript-parsers/types.d.ts +1 -1
  739. package/dist/trajectory/transcript-parsers/types.js +1 -1
  740. package/dist/trajectory/transcript-parsers/types.js.map +1 -1
  741. package/dist/trajectory/transcript-watcher.d.ts +26 -0
  742. package/dist/trajectory/transcript-watcher.js +33 -0
  743. package/dist/trajectory/transcript-watcher.js.map +1 -1
  744. package/dist/tx-retry.d.ts +12 -0
  745. package/dist/tx-retry.js +41 -12
  746. package/dist/tx-retry.js.map +1 -1
  747. package/dist/types/envelope.d.ts +45 -1
  748. package/dist/types/envelope.js +1 -1
  749. package/dist/types/envelope.js.map +1 -1
  750. package/dist/types/payloads/index.d.ts +1 -1
  751. package/dist/types/payloads/index.js +7 -1
  752. package/dist/types/payloads/index.js.map +1 -1
  753. package/dist/types/payloads/portfolio-v0.d.ts +1 -1
  754. package/dist/types/payloads/portfolio-v0.js +1 -1
  755. package/dist/types/payloads/portfolio-v0.js.map +1 -1
  756. package/dist/types/payloads/prediction-apy-v0.d.ts +1 -1
  757. package/dist/types/payloads/prediction-apy-v0.js +1 -1
  758. package/dist/types/payloads/prediction-apy-v0.js.map +1 -1
  759. package/dist/types/payloads/prediction-v0.d.ts +1 -1
  760. package/dist/types/payloads/prediction-v0.js +1 -1
  761. package/dist/types/payloads/prediction-v0.js.map +1 -1
  762. package/dist/types/portfolio.d.ts +1 -1
  763. package/dist/types/portfolio.js +1 -1
  764. package/dist/types/portfolio.js.map +1 -1
  765. package/dist/types/prediction-apy.d.ts +1 -1
  766. package/dist/types/prediction-apy.js +1 -1
  767. package/dist/types/prediction-apy.js.map +1 -1
  768. package/dist/types/prediction.d.ts +1 -1
  769. package/dist/types/prediction.js +1 -1
  770. package/dist/types/prediction.js.map +1 -1
  771. package/dist/types/session-provenance.d.ts +9 -1
  772. package/dist/types/session-provenance.js +5 -1
  773. package/dist/types/session-provenance.js.map +1 -1
  774. package/dist/types/skill-artifact.d.ts +442 -0
  775. package/dist/types/skill-artifact.js +137 -0
  776. package/dist/types/skill-artifact.js.map +1 -0
  777. package/dist/types/task-document.d.ts +315 -1
  778. package/dist/types/task-document.js +9 -1
  779. package/dist/types/task-document.js.map +1 -1
  780. package/dist/types/task-run-read-model.d.ts +21 -0
  781. package/dist/types/task-run-read-model.js +2 -0
  782. package/dist/types/task-run-read-model.js.map +1 -0
  783. package/dist/types/task-run.d.ts +75 -0
  784. package/dist/types/task-run.js +2 -0
  785. package/dist/types/task-run.js.map +1 -0
  786. package/dist/types/task.d.ts +29 -1
  787. package/dist/types/task.js +1 -1
  788. package/dist/types/task.js.map +1 -1
  789. package/dist/types/window.d.ts +1 -1
  790. package/dist/types/window.js +1 -1
  791. package/dist/types/window.js.map +1 -1
  792. package/dist/util/redact-rpc-urls.d.ts +1 -1
  793. package/dist/util/redact-rpc-urls.js +57 -2
  794. package/dist/util/redact-rpc-urls.js.map +1 -1
  795. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +1 -1
  796. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +1 -1
  797. package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +3 -2
  798. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +49 -0
  799. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.d.ts +44 -0
  800. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.js +25 -0
  801. package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +1 -1
  802. package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +1 -1
  803. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.d.ts +38 -0
  804. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.js +22 -0
  805. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +1 -1
  806. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +1 -1
  807. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +1 -1
  808. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +1 -1
  809. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +109 -2
  810. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +26 -2
  811. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +1 -1
  812. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +1 -1
  813. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.d.ts +4 -0
  814. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.js +2 -0
  815. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +1 -1
  816. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -1
  817. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.d.ts +65 -0
  818. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.js +123 -0
  819. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +2 -2
  820. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +1 -1
  821. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +34 -6
  822. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +28 -5
  823. package/dist/vendor/@jinn-network/sdk/package.json +9 -1
  824. package/docker-compose.yml +3 -2
  825. package/package.json +58 -29
  826. package/plugins/jinn-repo-runtime/.claude-plugin/plugin.json +5 -0
  827. package/plugins/jinn-repo-runtime/.codex-plugin/plugin.json +39 -0
  828. package/plugins/jinn-repo-runtime/README.md +27 -0
  829. package/plugins/jinn-repo-runtime/hooks/hooks.json +16 -0
  830. package/plugins/jinn-repo-runtime/hooks/session-start +73 -0
  831. package/plugins/jinn-repo-runtime/jinn.plugin.json +11 -0
  832. package/plugins/jinn-repo-runtime/skills/task/SKILL.md +92 -0
  833. package/plugins/learner/.claude-plugin/plugin.json +1 -1
  834. package/plugins/learner/.codex-plugin/plugin.json +1 -1
  835. package/plugins/learner/hooks/session-start +30 -1
  836. package/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  837. package/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
  838. package/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
  839. package/plugins/local-trace-distiller/.mcp.json +8 -0
  840. package/plugins/local-trace-distiller/README.md +27 -0
  841. package/plugins/local-trace-distiller/jinn.plugin.json +36 -0
  842. package/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
  843. package/plugins/swe-rebench-v2-runtime/hooks/hooks.json +16 -0
  844. package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
  845. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +0 -55
  846. package/deployments/deployment-jinn-mvi-l1-sepolia.json +0 -55
  847. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +0 -13
  848. package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +0 -15
  849. package/dist/api/peers.js.map +0 -1
  850. package/dist/daemon/jinn-claim-loop-canonical.d.ts +0 -207
  851. package/dist/daemon/jinn-claim-loop-canonical.js +0 -296
  852. package/dist/daemon/jinn-claim-loop-canonical.js.map +0 -1
  853. package/dist/daemon/jinn-claim-loop-mock.d.ts +0 -61
  854. package/dist/daemon/jinn-claim-loop-mock.js +0 -122
  855. package/dist/daemon/jinn-claim-loop-mock.js.map +0 -1
  856. package/dist/daemon/jinn-claim-loop-wiring.d.ts +0 -33
  857. package/dist/daemon/jinn-claim-loop-wiring.js +0 -40
  858. package/dist/daemon/jinn-claim-loop-wiring.js.map +0 -1
  859. package/dist/daemon/jinn-claim-loop.d.ts +0 -130
  860. package/dist/daemon/jinn-claim-loop.js +0 -328
  861. package/dist/daemon/jinn-claim-loop.js.map +0 -1
  862. package/dist/dashboard/assets/index-CzKxvMcU.css +0 -32
  863. package/dist/dashboard/assets/index-yVemxHot.js +0 -351
  864. package/dist/earning/jinn-rewards.js.map +0 -1
  865. package/dist/scripts/donation-consumption-acceptance.d.ts +0 -85
  866. package/dist/scripts/donation-consumption-acceptance.js +0 -1382
  867. package/dist/scripts/donation-consumption-acceptance.js.map +0 -1
  868. package/dist/x402/acquire.d.ts +0 -17
  869. package/dist/x402/acquire.js +0 -49
  870. package/dist/x402/acquire.js.map +0 -1
  871. package/dist/x402/facilitator.d.ts +0 -11
  872. package/dist/x402/facilitator.js +0 -52
  873. package/dist/x402/facilitator.js.map +0 -1
  874. package/dist/x402/handler.d.ts +0 -27
  875. package/dist/x402/handler.js +0 -236
  876. package/dist/x402/handler.js.map +0 -1
  877. /package/dist/{api/peers.d.ts → daemon/peer-sync.d.ts} +0 -0
package/CONTRIBUTING.md CHANGED
@@ -74,7 +74,7 @@ The `files` field in `package.json` ensures only `dist/`, `deployments/`, `READM
74
74
 
75
75
  ## Releases
76
76
 
77
- Use [RELEASING.md](./RELEASING.md) for the package bootstrap publish, npm trusted-publishing setup, canary/stable release flow, the fork-based operator gate (`yarn release:operator-gate`), the cross-operator donation consumption gate (`yarn release:donation-consumption`), the contracts release gate (`cd ../contracts && yarn test && forge install foundry-rs/forge-std --no-git && forge test --match-contract Invariant`), and the manual Docker-first real testnet acceptance gate (`yarn release:testnet-acceptance`) that must pass on the exact stable release commit. The dedicated Docker acceptance environment and evidence expectations are documented in [TESTNET_ACCEPTANCE.md](./TESTNET_ACCEPTANCE.md).
77
+ Use [RELEASING.md](./RELEASING.md) for the package bootstrap publish, npm trusted-publishing setup, canary/stable release flow, the fork-based operator gate (`yarn release:operator-gate`), the OLAS rails smoke gate (`yarn release:olas-rails-smoke`), the contracts release gate (`cd ../contracts && yarn test && forge install foundry-rs/forge-std --no-git && forge test --match-contract Invariant`), and the manual Docker-first real testnet acceptance gate (`yarn release:testnet-acceptance`) that must pass on the exact stable release commit. The dedicated Docker acceptance environment and evidence expectations are documented in [TESTNET_ACCEPTANCE.md](./TESTNET_ACCEPTANCE.md).
78
78
 
79
79
  ## Updating deployment artifacts
80
80
 
@@ -98,7 +98,7 @@ This copies the 4 deployment JSON files from `contracts/` into `client/deploymen
98
98
  | `yarn staking` | Earning bootstrap validation on Anvil fork |
99
99
  | `yarn pack:smoke` | Pack tarball and run smoke tests |
100
100
  | `yarn release:operator-gate` | Run the stable-release operator gate (`staking` then `e2e`) |
101
- | `yarn release:donation-consumption` | Prove two isolated operators can consume donated SWE execution data through real testnet on-chain/IPFS/MCP paths |
101
+ | `yarn release:olas-rails-smoke` | Dry-run by default: writes a prediction.v1 smoke spec and evidence plan; pass `--execute` for live Base Sepolia OLAS rails proof |
102
102
  | `cd ../contracts && yarn test && forge install foundry-rs/forge-std --no-git && forge test --match-contract Invariant` | Run the contracts release gate |
103
103
  | `yarn release:testnet-acceptance` | Run the manual Docker-first real testnet acceptance harness |
104
104
  | `yarn setup:testnet-acceptance-operator` | First-time Docker acceptance setup + bootstrap/funding helper (`TESTNET_ACCEPTANCE.md`) |
package/README.md CHANGED
@@ -184,6 +184,12 @@ returns `waiting_for_external_action` with the URL and the exact command to
184
184
  rerun next. Agents with the `jinn-operator` skill installed know how to walk an
185
185
  operator through a SolverNet automatically.
186
186
 
187
+ Each Harness reads its **own** auth store (the daemon only forwards an
188
+ allowlisted set of env vars — it does not hold your provider keys). For the
189
+ per-harness auth store, the canonical rotate command/file, and why `client/.env`
190
+ must not be used to set provider keys at runtime, see
191
+ [`docs/operator/rotating-harness-keys.md`](../docs/operator/rotating-harness-keys.md).
192
+
187
193
  **Safety net:** before spending gas on a claim, the daemon checks whether the
188
194
  responsible Harness is actually ready. If a portfolio.v0 request arrives and your
189
195
  api-wallet isn't approved, the daemon records the Task as FAILED locally
@@ -2,7 +2,7 @@
2
2
  "network": "baseSepolia",
3
3
  "chainId": 84532,
4
4
  "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
5
- "deployedAt": "2026-04-09T13:21:20.747Z",
5
+ "deployedAt": "2026-06-30T16:18:56.618Z",
6
6
  "config": {
7
7
  "timingProfile": "fast-test",
8
8
  "fee": 0,
@@ -18,9 +18,9 @@
18
18
  "mechMarketplace": "0xD3233FdAaB51E9775f6bFCE8242B02C181D7c0e7",
19
19
  "balanceTracker": "0xDbeEF1947F7BB3657f984aA6b230a0ca6578229D",
20
20
  "mechFactory": "0x206183F35B2450Ca15A906BB923E74d945F78d67",
21
- "jinnRouter": "0x13dae57a54A7DF862113BcA8Ee2fd3dEf6a6A94A",
21
+ "jinnRouter": "0x6059Dd37eB0FD3a55BCe7A3C1fA86AB84F2d9675",
22
22
  "serviceRegistry": "0x31D3202d8744B16A120117A053459DDFAE93c855",
23
23
  "activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
24
- "stakingToken": "0x24e34E5037956a5Feca1AAAfaA30297084C228B8"
24
+ "stakingToken": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39"
25
25
  }
26
26
  }
@@ -2,10 +2,10 @@
2
2
  "network": "baseSepolia",
3
3
  "chainId": 84532,
4
4
  "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
5
- "deployedAt": "2026-04-10T16:46:00.888Z",
5
+ "deployedAt": "2026-06-30T16:18:56.618Z",
6
6
  "config": {
7
7
  "l2Jinn": "0xAB9a01cd4A379e36006ec6df2960CF39EF79df63",
8
- "stakingContract": "0xf358b5c1ac4ddc4e807b5baf008826bf193eab3b",
8
+ "stakingContract": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39",
9
9
  "l1DepositProcessor": "0x494FBcd686C895fD6265e852086B53Abf15cb076",
10
10
  "l1DistributorProxy": "0x12F14eF5b4881a932BE3F334599cB9473aBE987A",
11
11
  "l1TreasuryProxy": "0xa87c117cB54d9C6C8a8e0aA0b336a1125E485Cb7",
@@ -31,5 +31,25 @@
31
31
  "stakingManagerImpl": "0xFb0B086D3f7C03f1F671C6ccD5D16CC779B25Af9",
32
32
  "stakingManager": "0x5edCd012C581b946E06a74e1906a5f29D588403e",
33
33
  "baseStakingProcessorL2": "0x23a063f600e9938405D0367a137f1bE2F0B4D0D2"
34
- }
34
+ },
35
+ "rewires": [
36
+ {
37
+ "rewiredAt": "2026-06-29T14:53:46.226Z",
38
+ "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
39
+ "legacyStakingProxy": "0xf358b5c1ac4ddc4e807b5baf008826bf193eab3b",
40
+ "freshStakingProxy": "0x3A14c71e94F3d38A6BE4319808B259FbFb47B86f",
41
+ "activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
42
+ "packedConfig": "2199023257600001",
43
+ "fundWei": "100000000000000000000"
44
+ },
45
+ {
46
+ "rewiredAt": "2026-06-30T16:18:56.618Z",
47
+ "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
48
+ "legacyStakingProxy": "0x3A14c71e94F3d38A6BE4319808B259FbFb47B86f",
49
+ "freshStakingProxy": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39",
50
+ "activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
51
+ "packedConfig": "2199023257600001",
52
+ "fundWei": "100000000000000000000"
53
+ }
54
+ ]
35
55
  }
@@ -3,7 +3,7 @@
3
3
  "chainId": 84532,
4
4
  "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
5
5
  "owner": "0x15e78734481bD31F6e183dad05225505a45ACd07",
6
- "deployedAt": "2026-05-02T12:27:26.420Z",
6
+ "deployedAt": "2026-06-29T14:52:46.003Z",
7
7
  "config": {
8
8
  "timingProfile": "fast-test",
9
9
  "mechMarketplaceSource": "deployment-phase1b-mech-baseSepolia-fast.json",
@@ -11,13 +11,13 @@
11
11
  "coordinatorInitialOwner": "0x15e78734481bD31F6e183dad05225505a45ACd07"
12
12
  },
13
13
  "contracts": {
14
- "taskCoordinatorImpl": "0x830bFdBdA48D599e414c51888c8CDA6c84e67B18",
15
- "taskCoordinator": "0x9ce736d3CB367cC5Db538B7962bdf416EbD7451B",
16
- "jinnRouterV3Impl": "0x5f3E1e26Fd26b7A6BE4171976e555d62Bd3dcFC0",
17
- "jinnRouterV3": "0xdC9BCcEB7aca21Ad4Ca2Fc5B4d7aea6b4F6CedD9",
14
+ "taskCoordinatorImpl": "0xC756D4A5b7a6a7C2F74Fa4Ce4fd84E7b82D223ca",
15
+ "taskCoordinator": "0x8a34793e10595c89B7e41Cc7Ff0F76850F44AD98",
16
+ "jinnRouterV3Impl": "0x2521e932B2508B2589cCc35F8cfB8B29f0e086D5",
17
+ "jinnRouterV3": "0x6f47863Ac4120A5a97Af224a5e30C3Ec2c9eA247",
18
18
  "mechMarketplace": "0xD3233FdAaB51E9775f6bFCE8242B02C181D7c0e7",
19
19
  "activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
20
- "activityCheckerImpl": "0x9e573CFbbc52729528199005A9F3d274FE7052C4"
20
+ "activityCheckerImpl": "0x3f061273348264b2a1Ae584eCC614185748832a8"
21
21
  },
22
22
  "upgrades": [
23
23
  {
@@ -33,6 +33,34 @@
33
33
  "jinnRouterV3Impl": "0x5f3E1e26Fd26b7A6BE4171976e555d62Bd3dcFC0",
34
34
  "activityCheckerImpl": "0x9e573CFbbc52729528199005A9F3d274FE7052C4"
35
35
  }
36
+ },
37
+ {
38
+ "upgradedAt": "2026-05-06T13:41:14.651Z",
39
+ "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
40
+ "previous": {
41
+ "taskCoordinatorImpl": "0x830bFdBdA48D599e414c51888c8CDA6c84e67B18",
42
+ "jinnRouterV3Impl": "0x5f3E1e26Fd26b7A6BE4171976e555d62Bd3dcFC0",
43
+ "activityCheckerImpl": "0x9e573CFbbc52729528199005A9F3d274FE7052C4"
44
+ },
45
+ "current": {
46
+ "taskCoordinatorImpl": "0x047C9d27acD5cd860398389f48b87d42BEaCd8fd",
47
+ "jinnRouterV3Impl": "0xDb713EB5F1827C5764e7B0E4c7d8951BeD2ba0ee",
48
+ "activityCheckerImpl": "0x84E0302460Ab11B2169a2D00336C049Ab650a4aC"
49
+ }
50
+ },
51
+ {
52
+ "upgradedAt": "2026-06-29T14:52:46.003Z",
53
+ "deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
54
+ "previous": {
55
+ "taskCoordinatorImpl": "0x047C9d27acD5cd860398389f48b87d42BEaCd8fd",
56
+ "jinnRouterV3Impl": "0xDb713EB5F1827C5764e7B0E4c7d8951BeD2ba0ee",
57
+ "activityCheckerImpl": "0x84E0302460Ab11B2169a2D00336C049Ab650a4aC"
58
+ },
59
+ "current": {
60
+ "taskCoordinatorImpl": "0x69f857b222D970460202e9C94c6205Be87582610",
61
+ "jinnRouterV3Impl": "0x7c1F768E92c7Fd84e789CB7748B70340B876E25d",
62
+ "activityCheckerImpl": "0x916027798716518a601824ea1A6f09105a152C36"
63
+ }
36
64
  }
37
65
  ]
38
66
  }
@@ -52,7 +52,26 @@ export declare class MechAdapter implements ExecutionAdapter {
52
52
  constructor(config: MechAdapterConfig, store?: Store);
53
53
  initialize(): Promise<void>;
54
54
  private recoverPendingState;
55
- private onchainTaskDiscoveryFromBlock;
55
+ /**
56
+ * The gh #300 scorability admission floor: tasks created before this block are
57
+ * "ghosts" from a prior eval-semantics regime and are rejected — including on
58
+ * the `DiscoveryAPI` (indexer) path. Fixed per chain; an explicit operator
59
+ * `onchainFromBlock` raises it. Returns `undefined` when no SolverNet is joined
60
+ * (the daemon claims nothing, so there is no floor to apply).
61
+ *
62
+ * This is deliberately NOT the on-chain scan start — see `onchainScanFromBlock`.
63
+ * Bounding the scan for RPC cost must never narrow which tasks are admitted.
64
+ */
65
+ private taskAdmissionFloorBlock;
66
+ /**
67
+ * Start block for the on-chain TaskCreated backlog scan (the secondary backstop
68
+ * behind `DiscoveryAPI.findClaimableTasks`). Defaults to a bounded rolling
69
+ * window `head − DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS`, never below the admission
70
+ * floor (scanning pre-floor blocks only surfaces rejected ghosts). An explicit
71
+ * `onchainFromBlock` override pins an absolute start, honored as the operator's
72
+ * choice. Returns `undefined` when no SolverNet is joined.
73
+ */
74
+ private onchainScanFromBlock;
56
75
  private joinedManifestDigestSet;
57
76
  private allowedDiscoveryTaskIds;
58
77
  private isDiscoveryTaskAllowed;
@@ -89,6 +108,16 @@ export declare class MechAdapter implements ExecutionAdapter {
89
108
  private buildEvaluationTask;
90
109
  private restorationAnnouncementForTaskId;
91
110
  private restorationAnnouncementFromDigest;
111
+ /**
112
+ * #1412: a task's execution window (task.window.endTs) is only known after
113
+ * IPFS hydration, not from any on-chain/discovery candidate shape. The
114
+ * engine kills the harness subprocess the instant this window is in the
115
+ * past (engine.ts: setTimeout(abort, max(0, endTs - now)) fires at 0ms), so
116
+ * claiming an already-expired task always fails with no chance of a real
117
+ * solve. Both discovery paths (DiscoveryAPI and the on-chain TaskCreated
118
+ * backlog scan) must skip these before spending a claim tx on a doomed run.
119
+ */
120
+ private hasExpiredExecutionWindow;
92
121
  private discoverSubgraphRestorationTasks;
93
122
  /**
94
123
  * Look up the Deliver-event envelope CID for a pending evaluation solution.
@@ -118,6 +147,7 @@ export declare class MechAdapter implements ExecutionAdapter {
118
147
  submitSolutionDelivery(requestId: RequestId, solutionDigest: Hex): Promise<void>;
119
148
  submitVerdictDelivery(requestId: RequestId, verdictDigest: Hex, verdictCode: VerdictCode): Promise<void>;
120
149
  private deliveryClaimForDelivery;
150
+ private verdictCodeFromEnvelopePayload;
121
151
  private ensureDeliveryClaimed;
122
152
  /**
123
153
  * Paginate `getLogs` over `[deliveryBlockCursor+1, currentBlock]` chunked by
@@ -1,4 +1,4 @@
1
- import { getAddress, zeroAddress } from 'viem';
1
+ import { getAddress } from 'viem';
2
2
  import { keccak256, toBytes } from 'viem';
3
3
  import { privateKeyToAccount } from 'viem/accounts';
4
4
  import { base, baseSepolia } from 'viem/chains';
@@ -16,10 +16,11 @@ function rpcUrlForDisplay(rpcUrl) {
16
16
  import { buildResultPayload, uploadToIpfs, cidToDigestHex, fetchFromIpfs, fetchSignedTaskFromIpfs, fetchSignedEnvelopeFromIpfs, } from './ipfs.js';
17
17
  import { canonicalJson } from '../../harnesses/engine/canonical-json.js';
18
18
  import { normalizeEnvelopeRole, SignedEnvelopeSchema } from '../../types/envelope.js';
19
- import { submitTask, claimTask as claimTaskOnchain, claimEvaluation as claimEvaluationOnchain, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeTaskCreatedLogs, decodeSolutionDeliveryClaimedLogs, decodeDeliverLogs, findLatestDeliveryDataHexForRequest, getMarketplaceRequestDeliveryMech, getTaskCidDigest, callDeliverToMarketplace, canClaimTask, canClaimEvaluation, } from './contracts.js';
19
+ import { submitTask, claimTask as claimTaskOnchain, claimEvaluation as claimEvaluationOnchain, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeTaskCreatedLogs, decodeSolutionDeliveryClaimedLogs, decodeDeliverLogs, ROUTER_DISCOVERY_EVENTS, MECH_DELIVER_EVENT, findLatestDeliveryDataHexForRequest, getMarketplaceRequestDeliveryMech, getTaskCidDigest, callDeliverToMarketplace, canClaimTask, canClaimEvaluation, } from './contracts.js';
20
20
  import { SafeInnerRevertError, formatDecodedRevert, isNonRecoverableInnerRevert, } from './safe-revert.js';
21
- import { verdictCodeFromValue } from './verdict-code.js';
21
+ import { VerdictCode, verdictCodeFromValue } from './verdict-code.js';
22
22
  import { manifestDigestForCid } from './digest.js';
23
+ import { recordLoopTick } from '../../daemon/loop-heartbeat.js';
23
24
  import { emitStructured } from '../../events/emitter.js';
24
25
  import { withRecoverableRetry } from '../../tx-retry.js';
25
26
  import { formatRpcError } from '../../rpc-error-context.js';
@@ -64,6 +65,20 @@ function isTerminalEvaluationReason(revertName) {
64
65
  return isNonRecoverableInnerRevert(revertName);
65
66
  }
66
67
  const DEFAULT_ROUTER_LOG_CHUNK_BLOCKS = 9999n;
68
+ /**
69
+ * Default rolling-window size for the on-chain TaskCreated backlog scan (#801).
70
+ *
71
+ * The scan is a *backstop* behind `DiscoveryAPI.findClaimableTasks` (the indexer
72
+ * on testnet, the newest-first RPC floor on mainnet), which is the primary
73
+ * discovery path on every chain. Without a bound the scan replays from the fixed
74
+ * admission floor to head on *every* restart, a range that grows monotonically
75
+ * with the chain — the startup-stall regression #801 documents. Bounding it to
76
+ * `head − N` makes restart cost fixed regardless of chain age while still
77
+ * re-observing a generous recent window (~28h on Base at ~2s/block) for tasks
78
+ * and SolutionDeliveryClaimed events the indexer might have lagged on. Operators
79
+ * who want a wider net pin an absolute start via `taskDiscoveryOnchainFromBlock`.
80
+ */
81
+ const DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS = 50000n;
67
82
  /**
68
83
  * Floor block for the on-chain TaskCreated backlog scan, per chain.
69
84
  *
@@ -173,7 +188,7 @@ export class MechAdapter {
173
188
  await this.recoverPendingState(blockNumber);
174
189
  }
175
190
  else {
176
- const fromBlock = this.onchainTaskDiscoveryFromBlock();
191
+ const fromBlock = this.onchainScanFromBlock(blockNumber);
177
192
  if (fromBlock && fromBlock <= blockNumber) {
178
193
  this.requestBlockCursor = fromBlock - 1n;
179
194
  }
@@ -193,17 +208,27 @@ export class MechAdapter {
193
208
  if (routerFromBlock < currentBlock) {
194
209
  this.requestBlockCursor = routerFromBlock;
195
210
  }
196
- const scanFromBlock = this.onchainTaskDiscoveryFromBlock();
211
+ const scanFromBlock = this.onchainScanFromBlock(currentBlock);
197
212
  if (scanFromBlock && scanFromBlock <= currentBlock) {
198
213
  const canonicalCursor = scanFromBlock - 1n;
199
214
  if (canonicalCursor < this.requestBlockCursor) {
200
215
  this.requestBlockCursor = canonicalCursor;
201
216
  }
202
- console.error(`[mech] TaskCreated canonical backlog scan enabled from block ${scanFromBlock}; ` +
203
- 'subgraph discovery is optional acceleration only');
217
+ console.error(`[mech] TaskCreated backlog scan (bounded backstop) enabled from block ${scanFromBlock}; ` +
218
+ 'DiscoveryAPI.findClaimableTasks is the primary discovery path');
204
219
  }
205
220
  }
206
- onchainTaskDiscoveryFromBlock() {
221
+ /**
222
+ * The gh #300 scorability admission floor: tasks created before this block are
223
+ * "ghosts" from a prior eval-semantics regime and are rejected — including on
224
+ * the `DiscoveryAPI` (indexer) path. Fixed per chain; an explicit operator
225
+ * `onchainFromBlock` raises it. Returns `undefined` when no SolverNet is joined
226
+ * (the daemon claims nothing, so there is no floor to apply).
227
+ *
228
+ * This is deliberately NOT the on-chain scan start — see `onchainScanFromBlock`.
229
+ * Bounding the scan for RPC cost must never narrow which tasks are admitted.
230
+ */
231
+ taskAdmissionFloorBlock() {
207
232
  const discovery = this.config.taskDiscovery;
208
233
  const hasJoinedSolverNet = (discovery?.solverNetManifestCids?.length ?? 0) > 0;
209
234
  if (!hasJoinedSolverNet)
@@ -215,6 +240,24 @@ export class MechAdapter {
215
240
  }
216
241
  return DEFAULT_TASK_DISCOVERY_FROM_BLOCK[this.config.chainId];
217
242
  }
243
+ /**
244
+ * Start block for the on-chain TaskCreated backlog scan (the secondary backstop
245
+ * behind `DiscoveryAPI.findClaimableTasks`). Defaults to a bounded rolling
246
+ * window `head − DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS`, never below the admission
247
+ * floor (scanning pre-floor blocks only surfaces rejected ghosts). An explicit
248
+ * `onchainFromBlock` override pins an absolute start, honored as the operator's
249
+ * choice. Returns `undefined` when no SolverNet is joined.
250
+ */
251
+ onchainScanFromBlock(head) {
252
+ const floor = this.taskAdmissionFloorBlock();
253
+ if (floor === undefined)
254
+ return undefined;
255
+ // An explicit override is reflected verbatim in `floor`; honor it as the pin.
256
+ if (this.config.taskDiscovery?.onchainFromBlock !== undefined)
257
+ return floor;
258
+ const window = head - DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS;
259
+ return window > floor ? window : floor;
260
+ }
218
261
  joinedManifestDigestSet() {
219
262
  const cids = this.config.taskDiscovery?.solverNetManifestCids ?? [];
220
263
  return new Set(cids
@@ -236,8 +279,13 @@ export class MechAdapter {
236
279
  const end = start + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS > toBlock
237
280
  ? toBlock
238
281
  : start + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS;
282
+ // #116: filter server-side to the two router events the poll loop decodes
283
+ // (TaskCreated + SolutionDeliveryClaimed) via an OR-of-topic0, instead of an
284
+ // address-only scan that decode-discards the rest. Chunking is unchanged —
285
+ // a topic filter shrinks the result set, not the permitted block range.
239
286
  logs.push(...await this.publicClient.getLogs({
240
287
  address: this.config.routerAddress,
288
+ events: ROUTER_DISCOVERY_EVENTS,
241
289
  fromBlock: start,
242
290
  toBlock: end,
243
291
  }));
@@ -399,7 +447,9 @@ export class MechAdapter {
399
447
  const restorationDataHex = cidToDigestHex(restorationCid);
400
448
  const digestNo0x = restorationDataHex.startsWith('0x') ? restorationDataHex.slice(2) : restorationDataHex;
401
449
  const restorationTaskCid = `f01551220${digestNo0x}`;
402
- const deliveryRate = await getMechDeliveryRate(this.publicClient, this.config.mechContractAddress);
450
+ const baseDeliveryRate = await getMechDeliveryRate(this.publicClient, this.config.mechContractAddress);
451
+ const { resolveMintedTaskDeliveryRate } = await import('../../solver-types/_swe-rebench-v2-escrow.js');
452
+ const deliveryRate = resolveMintedTaskDeliveryRate(baseDeliveryRate, signedTask.eligibility);
403
453
  const { max: maxTimeout } = await getTimeoutBounds(this.publicClient, this.config.mechMarketplaceAddress);
404
454
  // Task 24 (spec/2026-05-05-solvernet-creation-and-launch.md §14): the
405
455
  // on-chain digest is now manifest-bound — `keccak256(manifestCid)` —
@@ -481,45 +531,25 @@ export class MechAdapter {
481
531
  return signTaskV1(taskDoc, this.config.agentEoaPrivateKey);
482
532
  }
483
533
  contractPolicyForTask(state) {
484
- const nowSeconds = Math.floor(Date.now() / 1000);
534
+ // Tokenless-OLAS pivot: the on-chain TaskCoordinator.TaskPolicy is the
535
+ // launcher-funded attempt count (`maxClaims`) plus the self-evaluation gate
536
+ // (`allowSolverSelfEvaluation`). Windows, lease, and quorum do NOT cross the
537
+ // wire — that off-chain scheduling intent stays in the task.v1 `claimPolicy`
538
+ // field (still carried on the signed task document and read by the local
539
+ // scheduler).
540
+ //
541
+ // `allowSolverSelfEvaluation` comes from the off-chain `claimPolicy` when it
542
+ // sets the flag explicitly; that explicit value always wins. When it is
543
+ // absent (the common case — the auto-generators do not set it) the default
544
+ // is network-keyed: TRUE on testnet (Base Sepolia, 84532) so a single
545
+ // operator can solve + self-evaluate + close the loop solo for dogfooding,
546
+ // and FALSE on mainnet to preserve the independent-evaluation invariant (the
547
+ // coordinator rejects a verdict whose evaluator is the attempt's solver).
485
548
  const claimPolicy = state.claimPolicy ?? DEFAULT_MECH_CLAIM_POLICY;
486
- const normalizeTs = (value, fallback) => {
487
- const raw = value ?? fallback;
488
- return BigInt(raw > 10_000_000_000 ? Math.floor(raw / 1000) : raw);
489
- };
490
- const claimWindowStart = normalizeTs(claimPolicy.claimWindowStartTs ?? state.window?.startTs, nowSeconds);
491
- const claimWindowEnd = normalizeTs(claimPolicy.claimWindowEndTs ?? state.window?.endTs, nowSeconds + 30 * 60);
492
- const submissionDeadline = normalizeTs(claimPolicy.submissionDeadlineTs, Number(claimWindowEnd) + claimPolicy.claimLeaseTtlSeconds);
549
+ const isTestnet = this.config.chainId === 84532;
493
550
  return {
494
- claimWindowStart,
495
- claimWindowEnd,
496
- submissionDeadline,
497
- claimLeaseTtlSeconds: claimPolicy.claimLeaseTtlSeconds,
498
551
  maxClaims: claimPolicy.maxClaims,
499
- maxClaimsPerOperator: claimPolicy.maxClaimsPerOperator,
500
- policyHook: (claimPolicy.policyHook ?? zeroAddress),
501
- evaluationPolicy: {
502
- // `requiredVerdicts` defaults to 1 but is overridable via the task's
503
- // claim policy. A value > 1 opens additional verdict claim slots per
504
- // attempt; combined with the per-evaluator cap below (1), it
505
- // guarantees an honest evaluator can still claim and deliver a slot
506
- // even when other evaluators have squatted some — the structural fix
507
- // for a shared/adversarial testnet where a non-delivering claimer
508
- // would otherwise permanently lock a single-slot attempt.
509
- requiredVerdicts: claimPolicy.requiredVerdicts ?? 1,
510
- passThreshold: 1,
511
- evaluationDeadline: submissionDeadline + BigInt(claimPolicy.claimLeaseTtlSeconds),
512
- maxVerdictsPerEvaluator: 1,
513
- // Allow the same operator to evaluate its own Solution on Base Sepolia
514
- // (84532) so a single dogfood daemon can close the full
515
- // post→claim→solve→grade→settle loop without standing up a second
516
- // operator. Mainnet (8453) keeps the protocol-level protection.
517
- // TODO: revert to unconditional `true` before mainnet launch, OR move
518
- // this to a per-SolverNet manifest field so individual launchers can
519
- // opt in to single-operator dogfood while the protocol default stays
520
- // strict.
521
- disallowSolverSelfEvaluation: this.config.chainId !== 84532,
522
- },
552
+ allowSolverSelfEvaluation: claimPolicy.allowSolverSelfEvaluation ?? isTestnet,
523
553
  };
524
554
  }
525
555
  buildEvaluationTask(params) {
@@ -576,6 +606,19 @@ export class MechAdapter {
576
606
  this.observedTasks.set(params.taskId, announcement);
577
607
  return announcement;
578
608
  }
609
+ /**
610
+ * #1412: a task's execution window (task.window.endTs) is only known after
611
+ * IPFS hydration, not from any on-chain/discovery candidate shape. The
612
+ * engine kills the harness subprocess the instant this window is in the
613
+ * past (engine.ts: setTimeout(abort, max(0, endTs - now)) fires at 0ms), so
614
+ * claiming an already-expired task always fails with no chance of a real
615
+ * solve. Both discovery paths (DiscoveryAPI and the on-chain TaskCreated
616
+ * backlog scan) must skip these before spending a claim tx on a doomed run.
617
+ */
618
+ hasExpiredExecutionWindow(announcement) {
619
+ const windowEndTs = announcement.task.window?.endTs;
620
+ return windowEndTs !== undefined && windowEndTs <= Date.now();
621
+ }
579
622
  async *discoverSubgraphRestorationTasks() {
580
623
  const discovery = this.config.taskDiscovery;
581
624
  const discoveryApi = discovery?.discoveryApi;
@@ -598,7 +641,7 @@ export class MechAdapter {
598
641
  console.error('[mech] task discovery (DiscoveryAPI) failed:', err instanceof Error ? err.message : err);
599
642
  return;
600
643
  }
601
- const discoveryFloorBlock = this.onchainTaskDiscoveryFromBlock();
644
+ const discoveryFloorBlock = this.taskAdmissionFloorBlock();
602
645
  for (const candidate of candidates) {
603
646
  if (!this.isDiscoveryTaskAllowed(candidate.taskId))
604
647
  continue;
@@ -636,12 +679,15 @@ export class MechAdapter {
636
679
  // cycle we let the engine apply its gate to each one, preserving the
637
680
  // round-robin fairness across joined SolverNets. See task 212 live
638
681
  // verification in the fix's commit body.
639
- yield await this.restorationAnnouncementFromDigest({
682
+ const announcement = await this.restorationAnnouncementFromDigest({
640
683
  taskId: candidate.taskId,
641
684
  taskCidDigest: candidate.taskCidDigest,
642
685
  transactionHash: candidate.createdAtTx,
643
686
  blockNumber: candidate.createdAtBlock,
644
687
  });
688
+ if (this.hasExpiredExecutionWindow(announcement))
689
+ continue;
690
+ yield announcement;
645
691
  }
646
692
  catch (err) {
647
693
  console.error(`[mech] failed to hydrate subgraph task ${candidate.taskId}:`, err instanceof Error ? err.message : err);
@@ -794,10 +840,6 @@ export class MechAdapter {
794
840
  for (const solution of submittedSolutions) {
795
841
  this.rememberPendingEvaluationSolution(solution);
796
842
  }
797
- this.requestBlockCursor = currentBlock;
798
- if (this.store) {
799
- this.store.setConfigValue(ROUTER_REQUEST_CURSOR_CONFIG_KEY, currentBlock.toString());
800
- }
801
843
  const joinedManifestDigests = this.joinedManifestDigestSet();
802
844
  const createdTasks = decodeTaskCreatedLogs(logs);
803
845
  for (const { taskId, taskCidDigest, manifestDigest, transactionHash, blockNumber } of createdTasks) {
@@ -817,6 +859,8 @@ export class MechAdapter {
817
859
  transactionHash,
818
860
  blockNumber,
819
861
  });
862
+ if (this.hasExpiredExecutionWindow(announcement))
863
+ continue;
820
864
  yield announcement;
821
865
  }
822
866
  catch (err) {
@@ -826,6 +870,10 @@ export class MechAdapter {
826
870
  for await (const announcement of this.retryPendingEvaluationSolutions()) {
827
871
  yield announcement;
828
872
  }
873
+ this.requestBlockCursor = currentBlock;
874
+ if (this.store) {
875
+ this.store.setConfigValue(ROUTER_REQUEST_CURSOR_CONFIG_KEY, currentBlock.toString());
876
+ }
829
877
  }
830
878
  }
831
879
  catch (err) {
@@ -837,6 +885,10 @@ export class MechAdapter {
837
885
  fromBlock: this.requestBlockCursor + 1n,
838
886
  }));
839
887
  }
888
+ // #1043/#1038: heartbeat at the poll-cycle tail (every poll, even when
889
+ // nothing was yielded) so an idle-but-polling loop never looks stale.
890
+ if (this.store)
891
+ recordLoopTick(this.store, 'engine-watcher');
840
892
  await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
841
893
  }
842
894
  }
@@ -930,15 +982,31 @@ export class MechAdapter {
930
982
  }
931
983
  const kind = role === 'verdict' ? 'verdict' : 'solution';
932
984
  const payload = rawSigned['payload'];
933
- const rawVerdict = payload != null && typeof payload === 'object'
934
- ? payload['verdict']
985
+ const verdictCode = kind === 'verdict'
986
+ ? this.verdictCodeFromEnvelopePayload(parsed.solverType, payload)
935
987
  : undefined;
936
988
  return {
937
989
  evidenceHash: recomputed,
938
990
  kind,
939
- verdictCode: kind === 'verdict' ? verdictCodeFromValue(rawVerdict) : undefined,
991
+ verdictCode,
940
992
  };
941
993
  }
994
+ verdictCodeFromEnvelopePayload(solverType, payload) {
995
+ if (payload == null || typeof payload !== 'object') {
996
+ throw new Error(`missing verdict payload for solverType=${solverType}; refusing to claim Invalid(3) without an explicit evaluator verdict`);
997
+ }
998
+ const record = payload;
999
+ const rawVerdict = record['verdict'];
1000
+ if (rawVerdict !== undefined)
1001
+ return verdictCodeFromValue(rawVerdict);
1002
+ if (solverType === 'swe-rebench-v2.v1') {
1003
+ const passedMatch = record['passed_match'];
1004
+ if (typeof passedMatch === 'boolean') {
1005
+ return passedMatch ? VerdictCode.Pass : VerdictCode.Fail;
1006
+ }
1007
+ }
1008
+ throw new Error(`missing verdict signal for solverType=${solverType}; refusing to claim Invalid(3) without an explicit evaluator verdict`);
1009
+ }
942
1010
  async ensureDeliveryClaimed(requestId, deliveryDataHex) {
943
1011
  let claimOptions;
944
1012
  try {
@@ -1001,8 +1069,11 @@ export class MechAdapter {
1001
1069
  const chunkEnd = chunkStart + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS > currentBlock
1002
1070
  ? currentBlock
1003
1071
  : chunkStart + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS;
1072
+ // #116: pin the mech `Deliver` topic server-side rather than fetching the
1073
+ // whole address and decode-discarding. Range/chunking unchanged.
1004
1074
  const logs = await this.publicClient.getLogs({
1005
1075
  address: this.config.mechContractAddress,
1076
+ event: MECH_DELIVER_EVENT,
1006
1077
  fromBlock: chunkStart,
1007
1078
  toBlock: chunkEnd,
1008
1079
  });
@@ -1114,6 +1185,10 @@ export class MechAdapter {
1114
1185
  }
1115
1186
  // Cursor persistence is per-chunk inside the loop above (#552). A poll
1116
1187
  // that did no chunked work has no progress to persist.
1188
+ // #1043/#1038: heartbeat at the poll-cycle tail (every poll, even when
1189
+ // nothing was yielded) so an idle-but-polling loop never looks stale.
1190
+ if (this.store)
1191
+ recordLoopTick(this.store, 'delivery-watcher');
1117
1192
  await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
1118
1193
  }
1119
1194
  }