From 0535e436d549f49a4a53dad493646dba645821ed Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 23 Feb 2026 15:20:32 -0500 Subject: [PATCH] chore(conductor): Add new track 'investigate and fix heavy frametime performance issues' --- conductor/tracks.md | 5 ++++ .../tracks/gui_performance_20260223/index.md | 5 ++++ .../gui_performance_20260223/metadata.json | 8 ++++++ .../tracks/gui_performance_20260223/plan.md | 25 +++++++++++++++++ .../tracks/gui_performance_20260223/spec.md | 27 +++++++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 conductor/tracks/gui_performance_20260223/index.md create mode 100644 conductor/tracks/gui_performance_20260223/metadata.json create mode 100644 conductor/tracks/gui_performance_20260223/plan.md create mode 100644 conductor/tracks/gui_performance_20260223/spec.md diff --git a/conductor/tracks.md b/conductor/tracks.md index 8d6bf35..7e72d89 100644 --- a/conductor/tracks.md +++ b/conductor/tracks.md @@ -12,3 +12,8 @@ This file tracks all major tracks for the project. Each track has its own detail - [x] **Track: Review vendor api usage in regards to conservative context handling** *Link: [./tracks/api_metrics_20260223/](./tracks/api_metrics_20260223/)* +--- + +- [ ] **Track: investigate and fix heavy frametime performance issues with the gui** + *Link: [./tracks/gui_performance_20260223/](./tracks/gui_performance_20260223/)* + diff --git a/conductor/tracks/gui_performance_20260223/index.md b/conductor/tracks/gui_performance_20260223/index.md new file mode 100644 index 0000000..2a0347c --- /dev/null +++ b/conductor/tracks/gui_performance_20260223/index.md @@ -0,0 +1,5 @@ +# Track gui_performance_20260223 Context + +- [Specification](./spec.md) +- [Implementation Plan](./plan.md) +- [Metadata](./metadata.json) \ No newline at end of file diff --git a/conductor/tracks/gui_performance_20260223/metadata.json b/conductor/tracks/gui_performance_20260223/metadata.json new file mode 100644 index 0000000..a604b5a --- /dev/null +++ b/conductor/tracks/gui_performance_20260223/metadata.json @@ -0,0 +1,8 @@ +{ + "track_id": "gui_performance_20260223", + "type": "bug", + "status": "new", + "created_at": "2026-02-23T15:10:00Z", + "updated_at": "2026-02-23T15:10:00Z", + "description": "investigate and fix heavy frametime performance issues with the gui" +} \ No newline at end of file diff --git a/conductor/tracks/gui_performance_20260223/plan.md b/conductor/tracks/gui_performance_20260223/plan.md new file mode 100644 index 0000000..182c852 --- /dev/null +++ b/conductor/tracks/gui_performance_20260223/plan.md @@ -0,0 +1,25 @@ +# Implementation Plan: GUI Performance Fix + +## Phase 1: Instrumented Profiling and Regression Analysis +- [ ] Task: Baseline Profiling Run + - [ ] Sub-task: Launch app with `--enable-test-hooks` and capture `get_ui_performance` snapshot on idle startup. + - [ ] Sub-task: Identify which component (Dialogs, History, GUI_Tasks, Blinking, Comms, Telemetry) exceeds 1ms. +- [ ] Task: Regression Analysis (Commit `8aa70e2` to HEAD) + - [ ] Sub-task: Review `git diff` for `gui.py` and `ai_client.py` across the suspected range. + - [ ] Sub-task: Identify any code added to the `while dpg.is_dearpygui_running()` loop that lacks throttling. +- [ ] Task: Conductor - User Manual Verification 'Phase 1: Instrumented Profiling and Regression Analysis' (Protocol in workflow.md) + +## Phase 2: Bottleneck Remediation +- [ ] Task: Implement Performance Fixes + - [ ] Sub-task: Write Tests (Performance regression test - verify no new heavy loops introduced) + - [ ] Sub-task: Implement Feature (Refactor/Throttle identified bottlenecks) +- [ ] Task: Verify Idle FPS Stability + - [ ] Sub-task: Write Tests (Verify frametimes are < 16.6ms via API hooks) + - [ ] Sub-task: Implement Feature (Final tuning of update frequencies) +- [ ] Task: Conductor - User Manual Verification 'Phase 2: Bottleneck Remediation' (Protocol in workflow.md) + +## Phase 3: Final Validation +- [ ] Task: Stress Test Verification + - [ ] Sub-task: Write Tests (Simulate high volume of comms entries and verify FPS remains stable) + - [ ] Sub-task: Implement Feature (Ensure optimizations scale with history size) +- [ ] Task: Conductor - User Manual Verification 'Phase 3: Final Validation' (Protocol in workflow.md) \ No newline at end of file diff --git a/conductor/tracks/gui_performance_20260223/spec.md b/conductor/tracks/gui_performance_20260223/spec.md new file mode 100644 index 0000000..bfd672b --- /dev/null +++ b/conductor/tracks/gui_performance_20260223/spec.md @@ -0,0 +1,27 @@ +# Specification: GUI Performance Investigation and Fix + +## Overview +This track focuses on identifying and resolving severe frametime performance issues in the Manual Slop GUI. Current observations indicate massive frametime bloat even on idle startup, with performance significantly regressing (target 60 FPS / <16.6ms) since commit `8aa70e287fbf93e669276f9757965d5a56e89b10`. + +## Functional Requirements +- **Deep Profiling:** + - Use the high-resolution component timing (implemented in previous tracks) to pinpoint the exact main loop component causing bloat. + - Verify if the issue is in DPG rendering, theme binding, telemetry gathering, or thread synchronization. +- **Regression Analysis:** + - Examine changes since commit `8aa70e287fbf93e669276f9757965d5a56e89b10` to identify potentially expensive operations introduced to the main loop. +- **Optimization:** + - Refactor or throttle any identified bottlenecks. + - Ensure that UI initialization or data aggregation does not block the main thread unnecessarily. + +## Non-Functional Requirements +- **Target Performance:** Consistent 60 FPS (<16.6ms per frame) during idle operation. +- **Stability:** Zero frames exceeding 33ms (spike threshold) during normal idle use. + +## Acceptance Criteria +- [ ] Manual Slop GUI launches and maintains a stable <16.6ms frametime on idle. +- [ ] Performance Diagnostics panel confirms the absence of >16.6ms spikes on idle. +- [ ] The root cause of the regression is identified and verified through empirical testing. + +## Out of Scope +- Optimizing AI response times (latency of the provider API). +- GPU-side optimizations (shaders/VRAM management). \ No newline at end of file