You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Decide how project-only and shared models coexist when they advertise the same pipeline or algorithm key #1427
Processing services can be added to a single project, by design, so a team can run its own models. Pipelines and algorithms, however, live in one platform-wide namespace and carry no record of which service or project introduced them. When two services advertise the same pipeline slug or algorithm key, they silently share the same rows, and whichever registered first decides what those rows say. This ticket asks how shared and project-only models should coexist. Found while working on #1424, where each algorithm gets a species list whose visibility follows the algorithm, which makes the question concrete.
Observation (from reading the registration code)
Algorithm.key is unique across the platform, and an algorithm is looked up by key and version at registration.
A pipeline is looked up by slug, or by name and version, across the platform.
Registration only adds. An existing algorithm keeps its name, description and category map whatever a later service reports; an existing pipeline can have further algorithms attached by any service that advertises the same slug.
Neither model has a link to a project or a visibility setting of its own. They are reached through processing services and per-project pipeline settings.
Why it matters
A project-only service that reuses a well-known key (deliberately, or because it is a fork of the same model code with different weights or classes) attaches to the shared algorithm. Its predictions are then recorded against an algorithm whose category map may not match what it actually runs.
The reverse order is worse: if a project-only service registers a key first, the shared service that registers later inherits that category map.
Record provenance. Note which processing service first registered an algorithm and a pipeline. Cheap, changes no behaviour, and makes conflicts visible.
Detect conflicts instead of absorbing them. When a service advertises an existing key with a different category map (the stored labels hash makes the comparison cheap), refuse or warn rather than silently keeping the first one.
Namespace project-only models. Scope keys and slugs registered through a project-only service to that service or project, so they cannot collide with shared ones. The largest change, since keys are used in the contract with processing services and in stored results.
A test with two services in different projects advertising the same algorithm key with different category maps: which map wins, and what a classification saved from the second service points at.
The same for a shared pipeline slug with a different set of algorithms.
How often keys already collide in practice: compare the keys advertised by each registered service.
Whether the add-only rule is relied on anywhere (for example to keep historical results pointing at stable rows) before changing it.
Summary
Processing services can be added to a single project, by design, so a team can run its own models. Pipelines and algorithms, however, live in one platform-wide namespace and carry no record of which service or project introduced them. When two services advertise the same pipeline slug or algorithm key, they silently share the same rows, and whichever registered first decides what those rows say. This ticket asks how shared and project-only models should coexist. Found while working on #1424, where each algorithm gets a species list whose visibility follows the algorithm, which makes the question concrete.
Observation (from reading the registration code)
Algorithm.keyis unique across the platform, and an algorithm is looked up by key and version at registration.Why it matters
None of this has been reproduced in a test yet.
Directions to discuss
What still needs verifying
Related: #1424, #1425, #1120.