Developer
gignat-dev
gignat@google.com
Performance
Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits from this developer.
| Hash | Message | Date | Files | Effort |
|---|---|---|---|---|
| deae41b | This commit **fixes a bug** in the **InputEvents plugin** that caused crashes when processing negative `end_to_end_latency_dur` values. Previously, the SQL query in `ui/src/plugins/com.android.InputEvents/index.ts` only filtered for `end_to_end_latency_dur IS NOT NULL`, which allowed invalid negative durations to be included, leading to plugin failure. The **bug fix** modifies this condition to `WHERE end_to_end_latency_dur > 0`, ensuring that only valid, positive latency data is processed. This change prevents the **InputEvents plugin** from crashing and enhances the reliability of UI event analysis. | Mar 13 | 1 | waste |
| 40b1f91 | This commit introduces a **new feature** to the **Perfetto SQL standard library** for **Android trace processing**, specifically enhancing the `android_monitor_contention` and `android_monitor_contention_chain` tables. It adds a `lock_name` column, which is derived by identifying `monitor contention*` slices surrounded by `${name}_lock_acquire` and `${name}_lock_held` slices. This allows for direct identification of contention on specific "big locks" like `ams`, `proc`, `wms`, and `pms`. This improvement provides more granular insights into **Android performance bottlenecks**, making debugging more efficient by pinpointing the exact lock causing contention. | Mar 13 | 1 | grow |
| 289efe0 | This commit introduces a **new capability** to the **Android ANR plugin** within the UI, significantly improving the analysis of Application Not Responding (ANR) events. It enhances the ANR selection logic to gracefully handle scenarios where the main thread track is unavailable, a common occurrence. Now, when an ANR is selected, the system will automatically scroll to and expand the relevant process group and highlight the ANR region, ensuring the user always sees the critical context. If the main thread track is present, it will be selected as before. This change also includes **refactoring** by extracting helper methods like `pinAnrTrack` and `scrollToAndSelect` for better code organization within `ui/src/plugins/com.android.AndroidAnr/index.ts`. | Mar 6 | 1 | grow |
| 1b70f43 | This commit **fixes a data visualization bug** within the **MemoryViz** UI plugin, specifically addressing the missing representation of `kswapd0` memory reclaim activity. Previously, the `kswapd0` process, though active, did not appear as slices on the debug track due to an incomplete SQL query. The **fix** involves **updating the SQL query** in `ui/src/plugins/com.android.MemoryViz/index.ts` to correctly identify `kswapd0` slices by joining the `sched` and `thread` tables and adding an interval merge step. This ensures that **MemoryViz** now accurately displays `kswapd0` activity, providing a more complete picture of **memory reclaim** on the debug track. | Mar 6 | 1 | waste |
| bb8483a | This commit performs a significant **maintenance refactoring** of the **Trace Processor's Android memory breakdown SQL script** (`memory_breakdown.sql`) within the standard library. It **exposes detailed table schemas** and **renames internal tables** to improve data clarity and structure, while also adjusting the `zygote_adjusted_value` computation and modifying how large memory spikes are handled, now marking them instead of removing them from analysis. Consequently, the **MemoryViz UI plugin** (`com.android.MemoryViz`) is updated to correctly consume the new table and column names, ensuring continued functionality and improved data consistency across the system. | Mar 4 | 2 | maint |
| 7616314 | This commit implements a **bug fix** within the **`stdlib`** module, specifically addressing an issue in the `_normalize_event_channel` function found in `src/trace_processor/perfetto_sql/stdlib/android/input.sql`. Previously, this function incorrectly parsed event channel names such as `[Gesture Monitor] swipe-up`, leading to truncated and inaccurate normalized outputs. The change introduces a special case to ensure that these specific channel names are now **correctly normalized**, preserving their full semantic meaning. This improves the accuracy of event channel processing for **Android input traces** by preventing data loss during normalization. | Mar 2 | 1 | waste |
| ba018f5 | This commit introduces a **new feature** by **enabling the Android ANR (Application Not Responding) plugin by default** within the UI. It modifies the `ui/src/core/default_plugins.ts` configuration file to include `com.android.AndroidAnr` in the list of automatically activated plugins. This **enhancement** ensures that users will now have **ANR detection and analysis capabilities** readily available without manual configuration, significantly improving the out-of-the-box experience for Android performance investigations. | Feb 26 | 1 | grow |
| 8ac7eb1 | This commit implements a **UI adjustment** within the **Perfetto UI**, specifically targeting the display of standard groups. It **prevents the 'User Interaction' group from expanding by default**, altering its initial collapsed state. This change, located in `ui/src/plugins/dev.perfetto.StandardGroups/index.ts`, aims to improve the user experience by reducing visual clutter and allowing users to manually expand the group as needed. | Feb 26 | 1 | waste |
| 9440581 | This commit introduces a **new capability** to the **UI** by adding the `LockContention` plugin. This plugin provides a command, "Lock Contention: visualize held locks", which allows users to visualize when specific locks are held by threads. It leverages a debug slice track for this visualization, initially focusing on "big locks". This enhancement improves the debugging and analysis tools available in the **UI** for analyzing thread contention. | Feb 25 | 1 | grow |
| b838b52 | This commit introduces a **new capability** to the **Perfetto Trace Processor standard library** by adding a SQL function `_normalize_event_channel` to `src/trace_processor/perfetto_sql/stdlib/android/input.sql`. This function enhances **Android input event analysis** by normalizing the `event_channel` column in the `android_input_events` table. A new `normalized_event_channel` column is added, providing cleaner, ID-free channel names (e.g., 'PopupWindow' from 'ccf6448 PopupWindow:b20fb4d'). This **improves data readability and simplifies querying** for Android input events, making trace analysis more efficient. | Feb 23 | 1 | grow |
| 12b8052 | This commit delivers a **bug fix** for the **`_oom_adjuster_intervals`** view within the **`stdlib/android/oom_adjuster.sql`** module. Previously, the inclusive `BETWEEN` clause in the `LEFT JOIN` condition could cause `counter.ts` values to be double-counted across consecutive OOM adjuster intervals, leading to overlapping data. The fix tightens the join condition to `> oom_adj_ts AND <= coalesce(oom_adj_next_ts, trace_end())`, ensuring each counter value is associated with only one preceding interval. This prevents **incorrect or double-counted OOM score data** in trace analysis, improving the accuracy of interval matching for OOM events. | Feb 23 | 1 | waste |
| 6160955 | This commit introduces a **new feature** to the **UI** by adding the 'Memory: reclaim events' command within the `MemoryViz` plugin. This command allows users to **visualize memory reclaim events**, specifically displaying merged kswapd and direct reclaim slices, with direct reclaim prioritized to indicate severe memory pressure. Additionally, it visualizes Low Memory Kill (LMK) events, pivoted on the `oom_bucket` of the killed application, leveraging necessary **Perfetto modules**. This enhancement provides critical insights into system memory pressure and LMK occurrences for performance analysis, improving the debugging capabilities of the tool. | Feb 23 | 1 | grow |
| 3cf5164 | This commit **improves anomaly detection** within the **`stdlib: memory_breakdown`** module by **refactoring** the filtering logic in `android/memory/memory_breakdown.sql`. The updated process now first denies memory tracks with large swings before filtering counter values by trace limits, which was previously done in reverse. This ensures that tracks with significant memory changes are correctly identified and excluded, preventing potential inaccuracies in memory analysis. The technical change involves moving trace limits timestamp filtering from the `mem_counter_values` CTE to the `mem_intervals` CTE, leading to **more robust and accurate memory analysis**. | Feb 20 | 1 | maint |
| 8395cf4 | This commit introduces an **enhancement** to the **MemoryViz** plugin, specifically improving the presentation of memory usage data. It modifies the `render` method within `ui/src/plugins/com.android.MemoryViz/index.ts` to **order memory buckets by their peak value in descending order**. This ensures that the most significant memory consumers are displayed prominently, making it easier for users to analyze and identify memory hotspots within the **UI**. | Feb 19 | 1 | grow |
| 0609d95 | This commit introduces a **new ANR classification type**, `SYSTEM_SERVER_WATCHDOG_TIMEOUT`, within the **`android_anrs`** standard library module in **Trace Processor's Perfetto SQL stdlib**. This **new capability** specifically categorizes `system_server` ANRs that do not fit existing patterns, enhancing the granularity of **Android ANR analysis**. It also adds a new function, `_extract_anr_duration_from_subject`, to reliably parse the timeout duration from ANR subject strings. This refines how **Trace Processor** identifies and reports `system_server` watchdog ANRs, providing more precise insights into system stability, with corresponding updates to **ANR metric tests**. | Feb 19 | 4 | maint |
| ea00d77 | This commit introduces a **new feature** to the **InputEvents plugin**, adding a command to visualize input event overlaps and concurrency. Users can now analyze input processing density over a selected time range, with intervals measured from dispatch to ACK. The visualization generates a parent track for total concurrency, along with detailed sub-tracks for individual processes and their respective input event channels, ordered by peak value. This enhancement provides critical insights into input event handling performance within the UI. | Feb 19 | 1 | grow |
| 10e5512 | This commit introduces **new memory counter tracks** to the **MemoryViz plugin**, significantly enhancing its memory monitoring capabilities. Specifically, it adds `mem.heap`, `mem.rss.shmem`, `mem.dmabuf_rss`, `mem.locked`, and 'GPU Memory' tracks, providing a more granular view of system memory usage. This **feature enhancement** also refines the underlying track creation methods, such as `createTrack` and `onActivate`, to support optional tracks and sorting. The update allows users to gain deeper insights into various memory segments, improving performance analysis and debugging within the UI. | Feb 19 | 1 | grow |
| 9366167 | This commit introduces a **new capability** to the **`sdtlib` `memory_breakdown` module** by adding several **new memory counter tracks**, such as `mem.rss.shmem`, `mem.dmabuf_rss`, `mem.locked`, and `GPU Memory`. It also refines the `mem.heap` metric by adjusting it with the zygote's heap value for each process, providing more accurate memory profiling. Additionally, this change **filters counters to respect trace limits** and **fixes a bug** related to `span_left_join` with overlapping intervals. These updates, primarily within `src/trace_processor/perfetto_sql/stdlib/android/memory/memory_breakdown.sql`, provide users with **more comprehensive and reliable memory analysis** within `perfetto_sql` and include minor performance improvements. | Feb 19 | 1 | grow |
| 31ba4bc | This commit introduces a **new capability** to the **Perfetto SQL standard library** by adding the `upid` column to the `_android_startup_mipmap_1ms` table. This enhancement allows for the inclusion of the **unique process ID** of the starting application directly within the Android startup analysis data. The change specifically modifies `src/trace_processor/perfetto_sql/stdlib/android/startup/startup_mipmap.sql` to enrich the existing startup metrics. This provides users with more granular context, enabling more precise identification and analysis of individual processes involved in Android application startup events. | Feb 18 | 1 | grow |
| b84474e | This commit **fixes a display bug** in the **Android BinderViz plugin** that prevented `android_binder_txns` slices from appearing when their `aidl_name` was `NULL`. Previously, a faulty SQL comparison `aidl_name = NULL` caused these entries to be omitted from the visualization. The change **modifies the SQL query** within `ui/src/plugins/com.android.AndroidBinderViz/index.ts` to replace `NULL` `aidl_name` values with the string `'unknown aidl'`. This ensures all relevant `android_binder_txns` data is now correctly displayed in the **BinderViz UI**, improving the completeness of the visualized trace data. | Feb 17 | 1 | waste |
This commit **fixes a bug** in the **InputEvents plugin** that caused crashes when processing negative `end_to_end_latency_dur` values. Previously, the SQL query in `ui/src/plugins/com.android.InputEvents/index.ts` only filtered for `end_to_end_latency_dur IS NOT NULL`, which allowed invalid negative durations to be included, leading to plugin failure. The **bug fix** modifies this condition to `WHERE end_to_end_latency_dur > 0`, ensuring that only valid, positive latency data is processed. This change prevents the **InputEvents plugin** from crashing and enhances the reliability of UI event analysis.
This commit introduces a **new feature** to the **Perfetto SQL standard library** for **Android trace processing**, specifically enhancing the `android_monitor_contention` and `android_monitor_contention_chain` tables. It adds a `lock_name` column, which is derived by identifying `monitor contention*` slices surrounded by `${name}_lock_acquire` and `${name}_lock_held` slices. This allows for direct identification of contention on specific "big locks" like `ams`, `proc`, `wms`, and `pms`. This improvement provides more granular insights into **Android performance bottlenecks**, making debugging more efficient by pinpointing the exact lock causing contention.
This commit introduces a **new capability** to the **Android ANR plugin** within the UI, significantly improving the analysis of Application Not Responding (ANR) events. It enhances the ANR selection logic to gracefully handle scenarios where the main thread track is unavailable, a common occurrence. Now, when an ANR is selected, the system will automatically scroll to and expand the relevant process group and highlight the ANR region, ensuring the user always sees the critical context. If the main thread track is present, it will be selected as before. This change also includes **refactoring** by extracting helper methods like `pinAnrTrack` and `scrollToAndSelect` for better code organization within `ui/src/plugins/com.android.AndroidAnr/index.ts`.
This commit **fixes a data visualization bug** within the **MemoryViz** UI plugin, specifically addressing the missing representation of `kswapd0` memory reclaim activity. Previously, the `kswapd0` process, though active, did not appear as slices on the debug track due to an incomplete SQL query. The **fix** involves **updating the SQL query** in `ui/src/plugins/com.android.MemoryViz/index.ts` to correctly identify `kswapd0` slices by joining the `sched` and `thread` tables and adding an interval merge step. This ensures that **MemoryViz** now accurately displays `kswapd0` activity, providing a more complete picture of **memory reclaim** on the debug track.
This commit performs a significant **maintenance refactoring** of the **Trace Processor's Android memory breakdown SQL script** (`memory_breakdown.sql`) within the standard library. It **exposes detailed table schemas** and **renames internal tables** to improve data clarity and structure, while also adjusting the `zygote_adjusted_value` computation and modifying how large memory spikes are handled, now marking them instead of removing them from analysis. Consequently, the **MemoryViz UI plugin** (`com.android.MemoryViz`) is updated to correctly consume the new table and column names, ensuring continued functionality and improved data consistency across the system.
This commit implements a **bug fix** within the **`stdlib`** module, specifically addressing an issue in the `_normalize_event_channel` function found in `src/trace_processor/perfetto_sql/stdlib/android/input.sql`. Previously, this function incorrectly parsed event channel names such as `[Gesture Monitor] swipe-up`, leading to truncated and inaccurate normalized outputs. The change introduces a special case to ensure that these specific channel names are now **correctly normalized**, preserving their full semantic meaning. This improves the accuracy of event channel processing for **Android input traces** by preventing data loss during normalization.
This commit introduces a **new feature** by **enabling the Android ANR (Application Not Responding) plugin by default** within the UI. It modifies the `ui/src/core/default_plugins.ts` configuration file to include `com.android.AndroidAnr` in the list of automatically activated plugins. This **enhancement** ensures that users will now have **ANR detection and analysis capabilities** readily available without manual configuration, significantly improving the out-of-the-box experience for Android performance investigations.
This commit implements a **UI adjustment** within the **Perfetto UI**, specifically targeting the display of standard groups. It **prevents the 'User Interaction' group from expanding by default**, altering its initial collapsed state. This change, located in `ui/src/plugins/dev.perfetto.StandardGroups/index.ts`, aims to improve the user experience by reducing visual clutter and allowing users to manually expand the group as needed.
This commit introduces a **new capability** to the **UI** by adding the `LockContention` plugin. This plugin provides a command, "Lock Contention: visualize held locks", which allows users to visualize when specific locks are held by threads. It leverages a debug slice track for this visualization, initially focusing on "big locks". This enhancement improves the debugging and analysis tools available in the **UI** for analyzing thread contention.
This commit introduces a **new capability** to the **Perfetto Trace Processor standard library** by adding a SQL function `_normalize_event_channel` to `src/trace_processor/perfetto_sql/stdlib/android/input.sql`. This function enhances **Android input event analysis** by normalizing the `event_channel` column in the `android_input_events` table. A new `normalized_event_channel` column is added, providing cleaner, ID-free channel names (e.g., 'PopupWindow' from 'ccf6448 PopupWindow:b20fb4d'). This **improves data readability and simplifies querying** for Android input events, making trace analysis more efficient.
This commit delivers a **bug fix** for the **`_oom_adjuster_intervals`** view within the **`stdlib/android/oom_adjuster.sql`** module. Previously, the inclusive `BETWEEN` clause in the `LEFT JOIN` condition could cause `counter.ts` values to be double-counted across consecutive OOM adjuster intervals, leading to overlapping data. The fix tightens the join condition to `> oom_adj_ts AND <= coalesce(oom_adj_next_ts, trace_end())`, ensuring each counter value is associated with only one preceding interval. This prevents **incorrect or double-counted OOM score data** in trace analysis, improving the accuracy of interval matching for OOM events.
This commit introduces a **new feature** to the **UI** by adding the 'Memory: reclaim events' command within the `MemoryViz` plugin. This command allows users to **visualize memory reclaim events**, specifically displaying merged kswapd and direct reclaim slices, with direct reclaim prioritized to indicate severe memory pressure. Additionally, it visualizes Low Memory Kill (LMK) events, pivoted on the `oom_bucket` of the killed application, leveraging necessary **Perfetto modules**. This enhancement provides critical insights into system memory pressure and LMK occurrences for performance analysis, improving the debugging capabilities of the tool.
This commit **improves anomaly detection** within the **`stdlib: memory_breakdown`** module by **refactoring** the filtering logic in `android/memory/memory_breakdown.sql`. The updated process now first denies memory tracks with large swings before filtering counter values by trace limits, which was previously done in reverse. This ensures that tracks with significant memory changes are correctly identified and excluded, preventing potential inaccuracies in memory analysis. The technical change involves moving trace limits timestamp filtering from the `mem_counter_values` CTE to the `mem_intervals` CTE, leading to **more robust and accurate memory analysis**.
This commit introduces an **enhancement** to the **MemoryViz** plugin, specifically improving the presentation of memory usage data. It modifies the `render` method within `ui/src/plugins/com.android.MemoryViz/index.ts` to **order memory buckets by their peak value in descending order**. This ensures that the most significant memory consumers are displayed prominently, making it easier for users to analyze and identify memory hotspots within the **UI**.
This commit introduces a **new ANR classification type**, `SYSTEM_SERVER_WATCHDOG_TIMEOUT`, within the **`android_anrs`** standard library module in **Trace Processor's Perfetto SQL stdlib**. This **new capability** specifically categorizes `system_server` ANRs that do not fit existing patterns, enhancing the granularity of **Android ANR analysis**. It also adds a new function, `_extract_anr_duration_from_subject`, to reliably parse the timeout duration from ANR subject strings. This refines how **Trace Processor** identifies and reports `system_server` watchdog ANRs, providing more precise insights into system stability, with corresponding updates to **ANR metric tests**.
This commit introduces a **new feature** to the **InputEvents plugin**, adding a command to visualize input event overlaps and concurrency. Users can now analyze input processing density over a selected time range, with intervals measured from dispatch to ACK. The visualization generates a parent track for total concurrency, along with detailed sub-tracks for individual processes and their respective input event channels, ordered by peak value. This enhancement provides critical insights into input event handling performance within the UI.
This commit introduces **new memory counter tracks** to the **MemoryViz plugin**, significantly enhancing its memory monitoring capabilities. Specifically, it adds `mem.heap`, `mem.rss.shmem`, `mem.dmabuf_rss`, `mem.locked`, and 'GPU Memory' tracks, providing a more granular view of system memory usage. This **feature enhancement** also refines the underlying track creation methods, such as `createTrack` and `onActivate`, to support optional tracks and sorting. The update allows users to gain deeper insights into various memory segments, improving performance analysis and debugging within the UI.
This commit introduces a **new capability** to the **`sdtlib` `memory_breakdown` module** by adding several **new memory counter tracks**, such as `mem.rss.shmem`, `mem.dmabuf_rss`, `mem.locked`, and `GPU Memory`. It also refines the `mem.heap` metric by adjusting it with the zygote's heap value for each process, providing more accurate memory profiling. Additionally, this change **filters counters to respect trace limits** and **fixes a bug** related to `span_left_join` with overlapping intervals. These updates, primarily within `src/trace_processor/perfetto_sql/stdlib/android/memory/memory_breakdown.sql`, provide users with **more comprehensive and reliable memory analysis** within `perfetto_sql` and include minor performance improvements.
This commit introduces a **new capability** to the **Perfetto SQL standard library** by adding the `upid` column to the `_android_startup_mipmap_1ms` table. This enhancement allows for the inclusion of the **unique process ID** of the starting application directly within the Android startup analysis data. The change specifically modifies `src/trace_processor/perfetto_sql/stdlib/android/startup/startup_mipmap.sql` to enrich the existing startup metrics. This provides users with more granular context, enabling more precise identification and analysis of individual processes involved in Android application startup events.
This commit **fixes a display bug** in the **Android BinderViz plugin** that prevented `android_binder_txns` slices from appearing when their `aidl_name` was `NULL`. Previously, a faulty SQL comparison `aidl_name = NULL` caused these entries to be omitted from the visualization. The change **modifies the SQL query** within `ui/src/plugins/com.android.AndroidBinderViz/index.ts` to replace `NULL` `aidl_name` values with the string `'unknown aidl'`. This ensures all relevant `android_binder_txns` data is now correctly displayed in the **BinderViz UI**, improving the completeness of the visualized trace data.
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.