Make Search watch admission truthful and recoverable #1295

Closed
opened 2026-08-23 05:57:48 +00:00 by timmy · 0 comments
Owner

Problem

The production Search preview omits updated_at, while Following admission requires it. A user can therefore subscribe in Gitea, receive a 503 saying the watch was unchanged, and never see the issue in Following. Existing tests use an impossible mocked preview shape and miss the split state.

Vertical slice

Repair Search → Watch → Following end to end: carry validated issue freshness through the preview contract, preflight local admission before the upstream mutation, compensate confirmed upstream mutations when persistence fails, and surface any unresolvable partial outcome truthfully on mobile.

Acceptance

  • A real-shaped Gitea issue preview carries validated updated_at into Following.
  • Invalid metadata or a full Following collection fails before any subscription mutation.
  • Confirmed Watch creates exactly one account-scoped Following entry; retry is idempotent.
  • Persistence failure is compensated when possible; otherwise the UI says Watching in Gitea / Following sync pending and preserves a repair action.
  • Behavioral focused tests, full suite, and packaged mobile journey pass.
## Problem The production Search preview omits `updated_at`, while Following admission requires it. A user can therefore subscribe in Gitea, receive a 503 saying the watch was unchanged, and never see the issue in Following. Existing tests use an impossible mocked preview shape and miss the split state. ## Vertical slice Repair Search → Watch → Following end to end: carry validated issue freshness through the preview contract, preflight local admission before the upstream mutation, compensate confirmed upstream mutations when persistence fails, and surface any unresolvable partial outcome truthfully on mobile. ## Acceptance - A real-shaped Gitea issue preview carries validated `updated_at` into Following. - Invalid metadata or a full Following collection fails before any subscription mutation. - Confirmed Watch creates exactly one account-scoped Following entry; retry is idempotent. - Persistence failure is compensated when possible; otherwise the UI says Watching in Gitea / Following sync pending and preserves a repair action. - Behavioral focused tests, full suite, and packaged mobile journey pass.
timmy self-assigned this 2026-08-23 05:57:48 +00:00
timmy closed this issue 2026-08-23 06:36:04 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#1295
No description provided.