freesolo-flash-dev 1.2.23__tar.gz → 1.2.28__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.
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/PKG-INFO +1 -1
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/job_execution.py +15 -1
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/pyproject.toml +2 -2
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_jobs.py +148 -2
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/uv.lock +1 -1
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.dockerignore +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.env.example +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/CODEOWNERS +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/dependabot.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/auto-rebake.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/bake-kernel-cache.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/ci.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/main-source-guard.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/notify-tests-repo.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/publish-dev.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/publish-image.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/publish.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/version-parity.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/worker-image.yml +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.gitignore +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/CHANGELOG.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/CODE_OF_CONDUCT.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/CONTRIBUTING.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/Dockerfile +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/Dockerfile.worker +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/LICENSE +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/NOTICE +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/README.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/SECURITY.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/SELF_HOSTING.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/build/kernel_cache/.gitignore +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/build/kernel_cache/.keep +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/deploy/infisical/README.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/deploy/infisical/entrypoint.sh +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/docker/Dockerfile.kernelcache +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/docker/Dockerfile.kernelcache.relayer +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/docker/bake_kernel_cache.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/docker/bake_pod_entry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/docker/extract_cudart_fix.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/docker/kernel_fingerprint.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/docker/make_rp_handler.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/_internal/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/_internal/channel.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/_internal/diagnostics.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/_internal/fileio.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/_internal/logging.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/_internal/paths.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/adapters/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/adapters/artifacts.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/adapters/lora_rank.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/__main__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/deploy.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/episode.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/eval.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/eval_args.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/imports.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/list.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/push.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/retained.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/setup.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/test.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/test_evaluations.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/test_params.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/test_warnings.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/traces.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/train_cost.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/scaffold/TRAINING.md +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/scaffold/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/ui/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/ui/cost.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/ui/env_panels.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/ui/heartbeat.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/ui/render.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/ui/tables.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/ui/tty.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/client/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/client/config.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/client/freesolo_api.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/client/http.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/client/runtime_secrets.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/client/shapes.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/client/specs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/client/streaming.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/content/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/content/multimodal.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/content/structured_outputs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/content/thinking.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/core/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/core/catalog.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/core/spec.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cost/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cost/analytical.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cost/facts.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cost/spec.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cost/types.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/plan/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/plan/kv_sizing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/plan/model_config_probe.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/plan/recipe.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/plan/steps.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/plan/vram.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/dataset_profile.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/reasoning_render.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/sft_workload.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/tokenizer.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/workload_profile.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/result/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/result/accounting.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/result/rollout_samples.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/__main__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/backend_common.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/entry/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/entry/opd.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/entry/rl.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/entry/sft.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/io/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/io/heartbeat.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/io/hf.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/io/prefetch.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/io/wandb_log.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/adapter.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/decoding.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/lora.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/packing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/opd_train.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/opd_train_runner.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/perf/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/perf/diagnostics.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/perf/lifecycle.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/perf/liger.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/perf/memory.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/rl_train.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/rl_train_runner.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/runtime/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/runtime/pkg_proxy.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/runtime/rng.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/score_batcher.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/sft_train.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/sft_train_runner.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/teacher/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/teacher/client.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/teacher/encoding.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/core/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/core/child/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/core/child/glue.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/core/step_timing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/finalize.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/batching.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/bridge.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/child/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/child/bridge.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/child/plugin.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/child/structured.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/failures.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/gkd.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/multiturn_validation.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/overrides.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/prompts.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/reporting.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/scoring.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/state.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/opd/validation.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/checkpoints.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/child/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/child/plugin.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/config.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/inputs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/multi_turn.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/scoring.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/shims.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/single_turn.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/rl/verl_config.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/sft/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/sft/checkpoints.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/train/sft/config.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/verl/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/verl/capabilities.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/verl/checkpoints.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/verl/child_io.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/verl/diagnostics.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/verl/parallelism.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker_entrypoint.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/adapter.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/base.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/cache_security.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/dataset_selection.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/evaluations.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/identity.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/loader.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/namespace_listing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/package/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/package/limits.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/package/unpack.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/envs/pull.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/auth.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/bootstrap.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/bootstrap_pip.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/bootstrap_secrets.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/deadline.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/http.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/instance.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/poll.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/poll_instance.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/provider.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/_lifecycle/worker.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/allocator.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/artifacts/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/artifacts/hf.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/artifacts/preload_runpod.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/artifacts/weight_cache.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/base.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/fit_errors.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/api.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/auth.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/gpus.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/jobs/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/jobs/builders.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/jobs/reap.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/lambda_/pricing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/realized.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/api.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/auth.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/cost.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/gpus.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/jobs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/pricing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/resources.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/serverless/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/serverless/endpoints.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/sharding.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/vast/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/vast/api.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/vast/auth.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/vast/jobs/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/vast/jobs/builders.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/vast/preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/vast/pricing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/py.typed +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/artifacts.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/attempts.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/costs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/deadlines.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/preparation.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/reconciliation.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/results/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/results/checkpoints.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/results/verified_revisions.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/status.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/submit.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/supervise/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/supervise/attach.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/supervise/deploy.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/supervise/lifecycle.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/supervise/recovery.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/supervise/retry_decision.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/supervise/seed_submission.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/supervise/transitions.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/runner/weight_cache.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/schema/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/schema/fields.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/adapter_check.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/deploy.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/errors.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/export.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/responses.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/streaming.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/thinking.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/serve/urls.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/__main__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/app.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/billing/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/billing/charges.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/billing/retry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/checkpoints.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/environment_registry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/envs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/projects.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/reconcile.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/repo_cleanup.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/run_registry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/teacher_broker.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/teacher_errors.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/domain/teacher_requests.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/platform/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/platform/auth.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/platform/db.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/platform/deps.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/platform/internal_client.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/platform/locks.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/platform/runtime.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/envs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/meta.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/runs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/serving.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/serving_completion.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/serving_revisions.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/serving_smoke.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/server/routes/teacher.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/teacher/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/teacher/limits.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/teacher/retry_contract.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/scripts/build_dev_dist.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/scripts/check_file_size.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/scripts/check_function_size.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/scripts/check_verl_pin_exists.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/scripts/scrub_history.sh +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/_helpers/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/_helpers/profile.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/_helpers/runner.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/_helpers/specs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/_helpers/teacher.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/_helpers/vast.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/conftest.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/fixtures/math_eval.jsonl +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/fixtures/math_train.jsonl +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/live/__init__.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/live/conftest.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/live/test_lambda_live.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/live/test_runpod_live.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/live/test_sft_thinking_render_live.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/live/test_vast_live.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_accounting_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_adapter_shard_completeness.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_agent_flash_cli_contract.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_algorithms.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_allocator.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_backend_common.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_backend_jobspec_contract.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_bake_kernel_cache.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_base_model_provenance.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_billing_retry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_build_context_contract.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cancel_remote.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_catalog_consistency.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_catalog_only_models.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_charge_pricing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_checkpoints.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_commands.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_commands_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_credential_shadowing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_errors.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_estimate.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_gpus_flag.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_help.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_main_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_managed.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_render_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_render_theme.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_traces.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cli_wandb_warning.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_client.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_client_import_purity.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_client_server_integration.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_client_stream_reads.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_config_env_vars.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_config_overrides.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_controlled_experiment_repairs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cost_analytical.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cost_equation.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cost_estimate.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cost_hardware.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_cost_models.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_dataset_profile.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_deploy_latency.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_dev_channel.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_disk_gb.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_endpoint_name.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_cache_evict.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_delete.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_download.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_download_api.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_evaluations.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_list_api.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_list_cli.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_list_hub.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_no_install.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_publish.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_pull.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_pull_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_pull_loader_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_pull_managed_control_plane.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_push.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_rate_limit_resolve.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_ref_pinning.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_env_test.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_envs_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_export.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_flash_mvp.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_flash_worker.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_flashinfer_cache_dirs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_freesolo_api_transport.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_github_urlopen_retry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_gpu_type_single_field.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_gpus.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_grpo_params.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_grpo_resident_sizing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_grpo_reward_batching.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_health_liveness.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_hf_retry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_idle_endpoint_reaper.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_infisical_secrets.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_instance_bootstrap_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_internal_client.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_kernel_cache.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_kernel_fingerprint.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_kv_util.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_lambda_api_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_lambda_runner.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_logging.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_login_perms.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_lora_rank_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_lora_rank_preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_managed_config_fields.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_managed_hf_repo.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_metrics_schema_agent_contract.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_mig_guard.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_multi_gpu_gate.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_multimodal_training.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_named_reward_metrics.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_oom_escalate_gpu.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_opd.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_opd_limits.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_opd_multiturn_eos_boundary.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_opd_resume_safety.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_opd_train.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_orchestrator_flash.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_packing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_packing_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_parasail_teacher.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_poll_helpers.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_projects.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_provider_preflight_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_provider_routing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_provider_teardown_robustness.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_providers_symmetry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_realized_cost.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_repo_cleanup.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_resolve_params_b.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_resume_on_retry.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_rl_train.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_rollout_samples.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_runmgmt.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_runpod_api_delete.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_runpod_key_fingerprint.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_runpod_key_waterfall.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_serve.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_serve_reasoning_content.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_api.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_app_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_auth_singleflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_billing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_checkpoints_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_db.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_envs_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_locks_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_server_standalone.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_serving_context_preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_serving_contract.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_serving_schema_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_sft_chunked_nll.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_sft_example_selection.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_sft_gc_off.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_sft_max_context.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_sft_startup_block.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_sft_train.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_sft_workload.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_spec_and_validation.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_step_floor.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_step_metrics.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_step_timing.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_structured_outputs.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_teacher_broker.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_teacher_encoding_contract.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_thinking_config.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_train_context_preflight.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_training_controls.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_type_comment_prose.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_vast_api.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_vast_api_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_vast_offers.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_vast_provider_coverage.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_vast_runner.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_verified_revisions.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_verifiers.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_version.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_vl_warmstart_adapter_keys.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_vram_architecture.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_wandb_link.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_wandb_naming.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_warmstart_adapter_download.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_warmstart_cross_repo.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_warmstart_error_attribution.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_weight_cache.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_worker_dryrun.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_worker_hardexit.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_worker_image.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_worker_init_heartbeat.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_worker_stack.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_worker_thinking.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_workflow_contracts.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_workload_profile.py +0 -0
- {freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/tests/test_zero2_sharding_gate.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: freesolo-flash-dev
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.28
|
|
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
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/providers/runpod/job_execution.py
RENAMED
|
@@ -513,7 +513,21 @@ def _classify_queue_state(
|
|
|
513
513
|
# between unhealthy and empty cannot make a broken box look like starvation.
|
|
514
514
|
state.ever_saw_worker = True
|
|
515
515
|
if any(workers.get(k) for k in ("throttled", "unhealthy", "initializing")) or not usable:
|
|
516
|
-
|
|
516
|
+
message = f"queued; workers: {workers}"
|
|
517
|
+
if (
|
|
518
|
+
not usable
|
|
519
|
+
and not recovering
|
|
520
|
+
and not state.ever_saw_worker
|
|
521
|
+
and state.queued_timer.since is not None
|
|
522
|
+
):
|
|
523
|
+
elapsed_s = max(0, int(now - state.queued_timer.since))
|
|
524
|
+
budget = (
|
|
525
|
+
f"{context.queue_grace_s:g}s"
|
|
526
|
+
if _jobs.math.isfinite(context.queue_grace_s)
|
|
527
|
+
else "unbounded"
|
|
528
|
+
)
|
|
529
|
+
message += f"; waited {elapsed_s}s of {budget} capacity grace"
|
|
530
|
+
context.say(message)
|
|
517
531
|
if state.unhealthy_timer.expired(
|
|
518
532
|
workers.get("unhealthy") and not usable and not recovering,
|
|
519
533
|
now,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "freesolo-flash-dev"
|
|
3
|
-
version = "1.2.
|
|
3
|
+
version = "1.2.28"
|
|
4
4
|
description ="Flash — managed LoRA post-training (SFT/GRPO/OPD) for Freesolo environments, driven by the `flash` CLI"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
# RunPod Flash supports Python 3.11-3.12 (not 3.13 yet).
|
|
@@ -137,7 +137,7 @@ artifacts = ["flash/py.typed"]
|
|
|
137
137
|
# auto-published by .github/workflows/publish-dev.yml: a push to `dev` whose version isn't yet on
|
|
138
138
|
# PyPI publishes it; pushes that don't change it find it already published and no-op. So cutting a
|
|
139
139
|
# dev-channel release = bump this (and [project].version) and merge to `dev`.
|
|
140
|
-
version = "1.2.
|
|
140
|
+
version = "1.2.28"
|
|
141
141
|
|
|
142
142
|
[tool.pytest.ini_options]
|
|
143
143
|
pythonpath = ["."]
|
|
@@ -617,7 +617,7 @@ def test_no_capacity_detail_never_predicts_the_retry_disposition(monkeypatch):
|
|
|
617
617
|
assert "next-best" not in res.detail
|
|
618
618
|
|
|
619
619
|
|
|
620
|
-
def _queued_forever(monkeypatch, health, *, step=20.0):
|
|
620
|
+
def _queued_forever(monkeypatch, health, *, step=20.0, queue_grace_s=900.0, log=None):
|
|
621
621
|
"""Poll a permanently queued job with controlled endpoint health.
|
|
622
622
|
|
|
623
623
|
The clock step preserves the 90-second probe cadence and 300-second worker-coming-up TTL.
|
|
@@ -634,12 +634,158 @@ def _queued_forever(monkeypatch, health, *, step=20.0):
|
|
|
634
634
|
monkeypatch.setattr(jobs.time, "time", lambda: next(clock))
|
|
635
635
|
return jobs.poll_job(
|
|
636
636
|
_runpod_handle(jobs),
|
|
637
|
+
log=log,
|
|
637
638
|
interval_s=0,
|
|
638
639
|
heartbeat_reader=lambda: None,
|
|
639
640
|
setup_grace_s=3000.0,
|
|
640
|
-
queue_grace_s=
|
|
641
|
+
queue_grace_s=queue_grace_s,
|
|
642
|
+
)
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
def test_empty_workers_log_elapsed_capacity_grace_before_no_capacity(monkeypatch):
|
|
646
|
+
from itertools import pairwise
|
|
647
|
+
|
|
648
|
+
logs = io.StringIO()
|
|
649
|
+
res = _queued_forever(
|
|
650
|
+
monkeypatch,
|
|
651
|
+
lambda eid, _fp, **_kw: {"workers": {}},
|
|
652
|
+
queue_grace_s=700.0,
|
|
653
|
+
log=logs,
|
|
654
|
+
)
|
|
655
|
+
|
|
656
|
+
assert not res.ok
|
|
657
|
+
assert res.failure == "no_capacity"
|
|
658
|
+
assert "no RunPod capacity" in res.detail
|
|
659
|
+
capacity_lines = [line for line in logs.getvalue().splitlines() if "capacity grace" in line]
|
|
660
|
+
elapsed_values = []
|
|
661
|
+
for line in capacity_lines:
|
|
662
|
+
match = re.search(r"; waited (\d+)s of 700s capacity grace$", line)
|
|
663
|
+
assert match
|
|
664
|
+
elapsed_values.append(int(match.group(1)))
|
|
665
|
+
assert len(elapsed_values) >= 2
|
|
666
|
+
assert all(later > earlier for earlier, later in pairwise(elapsed_values))
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
def test_unbounded_capacity_grace_keeps_throttled_worker_failure(monkeypatch):
|
|
670
|
+
import itertools
|
|
671
|
+
|
|
672
|
+
from flash.providers.runpod import api as runpod_api
|
|
673
|
+
from flash.providers.runpod import jobs
|
|
674
|
+
|
|
675
|
+
statuses = iter(
|
|
676
|
+
[
|
|
677
|
+
*itertools.repeat({"status": "IN_QUEUE"}, 8),
|
|
678
|
+
{"status": "FAILED", "error": "throttled timer was skipped"},
|
|
679
|
+
]
|
|
680
|
+
)
|
|
681
|
+
monkeypatch.setattr(runpod_api, "job_status", lambda eid, jid, **_kw: next(statuses))
|
|
682
|
+
monkeypatch.setattr(
|
|
683
|
+
runpod_api,
|
|
684
|
+
"endpoint_health_for_fingerprint",
|
|
685
|
+
lambda eid, _fingerprint, **_kw: {"workers": {"throttled": 1}},
|
|
686
|
+
)
|
|
687
|
+
monkeypatch.setattr(jobs.time, "sleep", lambda s: None)
|
|
688
|
+
clock = itertools.count(start=0, step=100.0)
|
|
689
|
+
monkeypatch.setattr(jobs.time, "time", lambda: next(clock))
|
|
690
|
+
logs = io.StringIO()
|
|
691
|
+
|
|
692
|
+
res = jobs.poll_job(
|
|
693
|
+
_runpod_handle(jobs),
|
|
694
|
+
log=logs,
|
|
695
|
+
interval_s=0,
|
|
696
|
+
heartbeat_reader=lambda **_kw: None,
|
|
697
|
+
setup_grace_s=100000.0,
|
|
698
|
+
unhealthy_grace_s=100000.0,
|
|
699
|
+
throttled_grace_s=300.0,
|
|
700
|
+
queue_grace_s=float("inf"),
|
|
641
701
|
)
|
|
642
702
|
|
|
703
|
+
assert res.failure == "no_capacity"
|
|
704
|
+
assert "worker stuck THROTTLED" in res.detail
|
|
705
|
+
capacity_lines = [line for line in logs.getvalue().splitlines() if "capacity grace" in line]
|
|
706
|
+
assert capacity_lines
|
|
707
|
+
assert all("of unbounded capacity grace" in line for line in capacity_lines)
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
def test_four_card_last_gpu_log_names_only_scaled_capacity_grace(monkeypatch):
|
|
711
|
+
from flash.providers.runpod import jobs
|
|
712
|
+
|
|
713
|
+
logs = io.StringIO()
|
|
714
|
+
grace = jobs.stall_kwargs(on_last_gpu=True, gpu_count=4)["queue_grace_s"]
|
|
715
|
+
res = _queued_forever(
|
|
716
|
+
monkeypatch,
|
|
717
|
+
lambda eid, _fp, **_kw: {"workers": {}},
|
|
718
|
+
queue_grace_s=grace,
|
|
719
|
+
log=logs,
|
|
720
|
+
)
|
|
721
|
+
|
|
722
|
+
assert res.failure == "no_capacity"
|
|
723
|
+
capacity_output = "\n".join(
|
|
724
|
+
line for line in logs.getvalue().splitlines() if "capacity grace" in line
|
|
725
|
+
)
|
|
726
|
+
assert "of 3600s capacity grace" in capacity_output
|
|
727
|
+
assert "pinned" not in capacity_output.lower()
|
|
728
|
+
assert "escalation" not in capacity_output.lower()
|
|
729
|
+
assert "retry" not in capacity_output.lower()
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
@pytest.mark.parametrize(
|
|
733
|
+
"workers",
|
|
734
|
+
[
|
|
735
|
+
{"initializing": 1},
|
|
736
|
+
{"ready": 1, "unhealthy": 1},
|
|
737
|
+
],
|
|
738
|
+
)
|
|
739
|
+
def test_allocated_worker_log_suppresses_capacity_grace(monkeypatch, workers):
|
|
740
|
+
logs = io.StringIO()
|
|
741
|
+
res = _queued_forever(
|
|
742
|
+
monkeypatch,
|
|
743
|
+
lambda eid, _fp, **_kw: {"workers": workers},
|
|
744
|
+
log=logs,
|
|
745
|
+
)
|
|
746
|
+
|
|
747
|
+
assert res.failure == "stalled"
|
|
748
|
+
queued_lines = [line for line in logs.getvalue().splitlines() if "queued; workers:" in line]
|
|
749
|
+
assert queued_lines
|
|
750
|
+
assert all("capacity grace" not in line for line in queued_lines)
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
def test_unhealthy_worker_log_suppresses_capacity_grace(monkeypatch):
|
|
754
|
+
logs = io.StringIO()
|
|
755
|
+
res = _queued_forever(
|
|
756
|
+
monkeypatch,
|
|
757
|
+
lambda eid, _fp, **_kw: {"workers": {"unhealthy": 1}},
|
|
758
|
+
log=logs,
|
|
759
|
+
)
|
|
760
|
+
|
|
761
|
+
assert not res.ok
|
|
762
|
+
assert res.failure == "stalled"
|
|
763
|
+
assert "worker stuck unhealthy" in res.detail
|
|
764
|
+
queued_lines = [line for line in logs.getvalue().splitlines() if "queued; workers:" in line]
|
|
765
|
+
assert queued_lines
|
|
766
|
+
assert all("capacity grace" not in line for line in queued_lines)
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
@pytest.mark.parametrize("granted_workers", [{"initializing": 1}, {"ready": 1}])
|
|
770
|
+
def test_empty_health_after_worker_grant_suppresses_capacity_grace(monkeypatch, granted_workers):
|
|
771
|
+
logs = io.StringIO()
|
|
772
|
+
probes = {"count": 0}
|
|
773
|
+
|
|
774
|
+
def health(eid, _fp, **_kw):
|
|
775
|
+
probes["count"] += 1
|
|
776
|
+
return {"workers": granted_workers if probes["count"] == 1 else {}}
|
|
777
|
+
|
|
778
|
+
res = _queued_forever(monkeypatch, health, queue_grace_s=5000.0, log=logs)
|
|
779
|
+
|
|
780
|
+
assert probes["count"] >= 2
|
|
781
|
+
assert not res.ok
|
|
782
|
+
assert res.failure == "stalled"
|
|
783
|
+
assert "setup (pre-training)" in res.detail
|
|
784
|
+
queued_lines = [line for line in logs.getvalue().splitlines() if "queued; workers:" in line]
|
|
785
|
+
assert queued_lines
|
|
786
|
+
assert any("workers: {}" in line for line in queued_lines)
|
|
787
|
+
assert all("capacity grace" not in line for line in queued_lines)
|
|
788
|
+
|
|
643
789
|
|
|
644
790
|
def test_slow_image_pull_is_not_reported_as_missing_capacity(monkeypatch):
|
|
645
791
|
# IN_QUEUE includes worker cold start. once health shows a worker, the setup grace must govern;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/ISSUE_TEMPLATE/bug_report.yml
RENAMED
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/ISSUE_TEMPLATE/feature_request.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/bake-kernel-cache.yml
RENAMED
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/main-source-guard.yml
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/notify-tests-repo.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/.github/workflows/version-parity.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/docker/Dockerfile.kernelcache.relayer
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/test_evaluations.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/test_params.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/cli/commands/env/test_warnings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/plan/model_config_probe.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/dataset_profile.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/reasoning_render.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/sft_workload.py
RENAMED
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/profiling/workload_profile.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/result/rollout_samples.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/backend_common.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/entry/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/__init__.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/adapter.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/decoding.py
RENAMED
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/model/packing.py
RENAMED
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/opd_train_runner.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/perf/__init__.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/perf/diagnostics.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/perf/lifecycle.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/rl_train_runner.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/runtime/__init__.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/runtime/kernel_warmup.py
RENAMED
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/runtime/pkg_proxy.py
RENAMED
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/score_batcher.py
RENAMED
|
File without changes
|
|
File without changes
|
{freesolo_flash_dev-1.2.23 → freesolo_flash_dev-1.2.28}/flash/engine/worker/sft_train_runner.py
RENAMED
|
File without changes
|