You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The durable per-view viewStates pipeline (vps2 series, #1546) is pinned by a single well-formed-entries prune baseline test (ClineProvider.spec.ts:1210). Three boundary behaviors are untested:
An entry without updatedAt (written before the field existed) ranks last via updatedAt ?? 0 (ClineProvider.ts:634) and is the first to fall off the 50-entry cap — untested.
Ties on updatedAt preserve insertion order (stable sort), so the first 50 registered views survive the cap — untested.
dispose() is retention-only for durable per-view state: a view's viewStates entry must survive provider teardown so an editor tab reopens with its saved selections (Preserve durable editor view state across provider disposal #1065) — untested, so a future teardown rewrite that clears the entry would pass CI.
Expected behavior
Pin all three with regression tests:
Pruning a 51-entry map (50 timestamped + 1 without updatedAt) keeps 50 entries and drops the updatedAt-less entry.
Pruning 55 entries sharing one updatedAt keeps the first 50 inserted and drops the last 5.
After setViewStateId + saveViewState, dispose() leaves the durable entry in viewStates intact.
Reproduction
No failing behavior to reproduce — this is a coverage gap: a dispose() implementation that clears the view's entry (or a prune that drops ties arbitrarily) would pass the existing suite.
Bug description
The durable per-view
viewStatespipeline (vps2 series, #1546) is pinned by a single well-formed-entries prune baseline test (ClineProvider.spec.ts:1210). Three boundary behaviors are untested:updatedAt(written before the field existed) ranks last viaupdatedAt ?? 0(ClineProvider.ts:634) and is the first to fall off the 50-entry cap — untested.updatedAtpreserve insertion order (stable sort), so the first 50 registered views survive the cap — untested.dispose()is retention-only for durable per-view state: a view'sviewStatesentry must survive provider teardown so an editor tab reopens with its saved selections (Preserve durable editor view state across provider disposal #1065) — untested, so a future teardown rewrite that clears the entry would pass CI.Expected behavior
Pin all three with regression tests:
updatedAt) keeps 50 entries and drops theupdatedAt-less entry.updatedAtkeeps the first 50 inserted and drops the last 5.setViewStateId+saveViewState,dispose()leaves the durable entry inviewStatesintact.Reproduction
No failing behavior to reproduce — this is a coverage gap: a
dispose()implementation that clears the view's entry (or a prune that drops ties arbitrarily) would pass the existing suite.Part of the vps2 durable per-view state series — tracked in easonLiangWorldedtech#41.