Repository navigation
Conversation
5 of 6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Retrying a completed activation of a model in a registered SSD/model store now returns
already_activewithout restarting inference. The dashboard uses its existing unique installed-artifact resolver for the idempotence check, matching discovery and activation.Why this matters
useModels.loadModelexplicitly permits the server to complete while the browser connection disappears. A retry from Models (Models.jsx) or Portal (PortalModelSelector.jsx) therefore reaches authenticatedPOST /api/models/{id}/loadwith the same model and context. Previously the check searched onlydata/models, so a registered-store model with matching live identity and a completed activation receipt triggered another host activation. During an active Portal response, the same harmless retry incorrectly returnedpixel_chat_active.The shared resolver also rejects missing artifacts and ambiguous basenames rather than treating an unrelated default-store file as evidence that activation is complete. Existing live identity, configuration, receipt, and context checks remain required.
Overlap check
Searched open and closed upstream PRs for model recovery, active model, model store, idempotence, and reload. Inspected changed files for #6738/#6735 (interrupted transaction and Docker timeout recovery), #3307 (state endpoint tests), and #6401/#6370/#6378/#5881/#5874 (registry/scripts parsing). None covers this reload defect. #6990 also edits
routers/models.py, but changes only benchmark transport; this PR changes only_configured_model_identity_matchesand separate authenticated load regressions.Validation
Base: upstream main
9b95d08ae9e9f79af8410dfcea442df6b99db0ba. Environment: native Windows, PowerShell 5.1, Python 3.14.2 with-X utf8.From
ods/extensions/services/dashboard-api:python -X utf8 -m pytest tests/test_models.py -q -k unique_installed_artifact: old code 4 failed, 2 passed; fixed code 6 passed. Uses a real registry, registered artifact, matching live identity and completed receipt, through the authenticated HTTP boundary. Covers registered/missing/ambiguous files with Portal idle and active.python -X utf8 -m pytest tests/test_models.py tests/test_model_stores.py tests/test_model_recovery_api.py tests/test_model_state.py tests/test_model_routes.py -q: 202 passed, 1 skipped, 1 failed. The failure is the existingtest_collision_and_link_escape_never_select_arbitrary_checkpointfixture: Windows cannot create its symlink (WinError 1314). The fixture's collision assertion ran successfully before that environmental failure.round3/combined-final.txtin the local QA receipts.git diff --checkpassed.No clean installation, Docker, GPU inference, container mounts, or browser end-to-end validation was performed. The host-agent call is observed/mocked at the HTTP boundary; this verifies suppression of redundant activation and preservation of busy-response protection, without claiming live restart behavior.
GitHub CI completed on head
dd0d4419d910dd86128bdd87140842ee2e5d21e7: 60 passed, 4 skipped, 0 failed or pending. This includes the dashboard API suite, integration smoke, Python lint/type checks, frontend builds on Linux/macOS/Windows, and platform/contract jobs. Automated checks do not replace the live installation and inference validation limits above.