freesolo-flash-dev 1.2.129__tar.gz → 1.2.131__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 (928) hide show
  1. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/PKG-INFO +1 -1
  2. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/core/catalog.py +6 -6
  3. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/core/spec.py +21 -0
  4. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/plan/recipe.py +1 -0
  5. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/sft_train.py +2 -2
  6. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/sft_train_runner.py +14 -6
  7. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/schema/__init__.py +8 -0
  8. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/schema/fields.py +4 -1
  9. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/deployment/profiles.py +7 -1
  10. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/app/modal_app.py +14 -9
  11. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/accounting/usage.py +14 -30
  12. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/accounting/usage_outbox.py +44 -86
  13. freesolo_flash_dev-1.2.131/flash/serving/src/accounting/usage_retry.py +13 -0
  14. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/model_config.py +33 -29
  15. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/http/context.py +39 -11
  16. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/http/headers.py +6 -0
  17. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/http/inference_routes.py +27 -11
  18. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/http/router.py +12 -2
  19. freesolo_flash_dev-1.2.131/flash/serving/src/stream_channel/__init__.py +1 -0
  20. freesolo_flash_dev-1.2.131/flash/serving/src/stream_channel/_tasks.py +121 -0
  21. freesolo_flash_dev-1.2.131/flash/serving/src/stream_channel/client.py +485 -0
  22. freesolo_flash_dev-1.2.131/flash/serving/src/stream_channel/engine.py +396 -0
  23. freesolo_flash_dev-1.2.131/flash/serving/src/stream_channel/protocol.py +467 -0
  24. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/pyproject.toml +2 -2
  25. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_base_model_serving.py +30 -2
  26. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_chat_authorizer.py +5 -2
  27. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_model_config.py +11 -11
  28. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_per_model_gpu.py +28 -30
  29. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_pre_first_disconnect.py +0 -1
  30. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_router.py +77 -2
  31. freesolo_flash_dev-1.2.131/tests/serving/test_stream_channel.py +2701 -0
  32. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_usage_outbox.py +67 -27
  33. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_usage_reporter.py +7 -2
  34. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_catalog_consistency.py +5 -5
  35. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_lora_targeting.py +2 -2
  36. freesolo_flash_dev-1.2.131/tests/test_loraplus_config.py +97 -0
  37. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_profiles.py +14 -1
  38. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_api.py +19 -0
  39. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_sft_train.py +114 -10
  40. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_spec_and_validation.py +2 -0
  41. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/uv.lock +1 -1
  42. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.dockerignore +0 -0
  43. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.env.example +0 -0
  44. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/CODEOWNERS +0 -0
  45. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  46. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  47. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  48. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  49. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/dependabot.yml +0 -0
  50. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/auto-rebake.yml +0 -0
  51. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/bake-kernel-cache.yml +0 -0
  52. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/ci.yml +0 -0
  53. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/deploy-modal-dev.yml +0 -0
  54. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/deploy-modal.yml +0 -0
  55. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/dev-kernel-cache.yml +0 -0
  56. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/main-source-guard.yml +0 -0
  57. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/notify-tests-repo.yml +0 -0
  58. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  59. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/publish-dev.yml +0 -0
  60. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/publish-image.yml +0 -0
  61. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/publish-serving-image.yml +0 -0
  62. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/publish.yml +0 -0
  63. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/version-parity.yml +0 -0
  64. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.github/workflows/worker-image.yml +0 -0
  65. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/.gitignore +0 -0
  66. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/CHANGELOG.md +0 -0
  67. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/CODE_OF_CONDUCT.md +0 -0
  68. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/CONTRIBUTING.md +0 -0
  69. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/Dockerfile +0 -0
  70. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/Dockerfile.serve +0 -0
  71. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/Dockerfile.worker +0 -0
  72. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/LICENSE +0 -0
  73. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/NOTICE +0 -0
  74. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/README.md +0 -0
  75. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/SECURITY.md +0 -0
  76. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/SELF_HOSTING.md +0 -0
  77. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/build/kernel_cache/.gitignore +0 -0
  78. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/build/kernel_cache/.keep +0 -0
  79. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/deploy/infisical/README.md +0 -0
  80. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/deploy/infisical/entrypoint.sh +0 -0
  81. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docker/Dockerfile.kernelcache +0 -0
  82. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docker/Dockerfile.kernelcache.relayer +0 -0
  83. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docker/bake_kernel_cache.py +0 -0
  84. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docker/bake_pod_entry.py +0 -0
  85. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docker/extract_cudart_fix.py +0 -0
  86. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docker/kernel_fingerprint.py +0 -0
  87. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docker/make_rp_handler.py +0 -0
  88. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docker/patch_vllm_moe_lora.py +0 -0
  89. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docs/hosted-inference-load-testing.md +0 -0
  90. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/docs/serving-contract.md +0 -0
  91. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/__init__.py +0 -0
  92. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/__init__.py +0 -0
  93. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/channel.py +0 -0
  94. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/diagnostics.py +0 -0
  95. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/fileio.py +0 -0
  96. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/http.py +0 -0
  97. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/logging.py +0 -0
  98. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/openai_sse.py +0 -0
  99. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/paths.py +0 -0
  100. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/_internal/version.py +0 -0
  101. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/adapters/__init__.py +0 -0
  102. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/adapters/artifacts.py +0 -0
  103. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/adapters/fused_experts.py +0 -0
  104. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/adapters/lora_rank.py +0 -0
  105. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/adapters/targets.py +0 -0
  106. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/__init__.py +0 -0
  107. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/__main__.py +0 -0
  108. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/__init__.py +0 -0
  109. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/__init__.py +0 -0
  110. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/ops/__init__.py +0 -0
  111. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/ops/imports.py +0 -0
  112. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/ops/list.py +0 -0
  113. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/ops/push.py +0 -0
  114. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/ops/retained.py +0 -0
  115. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/ops/setup.py +0 -0
  116. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  117. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/testing/__init__.py +0 -0
  118. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/testing/episode.py +0 -0
  119. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/testing/eval.py +0 -0
  120. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/testing/eval_args.py +0 -0
  121. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/testing/evaluations.py +0 -0
  122. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/testing/params.py +0 -0
  123. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/testing/test.py +0 -0
  124. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/env/testing/warnings.py +0 -0
  125. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/__init__.py +0 -0
  126. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/account.py +0 -0
  127. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/catalog.py +0 -0
  128. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/deploy.py +0 -0
  129. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/log_follow.py +0 -0
  130. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/prompt_budget.py +0 -0
  131. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/runs.py +0 -0
  132. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/traces.py +0 -0
  133. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/train.py +0 -0
  134. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/ops/worker_output.py +0 -0
  135. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/serving/__init__.py +0 -0
  136. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/serving/deploy.py +0 -0
  137. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/serving/identity.py +0 -0
  138. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/serving/status.py +0 -0
  139. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/commands/serving/undeploy.py +0 -0
  140. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/__init__.py +0 -0
  141. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/account.py +0 -0
  142. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/env.py +0 -0
  143. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/errors.py +0 -0
  144. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/main.py +0 -0
  145. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/models.py +0 -0
  146. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/serve_parser.py +0 -0
  147. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/traces.py +0 -0
  148. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/parsing/training.py +0 -0
  149. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/scaffold/TRAINING.md +0 -0
  150. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/scaffold/__init__.py +0 -0
  151. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/ui/__init__.py +0 -0
  152. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/ui/cost.py +0 -0
  153. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/ui/env_panels.py +0 -0
  154. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/ui/heartbeat.py +0 -0
  155. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/ui/render.py +0 -0
  156. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/ui/tables.py +0 -0
  157. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cli/ui/tty.py +0 -0
  158. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/client/__init__.py +0 -0
  159. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/client/config.py +0 -0
  160. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/client/freesolo_api.py +0 -0
  161. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/client/http.py +0 -0
  162. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/client/runtime_secrets.py +0 -0
  163. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/client/shapes.py +0 -0
  164. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/client/specs.py +0 -0
  165. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/client/streaming.py +0 -0
  166. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/content/__init__.py +0 -0
  167. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/content/image_descriptors.py +0 -0
  168. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/content/multimodal.py +0 -0
  169. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/content/reasoning_normalization.py +0 -0
  170. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/content/structured_outputs.py +0 -0
  171. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/content/thinking.py +0 -0
  172. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/core/__init__.py +0 -0
  173. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/core/grpo.py +0 -0
  174. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/core/spec_persistence.py +0 -0
  175. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cost/__init__.py +0 -0
  176. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cost/analytical.py +0 -0
  177. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cost/currency.py +0 -0
  178. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cost/facts.py +0 -0
  179. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cost/spec.py +0 -0
  180. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/cost/types.py +0 -0
  181. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/__init__.py +0 -0
  182. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/plan/__init__.py +0 -0
  183. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/plan/kv_sizing.py +0 -0
  184. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/plan/model_config_probe.py +0 -0
  185. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/plan/prompt_budget.py +0 -0
  186. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/plan/steps.py +0 -0
  187. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/plan/vram.py +0 -0
  188. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/profiling/__init__.py +0 -0
  189. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/profiling/dataset_profile.py +0 -0
  190. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/profiling/image_tokens.py +0 -0
  191. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/profiling/reasoning_render.py +0 -0
  192. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/profiling/sft_image_rows.py +0 -0
  193. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/profiling/sft_workload.py +0 -0
  194. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/profiling/tokenizer.py +0 -0
  195. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/profiling/workload_profile.py +0 -0
  196. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/result/__init__.py +0 -0
  197. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/result/accounting.py +0 -0
  198. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/result/rollout_samples.py +0 -0
  199. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/support/__init__.py +0 -0
  200. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/support/huggingface.py +0 -0
  201. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/support/verl_checkpoint.py +0 -0
  202. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/support/verl_policy.py +0 -0
  203. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/support/worker_entrypoint.py +0 -0
  204. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/__init__.py +0 -0
  205. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/__main__.py +0 -0
  206. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/entry/__init__.py +0 -0
  207. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/entry/opd.py +0 -0
  208. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/entry/rl.py +0 -0
  209. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/entry/sft.py +0 -0
  210. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/entry/worker.py +0 -0
  211. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/io/__init__.py +0 -0
  212. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/io/heartbeat.py +0 -0
  213. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/io/hf.py +0 -0
  214. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/io/prefetch.py +0 -0
  215. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/io/wandb_log.py +0 -0
  216. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/model/__init__.py +0 -0
  217. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/model/adapter.py +0 -0
  218. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/model/chatml_mask.py +0 -0
  219. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/model/decoding.py +0 -0
  220. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/model/lora.py +0 -0
  221. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/model/packing.py +0 -0
  222. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/perf/__init__.py +0 -0
  223. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/perf/diagnostics.py +0 -0
  224. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/perf/lifecycle.py +0 -0
  225. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/perf/liger.py +0 -0
  226. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/perf/memory.py +0 -0
  227. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/runtime/__init__.py +0 -0
  228. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  229. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/runtime/rng.py +0 -0
  230. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/runtime/state.py +0 -0
  231. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/teacher/__init__.py +0 -0
  232. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/teacher/client.py +0 -0
  233. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/teacher/encoding.py +0 -0
  234. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
  235. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/__init__.py +0 -0
  236. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/core/__init__.py +0 -0
  237. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/core/child/__init__.py +0 -0
  238. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/core/child/glue.py +0 -0
  239. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/core/child/runtime.py +0 -0
  240. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  241. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  242. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  243. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  244. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/__init__.py +0 -0
  245. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/backend_common.py +0 -0
  246. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/opd_train.py +0 -0
  247. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/opd_train_runner.py +0 -0
  248. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  249. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/rl_train.py +0 -0
  250. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  251. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  252. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/__init__.py +0 -0
  253. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/bridging/__init__.py +0 -0
  254. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/bridging/batching.py +0 -0
  255. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/bridging/bridge.py +0 -0
  256. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/bridging/failures.py +0 -0
  257. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/bridging/prompts.py +0 -0
  258. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/bridging/scoring.py +0 -0
  259. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/__init__.py +0 -0
  260. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/bridge.py +0 -0
  261. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/entry.py +0 -0
  262. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
  263. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/plugin.py +0 -0
  264. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
  265. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/runtime.py +0 -0
  266. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/structured.py +0 -0
  267. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/child/tensors.py +0 -0
  268. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/multiturn/__init__.py +0 -0
  269. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/multiturn/media.py +0 -0
  270. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/multiturn/validation.py +0 -0
  271. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/__init__.py +0 -0
  272. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/failures.py +0 -0
  273. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/gkd.py +0 -0
  274. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/overrides.py +0 -0
  275. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/progress.py +0 -0
  276. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +0 -0
  277. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/protocol.py +0 -0
  278. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/reporting.py +0 -0
  279. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/state.py +0 -0
  280. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/opd/orchestration/validation.py +0 -0
  281. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/__init__.py +0 -0
  282. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  283. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/child/entry.py +0 -0
  284. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  285. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/child/patches.py +0 -0
  286. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/child/plugin.py +0 -0
  287. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  288. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  289. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/launch/config.py +0 -0
  290. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  291. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  292. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  293. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  294. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  295. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/rollout/reward_module.py +0 -0
  296. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  297. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  298. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/sft/__init__.py +0 -0
  299. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/sft/child/entry.py +0 -0
  300. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/sft/child/plugin.py +0 -0
  301. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  302. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  303. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/train/sft/setup/config.py +0 -0
  304. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/verl/__init__.py +0 -0
  305. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/verl/capabilities.py +0 -0
  306. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/verl/checkpoints.py +0 -0
  307. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/verl/child_io.py +0 -0
  308. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/verl/diagnostics.py +0 -0
  309. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/verl/parallelism.py +0 -0
  310. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/verl/parent_work.py +0 -0
  311. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/engine/worker/verl/process_census.py +0 -0
  312. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/__init__.py +0 -0
  313. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/loading/__init__.py +0 -0
  314. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/loading/adapter.py +0 -0
  315. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/loading/base.py +0 -0
  316. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/loading/loader.py +0 -0
  317. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/loading/pull.py +0 -0
  318. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/loading/staged.py +0 -0
  319. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/meta/__init__.py +0 -0
  320. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/meta/cache_security.py +0 -0
  321. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/meta/dataset_selection.py +0 -0
  322. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/meta/evaluations.py +0 -0
  323. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/meta/identity.py +0 -0
  324. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/meta/namespace_listing.py +0 -0
  325. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/package/__init__.py +0 -0
  326. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/package/direct_tokens.py +0 -0
  327. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/package/limits.py +0 -0
  328. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/envs/package/unpack.py +0 -0
  329. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/__init__.py +0 -0
  330. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/__init__.py +0 -0
  331. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  332. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  333. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  334. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  335. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/bootstrapping/processes.py +0 -0
  336. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  337. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/host/__init__.py +0 -0
  338. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
  339. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/host/failmark.py +0 -0
  340. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/host/hostlog.py +0 -0
  341. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  342. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/instances/instance.py +0 -0
  343. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/instances/poll.py +0 -0
  344. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  345. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/instances/provider.py +0 -0
  346. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  347. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/net/__init__.py +0 -0
  348. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/net/auth.py +0 -0
  349. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/net/deadline.py +0 -0
  350. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/net/http.py +0 -0
  351. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/_lifecycle/net/worker.py +0 -0
  352. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/artifacts/__init__.py +0 -0
  353. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/artifacts/hf.py +0 -0
  354. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/artifacts/preload_runpod.py +0 -0
  355. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/artifacts/weight_cache.py +0 -0
  356. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/core/__init__.py +0 -0
  357. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/core/allocator.py +0 -0
  358. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/core/base.py +0 -0
  359. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/core/fit_errors.py +0 -0
  360. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/core/preflight.py +0 -0
  361. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/core/realized.py +0 -0
  362. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/core/registry.py +0 -0
  363. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/core/sharding.py +0 -0
  364. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/__init__.py +0 -0
  365. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/client/__init__.py +0 -0
  366. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/client/api.py +0 -0
  367. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/client/auth.py +0 -0
  368. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/client/gpus.py +0 -0
  369. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/client/preflight.py +0 -0
  370. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/client/pricing.py +0 -0
  371. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/execution/__init__.py +0 -0
  372. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/execution/provider.py +0 -0
  373. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/jobs/__init__.py +0 -0
  374. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/jobs/builders.py +0 -0
  375. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/lambda_/jobs/reap.py +0 -0
  376. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/__init__.py +0 -0
  377. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/client/__init__.py +0 -0
  378. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/client/api.py +0 -0
  379. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/client/auth.py +0 -0
  380. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/client/cost.py +0 -0
  381. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/client/gpus.py +0 -0
  382. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/client/preflight.py +0 -0
  383. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/client/pricing.py +0 -0
  384. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/execution/__init__.py +0 -0
  385. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/execution/job_execution.py +0 -0
  386. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/execution/jobs.py +0 -0
  387. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/execution/polling.py +0 -0
  388. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/execution/provider.py +0 -0
  389. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/execution/resources.py +0 -0
  390. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/serverless/__init__.py +0 -0
  391. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/serverless/endpoints.py +0 -0
  392. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/runpod/serverless/naming.py +0 -0
  393. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/__init__.py +0 -0
  394. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/client/__init__.py +0 -0
  395. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/client/api.py +0 -0
  396. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/client/auth.py +0 -0
  397. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/client/preflight.py +0 -0
  398. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/client/pricing.py +0 -0
  399. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/client/result.py +0 -0
  400. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/execution/__init__.py +0 -0
  401. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/execution/provider.py +0 -0
  402. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/jobs/__init__.py +0 -0
  403. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/providers/vast/jobs/builders.py +0 -0
  404. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/py.typed +0 -0
  405. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/__init__.py +0 -0
  406. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/accounting/__init__.py +0 -0
  407. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/accounting/artifacts.py +0 -0
  408. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/accounting/costs.py +0 -0
  409. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/accounting/reconciliation.py +0 -0
  410. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/accounting/weight_cache.py +0 -0
  411. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/__init__.py +0 -0
  412. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/attempts.py +0 -0
  413. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/claim_lock.py +0 -0
  414. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/deadlines.py +0 -0
  415. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/preparation.py +0 -0
  416. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/reporting.py +0 -0
  417. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/state.py +0 -0
  418. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/status.py +0 -0
  419. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/lifecycle/submit.py +0 -0
  420. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/results/__init__.py +0 -0
  421. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/results/checkpoints.py +0 -0
  422. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/results/verified_revisions.py +0 -0
  423. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/__init__.py +0 -0
  424. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/attach.py +0 -0
  425. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/attach_reconcile.py +0 -0
  426. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/attempt_supervision.py +0 -0
  427. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/deploy.py +0 -0
  428. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/errors.py +0 -0
  429. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/lifecycle.py +0 -0
  430. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/recovery.py +0 -0
  431. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/retry_decision.py +0 -0
  432. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runner/supervise/transitions.py +0 -0
  433. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runtime_capsule/__init__.py +0 -0
  434. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runtime_capsule/build.py +0 -0
  435. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runtime_capsule/manifest.py +0 -0
  436. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/runtime_capsule/profiles.py +0 -0
  437. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/__init__.py +0 -0
  438. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/__init__.py +0 -0
  439. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/__main__.py +0 -0
  440. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/bootstrap.py +0 -0
  441. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/chat_stream.py +0 -0
  442. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/http.py +0 -0
  443. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/launch.py +0 -0
  444. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/manifest.py +0 -0
  445. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/materialize.py +0 -0
  446. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/openai.py +0 -0
  447. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/app/progress.py +0 -0
  448. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/contract/__init__.py +0 -0
  449. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/contract/errors.py +0 -0
  450. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/contract/protocol.py +0 -0
  451. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/contract/provenance.py +0 -0
  452. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/contract/responses.py +0 -0
  453. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/contract/urls.py +0 -0
  454. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/control/__init__.py +0 -0
  455. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/control/_canonical.py +0 -0
  456. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/control/_serialization.py +0 -0
  457. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/control/_urls.py +0 -0
  458. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/control/credentials.py +0 -0
  459. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/control/planning.py +0 -0
  460. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/control/types.py +0 -0
  461. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/deployment/__init__.py +0 -0
  462. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/deployment/adapter_check.py +0 -0
  463. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/deployment/deploy.py +0 -0
  464. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/deployment/export.py +0 -0
  465. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/deployment/preflight.py +0 -0
  466. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/deployment/readiness.py +0 -0
  467. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/deployment/resolve.py +0 -0
  468. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/__init__.py +0 -0
  469. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/common/__init__.py +0 -0
  470. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/common/records.py +0 -0
  471. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/__init__.py +0 -0
  472. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  473. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  474. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  475. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  476. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  477. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  478. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  479. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  480. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  481. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  482. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  483. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  484. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  485. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/__init__.py +0 -0
  486. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/openai.py +0 -0
  487. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/runtime_support.py +0 -0
  488. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/streaming.py +0 -0
  489. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/text_scan.py +0 -0
  490. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/thinking.py +0 -0
  491. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/tool_calls.py +0 -0
  492. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/tool_template.py +0 -0
  493. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/transport.py +0 -0
  494. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/request/validation.py +0 -0
  495. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/__init__.py +0 -0
  496. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/adapters.py +0 -0
  497. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/engine.py +0 -0
  498. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/errors.py +0 -0
  499. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/multimodal.py +0 -0
  500. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/prompt.py +0 -0
  501. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/sampling.py +0 -0
  502. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/structured_outputs.py +0 -0
  503. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/tool_calls.py +0 -0
  504. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serve/runtime/types.py +0 -0
  505. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/__init__.py +0 -0
  506. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/__main__.py +0 -0
  507. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/asgi/__init__.py +0 -0
  508. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/asgi/app.py +0 -0
  509. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/asgi/cli.py +0 -0
  510. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/billing/__init__.py +0 -0
  511. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/billing/charges.py +0 -0
  512. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/billing/retry.py +0 -0
  513. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/__init__.py +0 -0
  514. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/ops/__init__.py +0 -0
  515. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/ops/reconcile.py +0 -0
  516. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/ops/repo_cleanup.py +0 -0
  517. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/ops/serving_resources.py +0 -0
  518. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/registry/__init__.py +0 -0
  519. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/registry/checkpoints.py +0 -0
  520. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/registry/environment_registry.py +0 -0
  521. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/registry/envs.py +0 -0
  522. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/registry/projects.py +0 -0
  523. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/registry/runs.py +0 -0
  524. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/teacher/__init__.py +0 -0
  525. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/teacher/broker.py +0 -0
  526. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/teacher/errors.py +0 -0
  527. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/domain/teacher/requests.py +0 -0
  528. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/platform/__init__.py +0 -0
  529. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/platform/auth.py +0 -0
  530. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/platform/db.py +0 -0
  531. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/platform/deps.py +0 -0
  532. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/platform/internal_client.py +0 -0
  533. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/platform/locks.py +0 -0
  534. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/platform/runtime.py +0 -0
  535. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/__init__.py +0 -0
  536. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/envs.py +0 -0
  537. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/meta.py +0 -0
  538. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/runs.py +0 -0
  539. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/serving.py +0 -0
  540. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/serving_chat.py +0 -0
  541. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/serving_completion.py +0 -0
  542. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/serving_revisions.py +0 -0
  543. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/serving_smoke.py +0 -0
  544. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/server/routes/teacher.py +0 -0
  545. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/__init__.py +0 -0
  546. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/app/README.md +0 -0
  547. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/app/__init__.py +0 -0
  548. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/__init__.py +0 -0
  549. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/__main__.py +0 -0
  550. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/artifacts.py +0 -0
  551. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/cli.py +0 -0
  552. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/metrics.py +0 -0
  553. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/protocol.py +0 -0
  554. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/runner.py +0 -0
  555. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/schedule.py +0 -0
  556. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/loadtest/schema.py +0 -0
  557. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/promotion/__init__.py +0 -0
  558. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/promotion/canary.py +0 -0
  559. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/promotion/evidence.py +0 -0
  560. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/promotion/gate.py +0 -0
  561. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/__init__.py +0 -0
  562. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/accounting/__init__.py +0 -0
  563. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/accounting/usage_facts.py +0 -0
  564. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/__init__.py +0 -0
  565. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/boot.py +0 -0
  566. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/errors.py +0 -0
  567. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/generation.py +0 -0
  568. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/lora_engine.py +0 -0
  569. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/lora_entries.py +0 -0
  570. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/prequant_config.py +0 -0
  571. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/engine/support.py +0 -0
  572. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/http/__init__.py +0 -0
  573. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/http/adapter_routes.py +0 -0
  574. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/http/body_limit.py +0 -0
  575. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/http/routing.py +0 -0
  576. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/__init__.py +0 -0
  577. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/multimodal.py +0 -0
  578. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/openai_request.py +0 -0
  579. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/openai_stream.py +0 -0
  580. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/provenance.py +0 -0
  581. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/requests.py +0 -0
  582. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/responses.py +0 -0
  583. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/schemas.py +0 -0
  584. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/streaming.py +0 -0
  585. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/io/structured_outputs.py +0 -0
  586. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/__init__.py +0 -0
  587. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/access.py +0 -0
  588. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/lookup.py +0 -0
  589. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/persisted_columns.py +0 -0
  590. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/persistence.py +0 -0
  591. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/registration.py +0 -0
  592. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/registry.py +0 -0
  593. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/settings.py +0 -0
  594. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/supabase_rest.py +0 -0
  595. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/serving/src/store/undeploy.py +0 -0
  596. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/snapshot/__init__.py +0 -0
  597. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/snapshot/archive.py +0 -0
  598. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/teacher/__init__.py +0 -0
  599. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/teacher/limits.py +0 -0
  600. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/teacher/provider_status.py +0 -0
  601. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/flash/teacher/retry_contract.py +0 -0
  602. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/scripts/build_dev_dist.py +0 -0
  603. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/scripts/check_file_size.py +0 -0
  604. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/scripts/check_function_size.py +0 -0
  605. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/scripts/check_rollout_identity_actor.py +0 -0
  606. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/scripts/check_source_layout.py +0 -0
  607. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/scripts/check_verl_pin_exists.py +0 -0
  608. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/scripts/qualify_serving_profile.py +0 -0
  609. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/scripts/scrub_history.sh +0 -0
  610. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/serve_launch.py +0 -0
  611. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/__init__.py +0 -0
  612. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/__init__.py +0 -0
  613. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/chat_provenance.py +0 -0
  614. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/chat_transport.py +0 -0
  615. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/managed_chat.py +0 -0
  616. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/profile.py +0 -0
  617. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/runner.py +0 -0
  618. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/server_api_plugin.py +0 -0
  619. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/source_snapshot.py +0 -0
  620. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/specs.py +0 -0
  621. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/teacher.py +0 -0
  622. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/vast.py +0 -0
  623. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/_helpers/wire_headers.py +0 -0
  624. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/capture_image_sft_processor_oracle.py +0 -0
  625. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/capture_qwen38_27b_metadata.py +0 -0
  626. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/conftest.py +0 -0
  627. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  628. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  629. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  630. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  631. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  632. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  633. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/live/__init__.py +0 -0
  634. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/live/conftest.py +0 -0
  635. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/live/test_lambda_live.py +0 -0
  636. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/live/test_runpod_live.py +0 -0
  637. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/live/test_sft_thinking_render_live.py +0 -0
  638. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/live/test_vast_live.py +0 -0
  639. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/checkpoint_fixtures.py +0 -0
  640. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/conftest.py +0 -0
  641. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/hosted_loadtest_fake_scenario.json +0 -0
  642. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_chat_auth.py +0 -0
  643. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
  644. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_checkpoint_model_validation.py +0 -0
  645. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_engine_error_status.py +0 -0
  646. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_fp8_config.py +0 -0
  647. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_immutable_engine.py +0 -0
  648. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_immutable_revisions.py +0 -0
  649. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_immutable_schemas.py +0 -0
  650. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_loadtest_artifacts.py +0 -0
  651. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_loadtest_metrics.py +0 -0
  652. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_loadtest_protocol.py +0 -0
  653. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_loadtest_runner.py +0 -0
  654. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_loadtest_schedule.py +0 -0
  655. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_loadtest_schema.py +0 -0
  656. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_mirror_sampling_parity.py +0 -0
  657. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_modal_deploy_identity.py +0 -0
  658. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_modal_image_paths.py +0 -0
  659. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_multimodal.py +0 -0
  660. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_openai_stream_options.py +0 -0
  661. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_persistence.py +0 -0
  662. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_prequant_config.py +0 -0
  663. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_promotion_canary.py +0 -0
  664. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_promotion_evidence.py +0 -0
  665. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_promotion_gate.py +0 -0
  666. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_registry.py +0 -0
  667. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_registry_coverage.py +0 -0
  668. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_request_body_limit.py +0 -0
  669. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_router_coverage.py +0 -0
  670. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_router_edge_coverage.py +0 -0
  671. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_schemas_coverage.py +0 -0
  672. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_serve_reasoning_split.py +0 -0
  673. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_serve_structured_outputs.py +0 -0
  674. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_serve_thinking.py +0 -0
  675. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_settings.py +0 -0
  676. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_structured_outputs.py +0 -0
  677. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_structured_outputs_coverage.py +0 -0
  678. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving/test_supabase_rest_coverage.py +0 -0
  679. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving_conformance/__init__.py +0 -0
  680. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving_conformance/conftest.py +0 -0
  681. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/serving_conformance/test_contract.py +0 -0
  682. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_accounting_coverage.py +0 -0
  683. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_adapter_shard_completeness.py +0 -0
  684. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_agent_flash_cli_contract.py +0 -0
  685. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_algorithms.py +0 -0
  686. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_allocator.py +0 -0
  687. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_authenticated_redirects.py +0 -0
  688. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_backend_common.py +0 -0
  689. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_backend_jobspec_contract.py +0 -0
  690. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_bake_kernel_cache.py +0 -0
  691. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_base_model_provenance.py +0 -0
  692. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_billing_retry.py +0 -0
  693. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_bootstrap_process_groups.py +0 -0
  694. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_build_context_contract.py +0 -0
  695. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cancel_remote.py +0 -0
  696. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_capture_qwen38_metadata.py +0 -0
  697. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_catalog_only_models.py +0 -0
  698. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_charge_pricing.py +0 -0
  699. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_chat_foundations.py +0 -0
  700. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_checkpoint_lifecycle.py +0 -0
  701. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_checkpoints.py +0 -0
  702. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_commands.py +0 -0
  703. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_commands_coverage.py +0 -0
  704. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_credential_shadowing.py +0 -0
  705. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_errors.py +0 -0
  706. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_estimate.py +0 -0
  707. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_gpus_flag.py +0 -0
  708. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_help.py +0 -0
  709. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_main_coverage.py +0 -0
  710. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_managed.py +0 -0
  711. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_render_coverage.py +0 -0
  712. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_render_theme.py +0 -0
  713. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_serve_deploy.py +0 -0
  714. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_serve_status.py +0 -0
  715. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_serve_undeploy.py +0 -0
  716. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_traces.py +0 -0
  717. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cli_wandb_warning.py +0 -0
  718. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_client.py +0 -0
  719. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_client_import_purity.py +0 -0
  720. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_client_server_integration.py +0 -0
  721. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_client_stream_reads.py +0 -0
  722. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_config_env_vars.py +0 -0
  723. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_config_overrides.py +0 -0
  724. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_console_upload.py +0 -0
  725. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_controlled_experiment_repairs.py +0 -0
  726. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cost_analytical.py +0 -0
  727. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cost_currency.py +0 -0
  728. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cost_equation.py +0 -0
  729. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cost_estimate.py +0 -0
  730. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cost_hardware.py +0 -0
  731. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_cost_models.py +0 -0
  732. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_dataset_profile.py +0 -0
  733. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_deploy_latency.py +0 -0
  734. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_dev_channel.py +0 -0
  735. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_disk_gb.py +0 -0
  736. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_endpoint_name.py +0 -0
  737. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_cache_evict.py +0 -0
  738. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_delete.py +0 -0
  739. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_download.py +0 -0
  740. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_download_api.py +0 -0
  741. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_evaluations.py +0 -0
  742. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_git_auth.py +0 -0
  743. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_list_api.py +0 -0
  744. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_list_cli.py +0 -0
  745. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_list_hub.py +0 -0
  746. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_no_install.py +0 -0
  747. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_publish.py +0 -0
  748. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_pull.py +0 -0
  749. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_pull_coverage.py +0 -0
  750. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_pull_loader_coverage.py +0 -0
  751. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_pull_managed_control_plane.py +0 -0
  752. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_push.py +0 -0
  753. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_rate_limit_resolve.py +0 -0
  754. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_ref_pinning.py +0 -0
  755. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_env_test.py +0 -0
  756. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_envs_coverage.py +0 -0
  757. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_export.py +0 -0
  758. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_flash_mvp.py +0 -0
  759. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_flash_worker.py +0 -0
  760. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_flashinfer_cache_dirs.py +0 -0
  761. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_freesolo_api_transport.py +0 -0
  762. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_fused_expert_warmstart.py +0 -0
  763. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_github_urlopen_retry.py +0 -0
  764. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_gpu_type_single_field.py +0 -0
  765. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_gpus.py +0 -0
  766. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_grpo_checkpoint_durability.py +0 -0
  767. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_grpo_params.py +0 -0
  768. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_grpo_process_census.py +0 -0
  769. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_grpo_resident_sizing.py +0 -0
  770. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_grpo_reward_batching.py +0 -0
  771. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_grpo_rollout_contract.py +0 -0
  772. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_grpo_rollout_identity.py +0 -0
  773. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_health_liveness.py +0 -0
  774. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_hf_retry.py +0 -0
  775. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_idle_endpoint_reaper.py +0 -0
  776. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_image_environment_capability.py +0 -0
  777. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_image_incremental_processor.py +0 -0
  778. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_image_sft_markers.py +0 -0
  779. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_image_sft_processor_parity.py +0 -0
  780. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_image_tokens.py +0 -0
  781. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_infisical_secrets.py +0 -0
  782. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_instance_bootstrap_coverage.py +0 -0
  783. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_internal_client.py +0 -0
  784. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_jobs.py +0 -0
  785. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_kernel_cache.py +0 -0
  786. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_kernel_fingerprint.py +0 -0
  787. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_kv_util.py +0 -0
  788. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_lambda_api_coverage.py +0 -0
  789. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_lambda_runner.py +0 -0
  790. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_logging.py +0 -0
  791. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_login_perms.py +0 -0
  792. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_lora_rank_coverage.py +0 -0
  793. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_lora_rank_nested_rung.py +0 -0
  794. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_lora_rank_preflight.py +0 -0
  795. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_lora_targeting_pinned_verl.py +0 -0
  796. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_managed_config_fields.py +0 -0
  797. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_managed_hf_repo.py +0 -0
  798. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_metrics_schema_agent_contract.py +0 -0
  799. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_mig_guard.py +0 -0
  800. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_mirror_sampling_parity.py +0 -0
  801. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_multi_gpu_gate.py +0 -0
  802. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_multimodal_training.py +0 -0
  803. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_named_reward_metrics.py +0 -0
  804. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_oom_escalate_gpu.py +0 -0
  805. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_opd.py +0 -0
  806. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_opd_limits.py +0 -0
  807. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_opd_multiturn_eos_boundary.py +0 -0
  808. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_opd_multiturn_failure_exit.py +0 -0
  809. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_opd_replay_guard.py +0 -0
  810. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_opd_resume_safety.py +0 -0
  811. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_opd_train.py +0 -0
  812. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_orchestrator_flash.py +0 -0
  813. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_packing.py +0 -0
  814. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_packing_coverage.py +0 -0
  815. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_parasail_teacher.py +0 -0
  816. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_persisted_spec_envelope.py +0 -0
  817. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_poll_helpers.py +0 -0
  818. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_preflight.py +0 -0
  819. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_projects.py +0 -0
  820. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_prompt_budget.py +0 -0
  821. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_provider_preflight_coverage.py +0 -0
  822. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_provider_routing.py +0 -0
  823. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_provider_teardown_robustness.py +0 -0
  824. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_providers_symmetry.py +0 -0
  825. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_realized_cost.py +0 -0
  826. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_repo_cleanup.py +0 -0
  827. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_resolve_params_b.py +0 -0
  828. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_resume_on_retry.py +0 -0
  829. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_retry_decision.py +0 -0
  830. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_rl_train.py +0 -0
  831. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_rollout_samples.py +0 -0
  832. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_run_registry_lifecycle.py +0 -0
  833. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_runmgmt.py +0 -0
  834. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_runpod_api_delete.py +0 -0
  835. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_runpod_key_fingerprint.py +0 -0
  836. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_runpod_key_waterfall.py +0 -0
  837. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_runtime_capsule.py +0 -0
  838. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve.py +0 -0
  839. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_app_bootstrap_http.py +0 -0
  840. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_app_launch.py +0 -0
  841. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_app_manifest.py +0 -0
  842. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_app_materialize.py +0 -0
  843. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_app_packaging.py +0 -0
  844. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_app_progress.py +0 -0
  845. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_chat_transport.py +0 -0
  846. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_control.py +0 -0
  847. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_docs.py +0 -0
  848. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_modal_contract_lock.py +0 -0
  849. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_modal_sdk.py +0 -0
  850. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  851. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_modal_teardown_identity.py +0 -0
  852. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_profile_qualification.py +0 -0
  853. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_provisioning_common.py +0 -0
  854. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_provisioning_modal.py +0 -0
  855. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_reasoning_content.py +0 -0
  856. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_resolve_provenance.py +0 -0
  857. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_runtime_adapters.py +0 -0
  858. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_runtime_engine.py +0 -0
  859. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_runtime_package.py +0 -0
  860. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serve_runtime_types.py +0 -0
  861. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_app_coverage.py +0 -0
  862. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_auth_singleflight.py +0 -0
  863. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_billing.py +0 -0
  864. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_checkpoints_coverage.py +0 -0
  865. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_db.py +0 -0
  866. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_envs_coverage.py +0 -0
  867. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_locks_coverage.py +0 -0
  868. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_managed_chat_requests.py +0 -0
  869. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_serving_resources.py +0 -0
  870. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_server_standalone.py +0 -0
  871. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serving_conformance_gate.py +0 -0
  872. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serving_context_preflight.py +0 -0
  873. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serving_contract.py +0 -0
  874. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_serving_schema_coverage.py +0 -0
  875. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_sft_chunked_nll.py +0 -0
  876. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_sft_example_selection.py +0 -0
  877. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_sft_gc_off.py +0 -0
  878. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_sft_max_context.py +0 -0
  879. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_sft_step_floor.py +0 -0
  880. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_sft_workload.py +0 -0
  881. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_source_attestation_flow.py +0 -0
  882. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_source_layout.py +0 -0
  883. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_source_snapshot.py +0 -0
  884. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_spec_contract_bytes.py +0 -0
  885. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_staged_environment.py +0 -0
  886. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_step_floor.py +0 -0
  887. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_step_metrics.py +0 -0
  888. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_step_timing.py +0 -0
  889. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_structured_outputs.py +0 -0
  890. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_teacher_broker.py +0 -0
  891. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_teacher_encoding_contract.py +0 -0
  892. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_terminal_artifacts.py +0 -0
  893. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_thinking_config.py +0 -0
  894. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_tool_call_exact_parsing.py +0 -0
  895. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_train_context_preflight.py +0 -0
  896. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_training_controls.py +0 -0
  897. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_type_comment_prose.py +0 -0
  898. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vast_api.py +0 -0
  899. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vast_api_coverage.py +0 -0
  900. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vast_offers.py +0 -0
  901. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vast_provider_coverage.py +0 -0
  902. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vast_result.py +0 -0
  903. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vast_runner.py +0 -0
  904. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_verified_revisions.py +0 -0
  905. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_verifiers.py +0 -0
  906. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_verl_checkpoint_export.py +0 -0
  907. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_verl_child_plugins.py +0 -0
  908. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_verl_silence_watchdog.py +0 -0
  909. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_version.py +0 -0
  910. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  911. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vllm_moe_lora_backport.py +0 -0
  912. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_vram_architecture.py +0 -0
  913. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_wandb_link.py +0 -0
  914. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_wandb_naming.py +0 -0
  915. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_warmstart_adapter_download.py +0 -0
  916. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_warmstart_cross_repo.py +0 -0
  917. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_warmstart_error_attribution.py +0 -0
  918. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_warmstart_image_adapters.py +0 -0
  919. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_weight_cache.py +0 -0
  920. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_worker_dryrun.py +0 -0
  921. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_worker_hardexit.py +0 -0
  922. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_worker_image.py +0 -0
  923. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_worker_init_heartbeat.py +0 -0
  924. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_worker_stack.py +0 -0
  925. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_worker_thinking.py +0 -0
  926. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_workflow_contracts.py +0 -0
  927. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_workload_profile.py +0 -0
  928. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.131}/tests/test_zero2_sharding_gate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: freesolo-flash-dev
3
- Version: 1.2.129
3
+ Version: 1.2.131
4
4
  Summary: Flash — managed LoRA post-training (SFT/GRPO/OPD) for Freesolo environments, driven by the `flash` CLI
5
5
  Project-URL: Homepage, https://github.com/freesolo-co/flash
6
6
  Project-URL: Repository, https://github.com/freesolo-co/flash
@@ -258,7 +258,7 @@ MODELS: dict[str, ModelInfo] = {
258
258
  quant="bf16",
259
259
  recommended_gpu="A100 PCIe",
260
260
  serving=ServingCapacity(
261
- gpu="L40S",
261
+ gpu="B200",
262
262
  serve_model_id=SERVING_MODEL_REPOS["Qwen/Qwen3.5-9B"],
263
263
  max_loras=16,
264
264
  max_cpu_loras=16,
@@ -318,7 +318,7 @@ MODELS: dict[str, ModelInfo] = {
318
318
  recommended_gpu="A100 PCIe",
319
319
  min_disk_gb=160,
320
320
  serving=ServingCapacity(
321
- gpu="H100",
321
+ gpu="B200",
322
322
  serve_model_id=SERVING_MODEL_REPOS["Qwen/Qwen3.8-27B"],
323
323
  max_loras=16,
324
324
  max_cpu_loras=16,
@@ -332,7 +332,7 @@ MODELS: dict[str, ModelInfo] = {
332
332
  thinking="hybrid",
333
333
  notes="Dense 27.781427952B multimodal VL checkpoint with image-capable bf16 LoRA training. "
334
334
  "SFT fits the 80GB A100 (~55.6GB weights); colocated GRPO needs the B200 (trainer + vLLM "
335
- "rollout = two copies). Hosted serving remains pending the exact official FP8 H100 canary.",
335
+ "rollout = two copies). Hosted serving runs the official FP8 checkpoint on the B200.",
336
336
  ),
337
337
  "Qwen/Qwen3.6-35B-A3B": ModelInfo(
338
338
  id="Qwen/Qwen3.6-35B-A3B",
@@ -393,10 +393,10 @@ MODELS: dict[str, ModelInfo] = {
393
393
  quant="bf16",
394
394
  recommended_gpu="H200",
395
395
  serving=ServingCapacity(
396
- gpu="H200",
396
+ gpu="B200",
397
397
  serve_model_id=SERVING_MODEL_REPOS["Qwen/Qwen3.6-35B-A3B"],
398
- # bf16 on h200 is the validated full-expert lora path. six hot rank-64 adapters plus 32k
399
- # fit with cuda graphs and a 679,701-token kv cache; eight hot adapters overflow the card.
398
+ # bf16 is the validated full-expert lora path. six hot rank-64 adapters plus 32k fit
399
+ # with cuda graphs; the b200 measured 49.38 GiB of kv (3,678,952 tokens) for this shape.
400
400
  max_loras=6,
401
401
  max_cpu_loras=6,
402
402
  max_lora_rank=64,
@@ -20,6 +20,7 @@ detail. See their docstrings before changing either.
20
20
  from __future__ import annotations
21
21
 
22
22
  import json
23
+ import math
23
24
  import os
24
25
  from dataclasses import asdict, dataclass, field, fields
25
26
  from typing import Any, Literal
@@ -365,6 +366,9 @@ class TrainSpec:
365
366
  hf_repo: str = ""
366
367
  # None -> worker's tuned recipe default.
367
368
  learning_rate: float | None = field(default=None, metadata={"introduced_in": "0.2.0"})
369
+ # sft only: none preserves a legacy persisted run's 16x optimizer. new configs freeze the
370
+ # recipe default at parse time; 1 uses equal adapter learning rates.
371
+ loraplus_ratio: float | None = field(default=None, metadata={"introduced_in": "1.2.131"})
368
372
  # sft only. the packaged-dataset estimate resolves this against the selected row count into
369
373
  # examples_per_update (packed) or pins the optimizer batch to 1 (unpacked). grpo/opd have no
370
374
  # profile, so they take prompts_per_step instead and reject this key: the two are not the same
@@ -399,6 +403,17 @@ class TrainSpec:
399
403
  )
400
404
 
401
405
  def __post_init__(self) -> None:
406
+ if self.loraplus_ratio is not None:
407
+ ratio = self.loraplus_ratio
408
+ if isinstance(ratio, bool) or not isinstance(ratio, (int, float)):
409
+ raise TypeError("train.loraplus_ratio must be a number")
410
+ try:
411
+ ratio = float(ratio)
412
+ except OverflowError as exc:
413
+ raise ValueError("train.loraplus_ratio must be a finite number >= 1") from exc
414
+ if not math.isfinite(ratio) or ratio < 1:
415
+ raise ValueError("train.loraplus_ratio must be a finite number >= 1")
416
+ object.__setattr__(self, "loraplus_ratio", ratio)
402
417
  if not self.lora_alpha:
403
418
  object.__setattr__(self, "lora_alpha", 2 * self.lora_rank)
404
419
  max_steps = parse_max_steps(self.max_steps)
@@ -566,6 +581,8 @@ class JobSpec:
566
581
  project: str = ""
567
582
 
568
583
  def __post_init__(self) -> None:
584
+ if self.train.loraplus_ratio is not None and self.algorithm != "sft":
585
+ raise ValueError("train.loraplus_ratio only applies to sft")
569
586
  object.__setattr__(self, "seed", parse_seed(self.seed))
570
587
  object.__setattr__(self, "model_revision", _model_revision(self.model_revision))
571
588
  for field_name in ("model_revision_auto", "model_revision_force_pin"):
@@ -681,6 +698,9 @@ class JobSpec:
681
698
  differently, so removing either pop would break existing digests.
682
699
  """
683
700
  data = asdict(self)
701
+ # preserve historical preparation digests when the new option was not authored.
702
+ if data["train"]["loraplus_ratio"] is None:
703
+ data["train"].pop("loraplus_ratio")
684
704
  # missing and unset are the same internal state. omitting the empty value preserves that state
685
705
  # without serializing it into an explicit empty preference, which every parser rejects.
686
706
  if not data["gpu"].get("providers"):
@@ -786,6 +806,7 @@ class JobSpec:
786
806
  init_from_adapter_revision=str(train.get("init_from_adapter_revision") or ""),
787
807
  hf_repo=str(train.get("hf_repo") or ""),
788
808
  learning_rate=opt_float(train.get("learning_rate")),
809
+ loraplus_ratio=train.get("loraplus_ratio"),
789
810
  batch_size=opt_int(train.get("batch_size")),
790
811
  prompts_per_step=opt_int(train.get("prompts_per_step")),
791
812
  max_context_tokens=opt_int(train.get("max_context_tokens")),
@@ -170,6 +170,7 @@ class SFTConfig:
170
170
  max_seq_len: int = 1024
171
171
  max_seq_len_thinking: int = 2048
172
172
  learning_rate: float = 1e-4
173
+ loraplus_ratio: float = 1.0
173
174
  warmup_frac: float = 0.03
174
175
  effective_batch: int = 32
175
176
  num_epochs: int = 2
@@ -28,7 +28,6 @@ from flash.engine.worker.verl.checkpoints import restore_verl_resume
28
28
  from flash.engine.worker.verl.parallelism import ULYSSES_SEQUENCE_PARALLEL_SIZE
29
29
 
30
30
  # todo: run the two-gpu sft smoke on the exact runpod image and command assembled below.
31
- _SFT_LORAPLUS_RATIO = 16.0
32
31
  # consecutive zero-grad-norm steps tolerated before the run is failed as untrainable (GRAD-001).
33
32
  # any nonzero grad norm is proof the backward graph is intact and resets the count. 2 is enough to
34
33
  # separate a one-off fully-masked batch from a severed graph, and keeps the wasted spend to a couple
@@ -488,6 +487,7 @@ def _write_sft_result(options, data, model, child, progress, verified, outputs)
488
487
  "device_peak_gpu_gb": device_peak_gpu_gb,
489
488
  "loraplus_optim": _VERL_OPTIMIZER_NAME,
490
489
  "loraplus_applied": progress.loraplus_applied,
490
+ "loraplus_ratio": options.loraplus_ratio,
491
491
  "verl_backend": "fsdp2",
492
492
  # sft shards by DATA -- see ULYSSES_SEQUENCE_PARALLEL_SIZE for why. fsdp splits the batch
493
493
  # across the ranks actually LAUNCHED, which is the allocated card count only when the
@@ -585,7 +585,7 @@ def run_sft_train(spec=None) -> None:
585
585
  child = _prepare_sft_child(
586
586
  options, data, model, capabilities, use_remove_padding, gdn_reset_arch
587
587
  )
588
- child_progress = _prepare_sft_progress(data, model, child)
588
+ child_progress = _prepare_sft_progress(options, data, model, child)
589
589
  progress = child_progress.values
590
590
 
591
591
  def on_line(line: str) -> None:
@@ -33,7 +33,6 @@ from flash.providers.core.base import rentable_gpu_counts
33
33
 
34
34
  RECIPE = _sft_train.RECIPE
35
35
  _MAX_ZERO_GRAD_STEPS = _sft_train._MAX_ZERO_GRAD_STEPS
36
- _SFT_LORAPLUS_RATIO = _sft_train._SFT_LORAPLUS_RATIO
37
36
  _LORAPLUS_READY_MARKER = _sft_train._LORAPLUS_READY_MARKER
38
37
  _VERL_OPTIMIZER_IMPL = _sft_train._VERL_OPTIMIZER_IMPL
39
38
  _VERL_OPTIMIZER_NAME = _sft_train._VERL_OPTIMIZER_NAME
@@ -70,6 +69,7 @@ class _SftOptions:
70
69
  model_revision: str
71
70
  epochs: int
72
71
  learning_rate: float
72
+ loraplus_ratio: float
73
73
  effective_batch: int
74
74
  max_steps: int
75
75
  save_at_steps: tuple[int, ...]
@@ -147,6 +147,7 @@ class _SftProgress:
147
147
  loss_curve: list[float]
148
148
  train_tokens: int
149
149
  loraplus_applied: bool
150
+ loraplus_ratio: float
150
151
  wandb_link: dict[str, str | None]
151
152
  # what the child plugin must prove applied; verified at the first optimizer step and again at
152
153
  # child exit.
@@ -187,6 +188,9 @@ def _resolve_sft_options(spec) -> _SftOptions:
187
188
  model_id = spec.model if spec else RECIPE.hf_model_id
188
189
  model_revision = getattr(spec, "model_revision", "") if spec else ""
189
190
  train_spec = spec.train if spec else None
191
+ # new authored sft specs persist their ratio. an unset stored value predates the option and
192
+ # must retain the 16x optimizer groups used by its checkpoint, including across further retries.
193
+ default_loraplus_ratio = 16.0 if train_spec is not None else RECIPE.sft.loraplus_ratio
190
194
 
191
195
  def train_opt(name, default):
192
196
  value = getattr(train_spec, name, None) if train_spec else None
@@ -215,6 +219,7 @@ def _resolve_sft_options(spec) -> _SftOptions:
215
219
  model_revision=model_revision,
216
220
  epochs=int(train_opt("epochs", RECIPE.sft.num_epochs)),
217
221
  learning_rate=float(train_opt("learning_rate", RECIPE.sft.learning_rate)),
222
+ loraplus_ratio=float(train_opt("loraplus_ratio", default_loraplus_ratio)),
218
223
  effective_batch=int(train_opt("batch_size", RECIPE.sft.effective_batch)),
219
224
  max_steps=int(train_opt("max_steps", 0) or 0),
220
225
  save_at_steps=tuple(getattr(train_spec, "save_at_steps", ()) or ()),
@@ -588,7 +593,7 @@ def _write_sft_child_shims(
588
593
  {
589
594
  "marker_file": shim_markers,
590
595
  "seed": int(seed),
591
- "loraplus_ratio": float(_SFT_LORAPLUS_RATIO),
596
+ "loraplus_ratio": options.loraplus_ratio,
592
597
  "loraplus_ready_marker": _LORAPLUS_READY_MARKER,
593
598
  "save_at_steps": list(options.save_at_steps),
594
599
  "total_steps": int(model.update_horizon),
@@ -758,7 +763,9 @@ def _prepare_sft_child(
758
763
  )
759
764
 
760
765
 
761
- def _prepare_sft_progress(data: _SftData, model: _SftModelSetup, child: _SftChild) -> _SftProgress:
766
+ def _prepare_sft_progress(
767
+ options: _SftOptions, data: _SftData, model: _SftModelSetup, child: _SftChild
768
+ ) -> _SftProgress:
762
769
  resume_step = child.resume_step
763
770
  progress = {"step": resume_step, "loss": None, "grad_norm": None, "lr": None}
764
771
  # consecutive steps seen with grad_norm == 0.0 at a nonzero lr. one step can legitimately be
@@ -785,7 +792,8 @@ def _prepare_sft_progress(data: _SftData, model: _SftModelSetup, child: _SftChil
785
792
  observed_grad_norms=observed_grad_norms,
786
793
  loss_curve=[],
787
794
  train_tokens=train_tokens,
788
- loraplus_applied=resume_step >= model.update_horizon,
795
+ loraplus_applied=options.loraplus_ratio > 1 and resume_step >= model.update_horizon,
796
+ loraplus_ratio=options.loraplus_ratio,
789
797
  wandb_link={},
790
798
  shim_markers=child.shim_markers,
791
799
  expected_shims=child.expected_shims,
@@ -846,7 +854,7 @@ def _consume_sft_marker_line(progress: _SftProgress, line: str) -> bool:
846
854
  if progress.expected_shims and not progress.shims_verified:
847
855
  verify_applied_shim_markers(progress.shim_markers, progress.expected_shims)
848
856
  progress.shims_verified = True
849
- if _SFT_LORAPLUS_RATIO > 1 and not progress.loraplus_applied:
857
+ if progress.loraplus_ratio > 1 and not progress.loraplus_applied:
850
858
  raise RuntimeError(
851
859
  "verl reached an optimizer step before the required lora+ shim succeeded"
852
860
  )
@@ -914,7 +922,7 @@ def _finish_sft_child(
914
922
  if progress.expected_shims and not progress.shims_verified:
915
923
  verify_applied_shim_markers(progress.shim_markers, progress.expected_shims)
916
924
  progress.shims_verified = True
917
- if _SFT_LORAPLUS_RATIO > 1 and not progress.loraplus_applied:
925
+ if progress.loraplus_ratio > 1 and not progress.loraplus_applied:
918
926
  raise RuntimeError("required lora+ shim did not emit its success marker")
919
927
  return train_wall, device_peak_gpu_gb
920
928
 
@@ -25,6 +25,7 @@ from flash.core.spec import (
25
25
  parse_seed,
26
26
  require_project_id,
27
27
  )
28
+ from flash.engine.plan.recipe import RECIPE
28
29
  from flash.providers.core.base import (
29
30
  UnsupportedGpuError,
30
31
  authored_gpu_ceiling,
@@ -297,6 +298,8 @@ def validate_train_keys_for_algorithm(train_raw: Mapping[str, Any], algorithm: s
297
298
  every spec fail to reparse its own output and break resubmit, warm-start and server reparse.
298
299
  A null is the absence of an authored value, which is exactly what the user is being asked for.
299
300
  """
301
+ if train_raw.get("loraplus_ratio") is not None and algorithm != "sft":
302
+ raise ConfigError("train.loraplus_ratio only applies to sft")
300
303
  for key, allowed in _ALGORITHM_ONLY_TRAIN_KEYS.items():
301
304
  if train_raw.get(key) is None or algorithm in allowed:
302
305
  continue
@@ -678,6 +681,10 @@ def spec_from_dict(
678
681
  )
679
682
  wandb_spec = _validate_wandb_section(raw)
680
683
 
684
+ loraplus_ratio = _train_float(train_raw, "loraplus_ratio", minimum=1.0)
685
+ if algorithm == "sft" and loraplus_ratio is None:
686
+ # freeze the new default; an absent persisted value identifies the legacy 16x optimizer.
687
+ loraplus_ratio = RECIPE.sft.loraplus_ratio
681
688
  try:
682
689
  train_spec = TrainSpec(
683
690
  epochs=_train_int(train_raw, "epochs", minimum=1),
@@ -686,6 +693,7 @@ def spec_from_dict(
686
693
  init_from_adapter=init_from_adapter,
687
694
  hf_repo="", # assigned server-side; see submit_job._assign_managed_hf_repo
688
695
  learning_rate=_train_float(train_raw, "learning_rate", minimum=0.0, exclusive=True),
696
+ loraplus_ratio=loraplus_ratio,
689
697
  batch_size=_train_int(train_raw, "batch_size", minimum=1),
690
698
  prompts_per_step=_train_int(train_raw, "prompts_per_step", minimum=1),
691
699
  max_context_tokens=_train_int(train_raw, "max_context_tokens", minimum=1),
@@ -65,7 +65,10 @@ def _train_float(
65
65
  return None
66
66
  if isinstance(v, bool) or not isinstance(v, (int, float)):
67
67
  raise ConfigError(f"train.{key} must be a number")
68
- v = float(v)
68
+ try:
69
+ v = float(v)
70
+ except OverflowError as exc:
71
+ raise ConfigError(f"train.{key} must be a finite number") from exc
69
72
  # nan/inf slip past range checks (nan compares false, inf passes any minimum).
70
73
  if not math.isfinite(v):
71
74
  raise ConfigError(f"train.{key} must be a finite number")
@@ -385,9 +385,15 @@ def _require_catalog_agreement(profile: ServingProfile) -> None:
385
385
  f"{profile.model_id} serving profile {name}={actual!r} disagrees with the "
386
386
  f"catalog capacity {expected!r}"
387
387
  )
388
+ # NB: modal_gpu is deliberately NOT checked against serving.gpu. They describe different
389
+ # planes: serving.gpu is the card the freesolo-owned hosted plane runs on, while modal_gpu is
390
+ # the card THIS customer-owned profile was live-qualified on (modal_live_qualified). The hosted
391
+ # plane moved to B200; the customer profiles stay on their qualified cards until a customer-owned
392
+ # B200 qualification runs. Engine SHAPE still has to agree -- see _CATALOG_CHECKED_FIELDS, which
393
+ # is what stops a profile serving a longer context or higher lora rank than the catalog
394
+ # advertises. The card is placement, not shape.
388
395
  for label, expected, actual in (
389
396
  ("served_model", serving.serve_model_id, profile.served_model),
390
- ("modal gpu", serving.gpu, profile.modal_gpu),
391
397
  ):
392
398
  if expected != actual:
393
399
  raise ProfileError(
@@ -93,10 +93,11 @@ HOSTING_CACHE_MOUNT = "/vol/hosting-cache"
93
93
  # below — HF/internal key, backend + Supabase URLs — stays env-configured because it is per-deploy
94
94
  # credentials, not tuning.)
95
95
  TIMEOUT_SECONDS = 600
96
- # 2700s (45 min): the 35B bf16/H200 cold boot takes ~1010s of engine init alone (67 GiB load +
97
- # ~377s torch.compile + graph capture + warmup) on top of image pull, which blows past the old 1200s
98
- # ceiling — Modal SIGTERMs the container mid-warmup and it cold-cycles forever. A higher ceiling is
99
- # harmless for the fast tiers (they still boot in a minute; this is only a kill-if-stuck bound).
96
+ # 2700s (45 min): the slowest MEASURED cold boot on the shipped B200 tiers is the 27B at 1821s
97
+ # (a cold torch.compile cache alone costs ~354s of Dynamo), on top of image pull. The old 1200s
98
+ # ceiling was already blown by the 35B's ~1010s of engine init — Modal SIGTERMs the container
99
+ # mid-warmup and it cold-cycles forever. 2700s leaves ~880s of margin over the worst measurement,
100
+ # and a higher ceiling is harmless for the fast tiers: this is only a kill-if-stuck bound.
100
101
  STARTUP_TIMEOUT_SECONDS = 2700
101
102
  # The router awaits the engine call, which on a cold base model includes vLLM startup, so its
102
103
  # timeout must cover startup + a request (else it's killed mid cold-start).
@@ -126,10 +127,14 @@ SCALEDOWN_WINDOW_SECONDS_BY_GPU: dict[str, int] = {
126
127
  # ~1010s cold boot (35B bf16, 67 GiB + ~377s torch.compile). Break-even AND a ~17-min
127
128
  # user-visible stall on a miss both argue for keeping the full window here.
128
129
  "H200": 1800,
129
- # Blackwell. No cold-boot canary has run on either card yet, so both hold the H200's window as a
130
- # placeholder: it is the longest we ship, and a too-long hold overpays for idle rather than
131
- # cold-cycling a user request. Replace each with its measured boot time when the canary runs.
132
- "B200": 1800,
130
+ # B200 now carries all three tiers. Measured cold boots (2026-08-30/31, this card): 9B 723s,
131
+ # 35B 488s, 27B 1821s. The 27B dominates because a cold torch.compile cache costs ~354s of
132
+ # Dynamo alone; warm-cache boots of the same tiers run 153-473s. Sized to the slowest MEASURED
133
+ # cold boot rather than the warm case, so a scale-out replacement is not cycled mid-boot.
134
+ "B200": 2100,
135
+ # B300 has no shipped tier. It also wedges intermittently serving above max_num_seqs (sm 10.3;
136
+ # B200 served 20/20 on the same workload), so it is not a deployment target yet -- the window
137
+ # stays a placeholder rather than a measurement.
133
138
  "B300": 1800,
134
139
  }
135
140
  # The tiers this app is allowed to run an engine on. `gpu` in the serving catalog is a plain string,
@@ -275,7 +280,7 @@ image = (
275
280
  # artifacts to VLLM_CACHE_ROOT/torch_compile_cache/<hash>/ (vllm/compilation/backends.py),
276
281
  # plus modelinfos/ and the GPU p2p cache. With MIN_CONTAINERS = 0 and a 30-minute
277
282
  # scaledown window that cost is paid on every cold start — it is the torch.compile +
278
- # graph-capture portion of the ~1010s 35B engine init measured for STARTUP_TIMEOUT_SECONDS.
283
+ # graph-capture portion of the cold boots measured for STARTUP_TIMEOUT_SECONDS.
279
284
  # vLLM's own startup benchmark DEFINES a cold start this way (benchmarks/startup.py
280
285
  # cold_startup() points VLLM_CACHE_ROOT at a fresh mkdtemp), so leaving it unset on
281
286
  # ephemeral storage reproduces that worst case involuntarily.
@@ -41,9 +41,16 @@ _USD_PER_MTOK_DIVISOR = Decimal("1000000")
41
41
  @dataclass(frozen=True)
42
42
  class AuthorizedTraffic:
43
43
  principal: ServingTrafficPrincipal
44
- openrouter_request_id: str | None = None
45
- openrouter_generation_id: str | None = None
46
- upstream_id: str | None = None
44
+
45
+
46
+ @dataclass(frozen=True)
47
+ class TrustedInternalAuthorization:
48
+ """A trusted server-to-server caller that has not yet been attributed to an organization."""
49
+
50
+ org_id: str | None = None
51
+
52
+
53
+ InferenceAuthorization = AuthorizedTraffic | TrustedInternalAuthorization
47
54
 
48
55
 
49
56
  @dataclass(frozen=True)
@@ -104,7 +111,6 @@ def new_request_identity(
104
111
  request: Request,
105
112
  *,
106
113
  openai_completion_id: str | None = None,
107
- traffic: AuthorizedTraffic | None = None,
108
114
  ) -> RequestIdentity:
109
115
  request_id = new_generation_id()
110
116
  supplied_correlation = _bounded_header(request, "X-Correlation-ID")
@@ -113,9 +119,6 @@ def new_request_identity(
113
119
  request_id=request_id,
114
120
  correlation_id=correlation_id,
115
121
  openai_completion_id=openai_completion_id,
116
- openrouter_request_id=traffic.openrouter_request_id if traffic else None,
117
- openrouter_generation_id=traffic.openrouter_generation_id if traffic else None,
118
- upstream_id=traffic.upstream_id if traffic else None,
119
122
  )
120
123
 
121
124
 
@@ -131,29 +134,13 @@ def build_usage_session(
131
134
  serving_release: str,
132
135
  captured_at: datetime,
133
136
  ) -> UsageSession:
134
- public_model_id = (
135
- principal.publicModelId if principal.kind == "openrouter" else requested.adapter_id
136
- )
137
137
  immutable_target = ImmutableTarget(
138
- public_model_id=public_model_id,
138
+ public_model_id=requested.adapter_id,
139
139
  base_model=target.base_model,
140
140
  checkpoint_id=target.adapter_id if target.is_checkpoint else None,
141
141
  artifact_fingerprint=target.artifact_fingerprint,
142
142
  )
143
- price = (
144
- CapturedPrice(
145
- source="openrouter_admission",
146
- version=principal.providerCatalogDigest,
147
- snapshot=principal.acceptedPriceSnapshot.model_dump(mode="json"),
148
- )
149
- if principal.kind == "openrouter"
150
- else freesolo_price(target.base_model)
151
- )
152
- if principal.kind == "trusted_internal" and target.org_id is not None:
153
- principal = TrustedInternalTrafficPrincipal(
154
- orgId=target.org_id,
155
- billingAttributionExplicit=True,
156
- )
143
+ price = freesolo_price(target.base_model)
157
144
  return UsageSession(
158
145
  store=store,
159
146
  identity=identity,
@@ -191,11 +178,8 @@ def principal_for_external_org(org_id: str) -> FreesoloOrgTrafficPrincipal:
191
178
  return FreesoloOrgTrafficPrincipal(orgId=org_id)
192
179
 
193
180
 
194
- def principal_for_trusted_internal(org_id: str | None = None) -> TrustedInternalTrafficPrincipal:
195
- return TrustedInternalTrafficPrincipal(
196
- orgId=org_id,
197
- billingAttributionExplicit=org_id is not None,
198
- )
181
+ def principal_for_trusted_internal(org_id: str) -> TrustedInternalTrafficPrincipal:
182
+ return TrustedInternalTrafficPrincipal(orgId=org_id)
199
183
 
200
184
 
201
185
  def captured_now() -> datetime: