elsa-core/specs
Sipke Schoorstra 249bde780b
fix(user-tasks): align query sort and cursor contract across providers (#8144)
* fix(user-tasks): align query sort and cursor contract across providers

Implement the REST updated sort on EF and VNext, drop the InMemory-only
completed sort, and use one always-ascending Id tiebreaker plus the
production JSON base64url cursor codec in every repository.

Closes #8110

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

* fix(user-tasks): keep title cursor ties comparison-consistent

Use the same string.Compare relation for title ordering and cursor
tie detection so culture-equal Unicode forms are not skipped. Assert
updated sort order directly so a created fallback cannot pass.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

* fix(user-tasks): use one ordinal comparer for title sort and cursors

OrderBy, title-tie detection, and cursor filtering now share
StringComparer.Ordinal on the LINQ-to-objects providers so Unicode
variants cannot skip a page.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

* fix(user-tasks): share default title comparison across providers

InMemory and VNext title sort/cursors now use the same OrderBy plus
string.Compare relation as EF (SQL collation / current culture) so a
title cursor stays portable. Ties still use Compare == 0, not ordinal ==.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

* docs(user-tasks): title cursors are provider-scoped, not portable

Restore InMemory/VNext ordinal title OrderBy/tie/cursor (EF stays
column-collation). Document that title pages must be recreated after a
provider or collation change; other sorts plus Id stay portable.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-14 06:43:03 +02:00
..
001-shell-reload-api
002-graceful-shutdown Graceful shutdown for the workflow runtime (drain, pause, recover) (#7424) 2026-05-02 19:27:08 +02:00
003-live-server-logs [codex] Add live server log streaming diagnostics (#7438) 2026-05-11 00:08:52 +02:00
004-diagnostics-structured-logs [codex] Add live server log streaming diagnostics (#7438) 2026-05-11 00:08:52 +02:00
005-structured-log-persistence [codex] Expose structured log storage diagnostics (#7446) 2026-05-13 16:32:23 +02:00
006-diagnostics-console-logs Add diagnostics console logs (#7462) 2026-05-18 02:16:46 +02:00
006-state-machine-activity Preserve StateMachine composite transition continuations 2026-08-31 04:51:34 +02:00
007-secrets-module Add secrets module (#7468) 2026-05-20 11:48:01 +02:00
008-diagnostics-otel [codex] Fix console log metadata and type resolution (#7542) 2026-05-30 22:52:01 +02:00
008-weaver-ai-copilot Add Weaver grounding tools 2026-06-08 15:40:10 +02:00
009-operational-dashboard [codex] Clarify dashboard widget integration contract (#7532) 2026-05-23 15:47:11 +02:00
010-workflow-json-hardening Refactor: Overhauls workflow JSON type serialization (#7549) 2026-05-31 11:09:39 +02:00
011-persistence-vnext Add Persistence vNext provider-neutral POC 2026-06-02 21:05:21 +02:00
012-external-authentication feat(auth)!: structured authorization model, phases 1-6 (#7980) 2026-08-24 23:44:55 +02:00
012-output-converters Harden output converter contracts 2026-08-21 22:22:47 +02:00
012-weaver-grounding-tools Add Weaver grounding tools 2026-06-08 15:40:10 +02:00
013-rbac-authorization-model Auto stash before merge of "main" and "origin/main" 2026-08-28 22:32:50 +02:00
013-user-tasks fix(user-tasks): align query sort and cursor contract across providers (#8144) 2026-09-14 06:43:03 +02:00
diagnostics-console-streaming-roadmap.md Add diagnostics console logs (#7462) 2026-05-18 02:16:46 +02:00
output-converters-delivery-sequence.md Add output converter support at binding boundaries 2026-08-21 22:22:46 +02:00