freesolo-flash-dev 1.4.11__tar.gz → 1.4.12__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 (1080) hide show
  1. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/bake-kernel-cache.yml +2 -2
  2. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/CHANGELOG.md +4 -0
  3. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/PKG-INFO +1 -1
  4. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/bake_kernel_cache.py +47 -89
  5. freesolo_flash_dev-1.4.12/docker/bake_sandbox_entry.py +90 -0
  6. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/artifacts.py +1 -1
  7. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/config.py +2 -2
  8. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/lora_rank.py +4 -8
  9. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/setup.py +2 -2
  10. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/serve_parser.py +10 -9
  11. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/scaffold/TRAINING.md +1 -1
  12. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/spec.py +1 -1
  13. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/entry/worker.py +3 -3
  14. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/artifacts.py +5 -5
  15. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/heartbeat.py +9 -9
  16. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/adapter.py +2 -2
  17. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/sft_train.py +2 -2
  18. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/sft_train_runner.py +3 -3
  19. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/setup/checkpoints.py +1 -1
  20. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/setup/config.py +1 -1
  21. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/diagnostics.py +1 -1
  22. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +12 -12
  23. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/pip.py +1 -1
  24. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/poll_instance.py +19 -19
  25. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/terminal_artifacts.py +3 -3
  26. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/worker.py +2 -2
  27. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/artifacts/channel.py +1 -1
  28. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/accounting/artifacts.py +4 -4
  29. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/preparation.py +1 -1
  30. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/state.py +1 -1
  31. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/results/checkpoints.py +4 -4
  32. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/lifecycle.py +1 -1
  33. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/materialize.py +1 -1
  34. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/errors.py +1 -1
  35. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/adapter_check.py +1 -1
  36. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/download.py +1 -1
  37. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/asgi/app.py +1 -1
  38. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/ops/repo_cleanup.py +7 -7
  39. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/checkpoints.py +5 -5
  40. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/runs.py +1 -1
  41. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/runtime.py +4 -4
  42. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/meta.py +1 -1
  43. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving.py +1 -1
  44. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/hub.py +2 -2
  45. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/lora_engine.py +1 -1
  46. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/adapter_routes.py +1 -1
  47. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/pyproject.toml +6 -10
  48. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_backend_common.py +1 -1
  49. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bake_kernel_cache.py +70 -60
  50. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bake_sandbox_entry.py +3 -16
  51. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoints.py +2 -2
  52. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_flash_worker.py +1 -1
  53. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_checkpoint_durability.py +1 -1
  54. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_params.py +1 -1
  55. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_instance_bootstrap_coverage.py +1 -1
  56. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_managed_hf_repo.py +4 -5
  57. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_repo_cleanup.py +4 -4
  58. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_api.py +5 -5
  59. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_standalone.py +1 -4
  60. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_train.py +2 -2
  61. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_warmstart_cross_repo.py +1 -1
  62. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_dryrun.py +1 -1
  63. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_init_heartbeat.py +8 -8
  64. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_stack.py +5 -7
  65. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/uv.lock +1 -1
  66. freesolo_flash_dev-1.4.11/docker/bake_sandbox_entry.py +0 -159
  67. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.dockerignore +0 -0
  68. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.env.example +0 -0
  69. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/CODEOWNERS +0 -0
  70. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  71. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  72. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  73. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  74. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/dependabot.yml +0 -0
  75. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/scripts/ci_sharding.py +0 -0
  76. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/scripts/notify_tests_repo.py +0 -0
  77. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/auto-rebake.yml +0 -0
  78. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/ci.yml +0 -0
  79. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/deploy-deepinfer.yml +0 -0
  80. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/deploy-modal-dev.yml +0 -0
  81. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/deploy-modal.yml +0 -0
  82. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/dev-kernel-cache.yml +0 -0
  83. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/main-source-guard.yml +0 -0
  84. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/notify-tests-repo.yml +0 -0
  85. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  86. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/publish-dev.yml +0 -0
  87. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/publish-image.yml +0 -0
  88. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/publish-serving-image.yml +0 -0
  89. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/publish.yml +0 -0
  90. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/version-parity.yml +0 -0
  91. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.github/workflows/worker-image.yml +0 -0
  92. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/.gitignore +0 -0
  93. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/CODE_OF_CONDUCT.md +0 -0
  94. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/CONTRIBUTING.md +0 -0
  95. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/Dockerfile +0 -0
  96. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/Dockerfile.serve +0 -0
  97. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/Dockerfile.worker +0 -0
  98. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/LICENSE +0 -0
  99. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/NOTICE +0 -0
  100. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/README.md +0 -0
  101. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/SECURITY.md +0 -0
  102. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/SELF_HOSTING.md +0 -0
  103. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/build/kernel_cache/.gitignore +0 -0
  104. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/build/kernel_cache/.keep +0 -0
  105. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/deploy/infisical/README.md +0 -0
  106. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/deploy/infisical/entrypoint.sh +0 -0
  107. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/Dockerfile.kernelcache +0 -0
  108. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/Dockerfile.kernelcache.relayer +0 -0
  109. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/extract_cudart_fix.py +0 -0
  110. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/kernel_fingerprint.py +0 -0
  111. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docker/patch_vllm_moe_lora.py +0 -0
  112. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docs/azure-artifacts.md +0 -0
  113. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/docs/azure-serving-qualification-20261102.json +0 -0
  114. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/__init__.py +0 -0
  115. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/__init__.py +0 -0
  116. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/background.py +0 -0
  117. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/channel.py +0 -0
  118. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/diagnostics.py +0 -0
  119. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/fileio.py +0 -0
  120. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/http.py +0 -0
  121. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/http_deadline.py +0 -0
  122. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/logging.py +0 -0
  123. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/openai_sse.py +0 -0
  124. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/paths.py +0 -0
  125. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/_internal/version.py +0 -0
  126. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/__init__.py +0 -0
  127. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/fused_experts.py +0 -0
  128. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/adapters/targets.py +0 -0
  129. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/__init__.py +0 -0
  130. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/api.py +0 -0
  131. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/config.py +0 -0
  132. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/errors.py +0 -0
  133. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/manifest.py +0 -0
  134. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/artifacts/storage.py +0 -0
  135. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/__init__.py +0 -0
  136. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/__main__.py +0 -0
  137. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/__init__.py +0 -0
  138. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/__init__.py +0 -0
  139. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/__init__.py +0 -0
  140. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/imports.py +0 -0
  141. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/list.py +0 -0
  142. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/push.py +0 -0
  143. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/retained.py +0 -0
  144. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  145. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/__init__.py +0 -0
  146. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/episode.py +0 -0
  147. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/eval.py +0 -0
  148. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/eval_args.py +0 -0
  149. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/evaluations.py +0 -0
  150. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/params.py +0 -0
  151. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/test.py +0 -0
  152. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/env/testing/warnings.py +0 -0
  153. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/__init__.py +0 -0
  154. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/account.py +0 -0
  155. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/catalog.py +0 -0
  156. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/deploy.py +0 -0
  157. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/log_follow.py +0 -0
  158. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/prompt_budget.py +0 -0
  159. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/runs.py +0 -0
  160. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/traces.py +0 -0
  161. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/train.py +0 -0
  162. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/ops/worker_output.py +0 -0
  163. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/__init__.py +0 -0
  164. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/deploy.py +0 -0
  165. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/identity.py +0 -0
  166. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/status.py +0 -0
  167. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/commands/serving/undeploy.py +0 -0
  168. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/__init__.py +0 -0
  169. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/account.py +0 -0
  170. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/custom.py +0 -0
  171. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/env.py +0 -0
  172. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/errors.py +0 -0
  173. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/main.py +0 -0
  174. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/models.py +0 -0
  175. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/traces.py +0 -0
  176. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/parsing/training.py +0 -0
  177. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/scaffold/__init__.py +0 -0
  178. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/__init__.py +0 -0
  179. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/cost.py +0 -0
  180. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/env_panels.py +0 -0
  181. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/heartbeat.py +0 -0
  182. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/render.py +0 -0
  183. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/tables.py +0 -0
  184. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cli/ui/tty.py +0 -0
  185. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/__init__.py +0 -0
  186. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/config.py +0 -0
  187. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/freesolo_api.py +0 -0
  188. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/http.py +0 -0
  189. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/runtime_secrets.py +0 -0
  190. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/shapes.py +0 -0
  191. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/specs.py +0 -0
  192. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/client/streaming.py +0 -0
  193. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/__init__.py +0 -0
  194. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/image_descriptors.py +0 -0
  195. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/multimodal.py +0 -0
  196. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/processor.py +0 -0
  197. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/reasoning_normalization.py +0 -0
  198. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/stop_tokens.py +0 -0
  199. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/structured_options.py +0 -0
  200. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/structured_outputs.py +0 -0
  201. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/content/thinking.py +0 -0
  202. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/__init__.py +0 -0
  203. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/catalog.py +0 -0
  204. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/grpo.py +0 -0
  205. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/core/spec_persistence.py +0 -0
  206. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/__init__.py +0 -0
  207. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/analytical.py +0 -0
  208. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/currency.py +0 -0
  209. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/facts.py +0 -0
  210. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/spec.py +0 -0
  211. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/cost/types.py +0 -0
  212. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/__init__.py +0 -0
  213. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/async_client.py +0 -0
  214. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/backend.py +0 -0
  215. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/billing.py +0 -0
  216. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/checkpoints.py +0 -0
  217. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/client.py +0 -0
  218. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/controller.py +0 -0
  219. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/managed.py +0 -0
  220. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/server.py +0 -0
  221. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/session.py +0 -0
  222. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/starter.py +0 -0
  223. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/types.py +0 -0
  224. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/validation.py +0 -0
  225. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/custom/worker.py +0 -0
  226. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/__init__.py +0 -0
  227. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/__init__.py +0 -0
  228. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/kv_sizing.py +0 -0
  229. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/model_config_probe.py +0 -0
  230. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/prompt_budget.py +0 -0
  231. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/recipe.py +0 -0
  232. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/steps.py +0 -0
  233. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/plan/vram.py +0 -0
  234. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/__init__.py +0 -0
  235. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/dataset_profile.py +0 -0
  236. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/image_tokens.py +0 -0
  237. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/reasoning_render.py +0 -0
  238. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/sft_image_rows.py +0 -0
  239. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/sft_rows.py +0 -0
  240. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/sft_tools.py +0 -0
  241. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/sft_workload.py +0 -0
  242. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/tokenizer.py +0 -0
  243. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/profiling/workload_profile.py +0 -0
  244. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/result/__init__.py +0 -0
  245. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/result/accounting.py +0 -0
  246. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/result/rollout_samples.py +0 -0
  247. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/__init__.py +0 -0
  248. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/checkpoint_transport.py +0 -0
  249. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/huggingface.py +0 -0
  250. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/model_snapshot.py +0 -0
  251. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/verl_checkpoint.py +0 -0
  252. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/support/worker_entrypoint.py +0 -0
  253. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/__init__.py +0 -0
  254. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/__main__.py +0 -0
  255. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/entry/__init__.py +0 -0
  256. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/entry/rl.py +0 -0
  257. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/__init__.py +0 -0
  258. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/cpu_handoff.py +0 -0
  259. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/prefetch.py +0 -0
  260. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/transfer.py +0 -0
  261. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/io/wandb_log.py +0 -0
  262. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/__init__.py +0 -0
  263. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/chatml_mask.py +0 -0
  264. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/decoding.py +0 -0
  265. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/lora.py +0 -0
  266. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/model/packing.py +0 -0
  267. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/__init__.py +0 -0
  268. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/diagnostics.py +0 -0
  269. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/lifecycle.py +0 -0
  270. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/memory.py +0 -0
  271. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/perf/model_size.py +0 -0
  272. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/__init__.py +0 -0
  273. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  274. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/phases.py +0 -0
  275. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/rng.py +0 -0
  276. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/runtime/state.py +0 -0
  277. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/__init__.py +0 -0
  278. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/__init__.py +0 -0
  279. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/__init__.py +0 -0
  280. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/agents.yaml +0 -0
  281. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/batch.py +0 -0
  282. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/compact_checkpoint.py +0 -0
  283. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/configuration.py +0 -0
  284. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/engine.py +0 -0
  285. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/flashinfer_cache.py +0 -0
  286. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/glue.py +0 -0
  287. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/launch.py +0 -0
  288. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/model.py +0 -0
  289. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/observations.py +0 -0
  290. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/options.py +0 -0
  291. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/prompt_media.py +0 -0
  292. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/queue.py +0 -0
  293. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/readiness.py +0 -0
  294. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/reference.py +0 -0
  295. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/registration.py +0 -0
  296. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/replay.py +0 -0
  297. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/replay_guard.py +0 -0
  298. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/rollout.py +0 -0
  299. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/rollout_contract.py +0 -0
  300. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/startup.py +0 -0
  301. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/tracking.py +0 -0
  302. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/trainer.py +0 -0
  303. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/upstream.py +0 -0
  304. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/vllm_worker.py +0 -0
  305. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/child/worker.py +0 -0
  306. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  307. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  308. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  309. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/persistence.py +0 -0
  310. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  311. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/lifecycle/timing.py +0 -0
  312. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/__init__.py +0 -0
  313. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/contract.py +0 -0
  314. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/episode.py +0 -0
  315. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/generation.py +0 -0
  316. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/identity.py +0 -0
  317. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/core/rollout/lifecycle.py +0 -0
  318. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/__init__.py +0 -0
  319. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/backend_common.py +0 -0
  320. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  321. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/rl_train.py +0 -0
  322. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  323. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  324. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/__init__.py +0 -0
  325. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  326. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/contract.py +0 -0
  327. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/credit.py +0 -0
  328. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/entry.py +0 -0
  329. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/identity.py +0 -0
  330. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/metrics.py +0 -0
  331. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  332. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/reward.py +0 -0
  333. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/rollout.py +0 -0
  334. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/trainer.py +0 -0
  335. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/child/transport.py +0 -0
  336. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  337. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  338. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/config.py +0 -0
  339. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  340. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  341. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  342. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  343. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  344. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  345. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  346. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/__init__.py +0 -0
  347. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/dataset.py +0 -0
  348. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/entry.py +0 -0
  349. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/loop.py +0 -0
  350. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/schedule.py +0 -0
  351. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/child/trainer.py +0 -0
  352. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  353. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/__init__.py +0 -0
  354. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/adapter_merger.py +0 -0
  355. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/capabilities.py +0 -0
  356. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/checkpoints.py +0 -0
  357. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/child_io.py +0 -0
  358. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/parallelism.py +0 -0
  359. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/engine/worker/verl/parent_work.py +0 -0
  360. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/__init__.py +0 -0
  361. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/__init__.py +0 -0
  362. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/adapter.py +0 -0
  363. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/base.py +0 -0
  364. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/loader.py +0 -0
  365. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/pull.py +0 -0
  366. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/loading/staged.py +0 -0
  367. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/__init__.py +0 -0
  368. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/cache_security.py +0 -0
  369. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/cache_storage.py +0 -0
  370. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/dataset_selection.py +0 -0
  371. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/evaluations.py +0 -0
  372. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/identity.py +0 -0
  373. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/meta/namespace_listing.py +0 -0
  374. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/package/__init__.py +0 -0
  375. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/package/direct_tokens.py +0 -0
  376. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/package/limits.py +0 -0
  377. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/package/unpack.py +0 -0
  378. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/registry/__init__.py +0 -0
  379. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/registry/azure.py +0 -0
  380. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/registry/packages.py +0 -0
  381. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/scoring/__init__.py +0 -0
  382. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/scoring/context.py +0 -0
  383. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/envs/scoring/response.py +0 -0
  384. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/__init__.py +0 -0
  385. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/__init__.py +0 -0
  386. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  387. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/attempt.py +0 -0
  388. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  389. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/processes.py +0 -0
  390. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  391. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  392. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/instance.py +0 -0
  393. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/instances/poll.py +0 -0
  394. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/__init__.py +0 -0
  395. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/auth.py +0 -0
  396. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/deadline.py +0 -0
  397. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/_lifecycle/net/http.py +0 -0
  398. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/artifacts/__init__.py +0 -0
  399. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/artifacts/weight_cache.py +0 -0
  400. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/__init__.py +0 -0
  401. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/allocator.py +0 -0
  402. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/base.py +0 -0
  403. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/fit_errors.py +0 -0
  404. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/preflight.py +0 -0
  405. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/registry.py +0 -0
  406. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/core/sharding.py +0 -0
  407. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/__init__.py +0 -0
  408. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/api.py +0 -0
  409. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/auth.py +0 -0
  410. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/checkpoint_upload.py +0 -0
  411. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/handles.py +0 -0
  412. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/jobs.py +0 -0
  413. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/prefetch.py +0 -0
  414. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/pricing.py +0 -0
  415. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/provider.py +0 -0
  416. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/providers/modal/startup.py +0 -0
  417. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/py.typed +0 -0
  418. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/__init__.py +0 -0
  419. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/accounting/__init__.py +0 -0
  420. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/accounting/costs.py +0 -0
  421. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/accounting/weight_cache.py +0 -0
  422. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/__init__.py +0 -0
  423. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/attempts.py +0 -0
  424. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/claim_lock.py +0 -0
  425. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/cleanup.py +0 -0
  426. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/deadlines.py +0 -0
  427. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/reporting.py +0 -0
  428. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/runtime_credentials.py +0 -0
  429. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/status.py +0 -0
  430. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/lifecycle/submit.py +0 -0
  431. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/results/__init__.py +0 -0
  432. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/results/deployments.py +0 -0
  433. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/__init__.py +0 -0
  434. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/attach.py +0 -0
  435. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/deploy.py +0 -0
  436. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/errors.py +0 -0
  437. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/execution.py +0 -0
  438. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/recovery.py +0 -0
  439. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/retry_decision.py +0 -0
  440. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runner/supervise/transitions.py +0 -0
  441. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runtime_capsule/__init__.py +0 -0
  442. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runtime_capsule/build.py +0 -0
  443. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runtime_capsule/manifest.py +0 -0
  444. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/runtime_capsule/profiles.py +0 -0
  445. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/schema/__init__.py +0 -0
  446. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/schema/custom.py +0 -0
  447. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/schema/fields.py +0 -0
  448. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/__init__.py +0 -0
  449. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/__init__.py +0 -0
  450. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/__main__.py +0 -0
  451. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/bootstrap.py +0 -0
  452. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/chat_stream.py +0 -0
  453. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/http.py +0 -0
  454. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/hydration_credentials.py +0 -0
  455. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/launch.py +0 -0
  456. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/manifest.py +0 -0
  457. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/openai.py +0 -0
  458. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/app/progress.py +0 -0
  459. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/__init__.py +0 -0
  460. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/protocol.py +0 -0
  461. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/provenance.py +0 -0
  462. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/responses.py +0 -0
  463. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/contract/urls.py +0 -0
  464. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/__init__.py +0 -0
  465. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/_canonical.py +0 -0
  466. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/_serialization.py +0 -0
  467. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/_urls.py +0 -0
  468. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/credentials.py +0 -0
  469. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/planning.py +0 -0
  470. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/control/types.py +0 -0
  471. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/__init__.py +0 -0
  472. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/deploy.py +0 -0
  473. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/export.py +0 -0
  474. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/preflight.py +0 -0
  475. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/profiles.py +0 -0
  476. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/readiness.py +0 -0
  477. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/deployment/resolve.py +0 -0
  478. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/__init__.py +0 -0
  479. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/common/__init__.py +0 -0
  480. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/common/records.py +0 -0
  481. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/__init__.py +0 -0
  482. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  483. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  484. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  485. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  486. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  487. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  488. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  489. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  490. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  491. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  492. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  493. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  494. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  495. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/__init__.py +0 -0
  496. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/openai.py +0 -0
  497. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/runtime_support.py +0 -0
  498. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/schema_types.py +0 -0
  499. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/streaming.py +0 -0
  500. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/text_scan.py +0 -0
  501. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/thinking.py +0 -0
  502. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/tool_calls.py +0 -0
  503. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/tool_template.py +0 -0
  504. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/transport.py +0 -0
  505. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/request/validation.py +0 -0
  506. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/__init__.py +0 -0
  507. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/adapters.py +0 -0
  508. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/cache_admission.py +0 -0
  509. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/cache_retention.py +0 -0
  510. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/cache_scheduler.py +0 -0
  511. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/engine.py +0 -0
  512. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/errors.py +0 -0
  513. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/hub.py +0 -0
  514. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/multimodal.py +0 -0
  515. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/prompt.py +0 -0
  516. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/prompt_cache.py +0 -0
  517. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/reasoning_tools.py +0 -0
  518. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/sampling.py +0 -0
  519. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/structured_outputs.py +0 -0
  520. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/token_batch.py +0 -0
  521. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/token_prefix_cache.py +0 -0
  522. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/tool_calls.py +0 -0
  523. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serve/runtime/types.py +0 -0
  524. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/__init__.py +0 -0
  525. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/__main__.py +0 -0
  526. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/asgi/__init__.py +0 -0
  527. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/asgi/cli.py +0 -0
  528. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/billing/__init__.py +0 -0
  529. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/billing/charges.py +0 -0
  530. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/billing/retry.py +0 -0
  531. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/__init__.py +0 -0
  532. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/ops/__init__.py +0 -0
  533. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/ops/serving_resources.py +0 -0
  534. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/__init__.py +0 -0
  535. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/blob_envs.py +0 -0
  536. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/env_files.py +0 -0
  537. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/environment_registry.py +0 -0
  538. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/envs.py +0 -0
  539. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/domain/registry/projects.py +0 -0
  540. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/__init__.py +0 -0
  541. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/auth.py +0 -0
  542. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/db.py +0 -0
  543. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/deployment_jobs.py +0 -0
  544. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/deployment_state.py +0 -0
  545. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/deps.py +0 -0
  546. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/internal_client.py +0 -0
  547. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/locks.py +0 -0
  548. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/platform/plane_lease.py +0 -0
  549. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/__init__.py +0 -0
  550. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/adapter_download.py +0 -0
  551. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/custom.py +0 -0
  552. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/env_files.py +0 -0
  553. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/envs.py +0 -0
  554. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/runs.py +0 -0
  555. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_chat.py +0 -0
  556. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_completion.py +0 -0
  557. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_errors.py +0 -0
  558. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_revisions.py +0 -0
  559. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/server/routes/serving_smoke.py +0 -0
  560. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/__init__.py +0 -0
  561. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/GPU_QUALIFICATION.md +0 -0
  562. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/README.md +0 -0
  563. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/__init__.py +0 -0
  564. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/modal_app.py +0 -0
  565. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/app/timeouts.py +0 -0
  566. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/__init__.py +0 -0
  567. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/README.md +0 -0
  568. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/__init__.py +0 -0
  569. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/autoscaling.py +0 -0
  570. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/client.py +0 -0
  571. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/events.py +0 -0
  572. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/http.py +0 -0
  573. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/modal_app.py +0 -0
  574. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/render.py +0 -0
  575. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/retries.py +0 -0
  576. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/app/rollout.py +0 -0
  577. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/__init__.py +0 -0
  578. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/config.py +0 -0
  579. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/errors.py +0 -0
  580. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/protocol.py +0 -0
  581. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/contract/tokenizer.py +0 -0
  582. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/__init__.py +0 -0
  583. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/engram_transport.py +0 -0
  584. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/image.py +0 -0
  585. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/patches.py +0 -0
  586. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/native/transport.py +0 -0
  587. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/__init__.py +0 -0
  588. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/bridge.py +0 -0
  589. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/kernel_cache.py +0 -0
  590. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/prefill_scheduler.py +0 -0
  591. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/prefix_cache.py +0 -0
  592. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/provenance.py +0 -0
  593. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/routing.py +0 -0
  594. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/snapshots.py +0 -0
  595. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/tiered_cache.py +0 -0
  596. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/warmup.py +0 -0
  597. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/deepinfer/runtime/worker.py +0 -0
  598. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/__init__.py +0 -0
  599. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/accounting_smoke_test.py +0 -0
  600. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/canary.py +0 -0
  601. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/evidence.py +0 -0
  602. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/promotion/gate.py +0 -0
  603. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/__init__.py +0 -0
  604. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/__init__.py +0 -0
  605. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/usage.py +0 -0
  606. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/usage_facts.py +0 -0
  607. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/usage_outbox.py +0 -0
  608. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/accounting/usage_retry.py +0 -0
  609. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/__init__.py +0 -0
  610. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/boot.py +0 -0
  611. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/errors.py +0 -0
  612. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/generation.py +0 -0
  613. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/lora_entries.py +0 -0
  614. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/model_config.py +0 -0
  615. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/prequant_config.py +0 -0
  616. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/reasoning_usage.py +0 -0
  617. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/support.py +0 -0
  618. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/text_tokenizer.py +0 -0
  619. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/engine/warmup.py +0 -0
  620. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/__init__.py +0 -0
  621. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/authorization_transport.py +0 -0
  622. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/body_limit.py +0 -0
  623. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/context.py +0 -0
  624. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/headers.py +0 -0
  625. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/inference_routes.py +0 -0
  626. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/key_rate_limit.py +0 -0
  627. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/rate_limit.py +0 -0
  628. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/router.py +0 -0
  629. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/routing.py +0 -0
  630. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/http/stream_response.py +0 -0
  631. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/__init__.py +0 -0
  632. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/cache_namespace.py +0 -0
  633. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/multimodal.py +0 -0
  634. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/openai_request.py +0 -0
  635. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/openai_stream.py +0 -0
  636. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/provenance.py +0 -0
  637. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/requests.py +0 -0
  638. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/responses.py +0 -0
  639. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/schemas.py +0 -0
  640. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/streaming.py +0 -0
  641. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/io/structured_outputs.py +0 -0
  642. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/__init__.py +0 -0
  643. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/access.py +0 -0
  644. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/lookup.py +0 -0
  645. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/persisted_columns.py +0 -0
  646. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/persistence.py +0 -0
  647. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/registration.py +0 -0
  648. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/registry.py +0 -0
  649. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/settings.py +0 -0
  650. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/supabase_rest.py +0 -0
  651. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/store/undeploy.py +0 -0
  652. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/__init__.py +0 -0
  653. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/_tasks.py +0 -0
  654. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/client.py +0 -0
  655. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/engine.py +0 -0
  656. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/serving/src/stream_channel/protocol.py +0 -0
  657. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/snapshot/__init__.py +0 -0
  658. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/flash/snapshot/archive.py +0 -0
  659. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/build_dev_dist.py +0 -0
  660. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_dev_release.py +0 -0
  661. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_file_size.py +0 -0
  662. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_function_size.py +0 -0
  663. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_rollout_identity_actor.py +0 -0
  664. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_source_layout.py +0 -0
  665. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/check_verl_pin_exists.py +0 -0
  666. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/fixtures/custom_algorithm.py +0 -0
  667. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/fixtures/modal_environment/dataset/train.jsonl +0 -0
  668. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/fixtures/modal_environment/environment.py +0 -0
  669. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/fixtures/modal_environment/evaluations.py +0 -0
  670. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/migrate_recent_hf_artifacts.py +0 -0
  671. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/qualify_serving_profile.py +0 -0
  672. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/smoke_custom_training.py +0 -0
  673. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/smoke_modal_sft.py +0 -0
  674. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/scripts/smoke_modal_training.py +0 -0
  675. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/serve_launch.py +0 -0
  676. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/__init__.py +0 -0
  677. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/__init__.py +0 -0
  678. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/billing_precheck.py +0 -0
  679. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/chat_provenance.py +0 -0
  680. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/chat_transport.py +0 -0
  681. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/deployments.py +0 -0
  682. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/managed_chat.py +0 -0
  683. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/modal.py +0 -0
  684. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/profile.py +0 -0
  685. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/runner.py +0 -0
  686. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/server_api_plugin.py +0 -0
  687. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/source_snapshot.py +0 -0
  688. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/specs.py +0 -0
  689. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/_helpers/wire_headers.py +0 -0
  690. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/capture_image_sft_processor_oracle.py +0 -0
  691. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/capture_qwen38_27b_metadata.py +0 -0
  692. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/conftest.py +0 -0
  693. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  694. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  695. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  696. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  697. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  698. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  699. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/live/__init__.py +0 -0
  700. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/live/conftest.py +0 -0
  701. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/live/test_sft_thinking_render_live.py +0 -0
  702. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/checkpoint_fixtures.py +0 -0
  703. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/conftest.py +0 -0
  704. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_adapter_hub.py +0 -0
  705. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_artifact_protections.py +0 -0
  706. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_authorization_transport.py +0 -0
  707. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_base_model_serving.py +0 -0
  708. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_chat_auth.py +0 -0
  709. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_chat_authorizer.py +0 -0
  710. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_checkpoint_fingerprint_validation.py +0 -0
  711. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
  712. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_checkpoint_model_validation.py +0 -0
  713. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_checkpoint_revocation.py +0 -0
  714. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer.py +0 -0
  715. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_autoscaling.py +0 -0
  716. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_deadline.py +0 -0
  717. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_hosted.py +0 -0
  718. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_http_deadline.py +0 -0
  719. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_kernel_cache.py +0 -0
  720. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_latency.py +0 -0
  721. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_optimizations.py +0 -0
  722. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_parallel.py +0 -0
  723. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_prefill_scheduler.py +0 -0
  724. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_provenance.py +0 -0
  725. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_retention.py +0 -0
  726. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_retries.py +0 -0
  727. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_rollout.py +0 -0
  728. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_routing.py +0 -0
  729. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_deepinfer_tiering.py +0 -0
  730. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_engine_error_status.py +0 -0
  731. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_fp8_config.py +0 -0
  732. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_immutable_engine.py +0 -0
  733. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_immutable_revisions.py +0 -0
  734. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_immutable_schemas.py +0 -0
  735. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_inference_duration.py +0 -0
  736. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_internal_header_integrity.py +0 -0
  737. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_key_rate_limit.py +0 -0
  738. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_key_rate_limit_review.py +0 -0
  739. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_kv_namespace.py +0 -0
  740. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_latency_admission.py +0 -0
  741. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_mirror_sampling_parity.py +0 -0
  742. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_modal_deploy_identity.py +0 -0
  743. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_modal_image_paths.py +0 -0
  744. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_model_config.py +0 -0
  745. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_multimodal.py +0 -0
  746. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_openai_stream_options.py +0 -0
  747. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_per_model_gpu.py +0 -0
  748. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_persistence.py +0 -0
  749. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_pre_first_disconnect.py +0 -0
  750. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_prequant_config.py +0 -0
  751. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_promotion_accounting_smoke.py +0 -0
  752. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_promotion_canary.py +0 -0
  753. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_promotion_evidence.py +0 -0
  754. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_promotion_gate.py +0 -0
  755. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_qwen_warmup.py +0 -0
  756. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_rate_limit.py +0 -0
  757. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_reasoning_usage.py +0 -0
  758. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_registration_endpoint.py +0 -0
  759. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_registry.py +0 -0
  760. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_registry_coverage.py +0 -0
  761. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_request_body_limit.py +0 -0
  762. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_router.py +0 -0
  763. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_router_coverage.py +0 -0
  764. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_router_edge_coverage.py +0 -0
  765. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_schemas_coverage.py +0 -0
  766. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_serve_reasoning_split.py +0 -0
  767. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_serve_structured_outputs.py +0 -0
  768. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_serve_thinking.py +0 -0
  769. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_settings.py +0 -0
  770. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_stream_channel.py +0 -0
  771. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_stream_response_disconnect.py +0 -0
  772. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_stream_wait_cleanup.py +0 -0
  773. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_structured_outputs.py +0 -0
  774. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_structured_outputs_coverage.py +0 -0
  775. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_supabase_rest_coverage.py +0 -0
  776. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_token_prefix_cache.py +0 -0
  777. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_usage_delivery_concurrency.py +0 -0
  778. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_usage_integrity.py +0 -0
  779. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_usage_outbox.py +0 -0
  780. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving/test_usage_reporter.py +0 -0
  781. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving_conformance/__init__.py +0 -0
  782. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving_conformance/conftest.py +0 -0
  783. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/serving_conformance/test_contract.py +0 -0
  784. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_accounting_coverage.py +0 -0
  785. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_adapter_download.py +0 -0
  786. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_adapter_shard_completeness.py +0 -0
  787. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_agent_flash_cli_contract.py +0 -0
  788. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_algorithms.py +0 -0
  789. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_allocator.py +0 -0
  790. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_authenticated_redirects.py +0 -0
  791. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_azure_artifacts.py +0 -0
  792. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_azure_environment_registry.py +0 -0
  793. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_backend_jobspec_contract.py +0 -0
  794. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_background_supervisor.py +0 -0
  795. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_base_environment_integrity.py +0 -0
  796. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_base_model_provenance.py +0 -0
  797. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_billing_response_integrity.py +0 -0
  798. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_billing_retry.py +0 -0
  799. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bootstrap_process_groups.py +0 -0
  800. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bootstrap_reentry.py +0 -0
  801. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_bootstrap_worker_cleanup.py +0 -0
  802. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_build_context_contract.py +0 -0
  803. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cache_admission.py +0 -0
  804. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cache_retention.py +0 -0
  805. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cache_scheduler.py +0 -0
  806. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_capture_qwen38_metadata.py +0 -0
  807. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_catalog_consistency.py +0 -0
  808. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_catalog_only_models.py +0 -0
  809. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_charge_pricing.py +0 -0
  810. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_chat_foundations.py +0 -0
  811. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_chat_stop_tokens.py +0 -0
  812. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_chat_worker_isolation.py +0 -0
  813. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_cancellation.py +0 -0
  814. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_deployment_inventory_api.py +0 -0
  815. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_deployments.py +0 -0
  816. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_lifecycle.py +0 -0
  817. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_listing_integrity.py +0 -0
  818. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_storage_overlap.py +0 -0
  819. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_checkpoint_transport.py +0 -0
  820. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_ci_sharding.py +0 -0
  821. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_commands.py +0 -0
  822. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_commands_coverage.py +0 -0
  823. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_credential_shadowing.py +0 -0
  824. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_errors.py +0 -0
  825. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_estimate.py +0 -0
  826. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_gpus_flag.py +0 -0
  827. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_help.py +0 -0
  828. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_main_coverage.py +0 -0
  829. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_managed.py +0 -0
  830. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_render_coverage.py +0 -0
  831. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_render_theme.py +0 -0
  832. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_serve_deploy.py +0 -0
  833. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_serve_status.py +0 -0
  834. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_serve_undeploy.py +0 -0
  835. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_traces.py +0 -0
  836. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cli_wandb_warning.py +0 -0
  837. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client.py +0 -0
  838. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client_deadline_integrity.py +0 -0
  839. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client_import_purity.py +0 -0
  840. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client_server_integration.py +0 -0
  841. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_client_stream_reads.py +0 -0
  842. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_compact_checkpoint.py +0 -0
  843. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_config_env_vars.py +0 -0
  844. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_config_overrides.py +0 -0
  845. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_console_upload.py +0 -0
  846. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_controlled_experiment_repairs.py +0 -0
  847. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_analytical.py +0 -0
  848. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_currency.py +0 -0
  849. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_equation.py +0 -0
  850. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_estimate.py +0 -0
  851. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_hardware.py +0 -0
  852. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cost_models.py +0 -0
  853. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_cpu_checkpoint_handoff.py +0 -0
  854. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_checkpoints.py +0 -0
  855. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_client.py +0 -0
  856. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_gpu_selection.py +0 -0
  857. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_gradients.py +0 -0
  858. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_managed.py +0 -0
  859. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_session.py +0 -0
  860. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_custom_worker.py +0 -0
  861. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_dataset_profile.py +0 -0
  862. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_deploy_latency.py +0 -0
  863. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_deployment_cleanup_resilience.py +0 -0
  864. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_deployment_generation_completion.py +0 -0
  865. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_deployment_registration_cleanup.py +0 -0
  866. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_dev_channel.py +0 -0
  867. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_dev_publish_decision.py +0 -0
  868. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_disk_gb.py +0 -0
  869. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_cache_evict.py +0 -0
  870. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_delete.py +0 -0
  871. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_download.py +0 -0
  872. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_download_api.py +0 -0
  873. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_evaluations.py +0 -0
  874. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_list_api.py +0 -0
  875. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_list_cli.py +0 -0
  876. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_list_registry.py +0 -0
  877. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_no_install.py +0 -0
  878. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_publish.py +0 -0
  879. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_pull.py +0 -0
  880. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_pull_coverage.py +0 -0
  881. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_pull_loader_coverage.py +0 -0
  882. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_pull_managed_control_plane.py +0 -0
  883. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_push.py +0 -0
  884. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_rate_limit_resolve.py +0 -0
  885. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_ref_pinning.py +0 -0
  886. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_env_test.py +0 -0
  887. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_environment_cache_integrity.py +0 -0
  888. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_environment_publish_integrity.py +0 -0
  889. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_envs_coverage.py +0 -0
  890. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_export.py +0 -0
  891. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_flash_mvp.py +0 -0
  892. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_flashinfer_aot_cache.py +0 -0
  893. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_flashinfer_cache_dirs.py +0 -0
  894. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_freesolo_api_transport.py +0 -0
  895. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_fused_expert_warmstart.py +0 -0
  896. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_generation_eos.py +0 -0
  897. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_github_urlopen_retry.py +0 -0
  898. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_gpu_type_single_field.py +0 -0
  899. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_gpus.py +0 -0
  900. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_metric_stream.py +0 -0
  901. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_resident_sizing.py +0 -0
  902. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_reward_batching.py +0 -0
  903. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_reward_context.py +0 -0
  904. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_rollout_contract.py +0 -0
  905. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_grpo_rollout_identity.py +0 -0
  906. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_health_liveness.py +0 -0
  907. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_heartbeat_startup_cleanup.py +0 -0
  908. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_hf_retry.py +0 -0
  909. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_hosted_adapter_admission.py +0 -0
  910. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_environment_capability.py +0 -0
  911. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_incremental_processor.py +0 -0
  912. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_sft_markers.py +0 -0
  913. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_sft_processor_parity.py +0 -0
  914. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_image_tokens.py +0 -0
  915. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_infisical_secrets.py +0 -0
  916. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_internal_client.py +0 -0
  917. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_kernel_bake_build_contracts.py +0 -0
  918. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_kernel_cache.py +0 -0
  919. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_kernel_fingerprint.py +0 -0
  920. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_kv_util.py +0 -0
  921. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_local_credential_integrity.py +0 -0
  922. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_logging.py +0 -0
  923. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_login_perms.py +0 -0
  924. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_rank_coverage.py +0 -0
  925. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_rank_nested_rung.py +0 -0
  926. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_rank_preflight.py +0 -0
  927. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_targeting.py +0 -0
  928. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_lora_targeting_pinned_verl.py +0 -0
  929. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_managed_config_fields.py +0 -0
  930. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_metrics_schema_agent_contract.py +0 -0
  931. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_mig_guard.py +0 -0
  932. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_mirror_sampling_parity.py +0 -0
  933. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_api_loop.py +0 -0
  934. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_prefetch_snapshot.py +0 -0
  935. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_provider.py +0 -0
  936. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_startup.py +0 -0
  937. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_training_lifecycle.py +0 -0
  938. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_modal_weight_warm.py +0 -0
  939. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_multi_gpu_gate.py +0 -0
  940. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_multimodal_boundary_integrity.py +0 -0
  941. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_multimodal_training.py +0 -0
  942. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_named_reward_metrics.py +0 -0
  943. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_notify_tests_repo.py +0 -0
  944. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_offline_http.py +0 -0
  945. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_oom_escalate_gpu.py +0 -0
  946. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_orchestrator_flash.py +0 -0
  947. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_packing.py +0 -0
  948. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_packing_coverage.py +0 -0
  949. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_persisted_spec_envelope.py +0 -0
  950. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_plane_lease.py +0 -0
  951. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_poll_helpers.py +0 -0
  952. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_preflight.py +0 -0
  953. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_processor_chat_template.py +0 -0
  954. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_projects.py +0 -0
  955. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_prompt_budget.py +0 -0
  956. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_qwen9b_base.py +0 -0
  957. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_recent_artifact_migration.py +0 -0
  958. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_removed_algorithms.py +0 -0
  959. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_removed_training_settings.py +0 -0
  960. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_replay_guard.py +0 -0
  961. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_resolve_params_b.py +0 -0
  962. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_resume_on_retry.py +0 -0
  963. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_retry_decision.py +0 -0
  964. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_reward_server_cleanup.py +0 -0
  965. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_rl_train.py +0 -0
  966. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_rollout_engine_prompt.py +0 -0
  967. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_rollout_samples.py +0 -0
  968. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_run_log_integrity.py +0 -0
  969. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_run_registry_lifecycle.py +0 -0
  970. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_runmgmt.py +0 -0
  971. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_runtime_capsule.py +0 -0
  972. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_runtime_credentials.py +0 -0
  973. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_runtime_secret_integrity.py +0 -0
  974. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_schema_boundary_integrity.py +0 -0
  975. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve.py +0 -0
  976. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_bootstrap_http.py +0 -0
  977. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_launch.py +0 -0
  978. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_manifest.py +0 -0
  979. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_materialize.py +0 -0
  980. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_packaging.py +0 -0
  981. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_app_progress.py +0 -0
  982. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_cache_resource_cleanup.py +0 -0
  983. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_chat_transport.py +0 -0
  984. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_control.py +0 -0
  985. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_docs.py +0 -0
  986. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_modal_contract_lock.py +0 -0
  987. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_modal_sdk.py +0 -0
  988. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  989. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_modal_teardown_identity.py +0 -0
  990. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_profile_qualification.py +0 -0
  991. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_profiles.py +0 -0
  992. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_provisioning_common.py +0 -0
  993. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_provisioning_modal.py +0 -0
  994. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_reasoning_content.py +0 -0
  995. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_resolve_provenance.py +0 -0
  996. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_adapters.py +0 -0
  997. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_engine.py +0 -0
  998. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_hub.py +0 -0
  999. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_package.py +0 -0
  1000. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serve_runtime_types.py +0 -0
  1001. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_app_coverage.py +0 -0
  1002. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_auth_singleflight.py +0 -0
  1003. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_billing.py +0 -0
  1004. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_checkpoints_coverage.py +0 -0
  1005. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_db.py +0 -0
  1006. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_envs_coverage.py +0 -0
  1007. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_locks_coverage.py +0 -0
  1008. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_managed_chat_requests.py +0 -0
  1009. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_server_serving_resources.py +0 -0
  1010. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_conformance_gate.py +0 -0
  1011. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_context_preflight.py +0 -0
  1012. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_contract.py +0 -0
  1013. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_input_integrity.py +0 -0
  1014. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_schema_coverage.py +0 -0
  1015. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_serving_unavailable_errors.py +0 -0
  1016. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_batch_prefetch.py +0 -0
  1017. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_cancel_profile_pricing.py +0 -0
  1018. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_chunked_nll.py +0 -0
  1019. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_cost_reduction.py +0 -0
  1020. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_dataset_lazy_images.py +0 -0
  1021. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_dataset_nulls.py +0 -0
  1022. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_example_selection.py +0 -0
  1023. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_gc_off.py +0 -0
  1024. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_max_context.py +0 -0
  1025. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_memory_policy.py +0 -0
  1026. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_step_floor.py +0 -0
  1027. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_tools.py +0 -0
  1028. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_warmup_schedule.py +0 -0
  1029. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_sft_workload.py +0 -0
  1030. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_smoke_content_integrity.py +0 -0
  1031. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_source_attestation_flow.py +0 -0
  1032. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_source_layout.py +0 -0
  1033. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_source_snapshot.py +0 -0
  1034. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_spec_and_validation.py +0 -0
  1035. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_spec_contract_bytes.py +0 -0
  1036. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_staged_environment.py +0 -0
  1037. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_status_reporting.py +0 -0
  1038. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_status_updates.py +0 -0
  1039. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_step_floor.py +0 -0
  1040. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_step_metrics.py +0 -0
  1041. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_step_timing.py +0 -0
  1042. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_structured_option_safety.py +0 -0
  1043. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_structured_outputs.py +0 -0
  1044. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_structured_runtime_options.py +0 -0
  1045. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_submission_outcome.py +0 -0
  1046. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_terminal_artifacts.py +0 -0
  1047. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_thinking_config.py +0 -0
  1048. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_thinking_tool_calls.py +0 -0
  1049. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_tool_call_exact_parsing.py +0 -0
  1050. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_tool_scalar_unions.py +0 -0
  1051. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_train_context_preflight.py +0 -0
  1052. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_training_controls.py +0 -0
  1053. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_training_phases.py +0 -0
  1054. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_transfer_queue_init.py +0 -0
  1055. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_type_comment_prose.py +0 -0
  1056. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_upstream_rollout_contract.py +0 -0
  1057. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_upstream_runtime_policy.py +0 -0
  1058. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_upstream_verl_contract.py +0 -0
  1059. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_verifiers.py +0 -0
  1060. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_verl_checkpoint_export.py +0 -0
  1061. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_verl_child_plugins.py +0 -0
  1062. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_verl_silence_watchdog.py +0 -0
  1063. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_version.py +0 -0
  1064. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_versioned_rollout_contract.py +0 -0
  1065. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  1066. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_vllm_moe_lora_backport.py +0 -0
  1067. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_vram_architecture.py +0 -0
  1068. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_wandb_link.py +0 -0
  1069. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_wandb_naming.py +0 -0
  1070. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_warmstart_adapter_download.py +0 -0
  1071. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_warmstart_error_attribution.py +0 -0
  1072. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_warmstart_image_adapters.py +0 -0
  1073. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_watchdog_startup_cleanup.py +0 -0
  1074. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_weight_cache.py +0 -0
  1075. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_hardexit.py +0 -0
  1076. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_image.py +0 -0
  1077. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_worker_thinking.py +0 -0
  1078. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_workflow_contracts.py +0 -0
  1079. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_workload_profile.py +0 -0
  1080. {freesolo_flash_dev-1.4.11 → freesolo_flash_dev-1.4.12}/tests/test_zero2_sharding_gate.py +0 -0
@@ -218,11 +218,11 @@ jobs:
218
218
  # marks the whole job red even though the bake + push already succeeded.
219
219
  enable-cache: false
220
220
 
221
- - name: Sync deps (flash + modal + hf)
221
+ - name: Sync bake dependencies
222
222
  if: steps.gate.outputs.run == 'true'
223
223
  run: uv sync --extra server
224
224
 
225
- # MODAL_TOKEN_ID + MODAL_TOKEN_SECRET (the warmup GPU sandbox) + HF_TOKEN (the temp dataset that ferries code/cache) are
225
+ # MODAL_TOKEN_ID + MODAL_TOKEN_SECRET (the warmup GPU sandbox) + HF_TOKEN (upstream model/tokenizer downloads) are
226
226
  # native repo Actions secrets, synced from Infisical (prod:/flash-ci) by the github-ci-flash
227
227
  # Secret Sync. No Infisical CLI/login at job time -- Infisical stays the source of truth and
228
228
  # rotations propagate via the sync. BASE_IMAGE
@@ -18,6 +18,10 @@ This file starts at 1.1.35. Earlier releases are not reconstructed here; use
18
18
 
19
19
  ## Unreleased
20
20
 
21
+ - Correct artifact diagnostics, generated training guidance, and internal documentation to name
22
+ Azure storage. Upstream model/tokenizer downloads and explicit Hugging Face exports remain
23
+ supported; legacy serialized storage-field names remain compatible.
24
+
21
25
  ### Removed
22
26
 
23
27
  - Removed built-in OPD completely: training workers, managed teacher API and ledger, configuration,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: freesolo-flash-dev
3
- Version: 1.4.11
3
+ Version: 1.4.12
4
4
  Summary: Flash — managed LoRA post-training (SFT/GRPO) 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
@@ -7,11 +7,10 @@ import json
7
7
  import os
8
8
  import shutil
9
9
  import tarfile
10
+ import tempfile
10
11
  import time
11
12
  import uuid
12
13
 
13
- ARTIFACT_NAMESPACE = "Freesolo-Co"
14
-
15
14
  # One Modal GPU per compiler architecture; the worker verifies the requested SM.
16
15
  GPU_BY_SM = {
17
16
  "sm80": "A100-80GB",
@@ -27,31 +26,30 @@ def log(msg: str) -> None:
27
26
  print(f"[bake-ci] {msg}", flush=True)
28
27
 
29
28
 
30
- def _upload_flash_code(api, repo: str, token: str) -> None:
31
- """Mirror the worker's upload_code: push the running flash package to code/flash (exact mirror)."""
32
- import flash
29
+ async def _collect_bake(sandbox, out, arch: str, deadline: int) -> None:
30
+ """Run warmup while the sandbox stays alive, then stream its outputs before teardown."""
31
+ from flash.providers.modal import api as modal_api
33
32
 
34
- pkg_dir = os.path.realpath(os.path.dirname(os.path.abspath(flash.__file__)))
35
- api.create_repo(repo_id=repo, repo_type="dataset", private=True, exist_ok=True)
36
- # mirror upload_code: force private even if the id pre-existed as a public repo, before any
37
- # flash source is uploaded.
38
- api.update_repo_settings(repo_id=repo, repo_type="dataset", private=True)
39
- api.upload_folder(
40
- folder_path=pkg_dir,
41
- path_in_repo="code/flash",
42
- repo_id=repo,
43
- repo_type="dataset",
44
- ignore_patterns=["__pycache__/*", "*.pyc"],
45
- delete_patterns=["**"],
33
+ process = await sandbox.exec.aio("python", "-u", "/opt/flash/bake.py", timeout=deadline)
34
+ returncode = await process.wait.aio()
35
+ if returncode != 0:
36
+ raise modal_api.ModalApiError(
37
+ f"Kernel warmup exited with code {returncode}; "
38
+ f"inspect Modal sandbox {sandbox.object_id}"
39
+ )
40
+ status = await sandbox.filesystem.read_text.aio("/out/STATUS")
41
+ if status != f"rc=0\narch={arch}\n":
42
+ raise modal_api.ModalApiError("kernel warmup finished without a valid completion marker")
43
+ await sandbox.filesystem.copy_to_local.aio(
44
+ "/out/kernel_cache.tar.gz", out / "kernel_cache.tar.gz"
46
45
  )
47
- log(f"uploaded flash code -> {repo}:code/flash (from {pkg_dir})")
46
+ await sandbox.filesystem.copy_to_local.aio("/out/warmup.log", out / "bake-warmup.log")
48
47
 
49
48
 
50
49
  def main() -> int:
51
50
  from pathlib import Path
52
51
 
53
- from huggingface_hub import HfApi, snapshot_download
54
-
52
+ import flash
55
53
  from flash.providers.modal import api as modal_api
56
54
 
57
55
  parser = argparse.ArgumentParser(description="Bake worker kernels on Modal")
@@ -65,11 +63,7 @@ def main() -> int:
65
63
  if not 1 <= args.deadline_min <= 1440:
66
64
  parser.error("deadline must be between 1 and 1440 minutes")
67
65
  token = os.environ["HF_TOKEN"]
68
- hf = HfApi(token=token)
69
66
  suffix = args.run_id or f"{int(time.time())}-{uuid.uuid4().hex[:8]}"
70
- repo = (
71
- f"{os.environ.get('FLASH_HF_NAMESPACE', ARTIFACT_NAMESPACE)}/kernel-bake-{args.sm}-{suffix}"
72
- )
73
67
  entry = Path(__file__).with_name("bake_sandbox_entry.py")
74
68
 
75
69
  async def bake(modal, client):
@@ -79,74 +73,51 @@ def main() -> int:
79
73
  create_if_missing=True,
80
74
  client=client,
81
75
  )
82
- image = modal.Image.from_registry(args.image).add_local_file(
83
- str(entry), "/opt/flash/bake.py", copy=True
76
+ image = (
77
+ modal.Image.from_registry(args.image)
78
+ .add_local_dir(
79
+ Path(flash.__file__).parent,
80
+ "/runcode/code/flash",
81
+ copy=True,
82
+ ignore=["**/__pycache__/**", "**/*.pyc"],
83
+ )
84
+ .add_local_file(str(entry), "/opt/flash/bake.py", copy=True)
84
85
  )
85
86
  sandbox = await modal.Sandbox.create.aio(
86
- "python",
87
- "-u",
88
- "/opt/flash/bake.py",
87
+ "sleep",
88
+ "infinity",
89
89
  app=app,
90
90
  image=image,
91
91
  name=f"bake-{args.sm}-{suffix}",
92
92
  gpu=GPU_BY_SM[args.sm],
93
- timeout=args.deadline_min * 60,
93
+ timeout=min(86400, args.deadline_min * 60 + 600),
94
94
  cpu=(4, 8),
95
95
  # Keep the reservation at 32 GiB, but allow compiler memory to burst. The
96
96
  # H100 warmup was evicted for thrashing at the previous 64 GiB limit.
97
97
  memory=(32768, 131072),
98
- secrets=[
99
- modal.Secret.from_dict(
100
- {"BAKE_HF_REPO": repo, "BAKE_ARCH": args.arch, "HF_TOKEN": token}
101
- )
102
- ],
98
+ secrets=[modal.Secret.from_dict({"BAKE_ARCH": args.arch, "HF_TOKEN": token})],
103
99
  client=client,
104
100
  )
105
101
  try:
106
- await sandbox.wait.aio()
107
- returncode = await sandbox.poll.aio()
108
- if returncode != 0:
109
- # The provider wrapper sanitizes ordinary exceptions. Preserve this
110
- # credential-free diagnostic so CI names the failed sandbox and exit.
111
- raise modal_api.ModalApiError(
112
- f"Kernel warmup exited with code {returncode}; "
113
- f"inspect Modal sandbox {sandbox.object_id}"
114
- )
102
+ await _collect_bake(sandbox, staging, args.arch, args.deadline_min * 60)
115
103
  finally:
116
104
  await sandbox.terminate.aio(wait=True)
117
105
 
118
- try:
119
- _upload_flash_code(hf, repo, token)
120
- modal_api.call(bake, timeout=args.deadline_min * 60 + 120)
121
- if not _status_present(hf, repo, retries=3):
122
- raise RuntimeError("kernel warmup finished without its completion marker")
123
- import tempfile
124
-
125
- with tempfile.TemporaryDirectory(prefix="flash-kernel-") as temp:
126
- snapshot_download(
127
- repo_id=repo,
128
- repo_type="dataset",
129
- allow_patterns=["out/**"],
130
- local_dir=temp,
131
- token=token,
132
- )
133
- shutil.copytree(Path(temp) / "out", args.out, dirs_exist_ok=True)
134
- archive = Path(args.out) / "kernel_cache.tar.gz"
135
- if archive.exists():
136
- _extract_cache_archive(archive, Path(args.out))
137
- archive.unlink()
138
- # The base image can contain an older warmup.log inside its cache tree. Keep the
139
- # current subprocess log authoritative after archive extraction.
140
- log_path = Path(temp) / "out" / "bake-warmup.log"
141
- if log_path.exists():
142
- shutil.copy2(log_path, Path(args.out) / "bake-warmup.log")
143
- shutil.copy2(log_path, Path(args.out) / "warmup.log")
144
- return _verify(args.out, args.sm)
145
- finally:
146
- try:
147
- hf.delete_repo(repo_id=repo, repo_type="dataset")
148
- except Exception:
149
- log(f"WARNING: could not delete temporary repository {repo}; remove it manually")
106
+ # Never let leftovers from a previous bake satisfy this run's verification.
107
+ with tempfile.TemporaryDirectory(prefix="flash-kernel-") as temp:
108
+ staging = Path(temp)
109
+ modal_api.call(bake, timeout=args.deadline_min * 60 + 600)
110
+ archive = staging / "kernel_cache.tar.gz"
111
+ # Preserve the current log even if an older log exists inside the exported cache.
112
+ current_log = (staging / "bake-warmup.log").read_bytes()
113
+ _extract_cache_archive(archive, staging)
114
+ archive.unlink()
115
+ (staging / "bake-warmup.log").write_bytes(current_log)
116
+ (staging / "warmup.log").write_bytes(current_log)
117
+ result = _verify(str(staging), args.sm)
118
+ if result == 0:
119
+ shutil.copytree(staging, args.out, dirs_exist_ok=True)
120
+ return result
150
121
 
151
122
 
152
123
  def _extract_cache_archive(archive_path, destination) -> None:
@@ -167,19 +138,6 @@ def _extract_cache_archive(archive_path, destination) -> None:
167
138
  archive.extractall(root, members=members, filter="data")
168
139
 
169
140
 
170
- def _status_present(api, repo: str, retries: int = 1) -> bool:
171
- """Authoritative out/STATUS check, retried to ride out a transient HF list error."""
172
- for i in range(retries):
173
- try:
174
- if "out/STATUS" in api.list_repo_files(repo, repo_type="dataset"):
175
- return True
176
- except Exception as e:
177
- log(f"hf list err (status recheck {i + 1}/{retries}): {str(e)[:100]}")
178
- if i < retries - 1:
179
- time.sleep(5)
180
- return False
181
-
182
-
183
141
  def _verify(out: str, sm: str) -> int:
184
142
  """Confirm the artifact actually landed and its metadata matches the requested arch."""
185
143
  from flash.engine.worker.runtime.kernel_warmup import CACHE_META_FILENAME, has_raw_kernel_cache
@@ -0,0 +1,90 @@
1
+ """Warm and verify kernels inside the GPU sandbox, writing outputs for direct Modal transfer.
2
+
3
+ The CI helper mounts the Flash package at /runcode/code/flash. The worker image supplies
4
+ its dependencies. HF_TOKEN is retained only for upstream model/tokenizer downloads;
5
+ BAKE_ARCH selects the compiler architecture. /out/STATUS is written last.
6
+ """
7
+
8
+ import json
9
+ import os
10
+ import shutil
11
+ import subprocess
12
+ import tarfile
13
+ import time
14
+
15
+ CACHE_DIR = "/opt/flash/kernelcache"
16
+ OUT_DIR = "/out"
17
+ CACHE_ARCHIVE = "/out/kernel_cache.tar.gz"
18
+
19
+
20
+ def _replace_cache_with_exported_copy(cache_dir: str, archive_path: str) -> None:
21
+ """Archive the cache, delete the originals, and restore files at the same absolute paths."""
22
+ with tarfile.open(archive_path, "w:gz", compresslevel=1) as archive:
23
+ archive.add(cache_dir, arcname=".")
24
+ shutil.rmtree(cache_dir)
25
+ with tarfile.open(archive_path, "r:gz") as archive:
26
+ archive.extractall(cache_dir, filter="data")
27
+
28
+
29
+ def main() -> int:
30
+ os.environ["HF_HUB_DISABLE_XET"] = "1"
31
+ arch = os.environ.get("BAKE_ARCH", "")
32
+ os.makedirs(OUT_DIR, exist_ok=True)
33
+ with open(os.path.join(OUT_DIR, "STARTED"), "w") as marker:
34
+ marker.write(f"started arch={arch}\n")
35
+
36
+ env = {**os.environ, "PYTHONPATH": "/runcode/code"}
37
+ python_bin = os.environ.get("FLASH_VERL_PYTHON", "/opt/verl-venv/bin/python")
38
+ if not os.path.isfile(python_bin):
39
+ raise RuntimeError(f"training interpreter missing: {python_bin}")
40
+ cache_dir = CACHE_DIR
41
+ # An already-baked input image must not supply stale artifacts or validation receipts.
42
+ shutil.rmtree(cache_dir, ignore_errors=True)
43
+ os.makedirs(cache_dir)
44
+ cmd = [
45
+ python_bin,
46
+ "-m",
47
+ "flash.engine.worker.runtime.kernel_warmup",
48
+ "--out",
49
+ cache_dir,
50
+ ]
51
+ if arch:
52
+ cmd += ["--arch", arch]
53
+ print(f"[bake] running: {' '.join(cmd)}", flush=True)
54
+ # capture the warmup output into /out so it ships back with the cache -- lets the CI helper show
55
+ # which warm steps ran and why a bake failed to produce compiled kernel files.
56
+ os.makedirs(OUT_DIR, exist_ok=True)
57
+ started = time.monotonic()
58
+ with open(os.path.join(OUT_DIR, "warmup.log"), "wb") as lf:
59
+ rc = subprocess.call(cmd, env=env, stdout=lf, stderr=subprocess.STDOUT)
60
+ first_seconds = time.monotonic() - started
61
+ validation = {"first_process_seconds": first_seconds, "first_exit_code": rc}
62
+ if rc == 0:
63
+ # Remove the compiler outputs and restore only the exported archive. A fresh process
64
+ # alone could otherwise reuse files that never make it into the shipped artifact.
65
+ _replace_cache_with_exported_copy(cache_dir, CACHE_ARCHIVE)
66
+ started = time.monotonic()
67
+ with open(os.path.join(OUT_DIR, "warmup.log"), "ab") as lf:
68
+ lf.write(b"\n[bake] fresh-process cache reload validation\n")
69
+ rc = subprocess.call(
70
+ [*cmd, "--verify-cache"], env=env, stdout=lf, stderr=subprocess.STDOUT
71
+ )
72
+ validation.update(
73
+ reload_process_seconds=time.monotonic() - started,
74
+ reload_exit_code=rc,
75
+ exported_cache_replayed=True,
76
+ )
77
+ with open(os.path.join(cache_dir, "cache_validation.json"), "w") as output:
78
+ json.dump(validation, output)
79
+ print(f"[bake] kernel_warmup rc={rc}", flush=True)
80
+ # Preserve hidden compiler directories and the exact cache layout in one streamed archive.
81
+ with tarfile.open(CACHE_ARCHIVE, "w:gz", compresslevel=1) as archive:
82
+ archive.add(cache_dir, arcname=".")
83
+ with open(os.path.join(OUT_DIR, "STATUS"), "w") as marker:
84
+ marker.write(f"rc={rc}\narch={arch}\n")
85
+ print(f"[bake] ENTRY_DONE rc={rc}", flush=True)
86
+ return rc
87
+
88
+
89
+ if __name__ == "__main__":
90
+ raise SystemExit(main())
@@ -115,7 +115,7 @@ def _index_shard_names(names: set[str], suffix: str) -> set[str]:
115
115
 
116
116
 
117
117
  # The largest attempt identity any artifact name may carry. An attempt number reaches a filename and
118
- # an HF path, so it is bounded rather than merely nonnegative: an unbounded int would still format,
118
+ # an artifact path, so it is bounded rather than merely nonnegative: an unbounded int would still format,
119
119
  # and the resulting name is the one thing a later reader has to match exactly.
120
120
  MAX_ATTEMPT_ID = (1 << 63) - 1
121
121
 
@@ -6,7 +6,7 @@ actually serve? Answering it separately let them drift -- customer-owned resolut
6
6
  config that hosted admission accepted, so the same artifact was refused before provisioning on one
7
7
  path and refused inside the paid container on the other.
8
8
 
9
- Every rule here is decidable from the config alone. Nothing in this module reads the hub, the
9
+ Every rule here is decidable from the config alone. Nothing in this module reads artifact storage, the
10
10
  filesystem, or a provider, so a verdict costs a caller nothing beyond the bytes it already holds.
11
11
  That is why it sits beside the rank and target rules rather than under a deployment path: the
12
12
  GPU-side materializer revalidates a cache entry it already holds, and it needs the same verdict
@@ -44,7 +44,7 @@ class _DuplicateConfigKey(AdapterConfigError):
44
44
  def parse_declared_adapter_config(raw: bytes, *, source: str) -> DeclaredAdapterConfig:
45
45
  """read one adapter's declared provenance, or refuse the bytes.
46
46
 
47
- ``source`` names the file in every message, so a caller that fetched the config from the hub and
47
+ ``source`` names the file in every message, so a caller that fetched the config from artifact storage and
48
48
  one that read it off disk both report a location the reader can go look at.
49
49
  """
50
50
 
@@ -105,13 +105,9 @@ def _positive_int(value: Any, *, source: str, field: str) -> int:
105
105
 
106
106
 
107
107
  def _file_identity(file_info: Any) -> str:
108
- # the producer is `ArtifactStore.list_repo_tree`, which yields `ArtifactFile` -- whose `__init__` always
109
- # sets `path`/`size`/`blob_id` and builds `lfs` as a `BlobLfsInfo` (field `sha256`, no `oid`).
110
- # verified at the declared floor `huggingface-hub>=1.2.0` and at the installed 1.27.0, so the
111
- # mapping-shaped `lfs` and the `lfs.oid` spelling have no producer in the supported range.
112
- # `getattr` stays only on `lfs` itself, which is legitimately optional (non-LFS files), and on
113
- # the entry object, because a listing also yields `RepoFolder` -- no size, no blob_id -- which
114
- # must fail closed rather than hash to a folder's tree id.
108
+ # Azure ArtifactFile entries carry path, size and the content digest in blob_id.
109
+ # lfs.sha256 remains accepted for saved source metadata from before the migration.
110
+ # reject entries without file identity rather than hashing a folder or missing metadata.
115
111
  lfs = getattr(file_info, "lfs", None)
116
112
  oid = getattr(lfs, "sha256", None)
117
113
  size = getattr(lfs, "size", None)
@@ -487,7 +483,7 @@ def inspect_adapter_config(
487
483
  def load_artifact_adapter_config(
488
484
  adapter_ref: str, token: str | None = None, revision: str | None = None
489
485
  ) -> Mapping[str, Any]:
490
- """Read ``adapter_config.json`` for a Flash adapter ref from Hugging Face datasets."""
486
+ """Read ``adapter_config.json`` for a Flash adapter ref from private Azure storage."""
491
487
  repo, filename = adapter_config_path_from_ref(adapter_ref)
492
488
  try:
493
489
  from flash.artifacts.api import download_file
@@ -696,7 +696,7 @@ def _write_rl_config(
696
696
  "# Constrain every rollout with guided decoding (a JSON schema is shown; regex and\n"
697
697
  "# choice forms also parse) — see `flash train --doc`:\n"
698
698
  '# structured_outputs = \'{"type": "object", "properties": {"answer": {"type": "string"}}, "required": ["answer"]}\'\n'
699
- "# GPU and HF artifacts are managed automatically by the platform: the GPU is\n"
699
+ "# GPU and Azure artifacts are managed automatically by the platform: the GPU is\n"
700
700
  "# the cheapest fitting managed class, and artifacts live in a private environment-scoped repo.\n"
701
701
  )
702
702
 
@@ -725,7 +725,7 @@ def _write_sft_config(
725
725
  f"{max_examples_line}"
726
726
  "lora_rank = 32\n"
727
727
  f"{sft_reasoning_note}"
728
- "# GPU and HF artifacts are managed automatically by the platform: the GPU is\n"
728
+ "# GPU and Azure artifacts are managed automatically by the platform: the GPU is\n"
729
729
  "# the cheapest fitting managed class, and artifacts live in a private environment-scoped repo.\n"
730
730
  )
731
731
 
@@ -16,7 +16,7 @@ def _positive_finite_seconds(raw: str) -> float:
16
16
 
17
17
  Without this, `--timeout 0`, a negative, `nan`, or `inf` parses fine and only fails inside the
18
18
  provider's `validate_deadline`, which raises `ValueError` outside the lifecycle error handling
19
- -- so the CLI prints a traceback *after* resolving and downloading the Hub inputs, instead of
19
+ -- so the CLI prints a traceback *after* resolving and downloading the model and artifact inputs, instead of
20
20
  the ordinary argument error the user should get before any work happens.
21
21
  """
22
22
  value = float(raw)
@@ -31,8 +31,8 @@ def _positive_int(raw: str) -> int:
31
31
  """reject a nonpositive integer before deployment input resolution.
32
32
 
33
33
  a bare `type=int` accepts `0` and negatives, while downstream validation runs only after
34
- `resolve_adapter` has already resolved and downloaded the hub inputs. argparse can reject these
35
- values before they cost a hub round trip.
34
+ `resolve_adapter` has already resolved and downloaded the model and artifact inputs. argparse can reject these
35
+ values before they cost a storage round trip.
36
36
  """
37
37
  value = int(raw)
38
38
  if value <= 0:
@@ -73,18 +73,19 @@ def _add_deployment_arguments(command: argparse.ArgumentParser) -> None:
73
73
  required=True,
74
74
  help="digest-qualified serving image reference (name@sha256:...)",
75
75
  )
76
- command.add_argument("--artifact-repo", required=True, help="hub repo holding the adapter")
76
+ command.add_argument(
77
+ "--artifact-repo", required=True, help="Azure artifact namespace holding the adapter"
78
+ )
77
79
  command.add_argument(
78
80
  "--artifact-subfolder", required=True, help="path within the repo holding the adapter"
79
81
  )
80
- # flash runs publish adapters into dataset repos, so that stays the default. the override
81
- # exists for an adapter published as a model repo, where resolution would otherwise fail
82
- # against the wrong repo type rather than reporting that the repo is a different kind.
82
+ # keep serialized type labels compatible with existing deployment manifests.
83
+ # both labels resolve through Azure artifact storage, never an upstream model repository.
83
84
  command.add_argument(
84
85
  "--artifact-repo-type",
85
86
  choices=("dataset", "model"),
86
87
  default="dataset",
87
- help="hub repo type holding the adapter (default: dataset, as flash runs publish)",
88
+ help="legacy artifact type label (default: dataset; storage uses Azure)",
88
89
  )
89
90
  command.add_argument(
90
91
  "--lora-rank", type=_positive_int, required=True, help="the adapter's lora rank"
@@ -156,7 +157,7 @@ def _add_existing_deployment_identity(command: argparse.ArgumentParser) -> None:
156
157
  "--deployment-identity",
157
158
  default="",
158
159
  help=(
159
- "immutable identity printed by deploy; avoids Hub resolution when checking or removing "
160
+ "immutable identity printed by deploy; avoids artifact resolution when checking or removing "
160
161
  "an existing deployment"
161
162
  ),
162
163
  )
@@ -351,7 +351,7 @@ There is no "all" sentinel, so this number is duplicated from the data into the
351
351
  **can drift**: if the dataset later grows, a stale `max_examples` silently trains on a
352
352
  subset instead of erroring. Re-check it whenever the dataset or the params change.
353
353
 
354
- GPU allocation and HF artifacts are **managed by default**: leave `[gpu] type` unset to
354
+ GPU allocation and Azure artifacts are **managed by default**: leave `[gpu] type` unset to
355
355
  let the allocator pick the cheapest fitting validated class, while `train.hf_repo` remains
356
356
  platform-managed. `[gpu] providers` takes an ordered list of provider names and prefers them in
357
357
  that order: the preference ranks ahead of cost, so a preferred provider wins even when a cheaper
@@ -349,7 +349,7 @@ class TrainSpec:
349
349
  # internal: immutable source dataset commit used for a prepared warm-start. parsed only from
350
350
  # control-plane jobspec payloads; the public config schema does not accept this key.
351
351
  init_from_adapter_revision: str = ""
352
- # PLATFORM-MANAGED: control-plane-assigned HF artifact repo. Not a user config key: it has no
352
+ # PLATFORM-MANAGED: Azure artifact namespace. Not a user config key: it has no
353
353
  # ``introduced_in`` so it is absent from TRAIN_SCHEMA_KEYS and ``[train] hf_repo`` is rejected.
354
354
  # JobSpec.from_dict still round-trips the control-plane-assigned value; to_dict() omits it.
355
355
  # Legacy serialized spelling retained so existing preparation digests remain valid.
@@ -94,7 +94,7 @@ def _run_worker_mode(*, context: WorkerContext) -> None:
94
94
  "already_done", gpu=worker_perf.gpu_diagnostics(), context=context
95
95
  )
96
96
  # DONE is written only AFTER metrics.json uploads (required=True), so a failed read here
97
- # is a transient HF blip, never a missing file. Retry, then signal RETRIABLE (reschedule)
97
+ # is a transient artifact read failure, never a missing file. Retry, then signal RETRIABLE (reschedule)
98
98
  # rather than SystemExit — a BaseException that bypasses the retriable-stamping handler
99
99
  # below and would report a genuinely-succeeded run as a fatal failure.
100
100
  last_err: Exception | None = None
@@ -129,7 +129,7 @@ def _run_worker_mode(*, context: WorkerContext) -> None:
129
129
  error_kind = type(last_err).__name__ if last_err is not None else "unknown error"
130
130
  raise worker_perf.RetriableInfraError(
131
131
  "DONE present but metrics.json unreadable after retries "
132
- f"(transient HF; {error_kind})"
132
+ f"(transient artifact read; {error_kind})"
133
133
  )
134
134
  # these setups run in the parent; verl trains in FLASH_VERL_PYTHON.
135
135
  # only _force_fla_triton_gdn_on_sm100 propagates through FLA_* env vars. the install and the
@@ -159,7 +159,7 @@ def _run_worker_mode(*, context: WorkerContext) -> None:
159
159
  handler()
160
160
  finally:
161
161
  context.close()
162
- # hard-exit: colocated vllm can deadlock on nccl/cuda teardown; all artifacts are already on hf.
162
+ # hard-exit: colocated vllm can deadlock on nccl/cuda teardown; all artifacts are already in Azure.
163
163
  sys.stdout.flush()
164
164
  sys.stderr.flush()
165
165
  os._exit(0)
@@ -1,4 +1,4 @@
1
- """hf artifact channel for code delivery, adapters, metrics, and checkpoints."""
1
+ """Azure artifact channel for code delivery, adapters, metrics, and checkpoints."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -106,9 +106,9 @@ def _sleep_with_artifact_deadline(delay: float, *, context: WorkerContext) -> bo
106
106
  def _artifact_upload(
107
107
  do_upload, repo_subpath: str, required: bool, label: str, *, context: WorkerContext
108
108
  ) -> bool:
109
- """HF upload loop: retries + raises on required artifacts; warn-only on optional.
109
+ """Artifact upload loop: retries + raises on required artifacts; warn-only on optional.
110
110
 
111
- Returns True when a commit landed (or HF_REPO is unset), False on best-effort failure.
111
+ Returns True when a commit landed (or the artifact namespace is unset), False on best-effort failure.
112
112
  """
113
113
  if not context.config.hf_repo:
114
114
  return True
@@ -145,7 +145,7 @@ def _artifact_upload(
145
145
  def upload_artifact_file(
146
146
  local_path: str, repo_subpath: str, required: bool = False, *, context: WorkerContext
147
147
  ) -> bool:
148
- """Upload one file to the run's HF prefix. Returns True on success (see ``_artifact_upload``)."""
148
+ """Upload one file to the run's artifact prefix. Returns True on success (see ``_artifact_upload``)."""
149
149
  return _artifact_upload(
150
150
  lambda: artifact_api().upload_file(
151
151
  path_or_fileobj=local_path,
@@ -177,7 +177,7 @@ def _resume_checkpoint_upload_slot(timeout_s: float | None = None, *, context: W
177
177
  def upload_artifact_folder(
178
178
  local_dir: str, repo_subpath: str, required: bool = False, *, context: WorkerContext
179
179
  ) -> bool:
180
- """Upload a folder to the run's HF prefix. Returns True on success (see ``_artifact_upload``)."""
180
+ """Upload a folder to the run's artifact prefix. Returns True on success (see ``_artifact_upload``)."""
181
181
  return _artifact_upload(
182
182
  lambda: artifact_api().upload_folder(
183
183
  folder_path=local_dir,
@@ -68,7 +68,7 @@ _HB_THROTTLED_STAGES = _HB_TIGHT_LIVENESS_STAGES | frozenset({"rl_step", "sft_st
68
68
  # swallow it. the wrap that follows re-emits with liveness=True and stays throttled.
69
69
  _HB_MODEL_LOAD_STAGES = frozenset({"sft_model_load", "custom_model_load"})
70
70
  _HB_SUCCESS_TERMINAL_STAGES = frozenset({"done", "already_done"})
71
- # 600s -> ~6 commits/hr; keeps stall detector alive without hitting the HF commit cap.
71
+ # 600s -> ~6 commits/hr; keeps the stall detector alive while bounding storage writes.
72
72
  _HB_TERMINAL_ONLY_INTERVAL_S = 600.0
73
73
 
74
74
 
@@ -99,22 +99,22 @@ def _is_critical_stage(stage: str) -> bool:
99
99
 
100
100
  `_failed` earns this as much as the `error_` prefix does: a failure heartbeat is emitted once, at
101
101
  the moment the failure is known, and nothing later restates it. `checkpoint_upload_failed` is
102
- raised from inside a long HF upload, which is precisely when `_HB_UPLOAD_IN_FLIGHT` is set and an
102
+ raised from inside a long artifact upload, which is precisely when `_HB_UPLOAD_IN_FLIGHT` is set and an
103
103
  unforced ping is dropped -- so the one report of the failure would be discarded exactly in the
104
104
  case that produces it.
105
105
  """
106
106
  return _is_terminal_stage(stage) or stage.endswith("_failed")
107
107
 
108
108
 
109
- # Guards throttle bookkeeping; slow HF commit runs outside this lock so heartbeat and liveness
109
+ # Guards throttle bookkeeping; slow artifact commit runs outside this lock so heartbeat and liveness
110
110
  # threads don't block on the network.
111
- # Serializes HF commits to prevent reorder; each thread uploads its own per-call temp file.
111
+ # Serializes artifact commits to prevent reorder; each thread uploads its own per-call temp file.
112
112
  # Terminal/error commits wait longer — no later heartbeat can repair them.
113
113
  _HB_UPLOAD_LOCK_TIMEOUT_S = 30.0
114
114
  _HB_CRITICAL_UPLOAD_LOCK_TIMEOUT_S = 120.0
115
- # True while a thread holds _HB_UPLOAD_LOCK and is inside the HF commit. Read under _HB_LOCK.
115
+ # True while a thread holds _HB_UPLOAD_LOCK and is inside the artifact commit. Read under _HB_LOCK.
116
116
  #
117
- # The throttle clock (_HB_LAST_UPLOAD) only advances AFTER a commit lands, so during a slow HF
117
+ # The throttle clock (_HB_LAST_UPLOAD) only advances AFTER a commit lands, so during a slow artifact
118
118
  # commit every other throttled caller still computes upload_due=True, walks into
119
119
  # _HB_UPLOAD_LOCK.acquire() and blocks there for up to the acquire timeout -- 30s, or 120s on a
120
120
  # critical stage. That stalls the liveness daemon, and `liveness_heartbeat`'s join delays leaving
@@ -141,7 +141,7 @@ def _dump_thread_stacks(reason: str) -> None:
141
141
  def _console_heartbeat_snapshot(
142
142
  payload: dict, payload_committed: bool = True, upload_due: bool = False
143
143
  ) -> str:
144
- """render one bounded console record with explicit hf commit state."""
144
+ """render one bounded console record with explicit artifact commit state."""
145
145
  console_payload = dict(payload)
146
146
  metrics_last = console_payload.pop("metrics_last", None)
147
147
  if isinstance(metrics_last, list):
@@ -155,7 +155,7 @@ def _console_heartbeat_snapshot(
155
155
 
156
156
 
157
157
  def _set_upload_in_flight(value: bool, *, context: WorkerContext) -> None:
158
- """Mark whether an HF heartbeat commit is running. Call with _HB_LOCK held."""
158
+ """Mark whether an artifact heartbeat commit is running. Call with _HB_LOCK held."""
159
159
 
160
160
  context.heartbeat_state.upload_in_flight = value
161
161
 
@@ -248,7 +248,7 @@ def heartbeat(
248
248
  context.heartbeat_state.last_progress_ts = ts
249
249
  context.heartbeat_state.progress_seq += 1
250
250
  elif context.heartbeat_state.progress_seq > context.heartbeat_state.progress_uploaded_seq:
251
- # carry real progress that has not reached hf yet.
251
+ # carry real progress that has not reached artifact storage yet.
252
252
  liveness = False
253
253
  latest_progress_ts = float(context.heartbeat_state.last_progress_ts or 0.0)
254
254
  my_progress_seq = context.heartbeat_state.progress_seq
@@ -158,8 +158,8 @@ def _download_adapter(adapter_prefix: str | None, *, context: WorkerContext) ->
158
158
  "the prepared warm-start source adapter could not be downloaded"
159
159
  ) from None
160
160
  else:
161
- # a returned snapshot can still be incomplete: an interrupted transfer, or hf falling
162
- # back to a partial local_dir when a throttled metadata call cannot confirm the file set.
161
+ # a returned snapshot can still be incomplete: an interrupted transfer can leave
162
+ # a partial local_dir, so validate both config and weights before accepting it.
163
163
  if _warmstart_adapter_is_loadable(adir):
164
164
  return adir
165
165
  # discard partial local_dir materialization so the next attempt cannot reuse stale files.
@@ -130,7 +130,7 @@ def _durable_required_save_steps(
130
130
  )
131
131
  except Exception as error:
132
132
  raise _worker_perf.RetriableInfraError(
133
- f"could not verify required SFT save step {step} on hf"
133
+ f"could not verify required SFT save step {step} in artifact storage"
134
134
  ) from error
135
135
  if exists:
136
136
  durable.add(step)
@@ -535,7 +535,7 @@ def _publish_sft_result(
535
535
  _worker_hf.upload_artifact_folder(adapter_dir, "adapter", required=True, context=context)
536
536
  # only a durably published adapter may suppress the final publish. the seeded resume step no
537
537
  # longer needs excluding by hand: it is credited as deployable_published only when its
538
- # adapter was actually found on hf, so a resume that carried resumable state without a
538
+ # adapter was actually found in artifact storage, so a resume that carried resumable state without a
539
539
  # servable adapter falls through to this publish instead of being skipped.
540
540
  if (
541
541
  final_save_due(final_step, options.save_at_steps)