Resolved problems¶
This is a regression-oriented record of problems repeatedly discussed during CIEL Lab development. It deliberately avoids private Slack links.
| Area | Earlier behavior | Current behavior or recovery | Public reference |
|---|---|---|---|
| Retired Codes | Rows without a terminology-supplied replacement could disappear, leaving unresolved mappings invisible. | The page keeps those retired mappings visible and allows a manual or Code Search replacement. | Verified in the current UI/code; no specific public issue linked |
| Retired Codes layout | Wide result content required awkward page-level horizontal scrolling. | Result layout was adjusted so the review controls remain usable. | Verified through the later product discussion |
| Retired Code suggestions | Loading some suggestion sets could fail the page. | Suggestion loading was corrected; a missing native replacement is now a normal review state. | Verified through the later product discussion |
| Bulk Validation presentation | Early runs returned a raw JSON-oriented result that was difficult to review. | Results are persisted as UI reports with rule/severity filters, downloads, and worklist creation. | Issue #2401 and current code |
| FR22 terminology coverage | Indexed retirement checking was initially treated as SNOMED-specific. | The rule now targets supported indexed terminologies. An absent index is reported operationally rather than silently treated as clinical truth. | Issue #2401 and current rule code |
| HEAD cache after restart | Bulk QA could fail after the service restarted or its cache was cleared. | The normal refresh chain repopulates the HEAD mirror and reindexes it. Durable worklists remain separate from the rebuildable cache. | Current worker/cache implementation; related issue #2535 |
| Long-running review | A reviewer could lose the practical result set as moving HEAD changed. | Reports can create durable worklists, which are the supported resume point. | Current report/worklist implementation |
| MCP mutation safety | Early explanations made the boundary between AI proposal and persistence easy to misunderstand. | MCP tools prepare previews; the authenticated human widget performs the final commit. | Current MCP README and implementation |
| Rejected OCL writes | A concept save or MCP bulk-edit item could show only a generic HTTP 400 failure. | CIEL Lab extracts the actionable validation text from supported OCL error responses and keeps it with the affected write or bulk-edit item. | Issue #2751 and current code |
| Accidental concept retirement | A retired concept could be found and opened but had no restoration action. | In edit mode, Unretire queues a restoration, clears the retirement reason, and refreshes the concept after the OCL write succeeds. | Issue #2750 |
| Incomplete mapping QA | A mapping being entered could surface a premature mapping-related QA result or lose its unfinished draft during a related UI refresh. | In-progress mapping rows are excluded from completed mapping QA presentation and their drafts are preserved until the required fields are complete. | Issue #2954 and current editor tests |
| Long-running Bulk Validation | A full-source QA scan shared an API process and a stopped worker could leave the job running indefinitely. | Bulk Validation runs through the bulk worker, supports cross-process cancellation, and stale jobs are failed for review. | Current worker handoff and routing tests |
| Text-search ordering | Correct text matches could be ordered by concept ID, placing weak or unrelated-looking results before the intended preferred name. | Unsorted text searches rank the existing matched set by typed-term evidence, with preferred English-name matches before synonym-only matches. | Current ranking tests and decision record 0013 |
| Apostrophe variants in names | A name with a straight or typographic apostrophe required the same punctuation in the search query. | Human-readable name fields are indexed with an apostrophe-folded form, so common apostrophe variants match after reindexing. | Current text-index and reindex tests |
| Mapping-only source associations | Imported CIEL-to-ICD-11-WHO mappings were absent from Namespace even though their database rows existed. | Large imports require an explicit reindex when they exceed the automatic-index threshold, and Namespace requires a released version of the mapping-only source. | Issue #2953; follow-up #2990 |
Regression checks¶
After changes in these areas, verify:
- A retired mapping with no native replacement remains visible.
- Manual replacement can use a candidate from the correct source/version.
- Bulk Validation creates a filterable persisted report.
- Selected findings create a worklist that remains available after HEAD refresh.
- FR22 tests a non-SNOMED indexed terminology.
- A cleared HEAD cache can be rebuilt without deleting durable worklists.
- An MCP tool call cannot persist an OCL change without the human widget.
- A rejected OCL write shows the upstream validation reason without exposing credentials or raw response data.
- A retired concept can be restored and is confirmed active by a fresh server read.
The semantic specificity behavior tracked in issue #2389 is not listed as resolved. It remains a retrieval limitation and belongs under Known limitations.