freesolo-flash-dev 1.2.115__tar.gz → 1.2.117__tar.gz

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 (1367) hide show
  1. freesolo_flash_dev-1.2.117/.env.example +130 -0
  2. freesolo_flash_dev-1.2.117/.github/workflows/auto-rebake.yml +284 -0
  3. freesolo_flash_dev-1.2.117/.github/workflows/bake-kernel-cache.yml +259 -0
  4. freesolo_flash_dev-1.2.117/.github/workflows/ci.yml +203 -0
  5. freesolo_flash_dev-1.2.117/.github/workflows/deploy-modal-dev.yml +347 -0
  6. freesolo_flash_dev-1.2.117/.github/workflows/deploy-modal.yml +375 -0
  7. freesolo_flash_dev-1.2.117/.github/workflows/publish-image.yml +110 -0
  8. freesolo_flash_dev-1.2.117/.github/workflows/publish-serving-image.yml +213 -0
  9. freesolo_flash_dev-1.2.117/.github/workflows/worker-image.yml +169 -0
  10. freesolo_flash_dev-1.2.117/CHANGELOG.md +199 -0
  11. freesolo_flash_dev-1.2.117/CONTRIBUTING.md +136 -0
  12. freesolo_flash_dev-1.2.117/Dockerfile.worker +477 -0
  13. freesolo_flash_dev-1.2.117/PKG-INFO +346 -0
  14. freesolo_flash_dev-1.2.117/docker/kernel_fingerprint.py +333 -0
  15. freesolo_flash_dev-1.2.117/docker/make_rp_handler.py +58 -0
  16. freesolo_flash_dev-1.2.117/flash/__init__.py +5 -0
  17. freesolo_flash_dev-1.2.117/flash/_internal/channel.py +166 -0
  18. freesolo_flash_dev-1.2.117/flash/_internal/diagnostics.py +170 -0
  19. freesolo_flash_dev-1.2.117/flash/_internal/openai_sse.py +167 -0
  20. freesolo_flash_dev-1.2.117/flash/_internal/version.py +10 -0
  21. freesolo_flash_dev-1.2.117/flash/adapters/lora_rank.py +615 -0
  22. freesolo_flash_dev-1.2.117/flash/cli/__init__.py +1 -0
  23. freesolo_flash_dev-1.2.117/flash/cli/__main__.py +6 -0
  24. freesolo_flash_dev-1.2.117/flash/cli/commands/__init__.py +1 -0
  25. freesolo_flash_dev-1.2.117/flash/cli/commands/env/ops/imports.py +369 -0
  26. freesolo_flash_dev-1.2.117/flash/cli/commands/env/ops/list.py +91 -0
  27. freesolo_flash_dev-1.2.117/flash/cli/commands/env/ops/push.py +726 -0
  28. freesolo_flash_dev-1.2.117/flash/cli/commands/env/ops/retained.py +156 -0
  29. freesolo_flash_dev-1.2.117/flash/cli/commands/env/ops/setup.py +979 -0
  30. freesolo_flash_dev-1.2.117/flash/cli/commands/env/testing/episode.py +307 -0
  31. freesolo_flash_dev-1.2.117/flash/cli/commands/env/testing/eval.py +990 -0
  32. freesolo_flash_dev-1.2.117/flash/cli/commands/env/testing/evaluations.py +195 -0
  33. freesolo_flash_dev-1.2.117/flash/cli/commands/env/testing/params.py +256 -0
  34. freesolo_flash_dev-1.2.117/flash/cli/commands/env/testing/test.py +833 -0
  35. freesolo_flash_dev-1.2.117/flash/cli/commands/env/testing/warnings.py +393 -0
  36. freesolo_flash_dev-1.2.117/flash/cli/commands/ops/account.py +255 -0
  37. freesolo_flash_dev-1.2.117/flash/cli/commands/ops/catalog.py +46 -0
  38. freesolo_flash_dev-1.2.117/flash/cli/commands/ops/deploy.py +903 -0
  39. freesolo_flash_dev-1.2.117/flash/cli/commands/ops/log_follow.py +208 -0
  40. freesolo_flash_dev-1.2.117/flash/cli/commands/ops/runs.py +410 -0
  41. freesolo_flash_dev-1.2.117/flash/cli/commands/ops/traces.py +217 -0
  42. freesolo_flash_dev-1.2.117/flash/cli/commands/ops/train.py +513 -0
  43. freesolo_flash_dev-1.2.117/flash/cli/commands/ops/worker_output.py +160 -0
  44. freesolo_flash_dev-1.2.117/flash/cli/commands/serving/deploy.py +332 -0
  45. freesolo_flash_dev-1.2.117/flash/cli/commands/serving/identity.py +282 -0
  46. freesolo_flash_dev-1.2.117/flash/cli/commands/serving/status.py +102 -0
  47. freesolo_flash_dev-1.2.117/flash/cli/commands/serving/undeploy.py +177 -0
  48. freesolo_flash_dev-1.2.117/flash/cli/parsing/account.py +56 -0
  49. freesolo_flash_dev-1.2.117/flash/cli/parsing/env.py +261 -0
  50. freesolo_flash_dev-1.2.117/flash/cli/parsing/main.py +349 -0
  51. freesolo_flash_dev-1.2.117/flash/cli/parsing/models.py +131 -0
  52. freesolo_flash_dev-1.2.117/flash/cli/parsing/serve_parser.py +220 -0
  53. freesolo_flash_dev-1.2.117/flash/cli/parsing/traces.py +53 -0
  54. freesolo_flash_dev-1.2.117/flash/cli/parsing/training.py +109 -0
  55. freesolo_flash_dev-1.2.117/flash/cli/scaffold/TRAINING.md +1815 -0
  56. freesolo_flash_dev-1.2.117/flash/cli/ui/cost.py +70 -0
  57. freesolo_flash_dev-1.2.117/flash/cli/ui/heartbeat.py +497 -0
  58. freesolo_flash_dev-1.2.117/flash/cli/ui/render.py +795 -0
  59. freesolo_flash_dev-1.2.117/flash/cli/ui/tables.py +155 -0
  60. freesolo_flash_dev-1.2.117/flash/client/__init__.py +91 -0
  61. freesolo_flash_dev-1.2.117/flash/client/freesolo_api.py +241 -0
  62. freesolo_flash_dev-1.2.117/flash/client/http.py +916 -0
  63. freesolo_flash_dev-1.2.117/flash/content/multimodal.py +892 -0
  64. freesolo_flash_dev-1.2.117/flash/core/spec.py +863 -0
  65. freesolo_flash_dev-1.2.117/flash/core/spec_persistence.py +109 -0
  66. freesolo_flash_dev-1.2.117/flash/cost/analytical.py +949 -0
  67. freesolo_flash_dev-1.2.117/flash/cost/facts.py +214 -0
  68. freesolo_flash_dev-1.2.117/flash/cost/types.py +353 -0
  69. freesolo_flash_dev-1.2.117/flash/engine/plan/model_config_probe.py +130 -0
  70. freesolo_flash_dev-1.2.117/flash/engine/plan/steps.py +141 -0
  71. freesolo_flash_dev-1.2.117/flash/engine/plan/vram.py +991 -0
  72. freesolo_flash_dev-1.2.117/flash/engine/profiling/dataset_profile.py +353 -0
  73. freesolo_flash_dev-1.2.117/flash/engine/profiling/image_tokens.py +300 -0
  74. freesolo_flash_dev-1.2.117/flash/engine/profiling/sft_workload.py +982 -0
  75. freesolo_flash_dev-1.2.117/flash/engine/profiling/tokenizer.py +29 -0
  76. freesolo_flash_dev-1.2.117/flash/engine/support/verl_checkpoint.py +168 -0
  77. freesolo_flash_dev-1.2.117/flash/engine/support/verl_policy.py +20 -0
  78. freesolo_flash_dev-1.2.117/flash/engine/support/worker_entrypoint.py +22 -0
  79. freesolo_flash_dev-1.2.117/flash/engine/worker/__init__.py +1 -0
  80. freesolo_flash_dev-1.2.117/flash/engine/worker/__main__.py +4 -0
  81. freesolo_flash_dev-1.2.117/flash/engine/worker/entry/opd.py +166 -0
  82. freesolo_flash_dev-1.2.117/flash/engine/worker/entry/rl.py +14 -0
  83. freesolo_flash_dev-1.2.117/flash/engine/worker/entry/sft.py +204 -0
  84. freesolo_flash_dev-1.2.117/flash/engine/worker/entry/worker.py +225 -0
  85. freesolo_flash_dev-1.2.117/flash/engine/worker/io/heartbeat.py +741 -0
  86. freesolo_flash_dev-1.2.117/flash/engine/worker/io/hf.py +589 -0
  87. freesolo_flash_dev-1.2.117/flash/engine/worker/io/prefetch.py +290 -0
  88. freesolo_flash_dev-1.2.117/flash/engine/worker/io/wandb_log.py +20 -0
  89. freesolo_flash_dev-1.2.117/flash/engine/worker/model/adapter.py +173 -0
  90. freesolo_flash_dev-1.2.117/flash/engine/worker/model/decoding.py +52 -0
  91. freesolo_flash_dev-1.2.117/flash/engine/worker/perf/lifecycle.py +413 -0
  92. freesolo_flash_dev-1.2.117/flash/engine/worker/runtime/state.py +122 -0
  93. freesolo_flash_dev-1.2.117/flash/engine/worker/teacher/client.py +875 -0
  94. freesolo_flash_dev-1.2.117/flash/engine/worker/train/core/lifecycle/finalize.py +113 -0
  95. freesolo_flash_dev-1.2.117/flash/engine/worker/train/core/lifecycle/ledger.py +143 -0
  96. freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry/opd_train.py +246 -0
  97. freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry/opd_train_runner.py +797 -0
  98. freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry/rl_train.py +377 -0
  99. freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry/rl_train_runner.py +934 -0
  100. freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry/sft_train.py +675 -0
  101. freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry/sft_train_runner.py +949 -0
  102. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/bridging/batching.py +205 -0
  103. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/bridging/bridge.py +976 -0
  104. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/bridging/failures.py +117 -0
  105. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/bridging/prompts.py +164 -0
  106. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/bridging/scoring.py +88 -0
  107. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/multiturn/validation.py +80 -0
  108. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration/failures.py +434 -0
  109. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration/overrides.py +522 -0
  110. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration/progress.py +160 -0
  111. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +217 -0
  112. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration/protocol.py +22 -0
  113. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration/reporting.py +94 -0
  114. freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration/state.py +111 -0
  115. freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/launch/checkpoints.py +634 -0
  116. freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/launch/config.py +61 -0
  117. freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/launch/inputs.py +605 -0
  118. freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/launch/verl_config.py +814 -0
  119. freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/rollout/multi_turn.py +825 -0
  120. freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/rollout/scoring.py +73 -0
  121. freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/rollout/single_turn.py +247 -0
  122. freesolo_flash_dev-1.2.117/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  123. freesolo_flash_dev-1.2.117/flash/engine/worker/train/sft/setup/checkpoints.py +307 -0
  124. freesolo_flash_dev-1.2.117/flash/engine/worker/train/sft/setup/config.py +294 -0
  125. freesolo_flash_dev-1.2.117/flash/engine/worker/verl/capabilities.py +929 -0
  126. freesolo_flash_dev-1.2.117/flash/engine/worker/verl/checkpoints.py +879 -0
  127. freesolo_flash_dev-1.2.117/flash/engine/worker/verl/diagnostics.py +513 -0
  128. freesolo_flash_dev-1.2.117/flash/engine/worker/verl/parallelism.py +77 -0
  129. freesolo_flash_dev-1.2.117/flash/envs/__init__.py +9 -0
  130. freesolo_flash_dev-1.2.117/flash/envs/loading/__init__.py +0 -0
  131. freesolo_flash_dev-1.2.117/flash/envs/loading/adapter.py +727 -0
  132. freesolo_flash_dev-1.2.117/flash/envs/loading/base.py +221 -0
  133. freesolo_flash_dev-1.2.117/flash/envs/loading/loader.py +985 -0
  134. freesolo_flash_dev-1.2.117/flash/envs/loading/pull.py +223 -0
  135. freesolo_flash_dev-1.2.117/flash/envs/loading/staged.py +490 -0
  136. freesolo_flash_dev-1.2.117/flash/envs/meta/__init__.py +0 -0
  137. freesolo_flash_dev-1.2.117/flash/envs/meta/cache_security.py +189 -0
  138. freesolo_flash_dev-1.2.117/flash/envs/meta/evaluations.py +620 -0
  139. freesolo_flash_dev-1.2.117/flash/envs/meta/identity.py +267 -0
  140. freesolo_flash_dev-1.2.117/flash/envs/meta/namespace_listing.py +75 -0
  141. freesolo_flash_dev-1.2.117/flash/envs/package/__init__.py +0 -0
  142. freesolo_flash_dev-1.2.117/flash/providers/__init__.py +1 -0
  143. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/__init__.py +0 -0
  144. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  145. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/bootstrapping/bootstrap.py +961 -0
  146. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/instances/__init__.py +0 -0
  147. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/instances/instance.py +401 -0
  148. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/instances/poll.py +470 -0
  149. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/instances/poll_instance.py +719 -0
  150. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/instances/provider.py +187 -0
  151. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/instances/terminal_artifacts.py +268 -0
  152. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/net/__init__.py +0 -0
  153. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/net/http.py +206 -0
  154. freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/net/worker.py +366 -0
  155. freesolo_flash_dev-1.2.117/flash/providers/artifacts/__init__.py +0 -0
  156. freesolo_flash_dev-1.2.117/flash/providers/artifacts/hf.py +581 -0
  157. freesolo_flash_dev-1.2.117/flash/providers/artifacts/preload_runpod.py +525 -0
  158. freesolo_flash_dev-1.2.117/flash/providers/artifacts/weight_cache.py +864 -0
  159. freesolo_flash_dev-1.2.117/flash/providers/core/__init__.py +0 -0
  160. freesolo_flash_dev-1.2.117/flash/providers/core/allocator.py +987 -0
  161. freesolo_flash_dev-1.2.117/flash/providers/core/base.py +950 -0
  162. freesolo_flash_dev-1.2.117/flash/providers/core/fit_errors.py +414 -0
  163. freesolo_flash_dev-1.2.117/flash/providers/core/preflight.py +214 -0
  164. freesolo_flash_dev-1.2.117/flash/providers/core/realized.py +65 -0
  165. freesolo_flash_dev-1.2.117/flash/providers/core/registry.py +87 -0
  166. freesolo_flash_dev-1.2.117/flash/providers/core/sharding.py +111 -0
  167. freesolo_flash_dev-1.2.117/flash/providers/lambda_/__init__.py +1 -0
  168. freesolo_flash_dev-1.2.117/flash/providers/lambda_/client/__init__.py +0 -0
  169. freesolo_flash_dev-1.2.117/flash/providers/lambda_/client/api.py +322 -0
  170. freesolo_flash_dev-1.2.117/flash/providers/lambda_/client/auth.py +15 -0
  171. freesolo_flash_dev-1.2.117/flash/providers/lambda_/client/gpus.py +104 -0
  172. freesolo_flash_dev-1.2.117/flash/providers/lambda_/client/preflight.py +15 -0
  173. freesolo_flash_dev-1.2.117/flash/providers/lambda_/client/pricing.py +57 -0
  174. freesolo_flash_dev-1.2.117/flash/providers/lambda_/execution/__init__.py +1 -0
  175. freesolo_flash_dev-1.2.117/flash/providers/lambda_/execution/provider.py +208 -0
  176. freesolo_flash_dev-1.2.117/flash/providers/lambda_/jobs/__init__.py +973 -0
  177. freesolo_flash_dev-1.2.117/flash/providers/lambda_/jobs/builders.py +121 -0
  178. freesolo_flash_dev-1.2.117/flash/providers/runpod/__init__.py +1 -0
  179. freesolo_flash_dev-1.2.117/flash/providers/runpod/client/__init__.py +0 -0
  180. freesolo_flash_dev-1.2.117/flash/providers/runpod/client/api.py +457 -0
  181. freesolo_flash_dev-1.2.117/flash/providers/runpod/client/auth.py +109 -0
  182. freesolo_flash_dev-1.2.117/flash/providers/runpod/client/cost.py +52 -0
  183. freesolo_flash_dev-1.2.117/flash/providers/runpod/client/gpus.py +83 -0
  184. freesolo_flash_dev-1.2.117/flash/providers/runpod/client/preflight.py +24 -0
  185. freesolo_flash_dev-1.2.117/flash/providers/runpod/client/pricing.py +19 -0
  186. freesolo_flash_dev-1.2.117/flash/providers/runpod/execution/__init__.py +0 -0
  187. freesolo_flash_dev-1.2.117/flash/providers/runpod/execution/job_execution.py +457 -0
  188. freesolo_flash_dev-1.2.117/flash/providers/runpod/execution/jobs.py +243 -0
  189. freesolo_flash_dev-1.2.117/flash/providers/runpod/execution/polling.py +562 -0
  190. freesolo_flash_dev-1.2.117/flash/providers/runpod/execution/provider.py +221 -0
  191. freesolo_flash_dev-1.2.117/flash/providers/runpod/execution/resources.py +256 -0
  192. freesolo_flash_dev-1.2.117/flash/providers/runpod/serverless/__init__.py +0 -0
  193. freesolo_flash_dev-1.2.117/flash/providers/runpod/serverless/endpoints.py +960 -0
  194. freesolo_flash_dev-1.2.117/flash/providers/vast/__init__.py +1 -0
  195. freesolo_flash_dev-1.2.117/flash/providers/vast/client/__init__.py +0 -0
  196. freesolo_flash_dev-1.2.117/flash/providers/vast/client/api.py +473 -0
  197. freesolo_flash_dev-1.2.117/flash/providers/vast/client/auth.py +16 -0
  198. freesolo_flash_dev-1.2.117/flash/providers/vast/client/preflight.py +17 -0
  199. freesolo_flash_dev-1.2.117/flash/providers/vast/client/pricing.py +187 -0
  200. freesolo_flash_dev-1.2.117/flash/providers/vast/execution/__init__.py +1 -0
  201. freesolo_flash_dev-1.2.117/flash/providers/vast/execution/provider.py +214 -0
  202. freesolo_flash_dev-1.2.117/flash/providers/vast/jobs/__init__.py +956 -0
  203. freesolo_flash_dev-1.2.117/flash/providers/vast/jobs/builders.py +227 -0
  204. freesolo_flash_dev-1.2.117/flash/py.typed +0 -0
  205. freesolo_flash_dev-1.2.117/flash/runner/__init__.py +1 -0
  206. freesolo_flash_dev-1.2.117/flash/runner/accounting/__init__.py +0 -0
  207. freesolo_flash_dev-1.2.117/flash/runner/accounting/artifacts.py +254 -0
  208. freesolo_flash_dev-1.2.117/flash/runner/accounting/costs.py +407 -0
  209. freesolo_flash_dev-1.2.117/flash/runner/accounting/reconciliation.py +444 -0
  210. freesolo_flash_dev-1.2.117/flash/runner/accounting/weight_cache.py +84 -0
  211. freesolo_flash_dev-1.2.117/flash/runner/lifecycle/__init__.py +0 -0
  212. freesolo_flash_dev-1.2.117/flash/runner/lifecycle/attempts.py +151 -0
  213. freesolo_flash_dev-1.2.117/flash/runner/lifecycle/deadlines.py +100 -0
  214. freesolo_flash_dev-1.2.117/flash/runner/lifecycle/preparation.py +633 -0
  215. freesolo_flash_dev-1.2.117/flash/runner/lifecycle/reporting.py +262 -0
  216. freesolo_flash_dev-1.2.117/flash/runner/lifecycle/state.py +399 -0
  217. freesolo_flash_dev-1.2.117/flash/runner/lifecycle/status.py +438 -0
  218. freesolo_flash_dev-1.2.117/flash/runner/lifecycle/submit.py +356 -0
  219. freesolo_flash_dev-1.2.117/flash/runner/results/__init__.py +0 -0
  220. freesolo_flash_dev-1.2.117/flash/runner/results/checkpoints.py +121 -0
  221. freesolo_flash_dev-1.2.117/flash/runner/results/verified_revisions.py +169 -0
  222. freesolo_flash_dev-1.2.117/flash/runner/supervise/__init__.py +0 -0
  223. freesolo_flash_dev-1.2.117/flash/runner/supervise/attach.py +911 -0
  224. freesolo_flash_dev-1.2.117/flash/runner/supervise/deploy.py +819 -0
  225. freesolo_flash_dev-1.2.117/flash/runner/supervise/errors.py +9 -0
  226. freesolo_flash_dev-1.2.117/flash/runner/supervise/lifecycle.py +360 -0
  227. freesolo_flash_dev-1.2.117/flash/runner/supervise/recovery.py +641 -0
  228. freesolo_flash_dev-1.2.117/flash/runner/supervise/seed_submission.py +895 -0
  229. freesolo_flash_dev-1.2.117/flash/runner/supervise/transitions.py +339 -0
  230. freesolo_flash_dev-1.2.117/flash/runtime_capsule/profiles.py +66 -0
  231. freesolo_flash_dev-1.2.117/flash/schema/__init__.py +925 -0
  232. freesolo_flash_dev-1.2.117/flash/schema/fields.py +444 -0
  233. freesolo_flash_dev-1.2.117/flash/serve/app/http.py +407 -0
  234. freesolo_flash_dev-1.2.117/flash/serve/app/manifest.py +655 -0
  235. freesolo_flash_dev-1.2.117/flash/serve/app/materialize.py +998 -0
  236. freesolo_flash_dev-1.2.117/flash/serve/app/openai.py +246 -0
  237. freesolo_flash_dev-1.2.117/flash/serve/contract/__init__.py +0 -0
  238. freesolo_flash_dev-1.2.117/flash/serve/contract/errors.py +73 -0
  239. freesolo_flash_dev-1.2.117/flash/serve/contract/provenance.py +168 -0
  240. freesolo_flash_dev-1.2.117/flash/serve/contract/responses.py +107 -0
  241. freesolo_flash_dev-1.2.117/flash/serve/contract/urls.py +138 -0
  242. freesolo_flash_dev-1.2.117/flash/serve/control/types.py +877 -0
  243. freesolo_flash_dev-1.2.117/flash/serve/deployment/__init__.py +0 -0
  244. freesolo_flash_dev-1.2.117/flash/serve/deployment/adapter_check.py +179 -0
  245. freesolo_flash_dev-1.2.117/flash/serve/deployment/deploy.py +783 -0
  246. freesolo_flash_dev-1.2.117/flash/serve/deployment/export.py +589 -0
  247. freesolo_flash_dev-1.2.117/flash/serve/deployment/readiness.py +47 -0
  248. freesolo_flash_dev-1.2.117/flash/serve/deployment/resolve.py +399 -0
  249. freesolo_flash_dev-1.2.117/flash/serve/provisioning/__init__.py +35 -0
  250. freesolo_flash_dev-1.2.117/flash/serve/provisioning/common/__init__.py +0 -0
  251. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/__init__.py +0 -0
  252. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  253. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/execution/deployment.py +644 -0
  254. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/execution/lifecycle.py +116 -0
  255. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/execution/operations.py +623 -0
  256. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/execution/sdk.py +851 -0
  257. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  258. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/planning/plan.py +304 -0
  259. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/planning/resources.py +266 -0
  260. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  261. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/readiness_checks/probe.py +135 -0
  262. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/readiness_checks/readiness.py +245 -0
  263. freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/readiness_checks/teardown.py +186 -0
  264. freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/__init__.py +0 -0
  265. freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/lifecycle.py +83 -0
  266. freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/operations.py +992 -0
  267. freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/plan.py +221 -0
  268. freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/probe.py +74 -0
  269. freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/readiness.py +683 -0
  270. freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/resources.py +316 -0
  271. freesolo_flash_dev-1.2.117/flash/serve/request/__init__.py +0 -0
  272. freesolo_flash_dev-1.2.117/flash/serve/request/openai.py +294 -0
  273. freesolo_flash_dev-1.2.117/flash/serve/request/streaming.py +260 -0
  274. freesolo_flash_dev-1.2.117/flash/serve/request/thinking.py +226 -0
  275. freesolo_flash_dev-1.2.117/flash/serve/request/transport.py +489 -0
  276. freesolo_flash_dev-1.2.117/flash/serve/request/validation.py +641 -0
  277. freesolo_flash_dev-1.2.117/flash/serve/runtime/adapters.py +276 -0
  278. freesolo_flash_dev-1.2.117/flash/serve/runtime/engine.py +617 -0
  279. freesolo_flash_dev-1.2.117/flash/serve/runtime/multimodal.py +77 -0
  280. freesolo_flash_dev-1.2.117/flash/serve/runtime/structured_outputs.py +18 -0
  281. freesolo_flash_dev-1.2.117/flash/server/__main__.py +6 -0
  282. freesolo_flash_dev-1.2.117/flash/server/asgi/__init__.py +0 -0
  283. freesolo_flash_dev-1.2.117/flash/server/asgi/app.py +433 -0
  284. freesolo_flash_dev-1.2.117/flash/server/asgi/cli.py +69 -0
  285. freesolo_flash_dev-1.2.117/flash/server/billing/__init__.py +0 -0
  286. freesolo_flash_dev-1.2.117/flash/server/billing/retry.py +127 -0
  287. freesolo_flash_dev-1.2.117/flash/server/domain/__init__.py +0 -0
  288. freesolo_flash_dev-1.2.117/flash/server/domain/ops/__init__.py +0 -0
  289. freesolo_flash_dev-1.2.117/flash/server/domain/ops/reconcile.py +146 -0
  290. freesolo_flash_dev-1.2.117/flash/server/domain/ops/repo_cleanup.py +385 -0
  291. freesolo_flash_dev-1.2.117/flash/server/domain/registry/__init__.py +0 -0
  292. freesolo_flash_dev-1.2.117/flash/server/domain/registry/checkpoints.py +111 -0
  293. freesolo_flash_dev-1.2.117/flash/server/domain/registry/environment_registry.py +246 -0
  294. freesolo_flash_dev-1.2.117/flash/server/domain/registry/envs.py +796 -0
  295. freesolo_flash_dev-1.2.117/flash/server/domain/registry/runs.py +182 -0
  296. freesolo_flash_dev-1.2.117/flash/server/domain/teacher/__init__.py +0 -0
  297. freesolo_flash_dev-1.2.117/flash/server/domain/teacher/broker.py +900 -0
  298. freesolo_flash_dev-1.2.117/flash/server/domain/teacher/requests.py +212 -0
  299. freesolo_flash_dev-1.2.117/flash/server/platform/__init__.py +0 -0
  300. freesolo_flash_dev-1.2.117/flash/server/platform/deps.py +254 -0
  301. freesolo_flash_dev-1.2.117/flash/server/platform/internal_client.py +194 -0
  302. freesolo_flash_dev-1.2.117/flash/server/platform/locks.py +79 -0
  303. freesolo_flash_dev-1.2.117/flash/server/platform/runtime.py +799 -0
  304. freesolo_flash_dev-1.2.117/flash/server/routes/envs.py +205 -0
  305. freesolo_flash_dev-1.2.117/flash/server/routes/runs.py +553 -0
  306. freesolo_flash_dev-1.2.117/flash/server/routes/serving.py +894 -0
  307. freesolo_flash_dev-1.2.117/flash/server/routes/serving_completion.py +467 -0
  308. freesolo_flash_dev-1.2.117/flash/server/routes/serving_revisions.py +350 -0
  309. freesolo_flash_dev-1.2.117/flash/server/routes/serving_smoke.py +672 -0
  310. freesolo_flash_dev-1.2.117/flash/server/routes/teacher.py +139 -0
  311. freesolo_flash_dev-1.2.117/flash/serving/__init__.py +0 -0
  312. freesolo_flash_dev-1.2.117/flash/serving/app/README.md +323 -0
  313. freesolo_flash_dev-1.2.117/flash/serving/app/__init__.py +1 -0
  314. freesolo_flash_dev-1.2.117/flash/serving/app/modal_app.py +784 -0
  315. freesolo_flash_dev-1.2.117/flash/serving/src/accounting/__init__.py +0 -0
  316. freesolo_flash_dev-1.2.117/flash/serving/src/accounting/usage.py +215 -0
  317. freesolo_flash_dev-1.2.117/flash/serving/src/accounting/usage_facts.py +54 -0
  318. freesolo_flash_dev-1.2.117/flash/serving/src/accounting/usage_outbox.py +986 -0
  319. freesolo_flash_dev-1.2.117/flash/serving/src/engine/__init__.py +0 -0
  320. freesolo_flash_dev-1.2.117/flash/serving/src/engine/boot.py +226 -0
  321. freesolo_flash_dev-1.2.117/flash/serving/src/engine/errors.py +105 -0
  322. freesolo_flash_dev-1.2.117/flash/serving/src/engine/lora_engine.py +976 -0
  323. freesolo_flash_dev-1.2.117/flash/serving/src/engine/lora_entries.py +50 -0
  324. freesolo_flash_dev-1.2.117/flash/serving/src/engine/model_config.py +204 -0
  325. freesolo_flash_dev-1.2.117/flash/serving/src/engine/support.py +242 -0
  326. freesolo_flash_dev-1.2.117/flash/serving/src/http/__init__.py +0 -0
  327. freesolo_flash_dev-1.2.117/flash/serving/src/http/adapter_routes.py +266 -0
  328. freesolo_flash_dev-1.2.117/flash/serving/src/http/context.py +225 -0
  329. freesolo_flash_dev-1.2.117/flash/serving/src/http/inference_routes.py +332 -0
  330. freesolo_flash_dev-1.2.117/flash/serving/src/http/router.py +144 -0
  331. freesolo_flash_dev-1.2.117/flash/serving/src/http/routing.py +145 -0
  332. freesolo_flash_dev-1.2.117/flash/serving/src/io/__init__.py +0 -0
  333. freesolo_flash_dev-1.2.117/flash/serving/src/io/multimodal.py +109 -0
  334. freesolo_flash_dev-1.2.117/flash/serving/src/io/provenance.py +69 -0
  335. freesolo_flash_dev-1.2.117/flash/serving/src/io/requests.py +35 -0
  336. freesolo_flash_dev-1.2.117/flash/serving/src/io/responses.py +250 -0
  337. freesolo_flash_dev-1.2.117/flash/serving/src/io/schemas.py +482 -0
  338. freesolo_flash_dev-1.2.117/flash/serving/src/io/streaming.py +482 -0
  339. freesolo_flash_dev-1.2.117/flash/serving/src/io/structured_outputs.py +25 -0
  340. freesolo_flash_dev-1.2.117/flash/serving/src/store/__init__.py +0 -0
  341. freesolo_flash_dev-1.2.117/flash/serving/src/store/access.py +94 -0
  342. freesolo_flash_dev-1.2.117/flash/serving/src/store/lookup.py +118 -0
  343. freesolo_flash_dev-1.2.117/flash/serving/src/store/persistence.py +310 -0
  344. freesolo_flash_dev-1.2.117/flash/serving/src/store/registration.py +228 -0
  345. freesolo_flash_dev-1.2.117/flash/serving/src/store/registry.py +176 -0
  346. freesolo_flash_dev-1.2.117/flash/serving/src/store/settings.py +122 -0
  347. freesolo_flash_dev-1.2.117/flash/serving/src/store/supabase_rest.py +50 -0
  348. freesolo_flash_dev-1.2.117/flash/serving/src/store/undeploy.py +277 -0
  349. freesolo_flash_dev-1.2.117/flash/snapshot/__init__.py +1 -0
  350. freesolo_flash_dev-1.2.117/flash/snapshot/archive.py +387 -0
  351. freesolo_flash_dev-1.2.117/flash/teacher/__init__.py +0 -0
  352. freesolo_flash_dev-1.2.117/flash/teacher/retry_contract.py +275 -0
  353. freesolo_flash_dev-1.2.117/pyproject.toml +325 -0
  354. freesolo_flash_dev-1.2.117/scripts/check_source_layout.py +292 -0
  355. freesolo_flash_dev-1.2.117/scripts/check_verl_pin_exists.py +80 -0
  356. freesolo_flash_dev-1.2.117/tests/_helpers/chat_provenance.py +28 -0
  357. freesolo_flash_dev-1.2.117/tests/_helpers/chat_transport.py +63 -0
  358. freesolo_flash_dev-1.2.117/tests/_helpers/managed_chat.py +49 -0
  359. freesolo_flash_dev-1.2.117/tests/_helpers/profile.py +203 -0
  360. freesolo_flash_dev-1.2.117/tests/_helpers/runner.py +53 -0
  361. freesolo_flash_dev-1.2.117/tests/_helpers/server_api_plugin.py +3 -0
  362. freesolo_flash_dev-1.2.117/tests/conftest.py +499 -0
  363. freesolo_flash_dev-1.2.117/tests/live/__init__.py +0 -0
  364. freesolo_flash_dev-1.2.117/tests/live/test_lambda_live.py +51 -0
  365. freesolo_flash_dev-1.2.117/tests/live/test_runpod_live.py +36 -0
  366. freesolo_flash_dev-1.2.117/tests/live/test_vast_live.py +56 -0
  367. freesolo_flash_dev-1.2.117/tests/serving/conftest.py +262 -0
  368. freesolo_flash_dev-1.2.117/tests/serving/test_base_model_serving.py +294 -0
  369. freesolo_flash_dev-1.2.117/tests/serving/test_chat_auth.py +264 -0
  370. freesolo_flash_dev-1.2.117/tests/serving/test_chat_authorizer.py +525 -0
  371. freesolo_flash_dev-1.2.117/tests/serving/test_checkpoint_model_validation.py +218 -0
  372. freesolo_flash_dev-1.2.117/tests/serving/test_engine_error_status.py +225 -0
  373. freesolo_flash_dev-1.2.117/tests/serving/test_fp8_config.py +169 -0
  374. freesolo_flash_dev-1.2.117/tests/serving/test_immutable_engine.py +332 -0
  375. freesolo_flash_dev-1.2.117/tests/serving/test_immutable_revisions.py +1503 -0
  376. freesolo_flash_dev-1.2.117/tests/serving/test_immutable_schemas.py +147 -0
  377. freesolo_flash_dev-1.2.117/tests/serving/test_modal_deploy_identity.py +112 -0
  378. freesolo_flash_dev-1.2.117/tests/serving/test_modal_image_paths.py +220 -0
  379. freesolo_flash_dev-1.2.117/tests/serving/test_model_config.py +168 -0
  380. freesolo_flash_dev-1.2.117/tests/serving/test_multimodal.py +1148 -0
  381. freesolo_flash_dev-1.2.117/tests/serving/test_per_model_gpu.py +818 -0
  382. freesolo_flash_dev-1.2.117/tests/serving/test_persistence.py +268 -0
  383. freesolo_flash_dev-1.2.117/tests/serving/test_pre_first_disconnect.py +475 -0
  384. freesolo_flash_dev-1.2.117/tests/serving/test_prequant_config.py +42 -0
  385. freesolo_flash_dev-1.2.117/tests/serving/test_registry.py +308 -0
  386. freesolo_flash_dev-1.2.117/tests/serving/test_registry_coverage.py +65 -0
  387. freesolo_flash_dev-1.2.117/tests/serving/test_request_body_limit.py +183 -0
  388. freesolo_flash_dev-1.2.117/tests/serving/test_router.py +1550 -0
  389. freesolo_flash_dev-1.2.117/tests/serving/test_router_coverage.py +294 -0
  390. freesolo_flash_dev-1.2.117/tests/serving/test_router_edge_coverage.py +303 -0
  391. freesolo_flash_dev-1.2.117/tests/serving/test_schemas_coverage.py +188 -0
  392. freesolo_flash_dev-1.2.117/tests/serving/test_serve_reasoning_split.py +276 -0
  393. freesolo_flash_dev-1.2.117/tests/serving/test_serve_structured_outputs.py +776 -0
  394. freesolo_flash_dev-1.2.117/tests/serving/test_serve_thinking.py +153 -0
  395. freesolo_flash_dev-1.2.117/tests/serving/test_settings.py +93 -0
  396. freesolo_flash_dev-1.2.117/tests/serving/test_structured_outputs.py +397 -0
  397. freesolo_flash_dev-1.2.117/tests/serving/test_structured_outputs_coverage.py +22 -0
  398. freesolo_flash_dev-1.2.117/tests/serving/test_supabase_rest_coverage.py +62 -0
  399. freesolo_flash_dev-1.2.117/tests/serving/test_usage_outbox.py +1934 -0
  400. freesolo_flash_dev-1.2.117/tests/serving/test_usage_reporter.py +936 -0
  401. freesolo_flash_dev-1.2.117/tests/serving_conformance/__init__.py +0 -0
  402. freesolo_flash_dev-1.2.117/tests/serving_conformance/conftest.py +162 -0
  403. freesolo_flash_dev-1.2.117/tests/serving_conformance/test_contract.py +786 -0
  404. freesolo_flash_dev-1.2.117/tests/test_adapter_shard_completeness.py +376 -0
  405. freesolo_flash_dev-1.2.117/tests/test_agent_flash_cli_contract.py +291 -0
  406. freesolo_flash_dev-1.2.117/tests/test_allocator.py +2461 -0
  407. freesolo_flash_dev-1.2.117/tests/test_backend_common.py +4906 -0
  408. freesolo_flash_dev-1.2.117/tests/test_bake_kernel_cache.py +165 -0
  409. freesolo_flash_dev-1.2.117/tests/test_billing_retry.py +712 -0
  410. freesolo_flash_dev-1.2.117/tests/test_cancel_remote.py +2214 -0
  411. freesolo_flash_dev-1.2.117/tests/test_catalog_consistency.py +217 -0
  412. freesolo_flash_dev-1.2.117/tests/test_catalog_only_models.py +88 -0
  413. freesolo_flash_dev-1.2.117/tests/test_charge_pricing.py +791 -0
  414. freesolo_flash_dev-1.2.117/tests/test_chat_foundations.py +371 -0
  415. freesolo_flash_dev-1.2.117/tests/test_checkpoint_lifecycle.py +132 -0
  416. freesolo_flash_dev-1.2.117/tests/test_checkpoints.py +690 -0
  417. freesolo_flash_dev-1.2.117/tests/test_cli_commands.py +5451 -0
  418. freesolo_flash_dev-1.2.117/tests/test_cli_commands_coverage.py +581 -0
  419. freesolo_flash_dev-1.2.117/tests/test_cli_credential_shadowing.py +162 -0
  420. freesolo_flash_dev-1.2.117/tests/test_cli_errors.py +285 -0
  421. freesolo_flash_dev-1.2.117/tests/test_cli_estimate.py +1230 -0
  422. freesolo_flash_dev-1.2.117/tests/test_cli_gpus_flag.py +350 -0
  423. freesolo_flash_dev-1.2.117/tests/test_cli_help.py +211 -0
  424. freesolo_flash_dev-1.2.117/tests/test_cli_main_coverage.py +19 -0
  425. freesolo_flash_dev-1.2.117/tests/test_cli_render_coverage.py +643 -0
  426. freesolo_flash_dev-1.2.117/tests/test_cli_render_theme.py +1775 -0
  427. freesolo_flash_dev-1.2.117/tests/test_cli_serve_deploy.py +1071 -0
  428. freesolo_flash_dev-1.2.117/tests/test_cli_serve_status.py +394 -0
  429. freesolo_flash_dev-1.2.117/tests/test_cli_serve_undeploy.py +521 -0
  430. freesolo_flash_dev-1.2.117/tests/test_cli_traces.py +709 -0
  431. freesolo_flash_dev-1.2.117/tests/test_cli_wandb_warning.py +123 -0
  432. freesolo_flash_dev-1.2.117/tests/test_client.py +1411 -0
  433. freesolo_flash_dev-1.2.117/tests/test_client_import_purity.py +235 -0
  434. freesolo_flash_dev-1.2.117/tests/test_client_server_integration.py +347 -0
  435. freesolo_flash_dev-1.2.117/tests/test_client_stream_reads.py +245 -0
  436. freesolo_flash_dev-1.2.117/tests/test_config_env_vars.py +412 -0
  437. freesolo_flash_dev-1.2.117/tests/test_console_upload.py +145 -0
  438. freesolo_flash_dev-1.2.117/tests/test_controlled_experiment_repairs.py +503 -0
  439. freesolo_flash_dev-1.2.117/tests/test_cost_analytical.py +467 -0
  440. freesolo_flash_dev-1.2.117/tests/test_cost_equation.py +26 -0
  441. freesolo_flash_dev-1.2.117/tests/test_cost_estimate.py +1022 -0
  442. freesolo_flash_dev-1.2.117/tests/test_cost_hardware.py +685 -0
  443. freesolo_flash_dev-1.2.117/tests/test_cost_models.py +219 -0
  444. freesolo_flash_dev-1.2.117/tests/test_deploy_alias_move_warning.py +554 -0
  445. freesolo_flash_dev-1.2.117/tests/test_deploy_latency.py +426 -0
  446. freesolo_flash_dev-1.2.117/tests/test_dev_channel.py +749 -0
  447. freesolo_flash_dev-1.2.117/tests/test_disk_gb.py +211 -0
  448. freesolo_flash_dev-1.2.117/tests/test_endpoint_name.py +45 -0
  449. freesolo_flash_dev-1.2.117/tests/test_env_cache_evict.py +515 -0
  450. freesolo_flash_dev-1.2.117/tests/test_env_delete.py +148 -0
  451. freesolo_flash_dev-1.2.117/tests/test_env_download.py +109 -0
  452. freesolo_flash_dev-1.2.117/tests/test_env_download_api.py +95 -0
  453. freesolo_flash_dev-1.2.117/tests/test_env_evaluations.py +4337 -0
  454. freesolo_flash_dev-1.2.117/tests/test_env_list_api.py +117 -0
  455. freesolo_flash_dev-1.2.117/tests/test_env_list_cli.py +102 -0
  456. freesolo_flash_dev-1.2.117/tests/test_env_list_hub.py +213 -0
  457. freesolo_flash_dev-1.2.117/tests/test_env_no_install.py +85 -0
  458. freesolo_flash_dev-1.2.117/tests/test_env_publish.py +1962 -0
  459. freesolo_flash_dev-1.2.117/tests/test_env_pull.py +1255 -0
  460. freesolo_flash_dev-1.2.117/tests/test_env_pull_coverage.py +167 -0
  461. freesolo_flash_dev-1.2.117/tests/test_env_pull_loader_coverage.py +332 -0
  462. freesolo_flash_dev-1.2.117/tests/test_env_pull_managed_control_plane.py +174 -0
  463. freesolo_flash_dev-1.2.117/tests/test_env_push.py +1733 -0
  464. freesolo_flash_dev-1.2.117/tests/test_env_rate_limit_resolve.py +334 -0
  465. freesolo_flash_dev-1.2.117/tests/test_env_ref_pinning.py +73 -0
  466. freesolo_flash_dev-1.2.117/tests/test_env_test.py +3436 -0
  467. freesolo_flash_dev-1.2.117/tests/test_envs_coverage.py +117 -0
  468. freesolo_flash_dev-1.2.117/tests/test_export.py +1579 -0
  469. freesolo_flash_dev-1.2.117/tests/test_flash_mvp.py +133 -0
  470. freesolo_flash_dev-1.2.117/tests/test_flash_worker.py +1530 -0
  471. freesolo_flash_dev-1.2.117/tests/test_fused_expert_warmstart.py +1894 -0
  472. freesolo_flash_dev-1.2.117/tests/test_github_urlopen_retry.py +365 -0
  473. freesolo_flash_dev-1.2.117/tests/test_gpu_type_single_field.py +198 -0
  474. freesolo_flash_dev-1.2.117/tests/test_gpus.py +541 -0
  475. freesolo_flash_dev-1.2.117/tests/test_grpo_params.py +767 -0
  476. freesolo_flash_dev-1.2.117/tests/test_grpo_resident_sizing.py +193 -0
  477. freesolo_flash_dev-1.2.117/tests/test_grpo_reward_batching.py +334 -0
  478. freesolo_flash_dev-1.2.117/tests/test_grpo_rollout_contract.py +484 -0
  479. freesolo_flash_dev-1.2.117/tests/test_grpo_rollout_identity.py +824 -0
  480. freesolo_flash_dev-1.2.117/tests/test_idle_endpoint_reaper.py +554 -0
  481. freesolo_flash_dev-1.2.117/tests/test_image_environment_capability.py +92 -0
  482. freesolo_flash_dev-1.2.117/tests/test_instance_bootstrap_coverage.py +2635 -0
  483. freesolo_flash_dev-1.2.117/tests/test_jobs.py +7330 -0
  484. freesolo_flash_dev-1.2.117/tests/test_kernel_fingerprint.py +367 -0
  485. freesolo_flash_dev-1.2.117/tests/test_lambda_api_coverage.py +510 -0
  486. freesolo_flash_dev-1.2.117/tests/test_lambda_runner.py +4169 -0
  487. freesolo_flash_dev-1.2.117/tests/test_login_perms.py +342 -0
  488. freesolo_flash_dev-1.2.117/tests/test_lora_rank_preflight.py +710 -0
  489. freesolo_flash_dev-1.2.117/tests/test_lora_targeting.py +780 -0
  490. freesolo_flash_dev-1.2.117/tests/test_lora_targeting_pinned_verl.py +240 -0
  491. freesolo_flash_dev-1.2.117/tests/test_managed_hf_repo.py +96 -0
  492. freesolo_flash_dev-1.2.117/tests/test_multi_gpu_gate.py +1639 -0
  493. freesolo_flash_dev-1.2.117/tests/test_multimodal_training.py +1208 -0
  494. freesolo_flash_dev-1.2.117/tests/test_named_reward_metrics.py +93 -0
  495. freesolo_flash_dev-1.2.117/tests/test_oom_escalate_gpu.py +973 -0
  496. freesolo_flash_dev-1.2.117/tests/test_opd.py +1894 -0
  497. freesolo_flash_dev-1.2.117/tests/test_opd_multiturn_eos_boundary.py +75 -0
  498. freesolo_flash_dev-1.2.117/tests/test_opd_multiturn_failure_exit.py +449 -0
  499. freesolo_flash_dev-1.2.117/tests/test_opd_resume_safety.py +1528 -0
  500. freesolo_flash_dev-1.2.117/tests/test_opd_train.py +9722 -0
  501. freesolo_flash_dev-1.2.117/tests/test_orchestrator_flash.py +484 -0
  502. freesolo_flash_dev-1.2.117/tests/test_packing_coverage.py +179 -0
  503. freesolo_flash_dev-1.2.117/tests/test_parasail_teacher.py +1440 -0
  504. freesolo_flash_dev-1.2.117/tests/test_persisted_spec_envelope.py +94 -0
  505. freesolo_flash_dev-1.2.117/tests/test_poll_helpers.py +262 -0
  506. freesolo_flash_dev-1.2.117/tests/test_preflight.py +290 -0
  507. freesolo_flash_dev-1.2.117/tests/test_projects.py +652 -0
  508. freesolo_flash_dev-1.2.117/tests/test_prompt_budget.py +397 -0
  509. freesolo_flash_dev-1.2.117/tests/test_provider_preflight_coverage.py +59 -0
  510. freesolo_flash_dev-1.2.117/tests/test_provider_routing.py +2902 -0
  511. freesolo_flash_dev-1.2.117/tests/test_provider_teardown_robustness.py +152 -0
  512. freesolo_flash_dev-1.2.117/tests/test_providers_symmetry.py +464 -0
  513. freesolo_flash_dev-1.2.117/tests/test_realized_cost.py +445 -0
  514. freesolo_flash_dev-1.2.117/tests/test_repo_cleanup.py +621 -0
  515. freesolo_flash_dev-1.2.117/tests/test_resolve_params_b.py +75 -0
  516. freesolo_flash_dev-1.2.117/tests/test_resume_on_retry.py +1419 -0
  517. freesolo_flash_dev-1.2.117/tests/test_rl_train.py +10466 -0
  518. freesolo_flash_dev-1.2.117/tests/test_rollout_samples.py +364 -0
  519. freesolo_flash_dev-1.2.117/tests/test_runmgmt.py +3208 -0
  520. freesolo_flash_dev-1.2.117/tests/test_runpod_api_delete.py +155 -0
  521. freesolo_flash_dev-1.2.117/tests/test_runpod_key_fingerprint.py +401 -0
  522. freesolo_flash_dev-1.2.117/tests/test_runpod_key_waterfall.py +391 -0
  523. freesolo_flash_dev-1.2.117/tests/test_runtime_capsule.py +434 -0
  524. freesolo_flash_dev-1.2.117/tests/test_serve.py +1555 -0
  525. freesolo_flash_dev-1.2.117/tests/test_serve_app_packaging.py +227 -0
  526. freesolo_flash_dev-1.2.117/tests/test_serve_chat_transport.py +782 -0
  527. freesolo_flash_dev-1.2.117/tests/test_serve_modal_sdk.py +1047 -0
  528. freesolo_flash_dev-1.2.117/tests/test_serve_modal_sdk_deadlines.py +126 -0
  529. freesolo_flash_dev-1.2.117/tests/test_serve_modal_teardown_identity.py +105 -0
  530. freesolo_flash_dev-1.2.117/tests/test_serve_profiles.py +359 -0
  531. freesolo_flash_dev-1.2.117/tests/test_serve_provisioning_common.py +404 -0
  532. freesolo_flash_dev-1.2.117/tests/test_serve_provisioning_modal.py +2932 -0
  533. freesolo_flash_dev-1.2.117/tests/test_serve_provisioning_runpod.py +4630 -0
  534. freesolo_flash_dev-1.2.117/tests/test_serve_reasoning_content.py +638 -0
  535. freesolo_flash_dev-1.2.117/tests/test_serve_resolve_provenance.py +498 -0
  536. freesolo_flash_dev-1.2.117/tests/test_serve_runtime_package.py +101 -0
  537. freesolo_flash_dev-1.2.117/tests/test_server_api.py +10004 -0
  538. freesolo_flash_dev-1.2.117/tests/test_server_app_coverage.py +267 -0
  539. freesolo_flash_dev-1.2.117/tests/test_server_billing.py +886 -0
  540. freesolo_flash_dev-1.2.117/tests/test_server_checkpoints_coverage.py +77 -0
  541. freesolo_flash_dev-1.2.117/tests/test_server_db.py +485 -0
  542. freesolo_flash_dev-1.2.117/tests/test_server_envs_coverage.py +2377 -0
  543. freesolo_flash_dev-1.2.117/tests/test_server_managed_chat_requests.py +847 -0
  544. freesolo_flash_dev-1.2.117/tests/test_server_managed_chat_revisions.py +744 -0
  545. freesolo_flash_dev-1.2.117/tests/test_server_serving_resources.py +215 -0
  546. freesolo_flash_dev-1.2.117/tests/test_server_standalone.py +1098 -0
  547. freesolo_flash_dev-1.2.117/tests/test_serving_conformance_gate.py +91 -0
  548. freesolo_flash_dev-1.2.117/tests/test_serving_contract.py +1017 -0
  549. freesolo_flash_dev-1.2.117/tests/test_serving_schema_coverage.py +201 -0
  550. freesolo_flash_dev-1.2.117/tests/test_sft_chunked_nll.py +37 -0
  551. freesolo_flash_dev-1.2.117/tests/test_sft_max_context.py +95 -0
  552. freesolo_flash_dev-1.2.117/tests/test_sft_train.py +5330 -0
  553. freesolo_flash_dev-1.2.117/tests/test_sft_workload.py +1503 -0
  554. freesolo_flash_dev-1.2.117/tests/test_source_attestation_flow.py +196 -0
  555. freesolo_flash_dev-1.2.117/tests/test_source_layout.py +230 -0
  556. freesolo_flash_dev-1.2.117/tests/test_source_snapshot.py +210 -0
  557. freesolo_flash_dev-1.2.117/tests/test_spec_and_validation.py +2448 -0
  558. freesolo_flash_dev-1.2.117/tests/test_spec_contract_bytes.py +346 -0
  559. freesolo_flash_dev-1.2.117/tests/test_staged_environment.py +921 -0
  560. freesolo_flash_dev-1.2.117/tests/test_step_metrics.py +514 -0
  561. freesolo_flash_dev-1.2.117/tests/test_step_timing.py +414 -0
  562. freesolo_flash_dev-1.2.117/tests/test_teacher_broker.py +2358 -0
  563. freesolo_flash_dev-1.2.117/tests/test_terminal_artifacts.py +195 -0
  564. freesolo_flash_dev-1.2.117/tests/test_training_controls.py +597 -0
  565. freesolo_flash_dev-1.2.117/tests/test_vast_api.py +773 -0
  566. freesolo_flash_dev-1.2.117/tests/test_vast_api_coverage.py +307 -0
  567. freesolo_flash_dev-1.2.117/tests/test_vast_offers.py +416 -0
  568. freesolo_flash_dev-1.2.117/tests/test_vast_provider_coverage.py +132 -0
  569. freesolo_flash_dev-1.2.117/tests/test_vast_runner.py +2893 -0
  570. freesolo_flash_dev-1.2.117/tests/test_verified_revisions.py +237 -0
  571. freesolo_flash_dev-1.2.117/tests/test_verifiers.py +2931 -0
  572. freesolo_flash_dev-1.2.117/tests/test_verl_checkpoint_export.py +598 -0
  573. freesolo_flash_dev-1.2.117/tests/test_verl_child_plugins.py +799 -0
  574. freesolo_flash_dev-1.2.117/tests/test_verl_silence_watchdog.py +224 -0
  575. freesolo_flash_dev-1.2.117/tests/test_vram_architecture.py +231 -0
  576. freesolo_flash_dev-1.2.117/tests/test_wandb_link.py +394 -0
  577. freesolo_flash_dev-1.2.117/tests/test_wandb_naming.py +167 -0
  578. freesolo_flash_dev-1.2.117/tests/test_warmstart_adapter_download.py +320 -0
  579. freesolo_flash_dev-1.2.117/tests/test_warmstart_cross_repo.py +1611 -0
  580. freesolo_flash_dev-1.2.117/tests/test_warmstart_error_attribution.py +63 -0
  581. freesolo_flash_dev-1.2.117/tests/test_warmstart_image_adapters.py +222 -0
  582. freesolo_flash_dev-1.2.117/tests/test_weight_cache.py +4919 -0
  583. freesolo_flash_dev-1.2.117/tests/test_worker_dryrun.py +175 -0
  584. freesolo_flash_dev-1.2.117/tests/test_worker_hardexit.py +304 -0
  585. freesolo_flash_dev-1.2.117/tests/test_worker_image.py +42 -0
  586. freesolo_flash_dev-1.2.117/tests/test_worker_init_heartbeat.py +1732 -0
  587. freesolo_flash_dev-1.2.117/tests/test_worker_stack.py +2241 -0
  588. freesolo_flash_dev-1.2.117/tests/test_worker_thinking.py +248 -0
  589. freesolo_flash_dev-1.2.117/tests/test_zero2_sharding_gate.py +266 -0
  590. freesolo_flash_dev-1.2.117/uv.lock +5817 -0
  591. freesolo_flash_dev-1.2.115/.env.example +0 -130
  592. freesolo_flash_dev-1.2.115/.github/workflows/auto-rebake.yml +0 -284
  593. freesolo_flash_dev-1.2.115/.github/workflows/bake-kernel-cache.yml +0 -259
  594. freesolo_flash_dev-1.2.115/.github/workflows/ci.yml +0 -198
  595. freesolo_flash_dev-1.2.115/.github/workflows/deploy-modal-dev.yml +0 -347
  596. freesolo_flash_dev-1.2.115/.github/workflows/deploy-modal.yml +0 -375
  597. freesolo_flash_dev-1.2.115/.github/workflows/publish-image.yml +0 -110
  598. freesolo_flash_dev-1.2.115/.github/workflows/publish-serving-image.yml +0 -213
  599. freesolo_flash_dev-1.2.115/.github/workflows/worker-image.yml +0 -169
  600. freesolo_flash_dev-1.2.115/CHANGELOG.md +0 -196
  601. freesolo_flash_dev-1.2.115/CONTRIBUTING.md +0 -136
  602. freesolo_flash_dev-1.2.115/Dockerfile.worker +0 -477
  603. freesolo_flash_dev-1.2.115/PKG-INFO +0 -346
  604. freesolo_flash_dev-1.2.115/docker/kernel_fingerprint.py +0 -333
  605. freesolo_flash_dev-1.2.115/docker/make_rp_handler.py +0 -58
  606. freesolo_flash_dev-1.2.115/flash/__init__.py +0 -13
  607. freesolo_flash_dev-1.2.115/flash/_internal/channel.py +0 -166
  608. freesolo_flash_dev-1.2.115/flash/_internal/diagnostics.py +0 -170
  609. freesolo_flash_dev-1.2.115/flash/adapters/lora_rank.py +0 -615
  610. freesolo_flash_dev-1.2.115/flash/cli/__init__.py +0 -941
  611. freesolo_flash_dev-1.2.115/flash/cli/__main__.py +0 -6
  612. freesolo_flash_dev-1.2.115/flash/cli/commands/__init__.py +0 -973
  613. freesolo_flash_dev-1.2.115/flash/cli/commands/deploy.py +0 -824
  614. freesolo_flash_dev-1.2.115/flash/cli/commands/env/episode.py +0 -307
  615. freesolo_flash_dev-1.2.115/flash/cli/commands/env/eval.py +0 -990
  616. freesolo_flash_dev-1.2.115/flash/cli/commands/env/imports.py +0 -369
  617. freesolo_flash_dev-1.2.115/flash/cli/commands/env/list.py +0 -91
  618. freesolo_flash_dev-1.2.115/flash/cli/commands/env/push.py +0 -726
  619. freesolo_flash_dev-1.2.115/flash/cli/commands/env/retained.py +0 -156
  620. freesolo_flash_dev-1.2.115/flash/cli/commands/env/setup.py +0 -979
  621. freesolo_flash_dev-1.2.115/flash/cli/commands/env/test.py +0 -833
  622. freesolo_flash_dev-1.2.115/flash/cli/commands/env/test_evaluations.py +0 -195
  623. freesolo_flash_dev-1.2.115/flash/cli/commands/env/test_params.py +0 -256
  624. freesolo_flash_dev-1.2.115/flash/cli/commands/env/test_warnings.py +0 -393
  625. freesolo_flash_dev-1.2.115/flash/cli/commands/log_follow.py +0 -207
  626. freesolo_flash_dev-1.2.115/flash/cli/commands/serve_deploy.py +0 -326
  627. freesolo_flash_dev-1.2.115/flash/cli/commands/serve_identity.py +0 -279
  628. freesolo_flash_dev-1.2.115/flash/cli/commands/serve_status.py +0 -100
  629. freesolo_flash_dev-1.2.115/flash/cli/commands/serve_undeploy.py +0 -175
  630. freesolo_flash_dev-1.2.115/flash/cli/commands/traces.py +0 -217
  631. freesolo_flash_dev-1.2.115/flash/cli/commands/train_cost.py +0 -408
  632. freesolo_flash_dev-1.2.115/flash/cli/commands/worker_output.py +0 -159
  633. freesolo_flash_dev-1.2.115/flash/cli/scaffold/TRAINING.md +0 -1815
  634. freesolo_flash_dev-1.2.115/flash/cli/serve_parser.py +0 -220
  635. freesolo_flash_dev-1.2.115/flash/cli/ui/cost.py +0 -73
  636. freesolo_flash_dev-1.2.115/flash/cli/ui/heartbeat.py +0 -499
  637. freesolo_flash_dev-1.2.115/flash/cli/ui/render.py +0 -834
  638. freesolo_flash_dev-1.2.115/flash/cli/ui/tables.py +0 -165
  639. freesolo_flash_dev-1.2.115/flash/client/__init__.py +0 -91
  640. freesolo_flash_dev-1.2.115/flash/client/freesolo_api.py +0 -241
  641. freesolo_flash_dev-1.2.115/flash/client/http.py +0 -865
  642. freesolo_flash_dev-1.2.115/flash/content/multimodal.py +0 -892
  643. freesolo_flash_dev-1.2.115/flash/core/spec.py +0 -863
  644. freesolo_flash_dev-1.2.115/flash/core/spec_persistence.py +0 -109
  645. freesolo_flash_dev-1.2.115/flash/cost/analytical.py +0 -946
  646. freesolo_flash_dev-1.2.115/flash/cost/facts.py +0 -214
  647. freesolo_flash_dev-1.2.115/flash/cost/types.py +0 -353
  648. freesolo_flash_dev-1.2.115/flash/engine/plan/model_config_probe.py +0 -130
  649. freesolo_flash_dev-1.2.115/flash/engine/plan/steps.py +0 -141
  650. freesolo_flash_dev-1.2.115/flash/engine/plan/vram.py +0 -991
  651. freesolo_flash_dev-1.2.115/flash/engine/profiling/dataset_profile.py +0 -349
  652. freesolo_flash_dev-1.2.115/flash/engine/profiling/image_tokens.py +0 -300
  653. freesolo_flash_dev-1.2.115/flash/engine/profiling/sft_workload.py +0 -982
  654. freesolo_flash_dev-1.2.115/flash/engine/profiling/tokenizer.py +0 -29
  655. freesolo_flash_dev-1.2.115/flash/engine/worker/__init__.py +0 -538
  656. freesolo_flash_dev-1.2.115/flash/engine/worker/__main__.py +0 -4
  657. freesolo_flash_dev-1.2.115/flash/engine/worker/entry/opd.py +0 -166
  658. freesolo_flash_dev-1.2.115/flash/engine/worker/entry/rl.py +0 -14
  659. freesolo_flash_dev-1.2.115/flash/engine/worker/entry/sft.py +0 -204
  660. freesolo_flash_dev-1.2.115/flash/engine/worker/io/heartbeat.py +0 -732
  661. freesolo_flash_dev-1.2.115/flash/engine/worker/io/hf.py +0 -588
  662. freesolo_flash_dev-1.2.115/flash/engine/worker/io/prefetch.py +0 -290
  663. freesolo_flash_dev-1.2.115/flash/engine/worker/io/wandb_log.py +0 -20
  664. freesolo_flash_dev-1.2.115/flash/engine/worker/model/adapter.py +0 -167
  665. freesolo_flash_dev-1.2.115/flash/engine/worker/model/decoding.py +0 -51
  666. freesolo_flash_dev-1.2.115/flash/engine/worker/opd_train.py +0 -525
  667. freesolo_flash_dev-1.2.115/flash/engine/worker/opd_train_runner.py +0 -783
  668. freesolo_flash_dev-1.2.115/flash/engine/worker/perf/lifecycle.py +0 -413
  669. freesolo_flash_dev-1.2.115/flash/engine/worker/rl_train.py +0 -566
  670. freesolo_flash_dev-1.2.115/flash/engine/worker/rl_train_runner.py +0 -763
  671. freesolo_flash_dev-1.2.115/flash/engine/worker/runtime/pkg_proxy.py +0 -24
  672. freesolo_flash_dev-1.2.115/flash/engine/worker/sft_train.py +0 -679
  673. freesolo_flash_dev-1.2.115/flash/engine/worker/sft_train_runner.py +0 -928
  674. freesolo_flash_dev-1.2.115/flash/engine/worker/teacher/client.py +0 -875
  675. freesolo_flash_dev-1.2.115/flash/engine/worker/train/core/checkpoint_lifecycle.py +0 -143
  676. freesolo_flash_dev-1.2.115/flash/engine/worker/train/finalize.py +0 -97
  677. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/batching.py +0 -216
  678. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/bridge.py +0 -983
  679. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/bridge_failures.py +0 -117
  680. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/failures.py +0 -420
  681. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/multiturn_validation.py +0 -80
  682. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/overrides.py +0 -521
  683. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/prompt_preparation.py +0 -213
  684. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/prompts.py +0 -161
  685. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/reporting.py +0 -94
  686. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/scoring.py +0 -84
  687. freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/state.py +0 -107
  688. freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl/checkpoints.py +0 -328
  689. freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl/config.py +0 -61
  690. freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl/inputs.py +0 -602
  691. freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl/multi_turn.py +0 -823
  692. freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl/scoring.py +0 -73
  693. freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl/single_turn.py +0 -245
  694. freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl/verl_config.py +0 -811
  695. freesolo_flash_dev-1.2.115/flash/engine/worker/train/sft/checkpoints.py +0 -307
  696. freesolo_flash_dev-1.2.115/flash/engine/worker/train/sft/config.py +0 -293
  697. freesolo_flash_dev-1.2.115/flash/engine/worker/verl/capabilities.py +0 -954
  698. freesolo_flash_dev-1.2.115/flash/engine/worker/verl/checkpoints.py +0 -836
  699. freesolo_flash_dev-1.2.115/flash/engine/worker/verl/diagnostics.py +0 -513
  700. freesolo_flash_dev-1.2.115/flash/engine/worker/verl/parallelism.py +0 -76
  701. freesolo_flash_dev-1.2.115/flash/engine/worker_entrypoint.py +0 -22
  702. freesolo_flash_dev-1.2.115/flash/envs/__init__.py +0 -9
  703. freesolo_flash_dev-1.2.115/flash/envs/adapter.py +0 -727
  704. freesolo_flash_dev-1.2.115/flash/envs/base.py +0 -221
  705. freesolo_flash_dev-1.2.115/flash/envs/cache_security.py +0 -189
  706. freesolo_flash_dev-1.2.115/flash/envs/evaluations.py +0 -620
  707. freesolo_flash_dev-1.2.115/flash/envs/identity.py +0 -267
  708. freesolo_flash_dev-1.2.115/flash/envs/loader.py +0 -985
  709. freesolo_flash_dev-1.2.115/flash/envs/namespace_listing.py +0 -75
  710. freesolo_flash_dev-1.2.115/flash/envs/pull.py +0 -223
  711. freesolo_flash_dev-1.2.115/flash/envs/staged.py +0 -490
  712. freesolo_flash_dev-1.2.115/flash/providers/__init__.py +0 -87
  713. freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/bootstrap.py +0 -961
  714. freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/http.py +0 -206
  715. freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/instance.py +0 -401
  716. freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/poll.py +0 -470
  717. freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/poll_instance.py +0 -719
  718. freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/provider.py +0 -187
  719. freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/terminal_artifacts.py +0 -268
  720. freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/worker.py +0 -366
  721. freesolo_flash_dev-1.2.115/flash/providers/allocator.py +0 -985
  722. freesolo_flash_dev-1.2.115/flash/providers/artifacts/hf.py +0 -481
  723. freesolo_flash_dev-1.2.115/flash/providers/artifacts/preload_runpod.py +0 -524
  724. freesolo_flash_dev-1.2.115/flash/providers/artifacts/weight_cache.py +0 -862
  725. freesolo_flash_dev-1.2.115/flash/providers/base.py +0 -959
  726. freesolo_flash_dev-1.2.115/flash/providers/fit_errors.py +0 -414
  727. freesolo_flash_dev-1.2.115/flash/providers/lambda_/__init__.py +0 -208
  728. freesolo_flash_dev-1.2.115/flash/providers/lambda_/api.py +0 -322
  729. freesolo_flash_dev-1.2.115/flash/providers/lambda_/auth.py +0 -15
  730. freesolo_flash_dev-1.2.115/flash/providers/lambda_/gpus.py +0 -104
  731. freesolo_flash_dev-1.2.115/flash/providers/lambda_/jobs/__init__.py +0 -970
  732. freesolo_flash_dev-1.2.115/flash/providers/lambda_/jobs/builders.py +0 -121
  733. freesolo_flash_dev-1.2.115/flash/providers/lambda_/preflight.py +0 -15
  734. freesolo_flash_dev-1.2.115/flash/providers/lambda_/pricing.py +0 -57
  735. freesolo_flash_dev-1.2.115/flash/providers/preflight.py +0 -214
  736. freesolo_flash_dev-1.2.115/flash/providers/realized.py +0 -65
  737. freesolo_flash_dev-1.2.115/flash/providers/runpod/__init__.py +0 -221
  738. freesolo_flash_dev-1.2.115/flash/providers/runpod/api.py +0 -457
  739. freesolo_flash_dev-1.2.115/flash/providers/runpod/auth.py +0 -109
  740. freesolo_flash_dev-1.2.115/flash/providers/runpod/cost.py +0 -52
  741. freesolo_flash_dev-1.2.115/flash/providers/runpod/gpus.py +0 -83
  742. freesolo_flash_dev-1.2.115/flash/providers/runpod/job_execution.py +0 -801
  743. freesolo_flash_dev-1.2.115/flash/providers/runpod/jobs.py +0 -483
  744. freesolo_flash_dev-1.2.115/flash/providers/runpod/preflight.py +0 -24
  745. freesolo_flash_dev-1.2.115/flash/providers/runpod/pricing.py +0 -19
  746. freesolo_flash_dev-1.2.115/flash/providers/runpod/resources.py +0 -268
  747. freesolo_flash_dev-1.2.115/flash/providers/runpod/serverless/__init__.py +0 -24
  748. freesolo_flash_dev-1.2.115/flash/providers/runpod/serverless/endpoints.py +0 -960
  749. freesolo_flash_dev-1.2.115/flash/providers/sharding.py +0 -114
  750. freesolo_flash_dev-1.2.115/flash/providers/vast/__init__.py +0 -214
  751. freesolo_flash_dev-1.2.115/flash/providers/vast/api.py +0 -473
  752. freesolo_flash_dev-1.2.115/flash/providers/vast/auth.py +0 -16
  753. freesolo_flash_dev-1.2.115/flash/providers/vast/jobs/__init__.py +0 -953
  754. freesolo_flash_dev-1.2.115/flash/providers/vast/jobs/builders.py +0 -227
  755. freesolo_flash_dev-1.2.115/flash/providers/vast/preflight.py +0 -17
  756. freesolo_flash_dev-1.2.115/flash/providers/vast/pricing.py +0 -187
  757. freesolo_flash_dev-1.2.115/flash/runner/__init__.py +0 -896
  758. freesolo_flash_dev-1.2.115/flash/runner/artifacts.py +0 -251
  759. freesolo_flash_dev-1.2.115/flash/runner/attempts.py +0 -142
  760. freesolo_flash_dev-1.2.115/flash/runner/costs.py +0 -399
  761. freesolo_flash_dev-1.2.115/flash/runner/deadlines.py +0 -97
  762. freesolo_flash_dev-1.2.115/flash/runner/preparation.py +0 -612
  763. freesolo_flash_dev-1.2.115/flash/runner/reconciliation.py +0 -449
  764. freesolo_flash_dev-1.2.115/flash/runner/results/checkpoints.py +0 -121
  765. freesolo_flash_dev-1.2.115/flash/runner/results/verified_revisions.py +0 -169
  766. freesolo_flash_dev-1.2.115/flash/runner/status.py +0 -436
  767. freesolo_flash_dev-1.2.115/flash/runner/submit.py +0 -350
  768. freesolo_flash_dev-1.2.115/flash/runner/supervise/attach.py +0 -904
  769. freesolo_flash_dev-1.2.115/flash/runner/supervise/deploy.py +0 -859
  770. freesolo_flash_dev-1.2.115/flash/runner/supervise/lifecycle.py +0 -353
  771. freesolo_flash_dev-1.2.115/flash/runner/supervise/recovery.py +0 -641
  772. freesolo_flash_dev-1.2.115/flash/runner/supervise/seed_submission.py +0 -901
  773. freesolo_flash_dev-1.2.115/flash/runner/supervise/transitions.py +0 -328
  774. freesolo_flash_dev-1.2.115/flash/runner/weight_cache.py +0 -81
  775. freesolo_flash_dev-1.2.115/flash/runtime_capsule/profiles.py +0 -66
  776. freesolo_flash_dev-1.2.115/flash/schema/__init__.py +0 -924
  777. freesolo_flash_dev-1.2.115/flash/schema/fields.py +0 -444
  778. freesolo_flash_dev-1.2.115/flash/serve/adapter_check.py +0 -184
  779. freesolo_flash_dev-1.2.115/flash/serve/app/http.py +0 -407
  780. freesolo_flash_dev-1.2.115/flash/serve/app/manifest.py +0 -655
  781. freesolo_flash_dev-1.2.115/flash/serve/app/materialize.py +0 -998
  782. freesolo_flash_dev-1.2.115/flash/serve/app/openai.py +0 -364
  783. freesolo_flash_dev-1.2.115/flash/serve/control/types.py +0 -877
  784. freesolo_flash_dev-1.2.115/flash/serve/deploy.py +0 -957
  785. freesolo_flash_dev-1.2.115/flash/serve/errors.py +0 -73
  786. freesolo_flash_dev-1.2.115/flash/serve/export.py +0 -589
  787. freesolo_flash_dev-1.2.115/flash/serve/provisioning/__init__.py +0 -35
  788. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_deployment.py +0 -640
  789. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_lifecycle.py +0 -112
  790. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_plan.py +0 -305
  791. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_probe.py +0 -136
  792. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_readiness.py +0 -237
  793. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_resources.py +0 -267
  794. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_sdk.py +0 -848
  795. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_teardown.py +0 -179
  796. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_runpod_lifecycle.py +0 -84
  797. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_runpod_plan.py +0 -222
  798. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_runpod_probe.py +0 -74
  799. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_runpod_readiness.py +0 -678
  800. freesolo_flash_dev-1.2.115/flash/serve/provisioning/_runpod_resources.py +0 -317
  801. freesolo_flash_dev-1.2.115/flash/serve/provisioning/modal.py +0 -624
  802. freesolo_flash_dev-1.2.115/flash/serve/provisioning/runpod.py +0 -993
  803. freesolo_flash_dev-1.2.115/flash/serve/request_validation.py +0 -641
  804. freesolo_flash_dev-1.2.115/flash/serve/resolve.py +0 -399
  805. freesolo_flash_dev-1.2.115/flash/serve/responses.py +0 -107
  806. freesolo_flash_dev-1.2.115/flash/serve/runtime/adapters.py +0 -276
  807. freesolo_flash_dev-1.2.115/flash/serve/runtime/engine.py +0 -617
  808. freesolo_flash_dev-1.2.115/flash/serve/runtime/multimodal.py +0 -77
  809. freesolo_flash_dev-1.2.115/flash/serve/runtime/structured_outputs.py +0 -18
  810. freesolo_flash_dev-1.2.115/flash/serve/streaming.py +0 -278
  811. freesolo_flash_dev-1.2.115/flash/serve/thinking.py +0 -224
  812. freesolo_flash_dev-1.2.115/flash/serve/urls.py +0 -148
  813. freesolo_flash_dev-1.2.115/flash/server/__main__.py +0 -73
  814. freesolo_flash_dev-1.2.115/flash/server/app.py +0 -429
  815. freesolo_flash_dev-1.2.115/flash/server/billing/retry.py +0 -126
  816. freesolo_flash_dev-1.2.115/flash/server/domain/checkpoints.py +0 -111
  817. freesolo_flash_dev-1.2.115/flash/server/domain/environment_registry.py +0 -246
  818. freesolo_flash_dev-1.2.115/flash/server/domain/envs.py +0 -796
  819. freesolo_flash_dev-1.2.115/flash/server/domain/reconcile.py +0 -144
  820. freesolo_flash_dev-1.2.115/flash/server/domain/repo_cleanup.py +0 -385
  821. freesolo_flash_dev-1.2.115/flash/server/domain/run_registry.py +0 -181
  822. freesolo_flash_dev-1.2.115/flash/server/domain/teacher_broker.py +0 -898
  823. freesolo_flash_dev-1.2.115/flash/server/domain/teacher_requests.py +0 -212
  824. freesolo_flash_dev-1.2.115/flash/server/platform/deps.py +0 -251
  825. freesolo_flash_dev-1.2.115/flash/server/platform/internal_client.py +0 -194
  826. freesolo_flash_dev-1.2.115/flash/server/platform/locks.py +0 -79
  827. freesolo_flash_dev-1.2.115/flash/server/platform/runtime.py +0 -801
  828. freesolo_flash_dev-1.2.115/flash/server/routes/envs.py +0 -205
  829. freesolo_flash_dev-1.2.115/flash/server/routes/runs.py +0 -552
  830. freesolo_flash_dev-1.2.115/flash/server/routes/serving.py +0 -833
  831. freesolo_flash_dev-1.2.115/flash/server/routes/serving_completion.py +0 -473
  832. freesolo_flash_dev-1.2.115/flash/server/routes/serving_revisions.py +0 -312
  833. freesolo_flash_dev-1.2.115/flash/server/routes/serving_smoke.py +0 -672
  834. freesolo_flash_dev-1.2.115/flash/server/routes/teacher.py +0 -139
  835. freesolo_flash_dev-1.2.115/flash/serving/README.md +0 -321
  836. freesolo_flash_dev-1.2.115/flash/serving/modal_app.py +0 -808
  837. freesolo_flash_dev-1.2.115/flash/serving/src/adapter_routes.py +0 -265
  838. freesolo_flash_dev-1.2.115/flash/serving/src/context.py +0 -167
  839. freesolo_flash_dev-1.2.115/flash/serving/src/engine_boot.py +0 -226
  840. freesolo_flash_dev-1.2.115/flash/serving/src/engine_errors.py +0 -105
  841. freesolo_flash_dev-1.2.115/flash/serving/src/engine_support.py +0 -212
  842. freesolo_flash_dev-1.2.115/flash/serving/src/inference_routes.py +0 -287
  843. freesolo_flash_dev-1.2.115/flash/serving/src/lookup.py +0 -118
  844. freesolo_flash_dev-1.2.115/flash/serving/src/lora_engine.py +0 -989
  845. freesolo_flash_dev-1.2.115/flash/serving/src/lora_entries.py +0 -50
  846. freesolo_flash_dev-1.2.115/flash/serving/src/model_config.py +0 -202
  847. freesolo_flash_dev-1.2.115/flash/serving/src/multimodal.py +0 -79
  848. freesolo_flash_dev-1.2.115/flash/serving/src/persistence.py +0 -310
  849. freesolo_flash_dev-1.2.115/flash/serving/src/registration.py +0 -197
  850. freesolo_flash_dev-1.2.115/flash/serving/src/registry.py +0 -176
  851. freesolo_flash_dev-1.2.115/flash/serving/src/responses.py +0 -230
  852. freesolo_flash_dev-1.2.115/flash/serving/src/router.py +0 -138
  853. freesolo_flash_dev-1.2.115/flash/serving/src/routing.py +0 -145
  854. freesolo_flash_dev-1.2.115/flash/serving/src/schemas.py +0 -469
  855. freesolo_flash_dev-1.2.115/flash/serving/src/serving_io.py +0 -277
  856. freesolo_flash_dev-1.2.115/flash/serving/src/settings.py +0 -123
  857. freesolo_flash_dev-1.2.115/flash/serving/src/streaming.py +0 -370
  858. freesolo_flash_dev-1.2.115/flash/serving/src/structured_outputs.py +0 -25
  859. freesolo_flash_dev-1.2.115/flash/serving/src/supabase_rest.py +0 -50
  860. freesolo_flash_dev-1.2.115/flash/serving/src/undeploy.py +0 -277
  861. freesolo_flash_dev-1.2.115/flash/serving/src/usage.py +0 -117
  862. freesolo_flash_dev-1.2.115/flash/source_snapshot.py +0 -387
  863. freesolo_flash_dev-1.2.115/flash/teacher/retry_contract.py +0 -303
  864. freesolo_flash_dev-1.2.115/pyproject.toml +0 -324
  865. freesolo_flash_dev-1.2.115/scripts/check_verl_pin_exists.py +0 -80
  866. freesolo_flash_dev-1.2.115/tests/_helpers/profile.py +0 -196
  867. freesolo_flash_dev-1.2.115/tests/_helpers/runner.py +0 -64
  868. freesolo_flash_dev-1.2.115/tests/conftest.py +0 -499
  869. freesolo_flash_dev-1.2.115/tests/live/test_lambda_live.py +0 -51
  870. freesolo_flash_dev-1.2.115/tests/live/test_runpod_live.py +0 -36
  871. freesolo_flash_dev-1.2.115/tests/live/test_vast_live.py +0 -56
  872. freesolo_flash_dev-1.2.115/tests/serving/conftest.py +0 -199
  873. freesolo_flash_dev-1.2.115/tests/serving/test_base_model_serving.py +0 -244
  874. freesolo_flash_dev-1.2.115/tests/serving/test_chat_auth.py +0 -262
  875. freesolo_flash_dev-1.2.115/tests/serving/test_chat_authorizer.py +0 -530
  876. freesolo_flash_dev-1.2.115/tests/serving/test_checkpoint_model_validation.py +0 -217
  877. freesolo_flash_dev-1.2.115/tests/serving/test_engine_error_status.py +0 -214
  878. freesolo_flash_dev-1.2.115/tests/serving/test_fp8_config.py +0 -169
  879. freesolo_flash_dev-1.2.115/tests/serving/test_immutable_engine.py +0 -330
  880. freesolo_flash_dev-1.2.115/tests/serving/test_immutable_revisions.py +0 -1493
  881. freesolo_flash_dev-1.2.115/tests/serving/test_immutable_schemas.py +0 -147
  882. freesolo_flash_dev-1.2.115/tests/serving/test_modal_deploy_identity.py +0 -112
  883. freesolo_flash_dev-1.2.115/tests/serving/test_modal_image_paths.py +0 -215
  884. freesolo_flash_dev-1.2.115/tests/serving/test_model_config.py +0 -168
  885. freesolo_flash_dev-1.2.115/tests/serving/test_multimodal.py +0 -1148
  886. freesolo_flash_dev-1.2.115/tests/serving/test_per_model_gpu.py +0 -824
  887. freesolo_flash_dev-1.2.115/tests/serving/test_persistence.py +0 -268
  888. freesolo_flash_dev-1.2.115/tests/serving/test_pre_first_disconnect.py +0 -419
  889. freesolo_flash_dev-1.2.115/tests/serving/test_prequant_config.py +0 -42
  890. freesolo_flash_dev-1.2.115/tests/serving/test_registry.py +0 -308
  891. freesolo_flash_dev-1.2.115/tests/serving/test_registry_coverage.py +0 -65
  892. freesolo_flash_dev-1.2.115/tests/serving/test_request_body_limit.py +0 -182
  893. freesolo_flash_dev-1.2.115/tests/serving/test_router.py +0 -2049
  894. freesolo_flash_dev-1.2.115/tests/serving/test_router_coverage.py +0 -282
  895. freesolo_flash_dev-1.2.115/tests/serving/test_router_edge_coverage.py +0 -308
  896. freesolo_flash_dev-1.2.115/tests/serving/test_schemas_coverage.py +0 -188
  897. freesolo_flash_dev-1.2.115/tests/serving/test_serve_reasoning_split.py +0 -270
  898. freesolo_flash_dev-1.2.115/tests/serving/test_serve_structured_outputs.py +0 -735
  899. freesolo_flash_dev-1.2.115/tests/serving/test_serve_thinking.py +0 -172
  900. freesolo_flash_dev-1.2.115/tests/serving/test_settings.py +0 -93
  901. freesolo_flash_dev-1.2.115/tests/serving/test_structured_outputs.py +0 -397
  902. freesolo_flash_dev-1.2.115/tests/serving/test_structured_outputs_coverage.py +0 -22
  903. freesolo_flash_dev-1.2.115/tests/serving/test_supabase_rest_coverage.py +0 -62
  904. freesolo_flash_dev-1.2.115/tests/serving/test_usage_reporter.py +0 -1134
  905. freesolo_flash_dev-1.2.115/tests/serving_conformance/conftest.py +0 -162
  906. freesolo_flash_dev-1.2.115/tests/serving_conformance/test_contract.py +0 -786
  907. freesolo_flash_dev-1.2.115/tests/test_adapter_shard_completeness.py +0 -376
  908. freesolo_flash_dev-1.2.115/tests/test_agent_flash_cli_contract.py +0 -297
  909. freesolo_flash_dev-1.2.115/tests/test_allocator.py +0 -2437
  910. freesolo_flash_dev-1.2.115/tests/test_backend_common.py +0 -4902
  911. freesolo_flash_dev-1.2.115/tests/test_bake_kernel_cache.py +0 -165
  912. freesolo_flash_dev-1.2.115/tests/test_billing_retry.py +0 -722
  913. freesolo_flash_dev-1.2.115/tests/test_cancel_remote.py +0 -2184
  914. freesolo_flash_dev-1.2.115/tests/test_catalog_consistency.py +0 -217
  915. freesolo_flash_dev-1.2.115/tests/test_catalog_only_models.py +0 -88
  916. freesolo_flash_dev-1.2.115/tests/test_charge_pricing.py +0 -771
  917. freesolo_flash_dev-1.2.115/tests/test_checkpoint_lifecycle.py +0 -132
  918. freesolo_flash_dev-1.2.115/tests/test_checkpoints.py +0 -686
  919. freesolo_flash_dev-1.2.115/tests/test_cli_commands.py +0 -5442
  920. freesolo_flash_dev-1.2.115/tests/test_cli_commands_coverage.py +0 -566
  921. freesolo_flash_dev-1.2.115/tests/test_cli_credential_shadowing.py +0 -160
  922. freesolo_flash_dev-1.2.115/tests/test_cli_errors.py +0 -285
  923. freesolo_flash_dev-1.2.115/tests/test_cli_estimate.py +0 -1233
  924. freesolo_flash_dev-1.2.115/tests/test_cli_gpus_flag.py +0 -350
  925. freesolo_flash_dev-1.2.115/tests/test_cli_help.py +0 -206
  926. freesolo_flash_dev-1.2.115/tests/test_cli_main_coverage.py +0 -19
  927. freesolo_flash_dev-1.2.115/tests/test_cli_render_coverage.py +0 -643
  928. freesolo_flash_dev-1.2.115/tests/test_cli_render_theme.py +0 -1774
  929. freesolo_flash_dev-1.2.115/tests/test_cli_serve_deploy.py +0 -1028
  930. freesolo_flash_dev-1.2.115/tests/test_cli_serve_status.py +0 -367
  931. freesolo_flash_dev-1.2.115/tests/test_cli_serve_undeploy.py +0 -476
  932. freesolo_flash_dev-1.2.115/tests/test_cli_traces.py +0 -709
  933. freesolo_flash_dev-1.2.115/tests/test_cli_wandb_warning.py +0 -122
  934. freesolo_flash_dev-1.2.115/tests/test_client.py +0 -1411
  935. freesolo_flash_dev-1.2.115/tests/test_client_import_purity.py +0 -175
  936. freesolo_flash_dev-1.2.115/tests/test_client_server_integration.py +0 -348
  937. freesolo_flash_dev-1.2.115/tests/test_client_stream_reads.py +0 -161
  938. freesolo_flash_dev-1.2.115/tests/test_config_env_vars.py +0 -407
  939. freesolo_flash_dev-1.2.115/tests/test_console_upload.py +0 -145
  940. freesolo_flash_dev-1.2.115/tests/test_controlled_experiment_repairs.py +0 -503
  941. freesolo_flash_dev-1.2.115/tests/test_cost_analytical.py +0 -467
  942. freesolo_flash_dev-1.2.115/tests/test_cost_equation.py +0 -26
  943. freesolo_flash_dev-1.2.115/tests/test_cost_estimate.py +0 -1021
  944. freesolo_flash_dev-1.2.115/tests/test_cost_hardware.py +0 -685
  945. freesolo_flash_dev-1.2.115/tests/test_cost_models.py +0 -219
  946. freesolo_flash_dev-1.2.115/tests/test_deploy_alias_move_warning.py +0 -554
  947. freesolo_flash_dev-1.2.115/tests/test_deploy_latency.py +0 -422
  948. freesolo_flash_dev-1.2.115/tests/test_dev_channel.py +0 -702
  949. freesolo_flash_dev-1.2.115/tests/test_disk_gb.py +0 -210
  950. freesolo_flash_dev-1.2.115/tests/test_endpoint_name.py +0 -45
  951. freesolo_flash_dev-1.2.115/tests/test_env_cache_evict.py +0 -515
  952. freesolo_flash_dev-1.2.115/tests/test_env_delete.py +0 -148
  953. freesolo_flash_dev-1.2.115/tests/test_env_download.py +0 -109
  954. freesolo_flash_dev-1.2.115/tests/test_env_download_api.py +0 -95
  955. freesolo_flash_dev-1.2.115/tests/test_env_evaluations.py +0 -4227
  956. freesolo_flash_dev-1.2.115/tests/test_env_list_api.py +0 -117
  957. freesolo_flash_dev-1.2.115/tests/test_env_list_cli.py +0 -102
  958. freesolo_flash_dev-1.2.115/tests/test_env_list_hub.py +0 -213
  959. freesolo_flash_dev-1.2.115/tests/test_env_no_install.py +0 -85
  960. freesolo_flash_dev-1.2.115/tests/test_env_publish.py +0 -1962
  961. freesolo_flash_dev-1.2.115/tests/test_env_pull.py +0 -1255
  962. freesolo_flash_dev-1.2.115/tests/test_env_pull_coverage.py +0 -167
  963. freesolo_flash_dev-1.2.115/tests/test_env_pull_loader_coverage.py +0 -332
  964. freesolo_flash_dev-1.2.115/tests/test_env_pull_managed_control_plane.py +0 -174
  965. freesolo_flash_dev-1.2.115/tests/test_env_push.py +0 -1733
  966. freesolo_flash_dev-1.2.115/tests/test_env_rate_limit_resolve.py +0 -332
  967. freesolo_flash_dev-1.2.115/tests/test_env_ref_pinning.py +0 -73
  968. freesolo_flash_dev-1.2.115/tests/test_env_test.py +0 -3436
  969. freesolo_flash_dev-1.2.115/tests/test_envs_coverage.py +0 -117
  970. freesolo_flash_dev-1.2.115/tests/test_export.py +0 -1579
  971. freesolo_flash_dev-1.2.115/tests/test_flash_mvp.py +0 -131
  972. freesolo_flash_dev-1.2.115/tests/test_flash_worker.py +0 -1527
  973. freesolo_flash_dev-1.2.115/tests/test_fused_expert_warmstart.py +0 -1893
  974. freesolo_flash_dev-1.2.115/tests/test_github_urlopen_retry.py +0 -365
  975. freesolo_flash_dev-1.2.115/tests/test_gpu_type_single_field.py +0 -195
  976. freesolo_flash_dev-1.2.115/tests/test_gpus.py +0 -537
  977. freesolo_flash_dev-1.2.115/tests/test_grpo_params.py +0 -734
  978. freesolo_flash_dev-1.2.115/tests/test_grpo_resident_sizing.py +0 -193
  979. freesolo_flash_dev-1.2.115/tests/test_grpo_reward_batching.py +0 -324
  980. freesolo_flash_dev-1.2.115/tests/test_grpo_rollout_contract.py +0 -486
  981. freesolo_flash_dev-1.2.115/tests/test_grpo_rollout_identity.py +0 -824
  982. freesolo_flash_dev-1.2.115/tests/test_idle_endpoint_reaper.py +0 -509
  983. freesolo_flash_dev-1.2.115/tests/test_image_environment_capability.py +0 -92
  984. freesolo_flash_dev-1.2.115/tests/test_instance_bootstrap_coverage.py +0 -2635
  985. freesolo_flash_dev-1.2.115/tests/test_jobs.py +0 -7246
  986. freesolo_flash_dev-1.2.115/tests/test_kernel_fingerprint.py +0 -366
  987. freesolo_flash_dev-1.2.115/tests/test_lambda_api_coverage.py +0 -510
  988. freesolo_flash_dev-1.2.115/tests/test_lambda_runner.py +0 -4164
  989. freesolo_flash_dev-1.2.115/tests/test_login_perms.py +0 -346
  990. freesolo_flash_dev-1.2.115/tests/test_lora_rank_preflight.py +0 -705
  991. freesolo_flash_dev-1.2.115/tests/test_lora_targeting.py +0 -780
  992. freesolo_flash_dev-1.2.115/tests/test_lora_targeting_pinned_verl.py +0 -240
  993. freesolo_flash_dev-1.2.115/tests/test_managed_hf_repo.py +0 -102
  994. freesolo_flash_dev-1.2.115/tests/test_multi_gpu_gate.py +0 -1631
  995. freesolo_flash_dev-1.2.115/tests/test_multimodal_training.py +0 -1203
  996. freesolo_flash_dev-1.2.115/tests/test_named_reward_metrics.py +0 -93
  997. freesolo_flash_dev-1.2.115/tests/test_oom_escalate_gpu.py +0 -965
  998. freesolo_flash_dev-1.2.115/tests/test_opd.py +0 -1892
  999. freesolo_flash_dev-1.2.115/tests/test_opd_multiturn_eos_boundary.py +0 -75
  1000. freesolo_flash_dev-1.2.115/tests/test_opd_multiturn_failure_exit.py +0 -449
  1001. freesolo_flash_dev-1.2.115/tests/test_opd_resume_safety.py +0 -1405
  1002. freesolo_flash_dev-1.2.115/tests/test_opd_train.py +0 -9578
  1003. freesolo_flash_dev-1.2.115/tests/test_orchestrator_flash.py +0 -484
  1004. freesolo_flash_dev-1.2.115/tests/test_packing_coverage.py +0 -179
  1005. freesolo_flash_dev-1.2.115/tests/test_parasail_teacher.py +0 -1440
  1006. freesolo_flash_dev-1.2.115/tests/test_persisted_spec_envelope.py +0 -93
  1007. freesolo_flash_dev-1.2.115/tests/test_poll_helpers.py +0 -262
  1008. freesolo_flash_dev-1.2.115/tests/test_preflight.py +0 -290
  1009. freesolo_flash_dev-1.2.115/tests/test_projects.py +0 -649
  1010. freesolo_flash_dev-1.2.115/tests/test_prompt_budget.py +0 -397
  1011. freesolo_flash_dev-1.2.115/tests/test_provider_preflight_coverage.py +0 -59
  1012. freesolo_flash_dev-1.2.115/tests/test_provider_routing.py +0 -2851
  1013. freesolo_flash_dev-1.2.115/tests/test_provider_teardown_robustness.py +0 -152
  1014. freesolo_flash_dev-1.2.115/tests/test_providers_symmetry.py +0 -447
  1015. freesolo_flash_dev-1.2.115/tests/test_realized_cost.py +0 -443
  1016. freesolo_flash_dev-1.2.115/tests/test_repo_cleanup.py +0 -621
  1017. freesolo_flash_dev-1.2.115/tests/test_resolve_params_b.py +0 -75
  1018. freesolo_flash_dev-1.2.115/tests/test_resume_on_retry.py +0 -1202
  1019. freesolo_flash_dev-1.2.115/tests/test_rl_train.py +0 -9533
  1020. freesolo_flash_dev-1.2.115/tests/test_rollout_samples.py +0 -364
  1021. freesolo_flash_dev-1.2.115/tests/test_runmgmt.py +0 -3239
  1022. freesolo_flash_dev-1.2.115/tests/test_runpod_api_delete.py +0 -155
  1023. freesolo_flash_dev-1.2.115/tests/test_runpod_key_fingerprint.py +0 -400
  1024. freesolo_flash_dev-1.2.115/tests/test_runpod_key_waterfall.py +0 -391
  1025. freesolo_flash_dev-1.2.115/tests/test_runtime_capsule.py +0 -434
  1026. freesolo_flash_dev-1.2.115/tests/test_serve.py +0 -1969
  1027. freesolo_flash_dev-1.2.115/tests/test_serve_app_packaging.py +0 -227
  1028. freesolo_flash_dev-1.2.115/tests/test_serve_modal_sdk.py +0 -1047
  1029. freesolo_flash_dev-1.2.115/tests/test_serve_modal_sdk_deadlines.py +0 -126
  1030. freesolo_flash_dev-1.2.115/tests/test_serve_modal_teardown_identity.py +0 -105
  1031. freesolo_flash_dev-1.2.115/tests/test_serve_profiles.py +0 -359
  1032. freesolo_flash_dev-1.2.115/tests/test_serve_provisioning_common.py +0 -404
  1033. freesolo_flash_dev-1.2.115/tests/test_serve_provisioning_modal.py +0 -2929
  1034. freesolo_flash_dev-1.2.115/tests/test_serve_provisioning_runpod.py +0 -4630
  1035. freesolo_flash_dev-1.2.115/tests/test_serve_reasoning_content.py +0 -596
  1036. freesolo_flash_dev-1.2.115/tests/test_serve_resolve_provenance.py +0 -493
  1037. freesolo_flash_dev-1.2.115/tests/test_serve_runtime_package.py +0 -101
  1038. freesolo_flash_dev-1.2.115/tests/test_server_api.py +0 -10888
  1039. freesolo_flash_dev-1.2.115/tests/test_server_app_coverage.py +0 -267
  1040. freesolo_flash_dev-1.2.115/tests/test_server_billing.py +0 -884
  1041. freesolo_flash_dev-1.2.115/tests/test_server_checkpoints_coverage.py +0 -77
  1042. freesolo_flash_dev-1.2.115/tests/test_server_db.py +0 -487
  1043. freesolo_flash_dev-1.2.115/tests/test_server_envs_coverage.py +0 -2378
  1044. freesolo_flash_dev-1.2.115/tests/test_server_serving_resources.py +0 -217
  1045. freesolo_flash_dev-1.2.115/tests/test_server_standalone.py +0 -1101
  1046. freesolo_flash_dev-1.2.115/tests/test_serving_conformance_gate.py +0 -91
  1047. freesolo_flash_dev-1.2.115/tests/test_serving_contract.py +0 -1019
  1048. freesolo_flash_dev-1.2.115/tests/test_serving_schema_coverage.py +0 -201
  1049. freesolo_flash_dev-1.2.115/tests/test_sft_chunked_nll.py +0 -37
  1050. freesolo_flash_dev-1.2.115/tests/test_sft_max_context.py +0 -95
  1051. freesolo_flash_dev-1.2.115/tests/test_sft_train.py +0 -5279
  1052. freesolo_flash_dev-1.2.115/tests/test_sft_workload.py +0 -1503
  1053. freesolo_flash_dev-1.2.115/tests/test_source_attestation_flow.py +0 -189
  1054. freesolo_flash_dev-1.2.115/tests/test_source_snapshot.py +0 -201
  1055. freesolo_flash_dev-1.2.115/tests/test_spec_and_validation.py +0 -2439
  1056. freesolo_flash_dev-1.2.115/tests/test_spec_contract_bytes.py +0 -346
  1057. freesolo_flash_dev-1.2.115/tests/test_staged_environment.py +0 -916
  1058. freesolo_flash_dev-1.2.115/tests/test_step_metrics.py +0 -385
  1059. freesolo_flash_dev-1.2.115/tests/test_step_timing.py +0 -404
  1060. freesolo_flash_dev-1.2.115/tests/test_teacher_broker.py +0 -2354
  1061. freesolo_flash_dev-1.2.115/tests/test_terminal_artifacts.py +0 -195
  1062. freesolo_flash_dev-1.2.115/tests/test_training_controls.py +0 -600
  1063. freesolo_flash_dev-1.2.115/tests/test_vast_api.py +0 -773
  1064. freesolo_flash_dev-1.2.115/tests/test_vast_api_coverage.py +0 -307
  1065. freesolo_flash_dev-1.2.115/tests/test_vast_offers.py +0 -416
  1066. freesolo_flash_dev-1.2.115/tests/test_vast_provider_coverage.py +0 -131
  1067. freesolo_flash_dev-1.2.115/tests/test_vast_runner.py +0 -2882
  1068. freesolo_flash_dev-1.2.115/tests/test_verified_revisions.py +0 -233
  1069. freesolo_flash_dev-1.2.115/tests/test_verifiers.py +0 -2928
  1070. freesolo_flash_dev-1.2.115/tests/test_verl_checkpoint_export.py +0 -598
  1071. freesolo_flash_dev-1.2.115/tests/test_verl_child_plugins.py +0 -796
  1072. freesolo_flash_dev-1.2.115/tests/test_verl_silence_watchdog.py +0 -223
  1073. freesolo_flash_dev-1.2.115/tests/test_vram_architecture.py +0 -231
  1074. freesolo_flash_dev-1.2.115/tests/test_wandb_link.py +0 -393
  1075. freesolo_flash_dev-1.2.115/tests/test_wandb_naming.py +0 -167
  1076. freesolo_flash_dev-1.2.115/tests/test_warmstart_adapter_download.py +0 -321
  1077. freesolo_flash_dev-1.2.115/tests/test_warmstart_cross_repo.py +0 -1612
  1078. freesolo_flash_dev-1.2.115/tests/test_warmstart_error_attribution.py +0 -60
  1079. freesolo_flash_dev-1.2.115/tests/test_warmstart_image_adapters.py +0 -222
  1080. freesolo_flash_dev-1.2.115/tests/test_weight_cache.py +0 -4907
  1081. freesolo_flash_dev-1.2.115/tests/test_worker_dryrun.py +0 -171
  1082. freesolo_flash_dev-1.2.115/tests/test_worker_hardexit.py +0 -298
  1083. freesolo_flash_dev-1.2.115/tests/test_worker_image.py +0 -42
  1084. freesolo_flash_dev-1.2.115/tests/test_worker_init_heartbeat.py +0 -1705
  1085. freesolo_flash_dev-1.2.115/tests/test_worker_stack.py +0 -2222
  1086. freesolo_flash_dev-1.2.115/tests/test_worker_thinking.py +0 -248
  1087. freesolo_flash_dev-1.2.115/tests/test_zero2_sharding_gate.py +0 -266
  1088. freesolo_flash_dev-1.2.115/uv.lock +0 -5817
  1089. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.dockerignore +0 -0
  1090. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/CODEOWNERS +0 -0
  1091. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  1092. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  1093. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  1094. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  1095. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/dependabot.yml +0 -0
  1096. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/workflows/dev-kernel-cache.yml +0 -0
  1097. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/workflows/main-source-guard.yml +0 -0
  1098. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/workflows/notify-tests-repo.yml +0 -0
  1099. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  1100. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/workflows/publish-dev.yml +0 -0
  1101. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/workflows/publish.yml +0 -0
  1102. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.github/workflows/version-parity.yml +0 -0
  1103. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/.gitignore +0 -0
  1104. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/CODE_OF_CONDUCT.md +0 -0
  1105. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/Dockerfile +0 -0
  1106. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/Dockerfile.serve +0 -0
  1107. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/LICENSE +0 -0
  1108. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/NOTICE +0 -0
  1109. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/README.md +0 -0
  1110. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/SECURITY.md +0 -0
  1111. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/SELF_HOSTING.md +0 -0
  1112. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/build/kernel_cache/.gitignore +0 -0
  1113. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/build/kernel_cache/.keep +0 -0
  1114. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/deploy/infisical/README.md +0 -0
  1115. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/deploy/infisical/entrypoint.sh +0 -0
  1116. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/docker/Dockerfile.kernelcache +0 -0
  1117. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/docker/Dockerfile.kernelcache.relayer +0 -0
  1118. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/docker/bake_kernel_cache.py +0 -0
  1119. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/docker/bake_pod_entry.py +0 -0
  1120. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/docker/extract_cudart_fix.py +0 -0
  1121. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/docs/serving-contract.md +0 -0
  1122. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/_internal/__init__.py +0 -0
  1123. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/_internal/fileio.py +0 -0
  1124. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/_internal/logging.py +0 -0
  1125. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/_internal/paths.py +0 -0
  1126. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/adapters/__init__.py +0 -0
  1127. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/adapters/artifacts.py +0 -0
  1128. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/adapters/fused_experts.py +0 -0
  1129. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/adapters/targets.py +0 -0
  1130. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/cli/commands/env/__init__.py +0 -0
  1131. {freesolo_flash_dev-1.2.115/flash/cli/ui → freesolo_flash_dev-1.2.117/flash/cli/commands/env/ops}/__init__.py +0 -0
  1132. {freesolo_flash_dev-1.2.115/flash/cli/commands/env → freesolo_flash_dev-1.2.117/flash/cli/commands/env/ops}/setup_wandb.py +0 -0
  1133. {freesolo_flash_dev-1.2.115/flash/content → freesolo_flash_dev-1.2.117/flash/cli/commands/env/testing}/__init__.py +0 -0
  1134. {freesolo_flash_dev-1.2.115/flash/cli/commands/env → freesolo_flash_dev-1.2.117/flash/cli/commands/env/testing}/eval_args.py +0 -0
  1135. {freesolo_flash_dev-1.2.115/flash/core → freesolo_flash_dev-1.2.117/flash/cli/commands/ops}/__init__.py +0 -0
  1136. {freesolo_flash_dev-1.2.115/flash/cli/commands → freesolo_flash_dev-1.2.117/flash/cli/commands/ops}/prompt_budget.py +0 -0
  1137. {freesolo_flash_dev-1.2.115/flash/engine/plan → freesolo_flash_dev-1.2.117/flash/cli/commands/serving}/__init__.py +0 -0
  1138. {freesolo_flash_dev-1.2.115/flash/engine/profiling → freesolo_flash_dev-1.2.117/flash/cli/parsing}/__init__.py +0 -0
  1139. {freesolo_flash_dev-1.2.115/flash/cli → freesolo_flash_dev-1.2.117/flash/cli/parsing}/errors.py +0 -0
  1140. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/cli/scaffold/__init__.py +0 -0
  1141. {freesolo_flash_dev-1.2.115/flash/engine/result → freesolo_flash_dev-1.2.117/flash/cli/ui}/__init__.py +0 -0
  1142. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/cli/ui/env_panels.py +0 -0
  1143. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/cli/ui/tty.py +0 -0
  1144. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/client/config.py +0 -0
  1145. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/client/runtime_secrets.py +0 -0
  1146. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/client/shapes.py +0 -0
  1147. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/client/specs.py +0 -0
  1148. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/client/streaming.py +0 -0
  1149. {freesolo_flash_dev-1.2.115/flash/engine/worker/entry → freesolo_flash_dev-1.2.117/flash/content}/__init__.py +0 -0
  1150. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/content/image_descriptors.py +0 -0
  1151. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/content/reasoning_normalization.py +0 -0
  1152. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/content/structured_outputs.py +0 -0
  1153. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/content/thinking.py +0 -0
  1154. {freesolo_flash_dev-1.2.115/flash/engine/worker/io → freesolo_flash_dev-1.2.117/flash/core}/__init__.py +0 -0
  1155. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/core/catalog.py +0 -0
  1156. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/core/grpo.py +0 -0
  1157. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/cost/__init__.py +0 -0
  1158. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/cost/currency.py +0 -0
  1159. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/cost/spec.py +0 -0
  1160. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/__init__.py +0 -0
  1161. {freesolo_flash_dev-1.2.115/flash/engine/worker/model → freesolo_flash_dev-1.2.117/flash/engine/plan}/__init__.py +0 -0
  1162. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/plan/kv_sizing.py +0 -0
  1163. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/plan/prompt_budget.py +0 -0
  1164. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/plan/recipe.py +0 -0
  1165. {freesolo_flash_dev-1.2.115/flash/engine/worker/runtime → freesolo_flash_dev-1.2.117/flash/engine/profiling}/__init__.py +0 -0
  1166. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/profiling/reasoning_render.py +0 -0
  1167. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/profiling/sft_image_rows.py +0 -0
  1168. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/profiling/workload_profile.py +0 -0
  1169. {freesolo_flash_dev-1.2.115/flash/engine/worker/teacher → freesolo_flash_dev-1.2.117/flash/engine/result}/__init__.py +0 -0
  1170. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/result/accounting.py +0 -0
  1171. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/result/rollout_samples.py +0 -0
  1172. {freesolo_flash_dev-1.2.115/flash/engine/worker/train → freesolo_flash_dev-1.2.117/flash/engine/support}/__init__.py +0 -0
  1173. {freesolo_flash_dev-1.2.115/flash/engine → freesolo_flash_dev-1.2.117/flash/engine/support}/huggingface.py +0 -0
  1174. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/core → freesolo_flash_dev-1.2.117/flash/engine/worker/entry}/__init__.py +0 -0
  1175. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd → freesolo_flash_dev-1.2.117/flash/engine/worker/io}/__init__.py +0 -0
  1176. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/child → freesolo_flash_dev-1.2.117/flash/engine/worker/model}/__init__.py +0 -0
  1177. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/model/chatml_mask.py +0 -0
  1178. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/model/lora.py +0 -0
  1179. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/model/packing.py +0 -0
  1180. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/perf/__init__.py +0 -0
  1181. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/perf/diagnostics.py +0 -0
  1182. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/perf/liger.py +0 -0
  1183. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/perf/memory.py +0 -0
  1184. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl → freesolo_flash_dev-1.2.117/flash/engine/worker/runtime}/__init__.py +0 -0
  1185. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  1186. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/runtime/rng.py +0 -0
  1187. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl/child → freesolo_flash_dev-1.2.117/flash/engine/worker/teacher}/__init__.py +0 -0
  1188. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/teacher/encoding.py +0 -0
  1189. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
  1190. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/sft → freesolo_flash_dev-1.2.117/flash/engine/worker/train}/__init__.py +0 -0
  1191. {freesolo_flash_dev-1.2.115/flash/envs/package → freesolo_flash_dev-1.2.117/flash/engine/worker/train/core}/__init__.py +0 -0
  1192. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/core/child/__init__.py +0 -0
  1193. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/core/child/glue.py +0 -0
  1194. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/core/child/runtime.py +0 -0
  1195. {freesolo_flash_dev-1.2.115/flash/providers/_lifecycle → freesolo_flash_dev-1.2.117/flash/engine/worker/train/core/lifecycle}/__init__.py +0 -0
  1196. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/core → freesolo_flash_dev-1.2.117/flash/engine/worker/train/core/lifecycle}/step_timing.py +0 -0
  1197. {freesolo_flash_dev-1.2.115/flash/providers/artifacts → freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry}/__init__.py +0 -0
  1198. {freesolo_flash_dev-1.2.115/flash/engine/worker → freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry}/backend_common.py +0 -0
  1199. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/core → freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry}/prompt_rows.py +0 -0
  1200. {freesolo_flash_dev-1.2.115/flash/engine/worker → freesolo_flash_dev-1.2.117/flash/engine/worker/train/entry}/score_batcher.py +0 -0
  1201. {freesolo_flash_dev-1.2.115/flash/runner/results → freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd}/__init__.py +0 -0
  1202. {freesolo_flash_dev-1.2.115/flash/runner/supervise → freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/bridging}/__init__.py +0 -0
  1203. {freesolo_flash_dev-1.2.115/flash/server/billing → freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/child}/__init__.py +0 -0
  1204. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/opd/child/bridge.py +0 -0
  1205. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/opd/child/entry.py +0 -0
  1206. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
  1207. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/opd/child/plugin.py +0 -0
  1208. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
  1209. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/opd/child/runtime.py +0 -0
  1210. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/opd/child/structured.py +0 -0
  1211. {freesolo_flash_dev-1.2.115/flash/server/domain → freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/multiturn}/__init__.py +0 -0
  1212. /freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd/multiturn_media.py → /freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/multiturn/media.py +0 -0
  1213. {freesolo_flash_dev-1.2.115/flash/server/platform → freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration}/__init__.py +0 -0
  1214. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd → freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration}/gkd.py +0 -0
  1215. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/opd → freesolo_flash_dev-1.2.117/flash/engine/worker/train/opd/orchestration}/validation.py +0 -0
  1216. {freesolo_flash_dev-1.2.115/flash/serving → freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl}/__init__.py +0 -0
  1217. {freesolo_flash_dev-1.2.115/flash/teacher → freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/child}/__init__.py +0 -0
  1218. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/rl/child/entry.py +0 -0
  1219. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  1220. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/rl/child/patches.py +0 -0
  1221. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/rl/child/plugin.py +0 -0
  1222. {freesolo_flash_dev-1.2.115/tests/live → freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/launch}/__init__.py +0 -0
  1223. {freesolo_flash_dev-1.2.115/tests/serving_conformance → freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/rollout}/__init__.py +0 -0
  1224. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl → freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/rollout}/identity.py +0 -0
  1225. {freesolo_flash_dev-1.2.115/flash/engine/worker/train/rl → freesolo_flash_dev-1.2.117/flash/engine/worker/train/rl/rollout}/reward_module.py +0 -0
  1226. /freesolo_flash_dev-1.2.115/flash/py.typed → /freesolo_flash_dev-1.2.117/flash/engine/worker/train/sft/__init__.py +0 -0
  1227. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/sft/child/entry.py +0 -0
  1228. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/train/sft/child/plugin.py +0 -0
  1229. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/verl/__init__.py +0 -0
  1230. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/verl/child_io.py +0 -0
  1231. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/verl/parent_work.py +0 -0
  1232. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/engine/worker/verl/process_census.py +0 -0
  1233. {freesolo_flash_dev-1.2.115/flash/envs → freesolo_flash_dev-1.2.117/flash/envs/meta}/dataset_selection.py +0 -0
  1234. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/envs/package/direct_tokens.py +0 -0
  1235. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/envs/package/limits.py +0 -0
  1236. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/envs/package/unpack.py +0 -0
  1237. /freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/bootstrap_console.py → /freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  1238. /freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/bootstrap_pip.py → /freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  1239. /freesolo_flash_dev-1.2.115/flash/providers/_lifecycle/bootstrap_secrets.py → /freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  1240. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/providers/_lifecycle/host/__init__.py +0 -0
  1241. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
  1242. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/providers/_lifecycle/host/failmark.py +0 -0
  1243. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/providers/_lifecycle/host/hostlog.py +0 -0
  1244. {freesolo_flash_dev-1.2.115/flash/providers/_lifecycle → freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/net}/auth.py +0 -0
  1245. {freesolo_flash_dev-1.2.115/flash/providers/_lifecycle → freesolo_flash_dev-1.2.117/flash/providers/_lifecycle/net}/deadline.py +0 -0
  1246. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/providers/lambda_/jobs/reap.py +0 -0
  1247. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/runner/supervise/retry_decision.py +0 -0
  1248. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/runtime_capsule/__init__.py +0 -0
  1249. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/runtime_capsule/build.py +0 -0
  1250. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/runtime_capsule/manifest.py +0 -0
  1251. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/__init__.py +0 -0
  1252. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/app/__init__.py +0 -0
  1253. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/app/__main__.py +0 -0
  1254. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/app/bootstrap.py +0 -0
  1255. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/app/launch.py +0 -0
  1256. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/app/progress.py +0 -0
  1257. {freesolo_flash_dev-1.2.115/flash/serve → freesolo_flash_dev-1.2.117/flash/serve/contract}/profiles.py +0 -0
  1258. /freesolo_flash_dev-1.2.115/flash/serve/contract.py → /freesolo_flash_dev-1.2.117/flash/serve/contract/protocol.py +0 -0
  1259. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/control/__init__.py +0 -0
  1260. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/control/_canonical.py +0 -0
  1261. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/control/_serialization.py +0 -0
  1262. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/control/_urls.py +0 -0
  1263. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/control/credentials.py +0 -0
  1264. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/control/planning.py +0 -0
  1265. {freesolo_flash_dev-1.2.115/flash/serve → freesolo_flash_dev-1.2.117/flash/serve/deployment}/preflight.py +0 -0
  1266. /freesolo_flash_dev-1.2.115/flash/serve/provisioning/_common.py → /freesolo_flash_dev-1.2.117/flash/serve/provisioning/common/records.py +0 -0
  1267. /freesolo_flash_dev-1.2.115/flash/serve/provisioning/_modal_wrapper.py → /freesolo_flash_dev-1.2.117/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  1268. /freesolo_flash_dev-1.2.115/flash/serve/provisioning/_runpod_mutations.py → /freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/mutations.py +0 -0
  1269. /freesolo_flash_dev-1.2.115/flash/serve/provisioning/_runpod_protocol.py → /freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/protocol.py +0 -0
  1270. /freesolo_flash_dev-1.2.115/flash/serve/provisioning/_runpod_transport.py → /freesolo_flash_dev-1.2.117/flash/serve/provisioning/runpod/transport.py +0 -0
  1271. {freesolo_flash_dev-1.2.115/flash/serve → freesolo_flash_dev-1.2.117/flash/serve/request}/runtime_support.py +0 -0
  1272. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/runtime/__init__.py +0 -0
  1273. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/runtime/errors.py +0 -0
  1274. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/runtime/prompt.py +0 -0
  1275. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serve/runtime/types.py +0 -0
  1276. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/server/__init__.py +0 -0
  1277. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/server/billing/charges.py +0 -0
  1278. {freesolo_flash_dev-1.2.115/flash/server/domain → freesolo_flash_dev-1.2.117/flash/server/domain/ops}/serving_resources.py +0 -0
  1279. {freesolo_flash_dev-1.2.115/flash/server/domain → freesolo_flash_dev-1.2.117/flash/server/domain/registry}/projects.py +0 -0
  1280. /freesolo_flash_dev-1.2.115/flash/server/domain/teacher_errors.py → /freesolo_flash_dev-1.2.117/flash/server/domain/teacher/errors.py +0 -0
  1281. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/server/platform/auth.py +0 -0
  1282. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/server/platform/db.py +0 -0
  1283. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/server/routes/__init__.py +0 -0
  1284. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/server/routes/meta.py +0 -0
  1285. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/serving/src/__init__.py +0 -0
  1286. {freesolo_flash_dev-1.2.115/flash/serving/src → freesolo_flash_dev-1.2.117/flash/serving/src/engine}/prequant_config.py +0 -0
  1287. {freesolo_flash_dev-1.2.115/flash/serving/src → freesolo_flash_dev-1.2.117/flash/serving/src/http}/body_limit.py +0 -0
  1288. /freesolo_flash_dev-1.2.115/flash/serving/src/http_headers.py → /freesolo_flash_dev-1.2.117/flash/serving/src/http/headers.py +0 -0
  1289. {freesolo_flash_dev-1.2.115/flash/serving/src → freesolo_flash_dev-1.2.117/flash/serving/src/store}/persisted_columns.py +0 -0
  1290. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/teacher/limits.py +0 -0
  1291. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/flash/teacher/provider_status.py +0 -0
  1292. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/scripts/build_dev_dist.py +0 -0
  1293. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/scripts/check_file_size.py +0 -0
  1294. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/scripts/check_function_size.py +0 -0
  1295. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/scripts/check_rollout_identity_actor.py +0 -0
  1296. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/scripts/scrub_history.sh +0 -0
  1297. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/serve_launch.py +0 -0
  1298. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/__init__.py +0 -0
  1299. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/_helpers/__init__.py +0 -0
  1300. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/_helpers/source_snapshot.py +0 -0
  1301. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/_helpers/specs.py +0 -0
  1302. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/_helpers/teacher.py +0 -0
  1303. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/_helpers/vast.py +0 -0
  1304. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/capture_image_sft_processor_oracle.py +0 -0
  1305. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/capture_qwen38_27b_metadata.py +0 -0
  1306. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  1307. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  1308. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  1309. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/live/conftest.py +0 -0
  1310. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/live/test_sft_thinking_render_live.py +0 -0
  1311. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/serving/test_openai_stream_options.py +0 -0
  1312. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_accounting_coverage.py +0 -0
  1313. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_algorithms.py +0 -0
  1314. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_backend_jobspec_contract.py +0 -0
  1315. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_base_model_provenance.py +0 -0
  1316. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_build_context_contract.py +0 -0
  1317. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_capture_qwen38_metadata.py +0 -0
  1318. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_cli_managed.py +0 -0
  1319. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_config_overrides.py +0 -0
  1320. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_cost_currency.py +0 -0
  1321. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_dataset_profile.py +0 -0
  1322. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_flashinfer_cache_dirs.py +0 -0
  1323. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_freesolo_api_transport.py +0 -0
  1324. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_grpo_process_census.py +0 -0
  1325. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_health_liveness.py +0 -0
  1326. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_hf_retry.py +0 -0
  1327. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_image_incremental_processor.py +0 -0
  1328. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_image_sft_markers.py +0 -0
  1329. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_image_sft_processor_parity.py +0 -0
  1330. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_image_tokens.py +0 -0
  1331. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_infisical_secrets.py +0 -0
  1332. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_internal_client.py +0 -0
  1333. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_kernel_cache.py +0 -0
  1334. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_kv_util.py +0 -0
  1335. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_logging.py +0 -0
  1336. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_lora_rank_coverage.py +0 -0
  1337. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_lora_rank_nested_rung.py +0 -0
  1338. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_managed_config_fields.py +0 -0
  1339. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_metrics_schema_agent_contract.py +0 -0
  1340. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_mig_guard.py +0 -0
  1341. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_opd_limits.py +0 -0
  1342. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_opd_replay_guard.py +0 -0
  1343. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_packing.py +0 -0
  1344. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serve_app_bootstrap_http.py +0 -0
  1345. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serve_app_launch.py +0 -0
  1346. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serve_app_manifest.py +0 -0
  1347. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serve_app_materialize.py +0 -0
  1348. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serve_control.py +0 -0
  1349. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serve_runtime_adapters.py +0 -0
  1350. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serve_runtime_engine.py +0 -0
  1351. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serve_runtime_types.py +0 -0
  1352. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_server_auth_singleflight.py +0 -0
  1353. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_server_locks_coverage.py +0 -0
  1354. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_serving_context_preflight.py +0 -0
  1355. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_sft_example_selection.py +0 -0
  1356. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_sft_gc_off.py +0 -0
  1357. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_sft_step_floor.py +0 -0
  1358. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_step_floor.py +0 -0
  1359. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_structured_outputs.py +0 -0
  1360. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_teacher_encoding_contract.py +0 -0
  1361. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_thinking_config.py +0 -0
  1362. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_train_context_preflight.py +0 -0
  1363. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_type_comment_prose.py +0 -0
  1364. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_version.py +0 -0
  1365. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  1366. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_workflow_contracts.py +0 -0
  1367. {freesolo_flash_dev-1.2.115 → freesolo_flash_dev-1.2.117}/tests/test_workload_profile.py +0 -0
@@ -0,0 +1,130 @@
1
+ # flash control plane (operator-side). copy to .env and fill in.
2
+ # provider credentials live only here; clients never see them and authenticate
3
+ # with their api key.
4
+ #
5
+ # everything under "required" is checked by `flash/providers/core/preflight.py` at
6
+ # startup; `flash-server` refuses to serve if any of them is missing. settings
7
+ # that only degrade the plane (a single-account runpod pool, no `github_token`)
8
+ # warn at startup instead of blocking it.
9
+ #
10
+ # self-hosting? read the self-hosting guide first - the short version is the two lines
11
+ # below, and it is a much smaller list than this file suggests:
12
+ #
13
+ # FLASH_STANDALONE=1
14
+ # FREESOLO_INTERNAL_KEY=$(openssl rand -hex 32)
15
+ #
16
+ # IMPORTANT: `flash-server` does NOT read this file. It reads the process
17
+ # environment, so copying it to .env is not by itself enough — load it:
18
+ #
19
+ # set -a && . ./.env && set +a && flash-server # shell
20
+ # docker run --env-file .env ... # docker
21
+
22
+ # --- required: GPU substrate (AT LEAST ONE of the three) ---
23
+ # Flash allocates across RunPod, Lambda, and Vast. Configure the ones you have an
24
+ # account with; a provider whose key is unset is simply never considered, and the
25
+ # allocator ranks candidates only on the substrates you configured. One is enough
26
+ # to run. The preflight fails only when ALL THREE are missing.
27
+ #
28
+ # RunPod: one key, or several comma-separated for multi-account failover. A
29
+ # single-account pool works but cannot fail over or reap across accounts, so the
30
+ # preflight warns.
31
+ RUNPOD_API_KEY=
32
+ # Lambda Cloud API key.
33
+ LAMBDA_API_KEY=
34
+ # Vast.ai API key.
35
+ VAST_API_KEY=
36
+
37
+ # --- required: artifacts ---
38
+ # HuggingFace token with write access to the dataset repos flash creates for artifacts
39
+ # (code upload + streamed checkpoints/adapters). The repo is assigned by the control
40
+ # plane and scoped to the ENVIRONMENT, so runs sharing an environment share a repo and
41
+ # each run lands under its own prefix. It is not a user-authored field: the TOML parser
42
+ # rejects a [train] hf_repo set by hand.
43
+ HF_TOKEN=
44
+ # The HuggingFace user or org those artifact repos are created under. Defaults to
45
+ # Freesolo's namespace, which a self-hoster's token cannot write to - so on a
46
+ # self-hosted plane SET THIS to a namespace your HF_TOKEN owns, or every run fails at
47
+ # the code upload before training starts.
48
+ # FLASH_HF_NAMESPACE=your-hf-username
49
+
50
+ # --- required: control-plane auth ---
51
+ # The plane's own auth key. On a self-hosted (FLASH_STANDALONE=1) deployment this is
52
+ # the ONLY credential the plane accepts and is therefore the entire trust boundary -
53
+ # generate a high-entropy value and treat it like a root password:
54
+ #
55
+ # export FREESOLO_INTERNAL_KEY=$(openssl rand -hex 32)
56
+ #
57
+ # On a managed deployment it is the shared internal key that maps to a single service
58
+ # identity without a network call, alongside per-user keys verified against
59
+ # {FREESOLO_BASE_URL}/api/auth/verify.
60
+ FREESOLO_INTERNAL_KEY=
61
+
62
+ # --- optional: self-hosting ---
63
+ # Run without a Freesolo backend. Off by default. With it set, the plane stops calling
64
+ # out for project/environment/billing validation and trusts FREESOLO_INTERNAL_KEY as a
65
+ # single-tenant operator credential; external bearer tokens are REJECTED rather than
66
+ # accepted unverified. Single tenant - see SELF_HOSTING.md before enabling.
67
+ # FLASH_STANDALONE=1
68
+
69
+ # --- optional: deployment topology ---
70
+ # Where Flash keeps its local state: the saved login, the SQLite database, run records, and
71
+ # results. Defaults to ~/.flash (= /root/.flash for the container's default user, which is the
72
+ # path the Dockerfile declares as a VOLUME). Set this for a rootless container, a Kubernetes
73
+ # PVC, a read-only home directory, or a systemd unit with ProtectHome. Everything moves
74
+ # together, so point it at ONE durable location and mount a volume there.
75
+ # FLASH_DATA_DIR=/var/lib/flash
76
+ # Log verbosity for `flash-server`: DEBUG, INFO, WARNING, ERROR, CRITICAL. The server defaults
77
+ # to INFO -- provider resolution, capability revocation, reaper startup, and degraded-config
78
+ # warnings are all reported at INFO/WARNING. An unrecognized value falls back to the default
79
+ # rather than blocking startup.
80
+ # FLASH_LOG_LEVEL=INFO
81
+ # `text` (default) or `json`. JSON emits one object per line for a structured log sink. The
82
+ # same information is logged either way; only the punctuation differs.
83
+ # FLASH_LOG_FORMAT=text
84
+ # Bind address for `flash-server`. Defaults to 127.0.0.1; the container image passes 0.0.0.0
85
+ # explicitly. The --host and --port flags win over both of these.
86
+ # FLASH_SERVER_HOST=127.0.0.1
87
+ # Port for `flash-server`, default 8080. Must be 1-65535: an unusable value stops startup
88
+ # rather than silently binding the default, since a plane listening on the wrong port looks
89
+ # healthy and is unreachable.
90
+ # FLASH_SERVER_PORT=8080
91
+ # How long (seconds) to wait for a SQLite lock held by another writer, default 30. Raise it on
92
+ # networked storage, where a lock can be held far longer than on a local volume. This changes
93
+ # only patience: journal mode, synchronous, and foreign keys are correctness settings and are
94
+ # deliberately not configurable.
95
+ # FLASH_SQLITE_BUSY_TIMEOUT_SECONDS=30
96
+
97
+ # --- optional ---
98
+ # Server token for the environment repository. Without it, environments hosted in a
99
+ # private GitHub repo cannot be fetched; environments in public GitHub repos still work,
100
+ # so this warns at startup rather than blocking it. (A local directory is never a valid
101
+ # environment source - the GPU worker fetches the environment itself.)
102
+ GITHUB_TOKEN=
103
+ # the managed opd teacher credential stays on the control plane. submissions without it
104
+ # fail before gpu allocation; workers receive only an attempt-scoped broker capability.
105
+ PARASAIL_API_KEY=
106
+ # this plane's own public https origin, where gpu workers reach the teacher broker route. it is
107
+ # not the client's FLASH_API_URL / --api-url, which may be a private address (a tunnel, a vpn,
108
+ # http://your-plane:8080) that no rented worker can resolve. required for opd; a value workers
109
+ # cannot reach only surfaces after the gpu is allocated.
110
+ FLASH_PUBLIC_URL=https://flash.example.com
111
+ # Where to verify user keys. Defaults to https://api.freesolo.co when unset. Ignored
112
+ # under FLASH_STANDALONE=1, which verifies nothing over the network.
113
+ # FREESOLO_BASE_URL=
114
+ # Adapter serving is delegated to a multi-LoRA serving app (a Modal app that serves
115
+ # every adapter on one GPU per base model, scaling to zero when idle).
116
+ # `flash deploy`/`undeploy`/`chat` register/deregister/chat against it. Defaults to the
117
+ # hosted URL when unset; point it at your own deployment to self-host serving.
118
+ #
119
+ # Under FLASH_STANDALONE=1 there is NO default: those three commands error out until this
120
+ # is set to a backend YOU operate. Every serving request carries FREESOLO_INTERNAL_KEY,
121
+ # which on a self-hosted plane is the credential controlling that plane, so pointing it at
122
+ # a service you do not run would hand that credential over. Training never uses this.
123
+ #
124
+ # A Freesolo-hosted value is refused the same way an unset one is -- assigning the hosted
125
+ # URL here does not get you past the guard, it just produces the same error. Set it to
126
+ # YOUR serving deployment; the managed plane gets the hosted URL from the code default.
127
+ # FREESOLO_SERVING_URL=https://serving.example.internal
128
+ # The worker container image is not configurable: every provider runs the published
129
+ # ghcr.io/freesolo-co/flash-worker tags (per-GPU-arch kernel-cache variants, falling back to the
130
+ # base :cu128), selected by GPU class in flash/providers/_lifecycle/net/worker.py.
@@ -0,0 +1,284 @@
1
+ name: auto-rebake per-arch kernel cache
2
+
3
+ # Keeps the per-arch ghcr.io/freesolo-co/flash-worker:cu128-sm* images fresh whenever the :cu128 base
4
+ # is rebuilt. Each cu128-smXX is physically `FROM :cu128` + a baked mega-cache, so a new base leaves
5
+ # the per-arch tags pointing at the OLD base until rebaked. "Out of date" has two flavors, keyed off
6
+ # the fp_cache / fp_base labels worker-image.yml stamps on :cu128 (docker/kernel_fingerprint.py):
7
+ #
8
+ # * fp_cache changed -> promote a matching dev-ready cache by free re-layer. a real gpu re-warm is
9
+ # only the fail-safe when the required candidate is absent.
10
+ # * fp_cache same but fp_base changed -> the cache is still valid, the base just moved (FA wheel /
11
+ # causal-conv1d / rp_handler / a non-kernel dep) -> a FREE re-layer grafts the existing cache onto
12
+ # the fresh base (docker/Dockerfile.kernelcache.relayer), no GPU.
13
+ # * both same -> skip (this is the pure-flash-code case the old reminder over-fired on).
14
+ #
15
+ # The gate READS the published labels (authoritative for what was actually built, incl. a manual FA2
16
+ # override) rather than recomputing from the checkout, and aborts unless the base's revision label ==
17
+ # the build's head_sha (so a superseded base build or a `tag=...` dispatch that never touched :cu128
18
+ # can't trigger a stale rebake).
19
+
20
+ on:
21
+ workflow_run:
22
+ workflows: ["flash worker image"]
23
+ types: [completed]
24
+
25
+ permissions:
26
+ contents: read
27
+ packages: write
28
+ actions: read
29
+ issues: write
30
+
31
+ # Scope the group to the triggering base build's commit so a no-op completion (e.g. a tag=cu128-test
32
+ # worker-image run, whose head_sha differs) can't cancel an in-flight real bake. The revision guard
33
+ # already neutralizes superseded runs, so a global cancel-in-progress isn't needed.
34
+ concurrency:
35
+ group: auto-rebake-${{ github.event.workflow_run.head_sha }}
36
+ cancel-in-progress: true
37
+
38
+ env:
39
+ BASE: ghcr.io/freesolo-co/flash-worker:cu128
40
+
41
+ jobs:
42
+ gate:
43
+ # Upstream only -- see publish.yml. Guarded at the GATE rather than on each downstream job so
44
+ # one condition covers the whole chain: `gpu-warm` calls bake-kernel-cache.yml, which spends
45
+ # real GPU money, and `relayer` wants the org's larger runner. A fork can never reach either if
46
+ # the gate does not run.
47
+ if: >-
48
+ github.repository == 'freesolo-co/flash'
49
+ && github.event.workflow_run.conclusion == 'success'
50
+ runs-on: ubuntu-latest
51
+ # Registry metadata reads only (crane digest/config per arch); every recorded gate run
52
+ # finishes inside a minute. The cap bounds a hung GHCR call, not real work.
53
+ timeout-minutes: 15
54
+ outputs:
55
+ proceed: ${{ steps.base.outputs.proceed }}
56
+ relayer_matrix: ${{ steps.classify.outputs.relayer_matrix }}
57
+ gpu_sms: ${{ steps.classify.outputs.gpu_sms }}
58
+ fp_cache: ${{ steps.base.outputs.fp_cache }}
59
+ fp_base: ${{ steps.base.outputs.fp_base }}
60
+ base_ref: ${{ steps.base.outputs.base_ref }}
61
+ base_revision: ${{ steps.base.outputs.revision }}
62
+ steps:
63
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
64
+ with:
65
+ ref: ${{ github.event.workflow_run.head_sha }}
66
+
67
+ # Downloaded to disk and checksum-verified before extraction, rather than piped straight
68
+ # into tar: a piped stream is extracted as it arrives, so a corrupted or substituted
69
+ # artifact is already on PATH by the time anything could notice. Bump the version and the
70
+ # digest together (the vendor publishes checksums.txt alongside each release).
71
+ - name: Install crane
72
+ run: |
73
+ set -euo pipefail
74
+ ver=v0.20.2
75
+ sha=c14340087103ba9dadf61d45acd20675490fd0ccbd56ac7901fc1b502137f44b
76
+ curl -fsSL -o /tmp/crane.tar.gz \
77
+ "https://github.com/google/go-containerregistry/releases/download/${ver}/go-containerregistry_Linux_x86_64.tar.gz"
78
+ echo "${sha} /tmp/crane.tar.gz" | sha256sum -c -
79
+ sudo tar -xz -C /usr/local/bin -f /tmp/crane.tar.gz crane
80
+ rm -f /tmp/crane.tar.gz
81
+ crane version
82
+
83
+ - name: Log in to GHCR
84
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
85
+ with:
86
+ registry: ghcr.io
87
+ username: ${{ github.actor }}
88
+ password: ${{ secrets.GITHUB_TOKEN }}
89
+
90
+ - name: Read base labels
91
+ id: base
92
+ env:
93
+ HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
94
+ run: |
95
+ # canonical digest ref (repo@sha256, no tag) so every tool (crane/docker/runpod) accepts it.
96
+ digest=$(crane digest "$BASE")
97
+ repo=${BASE%:*}
98
+ cfg=$(crane config "$repo@$digest")
99
+ fpc=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_cache"] // ""')
100
+ fpb=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_base"] // ""')
101
+ rev=$(echo "$cfg" | jq -r '.config.Labels["org.opencontainers.image.revision"] // ""')
102
+ echo "base_ref=$repo@$digest" >> "$GITHUB_OUTPUT"
103
+ echo "fp_cache=$fpc" >> "$GITHUB_OUTPUT"
104
+ echo "fp_base=$fpb" >> "$GITHUB_OUTPUT"
105
+ echo "revision=$rev" >> "$GITHUB_OUTPUT"
106
+ # Only proceed if this base IS the build that triggered us: its revision label must match the
107
+ # build's head_sha. Guards (a) a newer base that already superseded this run, and (b) a
108
+ # `tag=cu128-test` dispatch that never updated :cu128 (the workflow_run payload can't reveal
109
+ # the dispatch tag). An unlabeled base (pre-rollout) also no-ops here.
110
+ if [ -n "$fpc" ] && [ "$rev" = "$HEAD_SHA" ]; then
111
+ echo "proceed=true" >> "$GITHUB_OUTPUT"
112
+ echo "base $BASE@$digest is rev $rev (== head_sha) fp_cache=$fpc fp_base=$fpb"
113
+ else
114
+ echo "proceed=false" >> "$GITHUB_OUTPUT"
115
+ echo "::notice::auto-rebake no-op: base rev '$rev' != head_sha '$HEAD_SHA' (or base unlabeled)"
116
+ fi
117
+
118
+ - name: Classify arches
119
+ id: classify
120
+ if: steps.base.outputs.proceed == 'true'
121
+ env:
122
+ FP_CACHE: ${{ steps.base.outputs.fp_cache }}
123
+ FP_BASE: ${{ steps.base.outputs.fp_base }}
124
+ REV: ${{ steps.base.outputs.revision }}
125
+ run: |
126
+ # flash/providers/_lifecycle/net/worker.py is the single source of truth for the arch list; the bake
127
+ # matrix mirrors it. read the canonical assignment statically without importing flash.
128
+ arches=$(python3 docker/kernel_fingerprint.py --print-baked-arches)
129
+ relayer=(); gpu=()
130
+ summary="| arch | published fp_cache | published fp_base | action |\n|---|---|---|---|\n"
131
+ for sm in $arches; do
132
+ img="ghcr.io/freesolo-co/flash-worker:cu128-$sm"
133
+ if cfg=$(crane config "$img" 2>/dev/null); then
134
+ pc=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_cache"] // ""')
135
+ pb=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_base"] // ""')
136
+ else
137
+ pc="(missing)"; pb="(missing)"
138
+ fi
139
+ if [ "$pc" != "$FP_CACHE" ]; then
140
+ candidate="ghcr.io/freesolo-co/flash-worker:cu128-dev-ready-$sm"
141
+ candidate_pc=""; candidate_ref=""
142
+ if candidate_digest=$(crane digest "$candidate" 2>/dev/null); then
143
+ candidate_ref="${candidate%:*}@$candidate_digest"
144
+ fi
145
+ if [ -n "$candidate_ref" ] && candidate_cfg=$(crane config "$candidate_ref" 2>/dev/null); then
146
+ candidate_pc=$(echo "$candidate_cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_cache"] // ""')
147
+ fi
148
+ if [ "$candidate_pc" = "$FP_CACHE" ]; then
149
+ relayer+=("$(jq -cn --arg sm "$sm" --arg source "$candidate_ref" '{sm:$sm, source:$source}')")
150
+ action="promote dev cache (free)"
151
+ else
152
+ gpu+=("$sm"); action="gpu re-warm (candidate missing)"
153
+ fi
154
+ elif [ "$pb" != "$FP_BASE" ]; then
155
+ relayer+=("$(jq -cn --arg sm "$sm" --arg source "$img" '{sm:$sm, source:$source}')")
156
+ action="re-layer (free)"
157
+ else
158
+ action="up to date"
159
+ fi
160
+ echo "$sm: pc=$pc pb=$pb -> $action"
161
+ summary="$summary| $sm | \`$pc\` | \`$pb\` | $action |\n"
162
+ done
163
+ if [ ${#relayer[@]} -gt 0 ]; then
164
+ relayer_json=$(printf '%s\n' "${relayer[@]}" | jq -cs .)
165
+ else
166
+ relayer_json='[]'
167
+ fi
168
+ gpu_csv=$(IFS=,; echo "${gpu[*]}")
169
+ echo "relayer_matrix=$relayer_json" >> "$GITHUB_OUTPUT"
170
+ echo "gpu_sms=$gpu_csv" >> "$GITHUB_OUTPUT"
171
+ {
172
+ echo "### auto-rebake plan (base rev \`$REV\`, fp_cache \`$FP_CACHE\` fp_base \`$FP_BASE\`)"
173
+ echo ""
174
+ echo -e "$summary"
175
+ echo ""
176
+ echo "re-layer (free): \`$relayer_json\` | GPU re-warm (paid, auto-started): \`${gpu_csv:-none}\`"
177
+ } >> "$GITHUB_STEP_SUMMARY"
178
+
179
+ # FYI notification (not an action item -- the bake auto-runs). Keeps a heads-up + cost trail of
180
+ # which arches a paid GPU re-warm fired for.
181
+ - name: Notify GPU re-bake auto-started
182
+ if: steps.base.outputs.proceed == 'true' && steps.classify.outputs.gpu_sms != ''
183
+ env:
184
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
185
+ GPU_SMS: ${{ steps.classify.outputs.gpu_sms }}
186
+ REV: ${{ steps.base.outputs.revision }}
187
+ RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
188
+ run: |
189
+ title="kernel-cache: per-arch GPU re-bake auto-started"
190
+ body=$(printf 'The kernel toolchain changed (fp_cache), so a PAID GPU re-warm auto-started for these per-arch images (no approval needed):\n\n- arches: `%s`\n- base rev: `%s`\n\nTrack it in the run: %s' "$GPU_SMS" "$REV" "$RUN_URL")
191
+ # best-effort: a labeling/permission hiccup must never fail the gate. self-heal the label so
192
+ # no manual setup is needed, then reuse one open issue (comment) instead of spamming new ones.
193
+ gh label create kernel-rebake-pending --color B60205 --description "per-arch kernel cache GPU re-bake auto-started" 2>/dev/null || true
194
+ existing=$(gh issue list --label kernel-rebake-pending --state open --json number -q '.[0].number' 2>/dev/null || true)
195
+ if [ -n "${existing:-}" ]; then
196
+ gh issue comment "$existing" --body "$body" || true
197
+ else
198
+ gh issue create --title "$title" --body "$body" --label kernel-rebake-pending \
199
+ || gh issue create --title "$title" --body "$body" || true
200
+ fi
201
+
202
+ # FREE path: graft the existing valid cache onto the fresh base, no GPU. Runs automatically.
203
+ relayer:
204
+ needs: gate
205
+ if: needs.gate.outputs.proceed == 'true' && needs.gate.outputs.relayer_matrix != '[]' && needs.gate.outputs.relayer_matrix != ''
206
+ runs-on: ubuntu-24.04-8core
207
+ # The graft pulls two ~20GB images and pushes one. 21min is the slowest auto-rebake run on
208
+ # record; 60 covers a slow registry without holding the org's larger runner indefinitely.
209
+ timeout-minutes: 60
210
+ strategy:
211
+ fail-fast: false
212
+ matrix:
213
+ include: ${{ fromJson(needs.gate.outputs.relayer_matrix || '[]') }}
214
+ env:
215
+ BASE_REF: ${{ needs.gate.outputs.base_ref }}
216
+ FP_CACHE: ${{ needs.gate.outputs.fp_cache }}
217
+ FP_BASE: ${{ needs.gate.outputs.fp_base }}
218
+ BASE_REVISION: ${{ needs.gate.outputs.base_revision }}
219
+ steps:
220
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
221
+ with:
222
+ ref: ${{ github.event.workflow_run.head_sha }}
223
+
224
+ # The graft pulls two ~20GB images (old per-arch tag + fresh base); reclaim runner disk first.
225
+ - name: Free disk space
226
+ run: |
227
+ sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/.ghcup \
228
+ /usr/local/lib/android /opt/hostedtoolcache /usr/share/swift \
229
+ /usr/local/share/boost /usr/local/lib/node_modules \
230
+ /usr/local/share/powershell /usr/share/miniconda || true
231
+ sudo apt-get clean || true
232
+ sudo docker image prune -af || true
233
+ df -h /
234
+
235
+ - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
236
+
237
+ - name: Log in to GHCR
238
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
239
+ with:
240
+ registry: ghcr.io
241
+ username: ${{ github.actor }}
242
+ password: ${{ secrets.GITHUB_TOKEN }}
243
+
244
+ # Pin OLDCACHE by digest so a concurrent overwrite of the source tag can't graft a wrong cache.
245
+ - name: Resolve old per-arch cache digest
246
+ id: old
247
+ run: |
248
+ img="${{ matrix.source }}"
249
+ if [[ "$img" == *@sha256:* ]]; then
250
+ echo "ref=$img" >> "$GITHUB_OUTPUT"
251
+ else
252
+ digest=$(docker buildx imagetools inspect "$img" --format '{{.Manifest.Digest}}')
253
+ # canonical digest ref (repo@sha256, no tag) for the FROM in the relayer build.
254
+ echo "ref=${img%:*}@$digest" >> "$GITHUB_OUTPUT"
255
+ fi
256
+
257
+ - name: Re-layer cache onto the fresh base (no GPU)
258
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
259
+ with:
260
+ context: .
261
+ file: docker/Dockerfile.kernelcache.relayer
262
+ push: true
263
+ tags: ghcr.io/freesolo-co/flash-worker:cu128-${{ matrix.sm }}
264
+ provenance: false
265
+ build-args: |
266
+ BASE=${{ env.BASE_REF }}
267
+ OLDCACHE=${{ steps.old.outputs.ref }}
268
+ FP_CACHE=${{ env.FP_CACHE }}
269
+ FP_BASE=${{ env.FP_BASE }}
270
+ BASE_REVISION=${{ env.BASE_REVISION }}
271
+
272
+ # PAID path: re-warm the cache on a real GPU per arch. Runs automatically -- the fingerprint gate
273
+ # above is the only thing that decides it fires (only when fp_cache changed), so no manual approval.
274
+ gpu-warm:
275
+ needs: gate
276
+ if: needs.gate.outputs.proceed == 'true' && needs.gate.outputs.gpu_sms != ''
277
+ uses: ./.github/workflows/bake-kernel-cache.yml
278
+ with:
279
+ sms: ${{ needs.gate.outputs.gpu_sms }}
280
+ fp_cache: ${{ needs.gate.outputs.fp_cache }}
281
+ fp_base: ${{ needs.gate.outputs.fp_base }}
282
+ base_ref: ${{ needs.gate.outputs.base_ref }}
283
+ base_revision: ${{ needs.gate.outputs.base_revision }}
284
+ secrets: inherit
@@ -0,0 +1,259 @@
1
+ name: flash worker kernel-cache (per-arch)
2
+
3
+ # Builds per-SM worker images with the compiled-kernel mega-cache baked in, killing the ~10-15 min
4
+ # first-use JIT on a cold worker (the regression #194 reintroduced). Each matrix leg:
5
+ # 1. offloads the warmup to a RunPod GPU of that arch (GH runners have none) -> build/kernel_cache,
6
+ # 2. docker build --build-arg BUILD_KERNEL_CACHE=true -> ghcr.io/freesolo-co/flash-worker:cu128-<sm>,
7
+ # 3. pushes it. The allocator then selects the cu128-<sm> tag per GPU class for baked arches
8
+ # (see flash/providers/_lifecycle/net/worker.py).
9
+ #
10
+ # Depends on the base ghcr.io/freesolo-co/flash-worker:cu128 image existing (worker-image.yml) — the
11
+ # warmup runs INSIDE it so the cache matches the image's pinned torch/triton/fla/liger toolchain.
12
+ #
13
+ # Secrets: RUNPOD_API_KEY (the warmup GPU pod) + HF_TOKEN (the temp dataset that ferries code + the
14
+ # cache artifact) are native repo Actions secrets, synced from Infisical (prod:/flash-ci) by the
15
+ # github-ci-flash Secret Sync; the GHCR push uses the default GITHUB_TOKEN. Heavy + paid,
16
+ # but UNGATED: the fingerprint detection in auto-rebake.yml decides WHEN this runs (only on a real
17
+ # kernel-toolchain change), so there is no manual approval step. Invoked by hand (workflow_dispatch)
18
+ # OR automatically by auto-rebake.yml (workflow_call) when the kernel toolchain changed.
19
+
20
+ on:
21
+ workflow_dispatch:
22
+ inputs:
23
+ sms:
24
+ description: "comma-separated sm list to bake; default is all validated arches"
25
+ default: "sm80,sm86,sm89,sm90,sm120,sm100"
26
+ required: false
27
+ target_tag_prefix:
28
+ description: "target image tag before the -sm suffix"
29
+ default: "cu128"
30
+ required: false
31
+ # auto-rebake.yml calls this for the EXPENSIVE path (the cache is invalid and must be re-warmed on a
32
+ # real GPU). It passes the arch subset, the fingerprints to stamp, and a digest-pinned base so the
33
+ # warm runs inside the exact :cu128 the per-arch tag will sit on.
34
+ workflow_call:
35
+ inputs:
36
+ sms:
37
+ type: string
38
+ required: true
39
+ fp_cache:
40
+ type: string
41
+ required: false
42
+ default: ""
43
+ fp_base:
44
+ type: string
45
+ required: false
46
+ default: ""
47
+ base_ref:
48
+ type: string
49
+ required: false
50
+ default: "ghcr.io/freesolo-co/flash-worker:cu128"
51
+ base_revision:
52
+ type: string
53
+ required: false
54
+ default: ""
55
+ target_tag_prefix:
56
+ type: string
57
+ required: false
58
+ default: "cu128"
59
+
60
+ permissions:
61
+ contents: read
62
+ packages: write
63
+
64
+ jobs:
65
+ # Ungated: the PAID RunPod bake runs as soon as it's called/dispatched. The decision of WHEN to run
66
+ # lives in auto-rebake.yml's fingerprint gate (it only invokes this when fp_cache changed), so a
67
+ # second manual approval here would be redundant. Re-add an `approve` job with `environment: gpu-bake`
68
+ # (and `needs: approve`) if you ever want a human checkpoint back.
69
+ bake:
70
+ # Upstream only -- see publish.yml. "Ungated" above means no human APPROVAL step; it never meant
71
+ # any repository may start it. This workflow is directly dispatchable (`workflow_dispatch`), so
72
+ # a fork reaches it without passing auto-rebake's fingerprint gate, and it both requests the
73
+ # org-only `ubuntu-24.04-8core` runner (a label a fork has no runner for, so the job QUEUES
74
+ # instead of failing) and creates paid RunPod resources. `workflow_call` from auto-rebake still
75
+ # satisfies this, because a called workflow evaluates `github.repository` as the CALLER's repo.
76
+ if: github.repository == 'freesolo-co/flash'
77
+ runs-on: ubuntu-24.04-8core
78
+ # 47min is the slowest run on record (the rest sit at 12-23min); 120 absorbs a slow provider
79
+ # allocation without letting a hung bake hold the runner for the 6-hour default.
80
+ #
81
+ # This bounds the RUNNER, and only indirectly the spend. The rented pod is released by the
82
+ # `finally` in docker/bake_kernel_cache.py, so the pod outlives the timeout in exactly the case
83
+ # the timeout exists for: if the controller is wedged inside a blocking call, GitHub kills it
84
+ # and that `finally` may never complete, leaving a billed pod with nothing left to terminate it.
85
+ # Closing that needs a server-side pod lifetime or an out-of-band reaper -- a change to the bake
86
+ # tooling rather than to this workflow, so it is deliberately NOT bundled here. Until then, read
87
+ # this cap as "the runner stops waiting", not "the bill stops".
88
+ timeout-minutes: 120
89
+ strategy:
90
+ fail-fast: false
91
+ matrix:
92
+ include:
93
+ - {
94
+ sm: sm80,
95
+ arch: "8.0",
96
+ allowed_cuda: "",
97
+ }
98
+ - {
99
+ sm: sm86,
100
+ arch: "8.6",
101
+ allowed_cuda: "",
102
+ }
103
+ # the controller walks ordered same-sm secure-cloud gpu types from its per-sm map.
104
+ # preferred datacenter cards stay first, but one empty sku cannot strand this architecture
105
+ # on a stale image and send ordinary starts through jit.
106
+ - {
107
+ sm: sm89,
108
+ arch: "8.9",
109
+ allowed_cuda: "",
110
+ }
111
+ - {
112
+ sm: sm90,
113
+ arch: "9.0",
114
+ allowed_cuda: "",
115
+ }
116
+ # blackwell needs cuda-13 hosts to jit its ptx (matches min_cuda_for in the provider).
117
+ - {
118
+ sm: sm120,
119
+ arch: "12.0",
120
+ allowed_cuda: "13.0",
121
+ }
122
+ # datacenter blackwell is distinct from sm120. b200 is the only validated sm100 type.
123
+ - {
124
+ sm: sm100,
125
+ arch: "10.0",
126
+ allowed_cuda: "13.0",
127
+ }
128
+ steps:
129
+ # Gate FIRST (no checkout needed) so skipped arches do no crane / checkout / build work.
130
+ - name: Should bake ${{ matrix.sm }}?
131
+ id: gate
132
+ run: |
133
+ req="${{ inputs.sms || 'sm80,sm86,sm89,sm90,sm120,sm100' }}"
134
+ req="${req// /}" # tolerate spaces, e.g. "sm80, sm86"
135
+ case ",$req," in
136
+ *,${{ matrix.sm }},*) echo "run=true" >> "$GITHUB_OUTPUT" ;;
137
+ *) echo "run=false" >> "$GITHUB_OUTPUT"; echo "skipping ${{ matrix.sm }}" ;;
138
+ esac
139
+
140
+ # Downloaded to disk and checksum-verified before extraction, rather than piped straight
141
+ # into tar: a piped stream is extracted as it arrives, so a corrupted or substituted
142
+ # artifact is already on PATH by the time anything could notice. Bump the version and the
143
+ # digest together (the vendor publishes checksums.txt alongside each release).
144
+ - name: Install crane
145
+ if: steps.gate.outputs.run == 'true'
146
+ run: |
147
+ set -euo pipefail
148
+ ver=v0.20.2
149
+ sha=c14340087103ba9dadf61d45acd20675490fd0ccbd56ac7901fc1b502137f44b
150
+ curl -fsSL -o /tmp/crane.tar.gz \
151
+ "https://github.com/google/go-containerregistry/releases/download/${ver}/go-containerregistry_Linux_x86_64.tar.gz"
152
+ echo "${sha} /tmp/crane.tar.gz" | sha256sum -c -
153
+ sudo tar -xz -C /usr/local/bin -f /tmp/crane.tar.gz crane
154
+ rm -f /tmp/crane.tar.gz
155
+ crane version
156
+
157
+ - name: Log in to GHCR
158
+ if: steps.gate.outputs.run == 'true'
159
+ uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
160
+ with:
161
+ registry: ghcr.io
162
+ username: ${{ github.actor }}
163
+ password: ${{ secrets.GITHUB_TOKEN }}
164
+
165
+ # Resolve the base + fingerprints BEFORE checkout, so the checkout (hence the warmed flash code)
166
+ # is pinned to the EXACT commit the base was built from. auto-rebake passes everything (fast path);
167
+ # a manual dispatch READS the labels off the published base, so the per-arch image always matches
168
+ # the base it extends (same source of truth as the gate) instead of recomputing from the checkout.
169
+ - name: Resolve base + fingerprints
170
+ id: base
171
+ if: steps.gate.outputs.run == 'true'
172
+ run: |
173
+ if [ -n "${{ inputs.fp_cache }}" ]; then
174
+ echo "ref=${{ inputs.base_ref }}" >> "$GITHUB_OUTPUT"
175
+ echo "fp_cache=${{ inputs.fp_cache }}" >> "$GITHUB_OUTPUT"
176
+ echo "fp_base=${{ inputs.fp_base }}" >> "$GITHUB_OUTPUT"
177
+ echo "revision=${{ inputs.base_revision }}" >> "$GITHUB_OUTPUT"
178
+ else
179
+ base="${{ inputs.base_ref || 'ghcr.io/freesolo-co/flash-worker:cu128' }}"
180
+ digest=$(crane digest "$base"); repo=${base%:*}
181
+ cfg=$(crane config "$repo@$digest")
182
+ echo "ref=$repo@$digest" >> "$GITHUB_OUTPUT"
183
+ echo "fp_cache=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_cache"] // ""')" >> "$GITHUB_OUTPUT"
184
+ echo "fp_base=$(echo "$cfg" | jq -r '.config.Labels["co.freesolo.flash.kernelcache.fp_base"] // ""')" >> "$GITHUB_OUTPUT"
185
+ echo "revision=$(echo "$cfg" | jq -r '.config.Labels["org.opencontainers.image.revision"] // ""')" >> "$GITHUB_OUTPUT"
186
+ fi
187
+
188
+ # Pin the checkout to the base's source commit so the warmed flash code matches the base exactly
189
+ # (the cache is content-keyed by the code that compiled it). Falls back to the event sha if the
190
+ # base predates the revision label.
191
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
192
+ if: steps.gate.outputs.run == 'true'
193
+ with:
194
+ ref: ${{ steps.base.outputs.revision || github.sha }}
195
+
196
+ - name: Install uv
197
+ if: steps.gate.outputs.run == 'true'
198
+ uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
199
+ with:
200
+ # pin the installed binary as well as the action implementation.
201
+ version: "0.12.5"
202
+ # no cache: the post-run cache-prune calls `uv`, but the "Free disk space" step deletes
203
+ # /opt/hostedtoolcache (where setup-uv put uv), so the post step fails ("uv not found") and
204
+ # marks the whole job red even though the bake + push already succeeded.
205
+ enable-cache: false
206
+
207
+ - name: Sync deps (flash + runpod + hf)
208
+ if: steps.gate.outputs.run == 'true'
209
+ run: uv sync --extra server
210
+
211
+ # RUNPOD_API_KEY (the warmup GPU pod) + HF_TOKEN (the temp dataset that ferries code/cache) are
212
+ # native repo Actions secrets, synced from Infisical (prod:/flash-ci) by the github-ci-flash
213
+ # Secret Sync. No Infisical CLI/login at job time -- Infisical stays the source of truth and
214
+ # rotations propagate via the sync. BASE_IMAGE
215
+ # is digest-pinned so the warm runs inside the EXACT base the per-arch tag will sit on.
216
+ - name: Warm kernels on a RunPod ${{ matrix.sm }} GPU -> build/kernel_cache
217
+ if: steps.gate.outputs.run == 'true'
218
+ env:
219
+ RUNPOD_API_KEY: ${{ secrets.RUNPOD_API_KEY }}
220
+ HF_TOKEN: ${{ secrets.HF_TOKEN }}
221
+ BASE_IMAGE: ${{ steps.base.outputs.ref }}
222
+ run: |
223
+ uv run python docker/bake_kernel_cache.py \
224
+ --arch "${{ matrix.arch }}" --sm "${{ matrix.sm }}" \
225
+ --allowed-cuda "${{ matrix.allowed_cuda }}" \
226
+ --image "$BASE_IMAGE" \
227
+ --out build/kernel_cache
228
+
229
+ - name: Free disk space
230
+ if: steps.gate.outputs.run == 'true'
231
+ run: |
232
+ sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/.ghcup \
233
+ /usr/local/lib/android /opt/hostedtoolcache /usr/share/swift \
234
+ /usr/local/share/boost /usr/local/lib/node_modules \
235
+ /usr/local/share/powershell /usr/share/miniconda || true
236
+ sudo apt-get clean || true
237
+ sudo docker image prune -af || true
238
+ df -h /
239
+
240
+ - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
241
+ if: steps.gate.outputs.run == 'true'
242
+
243
+ # thin layer FROM the SAME base the warmup ran inside -> the cache toolchain always matches the
244
+ # shipped image (rebuilding the full Dockerfile.worker from the checkout could drift from the
245
+ # published base and bake a cache that silently won't load). GHCR auth from the login step above.
246
+ - name: Build + push baked per-sm image (thin layer on the warmed base)
247
+ if: steps.gate.outputs.run == 'true'
248
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
249
+ with:
250
+ context: .
251
+ file: docker/Dockerfile.kernelcache
252
+ push: true
253
+ tags: ghcr.io/freesolo-co/flash-worker:${{ inputs.target_tag_prefix || 'cu128' }}-${{ matrix.sm }}
254
+ provenance: false
255
+ build-args: |
256
+ BASE=${{ steps.base.outputs.ref }}
257
+ FP_CACHE=${{ steps.base.outputs.fp_cache }}
258
+ FP_BASE=${{ steps.base.outputs.fp_base }}
259
+ BASE_REVISION=${{ steps.base.outputs.revision }}