ASSEMBLE · VERIFY · INSPECT

Task-history pagination: a changing collection

Inspect every returned ID as the collection changes between pages.

60-second inspection · no external storage

Your experiment

Read the five-record history while a record is inserted after page one. Compare a frozen snapshot with live offset pagination and inspect duplicates or omissions. Then try deletion and page sizes 1–3. No client-side cursor can itself authorize a foreign tenant.

Play inspects the whole trace over 60 seconds at 1×. Pause, step, restart or change speed. Parameters reset the trace without autoplay. Teaching time is not network, storage or SDK latency.

Exact visible content

Decision trace

Complete state inspector

Pagination is an application-level policy comparison, not an A2A pagination implementation. Snapshot mode literally copies the opening records. Live mode uses an offset into the changing array. There are no signed cursors, database isolation, expiry or remote pages. The endpoint always checks tenant scope; cursor contents are not authority. All records, objects and identities are fictional. No credentials, files, cloud services or external model are accessed. Pinned A2A v0.3 reference · Cloud Storage preconditions · Official AICassindra articles.

Read a collection that can change

The opening history contains IDs a, c, e, g and i. Pagination returns actual records and tracks the next numeric offset. The collection can change between the first and second page, so a sequence of individually valid pages need not describe one consistent opening snapshot. Inspect Exact visible content and the complete state at each operation to distinguish returned records from records that merely exist in the live collection.

Use each listing control

Actor tenant chooses the owner Alpha or foreign Beta. Beta is denied before any page records are returned; an offset is not authorization. Records per page chooses one through three records per request. Freeze the opening collection copies the five initial records and keeps subsequent pages on that copy. With freezing disabled, each offset is applied to the currently sorted live array. Change after page one inserts b, deletes a, or leaves the collection unchanged. This one mutation occurs after the first page, not on every request.

Observe duplication and omission

Use two records per page and disable freezing. With Insert b, page one returns a and c; the next live offset skips to c again after the insertion shifts positions. The duplicate detector should report c. Choose Delete a instead: removing an earlier record shifts e before the next offset, so e is omitted. Restore freezing and compare: pages still describe the opening collection even though the live array changed. The final missing-ID calculation compares against the original five IDs, not against every concurrent insert that might have happened.

Interpret the cursor and clock

Play spreads the bounded listing over sixty inspection seconds. Pause freezes the current operation, Next operation advances the trace, Restart rewinds, Speed changes inspection pace and the slider seeks reproducibly. Every input change builds a new listing. The cursor shown here is a plain teaching object containing an offset, tenant and snapshot marker; it is not a signed opaque production token. The model has no database transaction isolation, cursor expiry, durable snapshot, authorization service or concurrent writers beyond the one configured mutation. Use the results to explain why offset pagination over mutable data needs a consistency contract, not to claim that all cursor pagination automatically freezes history.

Views are my own and do not represent any employer, past or present.

Search