mlx-bun 0.5.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/README.md +1449 -109
  2. package/THIRD_PARTY_NOTICES.md +882 -0
  3. package/bin/mlx-bun.convert.mjs +4 -0
  4. package/bin/mlx-bun.fuse.mjs +4 -0
  5. package/bin/mlx-bun.generate.mjs +4 -0
  6. package/bin/mlx-bun.lora.mjs +4 -0
  7. package/bin/mlx-bun.mjs +13 -21
  8. package/bin/mlx-bun.server.mjs +4 -0
  9. package/bin/mlx-bun.upload.mjs +4 -0
  10. package/dist/web/app.js +9584 -0
  11. package/package.json +50 -53
  12. package/src/cli/ane-install.ts +76 -0
  13. package/src/cli/args.ts +179 -0
  14. package/src/cli/engine-entry.ts +68 -0
  15. package/src/cli/inference.ts +214 -0
  16. package/src/cli/job-entry.ts +97 -0
  17. package/src/cli/library-host.ts +117 -0
  18. package/src/cli/main.ts +57 -0
  19. package/src/cli/memory-engine.ts +163 -0
  20. package/src/cli/memory.ts +36 -0
  21. package/src/cli/mlx-lm-aliases.ts +309 -0
  22. package/src/cli/model-choice.ts +33 -0
  23. package/src/cli/model-selection.ts +84 -0
  24. package/src/cli/module-host.ts +11 -0
  25. package/src/cli/module-verbs.ts +50 -0
  26. package/src/cli/numerical-policy.ts +12 -0
  27. package/src/cli/perplexity.ts +89 -0
  28. package/src/cli/serve-host.ts +423 -0
  29. package/src/cli/serve-isolated.ts +217 -0
  30. package/src/cli/serve-options.ts +106 -0
  31. package/src/cli/serve-state.ts +205 -0
  32. package/src/cli/serve.ts +500 -0
  33. package/src/cli/served-model-host.ts +102 -0
  34. package/src/cli/server-entry.ts +148 -0
  35. package/src/cli/serving-unit.ts +177 -0
  36. package/src/{tui.ts → cli/terminal.ts} +13 -8
  37. package/src/cli/worker-adapters.ts +34 -0
  38. package/src/cli/worker-entry.ts +272 -0
  39. package/src/cli/worker-unit.ts +179 -0
  40. package/src/engine/adapter-operation.ts +26 -0
  41. package/src/engine/cache-services.ts +114 -0
  42. package/src/engine/completion.ts +39 -0
  43. package/src/engine/generation-gateway.ts +358 -0
  44. package/src/engine/index.ts +59 -0
  45. package/src/engine/kv-budget.ts +120 -0
  46. package/src/engine/media-preparation.ts +232 -0
  47. package/src/engine/model-binding.ts +24 -0
  48. package/src/engine/model-host.ts +513 -0
  49. package/src/engine/model-serving.ts +89 -0
  50. package/src/{serve → engine}/preparation.ts +7 -5
  51. package/src/{serve → engine}/session-completion-engine.ts +6 -6
  52. package/src/engine/telemetry.ts +109 -0
  53. package/src/hub/downloads.ts +116 -0
  54. package/src/jobs/db.ts +16 -7
  55. package/src/jobs/events.ts +29 -0
  56. package/src/jobs/executable.ts +5 -0
  57. package/src/jobs/host.ts +51 -0
  58. package/src/jobs/in-process.ts +55 -0
  59. package/src/{contracts/jobs.ts → jobs/protocol.ts} +7 -9
  60. package/src/jobs/runner.ts +150 -231
  61. package/src/jobs/service.ts +75 -0
  62. package/src/jobs/sse.ts +59 -23
  63. package/src/jobs/worker-memory.ts +46 -0
  64. package/src/jobs/worker-process.ts +163 -0
  65. package/src/jobs/worker-supervisor.ts +258 -0
  66. package/src/modules.ts +58 -0
  67. package/src/publishing/catalog-hub.ts +18 -0
  68. package/src/publishing/credentials.ts +31 -0
  69. package/src/publishing/upload.ts +37 -0
  70. package/src/residency/leased-adapters.ts +21 -0
  71. package/src/residency/local-records.ts +16 -0
  72. package/src/residency/model-residency.ts +405 -0
  73. package/src/residency/record-index.ts +28 -0
  74. package/src/residency/resident-estimate.ts +50 -0
  75. package/src/{anthropic.ts → server/anthropic.ts} +3 -81
  76. package/src/server/cache-routes.ts +36 -0
  77. package/src/{serve → server}/chat-request.ts +10 -10
  78. package/src/{serve → server}/chat-stage.ts +14 -14
  79. package/src/{client.ts → server/client.ts} +28 -2
  80. package/src/{serve → server}/completion-executor.ts +33 -41
  81. package/src/server/decision-body.ts +55 -0
  82. package/src/server/decision-routes.ts +134 -0
  83. package/src/server/decision-wire.ts +228 -0
  84. package/src/{serve → server}/discovery-routes.ts +25 -82
  85. package/src/{serve → server}/http.ts +25 -13
  86. package/src/{serve → server}/inference-request.ts +5 -5
  87. package/src/server/job-routes.ts +20 -0
  88. package/src/server/media-prompt.ts +63 -0
  89. package/src/server/memory-completion-client.ts +46 -0
  90. package/src/server/model-routes.ts +192 -0
  91. package/src/{serve → server}/openai-wire.ts +3 -2
  92. package/src/{serve → server}/pipeline.ts +1 -1
  93. package/src/server/prompt-builder.ts +13 -0
  94. package/src/server/prompt-contracts.ts +17 -0
  95. package/src/server/proxy-routes.ts +187 -0
  96. package/src/server/publishing-routes.ts +41 -0
  97. package/src/{serve → server}/request-plan.ts +6 -8
  98. package/src/{serve → server}/request-prep.ts +47 -50
  99. package/src/{serve → server}/responses-client.ts +30 -13
  100. package/src/{responses.ts → server/responses.ts} +12 -93
  101. package/src/server/routes.ts +205 -0
  102. package/src/server/start.ts +72 -0
  103. package/src/server/status-routes.ts +108 -0
  104. package/src/{serve → server}/text-completion-stage.ts +25 -4
  105. package/src/server/text-prompt.ts +12 -0
  106. package/src/{serve → server}/token-streams.ts +36 -38
  107. package/src/server/worker-routes.ts +311 -0
  108. package/src/storage/paths.ts +61 -0
  109. package/src/web/assets.ts +37 -0
  110. package/src/web/{src → browser}/api.ts +5 -23
  111. package/src/web/browser/chat-host.ts +17 -0
  112. package/src/web/browser/installed-panels.ts +6 -0
  113. package/src/web/browser/main.ts +55 -0
  114. package/src/web/browser/markdown.ts +279 -0
  115. package/src/web/browser/memory-panel.ts +9 -0
  116. package/src/web/browser/palette.ts +64 -0
  117. package/src/web/browser/protocol.ts +13 -0
  118. package/src/web/browser/shell.ts +467 -0
  119. package/src/web/{src → browser}/status.ts +32 -36
  120. package/src/web/build.ts +51 -0
  121. package/src/web/public/app.html +1054 -0
  122. package/src/web/{sw.js → public/sw.js} +4 -3
  123. package/src/web/{vendor → public/vendor}/hljs-theme.css +2 -2
  124. package/src/web/{vendor → public/vendor}/hljs.js +2 -2
  125. package/THIRD_PARTY_LICENSES.md +0 -51
  126. package/docs/README.md +0 -107
  127. package/docs/archive/hlg-sampling.md +0 -350
  128. package/docs/archive/investigations/audio-input-plan.md +0 -356
  129. package/docs/archive/investigations/benchmark-ledger-through-v0.4.0.md +0 -3617
  130. package/docs/archive/investigations/chunk-finetune-experiment.md +0 -84
  131. package/docs/archive/investigations/colibri-glm52-port.md +0 -1486
  132. package/docs/archive/investigations/colibri-oracle-pin.md +0 -1284
  133. package/docs/archive/investigations/curve-bisector-routing.md +0 -123
  134. package/docs/archive/investigations/decode-roofline-lookagain.md +0 -348
  135. package/docs/archive/investigations/diffusion-gemma-port.md +0 -602
  136. package/docs/archive/investigations/dspark-handoff.md +0 -224
  137. package/docs/archive/investigations/expert-offload-single-user-moe.md +0 -292
  138. package/docs/archive/investigations/faithful-l1-consolidation.md +0 -310
  139. package/docs/archive/investigations/hlg-sampling-investigation.md +0 -970
  140. package/docs/archive/investigations/indexshare-performance-spike.md +0 -357
  141. package/docs/archive/investigations/kernel-perf-review-2026-07.md +0 -171
  142. package/docs/archive/investigations/lab-build-journal.md +0 -157
  143. package/docs/archive/investigations/minicpm5-decode-megakernel.md +0 -489
  144. package/docs/archive/investigations/openjarvis-fit.md +0 -198
  145. package/docs/archive/investigations/openwiki-evaluation.md +0 -249
  146. package/docs/archive/investigations/optimization_plan.md +0 -346
  147. package/docs/archive/investigations/orpo-base-uf-experiment-and-directions.md +0 -120
  148. package/docs/archive/investigations/orpo-flash-cce-pin-leak.md +0 -167
  149. package/docs/archive/investigations/orpo-uf-testing-handoff.md +0 -126
  150. package/docs/archive/investigations/pareto-specialized-runtime-findings.md +0 -92
  151. package/docs/archive/investigations/pi-builtin-investigation.md +0 -308
  152. package/docs/archive/investigations/pre-colibri-stabilization.md +0 -329
  153. package/docs/archive/investigations/qwen38-27b-campaign-log.md +0 -1092
  154. package/docs/archive/investigations/segmented-backward-handoff.md +0 -148
  155. package/docs/archive/investigations/starter-model-port-handoff.md +0 -342
  156. package/docs/archive/investigations/steel-flash-cce-handoff.md +0 -489
  157. package/docs/archive/investigations/the-dreaming-handoff.md +0 -141
  158. package/docs/archive/investigations/trainer-validation-experiment.md +0 -173
  159. package/docs/archive/planning/chat-ui-vision-memory-first.md +0 -199
  160. package/docs/archive/planning/chat-ui-vision.md +0 -50
  161. package/docs/archive/planning/chunk-task-roadmap.md +0 -77
  162. package/docs/archive/planning/curve-sampler-research-plan.md +0 -331
  163. package/docs/archive/planning/journal.md +0 -316
  164. package/docs/archive/planning/memory-docs-and-dag-plan.md +0 -194
  165. package/docs/archive/planning/pi-integration-review.md +0 -178
  166. package/docs/archive/planning/release-notes-v0.0.10.md +0 -57
  167. package/docs/archive/planning/release-notes-v0.0.11.md +0 -239
  168. package/docs/archive/planning/release-notes-v0.0.12.md +0 -80
  169. package/docs/archive/planning/release-notes-v0.0.13.md +0 -77
  170. package/docs/archive/planning/release-notes-v0.0.9.md +0 -122
  171. package/docs/archive/planning/release-notes-v0.2.0.md +0 -49
  172. package/docs/archive/planning/release-notes-v0.3.0.md +0 -35
  173. package/docs/archive/planning/release-notes-v0.4.0.md +0 -45
  174. package/docs/archive/planning/release-notes-v0.5.0.md +0 -37
  175. package/docs/archive/planning/web-ui-pass-plan.md +0 -213
  176. package/docs/archive/planning/website-readme-pass-plan.md +0 -224
  177. package/docs/design/batching.md +0 -2054
  178. package/docs/design/decode-speed-program.md +0 -2404
  179. package/docs/design/dreaming-nightly-pipeline.md +0 -684
  180. package/docs/design/generic-model-support.md +0 -821
  181. package/docs/design/kv-cache.md +0 -993
  182. package/docs/design/orpo-training.md +0 -680
  183. package/docs/design/speculative-decoding.md +0 -2129
  184. package/docs/design/turboquant.md +0 -2225
  185. package/docs/design/unified-engine-frontier-plan.md +0 -1987
  186. package/docs/design/web-chat-redesign.md +0 -695
  187. package/docs/planning/PRODUCT_ROADMAP.md +0 -593
  188. package/docs/planning/ResearchTopics.md +0 -119
  189. package/docs/planning/public-readiness-handoff.md +0 -244
  190. package/docs/planning/public-readiness.md +0 -149
  191. package/docs/planning/video-series.md +0 -421
  192. package/docs/reference/benchmarks.md +0 -3587
  193. package/docs/reference/cli.md +0 -646
  194. package/docs/reference/distribution.md +0 -380
  195. package/docs/reference/environment.md +0 -494
  196. package/docs/reference/glossary.md +0 -39
  197. package/docs/reference/library-api.md +0 -688
  198. package/docs/reference/memory.md +0 -260
  199. package/docs/reference/models.md +0 -346
  200. package/docs/reference/server-api.md +0 -1945
  201. package/docs/reference/server-config.md +0 -973
  202. package/docs/reference/training.md +0 -462
  203. package/docs/reference/troubleshooting.md +0 -158
  204. package/src/admission-plan.ts +0 -18
  205. package/src/audio/audiotoolbox.ts +0 -112
  206. package/src/audio/conformer.ts +0 -655
  207. package/src/audio/decode.ts +0 -133
  208. package/src/audio/features.ts +0 -202
  209. package/src/audio/mic-capture.ts +0 -98
  210. package/src/audio/silero-vad.ts +0 -379
  211. package/src/audio/transcode.ts +0 -67
  212. package/src/audio/whisper-decode.ts +0 -774
  213. package/src/audio/whisper-fast.ts +0 -732
  214. package/src/audio/whisper-format.ts +0 -73
  215. package/src/audio/whisper-mel.ts +0 -185
  216. package/src/audio/whisper-timing.ts +0 -274
  217. package/src/audio/whisper-tokenizer.ts +0 -239
  218. package/src/audio/whisper-transcribe.ts +0 -410
  219. package/src/backends/mlx/assistant-target.ts +0 -46
  220. package/src/backends/mlx/autoregressive-draft-rows.ts +0 -120
  221. package/src/backends/mlx/autoregressive.ts +0 -129
  222. package/src/backends/mlx/batch-group.ts +0 -1874
  223. package/src/backends/mlx/cache-attachment.ts +0 -67
  224. package/src/backends/mlx/cache-layout.ts +0 -31
  225. package/src/backends/mlx/checkpoint-state.ts +0 -53
  226. package/src/backends/mlx/continuation-persistence.ts +0 -107
  227. package/src/backends/mlx/continuation-request.ts +0 -43
  228. package/src/backends/mlx/continuation.ts +0 -77
  229. package/src/backends/mlx/diffusion.ts +0 -39
  230. package/src/backends/mlx/draft-target.ts +0 -32
  231. package/src/backends/mlx/encoder-cache.ts +0 -25
  232. package/src/backends/mlx/evaluation.ts +0 -105
  233. package/src/backends/mlx/fill-append.ts +0 -58
  234. package/src/backends/mlx/fill-group.ts +0 -497
  235. package/src/backends/mlx/full-kv-row-append.ts +0 -32
  236. package/src/backends/mlx/full-kv-row-donor.ts +0 -54
  237. package/src/backends/mlx/full-transitioning-kv-rows.ts +0 -65
  238. package/src/backends/mlx/gateway-binding.ts +0 -174
  239. package/src/backends/mlx/graph.ts +0 -38
  240. package/src/backends/mlx/kv-codec.ts +0 -9
  241. package/src/backends/mlx/kv-maintenance.ts +0 -161
  242. package/src/backends/mlx/kv-tensor-rows.ts +0 -212
  243. package/src/backends/mlx/memory-client.ts +0 -189
  244. package/src/backends/mlx/methods.ts +0 -90
  245. package/src/backends/mlx/mixed-iteration.ts +0 -62
  246. package/src/backends/mlx/model-prompt.ts +0 -178
  247. package/src/backends/mlx/model-serving.ts +0 -80
  248. package/src/backends/mlx/paged-cache-codec.ts +0 -27
  249. package/src/backends/mlx/prefill-cohort.ts +0 -100
  250. package/src/backends/mlx/prefill-policy.ts +0 -26
  251. package/src/backends/mlx/prefill-rows.ts +0 -244
  252. package/src/backends/mlx/prefill.ts +0 -33
  253. package/src/backends/mlx/projected-context-rows.ts +0 -72
  254. package/src/backends/mlx/prompt-input.ts +0 -29
  255. package/src/backends/mlx/qwen-prompt-input.ts +0 -40
  256. package/src/backends/mlx/request-policy.ts +0 -20
  257. package/src/backends/mlx/request-state-policy.ts +0 -54
  258. package/src/backends/mlx/rollback.ts +0 -92
  259. package/src/backends/mlx/row-sampling.ts +0 -49
  260. package/src/backends/mlx/serial-executor.ts +0 -251
  261. package/src/backends/mlx/speculative-group.ts +0 -438
  262. package/src/backends/mlx/speculative-round.ts +0 -161
  263. package/src/backends/mlx/speculative.ts +0 -131
  264. package/src/backends/mlx/state-rows.ts +0 -104
  265. package/src/backends/mlx/state-views.ts +0 -46
  266. package/src/backends/mlx/target-layout-capability.ts +0 -35
  267. package/src/backends/mlx/text-engine.ts +0 -73
  268. package/src/backends/mlx/transitioning-kv-rows.ts +0 -173
  269. package/src/chat-template.ts +0 -382
  270. package/src/cli.ts +0 -3490
  271. package/src/config.ts +0 -399
  272. package/src/contracts/completion.ts +0 -16
  273. package/src/contracts/execution.ts +0 -70
  274. package/src/contracts/generation.ts +0 -103
  275. package/src/contracts/host.ts +0 -7
  276. package/src/contracts/object-cache.ts +0 -8
  277. package/src/contracts/pi-provider.ts +0 -30
  278. package/src/contracts/pi.ts +0 -261
  279. package/src/contracts/prefix-cache.ts +0 -33
  280. package/src/contracts/resources.ts +0 -25
  281. package/src/contracts/sampling.ts +0 -23
  282. package/src/contracts/scheduling.ts +0 -54
  283. package/src/contracts/tsconfig.json +0 -14
  284. package/src/dataset/generators.ts +0 -1087
  285. package/src/dataset/index.ts +0 -12
  286. package/src/dataset/job.ts +0 -81
  287. package/src/dataset/llm.ts +0 -71
  288. package/src/dataset/registry.ts +0 -528
  289. package/src/diffusion/diffusion-generate.ts +0 -507
  290. package/src/download.ts +0 -505
  291. package/src/embed.ts +0 -77
  292. package/src/engine/admission.ts +0 -59
  293. package/src/engine/cancellation.ts +0 -38
  294. package/src/engine/engine.ts +0 -56
  295. package/src/engine/execution-coordinator.ts +0 -70
  296. package/src/engine/execution-plan.ts +0 -64
  297. package/src/engine/execution-tasks.ts +0 -44
  298. package/src/engine/namespaced-cache.ts +0 -13
  299. package/src/engine/resources.ts +0 -53
  300. package/src/engine/scheduler.ts +0 -92
  301. package/src/engine/session.ts +0 -247
  302. package/src/eval/README.md +0 -130
  303. package/src/eval/ifeval.ts +0 -81
  304. package/src/eval/kl-prompts.ts +0 -29
  305. package/src/eval/kl.ts +0 -590
  306. package/src/eval/perplexity.ts +0 -164
  307. package/src/eval/quality-db.ts +0 -92
  308. package/src/eval/reference-logits.ts +0 -207
  309. package/src/eval/runner.ts +0 -124
  310. package/src/eval/score.ts +0 -49
  311. package/src/eval/tasks/bfcl.ts +0 -535
  312. package/src/eval/tasks/gsm8k.ts +0 -98
  313. package/src/eval/tasks/hashhop.ts +0 -139
  314. package/src/eval/tasks/humaneval.ts +0 -275
  315. package/src/eval/tasks/ifeval.ts +0 -525
  316. package/src/eval/tasks/mmlu.ts +0 -157
  317. package/src/eval/ultrafeedback.ts +0 -60
  318. package/src/evaldb.ts +0 -199
  319. package/src/expert-io.ts +0 -393
  320. package/src/expert-offload-build.ts +0 -77
  321. package/src/expert-offload.ts +0 -76
  322. package/src/expert-residency.ts +0 -1134
  323. package/src/expert-usage.ts +0 -415
  324. package/src/fill/echo-index.ts +0 -188
  325. package/src/fill/fill-session.ts +0 -463
  326. package/src/fill/proposal.ts +0 -68
  327. package/src/fill/schema-rows.ts +0 -506
  328. package/src/fill/tool-boundary.ts +0 -103
  329. package/src/fit.ts +0 -249
  330. package/src/generate.ts +0 -1352
  331. package/src/grammar.ts +0 -604
  332. package/src/harness-pi.ts +0 -184
  333. package/src/hf-push.ts +0 -628
  334. package/src/hub-rest.ts +0 -242
  335. package/src/index.ts +0 -63
  336. package/src/inference/denoising.ts +0 -17
  337. package/src/inference/draft-acceptance.ts +0 -41
  338. package/src/inference/draft-output.ts +0 -49
  339. package/src/inference/graph.ts +0 -33
  340. package/src/inference/prefill.ts +0 -45
  341. package/src/inference/rollback.ts +0 -7
  342. package/src/jobs/index.ts +0 -31
  343. package/src/jobs/job-entry.ts +0 -107
  344. package/src/jobs/task-client.ts +0 -19
  345. package/src/jobs/types.ts +0 -2
  346. package/src/kv-scheme.ts +0 -279
  347. package/src/kv-store.ts +0 -1135
  348. package/src/lab/README.md +0 -22
  349. package/src/lab/curve/curve-designer.html +0 -303
  350. package/src/lab/curve/curve-sampler.ts +0 -122
  351. package/src/lab/expert-trace/expert-trace.ts +0 -69
  352. package/src/lab/paged-kv/paged-attention.ts +0 -117
  353. package/src/lab/paged-kv/paged-kv-rows.ts +0 -111
  354. package/src/lab/paged-kv/paged-kv.ts +0 -336
  355. package/src/library.ts +0 -40
  356. package/src/lora.ts +0 -408
  357. package/src/md-modules.d.ts +0 -54
  358. package/src/media-fetch.ts +0 -442
  359. package/src/memory/article.ts +0 -558
  360. package/src/memory/chunk-validation.ts +0 -150
  361. package/src/memory/chunk.ts +0 -318
  362. package/src/memory/cluster.ts +0 -351
  363. package/src/memory/coverage.ts +0 -134
  364. package/src/memory/crosslink.ts +0 -0
  365. package/src/memory/db.ts +0 -253
  366. package/src/memory/entity.ts +0 -203
  367. package/src/memory/gate.ts +0 -187
  368. package/src/memory/history.ts +0 -152
  369. package/src/memory/ingest.ts +0 -335
  370. package/src/memory/model.ts +0 -183
  371. package/src/memory/normalize.ts +0 -671
  372. package/src/memory/parse.ts +0 -22
  373. package/src/memory/pipeline.ts +0 -275
  374. package/src/memory/prompts.ts +0 -65
  375. package/src/memory/query.ts +0 -334
  376. package/src/memory/reconcile.ts +0 -734
  377. package/src/memory/redirect.ts +0 -108
  378. package/src/memory/reindex.ts +0 -325
  379. package/src/memory/resolve.ts +0 -307
  380. package/src/memory/rest.ts +0 -245
  381. package/src/memory/route.ts +0 -272
  382. package/src/memory/schedule.ts +0 -165
  383. package/src/memory/stages.ts +0 -777
  384. package/src/memory/synthesize.ts +0 -1638
  385. package/src/memory/tools.ts +0 -749
  386. package/src/memory/vault.ts +0 -1194
  387. package/src/memory/wikify.ts +0 -1064
  388. package/src/mlx/array.ts +0 -425
  389. package/src/mlx/autograd.ts +0 -304
  390. package/src/mlx/checkpoint.ts +0 -149
  391. package/src/mlx/compile.ts +0 -168
  392. package/src/mlx/custom-vjp.ts +0 -188
  393. package/src/mlx/ffi.ts +0 -531
  394. package/src/mlx/materialize.ts +0 -23
  395. package/src/mlx/metal-kernel.ts +0 -159
  396. package/src/mlx/normalized-argmax.ts +0 -116
  397. package/src/mlx/ops.ts +0 -1108
  398. package/src/mlx/quantized-rows.ts +0 -36
  399. package/src/mlx/token-bitmask.ts +0 -52
  400. package/src/mlx/turboquant-kv-decode.ts +0 -82
  401. package/src/mlx/turboquant-kv-inverse.ts +0 -122
  402. package/src/mlx/turboquant-ops.ts +0 -861
  403. package/src/mlx/turboquant-tables.ts +0 -237
  404. package/src/mmap.ts +0 -90
  405. package/src/model/artifact-identity.ts +0 -73
  406. package/src/model/batched-kv.ts +0 -235
  407. package/src/model/batched-mask.ts +0 -279
  408. package/src/model/batched-quant.ts +0 -212
  409. package/src/model/batched-quantized-kv.ts +0 -144
  410. package/src/model/batched-rotating-quant.ts +0 -353
  411. package/src/model/batched-rotating-state.ts +0 -149
  412. package/src/model/batched-rotating.ts +0 -338
  413. package/src/model/batched-row-storage.ts +0 -179
  414. package/src/model/batched-ssm.ts +0 -52
  415. package/src/model/batched-turboquant-kv.ts +0 -94
  416. package/src/model/compiled-decode.ts +0 -712
  417. package/src/model/decoded-kv-donor.ts +0 -12
  418. package/src/model/delayed-quantized-kv.ts +0 -72
  419. package/src/model/delayed-rotating-quantized-kv.ts +0 -93
  420. package/src/model/delayed-turboquant-kv.ts +0 -57
  421. package/src/model/diffusion-gemma.ts +0 -1026
  422. package/src/model/factory.ts +0 -215
  423. package/src/model/fingerprint.ts +0 -45
  424. package/src/model/flash-attention.ts +0 -694
  425. package/src/model/full-prefill-padding.ts +0 -56
  426. package/src/model/full-prefill-row.ts +0 -105
  427. package/src/model/gemma4-base.ts +0 -2370
  428. package/src/model/gemma4.ts +0 -1395
  429. package/src/model/generated/gemma4-12b.ts +0 -429
  430. package/src/model/generated/gemma4-26b.ts +0 -448
  431. package/src/model/generated/gemma4-e4b.ts +0 -717
  432. package/src/model/generated/index.ts +0 -18
  433. package/src/model/glm52-atlas.ts +0 -511
  434. package/src/model/glm52-cache.ts +0 -792
  435. package/src/model/glm52-config.ts +0 -262
  436. package/src/model/glm52-container.ts +0 -305
  437. package/src/model/glm52-coupling.ts +0 -388
  438. package/src/model/glm52-dsa.ts +0 -606
  439. package/src/model/glm52-expert-layout.ts +0 -253
  440. package/src/model/glm52-layout.ts +0 -152
  441. package/src/model/glm52-memory.ts +0 -500
  442. package/src/model/glm52-mla.ts +0 -792
  443. package/src/model/glm52-moe.ts +0 -223
  444. package/src/model/glm52-pilot.ts +0 -537
  445. package/src/model/glm52-reference.ts +0 -445
  446. package/src/model/glm52-residency.ts +0 -557
  447. package/src/model/glm52-resident-weights.ts +0 -135
  448. package/src/model/glm52-streamed-experts.ts +0 -453
  449. package/src/model/glm52-streamed-metal.ts +0 -610
  450. package/src/model/glm52-weights.ts +0 -503
  451. package/src/model/glm52.ts +0 -1132
  452. package/src/model/implementation.ts +0 -69
  453. package/src/model/kv-attention-view.ts +0 -70
  454. package/src/model/minicpm5.ts +0 -376
  455. package/src/model/profile.ts +0 -468
  456. package/src/model/quantized-append-attention.ts +0 -31
  457. package/src/model/qwen-append.ts +0 -12
  458. package/src/model/qwen-conv.ts +0 -52
  459. package/src/model/qwen3-delta-state.ts +0 -74
  460. package/src/model/qwen3-delta.ts +0 -451
  461. package/src/model/qwen3-moe.ts +0 -404
  462. package/src/model/qwen3-mrope.ts +0 -250
  463. package/src/model/qwen3.ts +0 -277
  464. package/src/model/qwen3_5-checkpoint.ts +0 -164
  465. package/src/model/qwen3_5.ts +0 -881
  466. package/src/model/rotating-kv-donor.ts +0 -35
  467. package/src/model/rotating-kv-layout.ts +0 -262
  468. package/src/model/rotating-row-transaction.ts +0 -35
  469. package/src/model/speculative-rotating-kv.ts +0 -101
  470. package/src/model/ssm-prefill-padding.ts +0 -39
  471. package/src/model/support.ts +0 -110
  472. package/src/model/token-groups.ts +0 -66
  473. package/src/model/trellis-balanced-scatter.ts +0 -51
  474. package/src/model/trellis-linear.ts +0 -672
  475. package/src/model/trellis-shared-m.ts +0 -151
  476. package/src/model/trellis-shared-scatter.ts +0 -144
  477. package/src/model/trellis-splitk-prefill.ts +0 -158
  478. package/src/model/trellis-tiled-prefill.ts +0 -136
  479. package/src/model/trellis-vector-expand.ts +0 -62
  480. package/src/model/trellis-wide-prefill.ts +0 -94
  481. package/src/model/turboquant-codec.ts +0 -89
  482. package/src/model/universal/archs.ts +0 -332
  483. package/src/model/universal/dense.ts +0 -612
  484. package/src/model/universal/modules.ts +0 -170
  485. package/src/model/universal/rope.ts +0 -381
  486. package/src/model/whisper.ts +0 -435
  487. package/src/native/expert_io.c +0 -523
  488. package/src/native/frame_extract.swift +0 -140
  489. package/src/native/mic_capture.swift +0 -92
  490. package/src/native-pack.ts +0 -163
  491. package/src/pi-provider.ts +0 -53
  492. package/src/pi-session.ts +0 -81
  493. package/src/pi-terminal.ts +0 -274
  494. package/src/pi-web.ts +0 -1940
  495. package/src/preflight.ts +0 -158
  496. package/src/prompt-cache.ts +0 -682
  497. package/src/quantize/allocator.ts +0 -627
  498. package/src/quantize/atomic-output.ts +0 -38
  499. package/src/quantize/calibration.ts +0 -181
  500. package/src/quantize/config-writer.ts +0 -145
  501. package/src/quantize/index.ts +0 -84
  502. package/src/quantize/job.ts +0 -162
  503. package/src/quantize/quantizer.ts +0 -666
  504. package/src/quantize/rotate.ts +0 -603
  505. package/src/quantize/safetensors-writer.ts +0 -249
  506. package/src/quantize/sensitivity.ts +0 -216
  507. package/src/quantize/trellis.ts +0 -586
  508. package/src/quantize/weight-transform.ts +0 -292
  509. package/src/registry.ts +0 -602
  510. package/src/runtime-config.ts +0 -77
  511. package/src/safetensors.ts +0 -165
  512. package/src/sampler.ts +0 -1012
  513. package/src/serve/admin-routes.ts +0 -184
  514. package/src/serve/assets/curve-terrain.html +0 -105
  515. package/src/serve/assets/training-inference-map.html +0 -575
  516. package/src/serve/audio-routes.ts +0 -323
  517. package/src/serve/aux-routes.ts +0 -132
  518. package/src/serve/batch-scheduler.ts +0 -8
  519. package/src/serve/checkpoint-identity.ts +0 -64
  520. package/src/serve/generation-gateway.ts +0 -537
  521. package/src/serve/isolate.ts +0 -609
  522. package/src/serve/kv-budget.ts +0 -14
  523. package/src/serve/lab-routes.ts +0 -341
  524. package/src/serve/lane-registry.ts +0 -45
  525. package/src/serve/model-admin-routes.ts +0 -155
  526. package/src/serve/model-binding.ts +0 -49
  527. package/src/serve/model-host.ts +0 -511
  528. package/src/serve/parent-application.ts +0 -56
  529. package/src/serve/prompt-response-trace.ts +0 -161
  530. package/src/serve/response-lease.ts +0 -24
  531. package/src/serve/session-search.ts +0 -326
  532. package/src/serve/static-routes.ts +0 -101
  533. package/src/serve/transcription-server.ts +0 -64
  534. package/src/serve/transcription-service.ts +0 -502
  535. package/src/server.ts +0 -1282
  536. package/src/spec/assistant-rows.ts +0 -93
  537. package/src/spec/assistant-source.ts +0 -126
  538. package/src/spec/cache-identity.ts +0 -22
  539. package/src/spec/deepspec-rows.ts +0 -29
  540. package/src/spec/deepspec-source.ts +0 -145
  541. package/src/spec/dflash-source.ts +0 -149
  542. package/src/spec/drafter.ts +0 -304
  543. package/src/spec/dspark/ab-stats.ts +0 -136
  544. package/src/spec/dspark/calibration.ts +0 -112
  545. package/src/spec/dspark/data-dflash.ts +0 -156
  546. package/src/spec/dspark/data.ts +0 -201
  547. package/src/spec/dspark/deepspec-module.ts +0 -776
  548. package/src/spec/dspark/generate-dflash.ts +0 -245
  549. package/src/spec/dspark/generate.ts +0 -290
  550. package/src/spec/dspark/loader.ts +0 -23
  551. package/src/spec/dspark/loss.ts +0 -213
  552. package/src/spec/dspark/module-dflash.ts +0 -560
  553. package/src/spec/dspark/module.ts +0 -540
  554. package/src/spec/dspark/quantize-drafter.ts +0 -91
  555. package/src/spec/dspark/sample.ts +0 -112
  556. package/src/spec/generate.ts +0 -276
  557. package/src/spec/glm52-mtp-graph.ts +0 -29
  558. package/src/spec/glm52-mtp-rows.ts +0 -132
  559. package/src/spec/glm52-mtp-source.ts +0 -318
  560. package/src/spec/glm52-mtp-state.ts +0 -33
  561. package/src/spec/ngram-source.ts +0 -226
  562. package/src/spec/projected-draft-rows.ts +0 -73
  563. package/src/spec/qwen-mtp-module.ts +0 -171
  564. package/src/spec/qwen-mtp-rows.ts +0 -230
  565. package/src/spec/qwen-mtp-source.ts +0 -386
  566. package/src/spec/qwen-mtp-state.ts +0 -30
  567. package/src/spec/serve-loop.ts +0 -587
  568. package/src/spec/source.ts +0 -228
  569. package/src/spec/two-model-rows.ts +0 -62
  570. package/src/spec/two-model.ts +0 -113
  571. package/src/ssd-cache.ts +0 -431
  572. package/src/ssd-durability.ts +0 -209
  573. package/src/storage/host-buffer.ts +0 -24
  574. package/src/storage/kv-writer.ts +0 -83
  575. package/src/storage/kv-writer.worker.js +0 -264
  576. package/src/storage/retention-policy.ts +0 -37
  577. package/src/tiered-prompt-cache.ts +0 -45
  578. package/src/tokenizer.ts +0 -335
  579. package/src/tool-approvals.ts +0 -131
  580. package/src/tool-call.ts +0 -695
  581. package/src/train/dataset.ts +0 -484
  582. package/src/train/diffusion-lora.ts +0 -216
  583. package/src/train/export.ts +0 -32
  584. package/src/train/flash-cce.ts +0 -1234
  585. package/src/train/forward.ts +0 -266
  586. package/src/train/fuse.ts +0 -243
  587. package/src/train/index.ts +0 -46
  588. package/src/train/job.ts +0 -205
  589. package/src/train/lora-params.ts +0 -254
  590. package/src/train/loss.ts +0 -1591
  591. package/src/train/merge.ts +0 -195
  592. package/src/train/optimizer.ts +0 -183
  593. package/src/train/prefix-shared.ts +0 -490
  594. package/src/train/rank.ts +0 -137
  595. package/src/train/segmented.ts +0 -1828
  596. package/src/train/steel-qmm-header.ts +0 -1461
  597. package/src/train/trainer.ts +0 -1221
  598. package/src/train/watch.ts +0 -542
  599. package/src/vision/diffusion-vision.ts +0 -620
  600. package/src/vision/embedder.ts +0 -176
  601. package/src/vision/preprocess.ts +0 -247
  602. package/src/vision/prompt.ts +0 -409
  603. package/src/vision/qwen3vl-preprocess.ts +0 -409
  604. package/src/vision/qwen3vl-prompt.ts +0 -233
  605. package/src/vision/qwen3vl-tower.ts +0 -566
  606. package/src/vision/siglip.ts +0 -607
  607. package/src/vision/video-frames.ts +0 -148
  608. package/src/web/app.html +0 -2155
  609. package/src/web/app.js +0 -5863
  610. package/src/web/skills/memory/SKILL.md +0 -120
  611. package/src/web/skills/web-research/SKILL.md +0 -46
  612. package/src/web/skills.ts +0 -97
  613. package/src/web/src/adapters-panel.ts +0 -288
  614. package/src/web/src/assistant.ts +0 -451
  615. package/src/web/src/chat.ts +0 -1060
  616. package/src/web/src/composer.ts +0 -962
  617. package/src/web/src/dataset.ts +0 -132
  618. package/src/web/src/finetune.ts +0 -267
  619. package/src/web/src/hub.ts +0 -428
  620. package/src/web/src/main.ts +0 -98
  621. package/src/web/src/markdown.ts +0 -0
  622. package/src/web/src/memory-panel.ts +0 -572
  623. package/src/web/src/model-picker.ts +0 -159
  624. package/src/web/src/palette.ts +0 -346
  625. package/src/web/src/protocol.ts +0 -26
  626. package/src/web/src/quantize.ts +0 -167
  627. package/src/web/src/rag.ts +0 -274
  628. package/src/web/src/sessions.ts +0 -469
  629. package/src/web/src/shell.ts +0 -804
  630. package/src/web/src/ui-catalog.ts +0 -78
  631. package/src/web/src/voice.ts +0 -141
  632. package/src/web/vendor/README.md +0 -61
  633. package/src/web-assets.ts +0 -47
  634. package/src/web-tools.ts +0 -478
  635. package/src/weights.ts +0 -255
  636. /package/src/{serve → server}/completion-sink.ts +0 -0
  637. /package/src/{serve → server}/generated-token-history.ts +0 -0
  638. /package/src/web/{icon.svg → public/icon.svg} +0 -0
  639. /package/src/web/{manifest.webmanifest → public/manifest.webmanifest} +0 -0
  640. /package/src/web/{vendor → public/vendor}/hljs-LICENSE +0 -0
@@ -1,494 +0,0 @@
1
- # Reference environment and platform facts
2
-
3
- Oracle configuration, native-runtime compatibility, and machine conditions
4
- for reproducing numerical and performance checks. Historical environment
5
- records below identify the versions used for their original comparisons.
6
-
7
- User-facing symptoms live in [troubleshooting.md](./troubleshooting.md).
8
-
9
- ## Machines
10
-
11
- There are TWO development machines and neither is canonical. One is a MacBook
12
- Pro M1 Max with 32 GB (`hw.model MacBookPro18,2`); the other is a MacBook Pro
13
- M4 Pro with 24 GB, the machine PLAN.md's "Reference environment" section
14
- describes (unified memory, ~273 GB/s). Every measured number is labeled with
15
- host / chip / RAM — `docs/reference/benchmarks.md` carries "M1 Max 32 GB"
16
- section headings for exactly this reason, and its TurboQuant section carries an
17
- explicit "measured on an M1 Max 32 GB, not this file's M4 Pro reference" note.
18
- Before asserting anything about RAM, OOM, or bandwidth, run
19
- `sysctl hw.memsize hw.model` — never assume which laptop you are on. The
20
- reference `serve.sh` (below) hard-codes a 28 GB wired limit "of 32 GB", so it
21
- is written for the M1 Max.
22
-
23
- The M4 Pro optimization measurements use internal SSD storage for active
24
- models. The external SSD stores artifacts to copy when
25
- needed; external-drive loading performance is outside normal acceptance for
26
- the 12–17 GB models. Stage each needed artifact under `~/models/`, verify
27
- every file against its archive, and record that path in both benchmark arms.
28
- Preserve earlier external-drive measurements as a separate cohort. The local
29
- active-model manifests live under `reports/qwen38-rd/`.
30
-
31
- Perf claims get a number on the machine they were measured on, recorded in the
32
- user-local eval DB (`~/.cache/mlx-bun/evals.sqlite`) and promoted to
33
- `docs/reference/benchmarks.md` deliberately. `bun scripts/bench-serve.ts all`
34
- is the benchmark harness; it writes Markdown and raw JSON under `reports/`
35
- as gitignored outputs. Numbers on a loaded machine are
36
- diagnostic; run-to-run spread is the stability signal, and the harness retries
37
- unstable cells (`scripts/bench-serve.ts`; `benchmarks.md`, "Running the
38
- benchmark").
39
-
40
- A performance decision must account for concurrent work during the timed
41
- comparison. For unstable pairs, capture process activity, GPU utilization and
42
- VM/page-in changes before and during the repeat; keep timestamps that align
43
- those observations with each measured request or forward. A preflight snapshot
44
- alone cannot identify interference during a run. CPU usage or retained swap
45
- alone does not establish GPU contention or active paging. Preserve all original
46
- samples and label unresolved comparisons inconclusive rather than attributing
47
- an outlier to the candidate. GPU-wide counters and the last submitting PID are
48
- observations, not complete per-process GPU attribution. The serving decode
49
- samples use different nonce-bearing prompts; speculative acceptance and target
50
- call counts can therefore vary within an arm. Compare matching request hashes
51
- and work counters across arms before interpreting their TPS spread as temporal
52
- instability.
53
-
54
- ## External storage loading
55
-
56
- On the M4 Pro with MLX 0.32.2, two RTN4 first-request warmups from
57
- `/Volumes/MLX-Models`, an external USB SSD using APFS, hit Metal GPU timeouts
58
- before any committed-token append. One occurred with fill disabled. The
59
- system log confirms the first timeout; neither establishes an allocation
60
- leak or an append-kernel failure. Three attention tests, a fresh four-response
61
- external HTTP control, and a separate four-response internal-SSD control pass.
62
- The internal copy contains the same 25 files and 15,849,971,577 bytes, each
63
- SHA-256 verified. Its responses and final active allocation match the external
64
- control. Copying and hashing may warm the OS file cache, so this comparison
65
- alone does not prove that the drive caused the failures.
66
-
67
- [MLX issue #3803](https://github.com/ml-explore/mlx/issues/3803) reports the
68
- same failure with external storage on a different machine and much larger
69
- models. A [maintainer recommends evaluating weights before GPU inference](https://github.com/ml-explore/mlx/issues/3803#issuecomment-4898914127)
70
- so disk-loading tasks finish first. Our loader already assigns safetensors
71
- loads to the CPU stream, but leaves them lazy. A research preload evaluates
72
- each requested canonical weight once during construction. Two balanced
73
- external-drive pairs complete all sixteen responses exactly, with identical
74
- final active allocation. Both eager arms take longer from process start to
75
- first complete response; moving work before readiness is not a startup-speed
76
- win. Both ordinary arms also pass, so reliability remains unproven. This
77
- loading change is not integrated, and further external-drive tuning is
78
- deferred under the active-storage policy above. Evidence under `reports/qwen38-rd/`:
79
- `fill-append-http-final-partial-review.json`, `rtn4-storage-control-manifest.json`,
80
- `fill-append-storage-control-review.json` and `weights-loading-http.json`.
81
-
82
- ## Reproduce the MiniCPM5 logit comparison
83
-
84
- From an Apple Silicon Mac running macOS 14 or later, install Bun 1.4.2 or
85
- newer and [uv](https://docs.astral.sh/uv/getting-started/installation/), then
86
- run these commands from a checkout of this repository:
87
-
88
- ```sh
89
- bun install --frozen-lockfile && \
90
- oracle_env="$(bash scripts/oracle/setup.sh)" && \
91
- eval "$oracle_env" && \
92
- bash scripts/oracle/compare-minicpm5.sh --download
93
- ```
94
-
95
- The setup script creates an external Python 3.13.5 environment, installs the
96
- complete [reference lock](../../scripts/oracle/requirements.lock), checks its
97
- dependencies, and prints the `MLX_BUN_ORACLE_VENV` export. Its default location
98
- is `~/.cache/mlx-bun/oracle-mlx-0.32.2-py3.13.5`. Pass a directory to `setup.sh`
99
- to choose another location. Re-running it synchronizes that environment to
100
- the lock, removing packages outside the pinned set. It does not install model
101
- weights or run inference.
102
-
103
- The lock pins MLX 0.32.2, mlx-lm 0.31.3, mlx-optiq 0.2.7 and their installed
104
- dependencies. MLX-Metal uses the explicit macOS 14 wheel and SHA-256 from
105
- [the upstream release](https://pypi.org/project/mlx-metal/0.32.2/#files),
106
- matching native pack 0.4.0. Selecting only a package version could install a
107
- different Metal build on newer macOS releases.
108
-
109
- The comparison script downloads `mlx-community/MiniCPM5-1B-OptiQ-4bit` at
110
- revision `664aabaed233c653f82716d8dc822234d0091f78` when `--download` is supplied.
111
- Omit the flag to require a cached snapshot. Hugging Face cache environment
112
- settings are respected. Set `MLX_BUN_TEST_MINICPM5` to use an existing model
113
- directory instead; its config and weight hashes are recorded in the output.
114
-
115
- Each run creates a fresh fixture directory under
116
- `~/.cache/mlx-bun/comparisons/`, invokes the Python oracle through
117
- `scripts/regen/minicpm5.ts`, then runs
118
- `bun test tests/parity/minicpm5-parity.test.ts`. `MLX_BUN_GOLDEN_DIR` selects
119
- that directory for both generation and comparison, with no fallback to older
120
- fixtures. The manifest records the prompt, token IDs, Python/MLX/Metal/mlx-lm
121
- versions, device, model hashes, lock hash and per-vector hashes. The command
122
- prints the output directory and elapsed comparison time. Missing inputs,
123
- failed generation or mismatched logits produce a nonzero exit; skipped tests
124
- are not the acceptance result.
125
-
126
- This test compares the complete vocabulary logit vector before sampling at
127
- 100 steps, plus all 100 greedy token IDs. It uses bf16 KV, one short prompt
128
- and single-row model forwards. It does not establish sampling-policy parity,
129
- batched scheduling correctness, mixed-KV parity or server performance. The
130
- [benchmark reference](benchmarks.md) links the separate
131
- coverage for those configurations.
132
-
133
- Fixtures must be generated on the comparison machine. The usual golden
134
- resolver selects `goldens/<machine-key>/` overrides; the reference machine
135
- uses the root `goldens/` directory. Metal kernels can differ across GPU
136
- families and runtime builds. In particular, the fast-SDPA dispatch boundary
137
- at sequence length L ≥ 16 can change floating-point operation order. This
138
- short-prompt recipe does not test that prefill boundary. Longer-prefill and
139
- batched comparisons need their corresponding same-machine oracle cases.
140
-
141
- ## The Python oracle
142
-
143
- Logit parity with mlx-lm is the correctness oracle; mixed-precision KV and the
144
- vision sidecar verify against mlx-optiq. The current working tree requires
145
- MLX and MLX-Metal 0.32.2. On the M4 Pro, the default reference is
146
- `/Users/joshrossi/Code/mlx-lm/.venv-mlx-0.32.2-macos14`; invoke its
147
- `bin/python` for reference scripts. MLX-LM remains 0.31.3. The shared resolver
148
- checks installed MLX/Metal versions and rejects an incompatible explicit
149
- `MLX_BUN_ORACLE_VENV` instead of silently selecting another environment.
150
-
151
- The earlier reference at `/Users/joshrossi/Code/mlx-lm/.venv` remains an
152
- old-runtime control. Its historical pins were verified
153
- from the installed `dist-info` directories in
154
- `.venv/lib/python3.14/site-packages/`: mlx 0.31.2 (with mlx-metal 0.31.2),
155
- mlx-lm 0.31.3, mlx-optiq 0.2.15, pillow 12.2.0. PLAN.md records that optiq was
156
- bumped from 0.2.4 to 0.2.15 on 2026-07-06 and the mixed-KV goldens stayed
157
- byte-identical across the bump. The venv directory holds no project source —
158
- just the venv and `serve.sh`.
159
-
160
- **Whisper oracle.** mlx-whisper 0.4.3 lives in its own venv,
161
- `~/Code/mlx-whisper-oracle/.venv` (Python 3.12 via uv; `mlx==0.32.2` to match
162
- `MLX_CORE_VERSION`, plus torch and numba, which must never enter the pinned
163
- mlx-lm venv). Override with `MLX_BUN_WHISPER_ORACLE_VENV`. Regenerate with
164
- `bun scripts/regen.ts whisper`; the parity test compares against
165
- `goldens/whisper.json` and its untracked blobs. The mlx-community Whisper
166
- checkpoint ships no tokenizer: `openai/whisper-large-v3-turbo`'s
167
- `tokenizer.json` + `tokenizer_config.json` must be in the HF cache
168
- (`hf_hub_download` of those two files; ~2.5 MB). whisper.cpp comparisons use
169
- sotto's vendored v1.9.3 helper (`~/Code/sotto/build/server/helpers/sotto-engine`)
170
- with `ggml-large-v3-turbo.bin` — same weights, different runtime.
171
-
172
- Silero VAD parity uses the `silero-vad` 6.2.1 pip package (torch JIT model)
173
- in the same venv (`scripts/oracle/gen-silero-golden.py` → tracked
174
- `goldens/silero-vad.json`); the engine's weights are `ggml-org/whisper-vad`'s
175
- `ggml-silero-v6.2.0.bin` in the HF cache (byte-identical to sotto's copy,
176
- SHA-256 `2aa269b7…`). `coremltools` is installed there too for the Core ML
177
- encoder experiment (benchmarks.md).
178
-
179
- The repo's untracked `.env` may pin `MLX_BUN_ORACLE_VENV` to a directory that
180
- no longer exists (it pointed at `~/Code/mlx-lm-example/.venv` on the M1 Max
181
- on 2026-09-15); every parity test importing `tests/support/paths.ts` then
182
- throws at import. Fix the path or run with `bun --env-file=/dev/null test …`.
183
-
184
- The Qwen MTP compatibility test accepts explicit local artifact paths through
185
- `MLX_BUN_TEST_MTP_TARGET` and `MLX_BUN_TEST_MTP_DRAFT`, alongside
186
- `MLX_BUN_TEST_QWEN38_MTP=1`. It compares speculative and ordinary greedy
187
- generation on that same target and prints both paths. This does not substitute
188
- one quant for another in the pinned logit-oracle tests.
189
-
190
- **M4 Pro installation checked 2026-09-04:** the same venv path on
191
- `Joshs-MBP-2025.local` currently uses `lib/python3.13/site-packages`, with
192
- mlx/metal 0.31.2, mlx-lm 0.31.3 and mlx-optiq **0.2.7** from installed
193
- dist-info metadata. The older python3.14/OptiQ 0.2.15 record above is not the
194
- installed stack on this Mac. Record actual interpreter/package/native-library
195
- versions for every comparison; preserve this oracle as the 0.31.2 control.
196
- Qwen artifacts are also present under
197
- `/Volumes/MLX-Models/models/{Qwen,mjriii}/`; header-only inventories under
198
- `reports/qwen38-rd/` are machine-local and do not load the GPU.
199
-
200
- **M4 Pro runtime update, staged 2026-09-07:** MLX 0.32.2 with
201
- MLX-C `c74db5307cc8ce122f48d97ef951b30578674e7f` is built under
202
- `reports/qwen38-rd/mlx-upgrade-0.32.2/install/lib/`. Explicit
203
- `MLX_BUN_LIBMLXC=<that-directory>/libmlxc.dylib` selects it per process.
204
- The original Homebrew MLX 0.31.2 and MLX-C 0.6.0 revision 2 remain installed.
205
- The staged core uses the official macOS 26 arm64 MLX-Metal wheel, with verified
206
- archive hashes and relocatable library dependencies. This local artifact does
207
- not change the published native pack or its minimum supported macOS version.
208
- The source-build attempt failed because the offline Metal toolchain is absent;
209
- building the C wrapper against the official native libraries succeeded.
210
-
211
- The matching reference is `/Users/joshrossi/Code/mlx-lm/.venv-mlx-0.32.2`,
212
- selected through `MLX_BUN_ORACLE_VENV`. Its Python remains 3.13.5; MLX and
213
- MLX-Metal change to 0.32.2 while all other 62 package pins match the old venv,
214
- including MLX-LM 0.31.3 and OptiQ 0.2.7. Installation and dependency checks pass.
215
- Keep runtime and reference overrides paired. The macOS 26 build remains an
216
- explicit comparison build. The working tree now selects the macOS 14 package
217
- candidate described below. Build manifests, package freezes and gate results
218
- live under the upgrade report directory.
219
-
220
- The package candidate also has an official macOS 14 build of MLX-Metal 0.32.2,
221
- with MLX-C compiled for 14.0 under `install-macos14/lib/`. Its matching Python
222
- reference is `/Users/joshrossi/Code/mlx-lm/.venv-mlx-0.32.2-macos14`, with the
223
- same 64 package versions as the macOS 26 reference and a passing dependency
224
- check. Both builds pass the twelve-cell RTN4 same-version logit/state oracle
225
- comparison. The macOS 14 candidate additionally passes the actual 4K prompt
226
- and 8K extension, with complete logits and live cache state checked against
227
- its matching reference. After the Trellis arithmetic port, the model-free
228
- suite passes 1,882 tests with ten skips on the new core and 1,881 tests with
229
- eleven skips on the old core. The local native-pack
230
- candidate under `native-pack-candidate/` extracts into `native-pack-extracted/`;
231
- all five Mach-O files target 14.0, have valid ad-hoc signatures and load their
232
- non-system dependencies from siblings. These checks ran on macOS 27, not an
233
- actual macOS 14 host. This build is published as native pack 0.4.0 and the
234
- verified local cache is
235
- `/Users/joshrossi/Library/Caches/mlx-bun/native-v0.4.0-arm64`. Publication
236
- details are in distribution.md. The consolidated source passes 52 complete Qwen
237
- forward/state/continuation cases and six Trellis generations, with fixed
238
- source/runtime/reference hashes and clean worker exits. The consolidated
239
- model-free suite passes 1,875 tests with ten skips; all typechecks pass.
240
- Integrated inverse-KV serving response gates also pass. The broader
241
- same-version reference gate passes all eighteen MiniCPM5, Llama 1B and Gemma
242
- e4b cases after matching MLX-LM's compiled MiniCPM5 prefill activation.
243
- Run `MLX_BUN_TEST_RUNTIME_ORACLE=1 bun test tests/parity/runtime-oracle.test.ts`
244
- to repeat these logit, live-cache and continuation comparisons against the
245
- matching reference. It skips unavailable artifacts, runs the Bun and Python
246
- children sequentially and does not rewrite goldens. Combined/pressure
247
- acceptance remains.
248
- The frozen old source lives outside Bun's
249
- test discovery at
250
- `/Users/joshrossi/.cache/mlx-bun/runtime-controls/mlx-0.31.2-before-0.32.2/`.
251
- Preserve its `snapshot.json` and source for old-runtime comparisons when
252
- simplifying production bindings. The build directories are under the upgrade
253
- report directory, whose `control-location.json` records the verified move.
254
- The accepted new-core source before binding consolidation is also frozen at
255
- `/Users/joshrossi/.cache/mlx-bun/runtime-controls/mlx-0.32.2-before-consolidation/`.
256
- Its 932 files and the six locally installed native files were hash-verified;
257
- `consolidation-preparation.json` records the copy and local installation.
258
-
259
- The small DeltaNet fixture also depends on the oracle/runtime. On the M4 Pro
260
- with the pins above, both Bun and Python differ from the June fixture at one
261
- prefill output; their gate values, outputs and complete recurrent states agree
262
- exactly. The fixture was explicitly replayed on 2026-09-05 with unchanged
263
- inputs. It now records package/device/source provenance and exact state hashes.
264
- No numerical tolerance changed. `scripts/oracle/gen-qwen-delta-golden.py
265
- --replay tests/fixtures/qwen-delta-golden.json --output <review-file>` reproduces
266
- the comparison under the pinned Python. Without `--output`, the M4 Pro writes
267
- the reference fixture; other chips write a `goldens/<chip>/` override, which
268
- the test resolves before the reference. Earlier oracle comparisons and the
269
- single-value diff are in `reports/qwen38-rd/delta-*.json`.
270
-
271
- CI explicitly replays those unchanged inputs through MLX-LM 0.31.3 on
272
- MLX/MLX-Metal 0.32.2 before testing, saving a runner-chip override and its
273
- provenance as a workflow artifact. This avoids comparing the macOS 14 runner
274
- against an M4 Pro output fixture. The test still requires exact output and
275
- state hashes; Python runs only the external reference. Trellis variant
276
- matrix tests allow 30 seconds for first-use kernel compilation on CI.
277
-
278
- The M1 Max override was replayed on 2026-09-08 with the same inputs using
279
- `/Users/joshrossi/Code/mlx-lm/.venv-mlx-0.32.2-macos14` (MLX/MLX-Metal
280
- 0.32.2, MLX-LM 0.31.3). Bun matches its outputs and recurrent-state hashes
281
- exactly. The review file is
282
- `reports/qwen38-closeout/qwen-delta-m1-review.json`.
283
-
284
- Qwen3-Embedding tests also resolve `goldenPath("qwen3-embed")`, including
285
- machine overrides, and skip when their required binary blobs are absent.
286
- Regenerate with the matching Python and
287
- `scripts/oracle/gen-qwen3-embed-golden.py <artifact> --replay goldens/qwen3-embed/meta.json`;
288
- `--output-dir` selects a review directory. Replay preserves the text and token
289
- IDs and checks the tokenizer against them. Metadata records the device,
290
- runtime, artifact config, original metadata and output hashes. The M1 Max
291
- replay matches hidden states and pooled embeddings exactly. Cosine uses both
292
- vector norms: bf16 normalization does not guarantee a unit norm when the
293
- result is subsequently read as float32.
294
-
295
- The same M1 validation found June MiniCPM logit blobs without runtime
296
- provenance. Explicit `bun scripts/regen.ts minicpm5` with the matching venv
297
- preserves the artifact, prompt IDs and greedy trajectory; the regenerated
298
- logits match Bun exactly. The generator now records runtime/device/config
299
- provenance and all blob hashes. The old files and reviewed differences remain
300
- under `reports/qwen38-closeout/minicpm5-golden-before/` and
301
- `minicpm5-golden-review.json`.
302
-
303
- The Gemma bf16 and mixed-KV M1 replays also pass with unchanged prompt IDs
304
- on MLX 0.32.2. This current M1 venv contains **mlx-optiq 0.2.7** by installed
305
- distribution metadata, matching the documented M4 installation; it is not
306
- the historical 0.2.15 environment. OptiQ's module `__version__` incorrectly
307
- reports 0.2.5 there, so regeneration records distribution metadata. Old
308
- fixtures remain under `reports/qwen38-closeout/{parity,mixed-kv}-golden-before/`.
309
- These are current-stack parity checks, not a runtime-only A/B against the
310
- older mixed-KV fixture's 0.31.2/0.2.15 combination.
311
-
312
- Readable oracle source, in that `site-packages/`: `mlx_lm/models/gemma3.py`
313
- and `mlx_lm/server.py` for the port targets; `mlx_lm/models/cache.py` for the
314
- cache classes; `mlx_lm/tokenizer_utils.py` for prompt rendering;
315
- `optiq/runtime/fused_quant_sdpa.py` and `optiq/runtime/streaming_kv_quant.py`
316
- for quantized-KV attention; `optiq/vlm/` for the vision sidecar wiring;
317
- `optiq/auth.py` for the server's API-key rule.
318
-
319
- The reference server is `/Users/joshrossi/Code/mlx-lm/serve.sh`. It runs
320
- `optiq serve` on `mlx-community/Qwen3.6-27B-OptiQ-4bit` with `--mtp`, the
321
- snapshot's `kv_config.json`, `--max-tokens 32768`, and
322
- `--prompt-cache-bytes` = 5 GiB, inside a restart loop (mlx-lm still aborts the
323
- process on an uncatchable Metal OOM, ml-explore/mlx-lm#854). It first raises
324
- `iogpu.wired_limit_mb` to 28672 via `sudo sysctl` (resets on reboot). optiq's
325
- default port is 8080 (`optiq/cli.py`). Never start it, or any long-running
326
- server or multi-GB download, from an agent session — Josh runs servers
327
- himself; testing against an already-running server with curl is fine.
328
-
329
- Oracle weights for the Gemma parity work: `gemma-4-12B-it-OptiQ-4bit` at
330
- `~/.cache/huggingface/hub/models--mlx-community--gemma-4-12B-it-OptiQ-4bit/snapshots/5b1101065d2094c8f12aa87fee80e0afa5b292b7/`
331
- — two safetensors shards, `model.safetensors.index.json`, `kv_config.json`,
332
- `optiq_metadata.json`, `optiq_vision.safetensors`, `chat_template.jinja`,
333
- `config.json`, `generation_config.json` (listing verified on disk; PLAN.md
334
- records 8.3 GB). Measured baselines for it are in PLAN.md's "Reference
335
- environment" section and `benchmarks.md`; compare direct-vs-direct only — the
336
- early 14.1 tok/s figure was server-inflated (PLAN.md, Phase 3 finding).
337
-
338
- ## Oracle-side hazards
339
-
340
- **Xet stalls.** Hugging Face's Xet transfer path stalls on this network. Set
341
- `HF_HUB_DISABLE_XET=1` before any Python-side `hf download`; our own
342
- downloader speaks plain HTTPS and never touches Xet (`src/download.ts`
343
- header comment; `src/memory/model.ts` prints the `HF_HUB_DISABLE_XET=1` form
344
- in its fetch hint; `scripts/oracle/export-datasets.py`,
345
- `scripts/turboquant/farm-setup.sh`, and `scripts/memory/eval-northstar.ts`
346
- all set it). HF auth is configured (`hf auth login`); `src/download.ts`
347
- `hfToken()` reads `HF_TOKEN`, else `~/.cache/huggingface/token`.
348
-
349
- **optiq wants paths, not repo ids.** optiq tooling treats `--model` as a
350
- filesystem path in places, so pass the local snapshot directory (the path
351
- above), not `mlx-community/...` (PLAN.md "Reference environment"; serve.sh
352
- passes the snapshot path for `--kv-config`).
353
-
354
- **The vision sidecar.** `optiq_vision.safetensors` (bf16, ~105 MB per PLAN
355
- and CLAUDE history) auto-enables in `optiq serve` when present beside the
356
- weights and needs pillow in Python land (installed in the venv). Our registry
357
- records the sidecar's size and notes that the shipped file actually carries
358
- `audio_tower.*` tensors too (`src/registry.ts`, `optiq_vision` comments).
359
-
360
- **mlx-lm's prompt cache is byte-capped.** In the pinned mlx-lm 0.31.3,
361
- `LRUPromptCache` (`mlx_lm/models/cache.py`) takes `max_size` (default 10) AND
362
- `max_bytes`, evicting through a typed `CacheOrder` LRU; `server.py` exposes
363
- `--prompt-cache-bytes`. The older count-capped cache was the OOM footgun that
364
- `serve.sh`'s 5 GiB cap works around. Ours is byte-capped too: `--prompt-cache`
365
- (GB, default 8) is a byte-capped LRU (`server-config.md`).
366
-
367
- **TokenizerWrapper injects `enable_thinking=True`.** mlx-lm's
368
- `apply_chat_template` sets `kwargs["enable_thinking"] = self.has_thinking`
369
- whenever the caller did not pass it (`mlx_lm/tokenizer_utils.py`, around
370
- line 336). Any cross-stack parity or bench prompt must pin `enable_thinking`
371
- explicitly or the rendered prompts drift — `scripts/bench-serve.ts` pins it
372
- on every arm via `chat_template_kwargs`.
373
-
374
- **pi client config.** `~/.pi/agent/models.json` currently defines an
375
- `mlx-bun` provider at `http://localhost:8080/v1` with
376
- `apiKey: "sk-mlx-bun-local"` (mlx-bun does not validate the key). optiq
377
- servers DO validate: the Bearer token must start with `sk-optiq-`
378
- (`optiq/auth.py`, `_REQUIRED_PREFIX`), so a pi provider pointed at
379
- `serve.sh` needs such a key.
380
-
381
- ## Bun and FFI facts
382
-
383
- **Development and CI: Bun 1.4.2.** Build the committed frontend bundle with
384
- that version so its byte-for-byte freshness check uses the same compiler.
385
- Performance comparisons record the runtime and use the same version in both
386
- arms; historical results retain their original version.
387
-
388
- Non-login SSH on the M4 Pro can omit `/Users/joshrossi/.bun/bin` from `PATH`.
389
- Put that directory on the remote command's PATH when running the test suite:
390
- launching the parent Bun by absolute path alone does not let subprocess tests
391
- find `bun`. The quantized-row validation's initial seven command-entry/job
392
- failures disappear with that invocation corrected; no product code change was
393
- needed for those failures.
394
-
395
- **Runtime minimum: Bun ≥ 1.4.0.** `package.json` `engines.bun` is `>=1.4.0`. `Bun.Image`
396
- (native OS codecs via ImageIO, EXIF auto-orient, off-thread) is the vision
397
- decode path (`src/vision/preprocess.ts`); `Bun.Image.resize` is deliberately
398
- not used. The FFI ABI fix below is the other reason for the pin.
399
-
400
- **bun:ffi stack-argument ABI (fixed in 1.4).** Through Bun 1.3.14, `bun:ffi`
401
- wrote one 8-byte stack slot per argument, but Apple's arm64 ABI packs stack
402
- args at natural size, so a binding whose 9th+ int-class args put an `i32`
403
- before more args handed the callee shifted garbage (mlx_conv2d's segfault at
404
- 0x1: the bogus value landed in the stream arg). Filed as oven-sh/bun#33672;
405
- repro in `lab/repro/bun-ffi-stack-args/` (`repro.c` + `repro.ts`,
406
- `ISSUE.md`). Bun 1.4.0 returns the expected values, so bindings now use
407
- their natural mlx-c signatures — `ops.conv2d` in `src/mlx/ops.ts` passes all
408
- eleven args plainly and the packed-u64 workaround is gone. `ISSUE.md` keeps
409
- the original report as the regression record.
410
-
411
- **bun:ffi symbol `.ptr` is fixed in 1.4.** Direct function addresses match
412
- `dlsym` on both 1.4.0 and the isolated 1.4.2 runtime. `src/mlx/array.ts` now
413
- uses the numeric `free.ptr`, with a validity guard and a process-lifetime
414
- library handle. Native destructor ownership remains unchanged.
415
-
416
- **FFI typed-array readback still needs `read.*`.** The standalone
417
- `lab/repro/bun-ffi-f64/` hot-loop repro still produces stale indexed reads on
418
- 1.4.0 and 1.4.2, despite the upstream issue being closed. Keep the native
419
- out-param read helpers. The stack-argument repro passes on both versions.
420
- Raw runtime binaries, hashes and outcomes are recorded in
421
- `reports/qwen38-rd/bun-runtime-audit/`; the installed runtime and pinned Python
422
- oracle were not upgraded. Bun's [1.4 release notes](https://bun.com/blog/bun-v1.4)
423
- describe its new FFI implementation, while [1.4.2](https://bun.com/blog/bun-v1.4.2)
424
- fixes the intervening AsyncLocalStorage regression. Release claims do not
425
- replace these local regression checks.
426
-
427
- **`Bun.mmap` SIGTRAPs above 4 GB.** JSC ArrayBuffers cap at 2^32 bytes, so
428
- `Bun.mmap` panics on weight shards larger than that (observed on Bun 1.3.3,
429
- still true at 1.3.14). `src/mmap.ts` binds libc `mmap`/`munmap`/`madvise`
430
- from `/usr/lib/libSystem.B.dylib` and hands mlx raw base+offset pointers;
431
- only small ranges (headers) are ever viewed from JS.
432
-
433
- **Never give mlx a JS-callback destructor.** mlx releases the last
434
- `array::Data` reference from the Metal completion thread (`gpu::eval`
435
- retains buffers until the command buffer completes, past `dispose()`). A
436
- `JSCallback` dtor on that thread deadlocks when the JS thread is inside a
437
- blocking FFI eval and SIGTRAPs mid-GC (the 2026-07-06 restart-restore hang).
438
- `src/mlx/array.ts` therefore gives every zero-copy array (`fromPointer` and
439
- `fromView`) the native no-op dtor — libc `free` with payload 0 — and makes
440
- host-buffer lifetime the caller's contract: weight mmaps live for the
441
- process, restored KV is copied at load (`src/kv-store.ts` `loadKvCache`,
442
- since 2026-07-07), and `unpinHostBuffer` runs only on the JS thread.
443
-
444
- ## Metal and mlx-c facts
445
-
446
- **`mlx_copy` shares storage.** In pinned MLX 0.31.2, `Copy::eval` calls
447
- `copy_shared_buffer`. Neither `ops.copyOf` nor `contiguous` guarantees a
448
- small independent allocation for a contiguous view. Explicit disposal drops
449
- handles but a surviving view can retain its entire source allocation.
450
- `src/mlx/materialize.ts` uses the stock dynamic-slice kernel, which allocates
451
- the output's logical size and supports gradients. The Qwen convolution state
452
- uses it to release large prefill buffers. Byte, pointer, retained-memory,
453
- compiled execution and gradient gates live in `tests/unit/materialize.test.ts`;
454
- the direct storage probe is `reports/qwen38-rd/copy-alias-probe.json`.
455
-
456
- **Non-page-aligned host pointers read garbage on the GPU.** Metal cannot
457
- no-copy-wrap a host pointer that is not page-aligned: GPU ops silently read
458
- garbage while CPU-stream ops are fine (PLAN.md Phase 1 finding, restated in
459
- the `src/weights.ts` header). Safetensors tensor offsets are arbitrary, so
460
- weights load through mlx's own `mlx_load_safetensors` on the CPU stream
461
- (`src/weights.ts`, `src/lora.ts`; Load has no GPU kernel) into mlx-owned,
462
- page-aligned buffers. Everything we DO wrap ourselves is page-aligned by
463
- construction: the KV store file layout (`src/kv-store.ts`) and the
464
- expert-offload file (`src/expert-offload.ts`, `src/expert-offload-build.ts`).
465
-
466
- **Read the full mlx-c signature before binding.** A missed trailing optional
467
- parameter shifts the stream argument and produces "There is no Stream(...)"
468
- errors at eval time. `src/mlx/ffi.ts` is the single binding table and cites
469
- the header each group comes from (`io.h`, `map.h`, `transforms.h`); the
470
- `mlx_load_safetensors` row shows the shape — `(out, meta_out, path, stream)`.
471
-
472
- **libmlxc resolution order.** `MLX_BUN_LIBMLXC` env → beside the executable
473
- (sidecar layout, `docs/reference/distribution.md`) → `~/Library/Caches/mlx-bun/native-v<ver>-<arch>/`
474
- (downloaded on first run, sha256-verified) → `/opt/homebrew/lib` →
475
- `/usr/local/lib`. Dev trees and embedders never download anything. The order
476
- is defined twice and must stay in sync: `resolveLibmlxc()` in
477
- `src/mlx/ffi.ts` and `nativeRuntimeDir()` in `src/native-pack.ts`. Publishing
478
- a new native pack means pasting the tarball's sha256/size into
479
- `src/native-pack.ts` before tagging (comment block "RELEASE-TIME BAKE").
480
-
481
- ## Repo hygiene that follows from the above
482
-
483
- `scripts/` holds production tooling only (bench-*, regen-*, parity-*, gen-*,
484
- build/release, eval/serve) plus `scripts/{oracle,memory,turboquant}/` for
485
- venv-side oracles, the Dreaming suite, and live TurboQuant research; research
486
- one-offs are deleted once their finding is written into a doc. `lab/repro/`
487
- holds self-contained reproductions for upstream bug reports (the two Bun
488
- issues above, plus `optiq-mixed-kv-inert` and `vllm-metal-turboquant`); they
489
- are not part of the build. Committed absolute paths (the venv, the weights
490
- snapshot, `serve.sh`) are machine-specific on purpose — do not "correct" them.
491
-
492
- The quantized-KV golden producer (`bun scripts/regen.ts kvq`) passes an absolute output directory to Python, since the child runs from `scripts/`. This preserves the selected machine directory and existing prompt IDs. Missing M4 blobs were regenerated from the pinned oracle into the isolated `delayed-affine-m4-oracle` override; numerical expectations were not produced by the inference implementation. Evidence: `reports/qwen38-closeout/composition-baseline/oracle-generator-path/`.
493
-
494
- The M1 rotating-KV reference still identified MLX 0.31.2 and disagreed with both unchanged control and candidate on the KV8 greedy prefix. Regeneration with pinned MLX 0.32.2 retains the prompt IDs and passes exact logits plus both continuation checks. The matching M1 override and M4 reference caches are refreshed; previous manifests/blobs and provenance are retained with the generator-path evidence.
@@ -1,39 +0,0 @@
1
- # mlx-bun serving
2
-
3
- mlx-bun serving runs local model completions and reports how each request uses the inference runtime.
4
-
5
- ## Language
6
-
7
- **Completion execution**:
8
- A single model completion attempt, including its generated output, resource lifetime, usage accounting, and observed scheduling placement.
9
- _Avoid_: Generation request, serve transaction
10
-
11
- **Execution composition**:
12
- The exact combination of model runtime, numeric scheme, acceleration methods, and request features used for a workload. Explicit choices and resolved defaults are authoritative.
13
- _Avoid_: Configuration bundle, inferred mode
14
-
15
- **Model profile**:
16
- A declaration that identifies an external model artifact, the engine capabilities required to run it, and the measured execution composition recommended for a device or workload. The profile does not bundle or own the model weights.
17
- It selects model construction; request methods such as MTP, KV schemes, adapters, grammar, and sampling remain independent explicit or default-resolved choices.
18
- _Avoid_: Generic model preset
19
-
20
- **Fidelity contract**:
21
- The oracle and verification claim attached to an execution composition, such as bit-exact parity with an external implementation or measured evidence when no matching oracle exists.
22
- L1 means bit-exact mlx-lm parity, L2 means bit-exact mlx-optiq parity, and L3 means measured evidence without a matching oracle.
23
- _Avoid_: Execution mode, optimization tier
24
-
25
- **Artifact fingerprint**:
26
- An immutable external revision identity used to bind evidence and a model profile to exact weights and metadata. A mutable alias or local directory name is not an artifact fingerprint.
27
- _Avoid_: Model path, model family
28
-
29
- **Scheduling mechanism**:
30
- The executor that receives an already-resolved execution composition. `serial` is the preserved strict or dedicated executor. `continuous` admits the request to the scheduler, which chooses a B=1 fast path or B=N step from its active row count. Placement never changes the composition.
31
- _Avoid_: Inferred lane, inferred mode
32
-
33
- **Concurrency cap**:
34
- The maximum rows admitted to the continuous scheduler. `--batch` declares this cap; `1` pins the serial mechanism. It does not select MTP, a KV scheme, TurboQuant, grammar, adapters, or sampling.
35
- _Avoid_: Batch method, quality mode
36
-
37
- **B=1 fast path**:
38
- The continuous scheduler's one-active-row specialization. It adopts serial-class caches and uses the parity- and latency-gated single-row graph. It is not the strict serial mechanism selected by `--batch 1` or required by a dedicated composition.
39
- _Avoid_: Serial fallback, batch prediction