freesolo-flash-dev 1.2.132__tar.gz → 1.2.134__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 (943) hide show
  1. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/ci.yml +1 -2
  2. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/deploy-modal-dev.yml +1 -1
  3. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/deploy-modal.yml +32 -8
  4. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/PKG-INFO +1 -1
  5. freesolo_flash_dev-1.2.134/flash/adapters/config.py +136 -0
  6. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/core/spec.py +0 -21
  7. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/plan/recipe.py +0 -1
  8. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/profiling/dataset_profile.py +27 -59
  9. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/support/verl_checkpoint.py +2 -6
  10. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/opd_train_runner.py +0 -6
  11. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/rl_train_runner.py +0 -1
  12. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/sft_train.py +3 -8
  13. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/sft_train_runner.py +5 -34
  14. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/failures.py +1 -5
  15. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/overrides.py +3 -4
  16. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/state.py +0 -3
  17. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -5
  18. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/launch/inputs.py +0 -4
  19. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/launch/verl_config.py +1 -2
  20. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/sft/child/plugin.py +0 -46
  21. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/sft/setup/config.py +4 -10
  22. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/verl/capabilities.py +3 -5
  23. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/verl/checkpoints.py +1 -13
  24. freesolo_flash_dev-1.2.134/flash/providers/_lifecycle/bootstrapping/attempt.py +92 -0
  25. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +30 -61
  26. freesolo_flash_dev-1.2.134/flash/providers/_lifecycle/bootstrapping/preload.py +68 -0
  27. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/instances/poll_instance.py +8 -7
  28. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/net/deadline.py +0 -15
  29. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/artifacts/hf.py +13 -13
  30. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/artifacts/weight_cache.py +4 -5
  31. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/jobs/__init__.py +21 -22
  32. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/execution/job_execution.py +6 -7
  33. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/execution/polling.py +3 -10
  34. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/execution/provider.py +4 -5
  35. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/execution/resources.py +2 -7
  36. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/jobs/__init__.py +19 -20
  37. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/accounting/reconciliation.py +1 -1
  38. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/attempts.py +1 -4
  39. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/reporting.py +44 -28
  40. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/state.py +4 -7
  41. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/status.py +30 -0
  42. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/attach.py +9 -22
  43. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/attach_reconcile.py +2 -2
  44. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/attempt_supervision.py +16 -13
  45. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/deploy.py +1 -1
  46. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/lifecycle.py +3 -24
  47. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/recovery.py +3 -19
  48. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runtime_capsule/profiles.py +3 -1
  49. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/schema/__init__.py +0 -8
  50. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/launch.py +193 -139
  51. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/materialize.py +25 -48
  52. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/deployment/adapter_check.py +33 -17
  53. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/deployment/deploy.py +16 -33
  54. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/deployment/resolve.py +43 -120
  55. freesolo_flash_dev-1.2.134/flash/serve/provisioning/modal/planning/wrapper.py +38 -0
  56. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/asgi/app.py +33 -134
  57. freesolo_flash_dev-1.2.134/flash/server/billing/charges.py +288 -0
  58. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/billing/retry.py +1 -1
  59. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/registry/runs.py +4 -0
  60. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/platform/auth.py +80 -69
  61. freesolo_flash_dev-1.2.134/flash/server/platform/deployment_jobs.py +81 -0
  62. freesolo_flash_dev-1.2.134/flash/server/platform/deployment_state.py +65 -0
  63. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/platform/deps.py +4 -4
  64. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/platform/runtime.py +4 -4
  65. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/runs.py +54 -29
  66. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/serving.py +53 -169
  67. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/serving_chat.py +3 -3
  68. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/serving_completion.py +42 -58
  69. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/serving_revisions.py +11 -3
  70. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/serving_smoke.py +4 -19
  71. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/app/README.md +22 -8
  72. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/app/modal_app.py +11 -21
  73. freesolo_flash_dev-1.2.134/flash/serving/app/timeouts.py +13 -0
  74. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/promotion/canary.py +2 -0
  75. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/promotion/gate.py +11 -10
  76. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/accounting/usage_facts.py +1 -1
  77. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/accounting/usage_outbox.py +28 -14
  78. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/generation.py +3 -3
  79. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/support.py +1 -1
  80. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/openai_stream.py +35 -21
  81. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/pyproject.toml +2 -2
  82. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/scripts/check_source_layout.py +8 -21
  83. freesolo_flash_dev-1.2.134/tests/_helpers/billing_precheck.py +131 -0
  84. freesolo_flash_dev-1.2.134/tests/serving/test_inference_duration.py +338 -0
  85. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_mirror_sampling_parity.py +59 -4
  86. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_per_model_gpu.py +17 -0
  87. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_promotion_canary.py +25 -0
  88. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_promotion_gate.py +24 -1
  89. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_router.py +22 -2
  90. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_serve_structured_outputs.py +4 -1
  91. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_usage_outbox.py +193 -23
  92. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_usage_reporter.py +9 -15
  93. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving_conformance/test_contract.py +1 -0
  94. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_authenticated_redirects.py +28 -5
  95. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_backend_common.py +3 -26
  96. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_billing_retry.py +4 -6
  97. freesolo_flash_dev-1.2.134/tests/test_bootstrap_reentry.py +213 -0
  98. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cancel_remote.py +4 -3
  99. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_charge_pricing.py +2 -2
  100. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_client_server_integration.py +11 -4
  101. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_dataset_profile.py +459 -1
  102. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_deploy_latency.py +12 -1
  103. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_download_api.py +1 -2
  104. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_publish.py +3 -0
  105. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_flash_worker.py +2 -3
  106. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_grpo_checkpoint_durability.py +3 -18
  107. freesolo_flash_dev-1.2.134/tests/test_hosted_adapter_admission.py +197 -0
  108. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_idle_endpoint_reaper.py +38 -23
  109. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_instance_bootstrap_coverage.py +16 -42
  110. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_jobs.py +53 -65
  111. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_lambda_api_coverage.py +2 -2
  112. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_lambda_runner.py +94 -54
  113. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_lora_targeting.py +2 -2
  114. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_opd_resume_safety.py +17 -10
  115. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_opd_train.py +8 -54
  116. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_provider_routing.py +2 -4
  117. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_provider_teardown_robustness.py +1 -1
  118. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_realized_cost.py +2 -3
  119. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_resume_on_retry.py +23 -55
  120. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_rl_train.py +0 -6
  121. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_run_registry_lifecycle.py +25 -0
  122. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_runmgmt.py +30 -36
  123. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve.py +62 -3
  124. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_app_launch.py +473 -87
  125. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_app_materialize.py +22 -10
  126. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_modal_sdk.py +127 -3
  127. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_modal_sdk_deadlines.py +13 -4
  128. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_resolve_provenance.py +4 -4
  129. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_runtime_package.py +14 -1
  130. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_api.py +391 -622
  131. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_app_coverage.py +81 -10
  132. freesolo_flash_dev-1.2.134/tests/test_server_auth_singleflight.py +289 -0
  133. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_billing.py +258 -158
  134. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_envs_coverage.py +106 -97
  135. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_managed_chat_requests.py +8 -11
  136. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_standalone.py +9 -6
  137. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serving_contract.py +15 -3
  138. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serving_schema_coverage.py +18 -17
  139. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_sft_train.py +42 -272
  140. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_source_layout.py +6 -18
  141. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_spec_and_validation.py +0 -2
  142. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_staged_environment.py +3 -3
  143. freesolo_flash_dev-1.2.134/tests/test_status_reporting.py +79 -0
  144. freesolo_flash_dev-1.2.134/tests/test_status_updates.py +118 -0
  145. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vast_offers.py +2 -0
  146. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vast_provider_coverage.py +1 -1
  147. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vast_runner.py +42 -26
  148. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_weight_cache.py +61 -31
  149. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_workflow_contracts.py +96 -8
  150. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/uv.lock +1 -1
  151. freesolo_flash_dev-1.2.132/flash/engine/support/verl_policy.py +0 -20
  152. freesolo_flash_dev-1.2.132/flash/serve/provisioning/modal/planning/wrapper.py +0 -43
  153. freesolo_flash_dev-1.2.132/flash/server/billing/charges.py +0 -135
  154. freesolo_flash_dev-1.2.132/tests/test_loraplus_config.py +0 -97
  155. freesolo_flash_dev-1.2.132/tests/test_server_auth_singleflight.py +0 -82
  156. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.dockerignore +0 -0
  157. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.env.example +0 -0
  158. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/CODEOWNERS +0 -0
  159. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  160. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  161. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  162. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  163. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/dependabot.yml +0 -0
  164. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/auto-rebake.yml +0 -0
  165. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/bake-kernel-cache.yml +0 -0
  166. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/dev-kernel-cache.yml +0 -0
  167. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/main-source-guard.yml +0 -0
  168. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/notify-tests-repo.yml +0 -0
  169. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  170. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/publish-dev.yml +0 -0
  171. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/publish-image.yml +0 -0
  172. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/publish-serving-image.yml +0 -0
  173. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/publish.yml +0 -0
  174. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/version-parity.yml +0 -0
  175. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.github/workflows/worker-image.yml +0 -0
  176. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/.gitignore +0 -0
  177. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/CHANGELOG.md +0 -0
  178. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/CODE_OF_CONDUCT.md +0 -0
  179. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/CONTRIBUTING.md +0 -0
  180. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/Dockerfile +0 -0
  181. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/Dockerfile.serve +0 -0
  182. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/Dockerfile.worker +0 -0
  183. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/LICENSE +0 -0
  184. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/NOTICE +0 -0
  185. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/README.md +0 -0
  186. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/SECURITY.md +0 -0
  187. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/SELF_HOSTING.md +0 -0
  188. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/build/kernel_cache/.gitignore +0 -0
  189. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/build/kernel_cache/.keep +0 -0
  190. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/deploy/infisical/README.md +0 -0
  191. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/deploy/infisical/entrypoint.sh +0 -0
  192. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docker/Dockerfile.kernelcache +0 -0
  193. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docker/Dockerfile.kernelcache.relayer +0 -0
  194. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docker/bake_kernel_cache.py +0 -0
  195. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docker/bake_pod_entry.py +0 -0
  196. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docker/extract_cudart_fix.py +0 -0
  197. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docker/kernel_fingerprint.py +0 -0
  198. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docker/make_rp_handler.py +0 -0
  199. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docker/patch_vllm_moe_lora.py +0 -0
  200. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docs/hosted-inference-load-testing.md +0 -0
  201. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/docs/serving-contract.md +0 -0
  202. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/__init__.py +0 -0
  203. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/__init__.py +0 -0
  204. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/channel.py +0 -0
  205. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/diagnostics.py +0 -0
  206. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/fileio.py +0 -0
  207. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/http.py +0 -0
  208. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/logging.py +0 -0
  209. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/openai_sse.py +0 -0
  210. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/paths.py +0 -0
  211. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/_internal/version.py +0 -0
  212. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/adapters/__init__.py +0 -0
  213. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/adapters/artifacts.py +0 -0
  214. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/adapters/fused_experts.py +0 -0
  215. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/adapters/lora_rank.py +0 -0
  216. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/adapters/targets.py +0 -0
  217. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/__init__.py +0 -0
  218. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/__main__.py +0 -0
  219. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/__init__.py +0 -0
  220. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/__init__.py +0 -0
  221. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/ops/__init__.py +0 -0
  222. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/ops/imports.py +0 -0
  223. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/ops/list.py +0 -0
  224. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/ops/push.py +0 -0
  225. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/ops/retained.py +0 -0
  226. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/ops/setup.py +0 -0
  227. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  228. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/testing/__init__.py +0 -0
  229. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/testing/episode.py +0 -0
  230. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/testing/eval.py +0 -0
  231. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/testing/eval_args.py +0 -0
  232. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/testing/evaluations.py +0 -0
  233. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/testing/params.py +0 -0
  234. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/testing/test.py +0 -0
  235. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/env/testing/warnings.py +0 -0
  236. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/__init__.py +0 -0
  237. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/account.py +0 -0
  238. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/catalog.py +0 -0
  239. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/deploy.py +0 -0
  240. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/log_follow.py +0 -0
  241. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/prompt_budget.py +0 -0
  242. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/runs.py +0 -0
  243. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/traces.py +0 -0
  244. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/train.py +0 -0
  245. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/ops/worker_output.py +0 -0
  246. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/serving/__init__.py +0 -0
  247. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/serving/deploy.py +0 -0
  248. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/serving/identity.py +0 -0
  249. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/serving/status.py +0 -0
  250. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/commands/serving/undeploy.py +0 -0
  251. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/__init__.py +0 -0
  252. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/account.py +0 -0
  253. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/env.py +0 -0
  254. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/errors.py +0 -0
  255. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/main.py +0 -0
  256. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/models.py +0 -0
  257. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/serve_parser.py +0 -0
  258. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/traces.py +0 -0
  259. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/parsing/training.py +0 -0
  260. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/scaffold/TRAINING.md +0 -0
  261. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/scaffold/__init__.py +0 -0
  262. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/ui/__init__.py +0 -0
  263. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/ui/cost.py +0 -0
  264. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/ui/env_panels.py +0 -0
  265. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/ui/heartbeat.py +0 -0
  266. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/ui/render.py +0 -0
  267. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/ui/tables.py +0 -0
  268. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cli/ui/tty.py +0 -0
  269. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/client/__init__.py +0 -0
  270. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/client/config.py +0 -0
  271. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/client/freesolo_api.py +0 -0
  272. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/client/http.py +0 -0
  273. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/client/runtime_secrets.py +0 -0
  274. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/client/shapes.py +0 -0
  275. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/client/specs.py +0 -0
  276. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/client/streaming.py +0 -0
  277. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/content/__init__.py +0 -0
  278. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/content/image_descriptors.py +0 -0
  279. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/content/multimodal.py +0 -0
  280. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/content/reasoning_normalization.py +0 -0
  281. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/content/structured_outputs.py +0 -0
  282. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/content/thinking.py +0 -0
  283. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/core/__init__.py +0 -0
  284. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/core/catalog.py +0 -0
  285. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/core/grpo.py +0 -0
  286. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/core/spec_persistence.py +0 -0
  287. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cost/__init__.py +0 -0
  288. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cost/analytical.py +0 -0
  289. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cost/currency.py +0 -0
  290. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cost/facts.py +0 -0
  291. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cost/spec.py +0 -0
  292. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/cost/types.py +0 -0
  293. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/__init__.py +0 -0
  294. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/plan/__init__.py +0 -0
  295. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/plan/kv_sizing.py +0 -0
  296. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/plan/model_config_probe.py +0 -0
  297. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/plan/prompt_budget.py +0 -0
  298. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/plan/steps.py +0 -0
  299. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/plan/vram.py +0 -0
  300. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/profiling/__init__.py +0 -0
  301. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/profiling/image_tokens.py +0 -0
  302. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/profiling/reasoning_render.py +0 -0
  303. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/profiling/sft_image_rows.py +0 -0
  304. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/profiling/sft_workload.py +0 -0
  305. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/profiling/tokenizer.py +0 -0
  306. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/profiling/workload_profile.py +0 -0
  307. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/result/__init__.py +0 -0
  308. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/result/accounting.py +0 -0
  309. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/result/rollout_samples.py +0 -0
  310. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/support/__init__.py +0 -0
  311. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/support/huggingface.py +0 -0
  312. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/support/worker_entrypoint.py +0 -0
  313. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/__init__.py +0 -0
  314. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/__main__.py +0 -0
  315. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/entry/__init__.py +0 -0
  316. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/entry/opd.py +0 -0
  317. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/entry/rl.py +0 -0
  318. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/entry/sft.py +0 -0
  319. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/entry/worker.py +0 -0
  320. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/io/__init__.py +0 -0
  321. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/io/heartbeat.py +0 -0
  322. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/io/hf.py +0 -0
  323. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/io/prefetch.py +0 -0
  324. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/io/wandb_log.py +0 -0
  325. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/model/__init__.py +0 -0
  326. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/model/adapter.py +0 -0
  327. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/model/chatml_mask.py +0 -0
  328. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/model/decoding.py +0 -0
  329. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/model/lora.py +0 -0
  330. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/model/packing.py +0 -0
  331. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/perf/__init__.py +0 -0
  332. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/perf/diagnostics.py +0 -0
  333. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/perf/lifecycle.py +0 -0
  334. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/perf/liger.py +0 -0
  335. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/perf/memory.py +0 -0
  336. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/runtime/__init__.py +0 -0
  337. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  338. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/runtime/rng.py +0 -0
  339. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/runtime/state.py +0 -0
  340. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/teacher/__init__.py +0 -0
  341. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/teacher/client.py +0 -0
  342. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/teacher/encoding.py +0 -0
  343. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
  344. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/__init__.py +0 -0
  345. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/core/__init__.py +0 -0
  346. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/core/child/__init__.py +0 -0
  347. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/core/child/glue.py +0 -0
  348. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/core/child/runtime.py +0 -0
  349. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  350. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  351. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  352. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  353. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/__init__.py +0 -0
  354. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/backend_common.py +0 -0
  355. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/opd_train.py +0 -0
  356. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  357. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/rl_train.py +0 -0
  358. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  359. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/__init__.py +0 -0
  360. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/bridging/__init__.py +0 -0
  361. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/bridging/batching.py +0 -0
  362. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/bridging/bridge.py +0 -0
  363. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/bridging/failures.py +0 -0
  364. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/bridging/prompts.py +0 -0
  365. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/bridging/scoring.py +0 -0
  366. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/__init__.py +0 -0
  367. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/bridge.py +0 -0
  368. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/entry.py +0 -0
  369. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
  370. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/plugin.py +0 -0
  371. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
  372. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/runtime.py +0 -0
  373. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/structured.py +0 -0
  374. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/child/tensors.py +0 -0
  375. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/multiturn/__init__.py +0 -0
  376. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/multiturn/media.py +0 -0
  377. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/multiturn/validation.py +0 -0
  378. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/__init__.py +0 -0
  379. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/gkd.py +0 -0
  380. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/progress.py +0 -0
  381. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +0 -0
  382. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/protocol.py +0 -0
  383. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/reporting.py +0 -0
  384. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/opd/orchestration/validation.py +0 -0
  385. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/__init__.py +0 -0
  386. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  387. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/child/entry.py +0 -0
  388. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  389. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/child/patches.py +0 -0
  390. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/child/plugin.py +0 -0
  391. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  392. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/launch/config.py +0 -0
  393. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  394. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  395. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  396. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/rollout/reward_module.py +0 -0
  397. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  398. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  399. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/sft/__init__.py +0 -0
  400. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/sft/child/entry.py +0 -0
  401. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  402. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  403. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/verl/__init__.py +0 -0
  404. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/verl/child_io.py +0 -0
  405. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/verl/diagnostics.py +0 -0
  406. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/verl/parallelism.py +0 -0
  407. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/verl/parent_work.py +0 -0
  408. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/engine/worker/verl/process_census.py +0 -0
  409. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/__init__.py +0 -0
  410. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/loading/__init__.py +0 -0
  411. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/loading/adapter.py +0 -0
  412. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/loading/base.py +0 -0
  413. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/loading/loader.py +0 -0
  414. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/loading/pull.py +0 -0
  415. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/loading/staged.py +0 -0
  416. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/meta/__init__.py +0 -0
  417. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/meta/cache_security.py +0 -0
  418. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/meta/dataset_selection.py +0 -0
  419. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/meta/evaluations.py +0 -0
  420. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/meta/identity.py +0 -0
  421. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/meta/namespace_listing.py +0 -0
  422. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/package/__init__.py +0 -0
  423. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/package/direct_tokens.py +0 -0
  424. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/package/limits.py +0 -0
  425. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/envs/package/unpack.py +0 -0
  426. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/__init__.py +0 -0
  427. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/__init__.py +0 -0
  428. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  429. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  430. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  431. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/bootstrapping/processes.py +0 -0
  432. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  433. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/host/__init__.py +0 -0
  434. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
  435. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/host/failmark.py +0 -0
  436. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/host/hostlog.py +0 -0
  437. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  438. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/instances/instance.py +0 -0
  439. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/instances/poll.py +0 -0
  440. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/instances/provider.py +0 -0
  441. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  442. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/net/__init__.py +0 -0
  443. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/net/auth.py +0 -0
  444. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/net/http.py +0 -0
  445. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/_lifecycle/net/worker.py +0 -0
  446. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/artifacts/__init__.py +0 -0
  447. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/artifacts/preload_runpod.py +0 -0
  448. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/core/__init__.py +0 -0
  449. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/core/allocator.py +0 -0
  450. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/core/base.py +0 -0
  451. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/core/fit_errors.py +0 -0
  452. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/core/preflight.py +0 -0
  453. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/core/realized.py +0 -0
  454. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/core/registry.py +0 -0
  455. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/core/sharding.py +0 -0
  456. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/__init__.py +0 -0
  457. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/client/__init__.py +0 -0
  458. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/client/api.py +0 -0
  459. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/client/auth.py +0 -0
  460. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/client/gpus.py +0 -0
  461. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/client/preflight.py +0 -0
  462. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/client/pricing.py +0 -0
  463. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/execution/__init__.py +0 -0
  464. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/execution/provider.py +0 -0
  465. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/jobs/builders.py +0 -0
  466. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/lambda_/jobs/reap.py +0 -0
  467. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/__init__.py +0 -0
  468. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/client/__init__.py +0 -0
  469. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/client/api.py +0 -0
  470. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/client/auth.py +0 -0
  471. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/client/cost.py +0 -0
  472. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/client/gpus.py +0 -0
  473. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/client/preflight.py +0 -0
  474. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/client/pricing.py +0 -0
  475. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/execution/__init__.py +0 -0
  476. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/execution/jobs.py +0 -0
  477. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/serverless/__init__.py +0 -0
  478. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/serverless/endpoints.py +0 -0
  479. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/runpod/serverless/naming.py +0 -0
  480. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/__init__.py +0 -0
  481. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/client/__init__.py +0 -0
  482. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/client/api.py +0 -0
  483. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/client/auth.py +0 -0
  484. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/client/preflight.py +0 -0
  485. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/client/pricing.py +0 -0
  486. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/client/result.py +0 -0
  487. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/execution/__init__.py +0 -0
  488. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/execution/provider.py +0 -0
  489. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/providers/vast/jobs/builders.py +0 -0
  490. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/py.typed +0 -0
  491. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/__init__.py +0 -0
  492. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/accounting/__init__.py +0 -0
  493. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/accounting/artifacts.py +0 -0
  494. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/accounting/costs.py +0 -0
  495. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/accounting/weight_cache.py +0 -0
  496. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/__init__.py +0 -0
  497. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/claim_lock.py +0 -0
  498. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/deadlines.py +0 -0
  499. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/preparation.py +0 -0
  500. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/lifecycle/submit.py +0 -0
  501. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/results/__init__.py +0 -0
  502. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/results/checkpoints.py +0 -0
  503. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/results/verified_revisions.py +0 -0
  504. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/__init__.py +0 -0
  505. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/errors.py +0 -0
  506. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/retry_decision.py +0 -0
  507. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runner/supervise/transitions.py +0 -0
  508. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runtime_capsule/__init__.py +0 -0
  509. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runtime_capsule/build.py +0 -0
  510. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/runtime_capsule/manifest.py +0 -0
  511. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/schema/fields.py +0 -0
  512. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/__init__.py +0 -0
  513. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/__init__.py +0 -0
  514. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/__main__.py +0 -0
  515. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/bootstrap.py +0 -0
  516. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/chat_stream.py +0 -0
  517. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/http.py +0 -0
  518. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/manifest.py +0 -0
  519. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/openai.py +0 -0
  520. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/app/progress.py +0 -0
  521. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/contract/__init__.py +0 -0
  522. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/contract/errors.py +0 -0
  523. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/contract/protocol.py +0 -0
  524. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/contract/provenance.py +0 -0
  525. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/contract/responses.py +0 -0
  526. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/contract/urls.py +0 -0
  527. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/control/__init__.py +0 -0
  528. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/control/_canonical.py +0 -0
  529. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/control/_serialization.py +0 -0
  530. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/control/_urls.py +0 -0
  531. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/control/credentials.py +0 -0
  532. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/control/planning.py +0 -0
  533. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/control/types.py +0 -0
  534. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/deployment/__init__.py +0 -0
  535. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/deployment/export.py +0 -0
  536. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/deployment/preflight.py +0 -0
  537. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/deployment/profiles.py +0 -0
  538. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/deployment/readiness.py +0 -0
  539. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/__init__.py +0 -0
  540. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/common/__init__.py +0 -0
  541. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/common/records.py +0 -0
  542. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/__init__.py +0 -0
  543. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  544. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  545. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  546. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  547. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  548. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  549. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  550. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  551. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  552. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  553. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  554. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  555. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/__init__.py +0 -0
  556. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/openai.py +0 -0
  557. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/runtime_support.py +0 -0
  558. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/streaming.py +0 -0
  559. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/text_scan.py +0 -0
  560. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/thinking.py +0 -0
  561. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/tool_calls.py +0 -0
  562. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/tool_template.py +0 -0
  563. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/transport.py +0 -0
  564. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/request/validation.py +0 -0
  565. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/__init__.py +0 -0
  566. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/adapters.py +0 -0
  567. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/engine.py +0 -0
  568. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/errors.py +0 -0
  569. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/multimodal.py +0 -0
  570. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/prompt.py +0 -0
  571. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/sampling.py +0 -0
  572. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/structured_outputs.py +0 -0
  573. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/tool_calls.py +0 -0
  574. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serve/runtime/types.py +0 -0
  575. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/__init__.py +0 -0
  576. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/__main__.py +0 -0
  577. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/asgi/__init__.py +0 -0
  578. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/asgi/cli.py +0 -0
  579. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/billing/__init__.py +0 -0
  580. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/__init__.py +0 -0
  581. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/ops/__init__.py +0 -0
  582. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/ops/reconcile.py +0 -0
  583. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/ops/repo_cleanup.py +0 -0
  584. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/ops/serving_resources.py +0 -0
  585. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/registry/__init__.py +0 -0
  586. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/registry/checkpoints.py +0 -0
  587. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/registry/environment_registry.py +0 -0
  588. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/registry/envs.py +0 -0
  589. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/registry/projects.py +0 -0
  590. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/teacher/__init__.py +0 -0
  591. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/teacher/broker.py +0 -0
  592. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/teacher/errors.py +0 -0
  593. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/domain/teacher/requests.py +0 -0
  594. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/platform/__init__.py +0 -0
  595. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/platform/db.py +0 -0
  596. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/platform/internal_client.py +0 -0
  597. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/platform/locks.py +0 -0
  598. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/__init__.py +0 -0
  599. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/envs.py +0 -0
  600. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/meta.py +0 -0
  601. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/server/routes/teacher.py +0 -0
  602. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/__init__.py +0 -0
  603. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/app/__init__.py +0 -0
  604. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/__init__.py +0 -0
  605. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/__main__.py +0 -0
  606. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/artifacts.py +0 -0
  607. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/cli.py +0 -0
  608. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/metrics.py +0 -0
  609. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/protocol.py +0 -0
  610. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/runner.py +0 -0
  611. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/schedule.py +0 -0
  612. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/loadtest/schema.py +0 -0
  613. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/promotion/__init__.py +0 -0
  614. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/promotion/evidence.py +0 -0
  615. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/__init__.py +0 -0
  616. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/accounting/__init__.py +0 -0
  617. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/accounting/usage.py +0 -0
  618. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/accounting/usage_retry.py +0 -0
  619. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/__init__.py +0 -0
  620. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/boot.py +0 -0
  621. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/errors.py +0 -0
  622. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/lora_engine.py +0 -0
  623. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/lora_entries.py +0 -0
  624. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/model_config.py +0 -0
  625. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/engine/prequant_config.py +0 -0
  626. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/http/__init__.py +0 -0
  627. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/http/adapter_routes.py +0 -0
  628. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/http/body_limit.py +0 -0
  629. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/http/context.py +0 -0
  630. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/http/headers.py +0 -0
  631. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/http/inference_routes.py +0 -0
  632. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/http/router.py +0 -0
  633. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/http/routing.py +0 -0
  634. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/__init__.py +0 -0
  635. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/multimodal.py +0 -0
  636. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/openai_request.py +0 -0
  637. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/provenance.py +0 -0
  638. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/requests.py +0 -0
  639. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/responses.py +0 -0
  640. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/schemas.py +0 -0
  641. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/streaming.py +0 -0
  642. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/io/structured_outputs.py +0 -0
  643. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/__init__.py +0 -0
  644. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/access.py +0 -0
  645. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/lookup.py +0 -0
  646. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/persisted_columns.py +0 -0
  647. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/persistence.py +0 -0
  648. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/registration.py +0 -0
  649. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/registry.py +0 -0
  650. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/settings.py +0 -0
  651. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/supabase_rest.py +0 -0
  652. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/store/undeploy.py +0 -0
  653. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/stream_channel/__init__.py +0 -0
  654. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/stream_channel/_tasks.py +0 -0
  655. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/stream_channel/client.py +0 -0
  656. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/stream_channel/engine.py +0 -0
  657. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/serving/src/stream_channel/protocol.py +0 -0
  658. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/snapshot/__init__.py +0 -0
  659. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/snapshot/archive.py +0 -0
  660. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/teacher/__init__.py +0 -0
  661. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/teacher/limits.py +0 -0
  662. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/teacher/provider_status.py +0 -0
  663. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/flash/teacher/retry_contract.py +0 -0
  664. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/scripts/build_dev_dist.py +0 -0
  665. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/scripts/check_file_size.py +0 -0
  666. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/scripts/check_function_size.py +0 -0
  667. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/scripts/check_rollout_identity_actor.py +0 -0
  668. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/scripts/check_verl_pin_exists.py +0 -0
  669. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/scripts/qualify_serving_profile.py +0 -0
  670. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/scripts/scrub_history.sh +0 -0
  671. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/serve_launch.py +0 -0
  672. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/__init__.py +0 -0
  673. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/__init__.py +0 -0
  674. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/chat_provenance.py +0 -0
  675. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/chat_transport.py +0 -0
  676. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/managed_chat.py +0 -0
  677. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/profile.py +0 -0
  678. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/runner.py +0 -0
  679. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/server_api_plugin.py +0 -0
  680. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/source_snapshot.py +0 -0
  681. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/specs.py +0 -0
  682. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/teacher.py +0 -0
  683. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/vast.py +0 -0
  684. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/_helpers/wire_headers.py +0 -0
  685. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/capture_image_sft_processor_oracle.py +0 -0
  686. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/capture_qwen38_27b_metadata.py +0 -0
  687. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/conftest.py +0 -0
  688. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  689. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  690. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  691. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  692. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  693. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  694. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/live/__init__.py +0 -0
  695. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/live/conftest.py +0 -0
  696. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/live/test_lambda_live.py +0 -0
  697. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/live/test_runpod_live.py +0 -0
  698. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/live/test_sft_thinking_render_live.py +0 -0
  699. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/live/test_vast_live.py +0 -0
  700. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/checkpoint_fixtures.py +0 -0
  701. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/conftest.py +0 -0
  702. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/hosted_loadtest_fake_scenario.json +0 -0
  703. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_base_model_serving.py +0 -0
  704. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_chat_auth.py +0 -0
  705. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_chat_authorizer.py +0 -0
  706. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
  707. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_checkpoint_model_validation.py +0 -0
  708. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_engine_error_status.py +0 -0
  709. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_fp8_config.py +0 -0
  710. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_immutable_engine.py +0 -0
  711. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_immutable_revisions.py +0 -0
  712. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_immutable_schemas.py +0 -0
  713. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_loadtest_artifacts.py +0 -0
  714. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_loadtest_metrics.py +0 -0
  715. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_loadtest_protocol.py +0 -0
  716. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_loadtest_runner.py +0 -0
  717. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_loadtest_schedule.py +0 -0
  718. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_loadtest_schema.py +0 -0
  719. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_modal_deploy_identity.py +0 -0
  720. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_modal_image_paths.py +0 -0
  721. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_model_config.py +0 -0
  722. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_multimodal.py +0 -0
  723. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_openai_stream_options.py +0 -0
  724. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_persistence.py +0 -0
  725. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_pre_first_disconnect.py +0 -0
  726. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_prequant_config.py +0 -0
  727. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_promotion_evidence.py +0 -0
  728. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_registry.py +0 -0
  729. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_registry_coverage.py +0 -0
  730. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_request_body_limit.py +0 -0
  731. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_router_coverage.py +0 -0
  732. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_router_edge_coverage.py +0 -0
  733. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_schemas_coverage.py +0 -0
  734. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_serve_reasoning_split.py +0 -0
  735. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_serve_thinking.py +0 -0
  736. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_settings.py +0 -0
  737. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_stream_channel.py +0 -0
  738. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_structured_outputs.py +0 -0
  739. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_structured_outputs_coverage.py +0 -0
  740. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving/test_supabase_rest_coverage.py +0 -0
  741. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving_conformance/__init__.py +0 -0
  742. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/serving_conformance/conftest.py +0 -0
  743. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_accounting_coverage.py +0 -0
  744. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_adapter_shard_completeness.py +0 -0
  745. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_agent_flash_cli_contract.py +0 -0
  746. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_algorithms.py +0 -0
  747. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_allocator.py +0 -0
  748. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_backend_jobspec_contract.py +0 -0
  749. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_bake_kernel_cache.py +0 -0
  750. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_base_model_provenance.py +0 -0
  751. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_bootstrap_process_groups.py +0 -0
  752. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_build_context_contract.py +0 -0
  753. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_capture_qwen38_metadata.py +0 -0
  754. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_catalog_consistency.py +0 -0
  755. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_catalog_only_models.py +0 -0
  756. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_chat_foundations.py +0 -0
  757. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_checkpoint_lifecycle.py +0 -0
  758. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_checkpoints.py +0 -0
  759. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_commands.py +0 -0
  760. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_commands_coverage.py +0 -0
  761. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_credential_shadowing.py +0 -0
  762. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_errors.py +0 -0
  763. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_estimate.py +0 -0
  764. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_gpus_flag.py +0 -0
  765. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_help.py +0 -0
  766. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_main_coverage.py +0 -0
  767. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_managed.py +0 -0
  768. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_render_coverage.py +0 -0
  769. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_render_theme.py +0 -0
  770. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_serve_deploy.py +0 -0
  771. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_serve_status.py +0 -0
  772. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_serve_undeploy.py +0 -0
  773. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_traces.py +0 -0
  774. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cli_wandb_warning.py +0 -0
  775. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_client.py +0 -0
  776. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_client_import_purity.py +0 -0
  777. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_client_stream_reads.py +0 -0
  778. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_config_env_vars.py +0 -0
  779. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_config_overrides.py +0 -0
  780. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_console_upload.py +0 -0
  781. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_controlled_experiment_repairs.py +0 -0
  782. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cost_analytical.py +0 -0
  783. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cost_currency.py +0 -0
  784. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cost_equation.py +0 -0
  785. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cost_estimate.py +0 -0
  786. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cost_hardware.py +0 -0
  787. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_cost_models.py +0 -0
  788. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_dev_channel.py +0 -0
  789. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_disk_gb.py +0 -0
  790. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_endpoint_name.py +0 -0
  791. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_cache_evict.py +0 -0
  792. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_delete.py +0 -0
  793. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_download.py +0 -0
  794. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_evaluations.py +0 -0
  795. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_git_auth.py +0 -0
  796. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_list_api.py +0 -0
  797. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_list_cli.py +0 -0
  798. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_list_hub.py +0 -0
  799. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_no_install.py +0 -0
  800. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_pull.py +0 -0
  801. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_pull_coverage.py +0 -0
  802. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_pull_loader_coverage.py +0 -0
  803. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_pull_managed_control_plane.py +0 -0
  804. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_push.py +0 -0
  805. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_rate_limit_resolve.py +0 -0
  806. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_ref_pinning.py +0 -0
  807. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_env_test.py +0 -0
  808. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_envs_coverage.py +0 -0
  809. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_export.py +0 -0
  810. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_flash_mvp.py +0 -0
  811. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_flashinfer_cache_dirs.py +0 -0
  812. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_freesolo_api_transport.py +0 -0
  813. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_fused_expert_warmstart.py +0 -0
  814. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_github_urlopen_retry.py +0 -0
  815. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_gpu_type_single_field.py +0 -0
  816. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_gpus.py +0 -0
  817. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_grpo_params.py +0 -0
  818. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_grpo_process_census.py +0 -0
  819. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_grpo_resident_sizing.py +0 -0
  820. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_grpo_reward_batching.py +0 -0
  821. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_grpo_rollout_contract.py +0 -0
  822. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_grpo_rollout_identity.py +0 -0
  823. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_health_liveness.py +0 -0
  824. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_hf_retry.py +0 -0
  825. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_image_environment_capability.py +0 -0
  826. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_image_incremental_processor.py +0 -0
  827. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_image_sft_markers.py +0 -0
  828. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_image_sft_processor_parity.py +0 -0
  829. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_image_tokens.py +0 -0
  830. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_infisical_secrets.py +0 -0
  831. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_internal_client.py +0 -0
  832. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_kernel_cache.py +0 -0
  833. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_kernel_fingerprint.py +0 -0
  834. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_kv_util.py +0 -0
  835. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_logging.py +0 -0
  836. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_login_perms.py +0 -0
  837. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_lora_rank_coverage.py +0 -0
  838. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_lora_rank_nested_rung.py +0 -0
  839. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_lora_rank_preflight.py +0 -0
  840. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_lora_targeting_pinned_verl.py +0 -0
  841. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_managed_config_fields.py +0 -0
  842. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_managed_hf_repo.py +0 -0
  843. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_metrics_schema_agent_contract.py +0 -0
  844. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_mig_guard.py +0 -0
  845. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_mirror_sampling_parity.py +0 -0
  846. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_multi_gpu_gate.py +0 -0
  847. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_multimodal_training.py +0 -0
  848. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_named_reward_metrics.py +0 -0
  849. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_oom_escalate_gpu.py +0 -0
  850. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_opd.py +0 -0
  851. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_opd_limits.py +0 -0
  852. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_opd_multiturn_eos_boundary.py +0 -0
  853. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_opd_multiturn_failure_exit.py +0 -0
  854. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_opd_replay_guard.py +0 -0
  855. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_orchestrator_flash.py +0 -0
  856. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_packing.py +0 -0
  857. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_packing_coverage.py +0 -0
  858. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_parasail_teacher.py +0 -0
  859. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_persisted_spec_envelope.py +0 -0
  860. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_poll_helpers.py +0 -0
  861. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_preflight.py +0 -0
  862. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_projects.py +0 -0
  863. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_prompt_budget.py +0 -0
  864. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_provider_preflight_coverage.py +0 -0
  865. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_providers_symmetry.py +0 -0
  866. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_repo_cleanup.py +0 -0
  867. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_resolve_params_b.py +0 -0
  868. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_retry_decision.py +0 -0
  869. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_rollout_samples.py +0 -0
  870. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_runpod_api_delete.py +0 -0
  871. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_runpod_key_fingerprint.py +0 -0
  872. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_runpod_key_waterfall.py +0 -0
  873. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_runtime_capsule.py +0 -0
  874. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_app_bootstrap_http.py +0 -0
  875. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_app_manifest.py +0 -0
  876. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_app_packaging.py +0 -0
  877. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_app_progress.py +0 -0
  878. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_chat_transport.py +0 -0
  879. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_control.py +0 -0
  880. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_docs.py +0 -0
  881. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_modal_contract_lock.py +0 -0
  882. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_modal_teardown_identity.py +0 -0
  883. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_profile_qualification.py +0 -0
  884. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_profiles.py +0 -0
  885. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_provisioning_common.py +0 -0
  886. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_provisioning_modal.py +0 -0
  887. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_reasoning_content.py +0 -0
  888. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_runtime_adapters.py +0 -0
  889. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_runtime_engine.py +0 -0
  890. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serve_runtime_types.py +0 -0
  891. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_checkpoints_coverage.py +0 -0
  892. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_db.py +0 -0
  893. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_locks_coverage.py +0 -0
  894. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_server_serving_resources.py +0 -0
  895. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serving_conformance_gate.py +0 -0
  896. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_serving_context_preflight.py +0 -0
  897. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_sft_chunked_nll.py +0 -0
  898. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_sft_example_selection.py +0 -0
  899. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_sft_gc_off.py +0 -0
  900. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_sft_max_context.py +0 -0
  901. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_sft_step_floor.py +0 -0
  902. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_sft_workload.py +0 -0
  903. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_source_attestation_flow.py +0 -0
  904. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_source_snapshot.py +0 -0
  905. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_spec_contract_bytes.py +0 -0
  906. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_step_floor.py +0 -0
  907. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_step_metrics.py +0 -0
  908. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_step_timing.py +0 -0
  909. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_structured_outputs.py +0 -0
  910. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_teacher_broker.py +0 -0
  911. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_teacher_encoding_contract.py +0 -0
  912. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_terminal_artifacts.py +0 -0
  913. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_thinking_config.py +0 -0
  914. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_tool_call_exact_parsing.py +0 -0
  915. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_train_context_preflight.py +0 -0
  916. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_training_controls.py +0 -0
  917. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_type_comment_prose.py +0 -0
  918. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vast_api.py +0 -0
  919. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vast_api_coverage.py +0 -0
  920. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vast_result.py +0 -0
  921. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_verified_revisions.py +0 -0
  922. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_verifiers.py +0 -0
  923. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_verl_checkpoint_export.py +0 -0
  924. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_verl_child_plugins.py +0 -0
  925. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_verl_silence_watchdog.py +0 -0
  926. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_version.py +0 -0
  927. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  928. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vllm_moe_lora_backport.py +0 -0
  929. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_vram_architecture.py +0 -0
  930. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_wandb_link.py +0 -0
  931. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_wandb_naming.py +0 -0
  932. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_warmstart_adapter_download.py +0 -0
  933. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_warmstart_cross_repo.py +0 -0
  934. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_warmstart_error_attribution.py +0 -0
  935. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_warmstart_image_adapters.py +0 -0
  936. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_worker_dryrun.py +0 -0
  937. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_worker_hardexit.py +0 -0
  938. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_worker_image.py +0 -0
  939. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_worker_init_heartbeat.py +0 -0
  940. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_worker_stack.py +0 -0
  941. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_worker_thinking.py +0 -0
  942. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_workload_profile.py +0 -0
  943. {freesolo_flash_dev-1.2.132 → freesolo_flash_dev-1.2.134}/tests/test_zero2_sharding_gate.py +0 -0
@@ -60,8 +60,7 @@ jobs:
60
60
  - name: Function size check
61
61
  run: uv run python scripts/check_function_size.py
62
62
 
63
- # Keep the source hierarchy reviewable: no directory may exceed ten tracked files, and package
64
- # roots may mix subdirectories only with the three required marker files.
63
+ # Package roots may mix subdirectories only with semantic package marker files.
65
64
  - name: Source layout check
66
65
  run: uv run python scripts/check_source_layout.py
67
66
 
@@ -114,7 +114,7 @@ jobs:
114
114
  # pinned to the exact client pyproject declares; see deploy-modal.yml for why an
115
115
  # unbounded range is unsafe for the deploy path.
116
116
  # exact pins keep the deploy client bootstrap reproducible across runner image changes.
117
- uv pip install --system "modal==1.5.4" "python-dotenv==1.2.3"
117
+ uv pip install --system "modal==1.6.1" "python-dotenv==1.2.3"
118
118
 
119
119
  - name: Verify development deployment inputs
120
120
  if: steps.gate.outputs.deploy == 'true'
@@ -11,6 +11,7 @@ name: Deploy serving Modal app
11
11
  # FREESOLO_INTERNAL_KEY - shared platform internal key (backend + serving)
12
12
  # PLATFORM_BACKEND_URL - platform backend base URL
13
13
  # SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY - serving startup hydration (durable adapter registry)
14
+ # required Actions variable: SERVING_CANARY_ORG_ID - existing internal organization billed for probes
14
15
  # modal_app.py reads these from the environment (load_dotenv only supplements os.environ), so no
15
16
  # .env file is written in CI. the "Verify required runtime secrets" step below hard-fails the deploy
16
17
  # if a required secret is absent, preventing a broken production config with external chat failures,
@@ -40,13 +41,13 @@ jobs:
40
41
  if: github.ref == 'refs/heads/main'
41
42
  runs-on: ubuntu-latest
42
43
  # the job's own bounded waits now sum well past the old 30: two 300s readiness polls, the remote
43
- # image build, a 420s canary that pays a GPU cold start, a 180s accounting deadline, and on the
44
- # failure path a SECOND `modal deploy` plus a 300s restore poll. 60 minutes clears that worst
44
+ # image build, a 3360s canary that pays a GPU cold start, a 180s accounting deadline, and on the
45
+ # failure path a SECOND `modal deploy` plus a 300s restore poll. 90 minutes clears that worst
45
46
  # case with room while keeping a wedged deploy from holding the runner for GitHub's 6-hour
46
47
  # default. the headroom is specifically for the rollback: a job killed partway through the
47
48
  # restore leaves the broken release live with no second attempt, which is the one outcome this
48
49
  # workflow exists to prevent.
49
- timeout-minutes: 60
50
+ timeout-minutes: 90
50
51
  # serialize serving deploys across runs because each deploy mutates the live app. github can still
51
52
  # replace a pending run, so the gate compares against the sha reported by the deployed app rather
52
53
  # than assuming every push predecessor was deployed.
@@ -75,6 +76,7 @@ jobs:
75
76
  # (empty => default *.modal.run url), so non-prod/fork/local workspaces stay deployable. This
76
77
  # domain is verified in the production Modal workspace, so prod keeps serving on serve.freesolo.co.
77
78
  SERVING_CUSTOM_DOMAIN: serve.freesolo.co
79
+ SERVING_CANARY_ORG_ID: ${{ vars.SERVING_CANARY_ORG_ID }}
78
80
 
79
81
  steps:
80
82
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
@@ -168,7 +170,7 @@ jobs:
168
170
  # pinned to the exact client pyproject declares and the provisioning path was validated
169
171
  # against: deploy behaviour (app lifecycle, tags, lookup) is client-version sensitive, so
170
172
  # an unbounded range lets a future release change deploys with no diff here.
171
- python -m pip install "modal==1.5.4" "python-dotenv==1.2.3"
173
+ python -m pip install "modal==1.6.1" "python-dotenv==1.2.3"
172
174
 
173
175
  - name: Verify Modal auth is configured
174
176
  if: steps.gate.outputs.deploy == 'true'
@@ -198,7 +200,7 @@ jobs:
198
200
  if [ -z "$SUPABASE_SERVICE_ROLE_KEY" ]; then
199
201
  missing="$missing SUPABASE_SERVICE_ROLE_KEY"
200
202
  fi
201
- required="FREESOLO_INTERNAL_KEY PLATFORM_BACKEND_URL"
203
+ required="FREESOLO_INTERNAL_KEY PLATFORM_BACKEND_URL SERVING_CANARY_ORG_ID"
202
204
  for name in $required; do
203
205
  # indirect expansion: the secrets are exported into the env via the job-level `env:` block.
204
206
  if [ -z "${!name}" ]; then
@@ -206,10 +208,21 @@ jobs:
206
208
  fi
207
209
  done
208
210
  if [ -n "$missing" ]; then
209
- echo "::error::Refusing to deploy serving to prod: missing required secret(s):${missing}. Set them in repo Settings -> Secrets and variables -> Actions."
211
+ echo "::error::Refusing to deploy serving to prod: missing required setting(s):${missing}. Set them in repo Settings -> Secrets and variables -> Actions."
210
212
  exit 1
211
213
  fi
212
- echo "All required serving runtime secrets are present."
214
+ # reject malformed attribution before replacing the live app.
215
+ python - <<'PY'
216
+ import os
217
+ import sys
218
+ import uuid
219
+
220
+ try:
221
+ uuid.UUID(os.environ["SERVING_CANARY_ORG_ID"].strip())
222
+ except ValueError:
223
+ sys.exit("::error::SERVING_CANARY_ORG_ID must be an existing internal organization UUID.")
224
+ PY
225
+ echo "All required serving runtime secrets and canary settings are present."
213
226
 
214
227
  - name: Wait for production adapter schema readiness
215
228
  if: steps.gate.outputs.deploy == 'true'
@@ -411,6 +424,7 @@ jobs:
411
424
  # durably. this step is the only thing standing between "the process booted" and "the
412
425
  # release can actually serve", so a failure here must not be promoted.
413
426
  SERVING_BASE_URL: https://serve.freesolo.co
427
+ SERVING_CANARY_ORG_ID: ${{ vars.SERVING_CANARY_ORG_ID }}
414
428
  FREESOLO_INTERNAL_KEY: ${{ secrets.FREESOLO_INTERNAL_KEY }}
415
429
  SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
416
430
  SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}
@@ -456,10 +470,20 @@ jobs:
456
470
  echo "Promotion failed; restoring ${PREVIOUS_SHA}."
457
471
  git checkout --quiet --force "$PREVIOUS_SHA"
458
472
 
473
+ # resolve the entrypoint in the restored tree, including releases before the source move.
474
+ if [ -f flash/serving/app/modal_app.py ]; then
475
+ rollback_app=flash/serving/app/modal_app.py
476
+ elif [ -f flash/serving/modal_app.py ]; then
477
+ rollback_app=flash/serving/modal_app.py
478
+ else
479
+ echo "::error::Previous release has no supported serving entrypoint. Restore production manually."
480
+ exit 1
481
+ fi
482
+
459
483
  # the restored app must report the RESTORED sha, deployed from the restored tree.
460
484
  FREESOLO_DEPLOYMENT_SHA="$PREVIOUS_SHA" \
461
485
  FREESOLO_DEPLOYMENT_ID="$ROLLBACK_DEPLOYMENT_ID" \
462
- modal deploy flash/serving/app/modal_app.py
486
+ modal deploy "$rollback_app"
463
487
 
464
488
  response_file="$(mktemp)"
465
489
  trap 'rm -f "$response_file"' EXIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: freesolo-flash-dev
3
- Version: 1.2.132
3
+ Version: 1.2.134
4
4
  Summary: Flash — managed LoRA post-training (SFT/GRPO/OPD) for Freesolo environments, driven by the `flash` CLI
5
5
  Project-URL: Homepage, https://github.com/freesolo-co/flash
6
6
  Project-URL: Repository, https://github.com/freesolo-co/flash
@@ -0,0 +1,136 @@
1
+ """one strict reader for the bytes of an ``adapter_config.json``.
2
+
3
+ Three boundaries admit an adapter by reading this one file, and all three are gated on the same
4
+ question: do these exact bytes describe a LoRA adapter that the engine about to load them can
5
+ actually serve? Answering it separately let them drift -- customer-owned resolution rejected a
6
+ config that hosted admission accepted, so the same artifact was refused before provisioning on one
7
+ path and refused inside the paid container on the other.
8
+
9
+ Every rule here is decidable from the config alone. Nothing in this module reads the hub, the
10
+ filesystem, or a provider, so a verdict costs a caller nothing beyond the bytes it already holds.
11
+ That is why it sits beside the rank and target rules rather than under a deployment path: the
12
+ GPU-side materializer revalidates a cache entry it already holds, and it needs the same verdict
13
+ without importing anything that resolves or deploys.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import json
19
+ from dataclasses import dataclass
20
+ from typing import Any
21
+
22
+ from flash.adapters.lora_rank import rank_from_adapter_config
23
+ from flash.serve.contract.protocol import reject_non_finite_json_constant
24
+
25
+
26
+ class AdapterConfigError(ValueError):
27
+ """these ``adapter_config.json`` bytes cannot describe a servable LoRA adapter."""
28
+
29
+
30
+ @dataclass(frozen=True)
31
+ class DeclaredAdapterConfig:
32
+ """what an adapter stamps about itself, after every deterministic rule has passed."""
33
+
34
+ config: dict[str, Any]
35
+ lora_rank: int
36
+ base_model: str
37
+ base_revision: str | None
38
+
39
+
40
+ class _DuplicateConfigKey(AdapterConfigError):
41
+ """raised through ``json.loads``, so it stays a ValueError for any caller expecting one."""
42
+
43
+
44
+ def parse_declared_adapter_config(raw: bytes, *, source: str) -> DeclaredAdapterConfig:
45
+ """read one adapter's declared provenance, or refuse the bytes.
46
+
47
+ ``source`` names the file in every message, so a caller that fetched the config from the hub and
48
+ one that read it off disk both report a location the reader can go look at.
49
+ """
50
+
51
+ config = _strict_object(raw, source=source)
52
+ try:
53
+ rank = rank_from_adapter_config(config, source=source)
54
+ except ValueError as exc:
55
+ raise AdapterConfigError(f"{source} declares no usable lora rank: {exc}") from exc
56
+
57
+ peft_type = config.get("peft_type")
58
+ if peft_type != "LORA":
59
+ raise AdapterConfigError(f"{source} peft_type must be LORA, not {peft_type!r}")
60
+ task_type = config.get("task_type")
61
+ if task_type not in {None, "CAUSAL_LM"}:
62
+ raise AdapterConfigError(
63
+ f"{source} task_type must be absent or CAUSAL_LM, not {task_type!r}"
64
+ )
65
+ modules_to_save = config.get("modules_to_save")
66
+ if modules_to_save is not None and modules_to_save != []:
67
+ raise AdapterConfigError(f"{source} modules_to_save adapters are not supported")
68
+
69
+ # the engine compares `base_model_name_or_path` for equality, so an absent, empty, or
70
+ # non-string one can never match and the deployment is already doomed. skipping the check
71
+ # instead deferred a certain failure until after a provider had allocated and started billing.
72
+ base_model = _text(config, "base_model_name_or_path", source=source)
73
+ if base_model is None:
74
+ raise AdapterConfigError(f"{source} declares no base_model_name_or_path")
75
+ revision = config.get("revision")
76
+ if revision is not None and not isinstance(revision, str):
77
+ raise AdapterConfigError(f"{source} revision must be a string when present")
78
+ return DeclaredAdapterConfig(
79
+ config=config,
80
+ lora_rank=rank,
81
+ base_model=base_model,
82
+ base_revision=_text(config, "revision", source=source),
83
+ )
84
+
85
+
86
+ def _strict_object(raw: bytes, *, source: str) -> dict[str, Any]:
87
+ """decode exactly the way the gpu-side materializer does, from the same bytes.
88
+
89
+ handing the bytes straight to ``json.load`` instead lets it auto-detect utf-16 and accept a bom
90
+ (rfc 4627), so a config the container refuses outright parsed cleanly at admission -- and the
91
+ deployment failed only after the provider resources had been allocated. duplicate keys are the
92
+ same case: plain decoding takes the last value, so a config declaring ``r`` twice would be
93
+ admitted against one rank and then rejected inside the container this check exists to avoid
94
+ paying for.
95
+ """
96
+
97
+ try:
98
+ config = json.loads(
99
+ raw.decode("utf-8"),
100
+ object_pairs_hook=_reject_duplicate_keys,
101
+ parse_constant=reject_non_finite_json_constant,
102
+ )
103
+ except _DuplicateConfigKey as exc:
104
+ raise AdapterConfigError(f"{source} contains a duplicate key") from exc
105
+ except (UnicodeDecodeError, ValueError) as exc:
106
+ raise AdapterConfigError(f"{source} is not readable json") from exc
107
+ if not isinstance(config, dict):
108
+ raise AdapterConfigError(f"{source} must be a json object")
109
+ return config
110
+
111
+
112
+ def _reject_duplicate_keys(pairs: list[tuple[str, Any]]) -> dict[str, Any]:
113
+ result: dict[str, Any] = {}
114
+ for key, value in pairs:
115
+ if key in result:
116
+ raise _DuplicateConfigKey(f"{key!r} appears twice")
117
+ result[key] = value
118
+ return result
119
+
120
+
121
+ def _text(config: dict[str, Any], key: str, *, source: str) -> str | None:
122
+ """read a config string exactly as the engine will compare it.
123
+
124
+ the engine compares these raw bytes for equality, so a value that matches only after stripping
125
+ is admitted here and then rejected inside the paid container -- the outcome this reader exists
126
+ to prevent. normalizing the padding away instead would be worse for ``revision``, which the
127
+ resolver *adopts* into the immutable manifest: that would launder a padded string into the record
128
+ rather than surface it. rejecting keeps the admission-time and container-time verdicts identical.
129
+ """
130
+
131
+ value = config.get(key)
132
+ if not isinstance(value, str):
133
+ return None
134
+ if value != value.strip():
135
+ raise AdapterConfigError(f"{source} {key} has surrounding whitespace: {value!r}")
136
+ return value or None
@@ -20,7 +20,6 @@ detail. See their docstrings before changing either.
20
20
  from __future__ import annotations
21
21
 
22
22
  import json
23
- import math
24
23
  import os
25
24
  from dataclasses import asdict, dataclass, field, fields
26
25
  from typing import Any, Literal
@@ -366,9 +365,6 @@ class TrainSpec:
366
365
  hf_repo: str = ""
367
366
  # None -> worker's tuned recipe default.
368
367
  learning_rate: float | None = field(default=None, metadata={"introduced_in": "0.2.0"})
369
- # sft only: none preserves a legacy persisted run's 16x optimizer. new configs freeze the
370
- # recipe default at parse time; 1 uses equal adapter learning rates.
371
- loraplus_ratio: float | None = field(default=None, metadata={"introduced_in": "1.2.131"})
372
368
  # sft only. the packaged-dataset estimate resolves this against the selected row count into
373
369
  # examples_per_update (packed) or pins the optimizer batch to 1 (unpacked). grpo/opd have no
374
370
  # profile, so they take prompts_per_step instead and reject this key: the two are not the same
@@ -403,17 +399,6 @@ class TrainSpec:
403
399
  )
404
400
 
405
401
  def __post_init__(self) -> None:
406
- if self.loraplus_ratio is not None:
407
- ratio = self.loraplus_ratio
408
- if isinstance(ratio, bool) or not isinstance(ratio, (int, float)):
409
- raise TypeError("train.loraplus_ratio must be a number")
410
- try:
411
- ratio = float(ratio)
412
- except OverflowError as exc:
413
- raise ValueError("train.loraplus_ratio must be a finite number >= 1") from exc
414
- if not math.isfinite(ratio) or ratio < 1:
415
- raise ValueError("train.loraplus_ratio must be a finite number >= 1")
416
- object.__setattr__(self, "loraplus_ratio", ratio)
417
402
  if not self.lora_alpha:
418
403
  object.__setattr__(self, "lora_alpha", 2 * self.lora_rank)
419
404
  max_steps = parse_max_steps(self.max_steps)
@@ -581,8 +566,6 @@ class JobSpec:
581
566
  project: str = ""
582
567
 
583
568
  def __post_init__(self) -> None:
584
- if self.train.loraplus_ratio is not None and self.algorithm != "sft":
585
- raise ValueError("train.loraplus_ratio only applies to sft")
586
569
  object.__setattr__(self, "seed", parse_seed(self.seed))
587
570
  object.__setattr__(self, "model_revision", _model_revision(self.model_revision))
588
571
  for field_name in ("model_revision_auto", "model_revision_force_pin"):
@@ -698,9 +681,6 @@ class JobSpec:
698
681
  differently, so removing either pop would break existing digests.
699
682
  """
700
683
  data = asdict(self)
701
- # preserve historical preparation digests when the new option was not authored.
702
- if data["train"]["loraplus_ratio"] is None:
703
- data["train"].pop("loraplus_ratio")
704
684
  # missing and unset are the same internal state. omitting the empty value preserves that state
705
685
  # without serializing it into an explicit empty preference, which every parser rejects.
706
686
  if not data["gpu"].get("providers"):
@@ -806,7 +786,6 @@ class JobSpec:
806
786
  init_from_adapter_revision=str(train.get("init_from_adapter_revision") or ""),
807
787
  hf_repo=str(train.get("hf_repo") or ""),
808
788
  learning_rate=opt_float(train.get("learning_rate")),
809
- loraplus_ratio=train.get("loraplus_ratio"),
810
789
  batch_size=opt_int(train.get("batch_size")),
811
790
  prompts_per_step=opt_int(train.get("prompts_per_step")),
812
791
  max_context_tokens=opt_int(train.get("max_context_tokens")),
@@ -170,7 +170,6 @@ class SFTConfig:
170
170
  max_seq_len: int = 1024
171
171
  max_seq_len_thinking: int = 2048
172
172
  learning_rate: float = 1e-4
173
- loraplus_ratio: float = 1.0
174
173
  warmup_frac: float = 0.03
175
174
  effective_batch: int = 32
176
175
  num_epochs: int = 2
@@ -189,96 +189,64 @@ def _selected_dataset_path(base_dir: Path, params: dict[str, Any]) -> Path:
189
189
  )
190
190
 
191
191
 
192
- def _read_jsonl_rows(path: Path, *, max_examples: int) -> tuple[int, list[dict[str, Any]]]:
193
- source_examples = 0
194
- values = []
195
- missing = []
196
- with path.open(encoding="utf-8") as handle:
197
- for line in handle:
198
- if not line.strip():
199
- continue
200
- row = json.loads(line)
201
- if not isinstance(row, dict):
202
- raise TypeError("dataset row is not an object")
203
- if _CANONICAL_INPUT_KEY not in row and len(missing) < 10:
204
- missing.append(source_examples)
205
- source_examples += 1
206
- if max_examples <= 0 or len(values) < max_examples:
207
- values.append(row)
208
- if missing:
209
- raise ValueError(
210
- "Freesolo dataset records must contain an input field; missing at row indexes "
211
- f"{missing}"
212
- )
213
- return source_examples, values
214
-
215
-
216
192
  def _validate_dataset_rows(
217
193
  values: object,
218
194
  *,
219
195
  invalid_message: str,
220
- empty_message: str,
221
196
  max_examples: int,
197
+ empty_message: str | None = None,
222
198
  ) -> tuple[int, list[dict[str, Any]]]:
223
199
  if not isinstance(values, list) or not all(isinstance(row, dict) for row in values):
224
200
  raise PackagedDatasetUnavailable(invalid_message)
225
- source_examples = len(values)
226
- missing = [index for index, row in enumerate(values) if _CANONICAL_INPUT_KEY not in row]
201
+ rows = values
202
+ source_examples = len(rows)
203
+ missing = [
204
+ index
205
+ for index, row in enumerate(rows)
206
+ if _CANONICAL_INPUT_KEY not in row or row.get(_CANONICAL_INPUT_KEY) is None
207
+ ]
227
208
  if missing:
228
209
  raise ValueError(
229
210
  "Freesolo dataset records must contain an input field; missing at row indexes "
230
211
  f"{missing[:10]}"
231
212
  )
232
- selected = values[:max_examples] if max_examples > 0 else values
233
- if not selected:
213
+ selected = rows[:max_examples] if max_examples > 0 else rows
214
+ if not selected and empty_message is not None:
234
215
  raise PackagedDatasetUnavailable(empty_message)
235
216
  return source_examples, [dict(row) for row in selected]
236
217
 
237
218
 
238
219
  def _read_dataset_rows(path: Path, *, max_examples: int) -> tuple[int, list[dict[str, Any]]]:
220
+ from freesolo.datasets.records import load_records
221
+
222
+ invalid_message = (
223
+ f"environment dataset file {path.name!r} must contain JSON object or string rows. Add a "
224
+ "valid dataset/train.jsonl to the environment package."
225
+ )
239
226
  try:
240
227
  if path.stat().st_size > _MAX_PROFILE_DATASET_BYTES:
241
228
  raise PackagedDatasetUnavailable(
242
229
  f"environment dataset file {path.name!r} exceeds the 32 MiB control-plane profiling "
243
230
  "limit. Reduce the packaged training dataset."
244
231
  )
245
- if path.suffix.lower() == ".jsonl":
246
- source_examples, values = _read_jsonl_rows(path, max_examples=max_examples)
247
- elif path.suffix.lower() == ".json":
248
- loaded = json.loads(path.read_text(encoding="utf-8"))
249
- values = loaded.get("records") if isinstance(loaded, dict) else loaded
250
- source_examples, values = _validate_dataset_rows(
251
- values,
252
- invalid_message=(
253
- f"environment dataset file {path.name!r} must contain JSON object rows. Add a "
254
- "valid dataset/train.jsonl to the environment package."
255
- ),
256
- empty_message=(
257
- f"environment dataset file {path.name!r} contains no rows. Add training rows to "
258
- "dataset/train.jsonl in the environment package."
259
- ),
260
- max_examples=max_examples,
261
- )
262
- else:
263
- raise ValueError("dataset file must end in .jsonl or .json")
232
+ if path.suffix.lower() not in {".jsonl", ".json"}:
233
+ raise PackagedDatasetUnavailable("dataset file must end in .jsonl or .json")
234
+ # use the worker's decoder; it materializes all rows before profiling selects a prefix.
235
+ rows = load_records(path)
264
236
  except PackagedDatasetUnavailable:
265
237
  raise
266
- except TypeError as exc:
267
- raise PackagedDatasetUnavailable(
268
- f"environment dataset file {path.name!r} must contain JSON object rows. Add a valid "
269
- "dataset/train.jsonl to the environment package."
270
- ) from exc
271
238
  except (OSError, UnicodeError, json.JSONDecodeError) as exc:
272
239
  raise PackagedDatasetUnavailable(
273
240
  f"environment dataset file {path.name!r} is not readable JSON. Add a valid "
274
241
  "dataset/train.jsonl to the environment package."
275
242
  ) from exc
276
- if not values:
277
- raise PackagedDatasetUnavailable(
278
- f"environment dataset file {path.name!r} contains no rows. Add training rows to "
279
- "dataset/train.jsonl in the environment package."
280
- )
281
- return source_examples, [dict(row) for row in values]
243
+ except (TypeError, ValueError) as exc:
244
+ raise PackagedDatasetUnavailable(invalid_message) from exc
245
+ return _validate_dataset_rows(
246
+ rows,
247
+ invalid_message=invalid_message,
248
+ max_examples=max_examples,
249
+ )
282
250
 
283
251
 
284
252
  def profile_packaged_sft_dataset(
@@ -8,7 +8,6 @@ from collections.abc import Iterable
8
8
  from dataclasses import dataclass
9
9
 
10
10
  from flash._internal.fileio import reject_duplicate_keys
11
- from flash.engine.support.verl_policy import FsdpGeneration
12
11
 
13
12
  VERL_FSDP_CONFIG_FILE = "fsdp_config.json"
14
13
  _MAX_NATIVE_FSDP_WORLD_SIZE = 8
@@ -78,7 +77,6 @@ def inspect_fsdp_checkpoint_manifest(
78
77
  stamp_raw: bytes | str | None,
79
78
  files: Iterable[FsdpManifestFile],
80
79
  *,
81
- expected_generation: FsdpGeneration,
82
80
  expected_world_size: int | None,
83
81
  ) -> FsdpCheckpointInspection:
84
82
  """validate the exact canonical native shard set for one stamped actor directory."""
@@ -90,13 +88,11 @@ def inspect_fsdp_checkpoint_manifest(
90
88
  rejection_reason="invalid or missing fsdp stamp",
91
89
  )
92
90
  generation, width = stamp
93
- if generation != expected_generation:
91
+ if generation != 2:
94
92
  return FsdpCheckpointInspection(
95
93
  loadable=False,
96
94
  width=width,
97
- rejection_reason=(
98
- f"fsdp generation mismatch (stamped {generation}, expected {expected_generation})"
99
- ),
95
+ rejection_reason=f"fsdp generation mismatch (stamped {generation}, expected 2)",
100
96
  )
101
97
  if expected_world_size is not None and width != expected_world_size:
102
98
  return FsdpCheckpointInspection(
@@ -28,7 +28,6 @@ from flash.engine.plan import steps as _steps
28
28
  from flash.engine.plan.recipe import RECIPE
29
29
  from flash.engine.plan.steps import rl_data_parallel_cards
30
30
  from flash.engine.profiling.sft_workload import _materialize_verl_images
31
- from flash.engine.support.verl_policy import _resolve_fsdp_generation
32
31
  from flash.engine.worker.entry import opd as _opd_entry
33
32
  from flash.engine.worker.train.core.child.runtime import TEXT_LORA_TARGET_SHIM
34
33
  from flash.engine.worker.train.entry.prompt_rows import canonical_prompt_messages
@@ -187,7 +186,6 @@ def _prepare_workload(
187
186
  if isinstance(target_modules, set | frozenset):
188
187
  target_modules = sorted(target_modules)
189
188
  target_parameters = tuple(targeting.target_parameters) if targeting.target_parameters else None
190
- fsdp_generation = _resolve_fsdp_generation("opd", target_parameters)
191
189
  lora_rank = int(lora_config.r)
192
190
  return _WorkloadState(
193
191
  prompts_per_step,
@@ -209,7 +207,6 @@ def _prepare_workload(
209
207
  int(lora_config.lora_alpha),
210
208
  target_modules,
211
209
  target_parameters,
212
- fsdp_generation,
213
210
  targeting.exclude_modules,
214
211
  _sft._warmstart_adapter_path(
215
212
  request.model_id,
@@ -260,8 +257,6 @@ def _materialize_child_files(
260
257
  # the same count this attempt hands verl as n_gpus_per_node, which is the data-parallel
261
258
  # width: ulysses is pinned to 1, so every rank is a dp rank.
262
259
  world_size=gpu_count,
263
- # native state is generation-specific, so use the same resolved policy as the child config.
264
- expected_fsdp_generation=workload.fsdp_generation,
265
260
  )
266
261
  bridge = _opd_bridge._TeacherAlignmentBridge(
267
262
  prompts=prompt_state.prompts,
@@ -399,7 +394,6 @@ def _build_base_config(
399
394
  "target_modules": workload.target_modules,
400
395
  "exclude_modules": None,
401
396
  "target_parameters": workload.target_parameters,
402
- "fsdp_generation": workload.fsdp_generation,
403
397
  "lora_adapter_path": workload.warmstart_adapter,
404
398
  "learning_rate": knobs.learning_rate,
405
399
  "local_dir": workload.local_dir,
@@ -309,7 +309,6 @@ def _prepare_rl_files(inp, prompts):
309
309
  resume_step = rl_checkpoints._restore_verl_resume(
310
310
  local_dir,
311
311
  world_size=int(inp["dp_cards"]),
312
- expected_fsdp_generation=inp["fsdp_generation"],
313
312
  required_steps=tuple(inp["save_at_steps"]),
314
313
  )
315
314
  train_pq = os.path.join(workdir, "train.parquet")
@@ -355,8 +355,7 @@ def _sft_liger_config() -> dict[str, bool]:
355
355
 
356
356
 
357
357
  # re-exported so the child-render helpers stay reachable as `sft_train.<name>`: the other
358
- # trainers import `_hydra_val` from here, and the sft tests import the renderers and the
359
- # LoRA+ marker from here.
358
+ # trainers import `_hydra_val` from here, and the sft tests import the renderers.
360
359
  # the runner resolves patched seams through this parent module at call time, so these imports must
361
360
  # remain attributes of `sft_train` rather than direct imports in the split module.
362
361
  from flash.engine.plan.recipe import RECIPE # noqa: E402,F401
@@ -394,7 +393,6 @@ from flash.engine.worker.train.sft.setup.checkpoints import ( # noqa: E402,F401
394
393
  _VerlCheckpointWatcher,
395
394
  )
396
395
  from flash.engine.worker.train.sft.setup.config import ( # noqa: E402,F401
397
- _LORAPLUS_READY_MARKER,
398
396
  _REQUIRED_OVERRIDE_KEYS,
399
397
  _VERL_OPTIMIZER_IMPL,
400
398
  _VERL_OPTIMIZER_NAME,
@@ -485,9 +483,6 @@ def _write_sft_result(options, data, model, child, progress, verified, outputs)
485
483
  "loss_curve": progress.loss_curve[:400],
486
484
  "peak_gpu_gb": device_peak_gpu_gb,
487
485
  "device_peak_gpu_gb": device_peak_gpu_gb,
488
- "loraplus_optim": _VERL_OPTIMIZER_NAME,
489
- "loraplus_applied": progress.loraplus_applied,
490
- "loraplus_ratio": options.loraplus_ratio,
491
486
  "verl_backend": "fsdp2",
492
487
  # sft shards by DATA -- see ULYSSES_SEQUENCE_PARALLEL_SIZE for why. fsdp splits the batch
493
488
  # across the ranks actually LAUNCHED, which is the allocated card count only when the
@@ -585,7 +580,7 @@ def run_sft_train(spec=None) -> None:
585
580
  child = _prepare_sft_child(
586
581
  options, data, model, capabilities, use_remove_padding, gdn_reset_arch
587
582
  )
588
- child_progress = _prepare_sft_progress(options, data, model, child)
583
+ child_progress = _prepare_sft_progress(data, model, child)
589
584
  progress = child_progress.values
590
585
 
591
586
  def on_line(line: str) -> None:
@@ -606,7 +601,7 @@ def run_sft_train(spec=None) -> None:
606
601
  if child.resume_step < model.update_horizon:
607
602
  child.watcher.start()
608
603
  # check save completeness only after normal training completion. callback failures occur before
609
- # return_code assignment; checking anyway would replace the real zero-grad or lora+ diagnosis
604
+ # return_code assignment; checking anyway would replace the real zero-grad or runtime-patch diagnosis
610
605
  # with a missing-save error. opd_train uses the same guard.
611
606
  training_completed = False
612
607
  try: