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
The mapping project's target repo version is semantically load-bearing — it determines concept identity for dedup across all algorithm paths, and it's the version \$resolveReference must be invoked against when loading concept details. The version dropdown on the project config screen already exposes this as a first-class field (Repository → Version, e.g. "2.81", "2.71.21AA", "HEAD").
But the current code paths accept missing/blank version in several ways:
These two defaults diverge, so the same project can end up with version: \"HEAD\" vs version: undefined depending on which code path populated projectContext.target_repo.
Resolution correctness. `$resolveReference` resolves to the latest released version (or HEAD if none) when version is unspecified — NOT to whatever the user intended. Missing-version projects therefore quietly load concept details from a version the user didn't choose.
Auditability. "What did the user actually pick?" should be a clear, single value on the project, not a side-effect of code-path order.
Author/user role separation. HEAD is for authors editing in-progress data; mapping users should rarely target HEAD. Making HEAD an explicit choice (rather than a fallback default) discourages accidental HEAD-pinning. In the future, repo admins may control whether HEAD is even offered in the dropdown for mapping use.
Migration consideration: existing saved projects with missing version need a one-time backfill OR a project-load gate that prompts the user to pick a version before continuing.
Acceptance
Cannot save a project without selecting a target_repo version.
Loading a legacy project with no version triggers a blocking prompt to select one.
projectContext.target_repo.version is always a non-empty string in any code path that reads it.
The two defaults at MapProject.jsx:1060 and :693 are removed.
Out of scope
Restricting which versions are available in the dropdown (HEAD allowed-by-default vs. admin-controlled) — that's a separate repo-admin policy ticket.
Context
Companion follow-up to OpenConceptLab/ocl_issues#2520 (target-repo version alignment across algorithm paths).
The mapping project's target repo version is semantically load-bearing — it determines concept identity for dedup across all algorithm paths, and it's the version
\$resolveReferencemust be invoked against when loading concept details. The version dropdown on the project config screen already exposes this as a first-class field (Repository → Version, e.g. "2.81", "2.71.21AA", "HEAD").But the current code paths accept missing/blank version in several ways:
'HEAD'.undefined.version: \"HEAD\"vsversion: undefineddepending on which code path populatedprojectContext.target_repo.Why this matters
Scope
|| 'HEAD'default at MapProject.jsx:1060.|| undefineddefault at MapProject.jsx:693.Acceptance
projectContext.target_repo.versionis always a non-empty string in any code path that reads it.Out of scope