test(sync): preserve question bootstrap and reducer invariants (#3439)
* test(sync): preserve question bootstrap and reducer invariants
Port the main-independent test assets from the superseded hybrid V2
question PRs (#3266/#3267/#3288) onto current main's V1-only
architecture:
- listPendingQuestions: unscoped + per-directory fan-out, merge with
id-dedupe (first wins), failure throws instead of empty success,
malformed-item skip, true-empty success (client.questions.test.ts)
- question reducer invariants: idempotent upsert-by-id, replace-not-
first-wins, removal by session/request pair, duplicate-terminal no-op,
late-asked re-registration (no tombstone)
- bootstrap deferred-phase question merge: signature-based replace and
disappearance-deletion, in-flight-change preservation (stale guard),
retry-then-merge on transient failure
Tests only: zero production changes, zero V2 SDK calls, zero fallback
logic, zero raw V2 event aliases.
* test(questions): clarify V1 merge id-filter test title
---------
Co-authored-by: bashrusakh <bashrusakh@users.noreply.github.com>