Commit Graph

502 Commits

Author SHA1 Message Date
lyon 52182aa0a5 fix: expose workbench cache observability 2026-06-22 15:10:26 +08:00
lyon 2f00d1dbff fix(workbench): refresh turn status on terminal evidence 2026-06-22 13:39:37 +08:00
lyon f166697126 fix: keep running turn timing on turn projection 2026-06-22 13:19:47 +08:00
lyon 92bad3d44d fix(workbench): avoid stale request steer mode 2026-06-22 12:13:29 +08:00
lyon fe1f8cf6b3 fix(workbench): prefer durable terminal duration 2026-06-22 05:28:50 +08:00
lyon ef32a1e87e fix(workbench): seal terminal turn timing and diagnostics 2026-06-22 05:19:34 +08:00
lyon 4067c92a72 fix workbench provider catalog refresh 2026-06-21 21:10:42 +08:00
Lyon 507850579e fix: stabilize workbench turn diagnostics (#1828) 2026-06-21 18:23:13 +08:00
Lyon 8efdbbd46e fix: keep workbench deeplink detail hydration (#1827) 2026-06-21 16:20:48 +08:00
lyon 6804decc56 fix: stop completed workbench diagnostics polling 2026-06-21 15:45:40 +08:00
Lyon a5b47d5d8d fix: expose workbench projection failures in otel (#1824) 2026-06-21 13:44:22 +08:00
Lyon fb43019d1b fix(workbench): limit turn status polling to active traces (#1810) 2026-06-21 11:04:30 +08:00
Lyon 4c562e7176 fix(workbench): skip terminal turn polling (#1809)
Stop realtime gap hydration from polling completed/terminal Workbench turns. This avoids repeated /v1/workbench/turns requests for old traces while preserving active turn refresh.\n\nRefs #1791.
2026-06-21 10:50:56 +08:00
Lyon 8b529c39a0 fix(workbench): retry transient runtime store reads (#1797) 2026-06-21 09:16:23 +08:00
lyon 7ca7a9974b fix(workbench): keep active turn polling until terminal 2026-06-21 05:37:30 +08:00
lyon a734a78777 fix: clear transient workbench diagnostics on terminal turn 2026-06-21 05:16:06 +08:00
lyon 95c1e3d8fe fix: keep visible workbench duration monotonic 2026-06-21 04:54:23 +08:00
lyon 93151384b3 fix: mark visible terminal workbench messages completed 2026-06-21 04:42:43 +08:00
lyon ac1753f51c fix: keep workbench turn timing monotonic 2026-06-21 04:31:16 +08:00
lyon bcc8aa189b fix: stabilize workbench timing diagnostics 2026-06-21 02:56:19 +08:00
lyon a6b5e9a975 fix: harden workbench agent retry projection 2026-06-21 02:43:33 +08:00
lyon bad5a478bd fix: recover Workbench terminal outbox projection 2026-06-20 20:12:01 +08:00
lyon 6ab94f23c8 fix: clarify workbench trace event diagnostics 2026-06-20 19:43:54 +08:00
Lyon 4f7e55e2d8 fix: PJ2026-0104010803 P5 残余 events.at(-1) 读侧推理清理 + code-agent metric status (#1759)
useTraceSubscription.ts:
- mergeTraceResults: lastEventLabel 不 fallback 到 events.at(-1)
- mergeTraceSnapshots: lastEventLabel 不 fallback 到 events.at(-1)
- traceSnapshotSignalKey: 不从 events.at(-1) 推导 signal key

server-code-agent-http.ts:
- recordCodeAgentProjectionMetric: status 只读 projection.status
- source 固定为 workbench_read_model

负向源码扫描确认:
- result?.status ?? trace?.status: 消除
- events.at(-1) lifecycle 推断: 消除
- .catch(() => {}) 静默吞错: 消除
- traceStore.subscribe: 仅作为 outbox 不可用时的兼容降级

Closes #1751
Refs #1742
2026-06-20 19:42:19 +08:00
Lyon 44019f229e feat: PJ2026-0104010803 P4 前端/CLI 单读源收敛 - 删除 events.at(-1) 读侧推理 (#1758)
workbench.ts (stores):
- applyTraceHydrationResult: activityLabel 只读 result.lastEventLabel,不读 events.at(-1)
- lastEventLabel: 只读 result.lastEventLabel,不 fallback 到 events.at(-1)
- normalizeTraceSnapshot: lastEventLabel 只读 source.lastEventLabel
- mergeRunnerTrace: lastEventLabel 不从 events.at(-1) 推断

useTraceSubscription.ts:
- lastEventLabel 只读 snapshot.lastEventLabel,不读 events.at(-1)

trace-renderer.ts (CLI):
- traceNoiseSummaryRow: status 只读 trace.status/traceStatus,不 fallback 到 lastEvent.status
- 保持 lastLabel 用于展示,但不参与 lifecycle 推断

api/workbench.ts:
- 添加注释标记 observedAt/lastEventAgeMs 为 diagnostic-only,不作用户可见相对时间权威

Closes #1750
Refs #1742
2026-06-20 19:37:35 +08:00
lyon ff60ff853b test(web): cover user-visible error diagnostics matrix 2026-06-20 16:54:59 +08:00
lyon c73b19fcaa feat(web): configure trace explorer links 2026-06-20 16:26:54 +08:00
lyon 241366b264 fix(web): advance workbench timing labels with browser ticker 2026-06-20 16:10:36 +08:00
lyon d947b9e4e8 feat(web): surface Workbench diagnostics 2026-06-20 16:03:05 +08:00
lyon 98b94b7fd1 feat(web): surface api error diagnostics 2026-06-20 15:38:11 +08:00
lyon 03942afc5c fix: 收敛 workbench 消息头 timing 投影 2026-06-20 14:54:04 +08:00
lyon 32a66f18b3 fix: 统一上游不可达错误文案 2026-06-20 14:26:44 +08:00
lyon 766f41d415 fix: render workbench trace clocks with display timezone 2026-06-20 14:07:16 +08:00
lyon 4a9498d720 fix(workbench): expose code agent timing metadata 2026-06-20 13:55:57 +08:00
lyon f2a54532a2 fix: show configured workbench time label 2026-06-20 13:44:47 +08:00
lyon 01f72df333 fix: render workbench time from yaml config 2026-06-20 13:29:55 +08:00
lyon 6468263672 fix: thin workbench session list projection 2026-06-20 13:24:49 +08:00
Lyon 96704ea1d7 Merge pull request #1695 from pikasTech/codex/hwlab-1691-problem-rows
fix: separate performance problems from sample health
2026-06-20 12:47:57 +08:00
Lyon acd9831149 Fix workbench trace projection authority (#1696) 2026-06-20 12:47:18 +08:00
lyon 7448803c9d fix: separate performance problems from sample health 2026-06-20 12:46:29 +08:00
lyon 8c27242656 fix: scope workbench performance attribution health 2026-06-20 12:32:44 +08:00
lyon bcb635a4c5 test(web): add workbench golden reliability e2e 2026-06-20 11:33:56 +08:00
Lyon 5e7224c666 test(web): align performance all-window label (#1685) 2026-06-20 11:00:42 +08:00
lyon 793f0f39a4 fix: use projected trace cursor as workbench authority 2026-06-20 10:55:11 +08:00
Lyon 2a7fbf5771 test(web): govern performance dashboard windows (#1683) 2026-06-20 10:53:32 +08:00
lyon 4290a280d9 fix: separate workbench message and trace authorities 2026-06-20 10:09:47 +08:00
lyon c51dd122e2 fix: 区分 provider retry 与终态失败 2026-06-20 09:51:30 +08:00
Lyon 40a54eef20 feat: align rum samples with backend evidence (#1674) 2026-06-20 09:33:54 +08:00
Lyon e0127f1044 feat: expose performance collection health (#1671) 2026-06-20 09:03:17 +08:00
lyon 5a8e6b39e2 test: add workbench p1 reliability inventory 2026-06-20 08:25:37 +08:00