freesolo-flash-dev 1.2.129__tar.gz → 1.2.130__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 (927) hide show
  1. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/PKG-INFO +1 -1
  2. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/core/catalog.py +6 -6
  3. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/deployment/profiles.py +7 -1
  4. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/app/modal_app.py +14 -9
  5. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/accounting/usage.py +14 -30
  6. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/accounting/usage_outbox.py +44 -86
  7. freesolo_flash_dev-1.2.130/flash/serving/src/accounting/usage_retry.py +13 -0
  8. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/model_config.py +33 -29
  9. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/http/context.py +39 -11
  10. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/http/headers.py +6 -0
  11. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/http/inference_routes.py +27 -11
  12. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/http/router.py +12 -2
  13. freesolo_flash_dev-1.2.130/flash/serving/src/stream_channel/__init__.py +1 -0
  14. freesolo_flash_dev-1.2.130/flash/serving/src/stream_channel/_tasks.py +121 -0
  15. freesolo_flash_dev-1.2.130/flash/serving/src/stream_channel/client.py +485 -0
  16. freesolo_flash_dev-1.2.130/flash/serving/src/stream_channel/engine.py +396 -0
  17. freesolo_flash_dev-1.2.130/flash/serving/src/stream_channel/protocol.py +467 -0
  18. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/pyproject.toml +2 -2
  19. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_base_model_serving.py +30 -2
  20. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_chat_authorizer.py +5 -2
  21. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_model_config.py +11 -11
  22. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_per_model_gpu.py +28 -30
  23. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_pre_first_disconnect.py +0 -1
  24. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_router.py +77 -2
  25. freesolo_flash_dev-1.2.130/tests/serving/test_stream_channel.py +2701 -0
  26. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_usage_outbox.py +67 -27
  27. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_usage_reporter.py +7 -2
  28. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_catalog_consistency.py +5 -5
  29. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_profiles.py +14 -1
  30. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/uv.lock +1 -1
  31. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.dockerignore +0 -0
  32. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.env.example +0 -0
  33. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/CODEOWNERS +0 -0
  34. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  35. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  36. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  37. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  38. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/dependabot.yml +0 -0
  39. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/auto-rebake.yml +0 -0
  40. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/bake-kernel-cache.yml +0 -0
  41. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/ci.yml +0 -0
  42. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/deploy-modal-dev.yml +0 -0
  43. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/deploy-modal.yml +0 -0
  44. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/dev-kernel-cache.yml +0 -0
  45. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/main-source-guard.yml +0 -0
  46. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/notify-tests-repo.yml +0 -0
  47. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  48. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/publish-dev.yml +0 -0
  49. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/publish-image.yml +0 -0
  50. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/publish-serving-image.yml +0 -0
  51. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/publish.yml +0 -0
  52. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/version-parity.yml +0 -0
  53. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.github/workflows/worker-image.yml +0 -0
  54. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/.gitignore +0 -0
  55. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/CHANGELOG.md +0 -0
  56. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/CODE_OF_CONDUCT.md +0 -0
  57. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/CONTRIBUTING.md +0 -0
  58. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/Dockerfile +0 -0
  59. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/Dockerfile.serve +0 -0
  60. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/Dockerfile.worker +0 -0
  61. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/LICENSE +0 -0
  62. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/NOTICE +0 -0
  63. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/README.md +0 -0
  64. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/SECURITY.md +0 -0
  65. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/SELF_HOSTING.md +0 -0
  66. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/build/kernel_cache/.gitignore +0 -0
  67. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/build/kernel_cache/.keep +0 -0
  68. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/deploy/infisical/README.md +0 -0
  69. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/deploy/infisical/entrypoint.sh +0 -0
  70. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docker/Dockerfile.kernelcache +0 -0
  71. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docker/Dockerfile.kernelcache.relayer +0 -0
  72. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docker/bake_kernel_cache.py +0 -0
  73. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docker/bake_pod_entry.py +0 -0
  74. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docker/extract_cudart_fix.py +0 -0
  75. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docker/kernel_fingerprint.py +0 -0
  76. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docker/make_rp_handler.py +0 -0
  77. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docker/patch_vllm_moe_lora.py +0 -0
  78. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docs/hosted-inference-load-testing.md +0 -0
  79. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/docs/serving-contract.md +0 -0
  80. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/__init__.py +0 -0
  81. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/__init__.py +0 -0
  82. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/channel.py +0 -0
  83. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/diagnostics.py +0 -0
  84. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/fileio.py +0 -0
  85. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/http.py +0 -0
  86. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/logging.py +0 -0
  87. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/openai_sse.py +0 -0
  88. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/paths.py +0 -0
  89. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/_internal/version.py +0 -0
  90. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/adapters/__init__.py +0 -0
  91. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/adapters/artifacts.py +0 -0
  92. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/adapters/fused_experts.py +0 -0
  93. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/adapters/lora_rank.py +0 -0
  94. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/adapters/targets.py +0 -0
  95. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/__init__.py +0 -0
  96. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/__main__.py +0 -0
  97. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/__init__.py +0 -0
  98. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/__init__.py +0 -0
  99. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/ops/__init__.py +0 -0
  100. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/ops/imports.py +0 -0
  101. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/ops/list.py +0 -0
  102. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/ops/push.py +0 -0
  103. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/ops/retained.py +0 -0
  104. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/ops/setup.py +0 -0
  105. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  106. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/testing/__init__.py +0 -0
  107. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/testing/episode.py +0 -0
  108. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/testing/eval.py +0 -0
  109. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/testing/eval_args.py +0 -0
  110. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/testing/evaluations.py +0 -0
  111. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/testing/params.py +0 -0
  112. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/testing/test.py +0 -0
  113. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/env/testing/warnings.py +0 -0
  114. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/__init__.py +0 -0
  115. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/account.py +0 -0
  116. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/catalog.py +0 -0
  117. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/deploy.py +0 -0
  118. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/log_follow.py +0 -0
  119. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/prompt_budget.py +0 -0
  120. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/runs.py +0 -0
  121. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/traces.py +0 -0
  122. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/train.py +0 -0
  123. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/ops/worker_output.py +0 -0
  124. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/serving/__init__.py +0 -0
  125. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/serving/deploy.py +0 -0
  126. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/serving/identity.py +0 -0
  127. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/serving/status.py +0 -0
  128. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/commands/serving/undeploy.py +0 -0
  129. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/__init__.py +0 -0
  130. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/account.py +0 -0
  131. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/env.py +0 -0
  132. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/errors.py +0 -0
  133. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/main.py +0 -0
  134. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/models.py +0 -0
  135. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/serve_parser.py +0 -0
  136. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/traces.py +0 -0
  137. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/parsing/training.py +0 -0
  138. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/scaffold/TRAINING.md +0 -0
  139. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/scaffold/__init__.py +0 -0
  140. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/ui/__init__.py +0 -0
  141. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/ui/cost.py +0 -0
  142. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/ui/env_panels.py +0 -0
  143. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/ui/heartbeat.py +0 -0
  144. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/ui/render.py +0 -0
  145. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/ui/tables.py +0 -0
  146. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cli/ui/tty.py +0 -0
  147. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/client/__init__.py +0 -0
  148. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/client/config.py +0 -0
  149. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/client/freesolo_api.py +0 -0
  150. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/client/http.py +0 -0
  151. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/client/runtime_secrets.py +0 -0
  152. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/client/shapes.py +0 -0
  153. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/client/specs.py +0 -0
  154. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/client/streaming.py +0 -0
  155. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/content/__init__.py +0 -0
  156. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/content/image_descriptors.py +0 -0
  157. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/content/multimodal.py +0 -0
  158. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/content/reasoning_normalization.py +0 -0
  159. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/content/structured_outputs.py +0 -0
  160. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/content/thinking.py +0 -0
  161. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/core/__init__.py +0 -0
  162. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/core/grpo.py +0 -0
  163. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/core/spec.py +0 -0
  164. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/core/spec_persistence.py +0 -0
  165. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cost/__init__.py +0 -0
  166. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cost/analytical.py +0 -0
  167. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cost/currency.py +0 -0
  168. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cost/facts.py +0 -0
  169. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cost/spec.py +0 -0
  170. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/cost/types.py +0 -0
  171. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/__init__.py +0 -0
  172. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/plan/__init__.py +0 -0
  173. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/plan/kv_sizing.py +0 -0
  174. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/plan/model_config_probe.py +0 -0
  175. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/plan/prompt_budget.py +0 -0
  176. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/plan/recipe.py +0 -0
  177. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/plan/steps.py +0 -0
  178. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/plan/vram.py +0 -0
  179. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/profiling/__init__.py +0 -0
  180. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/profiling/dataset_profile.py +0 -0
  181. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/profiling/image_tokens.py +0 -0
  182. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/profiling/reasoning_render.py +0 -0
  183. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/profiling/sft_image_rows.py +0 -0
  184. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/profiling/sft_workload.py +0 -0
  185. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/profiling/tokenizer.py +0 -0
  186. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/profiling/workload_profile.py +0 -0
  187. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/result/__init__.py +0 -0
  188. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/result/accounting.py +0 -0
  189. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/result/rollout_samples.py +0 -0
  190. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/support/__init__.py +0 -0
  191. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/support/huggingface.py +0 -0
  192. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/support/verl_checkpoint.py +0 -0
  193. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/support/verl_policy.py +0 -0
  194. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/support/worker_entrypoint.py +0 -0
  195. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/__init__.py +0 -0
  196. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/__main__.py +0 -0
  197. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/entry/__init__.py +0 -0
  198. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/entry/opd.py +0 -0
  199. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/entry/rl.py +0 -0
  200. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/entry/sft.py +0 -0
  201. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/entry/worker.py +0 -0
  202. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/io/__init__.py +0 -0
  203. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/io/heartbeat.py +0 -0
  204. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/io/hf.py +0 -0
  205. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/io/prefetch.py +0 -0
  206. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/io/wandb_log.py +0 -0
  207. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/model/__init__.py +0 -0
  208. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/model/adapter.py +0 -0
  209. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/model/chatml_mask.py +0 -0
  210. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/model/decoding.py +0 -0
  211. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/model/lora.py +0 -0
  212. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/model/packing.py +0 -0
  213. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/perf/__init__.py +0 -0
  214. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/perf/diagnostics.py +0 -0
  215. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/perf/lifecycle.py +0 -0
  216. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/perf/liger.py +0 -0
  217. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/perf/memory.py +0 -0
  218. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/runtime/__init__.py +0 -0
  219. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  220. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/runtime/rng.py +0 -0
  221. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/runtime/state.py +0 -0
  222. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/teacher/__init__.py +0 -0
  223. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/teacher/client.py +0 -0
  224. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/teacher/encoding.py +0 -0
  225. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
  226. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/__init__.py +0 -0
  227. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/core/__init__.py +0 -0
  228. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/core/child/__init__.py +0 -0
  229. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/core/child/glue.py +0 -0
  230. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/core/child/runtime.py +0 -0
  231. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  232. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  233. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  234. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  235. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/__init__.py +0 -0
  236. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/backend_common.py +0 -0
  237. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/opd_train.py +0 -0
  238. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/opd_train_runner.py +0 -0
  239. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  240. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/rl_train.py +0 -0
  241. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  242. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  243. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/sft_train.py +0 -0
  244. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/entry/sft_train_runner.py +0 -0
  245. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/__init__.py +0 -0
  246. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/bridging/__init__.py +0 -0
  247. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/bridging/batching.py +0 -0
  248. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/bridging/bridge.py +0 -0
  249. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/bridging/failures.py +0 -0
  250. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/bridging/prompts.py +0 -0
  251. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/bridging/scoring.py +0 -0
  252. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/__init__.py +0 -0
  253. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/bridge.py +0 -0
  254. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/entry.py +0 -0
  255. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
  256. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/plugin.py +0 -0
  257. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
  258. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/runtime.py +0 -0
  259. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/structured.py +0 -0
  260. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/child/tensors.py +0 -0
  261. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/multiturn/__init__.py +0 -0
  262. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/multiturn/media.py +0 -0
  263. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/multiturn/validation.py +0 -0
  264. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/__init__.py +0 -0
  265. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/failures.py +0 -0
  266. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/gkd.py +0 -0
  267. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/overrides.py +0 -0
  268. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/progress.py +0 -0
  269. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +0 -0
  270. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/protocol.py +0 -0
  271. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/reporting.py +0 -0
  272. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/state.py +0 -0
  273. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/opd/orchestration/validation.py +0 -0
  274. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/__init__.py +0 -0
  275. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  276. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/child/entry.py +0 -0
  277. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  278. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/child/patches.py +0 -0
  279. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/child/plugin.py +0 -0
  280. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  281. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  282. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/launch/config.py +0 -0
  283. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  284. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  285. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  286. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  287. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  288. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/rollout/reward_module.py +0 -0
  289. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  290. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  291. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/sft/__init__.py +0 -0
  292. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/sft/child/entry.py +0 -0
  293. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/sft/child/plugin.py +0 -0
  294. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  295. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  296. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/train/sft/setup/config.py +0 -0
  297. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/verl/__init__.py +0 -0
  298. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/verl/capabilities.py +0 -0
  299. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/verl/checkpoints.py +0 -0
  300. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/verl/child_io.py +0 -0
  301. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/verl/diagnostics.py +0 -0
  302. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/verl/parallelism.py +0 -0
  303. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/verl/parent_work.py +0 -0
  304. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/engine/worker/verl/process_census.py +0 -0
  305. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/__init__.py +0 -0
  306. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/loading/__init__.py +0 -0
  307. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/loading/adapter.py +0 -0
  308. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/loading/base.py +0 -0
  309. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/loading/loader.py +0 -0
  310. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/loading/pull.py +0 -0
  311. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/loading/staged.py +0 -0
  312. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/meta/__init__.py +0 -0
  313. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/meta/cache_security.py +0 -0
  314. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/meta/dataset_selection.py +0 -0
  315. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/meta/evaluations.py +0 -0
  316. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/meta/identity.py +0 -0
  317. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/meta/namespace_listing.py +0 -0
  318. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/package/__init__.py +0 -0
  319. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/package/direct_tokens.py +0 -0
  320. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/package/limits.py +0 -0
  321. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/envs/package/unpack.py +0 -0
  322. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/__init__.py +0 -0
  323. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/__init__.py +0 -0
  324. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  325. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  326. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  327. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  328. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/bootstrapping/processes.py +0 -0
  329. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  330. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/host/__init__.py +0 -0
  331. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
  332. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/host/failmark.py +0 -0
  333. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/host/hostlog.py +0 -0
  334. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  335. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/instances/instance.py +0 -0
  336. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/instances/poll.py +0 -0
  337. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  338. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/instances/provider.py +0 -0
  339. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  340. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/net/__init__.py +0 -0
  341. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/net/auth.py +0 -0
  342. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/net/deadline.py +0 -0
  343. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/net/http.py +0 -0
  344. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/_lifecycle/net/worker.py +0 -0
  345. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/artifacts/__init__.py +0 -0
  346. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/artifacts/hf.py +0 -0
  347. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/artifacts/preload_runpod.py +0 -0
  348. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/artifacts/weight_cache.py +0 -0
  349. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/core/__init__.py +0 -0
  350. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/core/allocator.py +0 -0
  351. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/core/base.py +0 -0
  352. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/core/fit_errors.py +0 -0
  353. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/core/preflight.py +0 -0
  354. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/core/realized.py +0 -0
  355. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/core/registry.py +0 -0
  356. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/core/sharding.py +0 -0
  357. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/__init__.py +0 -0
  358. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/client/__init__.py +0 -0
  359. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/client/api.py +0 -0
  360. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/client/auth.py +0 -0
  361. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/client/gpus.py +0 -0
  362. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/client/preflight.py +0 -0
  363. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/client/pricing.py +0 -0
  364. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/execution/__init__.py +0 -0
  365. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/execution/provider.py +0 -0
  366. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/jobs/__init__.py +0 -0
  367. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/jobs/builders.py +0 -0
  368. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/lambda_/jobs/reap.py +0 -0
  369. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/__init__.py +0 -0
  370. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/client/__init__.py +0 -0
  371. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/client/api.py +0 -0
  372. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/client/auth.py +0 -0
  373. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/client/cost.py +0 -0
  374. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/client/gpus.py +0 -0
  375. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/client/preflight.py +0 -0
  376. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/client/pricing.py +0 -0
  377. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/execution/__init__.py +0 -0
  378. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/execution/job_execution.py +0 -0
  379. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/execution/jobs.py +0 -0
  380. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/execution/polling.py +0 -0
  381. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/execution/provider.py +0 -0
  382. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/execution/resources.py +0 -0
  383. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/serverless/__init__.py +0 -0
  384. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/serverless/endpoints.py +0 -0
  385. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/runpod/serverless/naming.py +0 -0
  386. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/__init__.py +0 -0
  387. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/client/__init__.py +0 -0
  388. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/client/api.py +0 -0
  389. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/client/auth.py +0 -0
  390. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/client/preflight.py +0 -0
  391. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/client/pricing.py +0 -0
  392. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/client/result.py +0 -0
  393. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/execution/__init__.py +0 -0
  394. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/execution/provider.py +0 -0
  395. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/jobs/__init__.py +0 -0
  396. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/providers/vast/jobs/builders.py +0 -0
  397. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/py.typed +0 -0
  398. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/__init__.py +0 -0
  399. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/accounting/__init__.py +0 -0
  400. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/accounting/artifacts.py +0 -0
  401. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/accounting/costs.py +0 -0
  402. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/accounting/reconciliation.py +0 -0
  403. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/accounting/weight_cache.py +0 -0
  404. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/__init__.py +0 -0
  405. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/attempts.py +0 -0
  406. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/claim_lock.py +0 -0
  407. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/deadlines.py +0 -0
  408. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/preparation.py +0 -0
  409. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/reporting.py +0 -0
  410. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/state.py +0 -0
  411. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/status.py +0 -0
  412. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/lifecycle/submit.py +0 -0
  413. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/results/__init__.py +0 -0
  414. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/results/checkpoints.py +0 -0
  415. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/results/verified_revisions.py +0 -0
  416. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/__init__.py +0 -0
  417. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/attach.py +0 -0
  418. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/attach_reconcile.py +0 -0
  419. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/attempt_supervision.py +0 -0
  420. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/deploy.py +0 -0
  421. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/errors.py +0 -0
  422. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/lifecycle.py +0 -0
  423. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/recovery.py +0 -0
  424. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/retry_decision.py +0 -0
  425. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runner/supervise/transitions.py +0 -0
  426. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runtime_capsule/__init__.py +0 -0
  427. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runtime_capsule/build.py +0 -0
  428. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runtime_capsule/manifest.py +0 -0
  429. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/runtime_capsule/profiles.py +0 -0
  430. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/schema/__init__.py +0 -0
  431. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/schema/fields.py +0 -0
  432. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/__init__.py +0 -0
  433. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/__init__.py +0 -0
  434. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/__main__.py +0 -0
  435. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/bootstrap.py +0 -0
  436. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/chat_stream.py +0 -0
  437. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/http.py +0 -0
  438. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/launch.py +0 -0
  439. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/manifest.py +0 -0
  440. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/materialize.py +0 -0
  441. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/openai.py +0 -0
  442. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/app/progress.py +0 -0
  443. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/contract/__init__.py +0 -0
  444. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/contract/errors.py +0 -0
  445. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/contract/protocol.py +0 -0
  446. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/contract/provenance.py +0 -0
  447. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/contract/responses.py +0 -0
  448. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/contract/urls.py +0 -0
  449. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/control/__init__.py +0 -0
  450. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/control/_canonical.py +0 -0
  451. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/control/_serialization.py +0 -0
  452. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/control/_urls.py +0 -0
  453. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/control/credentials.py +0 -0
  454. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/control/planning.py +0 -0
  455. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/control/types.py +0 -0
  456. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/deployment/__init__.py +0 -0
  457. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/deployment/adapter_check.py +0 -0
  458. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/deployment/deploy.py +0 -0
  459. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/deployment/export.py +0 -0
  460. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/deployment/preflight.py +0 -0
  461. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/deployment/readiness.py +0 -0
  462. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/deployment/resolve.py +0 -0
  463. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/__init__.py +0 -0
  464. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/common/__init__.py +0 -0
  465. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/common/records.py +0 -0
  466. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/__init__.py +0 -0
  467. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  468. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  469. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  470. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  471. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  472. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  473. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  474. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  475. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  476. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  477. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  478. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  479. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  480. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/__init__.py +0 -0
  481. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/openai.py +0 -0
  482. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/runtime_support.py +0 -0
  483. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/streaming.py +0 -0
  484. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/text_scan.py +0 -0
  485. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/thinking.py +0 -0
  486. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/tool_calls.py +0 -0
  487. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/tool_template.py +0 -0
  488. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/transport.py +0 -0
  489. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/request/validation.py +0 -0
  490. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/__init__.py +0 -0
  491. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/adapters.py +0 -0
  492. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/engine.py +0 -0
  493. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/errors.py +0 -0
  494. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/multimodal.py +0 -0
  495. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/prompt.py +0 -0
  496. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/sampling.py +0 -0
  497. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/structured_outputs.py +0 -0
  498. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/tool_calls.py +0 -0
  499. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serve/runtime/types.py +0 -0
  500. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/__init__.py +0 -0
  501. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/__main__.py +0 -0
  502. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/asgi/__init__.py +0 -0
  503. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/asgi/app.py +0 -0
  504. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/asgi/cli.py +0 -0
  505. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/billing/__init__.py +0 -0
  506. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/billing/charges.py +0 -0
  507. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/billing/retry.py +0 -0
  508. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/__init__.py +0 -0
  509. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/ops/__init__.py +0 -0
  510. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/ops/reconcile.py +0 -0
  511. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/ops/repo_cleanup.py +0 -0
  512. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/ops/serving_resources.py +0 -0
  513. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/registry/__init__.py +0 -0
  514. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/registry/checkpoints.py +0 -0
  515. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/registry/environment_registry.py +0 -0
  516. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/registry/envs.py +0 -0
  517. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/registry/projects.py +0 -0
  518. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/registry/runs.py +0 -0
  519. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/teacher/__init__.py +0 -0
  520. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/teacher/broker.py +0 -0
  521. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/teacher/errors.py +0 -0
  522. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/domain/teacher/requests.py +0 -0
  523. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/platform/__init__.py +0 -0
  524. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/platform/auth.py +0 -0
  525. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/platform/db.py +0 -0
  526. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/platform/deps.py +0 -0
  527. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/platform/internal_client.py +0 -0
  528. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/platform/locks.py +0 -0
  529. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/platform/runtime.py +0 -0
  530. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/__init__.py +0 -0
  531. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/envs.py +0 -0
  532. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/meta.py +0 -0
  533. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/runs.py +0 -0
  534. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/serving.py +0 -0
  535. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/serving_chat.py +0 -0
  536. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/serving_completion.py +0 -0
  537. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/serving_revisions.py +0 -0
  538. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/serving_smoke.py +0 -0
  539. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/server/routes/teacher.py +0 -0
  540. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/__init__.py +0 -0
  541. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/app/README.md +0 -0
  542. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/app/__init__.py +0 -0
  543. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/__init__.py +0 -0
  544. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/__main__.py +0 -0
  545. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/artifacts.py +0 -0
  546. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/cli.py +0 -0
  547. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/metrics.py +0 -0
  548. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/protocol.py +0 -0
  549. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/runner.py +0 -0
  550. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/schedule.py +0 -0
  551. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/loadtest/schema.py +0 -0
  552. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/promotion/__init__.py +0 -0
  553. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/promotion/canary.py +0 -0
  554. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/promotion/evidence.py +0 -0
  555. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/promotion/gate.py +0 -0
  556. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/__init__.py +0 -0
  557. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/accounting/__init__.py +0 -0
  558. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/accounting/usage_facts.py +0 -0
  559. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/__init__.py +0 -0
  560. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/boot.py +0 -0
  561. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/errors.py +0 -0
  562. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/generation.py +0 -0
  563. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/lora_engine.py +0 -0
  564. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/lora_entries.py +0 -0
  565. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/prequant_config.py +0 -0
  566. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/engine/support.py +0 -0
  567. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/http/__init__.py +0 -0
  568. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/http/adapter_routes.py +0 -0
  569. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/http/body_limit.py +0 -0
  570. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/http/routing.py +0 -0
  571. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/__init__.py +0 -0
  572. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/multimodal.py +0 -0
  573. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/openai_request.py +0 -0
  574. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/openai_stream.py +0 -0
  575. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/provenance.py +0 -0
  576. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/requests.py +0 -0
  577. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/responses.py +0 -0
  578. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/schemas.py +0 -0
  579. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/streaming.py +0 -0
  580. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/io/structured_outputs.py +0 -0
  581. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/__init__.py +0 -0
  582. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/access.py +0 -0
  583. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/lookup.py +0 -0
  584. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/persisted_columns.py +0 -0
  585. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/persistence.py +0 -0
  586. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/registration.py +0 -0
  587. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/registry.py +0 -0
  588. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/settings.py +0 -0
  589. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/supabase_rest.py +0 -0
  590. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/serving/src/store/undeploy.py +0 -0
  591. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/snapshot/__init__.py +0 -0
  592. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/snapshot/archive.py +0 -0
  593. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/teacher/__init__.py +0 -0
  594. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/teacher/limits.py +0 -0
  595. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/teacher/provider_status.py +0 -0
  596. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/flash/teacher/retry_contract.py +0 -0
  597. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/scripts/build_dev_dist.py +0 -0
  598. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/scripts/check_file_size.py +0 -0
  599. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/scripts/check_function_size.py +0 -0
  600. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/scripts/check_rollout_identity_actor.py +0 -0
  601. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/scripts/check_source_layout.py +0 -0
  602. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/scripts/check_verl_pin_exists.py +0 -0
  603. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/scripts/qualify_serving_profile.py +0 -0
  604. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/scripts/scrub_history.sh +0 -0
  605. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/serve_launch.py +0 -0
  606. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/__init__.py +0 -0
  607. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/__init__.py +0 -0
  608. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/chat_provenance.py +0 -0
  609. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/chat_transport.py +0 -0
  610. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/managed_chat.py +0 -0
  611. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/profile.py +0 -0
  612. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/runner.py +0 -0
  613. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/server_api_plugin.py +0 -0
  614. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/source_snapshot.py +0 -0
  615. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/specs.py +0 -0
  616. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/teacher.py +0 -0
  617. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/vast.py +0 -0
  618. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/_helpers/wire_headers.py +0 -0
  619. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/capture_image_sft_processor_oracle.py +0 -0
  620. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/capture_qwen38_27b_metadata.py +0 -0
  621. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/conftest.py +0 -0
  622. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  623. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  624. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  625. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  626. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  627. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  628. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/live/__init__.py +0 -0
  629. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/live/conftest.py +0 -0
  630. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/live/test_lambda_live.py +0 -0
  631. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/live/test_runpod_live.py +0 -0
  632. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/live/test_sft_thinking_render_live.py +0 -0
  633. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/live/test_vast_live.py +0 -0
  634. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/checkpoint_fixtures.py +0 -0
  635. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/conftest.py +0 -0
  636. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/hosted_loadtest_fake_scenario.json +0 -0
  637. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_chat_auth.py +0 -0
  638. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
  639. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_checkpoint_model_validation.py +0 -0
  640. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_engine_error_status.py +0 -0
  641. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_fp8_config.py +0 -0
  642. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_immutable_engine.py +0 -0
  643. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_immutable_revisions.py +0 -0
  644. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_immutable_schemas.py +0 -0
  645. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_loadtest_artifacts.py +0 -0
  646. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_loadtest_metrics.py +0 -0
  647. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_loadtest_protocol.py +0 -0
  648. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_loadtest_runner.py +0 -0
  649. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_loadtest_schedule.py +0 -0
  650. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_loadtest_schema.py +0 -0
  651. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_mirror_sampling_parity.py +0 -0
  652. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_modal_deploy_identity.py +0 -0
  653. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_modal_image_paths.py +0 -0
  654. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_multimodal.py +0 -0
  655. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_openai_stream_options.py +0 -0
  656. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_persistence.py +0 -0
  657. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_prequant_config.py +0 -0
  658. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_promotion_canary.py +0 -0
  659. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_promotion_evidence.py +0 -0
  660. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_promotion_gate.py +0 -0
  661. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_registry.py +0 -0
  662. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_registry_coverage.py +0 -0
  663. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_request_body_limit.py +0 -0
  664. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_router_coverage.py +0 -0
  665. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_router_edge_coverage.py +0 -0
  666. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_schemas_coverage.py +0 -0
  667. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_serve_reasoning_split.py +0 -0
  668. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_serve_structured_outputs.py +0 -0
  669. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_serve_thinking.py +0 -0
  670. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_settings.py +0 -0
  671. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_structured_outputs.py +0 -0
  672. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_structured_outputs_coverage.py +0 -0
  673. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving/test_supabase_rest_coverage.py +0 -0
  674. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving_conformance/__init__.py +0 -0
  675. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving_conformance/conftest.py +0 -0
  676. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/serving_conformance/test_contract.py +0 -0
  677. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_accounting_coverage.py +0 -0
  678. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_adapter_shard_completeness.py +0 -0
  679. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_agent_flash_cli_contract.py +0 -0
  680. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_algorithms.py +0 -0
  681. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_allocator.py +0 -0
  682. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_authenticated_redirects.py +0 -0
  683. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_backend_common.py +0 -0
  684. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_backend_jobspec_contract.py +0 -0
  685. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_bake_kernel_cache.py +0 -0
  686. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_base_model_provenance.py +0 -0
  687. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_billing_retry.py +0 -0
  688. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_bootstrap_process_groups.py +0 -0
  689. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_build_context_contract.py +0 -0
  690. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cancel_remote.py +0 -0
  691. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_capture_qwen38_metadata.py +0 -0
  692. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_catalog_only_models.py +0 -0
  693. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_charge_pricing.py +0 -0
  694. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_chat_foundations.py +0 -0
  695. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_checkpoint_lifecycle.py +0 -0
  696. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_checkpoints.py +0 -0
  697. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_commands.py +0 -0
  698. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_commands_coverage.py +0 -0
  699. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_credential_shadowing.py +0 -0
  700. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_errors.py +0 -0
  701. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_estimate.py +0 -0
  702. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_gpus_flag.py +0 -0
  703. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_help.py +0 -0
  704. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_main_coverage.py +0 -0
  705. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_managed.py +0 -0
  706. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_render_coverage.py +0 -0
  707. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_render_theme.py +0 -0
  708. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_serve_deploy.py +0 -0
  709. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_serve_status.py +0 -0
  710. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_serve_undeploy.py +0 -0
  711. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_traces.py +0 -0
  712. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cli_wandb_warning.py +0 -0
  713. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_client.py +0 -0
  714. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_client_import_purity.py +0 -0
  715. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_client_server_integration.py +0 -0
  716. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_client_stream_reads.py +0 -0
  717. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_config_env_vars.py +0 -0
  718. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_config_overrides.py +0 -0
  719. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_console_upload.py +0 -0
  720. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_controlled_experiment_repairs.py +0 -0
  721. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cost_analytical.py +0 -0
  722. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cost_currency.py +0 -0
  723. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cost_equation.py +0 -0
  724. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cost_estimate.py +0 -0
  725. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cost_hardware.py +0 -0
  726. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_cost_models.py +0 -0
  727. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_dataset_profile.py +0 -0
  728. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_deploy_latency.py +0 -0
  729. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_dev_channel.py +0 -0
  730. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_disk_gb.py +0 -0
  731. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_endpoint_name.py +0 -0
  732. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_cache_evict.py +0 -0
  733. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_delete.py +0 -0
  734. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_download.py +0 -0
  735. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_download_api.py +0 -0
  736. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_evaluations.py +0 -0
  737. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_git_auth.py +0 -0
  738. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_list_api.py +0 -0
  739. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_list_cli.py +0 -0
  740. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_list_hub.py +0 -0
  741. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_no_install.py +0 -0
  742. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_publish.py +0 -0
  743. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_pull.py +0 -0
  744. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_pull_coverage.py +0 -0
  745. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_pull_loader_coverage.py +0 -0
  746. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_pull_managed_control_plane.py +0 -0
  747. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_push.py +0 -0
  748. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_rate_limit_resolve.py +0 -0
  749. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_ref_pinning.py +0 -0
  750. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_env_test.py +0 -0
  751. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_envs_coverage.py +0 -0
  752. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_export.py +0 -0
  753. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_flash_mvp.py +0 -0
  754. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_flash_worker.py +0 -0
  755. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_flashinfer_cache_dirs.py +0 -0
  756. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_freesolo_api_transport.py +0 -0
  757. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_fused_expert_warmstart.py +0 -0
  758. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_github_urlopen_retry.py +0 -0
  759. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_gpu_type_single_field.py +0 -0
  760. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_gpus.py +0 -0
  761. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_grpo_checkpoint_durability.py +0 -0
  762. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_grpo_params.py +0 -0
  763. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_grpo_process_census.py +0 -0
  764. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_grpo_resident_sizing.py +0 -0
  765. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_grpo_reward_batching.py +0 -0
  766. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_grpo_rollout_contract.py +0 -0
  767. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_grpo_rollout_identity.py +0 -0
  768. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_health_liveness.py +0 -0
  769. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_hf_retry.py +0 -0
  770. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_idle_endpoint_reaper.py +0 -0
  771. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_image_environment_capability.py +0 -0
  772. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_image_incremental_processor.py +0 -0
  773. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_image_sft_markers.py +0 -0
  774. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_image_sft_processor_parity.py +0 -0
  775. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_image_tokens.py +0 -0
  776. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_infisical_secrets.py +0 -0
  777. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_instance_bootstrap_coverage.py +0 -0
  778. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_internal_client.py +0 -0
  779. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_jobs.py +0 -0
  780. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_kernel_cache.py +0 -0
  781. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_kernel_fingerprint.py +0 -0
  782. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_kv_util.py +0 -0
  783. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_lambda_api_coverage.py +0 -0
  784. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_lambda_runner.py +0 -0
  785. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_logging.py +0 -0
  786. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_login_perms.py +0 -0
  787. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_lora_rank_coverage.py +0 -0
  788. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_lora_rank_nested_rung.py +0 -0
  789. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_lora_rank_preflight.py +0 -0
  790. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_lora_targeting.py +0 -0
  791. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_lora_targeting_pinned_verl.py +0 -0
  792. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_managed_config_fields.py +0 -0
  793. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_managed_hf_repo.py +0 -0
  794. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_metrics_schema_agent_contract.py +0 -0
  795. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_mig_guard.py +0 -0
  796. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_mirror_sampling_parity.py +0 -0
  797. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_multi_gpu_gate.py +0 -0
  798. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_multimodal_training.py +0 -0
  799. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_named_reward_metrics.py +0 -0
  800. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_oom_escalate_gpu.py +0 -0
  801. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_opd.py +0 -0
  802. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_opd_limits.py +0 -0
  803. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_opd_multiturn_eos_boundary.py +0 -0
  804. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_opd_multiturn_failure_exit.py +0 -0
  805. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_opd_replay_guard.py +0 -0
  806. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_opd_resume_safety.py +0 -0
  807. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_opd_train.py +0 -0
  808. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_orchestrator_flash.py +0 -0
  809. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_packing.py +0 -0
  810. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_packing_coverage.py +0 -0
  811. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_parasail_teacher.py +0 -0
  812. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_persisted_spec_envelope.py +0 -0
  813. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_poll_helpers.py +0 -0
  814. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_preflight.py +0 -0
  815. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_projects.py +0 -0
  816. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_prompt_budget.py +0 -0
  817. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_provider_preflight_coverage.py +0 -0
  818. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_provider_routing.py +0 -0
  819. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_provider_teardown_robustness.py +0 -0
  820. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_providers_symmetry.py +0 -0
  821. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_realized_cost.py +0 -0
  822. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_repo_cleanup.py +0 -0
  823. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_resolve_params_b.py +0 -0
  824. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_resume_on_retry.py +0 -0
  825. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_retry_decision.py +0 -0
  826. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_rl_train.py +0 -0
  827. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_rollout_samples.py +0 -0
  828. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_run_registry_lifecycle.py +0 -0
  829. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_runmgmt.py +0 -0
  830. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_runpod_api_delete.py +0 -0
  831. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_runpod_key_fingerprint.py +0 -0
  832. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_runpod_key_waterfall.py +0 -0
  833. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_runtime_capsule.py +0 -0
  834. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve.py +0 -0
  835. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_app_bootstrap_http.py +0 -0
  836. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_app_launch.py +0 -0
  837. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_app_manifest.py +0 -0
  838. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_app_materialize.py +0 -0
  839. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_app_packaging.py +0 -0
  840. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_app_progress.py +0 -0
  841. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_chat_transport.py +0 -0
  842. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_control.py +0 -0
  843. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_docs.py +0 -0
  844. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_modal_contract_lock.py +0 -0
  845. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_modal_sdk.py +0 -0
  846. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  847. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_modal_teardown_identity.py +0 -0
  848. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_profile_qualification.py +0 -0
  849. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_provisioning_common.py +0 -0
  850. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_provisioning_modal.py +0 -0
  851. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_reasoning_content.py +0 -0
  852. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_resolve_provenance.py +0 -0
  853. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_runtime_adapters.py +0 -0
  854. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_runtime_engine.py +0 -0
  855. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_runtime_package.py +0 -0
  856. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serve_runtime_types.py +0 -0
  857. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_api.py +0 -0
  858. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_app_coverage.py +0 -0
  859. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_auth_singleflight.py +0 -0
  860. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_billing.py +0 -0
  861. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_checkpoints_coverage.py +0 -0
  862. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_db.py +0 -0
  863. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_envs_coverage.py +0 -0
  864. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_locks_coverage.py +0 -0
  865. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_managed_chat_requests.py +0 -0
  866. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_serving_resources.py +0 -0
  867. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_server_standalone.py +0 -0
  868. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serving_conformance_gate.py +0 -0
  869. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serving_context_preflight.py +0 -0
  870. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serving_contract.py +0 -0
  871. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_serving_schema_coverage.py +0 -0
  872. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_sft_chunked_nll.py +0 -0
  873. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_sft_example_selection.py +0 -0
  874. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_sft_gc_off.py +0 -0
  875. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_sft_max_context.py +0 -0
  876. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_sft_step_floor.py +0 -0
  877. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_sft_train.py +0 -0
  878. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_sft_workload.py +0 -0
  879. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_source_attestation_flow.py +0 -0
  880. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_source_layout.py +0 -0
  881. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_source_snapshot.py +0 -0
  882. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_spec_and_validation.py +0 -0
  883. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_spec_contract_bytes.py +0 -0
  884. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_staged_environment.py +0 -0
  885. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_step_floor.py +0 -0
  886. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_step_metrics.py +0 -0
  887. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_step_timing.py +0 -0
  888. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_structured_outputs.py +0 -0
  889. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_teacher_broker.py +0 -0
  890. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_teacher_encoding_contract.py +0 -0
  891. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_terminal_artifacts.py +0 -0
  892. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_thinking_config.py +0 -0
  893. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_tool_call_exact_parsing.py +0 -0
  894. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_train_context_preflight.py +0 -0
  895. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_training_controls.py +0 -0
  896. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_type_comment_prose.py +0 -0
  897. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vast_api.py +0 -0
  898. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vast_api_coverage.py +0 -0
  899. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vast_offers.py +0 -0
  900. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vast_provider_coverage.py +0 -0
  901. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vast_result.py +0 -0
  902. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vast_runner.py +0 -0
  903. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_verified_revisions.py +0 -0
  904. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_verifiers.py +0 -0
  905. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_verl_checkpoint_export.py +0 -0
  906. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_verl_child_plugins.py +0 -0
  907. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_verl_silence_watchdog.py +0 -0
  908. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_version.py +0 -0
  909. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  910. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vllm_moe_lora_backport.py +0 -0
  911. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_vram_architecture.py +0 -0
  912. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_wandb_link.py +0 -0
  913. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_wandb_naming.py +0 -0
  914. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_warmstart_adapter_download.py +0 -0
  915. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_warmstart_cross_repo.py +0 -0
  916. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_warmstart_error_attribution.py +0 -0
  917. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_warmstart_image_adapters.py +0 -0
  918. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_weight_cache.py +0 -0
  919. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_worker_dryrun.py +0 -0
  920. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_worker_hardexit.py +0 -0
  921. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_worker_image.py +0 -0
  922. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_worker_init_heartbeat.py +0 -0
  923. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_worker_stack.py +0 -0
  924. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_worker_thinking.py +0 -0
  925. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_workflow_contracts.py +0 -0
  926. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/tests/test_workload_profile.py +0 -0
  927. {freesolo_flash_dev-1.2.129 → freesolo_flash_dev-1.2.130}/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.130
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,
@@ -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:
@@ -10,17 +10,16 @@ import uuid
10
10
  from collections.abc import Awaitable, Callable, Mapping, Sequence
11
11
  from dataclasses import dataclass
12
12
  from datetime import UTC, date, datetime, timedelta
13
- from decimal import Decimal
14
13
  from typing import Annotated, Any, Literal, Protocol
15
14
 
16
15
  import httpx
17
- from pydantic import BaseModel, ConfigDict, Field, StringConstraints, model_validator
16
+ from pydantic import BaseModel, ConfigDict, Field, StringConstraints
18
17
 
18
+ from flash.serving.src.accounting.usage_retry import is_transient_rpc_code
19
19
  from flash.serving.src.store.settings import Settings
20
20
  from flash.serving.src.store.supabase_rest import supabase_headers
21
21
 
22
22
  StableId = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, max_length=512)]
23
- DecimalString = Annotated[str, StringConstraints(pattern=r"^(0|[1-9][0-9]*)(\.[0-9]+)?$")]
24
23
  _GENERATION_ID_RE = re.compile(r"^fsgen-[0-9a-f]{32}$")
25
24
  _HEARTBEAT_BATCH_SIZE = 128
26
25
  _RECOVERY_BATCH_SIZE = 500
@@ -41,24 +40,6 @@ _RESPONSE_LOSS_SAFE_RPCS = frozenset(
41
40
  )
42
41
 
43
42
 
44
- class AcceptedPriceSnapshot(BaseModel):
45
- model_config = ConfigDict(frozen=True, extra="forbid")
46
-
47
- promptTokenUsd: DecimalString
48
- cachedPromptTokenUsd: DecimalString | None = None
49
- completionTokenUsd: DecimalString
50
- requestUsd: DecimalString | None = None
51
-
52
-
53
- class OpenRouterTrafficPrincipal(BaseModel):
54
- model_config = ConfigDict(frozen=True, extra="forbid")
55
-
56
- kind: Literal["openrouter"] = "openrouter"
57
- publicModelId: StableId
58
- providerCatalogDigest: StableId
59
- acceptedPriceSnapshot: AcceptedPriceSnapshot
60
-
61
-
62
43
  class FreesoloOrgTrafficPrincipal(BaseModel):
63
44
  model_config = ConfigDict(frozen=True, extra="forbid")
64
45
 
@@ -70,18 +51,12 @@ class TrustedInternalTrafficPrincipal(BaseModel):
70
51
  model_config = ConfigDict(frozen=True, extra="forbid")
71
52
 
72
53
  kind: Literal["trusted_internal"] = "trusted_internal"
73
- orgId: StableId | None = None
74
- billingAttributionExplicit: bool = False
75
-
76
- @model_validator(mode="after")
77
- def validate_attribution(self) -> TrustedInternalTrafficPrincipal:
78
- if self.orgId is not None and not self.billingAttributionExplicit:
79
- raise ValueError("trusted_internal org billing requires explicit attribution")
80
- return self
54
+ orgId: StableId
55
+ billingAttributionExplicit: Literal[True] = True
81
56
 
82
57
 
83
58
  ServingTrafficPrincipal = Annotated[
84
- OpenRouterTrafficPrincipal | FreesoloOrgTrafficPrincipal | TrustedInternalTrafficPrincipal,
59
+ FreesoloOrgTrafficPrincipal | TrustedInternalTrafficPrincipal,
85
60
  Field(discriminator="kind"),
86
61
  ]
87
62
 
@@ -91,9 +66,6 @@ class RequestIdentity:
91
66
  request_id: str
92
67
  correlation_id: str
93
68
  openai_completion_id: str | None = None
94
- openrouter_request_id: str | None = None
95
- openrouter_generation_id: str | None = None
96
- upstream_id: str | None = None
97
69
 
98
70
  def __post_init__(self) -> None:
99
71
  if _GENERATION_ID_RE.fullmatch(self.request_id) is None:
@@ -103,9 +75,6 @@ class RequestIdentity:
103
75
  for value in (
104
76
  self.correlation_id,
105
77
  self.openai_completion_id,
106
- self.openrouter_request_id,
107
- self.openrouter_generation_id,
108
- self.upstream_id,
109
78
  )
110
79
  if value is not None
111
80
  }
@@ -126,7 +95,6 @@ class CapturedPrice:
126
95
  source: str
127
96
  version: str
128
97
  snapshot: Mapping[str, Any]
129
- quoted_provider_amount_micro_usd: int | None = None
130
98
 
131
99
 
132
100
  @dataclass(frozen=True)
@@ -161,28 +129,16 @@ class UsageEvent:
161
129
 
162
130
  def rpc_payload(self) -> dict[str, Any]:
163
131
  principal = self.principal
164
- openrouter = principal if principal.kind == "openrouter" else None
165
- org_id = None if principal.kind == "openrouter" else principal.orgId
166
- explicit = (
167
- principal.billingAttributionExplicit if principal.kind == "trusted_internal" else False
168
- )
169
- accepted = openrouter.acceptedPriceSnapshot.model_dump(mode="json") if openrouter else None
170
132
  return {
171
133
  "request_id": self.identity.request_id,
172
134
  "correlation_id": self.identity.correlation_id,
173
135
  "traffic_principal_kind": principal.kind,
174
- "billing_attribution_explicit": explicit,
175
- "org_id": org_id,
176
- "traffic_source": "openrouter" if openrouter else "freesolo",
177
- "openrouter_request_id": self.identity.openrouter_request_id,
178
- "openrouter_generation_id": self.identity.openrouter_generation_id,
136
+ "billing_attribution_explicit": principal.kind == "trusted_internal",
137
+ "org_id": principal.orgId,
179
138
  "openai_completion_id": self.identity.openai_completion_id,
180
- "upstream_id": self.identity.upstream_id,
181
- "public_model_id": (
182
- openrouter.publicModelId if openrouter else self.target.public_model_id
183
- ),
139
+ "public_model_id": self.target.public_model_id,
184
140
  "base_model": self.target.base_model,
185
- "checkpoint_id": None if openrouter else self.target.checkpoint_id,
141
+ "checkpoint_id": self.target.checkpoint_id,
186
142
  "artifact_fingerprint": self.target.artifact_fingerprint,
187
143
  "prompt_tokens": self.facts.prompt_tokens,
188
144
  "completion_tokens": self.facts.completion_tokens,
@@ -214,9 +170,6 @@ class UsageEvent:
214
170
  "pricing_source": self.price.source,
215
171
  "price_version": self.price.version,
216
172
  "price_snapshot": dict(self.price.snapshot),
217
- "quoted_provider_amount_micro_usd": self.price.quoted_provider_amount_micro_usd,
218
- "provider_catalog_digest": (openrouter.providerCatalogDigest if openrouter else None),
219
- "accepted_price_snapshot": accepted,
220
173
  }
221
174
 
222
175
 
@@ -249,6 +202,7 @@ class ReconciliationUnavailable(UsageOutboxError):
249
202
  class UsageStore(Protocol):
250
203
  enabled: bool
251
204
 
205
+ def assert_healthy(self) -> None: ...
252
206
  async def start(self) -> None: ...
253
207
  async def capture(self, event: UsageEvent) -> None: ...
254
208
  async def finalize(self, event: UsageEvent) -> None: ...
@@ -264,6 +218,9 @@ class OfflineUsageStore:
264
218
 
265
219
  enabled = False
266
220
 
221
+ def assert_healthy(self) -> None:
222
+ return None
223
+
267
224
  async def start(self) -> None:
268
225
  return None
269
226
 
@@ -438,6 +395,15 @@ class DurableUsageOutbox:
438
395
  self._active_leases: set[str] = set()
439
396
  self._background_error: BaseException | None = None
440
397
 
398
+ def assert_healthy(self) -> None:
399
+ self._raise_background_error()
400
+ if self._stopping.is_set():
401
+ raise UsageOutboxError("usage_outbox_not_accepting_requests")
402
+ if self._worker is not None and self._worker.done():
403
+ raise UsageOutboxError("usage_outbox_worker_stopped")
404
+ if self._heartbeat_worker is not None and self._heartbeat_worker.done():
405
+ raise UsageOutboxError("usage_outbox_heartbeat_stopped")
406
+
441
407
  async def start(self) -> None:
442
408
  if self._worker is not None:
443
409
  return
@@ -470,7 +436,9 @@ class DurableUsageOutbox:
470
436
  async def _terminal_rpc(
471
437
  self, name: str, event: UsageEvent, *, failure_code: str | None = None
472
438
  ) -> None:
473
- self._raise_background_error()
439
+ # a background delivery failure refuses NEW work at admission; it must not refuse to
440
+ # settle work already performed. the terminal rpcs are idempotent, so attempting one after
441
+ # the worker died is safe, while skipping it drops the charge for a served request.
474
442
  request_id = event.identity.request_id
475
443
  self._terminal_generations.add(request_id)
476
444
  try:
@@ -655,7 +623,15 @@ class DurableUsageOutbox:
655
623
  self._wake.set()
656
624
  except asyncio.CancelledError:
657
625
  raise
658
- except Exception:
626
+ except Exception as exc:
627
+ # a non-transient delivery failure is a settlement defect, not a blip. keep it
628
+ # instead of looping forever so the health gate can refuse new chargeable traffic.
629
+ if not _is_transient_rpc_error(exc):
630
+ self._background_error = exc
631
+ self._stopping.set()
632
+ self._wake.set()
633
+ self._heartbeat_wake.set()
634
+ return
659
635
  await self._sleep(self._poll_seconds)
660
636
  if self._wake.is_set():
661
637
  continue
@@ -704,7 +680,7 @@ class DurableUsageOutbox:
704
680
  except asyncio.CancelledError:
705
681
  raise
706
682
  except Exception as exc:
707
- if not _is_transient_heartbeat_error(exc):
683
+ if not _is_transient_rpc_error(exc):
708
684
  raise
709
685
  active_deadlines = [
710
686
  deadline
@@ -922,17 +898,8 @@ class DurableUsageOutbox:
922
898
  raise UsageOutboxError("usage_outbox_shutdown_failed") from errors[0]
923
899
 
924
900
 
925
- def _is_transient_heartbeat_error(exc: BaseException) -> bool:
926
- if not isinstance(exc, UsageOutboxError):
927
- return False
928
- code = str(exc)
929
- if code == "supabase_transport_failure":
930
- return True
931
- match = re.fullmatch(r"supabase_rpc_([0-9]{3})", code)
932
- if match is None:
933
- return False
934
- status_code = int(match.group(1))
935
- return status_code in {408, 429} or status_code >= 500
901
+ def _is_transient_rpc_error(exc: BaseException) -> bool:
902
+ return isinstance(exc, UsageOutboxError) and is_transient_rpc_code(str(exc))
936
903
 
937
904
 
938
905
  def _generation_capture_result(data: Any) -> dict[str, Any]:
@@ -963,15 +930,16 @@ def _generation_capture_result(data: Any) -> dict[str, Any]:
963
930
 
964
931
  def _settlement_principal(row: Mapping[str, Any]) -> dict[str, Any]:
965
932
  kind = row.get("traffic_principal_kind")
966
- if kind == "openrouter":
967
- return {"kind": "openrouter", "publicModelId": row.get("public_model_id")}
933
+ org_id = row.get("org_id")
934
+ if not isinstance(org_id, str) or not org_id.strip():
935
+ raise UsageOutboxError("usage_principal_invalid")
968
936
  if kind == "freesolo_org":
969
- return {"kind": "freesolo_org", "orgId": row.get("org_id")}
970
- if kind == "trusted_internal":
937
+ return {"kind": "freesolo_org", "orgId": org_id}
938
+ if kind == "trusted_internal" and row.get("billing_attribution_explicit") is True:
971
939
  return {
972
940
  "kind": "trusted_internal",
973
- "orgId": row.get("org_id"),
974
- "billingAttributionExplicit": bool(row.get("billing_attribution_explicit")),
941
+ "orgId": org_id,
942
+ "billingAttributionExplicit": True,
975
943
  }
976
944
  raise UsageOutboxError("usage_principal_invalid")
977
945
 
@@ -986,13 +954,3 @@ def _parse_datetime(value: Any) -> datetime:
986
954
  if parsed.tzinfo is None:
987
955
  raise UsageOutboxError("usage_snapshot_timestamp_invalid")
988
956
  return parsed
989
-
990
-
991
- def accepted_price_micro_usd(snapshot: AcceptedPriceSnapshot, facts: UsageFacts) -> int:
992
- uncached = facts.prompt_tokens - facts.cached_tokens
993
- cost = Decimal(snapshot.promptTokenUsd) * uncached
994
- cost += Decimal(snapshot.cachedPromptTokenUsd or snapshot.promptTokenUsd) * facts.cached_tokens
995
- cost += Decimal(snapshot.completionTokenUsd) * facts.completion_tokens
996
- if snapshot.requestUsd is not None:
997
- cost += Decimal(snapshot.requestUsd)
998
- return int((cost * 1_000_000).quantize(Decimal("1")))
@@ -0,0 +1,13 @@
1
+ """Retry classification for durable serving accounting RPCs."""
2
+
3
+ import re
4
+
5
+
6
+ def is_transient_rpc_code(code: str) -> bool:
7
+ if code == "supabase_transport_failure":
8
+ return True
9
+ match = re.fullmatch(r"supabase_rpc_([0-9]{3})", code)
10
+ if match is None:
11
+ return False
12
+ status_code = int(match.group(1))
13
+ return status_code in {408, 429} or status_code >= 500
@@ -34,10 +34,10 @@ from flash.serving.src.engine.prequant_config import (
34
34
  # checkpoints published to the operator HF org.
35
35
  #
36
36
  # sizing rationale. preallocated lora buffers and loaded checkpoint weights dominate engine vram.
37
- # the active 9b uses 16 rank-128 slots on l40s, the active 27b uses 16 rank-64 slots on h100, and the
38
- # active 35b moe uses 6 rank-64 slots on h200.
39
- # - Qwen3.6-35B-A3B (vision-language MoE; arch ``Qwen3_5MoeForConditionalGeneration``) -> H200
40
- # (141 GiB) with the base bf16 weights, 6 x 64 LoRA at 32k. bf16 (not FP8) is the one path giving
37
+ # all three active tiers serve on b200: the 9b uses 16 rank-128 slots, the 27b 16 rank-64 slots, and
38
+ # the 35b moe 6 rank-64 slots.
39
+ # - Qwen3.6-35B-A3B (vision-language MoE; arch ``Qwen3_5MoeForConditionalGeneration``) -> B200
40
+ # (178 GiB) with the base bf16 weights, 6 x 64 LoRA at 32k. bf16 (not FP8) is the one path giving
41
41
  # full-expert LoRA + CUDA graphs because the fused-MoE LoRA path won't compile on fp8e4nv. see the
42
42
  # detailed 35B block below.
43
43
  #
@@ -49,11 +49,13 @@ SERVING_MODELS: list[dict[str, Any]] = [
49
49
  {
50
50
  "base_model": "Qwen/Qwen3.5-9B",
51
51
  "image_input_limit": 4,
52
- "gpu": "L40S",
52
+ "gpu": "B200",
53
53
  "engine": {
54
- # the L40S (48 GiB, Ada sm89) is the cheapest Modal card that fits rank-128 x 16 LoRA
55
- # at 32k; L4 and 2xL4 OOMed in the real-GPU sweep. keep CUDA graphs on because eager is
56
- # about 10x slower for this hybrid GatedDeltaNet model, and keep 0.90 for graph-capture headroom.
54
+ # measured on B200 (2026-08-31): 132.87 GiB of KV, 7,109,793 tokens, 217x concurrency at
55
+ # 32k with rank-128 x 16 LoRA. this tier previously ran on the L40S (48 GiB, Ada sm89),
56
+ # the cheapest card that fit the LoRA buffer; L4 and 2xL4 OOMed in the real-GPU sweep.
57
+ # keep CUDA graphs on because eager is about 10x slower for this hybrid GatedDeltaNet
58
+ # model, and keep 0.90 for graph-capture headroom.
57
59
  "gpu_memory_utilization": 0.90,
58
60
  "max_loras": 16,
59
61
  "max_lora_rank": 128, # rank-128 / 16 hot LoRAs (cheap on the 9 GiB FP8 9B); 32k context.
@@ -63,22 +65,23 @@ SERVING_MODELS: list[dict[str, Any]] = [
63
65
  "reasoning_parser": "qwen3",
64
66
  },
65
67
  },
66
- # 35B-A3B MoE: bf16 on an H200 (141 GiB) is the one serving path that gives a flash adapter its
68
+ # 35B-A3B MoE: bf16 on a B200 (178 GiB) is the one serving path that gives a flash adapter its
67
69
  # full all-expert LoRA and CUDA graphs at speed. it gets rank 64 at 6 hot slots (6 x 64).
68
- # why bf16/H200 and not the FP8 checkpoint used by every other tier:
70
+ # why bf16 and not the FP8 checkpoint used by every other tier:
69
71
  # * FP8 on A100 materializes the FP8 experts back to bf16 in the fused-MoE LoRA path, leaving no
70
72
  # room for CUDA-graph capture and forcing eager at about 4-10 tok/s.
71
73
  # * FP8 on H200/B200 fails the fused-MoE LoRA kernel with "Unsupported lhs dtype fp8e4nv"; only
72
74
  # the A100's Marlin kernel runs this MoE's full-expert LoRA.
73
- # * bf16 on H200 sidesteps the FP8 kernel. the real-GPU canary found that 8 x 64 LoRA plus 32k
74
- # overflows the 141 GiB card, with only about 19k context fitting. 6 x 64 plus 32k fits cleanly
75
- # with a 679,701-token KV cache, about 20x concurrency at 32k.
76
- # * cold boot is about 17 min (67 gibibytes of weights plus compile, graph capture, and warmup),
77
- # so it needs the raised startup_timeout in modal_app. inference or adapter registration starts it.
75
+ # * bf16 sidesteps the FP8 kernel. on the 141 GiB H200 this tier used to run on, 8 x 64 LoRA
76
+ # plus 32k overflowed the card (only about 19k context fit) and 6 x 64 measured about 20x
77
+ # concurrency; the 178 GiB B200 measured 112x at the same 6 x 64 shape.
78
+ # * cold boot measured 488s on the B200 (67 gibibytes of weights plus compile, graph capture
79
+ # and warmup), so it needs the raised startup_timeout in modal_app. inference or adapter
80
+ # registration starts it.
78
81
  {
79
82
  "base_model": "Qwen/Qwen3.6-35B-A3B",
80
83
  "image_input_limit": 4,
81
- "gpu": "H200",
84
+ "gpu": "B200",
82
85
  "engine": {
83
86
  # Load the BASE bf16 weights, NOT the FP8 checkpoint — bf16 is what lets full-expert LoRA
84
87
  # + graphs coexist (see the block comment above). serve_model_id overrides the FP8 default
@@ -91,12 +94,13 @@ SERVING_MODELS: list[dict[str, Any]] = [
91
94
  "max_loras": 6,
92
95
  "max_lora_rank": 64,
93
96
  "pin_loras": False,
94
- # 32k context at 6 hot rank-64 LoRAs. the real-GPU canary produced a healthy 679,701-token
95
- # KV cache, about 20x concurrency at 32k; 8 hot LoRAs overflowed and only fit about 19k.
97
+ # 32k context at 6 hot rank-64 LoRAs. measured on B200 (2026-08-30): 49.38 GiB of KV,
98
+ # 3,678,952 tokens, 112x concurrency at 32k -- the 178 GiB card leaves far more room than
99
+ # the 141 GiB H200 this tier previously ran on (which measured about 20x).
96
100
  "max_model_len": 32768,
97
101
  "max_num_batched_tokens": 4096,
98
- # CUDA graphs ON — the whole point. On bf16/H200 the graph capture fits (~0.2-0.8 GiB) and
99
- # is LoRA-specialized, so adapters serve under graphs too.
102
+ # CUDA graphs ON — the whole point. On bf16/B200 the graph capture fits (measured 0.38 GiB)
103
+ # and is LoRA-specialized, so adapters serve under graphs too.
100
104
  "enforce_eager": False,
101
105
  # Startup memory-profiling runs max_num_seqs sequences; cap low so the 248k-vocab logits +
102
106
  # all-expert MoE activations don't spike the profiling peak.
@@ -105,20 +109,20 @@ SERVING_MODELS: list[dict[str, Any]] = [
105
109
  # NB: the vision encoder is now LOADED (no language_model_only) — flash adapters adapt the
106
110
  # full multimodal tree, so their vision-tower LoRA keys must have real modules to bind to.
107
111
  # this adds the vision encoder's weights on top of the already weight-bound 6 x 64 LoRA buffer.
108
- # the complete model and LoRA load is about 108 GiB on the 141 GiB H200.
112
+ # the complete model and LoRA load is about 108 GiB, on the 178 GiB B200.
109
113
  },
110
114
  },
111
- # 27B dense on an H100 (80 GiB). the real-GPU canary measured the load at 44.25 GiB -- above the
112
- # FP8 weight size alone, because the vision tower and the non-quantized tensors stay bf16 -- which
113
- # still leaves 23.07 GiB of KV cache (350,981 tokens, 10.71x concurrency at 32k) after the 16
114
- # rank-64 LoRA buffers and a 0.35 GiB graph capture. every repository here is pinned to an
115
- # immutable revision so a served engine cannot silently follow an upstream retag; note the model
116
- # pin names a commit in the -FP8 repo while the tokenizer/processor pins name one in the base
117
- # repo, which are separate sha namespaces.
115
+ # 27B dense on a B200 (178 GiB). the load is 44.25 GiB -- above the FP8 weight size alone, because
116
+ # the vision tower and the non-quantized tensors stay bf16. measured on B200 (2026-08-30):
117
+ # 112.66 GiB of KV cache, 2,856,884 tokens, 87x concurrency at 32k, after the 16 rank-64 LoRA
118
+ # buffers and graph capture; the 80 GiB H100 this tier previously ran on measured 10.71x. every
119
+ # repository here is pinned to an immutable revision so a served engine cannot silently follow an
120
+ # upstream retag; note the model pin names a commit in the -FP8 repo while the tokenizer/processor
121
+ # pins name one in the base repo, which are separate sha namespaces.
118
122
  {
119
123
  "base_model": "Qwen/Qwen3.8-27B",
120
124
  "image_input_limit": 4,
121
- "gpu": "H100",
125
+ "gpu": "B200",
122
126
  "engine": {
123
127
  "model_revision": "017b9c7af6b5689d5dd426a76e0bc077eb5ca20a",
124
128
  "tokenizer_model": "Qwen/Qwen3.8-27B",