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
Non-blocking residuals from the fresh-context review of PR #2567 (closes #2301, #2303, #2304, #2305), tracked here rather than fix-cycled. File references are at that PR's head 744f0cff0.
MEDIUM, unpinned behaviour.refreshTerminalDetails (captureStore.ts ~594) hardcodes trackLoading: false and has two callers: the background poll tick (~756) and batchTriage (~839), which is a foreground user action. A Legacy batch triage that reconciles the open capture's detail no longer raises loadingDetail (the InboxDetailPanel.vue "Refreshing detail" state and the disabled Refresh Detail control). Feedback is not lost because batchBusy stays true for the whole batchTriage body and InboxListPanel.vue renders "Processing" from it, but no spec asserts loadingDetail stays false through batchTriage. Either thread trackLoading through refreshTerminalDetails's options with the poll passing false, or add one assertion in the existing batchTriage specs.
LOW, load characteristic.notifyTriageCountChanged() now fires at most once per tick per newly observed terminal id (~647-658), so a batch whose items finish spread over the 60 s window can issue up to ~20 GET /workspace/home calls where the old code made exactly one. This is what [Frontend][Inbox] Partial batch-triage outcomes do not refresh the workload count #2303 asked for and each call is best-effort, but the endpoint is documented as the heaviest on the surface; consider coalescing per tick.
LOW, growth.latestSummaryGenerationById (~121) is a second per-item Map that grows for the store's lifetime with no eviction on scope change, list replacement or logout; it mirrors the pre-existing latestDetailWriteGenerationById. Correctness is unaffected (monotonic clock; a stale-high entry cannot pin a row). A resetForLogout analogue as in workspaceStore.ts would bound both.
LOW, coverage.[Frontend][Inbox] Successful batch poll recovery leaves a stale list error hiding rows #2305's "aborted" negative control has no spec: superseded and 401/403 are proven not to clear a standing listError, but "poll stopped or aborted mid-flight while a foreground listError stands" is not; the code path (isCurrent() checks !stopped && !controller.signal.aborted) is straightforwardly correct.
Note for future callers. "Same scope" for the listError clear is a caller-side contract: the store clears on any accepted snapshot for the query the poll was constructed with, and only the orchestrator's cancelBatchTriagePolling() on board and archived-history changes (plus unmount) prevents a cross-scope clear. Documented in useInboxOrchestrator.spec.ts.
Non-blocking residuals from the fresh-context review of PR #2567 (closes #2301, #2303, #2304, #2305), tracked here rather than fix-cycled. File references are at that PR's head
744f0cff0.refreshTerminalDetails(captureStore.ts~594) hardcodestrackLoading: falseand has two callers: the background poll tick (~756) andbatchTriage(~839), which is a foreground user action. A Legacy batch triage that reconciles the open capture's detail no longer raisesloadingDetail(theInboxDetailPanel.vue"Refreshing detail" state and the disabled Refresh Detail control). Feedback is not lost becausebatchBusystays true for the wholebatchTriagebody andInboxListPanel.vuerenders "Processing" from it, but no spec assertsloadingDetailstays false throughbatchTriage. Either threadtrackLoadingthroughrefreshTerminalDetails's options with the poll passingfalse, or add one assertion in the existingbatchTriagespecs.notifyTriageCountChanged()now fires at most once per tick per newly observed terminal id (~647-658), so a batch whose items finish spread over the 60 s window can issue up to ~20GET /workspace/homecalls where the old code made exactly one. This is what [Frontend][Inbox] Partial batch-triage outcomes do not refresh the workload count #2303 asked for and each call is best-effort, but the endpoint is documented as the heaviest on the surface; consider coalescing per tick.latestSummaryGenerationById(~121) is a second per-item Map that grows for the store's lifetime with no eviction on scope change, list replacement or logout; it mirrors the pre-existinglatestDetailWriteGenerationById. Correctness is unaffected (monotonic clock; a stale-high entry cannot pin a row). AresetForLogoutanalogue as inworkspaceStore.tswould bound both.listError, but "poll stopped or aborted mid-flight while a foregroundlistErrorstands" is not; the code path (isCurrent()checks!stopped && !controller.signal.aborted) is straightforwardly correct.listErrorclear is a caller-side contract: the store clears on any accepted snapshot for the query the poll was constructed with, and only the orchestrator'scancelBatchTriagePolling()on board and archived-history changes (plus unmount) prevents a cross-scope clear. Documented inuseInboxOrchestrator.spec.ts.Refs #2301, #2303, #2304, #2305, PR #2567.