Paginate durable Human Gate decision history on mobile #1444

Closed
opened 2026-08-26 20:58:44 +00:00 by timmy · 0 comments
Owner

Problem

Human Gate decision history is fetched through state=all, capped at 100 rows after pending gates are ordered first. A busy pending queue can hide every prior decision, and older durable receipts are permanently unreachable on mobile.

Vertical slice

  • Add an account-bound, keyset-paginated state=history API ordered newest-first.
  • Return only released, held, and superseded gates with an opaque continuation cursor.
  • Load 20 decisions initially on mobile; append older decisions without duplicates or clearing the selected receipt.
  • Provide touch-sized loading, retry, and terminal states.
  • Add indexes for history listing and per-gate event lookup.

Acceptance

  • 105 pending gates cannot hide decided gates.
  • Cursor pages are stable, principal-bound, duplicate-free, and reject malformed/cross-account cursors.
  • Mobile loads older decisions while retaining already-rendered history and receipt detail.
  • A failed continuation preserves existing decisions and offers a working retry.
  • Focused store/API/frontend tests and packaged mobile browser journey pass.

This extends #1441's initial durable history view; no open/closed title or recent commit implements pagination or older-history continuation.

## Problem Human Gate decision history is fetched through `state=all`, capped at 100 rows after pending gates are ordered first. A busy pending queue can hide every prior decision, and older durable receipts are permanently unreachable on mobile. ## Vertical slice - Add an account-bound, keyset-paginated `state=history` API ordered newest-first. - Return only released, held, and superseded gates with an opaque continuation cursor. - Load 20 decisions initially on mobile; append older decisions without duplicates or clearing the selected receipt. - Provide touch-sized loading, retry, and terminal states. - Add indexes for history listing and per-gate event lookup. ## Acceptance - 105 pending gates cannot hide decided gates. - Cursor pages are stable, principal-bound, duplicate-free, and reject malformed/cross-account cursors. - Mobile loads older decisions while retaining already-rendered history and receipt detail. - A failed continuation preserves existing decisions and offers a working retry. - Focused store/API/frontend tests and packaged mobile browser journey pass. This extends #1441's initial durable history view; no open/closed title or recent commit implements pagination or older-history continuation.
timmy self-assigned this 2026-08-26 20:58:44 +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#1444
No description provided.